面向安全属性的软件组件可信依赖关系度量模型
2021-04-22陈仪香
邹 萌, 张 敏, 陈仪香
华东师范大学软件工程学院, 教育部软硬件协同设计技术与应用工程研究中心, 上海 200062
0 引 言
刘克等[1]指出软件系统可信性是指软件系统在规定的时间与环境内可交付可信服务的能力.软件可信性包含可用性、可靠性、防危性、安全性、可维护性等软件属性等特征.软件可信度量是软件可信性一个重要研究领域,文献[2]对当前软件可信性度量评估进行了详细总结,同时重点地介绍面向软件产品以及开发过程的基于软件多维属性的可信度量评估方法和体系.本文从安全属性来进行探讨软件可信性度量模型.
安全本身是为了防止某些攻击而慢慢演化出来的性质.随后分成两大类概念,一类称为信息安全性,一类是失效安全性.从系统的角度来看,研究软件系统某组件受到攻击后对其它组件的可信性影响是关键的一步.
本文主要目的是探讨了软件系统组件之间的可信关联性,以及某组件受到攻击可信性度量指标的下降对其关联组件可信性度量指标的影响, 从而建立组件可信依赖关系的量化模型.
1 可信相关预备知识
1.1 可信属性
国家自然基金委员会于2007年开始实施了“可信软件基础研究”重大研究计划,经过十年的项目实施,我国在软件可信性研究取得了重大研究成果,为我国可信软件开发奠定了坚实基础[3].软件可信性与软件质量息息相关[4-6].可以说可信是软件质量的特殊表现形式,国内外众多团队在软件可信属性的定义上都沿用了软件质量属性,并在此基础上加以替换.最新的国际可信标准BS10754-2018《信息技术系统可信性》中对软件可信属性模型与ISO 9126质量标准相比有所改变,最新版国家标准GB/T 37970-2019《软件过程及制品可信度评估》中提到的可信属性沿用了GB/T 25000系统标准中的软件质量属性模型,将可信属性分为了功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性这8大属性.大部分对于可信的研究也都是基于GB/T 25000标准里提及的8大属性来进行度量.
文献[3]建立了基于软件可信属性的软件可信性量化评估方法和体系,其基本思路是在确定好可信属性模型后,确定属性、子属性、证据以及度量元来进行相关度量建模.
1.2 可信安全属性
陈火旺院士[7]提出了高可信性质的概念,认为软件安全性是软件系统的一个重要可信属性,包括了可靠安全性(又叫防危性)、保密安全性,其定义如表1所示.
表1 信息安全性属性释义Tab.1 Interpretation of information security attributes
在表2 GB/T25000.10-2016中对于系统以及软件产品质量模型中安全属性给出了相关子属性划分,具体包括保密性、完整性、抗抵赖性、可核查性、真实性、依从性等.另一类则是指在系统发生故障后,软件尽量避免灾难性后果发生的能力,也叫防危性.这里的防危性可以理解为失效安全性.也是表1中的可靠安全性.
表2 GB/T25000.10-2016安全性释义Tab.2 GB/T25000.10-2016 information security attributes
虽然安全性与防危性是两个不同的属性,所包含的意义和危害性的流向以及着重点都不一样.但是,两者的关系紧紧相连.防危性也同样需要安全性的支持.比如,航天飞行器主系统存在漏洞遭到外界非法入侵以致于被篡改数据,这样就有可能导致灾难的出现.所以本文防危性也可以作为可信安全属性的子属性之一.
2 可信度量模型
可信度量模型是为软件可信性建立度量方法和公式,目的是给软件可信性建立一个数值或一个级别,量化区分软件质量的差异[3,8-10].
2.1 可信评估模型
本文以经典的故障模型来探讨软件系统的可信安全性.首先引入五个概念:攻击(attack)、错误(error)、缺陷(defect)、故障(fault)、失效(failure).错误源自于开发人员在软件开发过程中所产生的失误,而这些失误则会导致软件产品缺陷.这些缺陷是指代码中存在的可导致一个或一个以上的错误编码等.从广义上讲,缺陷也可以描述为需求文档中的不正确描述.在软件运行时缺陷会出现不可接受的内部状态,这种状态即为故障.最终由于故障的累积就会导致软件失效.软件失效指的是软件脱离了原本的需求的动态运行结果.如死机、输出与期望不符的结果.而安全性就是从错误到故障的一道保护机制.如图1所示.
图1 软件失信机理Fig.1 Software Loss of trust mechanism
需要考虑产生故障后软件系统组件可信度的变化.如何计算这样一个遭受不应该有的“失信”带来的可信度呢?本文定义e为软件运行时态的错误或缺陷,定义PX为软件系统或组件的可信度.
定义1(抗伤害率).PrX为组件X在出现故障的前提下正常工作的概率:
PrX={组件X正常工作|组件X出现故障}
定义2(组件可信度).设PX为组件X发生故障之前的可信度,PtX为组件X在产生故障后的正常工作可信度,则定义:
PtX=PX×PrX
(1)
也就是说,当组件被“伤害”时的可信度为未被“伤害”前的可信度与“抗伤害率”的乘积.
2.3 信任关系模型
组件之间相互依赖是现在大型软件系统的一般开发方法,这种相互依赖会产生可信性相互影响:某组件可信度降低会导致与之依赖的组件可信度或多或少地受到影响.下面来介绍组件与组件之间的信任关系模型.
图2 组件信任关系图Fig.2 Components trust-diagram
如图2所示B组件依赖于A组件,或者说组件A对组件B的可信影响.其中m是可信影响因子,表示组件间的可信依赖程度.当组件A发生故障时,组件A的可信度发生了变化,同时这种可信度发生变化也会影响到组件B的可信性.
假设当A组件可信度下降至某一个值时,(不引起混淆的情况下,不妨就设A和A*为可信度下降之前和下降之后的可信度),此时A组件可信度减少值d为A-A*.d与m的乘积d×m表示A可信度减少后对B的可信度影响值,进而组件B可信度变化为B*=B-d×m.
基于以上分析,给出组件信任关系的可信度量模型:
B*=B-(A-A*)×m
(2)
注. 组件间可信依赖程度的值越大代表组件间的可信性影响也就越大,受影响的组件的可信度下降越快.
下面两个性质是容易验证的.
也就是说当A组件可信度下降的越快,B组件可信度也随之下降的越快.
也就是说当A组件可信度下降,若可信影响因子m越大,则B组件可信度下降越快,说明A组件对B组件的影响越大;若m越小,说明A组件对B的影响越小,B组件可信度下降越慢.
此外在软件系统中组件间可信依赖可能是多个路径产生的,如图3所示.
图3 并联组件信任关系图Fig.3 Parallel components trust diagram
组件A可以通过组件B1也可以通过组件B2对组件C产生可信影响.依据可信影响计算式(2),当组件A下降后的可信度为A*时, 可计算出组件C的两个可信度:
C-((A-A*)×m1)×m3
C-((A-A*)×m2)×m4
本文采取谨慎态度,取这两个可信度最低者为组件C的可信度.一般情况定义为:
(3)
3 实验结果及讨论
本文以文献[11]中“航天电源管理设备”为例,验证本文所建立的组件可信性依赖度量模型的有效性和适用性.某航天电源管理设备由两台并联工作的电源管理计算机和一个控制协调单元组成.每台电源管理计算机的配置也是一样的.其中有9大组件如图4所示.
该系统的功能是实现对飞行器电源供电的集中管理控制.根据飞行器的特点,只要有一台供电设备正常供电,那么整个系统就能正常工作.所以在安全性这一块,需要注意的故障为:设计缺陷、制造缺陷和单元故障,这些会影响可信安全性.
除了因为故障、漏洞、攻击的出现导致可信度未能达到最大值以外,还可能因为在软件系统设计之初就存在因人力物力等因素使之不到达到最佳可信度,如该系统的CPU模块中不需要CPU的主频达到最佳性能,所以评估出来的可信度不是满分.但这绝不意味着该系统有故障.根据2.1节给出的可信评估模型,对该系统做出可信评估如表3所示.
由于代码编写时通信组件M3的接口处的变量类型定义不一致,致使在运行期测得通信模块中因为某些变量值由于类型不一致导致编译器自动转换数据类型而产生变数.
实验1中本文假定通信组件M3的这个缺陷出现后造成故障仍能工作的概率为0.8,即抗伤害率PrM3=0.8.根据式(1)故整个通信M3组件的可信度为9.616×0.8=7.6928.现在知道了通信组件可信度发生了变化,依据这些软件系统组件间可信依赖关系(表4),可以计算出各个组件的新可信度.
而组件M2又影响着组件M1与M9.根据上述计算模型可得到整个系统因M3产生的错误导致系统每个组件的可信度发生或多或少的降低.可信度变化如表5所示.
表5 实验1通信组件遭受攻击后组件可信度变化情况Tab.5 Changes of component trustworthiness after communication module is attacked in experiment 1
从折线图5可以看出当M3出现错误导致故障时M2与M9的可信度变化最大,M4与M5组件因为没有任何来自其他组件的影响,故可信度保持不变.
图5 实验一可信值变化折线图Fig.5 Line chart of the change of trust value in experiment 1
实验2中当M1与M4有两个组件同时出现故障,且M1的PrM1值为0.7,M4的PrM4值为0.8时的可信度变化如图6所示.
表6 实验2通信组件遭受攻击后组件可信度变化情况Table 6 Changes of component credibility after communication module is attacked in experiment 2
注意当M4可信度下降时,由于M4对M1会产生一定影响,M1的可信度同样会下降.但是由于M1在故障后量化得到的可信度已经涵盖了M4对于M1所造成的影响,故不考虑此刻M4对于M1的信任牵连度.
此外在M2与M3组件的计算上,M4到M2路径的影响小于M1到M2路径的影响,M4到M3路径的影响大于M1到M3路径的影响.根据式(3),M2组件与M3组件都选取最低可信度.图6为可信度变化对比.
图6 实验二可信值变化折线图Fig.6 Line chart of the change of trust value in experiment 2
4 结 论
两组实验都表明模型在判断可信关系时精确度高,说明该模型可以很好地评估组件间信任关系导致的可信度变化.本文设计度量模型除了上述作用外,还可以通过对信任关系的度量选择最优改进的组件,帮助软件系统开发者最大程度地优化提高软件系统的可信性.
本文重点在于对安全属性的可信依赖关系进行探讨,设计了软件系统组件可信性发生改变后对其它组件可信性影响度量模型,给出当一组件可信性发生变化,整个软件系统各组件可信性度量发生变化的一种量化方法.