安全测试①(属性、安全评估过程)
以下主要内容全部来自《白帽子讲web安全》以及一部分我自己添加的补充。
安全的主要三属性:
C:Confidentiality机密性 --> 对数据加密
I:Integrity完整性 --> 实施数字签名
A:Availability可用性 --> 需要资源随需随得
此外还有可审计性,不可抵赖性等等。
安全评估过程:
1. 资产等级划分
对于网络行业而言,大部分公司的资产其实是数据。所以评估划分资产等级需要与各个业务部分负责人沟通,了解:
①公司最重要的资产是什么
②公司最看重的数据是什么
③不同数据的重要程度
2. 威胁分析
尽可能找出所有的威胁,确定攻击面(Attack Surface)。
①头脑风暴法
②威胁建模:微软STRIDE模型
STRIDE模型延伸阅读:如何避免踩中威胁建模最常见的7个坑
威胁建模不是一个新的概念,但是很少有组织以一种有意义的方式实现它。威胁模型的最佳实践仍在涌现,威胁建模软件的创始人兼首席执行官Archie Agarwal说:“最大的问题是缺乏对威胁建模的理解。”
3. 风险分析
风险 Risk = Probability * Damage Potential
衡量风险:微软DREAD模型
DREAD模型该模型不仅可以估算风险程度,也可以根据计算结果安排工作优先级。
模型是死的,人是活的。 在确定攻击面和判断风险高低时都需要经验支撑,所以模型只是工具,关键是看人如何使用。
4. 确认解决方案
首先需要明确没有不安全的业务,只有不安全的实现方式。
安全是产品(业务)的一种属性,在确保安全性时应尽量不与产品的其余属性产生冲突。而且在产品需求中,用户真正在意的商业属性是我们的业务的核心。所以设计安全方案时尽可能不要改变商业需求。
我们进行了安全评估的产出物便是安全解决方案,一个好的安全解决方案应该满足的要点有:
①有效抵抗威胁
②不能过多干扰正常业务流程
③不能过多影响性能
④对用户透明,尽可能不影响用户使用习惯
⑤易于持续改进升级
⑥高聚合,低耦合,易于扩展
如上所示,作者再三强调了安全方案不应该影响业务的其余属性,我们也可通过下表看到运行期质量属性中除了安全性其余特性也是与用户满意度息息相关。这一类非功能属性是产品在投入使用后用户能直观感受到的属性,所以对于团队而言至关重要。
根据产品是否投入运行使用对软件质量属性的分类