广州海格通信集团股份有限公司510620
摘要:嵌入式软件系统在航空航天系统、工业信息系统、核电系统以及医疗卫生系统等安全关键领域的广泛应用,使得对该类系统进行安全性分析成为这些系统开发过程中的重要部分。随着当前嵌入式软件系统功能和复杂度的增加,系统的规模也随之增加,当前的嵌入式软件系统多采用构件化分布式架构。因此,针对构件化嵌入式软件系统,需设计符合该类系统特征的安全性分析方法对系统结构、行为等方面进行分析。
关键词:嵌入式软件;安全性分析;方法;研究
引言:
随着嵌入式软件在航空电子、汽车工业、通信、核工业等安全关键领域的广泛应用,软件的失效可能造成财产的损失、环境的破坏甚至人员的伤亡。近年来,由于软件问题引发的事故屡见不鲜,例如:2007年2月9日,前往日本的F-22型“猛禽”隐形战斗机在经过国际日期变更线时,由于战机发生软件问题,造成导航系统失灵,半途折回;2010年,由于软件问题引起的“召回门”事件,直接造成了日本丰田公司二十亿美元的经济损失。可见,软件系统对嵌入式系统安全性的影响逐渐占据了统治地位,软件控制系统的故障和安全性问题已成为发生事故的重要原因。保障嵌入式软件的安全性成为当前软件工程研究领域一个非常重要的课题。
1.软件安全性概述
软件安全性是指软件运行不引起系统危害的能力。软件作为系统的重要组成要素不会直接危及生命、财产和环境的安全,但借助软件实现的人机交互却可能因软件失效造成人员误操作从而形成危害。如对于无人机交互的嵌入式安全关键系统而言,可能因为软件错误地控制系统而造成灾难性的后果。
软件安全性分析是保障软件安全性的一种广泛接受的方法,软件安全性分析是一种系统性的分析,用于确定产品在每一个使用模式中执行其功能的方式,识别潜在的危险,预计这些危险对人员及设备可能造成的损害,并确定消除危险的方法。安全性分析旨在识别失效模式、原因以及对系统安全性的影响,主要目标不是发现所有的设计缺陷或者是证明实现是正确的,而是用于发现所有理论上可能会失效的安全关键的弱点并且说明这些危害在当前的系统设计中是否可能会出现。
2.构件化嵌入式软件安全性分析面临的主要问题
为了对构件化嵌入式软件系统进行安全性分析,必须要考虑软件的构件化特征。当前大部分软件工程模型都提供了构件概念并且提供了合适的方式用于表示系统架构。对于构件化嵌入式软件安全性分析而言,同样也需要引入构件化的概念,一方面是理解复杂分析模型,另一方面也可以分解不同分析者之间的劳动,重用之前项目中的部分安全性分析结果。
复杂性、动态性、依赖性是构件化系统的典型特征,这些特征为构件化嵌入式系统的安全性分析提出了更大的挑战。这些特征对安全性分析的影响表现在以下几个方面。
2.1规模增大,功能增多
当前的嵌入式系统的功能日益增强,规模日益增大,构件化系统中所使用的子系统的数量不断增多。而已有的安全性分析方法未提供分解的概念,难以将整个系统中的各个部分进行合适的分解,再通过综合评估各个部分的安全性,来评估整个系统的安全性。
2.2结构复杂,存在依赖
构件化系统的系统结构异常复杂,构件之间相互作用、相互依赖。而传统的安全性分析中,认为各个构件之间是相互独立、互不影响,通过对各个构件失效的布尔组合逻辑就可以计算系统的失效。而在构件化系统中,各个构件之间相互依赖,一个构件的失效可能使得其他构件无法正常工作。依赖性的增强,使得之前的安全性分析研究中关于各个构件相互独立的假设不再有效,从而增加了构件化嵌入式软件安全性分析的难度。
2.3失效模式不同
对于传统的静态系统和动态系统而言,失效模式仅仅包括基本构件的静态逻辑组合。而在构件化系统中,系统失效还可能依赖于其他构件是否失效以及失效发生的时序,系统各个构件的失效必须满足一定的顺序,才可能导致系统的失效。因此,难以直接采用传统的安全性分析方法分析构件化嵌入式软件系统的失效模式。
3.软件安全性分析工具的设计
在设计T-CESSA原型工具之前,首先对现有的软件安全性分析工具进行分析。在此基础上,对T-CESSA的系统结构以及功能进行介绍。
3.1相关安全性分析工具的分析
①Galileo
Galileo,是一个由Virginia大学开发用于对故障容忍的计算系统进行安全性分析的软件原型工具。采用动态故障树建模系统的安全性模型,在传统组合故障树的基础上增加了建模序列失效模式的特定结构。通过对动态故障树进行遍历自动模块化故障树,如果子树中存在动态逻辑门则该子树标记为动态的,不包含动态门则标记为静态的。其中静态门采用基于BDD(BinaryDecisionDiagram)的方法进行计算,而动态门采用MarkovChains方法进行计算。此外,Galileo的定性分析基于ZBDD(Zero-suppressedBDD)进行。
②Rolex
Rolex是美国RELEX公司开发的一个大型通用可靠性、安全性、维修性分析及可靠性工作管理软件,是集成的可靠性工程平台,目前已在航空航天、电子通讯、国防军工等领域得到广泛应用。其中的软件包包括可靠性预测引擎、可靠性预测分析、可靠性框图、FMEA,FaultTree等功能。用于对系统失效原因进行评估,采用逻辑构造故障树的结构,识别系统潜在的失效。
③FaultTree+
FaultTree+是当前工业界应用最广泛的工具,由Isograph工具开发,该软件支持可靠性、安全性以及可维护性分析。FaultTree+包括故障树分析、事件树分析、马尔可夫分析3个模块,分别用于构造和分析故障树图、分析事件发生可能的结果、构造具有相互依赖的构件的马尔可夫模型。
3.2软件安全性分析工具特性
①支持构件化嵌入式软件的结构方面以及动态失效行为的安全性分析。
随着嵌入式软件功能和复杂度的增加,当前的嵌入式软件开发多采用构件化软件架构。所以采用基于构件的软件安全性分析方法对软件系统进行安全性分析非常必要。
②结合软件设计模型和软件安全性分析进行软件的安全性分析。
在软件开发的过程中,通常软件的系统设计和软件的安全性分析过程是两个独立的过程。导致软件安全性分析过程中难以复用软件的设计模型,且安全工程师在分析过程中所得到的分析结果也难以直接反映到软件的设计模型中,不方便软件的设计人员对相应的设计进行修改。因此,本章所设计的工具考虑结合软件的设计模型建立软件的安全性设计模型,使得安全性分析的结果可以直观地反映到相应的软件设计模型中。
此外,软件安全性分析支撑工具T-CESSA的基本设计原则如下:
①易用性:用户界面布局合理,尽可能让用户可以使用方便,能够快速掌握工具的使用,所有窗口及菜单意义明确。②可扩展性:T-CESSA工具当前完成了论文所涉及的一些安全性分析工作,所以必须为已有的功能扩展预留接口,使得可以很方便地进行与系统设计其他方面相关的软件安全性分析的接口。
③易移植性:T-CESSA基于eclipse平台开发,作为eclipse的插件形式发布,尽可能地支持多个平台的运行,便于不同平台用户的使用。
④健壮性:T-CESSA系统必须处理用户所有可能的输入,最大限度避免软件异常的出现,T-CESSA系统应具有对任何异常做有效处理的能力,并通过日志形式将出现的异常记录下来,方便开发人员及时确定问题故障。
4.总结语
保障嵌入式软件的安全性是一项非常复杂的任务。笔者还将对安全性分析工具做进一步修改与完善并且进行大规模的系统实例研究,进一步完善和提高工具的性能和实用性。下一步将考虑在此工作的基础上继续对工具进行开发,得到一个界面友好、易使用的安全性分析工具。在此基础上,构造更多的工业界的实例,检验工具的实用性。
参考文献:
[1]胡军.构件化嵌入式软件设计的分析与验证,[博士学位论文].南京:南京大学,2005.
[2]ElmqvistJ,Nadjm-TehraniS.Safety-orienteddesignofcomponentassembliesusingsafety
interfaces.ElectronicNotesinTheoreticalComputerScience,2007,182(29):5772.