军事装备软件的安全性测试研究

2018-02-25 02:39顾滨兵李海浩王勇利
电子技术与软件工程 2018年7期

顾滨兵 李海浩 王勇利

摘要 装备软件的安全性是装备安全的重要内容。军事装备软件运行在特殊的使用环境下,从其遇到的安全性问题入手,阐明了军事装备的软件安全性和安全性测试,并分析军事装备软件的相应安全需求。并着重在软件测试阶段,针对性提出测试需求分析、探索建立测试思路和研究具体的测试方法。

【关键词】软件安全性 安全性测试 需求分析软件等级

随着信息技术的不断发展,软件安全性的问题也日益突出。装备软件的安全性是装备安全性的重要内容,安全性也是装备软件质量的重要特性。由于应用环境的特殊性,军事装备软件经常处于应急状态,对软件出现不可避免的随意性、混乱性操作,这些特殊的运行特点,决定了装备软件中各种信息关系更为复杂,在安全性上要求更高、更为脆弱,如果程序处理不当,将极有可能导致安全问题的发生,因此装备软件的安全性测试显得尤为重要。

因此必须研究软件测试针对性的手段方法,解决目前软件测试中安全性测试及评判理论缺乏等问题,形成系统成熟的对装备软件安全性的测试及评估方法,促进装备软件的安全性能力设计与实现水平的提高,来保证其能够被“放心”地使用。

1 装备软件的安全性

(1) MicroSoft对软件安全性的定义是:对应用程序及其数据提供安全的能力称为安全性。

(2) GJB/Z 102A-2012中定义的软件安全性采用了Nancy教授于1986年提出的:软件运行不引起系统事故的能力。GJB5236-2004《军用软件质量度量》对其概念进行了细化:安全性是指软件产品在指定使用周境下,达到对人类、业务、软件、财产或环境造成损害的可接受的风险级别的能力。

(3)也有人从软件实体可信属性的角度将安全性定义为:指软件系统对数据和信息提供保密性、完整性、可用性和真实性保障的能力,具体包括机密性,即软件系统中的信息不被非法用户所获取;完整性,即软件系统中的信息不被非法篡改。

软件代码本身不具备直接造成灾难性事故或者重大损失的能力,但可通过系统的传导产生较为严重的后果。定义1和定义3更偏重于软件本身的能力和后果,而定义2虽然简略,但更全面地表达出软件的安全性所包含两层含义:

(1)软件自身运行避免出现失效,不引起系统事故的能力;

(2)软件为了避免由于缺陷所导致不可接受风险的能力。

以直升机快速回收软件举2个例子:

(1)为了具有对重要数据(如回收参数)进行保护和备份的能力,避免非法访问所做的密码、权限等的设置,都是保证安全性的措施,但是对数据非法访问不一定会造成人员伤害、直升机损坏,即使有这样的风险,上面的安全性措施也不对这样的风险进行处理;

(2)软件运行不当,可能导致直升机驾驶员、相关舰面人员伤亡,直升机、相关保障设施损坏,为了避免这样的风险所作的防护、保护、应急处理等是保证安全性的另一类措施。这样的情况有可能是数据被非法访问所导致的,也有可能是正常操作导致的。所以这两类安全性的措施和具有的能力是不同的。

从以上的例子可以看出,相比于软件应该做什么,软件安全性更加关注软件不应该做什么。程序开发者为了保证软件的安全性,必须在正常功能外,加入额外的代码来实现确保安全性的相关措施。

2 装备软件的安全性测试

实际上,在当前软件工程思想中,软件分析、设计和实现的过程,同时伴随着软件测试。MicroSoft对软件安全性测试的定义是:有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。装备软件相关测试标准中的安全性测试是检验软件中已存在的安全性、安全保密性措施是否有效的测试,是保证系统安全性的重要手段。

安全性测试并不最终证明应用程序是安全的,而是只用于验证所设立对策的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。还以上面的直升机快速回收软件为例,如果该软件从需求分析、设计到实现过程中没有对重要数据进行保护和备份,而导致数据被非法访问,这是需求不充分所导致的,但如果有这样需求,安全性措施未设计实现或失效,这是安全性测试要发现的问题。

