3章程序安全.pptVIP

  1. 1、本文档共157页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3章程序安全

5 第3章 程序安全 本章要点 具有安全隐患的编程错误 恶意代码 防止恶意代码和脆弱性的程序开发控制 控制程序运行时的缺陷 程序构成了一个计算机系统的很多部分,因此多种形式保护程序是计算机安全的核心。我们将所有代码片称之为“程序” (program)。这里需要提出两个重要问题:怎样消除程序中的缺陷?在程序有缺陷的情况下,如何保护计算机资源? 本章讨论的是一般的程序话题,包括程序编写。程序安全中一个重要问题是信任。信任问题是指:假设提供一个已完成的程序,如何来确定它的安全性或者说如何以最安全的方式使用它?答案是采用独立的第三方的评估。 3.1 安全程序 评估程序安全与软件质量的评估相似,一种评估软件安全性或质量的方法是让人们列出能反映该软件整体安全的那些特性。然而,不同的人有不同的答案。人们对软件质量的总体设想也会影响对安全性的评估。一般而言,开发者把错误的数量和种类作为衡量产品质量的依据。 当一个人在从事软件活动的过程中有所疏失时,我们称之为过失(error)。过失可能会在计算机程序中导致一个错误(fault),或者一个不确定的步骤、命令、过程或数据定义。一个单独的过失可以产生很多错误,一个错误可以隐藏在任何产品的开发和维护中。 一次失效(failure)就是对系统要求行为的一次违反。一次失效意味着系统没有按照需求执行。 错误是对系统的内部观点而言的,是开发者所见到的;而失效则是对系统的外部观点而言的,是用户看到的问题。 3.1.1 修改错误 修改错误是评估安全质量的一种方法。计算机安全工作建立在“查找错误并打补丁” (penetrate and patch)的模式上。分析专家在该模式下寻找错误,并给错误打上补丁。 3.1.1 修改错误 (续) 缺陷: 1) 修补指定问题的压力使得人们仅仅关注错误本身,而不是与之相关的上下文环境。 2) 在离错误较远的区域,其副作用不明显。 3) 修补一个问题时常导致其他地方的失败,或者说补丁仅仅解决一个地方的问题,而没有解决相关地方的问题。 4) 打补丁可能会影响系统的功能和性能,所以补丁经常不能恰当地修补系统错误。 3.1.2 意外行为 “程序安全缺陷” (program security flaw) 是由于程序的脆弱点而引起的不恰当的程序行为。 “脆弱点”和“缺陷”这组词与“错误”和“失效”这组词之间并没有直接的对应关系。一个缺陷可以是一个错误或是失效,而脆弱点经常用来描述某一类缺陷,诸如缓冲区溢出。尽管不一致,但应该记住:我们必须从两个方面来看待脆弱点和缺陷,即起因和影响。 程序安全性缺陷可以来源于任何种类的软件错误。有必要将程序缺陷划分为两种逻辑类别:由开发者的疏忽所引起的错误和恶(有)意设计的缺陷。 3.1.2 意外行为 (续) 分类帮助我们理解一些方法,用以防止将缺陷有意或无意地引入到以后的代码编写中。一个因疏忽而引起的错误给用户及其组织带来的损失可能与恶意漏洞带来的损失相当。计算机攻击(cyber attack) 即有意的安全事件,是如今最大的安全威胁。 从根本上说安全是困难的,安全时常与有效性和性能相冲突,而且错误的安全解决方案会阻碍安全编程的真实进展。我们还没有技术来消除或解决所有的程序安全缺陷。原因有两个: 3.1.2 意外行为 (续) 1) 程序控制是在单独的程序和程序员的级别上实施的。功能测试是解决程序“应该做什么”的问题,而安全测试还要确定 “不应该做什么” 的问题。要保证程序精确地按照设计者和用户的意图来执行而没有其他的行为,这几乎是不可能的。在一个复杂的大型系统中,不管设计者或程序员的意图何在,许多相关模块都以各种各样难以控制的方式交织着。巨大的规模和复杂性使得我们不可能去预防和检查所有缺陷。想要植入恶意代码的程序员可以利用系统的不完整性成功地将漏洞隐藏其中。 3.1.2 意外行为 (续) 2) 程序设计和软件工程技术的发展迅速远远超过了计算机安全技术的发展速度。所以我们经常发现自己还在努力保护去年的技术,而软件开发者却正迅速地采用当前最新的技术了。 # 尽管如此,我们可以通过理解什么导致错误以及怎样阻止它,来开发技术和工具,保护大多数计算机的应用程序。 3.1.3 缺陷类型 Landwehr等提出了一种关于程序缺陷的分类法,首先分为有意和无意的缺陷。进一步将有意缺陷细分为恶意和非恶意的类型。无意的缺陷分为6类: 确认过失(不完善或不一致):许可权核查。 域过失:对于数据的受控访问。 序列化和混淆:程序流顺序。 不充分的识别和鉴别:授权的基础。 边界条件违规:首次或

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档