- 1、本文档共286页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息安全第六章可信软件和恶意软件防范
第6章 可信软件和恶意软件防范 6.1 程 序 安 全 程序构成了一个计算机系统的很多部分(操作系统、设备驱动程序、网络基础设施、数据库管理系统和其他应用程序,甚至网页上的可执行命令),因此多种形式保护程序是计算机安全的核心。程序安全除了包括程序的完整性、可用性、保密性外,还包括了程序的运行安全性。众所周知,来自系统外部的恶意攻击的主要目标是计算机系统,其直接的重点目标是信息和数据,以及包含、记录和存储这些信息数据的程序(软件)。程序的丢失、篡改、窃取、非法复制、滥用等对系统造成的后果是灾难性的,对社会造成的影响是严重的和深远的。 随着计算机网络、通信和信息处理的推广普及,随着各种计算机系统趋于开放式结构,系统连接技术和协议公开化,计算机(尤其是微型计算机)逐步进入社会各个环节,形成一个社会各方与专业领域融合的大环境,计算机恶意程序通过各种途径(直接施放、网络通信、远程访问、电子邮件、电子广告、软件交流等)传播蔓延的机会越来越多,最终必然威胁到系统,进而威胁到系统中的数据和程序的安全。各种大型软件、专用软件(如统计、地理、气象、能源、航空、航天、军事、金融财务等软件)的使用,大型数据库的联网开放,都使得数据和程序的重要性及地位日益重要,使得对程序的依赖性日益严重。程序中一个小的纰漏、一种不完善的功能、一次细微的疏忽,都可能对系统造成极大的影响。 6.1.1 程序安全的概念 当我们说一个程序是安全的,它的含义是指,对程序能实现期望的机密性、完整性和可用性的信任程度。所谓信任问题,是指假设提供一个已完成的程序,例如一个商业软件包,如何来确定它的安全性或者说如何以最安全的方式使用它?答案是采用独立的、第三方的评估。 一般而言,开发者把错误的数量和种类作为产品质量的依据。我们经常谈论软件中的“bug”,根据不同的上下文,所对应的意思也不同。它可以是需求说明时的一个错误,一段代码中的语法错误,或是一个导致系统崩溃的因素。IEEE推荐了一个标准术语来描述软件中的“bug”。 当一个人在从事软件活动的过程中犯错误时,我们称之为过失(error)。过失可能会在计算机程序中导致一个错误(fault),或者一个不正确的步骤、命令、过程或数据定义。例如,一个设计者可能误解需求,从而创建一个不符合分析员和用户要求的设计。一次失效(failure)就是对系统要求行为的一次违反。在系统发布之前或之后,或在测试过程中,或在运行和维护过程中都能发现失效。 早期的计算机安全工作建立在“查找错误并打补丁”(penetrate and patch)的模式上。分析专家在该模式下寻找错误,并给错误打上补丁。一些顶尖的测试团队尝试各种方法使系统崩溃以测试系统的安全性。这种测试被认为是安全“证明”;如果系统经受住了攻击的考验,就认为是安全的。遗憾的是,这种证明经常成为反面例子,因为系统中隐藏的错误往往不止一个。为了解决这些不断发现的错误,人们迅速开发了许多补丁以修复安全问题,然而,大多数补丁并未起多少作用。相反,它们使系统变得更不安全,因为它们引入了新的错误,其原因有三个: (1) 修补指定问题的压力使得人们仅仅关注错误本身,而不是与之相关的上下文环境。特别是分析专家仅专心于研究导致失效的直接原因,而忽视设计或需求方面的原因。 (2) 修补一个问题时常导致其他地方的失败,或者说补丁仅仅解决一个地方的问题,而没有解决相关地方的问题。 (3) 打补丁可能会影响系统的功能和性能,所以补丁不能适当地修补系统错误。 由于“查找错误并打补丁”模式的不完善,人们不得不考虑其他方法来保证代码满足安全需求。其中一个方法就是对比系统需求和系统行为。也就是说,为了理解程序的安全性,可以检查程序的行为是否符合设计者或用户的需求。 程序安全缺陷(program security flaw)是指由于程序的脆弱点而引起的不恰当的程序行为。一个缺陷可以是一个错误或是失效,而脆弱点经常用来描述某一类缺陷,诸如缓冲区溢出。脆弱点和缺陷是起因和影响的关系。例如,一个特洛伊木马被注入到一段代码中,就是一个利用了程序脆弱点的缺陷,然而用户可能还没有发现木马的恶意行为。因此,必须从内部和外部两方面处理程序的安全缺陷,不仅要找出失效的原因,也要找出初始的原因。此外,仅仅识别这些问题是不够的,还必须确定怎样避免由其引发的灾难。 可惜的是,我们还没有技术来消除或解决所有的程序安全缺陷。Gasser指出,安全根本上就是困难的,安全时常与有效性和性能相冲突,而且错误的安全解决方案会阻碍安全编程的真实进展。 如今,影响计算机程序安全的因素太多,几乎不可能建立起一个绝对安全保密的信息系统。我们一方面要加强人为因素的控制,如制定相关
文档评论(0)