3 装备软件安全性测试的一般思路

对于军事装备来说,安全性测试主要面向的是安全性措施,而安全性措施來源于安全性需求。以下是从安全性需求到安全性测试需求的过程:

首先根据装备的安全性、关键性要求确定装备软件等级,一般分为A、B、C、D四个等级。项目需求人员结合项目应用背景提出安全性要求,然后由软件需求人员根据安全性要求,转化为软件安全性需求,这些提出的安全性要求及安全性需求一定要符合之前确定的软件等级,如将软件等级确定为A,就一定要提出防止人员死亡或系统报废的安全性要求和需求。然后根据软件应用领域所积累的安全防护经验,完善软件安全性需求,由设计人员根据软件安全性需求,结合具体技术实现手段转化为软件安全性设计,最后由编码人员完成最终的代码编写。

在软件测试阶段,测试人员对照系统及软件技术文档检查软件需求、软件设计中的安全性描述,并据此进行安全性测试。

对照软件安全性测试的定义,装备软件安全性测试的指导思想为:

(1)明确软件需要保护什么东西,如操作的人、使用的电子设备、飞行器等;

(2)明确软件要禁止哪种危险状态发生,如程序失效、错误或意料外的输出、非法侵入等。

明确了安全性测试的指导思想后,可以进一步明确军事装备软件安全性测试的一般思路,即软件为保证安全性所作的种种措施,安全性测试就是测试这些措施是否正确有效。

针对指导思想(1)的安全性措施:

1.防止对人的可能瞬间伤害,软件采取的措施,如避免引发装备爆炸、飞机坠落;

2.防止对人的长期损害,软件采取的措施,如避免电磁长期照射、屏幕闪烁引发职业病;

3.防止对关联系统的损坏,软件采取的措施,如直升机回收设施软件应尽量考虑避免可能造成对直升机的损坏;

4.对自身系统的破坏,软件采取的措施,如为防止电流过大而烧毁自身电路所做的软件设计;

5.用户登录及相关权限的处理来保护系统,防止系统被蓄意或无意的破坏;

6.防止被非法侵入后窃取、篡改数据等所做的软件数据安全处理;

7.确保重要数据的完整性、有效性所做的备份、恢复、管理等;

8.确保重要数据的机密不被泄漏而作的保密机制;

针对指导思想(2)的安全性措施:

1.禁止用户非正常登录或非法得到及使用权限;

2.防止程序非正常失效所作的监视、检测,以及失效后的处理(重启、复位)等;

3.防止被非授权攻击、漏洞攻击、木马植入等手段所做的软件防范性处理;

4.为避免程序异常输出而采取的软件措施:

5.为确保不因程序意外故障而导致任务失败的,软件恢复、应急功能、降功能使用等临时措施和应急手段;

6.为应付各种非法侵入、异常操作、快速操作而进行的软件容忍、恢复处理;

7.为避免软件或系统在异常条件、复杂环境下导致故障或非法输出等而采取的相关措施;

8.对硬件受损后软件的自我调整、恢复处理。

4 装备软件安全性测试的方法

军事装备的软件测试一般分为四个阶段,本文从这四个阶段描述装备软件安全性测试方法及手段。

4.1 测试需求分析与策划阶段

根据软件等级来考虑安全性需求,进行分析策划。比如飞机起降引导的软件就必须考虑由于软件失效所导致飞机发生事故的风险,对这种风险回溯到软件的需求分析、设计和实现阶段,就是安全性需求。如果确实在所有的文档中都没有这方面的描述,那么有理由去质疑软件需求分析、设计的合理性,应交由文档审查强度测试或功能测试来解决,并不是安全性测试的范畴,安全性测试一定是要针对采取了安全性措施的。

4.2 测试设计阶段

软件安全性测试主要集中在以下三个方面:

(1)程序运行安全;

(2)网络及通信环境安全;

(3)数据安全。

在这一阶段要确定整个软件中的安全性关键部件,重点加以测试,从以下三方面的因素综合加以考虑:

(1)根据软件的实际使用背景確定软件的核心部件尤其是那些必须确保安全可靠的核心部件;

