软件安全开发知识点
《软件安全开发》关键考试知识点串讲
第一节 软件安全开发基础
1.软件工程三要素:理论方法、过程管理、语言工具。
2.软件开发模型:瀑布模型、迭代模型、增量模型、螺旋模型、原型模型、净室模型。
3.软件安全问题:三次危机、生命周期局限性、教育局限性、人的局限性。
4.软件缺陷密度:千行代码缺陷率(KLOC),即千分比的数值。例如,一千行代码有1个缺陷,缺陷率就为1。一千行代码有10个缺陷,缺陷率就为10。
5.软件安全原因:内因、外因。以内因处理为主。
6.软件安全目标:
(1)可信赖性:无论是恶意而为还是无意疏忽,软件都没有可利用的漏洞存在。
(2)可预见性:对软件执行时其功能符合开发者的意图的信心。
(3)可遵循性:软件开发跨学科的活动计划并系统化,以确保软件过程和软件产。
6.软件安全思想
(1)需要贯彻风险管理的思想。
(2)软件安全开发覆盖软件整个生命周期。
(3)软件安全保障—思想之提前介入思想等。
第二节 软件安全开发模型

1、SDL:七个阶段、17项活动(了解)。
2、CMMI:能力集成成熟度模型1-5级。
3、SAMM:治理、构造、验证、部署。
4、BSI: 风险管理、接触点、安全知识。
5、BSIMM:有能力成熟度级别1-5,12维度安全度量。
6、CLASP:轻量级的应用安全开发指南,基于30种安全开发活动而实现的。
第三节 软件安全开发过程
1、软件安全需求
– 全面:政策、法律、标准、业务、应用场景、安全威胁等。
– 问题:合规、人性化、全面、刚性、去伪需求、注意悖论需求问题等。
2、软件安全设计
(1)设计原则:1-不信任、2-纵深防御、3-最小特权、4-权限分离、5-完全中立、6-经济性、7-公开设计、8-攻击面最小化、9-心理可接受、10-隐私保护、11-保护薄弱环节、12-默认故障处理、13-最小共享、14-信息保密原则等。
(2)降低攻击面:
A.攻击面:针对一个对象受到攻击方法、路径、接口等的集合。
B.降低受攻击面的方法:
– 分析产品的功能及特征。
– 分析从哪些路径可以访问该产品。
– 降低访问的特权和增强防护措施。
(3)威胁建模
— 流程:1-确定对象、2-识别威胁、3-评估威胁、4-消减威胁。
— 方法:基于STRIDE的威胁建模方法。
— S-欺骗;T-篡改;R-抵赖;I-信息泄露;D-拒绝服务;E-权限提升
3、软件安全编码
(1)语法规范
(2)逻辑开放性
(3)不存在冗余代码
(4)代码要精简清晰
(5)不存在复杂代码
(6)完全符合设计及详细设计
(7)源代码编写要进行体系化的规划和分解
(8)代码文件进行安全标识
(9)进行安全输入的验证(内部之间、外部输入)
(10)进行安全的输出和验证,返回最小化
(11)调用的协议、组件、命令、参数具有安全性并进行校验
(12)软件安全级别越高,则安全机制更多的向内实现
(13)高内聚和低耦合防止死锁
(14)统一的返回值设计
(15)写软件的代码注释
(16)源代码的安全审计(前提是对安全需求和安全设计的审计)
4、软件安全测试
(1)基础测试:单元、集成、系统、黑盒、灰盒、白盒、静态、动态、正常、异常等。
(2)模糊测试:提供非预期的输入监视异常的结果。
(3)渗透测试:异常、黑盒、动态测试的结合,发现严重问题,但属于非完全标准化测试。
(4)组合:根据软件开发实际需求和情况,软件的测试的措施是可以灵活组合。
5、软件验收交付
(1)供应链安全:知识产权、开发工具、编译器、开发人员、开源代码使用等安全。
(2)交付的安全:签名控制、Lisence控制、管理手册、使用手册、安全手册等。
(3)运行维护:参考安全管理体系、实施安全措施、安全测量、应急响应等内容。

评论(0)
暂无评论