SDL安全设计的背景是微软提出的安全开发生命周期(SDL),这是一种从安全角度指导软件开发过程的管理模式。在软件开发过程中,微软总结出若干核心的安全设计原则:基本隐私、默认安全、威胁建模、纵深防御、权限最小化和攻击面最小化。这些原则在软件开发的各个阶段都引入了安全和隐私的元素,以减少软件中的漏洞数量并将安全缺陷降低到最小程度。
基本隐私原则关注用户在使用软件时个人信息被收集、使用甚至分发的情况,企业有责任建立对用户个人信息的保护措施,抵御外部/内部攻击,确保用户基本隐私的安全性。攻击面最小化原则指出,程序任何能被用户或者其它程序所访问到的部分,都可能成为恶意攻击者的攻击目标。因此,应尽量减少暴露给用户的攻击面,这些暴露的部分往往也是最可能被恶意攻击者发现并试图利用的地方。
在实践中,微软用多年的经验总结出了这些方法来辅助安全人员对软件进行安全设计。其最终目标是构建可信任的应用程序,增加客户的信赖,履行法律规定和义务。
它强调保护用户数据的隐私。根据这一原则,隐私为一项基本人权,承诺为每个人和每个组织提供强有力的数据保护。此原则的基础包括客户控制、透明度、安全性、防止第三方访问数据,以及以为用户提供有意义权益的方式使用个人数据。
原则 | 描述 |
客户控制 | 用户有权决定他们的个人信息如何被收集、存储和使用。这涉及到用户对自身信息的控制权,包括选择是否分享信息,以及在何种程度上分享信息。 |
透明度 | 企业必须向用户清晰地展示他们如何使用和保护用户的个人信息。这包括明确的隐私政策,以及在收集和使用个人信息时的通知和同意机制。 |
安全性 | 确保用户个人信息不被未经授权的访问、泄露、更改或销毁的措施。这可能包括加密技术、访问控制等安全措施。 |
防止第三方访问数据 | 对企业和合作伙伴的保护要求,以防止他们未经用户同意就获取和使用用户的个人信息。 |
使用个人数据 | 企业应尊重用户的权利,并在处理用户数据时考虑到用户的利益。这可能包括提供个性化的服务,或者在收集和使用数据时获得用户的明确同意。 |
从法律、商业和安全的角度来看,在软件设计中充分考虑用户基本隐私主要体现在以下几个方面:
强调在产品设计和配置过程中,应将安全性作为默认状态。所有的设置和配置都应该是安全的,除非用户有明确的需求来关闭或降低安全级别。例如:
这一原则可以大大减少由于错误配置或误解设置而导致的安全风险。因为很多安全问题都是由于不当的配置或设置导致的,如果所有的设置都默认为安全,那么用户就不需要去考虑如何配置才能达到安全的效果,从而降低了安全风险。
需要注意的是,即使采用了默认安全原则,也不能保证产品的安全性。因为安全不仅仅是配置和设置的问题,还涉及到产品的设计和实现。
威胁建模是一种安全设计方法,用于识别和评估潜在的安全威胁。在SDL(软件定义网络)中,威胁建模可以帮助开发人员识别潜在的安全漏洞,并采取相应的措施来保护系统免受攻击。
威胁建模步骤
STRIDE模型
将安全威胁分为六类,分别是:Spoofing(伪装)、Tampering(篡改)、Repudiation(拒绝承认)、Information Disclosure(信息泄露)、