软件安全设计.docx
- 文档编号:899071
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:17
- 大小:86.24KB
软件安全设计.docx
《软件安全设计.docx》由会员分享,可在线阅读,更多相关《软件安全设计.docx(17页珍藏版)》请在冰豆网上搜索。
软件安全设计
第一部分
软件概念
1.与一系统(尤指计算机系统)有关的程序、步骤和有关文件编制的完整集合。
特指特定类型计算机所使用的程序的总称,连同与计算机或程序有关的资料,例如手册、图表和操作指令。
2.根据冯•诺依曼提出的“存储程序控制思想”,人们要控制计算机完成一定的工作,就要事先编写好一系列的控制命令,一步一步告诉计算机该如何做,然后将这一系列控制命令输入到计算机的存储器中保存,再让计算机按照一定的顺序逐一执行,从而完成我们所要求的工作。
3.由人根据一定的需要事先编写的一系列控制计算机工作的命令,就称为计算机程序。
安全概念
信息定义
所谓信息,就是客观世界中各种事物的变化和特征的最新反映,是客观事物之间联系的表征,也是客观事物状态经过传递后的再现。
信息安全
信息安全”没有公认和统一的定义,国内外的论述大致可分为两大类:
1.一类是指具体的信息技术系统的安全。
2.而另一类则是指某一特定信息体系的安全。
但是有人认为这两种定义失之于过窄,而应定义为:
一个国家的社会信息化状态不受外来的威胁与侵害,一个国家的信息技术体系不受外来的威胁与侵害。
信息安全的五个基本属性
安全性
可用性
保密性
可控性
可靠性
软件安全概念
软件安全性是指软件不被恶意使用或者攻击进而造成用户信息资产损失的属性。
软件安全:
软件在恶意攻击下能够正确地完成其功能。
软件安全的三个属性
保护敏感信息不被未授权用户访问–软件的可信性,confidentiality
保护数据不被更改或破坏–软件的完整性integrity
确保资源被授权用户的使用-软件的可用性,availability
如何得到安全的软件
构建安全的软件是一个过程,这个过程包括:
教育
设计,接口选择和规格定义
软件的实现和编
验证、测试和评估
软件提交和安全地执行
软件的维护、BUG修复和调整
漏洞及脆弱性
安全漏洞(SecurityHole):
计算机系统具有的某种可能被入侵者恶意利用的属性。
有时安全漏洞也称为脆弱性(Vulnerability)。
漏洞的本质:
漏洞是系统的一组特性,恶意的主体(攻击者或者攻击程序)能够利用这组特性,通过已授权的手段和方式获取对资源的XX访问,或者对系统造成损害。
当系统的某个漏洞被入侵者渗透(exploit)而造成泄密时,其结果就称为一次安全事件(SecurityIncident)。
1996年MattBishop和DaveBailey,“计算机脆弱性(ComputerVulnerability)”:
“计算机系统由一系列描述构成计算机系统的实体的当前配置状态(state)组成,系统通过应用状态变换(StateTransition,状态转换)(即改变系统状态)实现计算。
使用一组状态变换,从给定的初始状态可以到达的所有状态最终分为由安全策略定义的两类状态:
已授权的(authorized,经授权的)和XX的(unauthorized,未被授权的,未经认可的)。
漏洞是软件的属性。
质量特性
功能性
可靠性
易用性
效率
维护性
可移植性
关于软件安全的基本概念及认识
安全的代码(securecode):
能够抵抗恶意攻击的代码;安全的代码同时也是健壮的代码(robustcode)
安全性代码(securitycode):
实现安全功能的代码。
程序是“安全的”:
安全隐含某种程度的信任(trust),程序实现了期望的机密性、完整性、可用性及其功能。
第二部分
安全问题来源
1、漏洞
漏洞是软件的属性
2、攻击者
3、软件存在的攻击路径-攻击面问题
意外行为及缺陷
意外行为(UnexpectedBehavior):
也称程序安全缺陷,是由于程序脆弱性引起的不适当的程序行为。
缺陷(Flaw):
缺陷可以是故障(Fault),或者失效(Failure)
程序安全缺陷可能来源于任何种类的软件错误:
无意或疏忽的
故意或有意的
缺陷类型
Landwehretal.提出了程序缺陷分类方法(taxonomy)
有意的缺陷(Intentional,故意的)
恶意的(Malicious)
非恶意的(Nonmalicious)
无意中的缺陷(Inadvertent,不注意的;疏忽的)
•确认错误(Validation(验证;合法性,有效)error)(incomplete/inconsistent)
•域的错误(Domainerror)
•顺序化和混淆现象(Serializationandaliasing)
•不完全的身份识别和认证(Inadequateidentificationandauthentication)
•边界条件违反(Boundaryconditionviolation)
•其它可利用的逻辑错误(Otherexploitablelogicerrors)
漏洞类型
软件漏洞包括设计漏洞和实现漏洞。
漏洞是软件安全威胁的根源.
设计漏洞:
设计错误,往往发现于软件的安全功能特性中。
实现漏洞:
来源于软件实际编码中的安全缺陷。
软件安全缺陷及其来源(以上)
常见软件安全设计问题
常见的安全设计问题1:
密码技术使用的败笔
创建自己的密码技术
选用了不当的密码技术
依赖隐蔽式安全
编写到程序中的密钥
错误地处理私密信息
常见的安全设计问题2:
对用户及其许可权限进行跟踪的薄弱或缺失
会话管理薄弱或者缺失
身份鉴别薄弱或缺失
授权薄弱或缺失
常见的安全设计问题3:
有缺陷的输入验证
没有在安全的上下文环境中执行验证,如在服务器验证而在客户端没有验证
验证例程不集中,验证应尽可能靠近用户输入,并应集中以便于核实
不安全的组件边界
常见的安全设计问题4:
薄弱的结构性安全
过大的攻击面
在过高权限级别上运行进程
没有纵深防御
失效时的处理不安全
常见的安全设计问题5:
其他设计缺陷
代码和数据混在一起
错将信任寄予外部系统
不安全的默认值
未做审计日志
编程语言的问题
C/C++的问题
问题1:
没有安全的本地字符串类型,
也没有安全而易用的字符串处理函数。
典型例子--缓冲区溢出(BufferOverflow)
C/C++问题2:
缓冲区超限覆盖栈中的函数返回地址
典型例子-栈溢出(StackSmashing)
C/C++问题3:
printf类型的格式化函数-格式化字符串攻击
C/C++问题4:
整数溢出
第三部分
安全工程
SSE/CMM
SSE-CMM背景知识
开发SSE-CMM的目的:
降低开发和维护系统的花费;
提高工程进度和预算的一致性;
选择合适的承包者。
发起者
国防部;
国家安全局。
SSE-CMM主要内容
能力方面:
1、通用实施:
增强执行任何过程能力的实现和制度化实施。
2、公共特征:
一组实施,列出管理和制度化过程的相同方面。
3、能力级别:
共同工作的一组公共特征,主要增强执行一个过程的能力。
能力级别:
能力级别1――非正式执行
能力级别2――计划与跟踪
能力级别3――充分定义
能力级别4――定量控制
能力级别5――连续改进
域方面:
1、基础实施:
工程和安全实施是安全工程过程中必须存在的性质,指出特殊过程区的目的属于该过程区。
2、过程区:
每个过程区(PA)是一组相关安全工程过程的性质,当这些性质全部实施后则能够达到过程区定义的目的。
3、过程类:
一组过程区指出活动的同一通用区。
CMM的5个级别
一级为初始级,
二级为可重复级,
三级为已定义级,
四级为已管理级,
五级为优化级。
安全工程的三个基本过程
安全工程分三个基本过程:
风险、工程和保证
风险过程是要确定产品或者系统的危险性,并对这些危险性进行优先级排序
工程过程是针对面临的危险性,安全工程过程与相关工程过程一起来确定并实施解决方案
保证过程是建立起对解决方案的信任,并把这种信任传达给顾客
SDL及它的三个阶段
什么是SDL?
SecureDevelopmentLifecycle
微软可信计算(TrustWorthyComputing)努力的一个组成部分
基于并行理念的标准软件开发过程
基于威胁建模和测试
SDL从三个方面考虑软件安全的保障。
设计安全:
为了保护软件自身以及软件处理的信息,并抵御攻击,软件应该从架构,设计和实现上进行考虑.
缺省安全:
设计者应该假定安全缺陷将会出现。
为了当攻击者对软件存在的缺陷进行攻击时使损害降到最小,软件的缺省状态应该保证安全。
比如,最小特权原则。
提交安全:
工具和指南应该随着软件提供以帮助最终用户或管理员安全使用。
关于软件的更新应该容易提交。
威胁建模
威胁建模过程:
定义应用场景
收集外部依赖列表
定义安全假设
创建外部安全备注
绘制待建模应用的一个或多个数据流图
确定威胁类型
识别系统威胁
判断风险
规划消减措施
常见安全设计原则
隐私分级
第四部分
软件测试
测试相关概念
白盒、黑盒和灰盒测试
白盒测试:
也称明盒测试、开盒测试或信息充分测试。
白盒测试可以看作是内部的攻击。
测试人员可以访问源代码和设计文档,可以进行威胁建模或逐行的代码检查。
白盒测试是找出漏洞最为有效的方法。
黑盒测试:
以局外人的身份对系统进行攻击,使用工具检查系统的攻击面,并探查系统的内部信息。
黑盒测试是白盒测试的补充。
方向工程团队利用黑盒测试验证隐蔽式安全方法的强度。
灰盒测试:
组合使用白盒测和黑盒测试。
白盒测试用于发现在设计和开发中详细说明的功能中的缺陷;
黑盒测试在无法了解程序内部信息的时候找出缺陷。
程序开发中的调试运行是典型的灰盒测试方法。
两个模型TRAP模型及DREAD模型
DREAD模型:
进行威胁程度级别分析的有效技术。
MichaelHoward和DavidLeblanc在《编写安全的代码》提出。
DREAD:
潜在的破坏(Damagepotential)
再现性(Reproducibility)
可利用性(Exploitability)
受影响用户(Affectedusers)
可发现性(Discoverability)
利用DREAD模型对威胁分级:
潜在的破坏
如果该漏洞被利用,所产生的破坏程度
再现性
探测并利用该漏洞所需要的努力要多久
可利用性
是否需要身份鉴别?
需要身份鉴别
不需要身份鉴别,但需要难以确定的知识
不需要身份鉴别,也不需要特殊的知识
受影响的用户
漏洞利用的影响面有多大
仅仅是特殊的配置
普通情况
默认用户或者大多数用户
可发现性
漏洞研究人员或黑客找出该漏洞的可能性
TRAP模型
基于可利用性提出。
TRAP包括因素:
时间(Time)
可靠性(Reliability)/再现性(Reproducibility)
访问(Access)
定位(Positioning)
利用TRAP模型对威胁分析
时间:
某些漏洞可能需要长时间的探测并利用。
如加密漏洞需要数千年的时间计算才能利用,表示该漏洞的风险非常低。
可靠性/再现性:
漏洞的严重程度依赖于该漏洞可被攻击者利用的可靠性或再现性。
通常高级别漏洞的可靠性和可再现性高。
访问:
利用漏洞通常可以为攻击者提供更高的访问权。
定位:
利用一个漏洞,攻击者必须能够与存在该漏洞的应用程序交互,并能访问到含有该漏洞的代码。
基于风险的测试的三个步骤:
•Step1信息搜集
•Step2威胁(风险)建模
•Step3可用性分析
9个高风险活动
数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 安全 设计