何谓安全性需求?何谓保密性需求?

前些天,姚瑞娜同学提出了这样一个问题:

王老师,保密性需求的界定有什么标准要求吗?目前我们单位在写保密性需求时,理解不一,有的专家认为有加密算法的才算是保密性需求,像用户权限管理、协议增加校验码等不属于保密性需求,说要归为安全性需求中,究竟怎么界定安全性需求和保密性需求呢?

这里尝试解答一下。

关于安全性需求和保密性需求的定义,首先要区别一下使用场景。在不同场景下,安全的含义是不同的。在互联网软件中,安全更多地是指数据安全,而军用软件中,安全指的就是生命财产安全。所以,这里所说的安全性需求和保密性需求均限制在军用软件领域。

在《软件可靠性工程》(高校教材,清华大学出版社)中,对于软件安全性和保密性是这样定义的:

软件安全性是指软件在系统中运行,而不致在系统工作中造成不可接受的风险的能力,如人身伤亡,设备损坏,财产重大,损失严重,污染环境等。
保密性是指在未授权情况下,软件不会被获取、修改。

其中,还专门明确了“软件安全性不同于涉及文件保密,预防非法侵入的数据安全性。”

从这个定义中可以看出,安全性需求是指为了避免因软件产生的生命、财产、环境的安全问题而采取的措施;保密性需求是指避免软件数据被非法获取和修改而采取的措施。数据安全性的需求应归结为保密性需求。

关于安全性和保密性需求,在GJB438B中也有相应的定义:

在《系统/子系统规格说明》中是这样描述的:

安全性需求是描述有关防止对人员、财产、环境产生意外危险,或把此类危险减少到最低的系统需求,包括危险物品使用的限制,为运输处理存储的目的,而对爆炸物品进行分类,异常终止或异常出口不一定气体检测和报警设备,电力系统接地,排污、防爆等。
保密性需求,指明维持保密性的系统需求,包括系统运行的保密性环境,提供的保密性的类型和程度,系统必须经受住的保密性的风险,减少此类风险所需的安全措施,系统必须遵循的保密性政策,系统必须具备的保密性责任,保密性认证或认可必须满足的准则等。

注意,这里是站在系统角度描述的,所以它给出的示例适用于系统而不是软件。

在《软件研制任务书》中是这样描述的:

安全性需求,如关键功能至少要有两个独立的程序模块共同完成,监视时钟或看门狗的设置要求,软件多余物的处理,程序块儿的隔离,内存未用空间和未采用中断的处理,对关键数据、变量的保护和校核等;描述安全性关键功能软件的标识、控制、检测和故障识别,描述软件失控、加电检测控制顺序出现异常造成的可接受最低安全性水平,描述关于系统的某些故障模式和软件的故障对策要求。若适用,描述不允许出现的故障模式。
保密性需求,如口令、密码、访问控制、数据加密等。

在《软件需求规格说明》中这样描述:

安全性需求描述关于防止或尽可能降低对人员财产和物理环境产生意外危险的需求,包括软件必须提供的以防止意外动作和动作失败造成安全问题的安全措施。若适用,还应包括预防意外爆炸以及与核安全规则保持一致等方面的需求。
保密性需求。包括软件必须在其中运行的保密性环境、所提供的保密性的类型和级别,软件必须经受的保密性风险,减少此类风险所需的安全措施,必须遵循的保密性政策,软件必须具备的保密性责任,保密性认证或认可必须满足的准则等。

任务书中给出了很多安全性需求和保密性需求的实例,而需求规格说明中反而只是一些解释和要求,缺少实例。

回到最初的问题,按照以上安全性需求和保密性需求的定义,加密算法、用户权限管理都属于保密性需求(依据任务书中保密性需求实例中的“数据加密”和“访问控制”);协议当中的校验则是安全性需求(依据任务书中安全性需求实例中的“对关键数据、变量的保护和校核”)。

这正是:

安全保密难分清,描述混乱道不明

追根溯源寻定义,但愿以后拎的清

参考书目:

软件可靠性工程,作者:徐仁佐,出版社:清华大学出版社

(0)

相关推荐