这个东西是什么:
- Security Development Lifecycle (SDL)中文名称软件安全开发周期
来自哪里:
- Microsoft,2004
有什么意义:
- 它是一个逐渐完善的体系,并将软件安全的考虑与实施方法集成在软件开发的任何一个阶段 ,包括但不仅限于:需求分析、设计、编码、测试和维护**。
- 帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。
图片来自网络,如侵必删来一张图吧:
自2004年起,SDL就成为Microsoft全公司的计划和强制施行政策,其核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动与规范,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。安全开发生命周期 (SDL)是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用。
图片来自网络,如侵必删安全培训是SDL最核心的概念,软件是由设计人员设计,代码是有开发人员编写。同样,大部分软件本身的安全漏洞也是由设计及编码人员引入,所以对软件开发过程中的技术人员进行安全培训这点至关重要。
可以看到在整个SDL周期中,除了安全培训这项活动,还在软件发布后增加了安全应急响应的相关活动,而目前国内大多数公司目前已经基本上具备了安全应急响应的活动和职能部门,同时包括安全编码规范、代码审计、渗透测试等安全活动也都已经基本具备甚至个别企业已经比较成熟。但在软件设计阶段的安全活动则相对较少,据我了解仅个别大型跨国企业才拥有安全设计等相关的安全活动。而根据微软多年的实践和经验,软件的安全问题很大一部分是由于不安全的设计而引入的。在设计阶段造成的安全缺陷在后期修复的成本和时间都相对较高。STRIDE威胁建模的创始人之一Taha Mir曾说过
“safer applications begin with secure design”
即安全应用从安全设计开始,相应的微软SDL也提出了若干核心的安全设计原则,并提出了如攻击面最小化、STRIDE威胁建模等多种方法辅助安全人员对软件进行安全设计,本文就针对当前国内企业在软件设计阶段安全活动发展相对欠缺的安全设计进行探讨。
参考:
[1] https://www.microsoft.com/en-us/SDL/process/design.aspx
[2] http://www.microsoft.com/en-us/sdl/adopt/threatmodeling.aspx
[3] https://github.com/Cryin/Paper
[4] http://cryin.startblog.cc
[5] Introduction_to_Threat_Modeling
[6] Simplified Implementation of the SDL
网友评论