软件安全性可靠性专题评述
2018-02-14□孙伟
□ 孙 伟
随着计算机应用的不断发展,软件已成为各行各业智能化、网络化的关键,由于软件的漏洞和缺陷造成系统运行失常的后果也愈加严重,特别是在航空航天、金融保险、交通通信、工业控制等关系国计民生的重要领域,软件一旦失效将造成重大损失。同时,随着软件规模越来越大、结构日趋复杂,软件在构建和编程过程中会造成一些缺陷,缺陷可能导致失效,失效引发事故,导致软件的开发、集成和维护工作越来越复杂。随着网络上每年爆出大量的安全事件,如软件漏洞、蠕虫病毒、木马、黑客攻击、用户信息泄露等,对软件可靠性、安全性提出了更高的要求,人们开始越来越重视软件的安全性。在《GB/T 16260.1—2006 软件工程 产品质量 第1部分:质量模型》中,软件的安全保密性是属于软件六性(功能性、可靠性、易用性、效率、维护性、可移植性)中功能性的子特性,而在《GB/T 25000.10—2016 系统与软件工程 系统与软件质量要求和评价(SQuaRE) 第10部分:系统与软件质量模型》中,软件的产品质量特性被划分成8个特性:功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性和可移植性;信息安全性已被单独提出成为软件质量特性之一,软件的安全性、可靠性日益成为业内广泛关注的焦点,软件可靠性和安全性的分析、设计、验证等关键基础技术更加凸显其重要性。
软件可靠性 (software reliability )是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,软件产品所必须具备的功能。软件可靠性不但与软件存在的缺陷和(或)差错有关,而且与系统输入和系统使用有关。
软件安全性(software safety)指的是确保在系统范围内软件所完成的功能不会引起不可接受的风险,即软件能够使其所控制的系统始终处于不危及人的生命、财产和自然环境的安全状态性质。因此,软件本身可能不会对生命、财产和环境等造成安全威胁,但是,一旦软件嵌入到一些安全关键系统中,软件失效可能导致控制系统出现问题,从而造成灾难性后果。同时,与目前的硬件安全性快速提升相比,安全关键软件的安全性已经成为制约系统安全性的关键因素,因此,安全关键软件的质量更显得尤为重要。另外,软件安全性也指软件信息安全(software security),此时指软件在受到恶意攻击的情形下依然能够继续正确运行及确保软件被在授权范围内合法使用的思想。
本专题针对软件可靠性、安全性一些研究问题,力图紧扣学术研究热点和技术应用难点,探索软件的可靠、安全问题的解决之道。专题涉及代码安全性审查、智能可穿戴产品、智能网联汽车、区块链等若干方面,其中:
1)《代码安全性审查方法研究》从常用的软件测试方法入手,对代码审查中质量审查和安全性审查的不同点进行了比较,并从代码安全性人工走查和代码安全性工具静态分析两个方面对代码安全性审查的方法进行了研究。将云计算、大数据、人工智能等技术应用到对软件源代码的安全分析方面,代码安全性审查的效率将大大提高,时间和成本也会大幅度降低,成本的降低将带来技术的普及,这将为更多、更广范围的软件带来安全性的保障。
2)《等保2.0时代云计算安全要求及测评实践》对云计算安全要求中的技术安全要求进行解析,从等级保护的角度对云计算系统中的安全保护对象、安全责任主体、安全保护要求进行分析,并以某地区电子政务云平台为例,分享云等保测评经验,提出在对云计算系统开展等级保护测评工作中存在的问题及下一阶段的建议。
3)《基于Sigmoid函数的软件漏洞风险评价算法》着眼于国家网络安全与基础软硬件自主可控战略的大背景和现有软件漏洞风险评价的不足之处,提出基于Sigmoid函数的软件漏洞风险评价算法,对软件的安全漏洞风险情况进行评价,帮助开发人员快速定位安全性最差的代码模块,修补或选取更加安全、优秀的代码,提高软件整体安全水平。
4)《区块链技术的安全问题研究综述》对典型区块链技术架构进行了详细阐述,并从区块数据结构、哈希算法、数字签名、智能合约等方面对区块链技术的安全性进行了详细分析,最后总结了区块链技术仍面临的安全性问题。
5)《软件可靠性工程综合应用建模技术研究》通过对软件可靠性工程活动与开发过程,以及可靠性工程活动之间的数据交互关系的分析,提出了数据驱动的软件可靠性工程过程模型,该模型以工作流的形式实现了软件可靠性工程活动之间的信息交互,实现了软件可靠性工程对软件开发的全过程可靠性技术支持,有利于软件可靠性工程综合集成环境的实现。
6)《软件可靠性模型中的知识度量》从缺陷密度的Weibull分布出发,分析测试者的知识水平与故障分布的定量关系,可以依据知识量与缺陷发现的分布曲线预测测试发现问题的趋势及软件的可靠性,从而确定测试结束时机。通过开展软件测试工程实验验证了尺度参数c与知识量成反比关系:测试者的知识增多,Weibull分布的比例因子c减小。此外,根据软件知识的程度,将在测试中发现的问题的趋势估计用来预测软件的可靠性。
7)《智能可穿戴产品信息安全能力要求及评价方法》通过安全能力要求来表征智能可穿戴产品应该具备的可防范安全威胁的技术手段,从穿戴式设备安全能力、数据处理终端应用软件安全能力、后端计算与服务系统安全能力、无线通信能力以及用户数据保护安全能力5个方面定义了一种智能可穿戴产品分级评价方法;指导厂商提升智能可穿戴产品的安全防护能力,并为消费者购买产品提供参考。
8)《智能网联汽车软件安全测试关键技术研究》在简要分析智能网联汽车信息安全风险的基础上,围绕智能网联汽车软件质量问题,阐述开展安全性测评的关键技术与方法,并提出相应的解决方案。给出“软件是智能网联汽车技术发展的核心与关键,汽车软件的质量是保障智能网联汽车产业健康发展的保证”等结论。