(2)根据对软件设计、开发的掌握,分析软件可能存在隐患和漏洞,梳理出防范隐患和漏洞处理的相关实现部分;

(3)评估安全风险,对安全风险高的处理代码进行识别。

在这一阶段,如果条件允许,可以先结合自身的安全性测试技术和工具对关键代码进行静态分析、代码审查等先期工作,及早发现软件安全性方面的问题。

在安全性测试中不要照搬软件需求文档中的安全性描述,文档中不但存在需求不充分的问题,对安全性需求也常常描述不足,在这一阶段最重要的是挖掘隐含的安全性需求,并对其开展测试设计。

比如:飞机降落时3个起落架都放下刹车(不满足则不刹车,复飞)。在文档描述中出现了未考虑的需求(如迫降)。

如描述:三个都放下、刹车;没有都放下,不刹车。

而忽略了不正常的需求:前起落架没放下;后起落架没放下。

再举两个例子:

(1)对“O”、穿越“0”以及从两个方向趋近于“O”的输入值的测试。

首先要分析这个“0”是否是可能导致安全性隐患的关键点,是否进行了特殊处理。如果某电源控制器软件能处理-10V到+10V电压数据,该软件处理的-10- 10的连续数据,ov不是一个关键点,也没有特殊的安全性处理措施,就没有必要进行安全性测试。对OV作这样的测试是没有意义的。

而又如对于飞机飞行管理中凌晨零点零分由于涉及跨天操作,是一个关键点,就需要对零点零分,穿越零点零分(从第一天到第二天),分别从第一天的23: 59和第二天的0:01分分别趋向于零点零分进行测试。

(2)对双工切换、多机替换的正确性和连续性的测试。

比如双网卡的切换,最起码不能只关注软件是否正常运行,最起码要在大数据量传输的情况下,还要完成分析切换是否丢失数据、丢失多少数据,丢失的数据对功能有无影响等多项测试工作。对于在多机系统出现故障或数据备份切换时,要记录并比较发生故障或切换前后软件的功能、数据是否完整、一致,而不能只看软件能够正常运行。

4.3 测试执行阶段

在测试执行阶段,装备软件的安全性测试要采用实际的测试技术、测试工具和测试方法对软件的安全性保密性措施是否有效进行测试。除了通用的黑盒测试方法和白盒测试方法,安全性测试方法还主要采用基于猜错法的测试、基于故障树的测试、基于接口语法的软件安全性测试、基于安全漏洞的检测技术、形式化安全性测试等。在此阶段,可以在前期分析设计的基础上根据被测软件的实际情况和安全性需求综合采用各种方法手段。

4.4 测试总结阶段

按照指标体系来确定军事装备软件安全性的评价需求、设计军事装备软件安全性的评价规格说明模板,明确评价范围,制定评价计划模板,提出装备软件安全测试充分性评价的层次分析模型,结合装备软件的特性,定义了装备软件安全测试充分性评价函数。通过该模型对基于装备软件安全性测试效果进行评估,并对装备软件的安全性进行评价。

5 结束语

安全性是军事装备软件质量的重要特性。经过多年的软件工程实践,软件测试己成为验证软件功能性和安全性的重要手段。通过军事装备软件的安全性测试可有效提升软件的安全性。从安全性需求的提出、实现到安全性测试的分析设计,军事装备软件的安全性测试是一个系统性、全寿命周期的质量活动,只有考虑软件研制全过程,并将安全性分析和实际测试手段结合起来,才能从根本上提高军事装备软件的安全性。

参考文献

[1]总装备部电子信息基础部标准化研究中心,军用软件工程系列标准实施指南[M].北京:航空工业出版社,2006 (129).

[2] Haralambos Mouratidis编著,米磊,赵铠译,软件安全性理论与实践[M].北京:电子工业出版社,2015 (11).

[3]朱少民著.全程软件测试[M].北京:电子工业出版社,2014 (25).

[4]何鑫,郑军,刘畅.软件安全性测试研究综述[J],计算机测量与控制,2011,19 (03): 493-496

[5] GJB/Z 102A-2012军用软件安全性设计指南,

[6] GJB/Z 141-2004军用软件测试指南.