GJB5000B提出了软件安全性需求开发的要求,而要实施好软件安全性需求开发,首先需要对软件安全性需求的定义有更为清晰、准确的理解。
在GJB438C《系统规格说明》中对安全性需求是这样描述的:
有关防止对人员、财产、环境产生意外危险或者把此类危险降至最低的系统需求。其中包括:危险物品使用的限制;为运输、处理和存储的目的而对爆炸物进行分类;异常中止/异常出口的规定;气体检测和报警设备;电力系统接地;排污;防爆等。
这是站在系统/设备的角度考虑各种常见的危险因素,由此引出的系统安全性需求。
在GJB438C《软件需求规格说明》中对安全性需求是这样描述的:
关于防止或尽可能降低对人员、财产、环境产生意外危险的CSCI需求。例子包括:CSCI必须采取安全措施,以便防止意外动作或无动作。
这是站在软件的角度考虑由于某些功能无法正常运行而造成意外危险,由此引出的软件安全性需求。
除此之外,我们还可以从软件安全性属性来分析软件的安全性需求。
软件安全性的核心安全属性包括保密性、完整性和可用性。
保密性:软件必须保证其内容、资源管理以及自身特性(包括其运行环境和用户之间的联系)对未授权的实体隐藏。
完整性:软件以及受其管理的资源必须能够抵御主动攻击,防止被非法用户修改和破坏,并能从被破坏状态中恢复。
可用性:软件可被授权用户访问并按需求使用,即保证合法用户对系统和资源的使用不会被不合理拒绝。
简而言之,软件的核心安全属性就是确保授权用户可以正常使用,未得到授权的用户无法使用(至少核心功能不能使用)。特别是对于军用软件来说,未经授权的非法使用软件,就可能对他人造成巨大的危险。
所以,开发软件的安全性需求,可以从系统可能带来的意外危险因素引出系统安全性需求,再将系统安全性需求分解到软件功能,引出软件的安全性需求;此外,还应考虑这些功能授权用户的正常使用以及杜绝非法用户的使用。