田曾昊
(航空工业综合技术研究所,北京 100028)
基于需求建模的软件安全性分析方法研究
田曾昊
(航空工业综合技术研究所,北京 100028)
为了提高软件安全性及可靠性,将需求建模引入针对软件需求的安全性分析过程,利用系统危险源、典型运行场景、外部输入输出接口等建模方法从系统需求分配、动态交互、接口故障处理等开展多角度分析,从而提高软件质量,并为后续软件需求分析以及安全性分析工作中提供可复用数据资产。
需求建模;软件安全性;软件失效模式
软件安全性分析属于软件确认(Validation)技术,与软件测试所属的验证(Verification)技术共同构成软件确认与验证(V&V)工作闭环。分析与识别软件需求中存在的安全性缺陷,制定相应的控制措施,并落实为软件安全性需求,从而有效的消除和控制软件安全性失效导致的系统危险。
在软件开发过程中,由于技术难度高,软件需求复杂,开发周期短等困难,软件中存在安全性缺陷的几率是很大的。现代化的软件本身变得越来越复杂,开发一个软件产品或一个大型系统所需要依靠的技术也越来越多样化,如果不能在软件生命周期早期发现软件缺陷,将可能造成严重的后果。特别是对于航空航天、金融、交通等关乎人身财产安全的领域,在软件生命周期早期发现并定位软件缺陷对于减少不必要的人力财力成本和改善软件质量至关重要。在软件需求分析阶段进行软件安全性分析并结合历史分析数据可以有效的减少软件开发成本,提高软件研制质量。
需求建模是一种软件安全性分析方法,通过模型驱动从多角度分析软件安全性缺陷,形成可复用的软件失效数据库,有效的防止或控制软件缺陷的发生,为软件后续的研制提供质量保证。
● 系统需求建模:依据系统需求或设计文档,分析系统需求,了解软件所实现的系统功能、与外部设备或软件的交联关系、外部危险源信息等,从而建立外部输入输出接口交联环境模型、外部危险源列表,有效开展系统危险分析;
● 系统危险分析:在系统需求模型基础上,结合系统背景知识、系统所处环境信息、外部交联信息等,以初步危险分析(PHA),功能危险分析(FHA)[1~2]等技术为分析手段,分析潜在的系统危险、原因及影响;
● 系统危险控制:针对识别的系统危险及发生原因,从软件层面上给出控制措施,同时将控制措施落实为系统向软件分配的安全性需求。
● 软件需求建模: 依据软件研制任务书、软件需求规格说明等文档,明确软件功能层次关系、功能动态执行过程以及功能逻辑关系,从而建立功能执行过程模型、功能逻辑模型等,以辅助规范且有效的开展软件失效模式分析;
● 软件失效模式识别与影响分析:依据软件需求模型,以软件失效模式及影响分析(SFMEA)等技术手段,分析软件需求中存在的各种失效模式,并明确失效模式对系统的影响;
● 失效模式原因及控制措施:针对软件需求中存在的各种失效模式,分析其发生原因,即软件需求中存在的各类缺陷,并依据失效原因提出相应的控制措施,同时将控制措施落实为软件安全性需求。
系统危险分析核心思想是从系统层面开展分析,即依据软件所在系统的外部交联设备、外部接口、危险源等信息,分析可能存在的系统危险及其原因和影响。结合软件特点,可以从表1所示几个方面考虑并建立需要的系统危险分析模型。系统危险分析模型见表1。
表1 系统危险分析模型
软件失效模式分析核心思想是从软件层面开展分析,即依据软件需求中的功能、性能等需求项,分析可能存在的软件失效模式及其原因和影响。结合软件特点,可以从表2所示几个方面考虑并建立需要的软件失效模式分析模型。软件失效模式分析模型见表2。
表2 软件失效模式分析模型
系统危险分析模型及软件失效模式分析模型在分析内容上彼此独立,但分析过程间是相互影响、相互映射的关系。系统危险分析将所识别的系统危险映射至软件需求层面,借助于软件失效分析,确定系统危险的可能软件原因和失效模式;而软件失效分析则将所识别的失效模式映射至系统层面,借助于系统危险分析,确定软件失效模式所可能导致的系统危险。因此,二者共同构成了“系统—软件,软件—系统”的双向闭环分析策略,具体关系如图1所示。
系统危险分析模型与软件失效模式分析模型不仅限于上述几种类型,软件安全性分析人员可根据软件特点增加或删减分析模型。每种模型对于各类的软件,分析效果也不相同,分析人员需熟练运用分析模型才能取得更好的分析效果。
下面将对软件安全性分析过程中几种通用的系统危险建模分析及软件失效模式建模分析方法进行简要说明。
3.1.1 输入模型或信息
建立“外部输入输出接口”模型,应明确如下信息:
● 接口类型(离散量、模拟量、总线数据等);
● 接口值域(正常值域、异常值域);
● 外部设备(输入源、输出目的);
● 通讯方式(周期型、任务型);
● 相关功能;
● 接口关系(组合、约束等);
● 初始值、安全值;
● 已有接口故障诊断和处理策略。
建立“功能层次关系”模型,应明确如下信息:
● 软件功能点;
● 相关接口;
● 功能点从属关系。
3.1.2 分析内容与方法
外部输入输出接口分析内容和方法见表3。
3.2.1 输入模型或信息
明确系统危险源:参考通用危险,结合软件特点,确定系统危险源。通用系统危险源见表4。
表4 通用系统危险源
3.2.2 分析内容与方法
系统危险源分析内容和方法见表5。
表5 系统危险源分析内容和方法
3.3.1 输入模型或信息
明确系统所在设备的可能运行阶段,飞机如起飞、巡航、复飞、下降、滑行等。明确在设备运行阶段下,软件的各种可能运行场景。
3.3.2 分析内容与方法
典型运行场景分析内容和方法见表6。
表6 典型运行场景分析内容和方法
3.4.1 输入模型或信息
建立“工作模式迁移模型”,应包含如下信息:
● 明确软件在运行过程中所可能进入的工作模态,包括初始化、自检、维护、控制管理、数据处理、下电等;
● 明确各工作模态的进入条件、退出条件、相关约束等信息;
● 明确可以相互迁移的工作模态之间的迁移关系,包括时序迁移、条件迁移、约束迁移等信息;
● 明确不能相互迁移的工作模态;
● 明确工作模态之间的逻辑关系,包括互斥关系、组合关系等。
3.4.2 分析内容与方法
工作模式迁移分析内容和方法见表7。
3.5.1 输入模型或信息
建立“功能控制过程模型”,应包含如下信息:
● 明确工作模态下所有功能点的执行操作信息;
● 明确功能控制过程中的条件迁移、时序迁移、约束迁移、顺序迁移等控制逻辑;
● 明确各执行操作之间的逻辑关系,包括组合关系、约束关系等;
● 明确功能控制过程中的数据流向信息。
3.5.2 分析内容与方法
功能控制过程分析内容和方法见表8。
3.6.1 输入模型或信息
建立“功能控制过程”模型。
3.6.2 分析内容与方法
功能交互关系分析内容和方法见表9。
对分析记录数据进行整理与合并,形成软件安全性问题单,并在此基础上形成软件通用系统危险数据库和通用失效模式数据库,见表10。
其中:
● 问题编号:软件安全性问题的唯一标识;
● 分析对象:功能点或需求点;
● 问题原因:描述软件安全性问题的触发条件与需求层面原因;
● 安全性问题:描述在满足“问题原因”的前提下,软件运行时所可能产生的失效模式;
● 问题影响:描述软件安全性问题产生后,在系统层面所可能导致的后果;
● 系统危险:描述软件安全性问题所可能导致的系统进入的危险状态;
表8 功能控制过程分析内容和方法
表9 功能交互关系分析内容和方法
表10 软件安全性问题单格式
● 控制措施:描述为避免由于软件安全性问题而导致系统进入危险状态,所提出的安全性要求。
● 重要度[4]:软件安全性问题重要度等级见表11;
表11 软件安全性问题重要度等级
表12 软件安全性问题类型
表13 软件安全性问题解决方案
本文基于需求建模研究了一套软件安全性分析方法。需求建模可将软件功能、状态迁移、输入输出等要素进行可视化转换,使软件安全性分析更易于开展。同时,使用需求建模的方法可以保证软件安全性分析的充分性,分析效果得到提升。
然而,为了发挥系统危险数据和失效模式数据的作用,还需要在如下几个方面进行考虑:
建立系统危险数据及失效模式数据管理系统。在本文中仅给出了软件安全性分析过程中产生的系统危险数据和失效模式数据格式。在数据管理系统中,还需对系统危险及失效模式数据进行提取[5]、存储,以为后续的使用打下基础。
对系统危险数据及失效模式数据进行挖掘并应用。在进行相关软件模块开发的需求阶段,应充分参考系统危险数据及失效模式数据,确保类似问题不再出现或得到有效控制,减少软件缺陷,提高软件质量。
[1] 刘建军,孙有朝. 功能危险分析在大型复杂系统中的应用[J]. 民用飞机设计与研究,2004(1):35~40.
[2] 孙春林,刘东宇. 功能危险分析在飞机刹车系统中的应用研究[J]. 机械设计与制造,2011(2):89~91.
[3] 周育才. 功能树与FMEA的高效运用[J]. 质量与可靠性,2005(1):16~18.
[4] GJB/Z 102A-2012. 军用软件安全性设计指南[S].
[5] 王丙磊. 系统级软件FMEA方法及辅助分析工具的研究[D]. 国防科学技术大学,2009.
T-65 [文献标识码] C [文章编号] 1003-6660(2017)04-0038-05
10.13237/j.cnki.asq.2017.04.010
[收修订稿日期] 2017-05-03
(编辑:雨晴)