软件制造商在产品设计和开发过程中应采取安全设计原则和方法,以减少网络安全风险,并转变责任重心,使产品在设计时就内置安全特性,而不是依赖于后期的补丁和修复。为此CISA发布了《软件安全设计的原则和方法》,帮助软件制造商确保其产品的安全性,并鼓励全球合作伙伴共同努力提高软件安全标准。
1. 概览
互联网几乎融入了我们日常生活的每个方面,他直接影响到我们的经济繁荣、生计甚至健康。互联网在带来便利的同时也产生了一个缺点,即不安全的技术和关键系统中的漏洞可能会引发恶意网络入侵,产生全球性的网络安全事件。
因此,软件制造商必须将安全设计和默认安全作为产品设计和开发过程的焦点。CISA(网络安全和基础设施管理局)鼓励软件制造商彻底改革他们的设计和开发程序,只允许安全设计和默认安全的产品出货。
- 安全设计的产品从开发之前就以安全为目标,再有产品可以通过多次迭代逐步演变为安全设计状态
- 默认安全的产品是指"开箱即用"的安全,几乎不需要进行配置更改,且安全功能无需额外成本即可使用。
以上两种理念共同将保持安全的大部分责任转移到制造商身上,并减少客户因配置不当、客户打补丁速度不够快或许多其他常见问题而成为安全事件受害者的机会。
2. 安全设计的原则与方法
安全设计(Secure by Design)是一种软件开发方法,旨在从一开始就将安全性纳入产品的设计和开发过程中。以下是一些核心原则和方法。
2.1. 安全设计的原则
- 拥有客户安全成果的责任(Take Ownership of Customer Security Outcomes): 软件制造商应该负责确保他们的产品设计和开发具有安全性,而不仅仅是在产品发布后修补漏洞。
- 拥抱彻底的透明度和问责制(Embrace Radical Transparency and Accountability): 制造商应该对外公开他们的安全实践和漏洞信息,以及他们如何处理安全事件。
- 由高层牵引(Lead from the Top): 高级管理层应该将安全性视为产品开发的核心要素,并在整个组织中推动这一理念。
2.2. 安全设计的方法
- 威胁建模(Threat Modeling): 在产品设计阶段,通过威胁建模来识别潜在的安全威胁,并在产品蓝图中包含相应的保护措施。
- 最小权限原则(Principle of Least Privilege): 确保系统组件仅拥有完成其功能所必需的最小权限集合。
- 安全默认设置(Secure by Default): 产品应该默认启用最重要的安全控制,而不需要用户进行额外的配置。
- 纵深防御(Defense in Depth): 通过多层防御策略来保护系统,即使攻击者突破了一层防线,还有其他层可以阻止他们。
- 安全编码实践(Secure Coding Practices): 遵循安全编码标准和最佳实践,例如输入验证、代码审查和使用安全的编程语言。
- 持续监控和响应(Continuous Monitoring and Response): 实施持续的监控机制来检测和响应安全事件。
- 安全更新和补丁管理(Security Patching and Update Management): 快速响应安全漏洞,提供及时的更新和补丁来修复已知问题。
- 隐私保护设计(Privacy by Design): 在设计阶段就考虑用户隐私,确保个人数据的安全和合规性。
通过遵循这些原则和方法,软件制造商可以创建更加安全的产品,减少安全漏洞的风险,并提高整体的网络安全态势。
3. 总结
CISA发布的《软件安全设计的原则和方法》文档提供了一系列具体的建议和策略,包括威胁建模、最小权限原则、默认安全配置、纵深防御、安全编码实践、持续监控和响应、安全更新和补丁管理等,以帮助软件制造商实现这些原则 。
文档强调了国际合作的重要性,并呼吁行业反馈,以共同提高全球软件安全标准。通过这些努力,文档旨在促进一个更安全、更有韧性的技术生态系统,其中技术产品在设计和默认状态下都是安全的。
若想了解更多关于软件安全设计的原则和方法的详细指导,可以参阅:
- Secure By Design_1025_508c.pdf (共36页,访问密码: 6277)
4. 参考链接
- https://www.cisa.gov/securebydesign
推荐阅读:
- 安全设计 | 68家国内外科技巨头和安全巨头参与了CISA发起的安全设计承诺,包含MFA、默认密码、CVE、VDP等七大承诺目标
- 安全设计 | Microsoft 威胁建模工具Threat Modeling Tool安装、使用及威胁生成原理详解(文末附样例)
- 安全设计 | 安全设计不得马虎!微软STRIDE威胁建模方法让你事半功倍,快速发现应用安全隐患!