4.2.5 安全性

软件产品质量属性中的安全性是指软件产品或系统保护信息和数据的程度,其可使用户、产品或系统具有与其授权类型、授权级别一致的数据访问程度

对于一个应用或服务来说,安全性不仅需要考虑这个应用或服务本身,还需要考虑这个应用或服务承载的系统或者平台。对于C/S或者B/S架构的产品来说,不仅要考虑“端点”(Client、Browser和Server)本身的安全性,还要考虑数据在网络传输过程中的安全性。对于云架构的产品,还要考虑云端的安全性,从“云”-“管”-“端”整体去考虑。

安全性又被细分为6个子属性,如表4-3所示。

表4-3 安全性子属性

从产品设计的角度来说,无论产品的目标对象是什么,形态是什么,都至少需要具备如下功能(又称产品隐藏的安全需求)来满足基本的安全属性。

·认证和授权功能:产品、系统、组件需要通过认证才能访问,通过授权来确认访问者的访问权限,不能非法越权、提权。

·加密功能:数据在存储和传输过程中均需要加密。

·审计功能:提供审计功能,并能将审计信息存储足够长的时间(如6个月)。

其中“认证和授权功能”和“加密功能”主要满足“保密性”和“真实性”方面的要求;“审计功能”主要满足“抗抵赖性”和“可核查性”方面的要求。

除此之外,产品自身在设计上还需要有一定抵御攻击的能力,来满足“完整性”方面的要求。表4-4给出了一些最基础的防脆弱性要求,这些也可以作为基本的安全需求在设计中考虑。

表4-4 产品自身防脆弱性基本要求

需要特别说明的是,产品在受到攻击时,可能会对业务造成影响,但是在攻击消除后,产品和系统应该能快速恢复,这个隐含的要求在“可靠性——易恢复性”中描述。

接下来我们还是来看看Windows的计算器中,安全性是如何体现的。由于Windows的计算器是一个单机版应用,我们会结合Windows计算器所在操作系统(Windows 7旗舰版)进行说明。由于计算器输出数据仅为计算结果,对“可核查性”和“真实性”要求很低,故本例中不进行说明。

Windows计算器如何体现安全性

1)安全性——保密性

操作系统(Windows 7旗舰版)本身具备“用户认证”和“权限管理”功能。“安全性——保密性”体现为只有通过系统认证且有访问计算器权限的用户(如管理员)才能访问计算器。假设访客不具备访问计算器的权限,那即便访客通过了认证,也不能访问计算器。

2)安全性——完整性

作为应用程序的使用者,操作系统账号(包括管理员)都不应该具有篡改计算器程序的权限,不能植入其他非计算器程序相关的内容。

产品、系统抵抗其他攻击的能力,也属于完整性的范畴。

3)安全性——抗抵赖性

抗抵赖性可以理解为系统可以详细记录谁在什么时间使用计算器做了怎样的计算,便于日后审计追查。