信息安全-深入分析比较八个信息安全模型new

上传人:xins****2008 文档编号:200480107 上传时间:2023-04-16 格式:DOC 页数:18 大小:72KB
收藏 版权申诉 举报 下载
信息安全-深入分析比较八个信息安全模型new_第1页
第1页 / 共18页
信息安全-深入分析比较八个信息安全模型new_第2页
第2页 / 共18页
信息安全-深入分析比较八个信息安全模型new_第3页
第3页 / 共18页
资源描述:

《信息安全-深入分析比较八个信息安全模型new》由会员分享,可在线阅读,更多相关《信息安全-深入分析比较八个信息安全模型new(18页珍藏版)》请在装配图网上搜索。

1、深入分析比较八个信息安全模型信息安全体系结构的设计并没有严格统一的标准,不同领域不同时期,人们对信息安全的认识都不尽相同,对解决信息安全问题的侧重也有所差别。早期人们对信息安全体系的关注焦点,即以防护技术为主的静态的信息安全体系。随着人们对信息安全认识的深入,其动态性和过程性的发展要求愈显重要。国际标准化组织(ISO)于1989年对OSI开放系统互联环境的安全性进行了深入研究,在此基础上提出了OSI安全体系结构:ISO 7498-2:1989,该标准被我国等同采用,即信息处理系统开放系统互连基本参考模型第二部分:安全体系结构GB/T 9387.2-1995。ISO 7498-2 安全体系结构由

2、5类安全服务(认证、访问控制、数据保密性、数据完整性和抗抵赖性)及用来支持安全服务的8种安全机制(加密机制、数字签名、访问控制机制、数据完整性机制、认证交换、业务流填充、路由控制和公证)构成。ISO 7498-2 安全体系结构针对的是基于OSI 参考模型的网络通信系统,它所定义的安全服务也只是解决网络通信安全性的技术措施,其他信息安全相关领域,包括系统安全、物理安全、人员安全等方面都没有涉及。此外,ISO 7498-2 体系关注的是静态的防护技术,它并没有考虑到信息安全动态性和生命周期性的发展特点,缺乏检测、响应和恢复这些重要的环节,因而无法满足更复杂更全面的信息保障的要求。P2DR 模型源自

3、美国国际互联网安全系统公司(ISS)提出的自适应网络安全模型ANSM(Adaptive NetworkSe cur ity Mode l)。P2DR 代表的分别是Polic y(策略)、Protection(防护)、Detection(检测)和Response(响应)的首字母。按照P2DR的观点,一个良好的完整的动态安全体系,不仅需要恰当的防护(比如操作系统访问控制、防火墙、加密等),而且需要动态的检测机制(比如入侵检测、漏洞扫描等),在发现问题时还需要及时做出响应,这样的一个体系需要在统一的安全策略指导下进行实施,由此形成一个完备的、闭环的动态自适应安全体系。P2DR模型是建立在基于时间的安

4、全理论基础之上的。该理论的基本思想是:信息安全相关的所有活动,无论是攻击行为、防护行为、检测行为还是响应行为,都要消耗时间,因而可以用时间尺度来衡量一个体系的能力和安全性。PDRR 模型,或者叫PPDRR(或者P2DR2),与P2DR非常相似,唯一的区别就在于把恢复环节提到了和防护、检测、响应等环节同等的高度。在PDRR模型中,安全策略、防护、检测、响应和恢复共同构成了完整的安全体系,利用这样的模型,任何信息安全问题都能得以描述和解释。当信息安全发展到信息保障阶段之后,人们越发认为,构建信息安全保障体系必须从安全的各个方面进行综合考虑,只有将技术、管理、策略、工程过程等方面紧密结合,安全保障体

5、系才能真正成为指导安全方案设计和建设的有力依据。信息保障技术框架(Information Assurance Technical Framework,IATF)就是在这种背景下诞生的。IATF是由美国国家安全局组织专家编写的一个全面描述信息安全保障体系的框架,它提出了信息保障时代信息基础设施的全套安全需求。IATF创造性的地方在于,它首次提出了信息保障依赖于人、操作和技术来共同实现组织职能/业务运作的思想,对技术/信息基础设施的管理也离不开这3个要素。IATF认为,稳健的信息保障状态意味着信息保障的策略、过程、技术和机制在整个组织的信息基础设施的所有层面上都能得以实施。尽管IATF提出了以人为

6、核心的思想,但整个体系的阐述还是以技术为侧重的,对于安全管理的内容则很少涉及。所以,与其说IATF 为我们提供了全面的信息安全体系模型,如说为我们指出了设计、构建和实施信息安全解决方案的一个技术框架信息安全体系建设与服务过程(ISMG-002),它为我们概括了信息安全应该关注的领域和范围、途径和方法、可选的技术性措施,但并没有指出信息安全最终的表现形态,这和P2DR、PDRR 等模型有很大区别。BS 7799 是英国标准协会(British Standards Institute,BSI)制定的关于信息安全管理方面的标准,它包含两个部分:第一部分是被采纳为ISO/IEC 17799:2000

7、标准的信息安全管理实施细则(Code of Practice for Information Security Management),它在10 个标题框架下列举定义127项作为安全控制的惯例,供信息安全实践者选择使用;BS 7799 的第二部分是建立信息安全管理体系(ISMS)的一套规范(Specif ication for Information Security Management Systems),其中详细说明了建立、实施和维护信息安全管理体系的要求,指出实施机构应该遵循的风险评估标准。作为一套管理标准,BS7799-2指导相关人员怎样去应用ISO/IEC 17799,其最终目的还在

8、于建立适合企业需要的信息安全管理体系(ISMS)。单从安全体系作为信息安全建设指导蓝图和目标的作用来看,之前的几种体系或模型都或多或少存在一些不足,ISO 7498-2 就不多说,即使是目前较为流行的P2DR 和PDRR模型,侧重的也只是安全体系的技术环节,并没有阐述构成信息安全的几个关键要素。至于IATF,虽然明确指出信息安全的构成要素,但它只是提供了一个用来选择技术措施的框架并没有勾画出一个安全体系的目标形态。同样的,BS 7799标准虽然完全侧重于信息安全管理,但它所要求的信息安全管理体系(ISMS)也没有明确的目标形态。这里,我们提出了一种新的安全体系模型, 即P2OTPDR2 模型。

9、实际上这是一个将IATF 核心思想与PDRR基本形态结合在一起的安全体系模型,符合我们对信息安全体系设计的基本要求。P2OTPDR2,即Policy(策略)、People(人)、Operation(操作)、Technology(技术)、Protection(保护)、Detection(检测)、Response(响应)和Recovery(恢复)的首字母缩写。P2OTPDR2分为3个层次,最核心的部分是安全策略,安全策略在整个安全体系的设计、实施、维护和改进过程中都起着重要的指导作用,是一切信息安全实践活动的方针和指南。模型的中间层次体现了信息安全的3个基本要素:人员、技术和操作,这构成了整个安全

10、体系的骨架,从本质上讲,安全策略的全部内容就是对这3 个要素的阐述,当然,3个要素中,人是唯一具有能动性的,是第一位的。在模型的外围,是构成信息安全完整功能的PDRR模型的4个环节,信息安全3要素在这4个环节中都有渗透,并最终表现出信息安全完整的目标形态。概括来说,在策略核心的指导下,3个要素(人、技术、操作)紧密结合协同作用,最终实现信息安全的4项功能(防护、检测、响应、恢复),构成完整的信息安全体系。P2OTPDR2 模型的核心思想在于:通过人员组织、安全技术以及运行操作3个支撑体系的综合作用,构成一个完整的信息安全管理体系。虽然只是简单的演绎归纳,但新的安全体系模型能够较好地体现信息安全

11、的各个特点,因而具有更强的目标指导作用。从全面性来看,P2OTPDR2 模型对安全本质和功能的阐述是完整的、全面的;模型的层次关系也很清晰;外围的PDRR模型的4 个环节本身就是对动态性很好的诠释;无论是人员管理、技术管理还是操作管理,都体现了信息安全可管理性的特点。就防护来说,ISO 7498-2所定义的传统的安全技术可以建立起信息安全的第一道防线,包括物理安全措施、操作系统安全、身份认证、访问控制、数据加密、完整性保护等技术;在检测环节,病毒检测、漏洞扫描、入侵检测、安全审计都是典型的技术和操作手段;在响应环节,包括突发事件处理、应急响应、犯罪辨析等技术和操作;而在恢复环节,备份和恢复则是

12、最重要的内容。当然,在这4个环节中,无论是采用怎样的措施,都能够通过人、操作和技术三者的结合来共同体现安全策略的思想,最终实现信息安全的目标和要求。下面简单给出八种安全模型的比较:(1)状态机模型:无论处于什么样的状态,系统始终是安全的,一旦有不安全的事件发生,系统应该会保护自己,而不是是自己变得容易受到攻击。(2)Bell-LaPadula模型: 多级安全策略的算术模型,用于定于安全状态机的概念、访问模式以及访问规则。主要用于防止未经授权的方式访问到保密信息。 系统中的用户具有不同的访问级(clearance),而且系统处理的数据也有不同的类别(classification)。信息分类决定了

13、应该使用的处理步骤。这些分类合起来构成格(lattice)。BLP是一种状态机模型,模型中用到主体、客体、访问操作(读、写和读/写)以及安全等级。也是一种信息流安全模型,BLP的规则,Simplesecurityrule,一个位于给定安全等级内的主体不能读取位于较高安全等级内的数据。(-propertyrule)为不能往下写。Strongstarpropertyrule,一个主体只能在同一安全登记内读写。图1-1 Bell-Lapodupa安全模型解析图 基本安全定理,如果一个系统初始处于一个安全状态,而且所有的状态转换都是安全的,那么不管输入是什么,每个后续状态都是安全的。 不足之处:只能处

14、理机密性问题,不能解决访问控制的管理问题,因为没有修改访问权限的机制;这个模型不能防止或者解决隐蔽通道问题;不能解决文件共享问题。(3)Biba模型: 状态机模型,使用规则为,不能向上写:一个主体不能把数据写入位于较高完整性级别的客体。不能向下读:一个主体不能从较低的完整性级别读取数据。主要用于商业活动中的信息完整性问题。图1-2 Biba安全模型解析图(4)Clark-Wilson模型: 主要用于防止授权用户不会在商业应用内对数据进行未经授权的修改,欺骗和错误来保护信息的完整性。在该模型中,用户不能直接访问和操纵客体,而是必须通过一个代理程序来访问客体。从而保护了客体的完整性。使用职责分割来

15、避免授权用户对数据执行未经授权的修改,再次保护数据的完整性。在这个模型中还需要使用审计功能来跟踪系统外部进入系统的信息。完整性的目标,防止未授权的用户进行修改,防止授权用户进行不正确的修改,维护内部和外部的一致性。Biba只能够确认第一个目标。(5)信息流模型: Bell-LaPadula模型所关注的是能够从高安全级别流到低安全级别的信息。Biba模型关注的是从高完整性级别流到低完整性级别的信息。都使用了信息流模型,信息流模型能够处理任何类型的信息流,而不仅是流的方向。(6)非干涉模型: 模型自身不关注数据流,而是关注主体对系统的状态有什么样的了解,以避免较高安全等级内的一个实体所引发的一种活

16、动,被低等级的实体感觉到。(7)Brewer和Nash模型: 是一个访问控制模型,这个模型可以根据用户以往的动作而动态地改变。模型的主要功能就是防止用户访问被认为是利益冲突的数据。(8)Graham-Denning安全模型: 创建允许主体在客体上操作的相关权限; Harrison-Ruzzo-Ullman模型:允许修改访问权以及如何创建和删除主体和客体。软件安全性的10原则和相互作用原则 1:保护最薄弱的环节安全性社区中最常见的比喻之一是:安全性是根链条;系统的安全程度只与最脆弱的环节一样。结论是系统最薄弱部分就是最易受攻击影响的部分。攻击者往往设法攻击最易攻击的环节,这对于您来说可能并不奇怪

17、。如果他们无论因为什么原因将您的系统作为攻击目标,那么他们将沿阻力最小的路线采取行动。这意味着他们将试图攻击系统中看起来最薄弱的部分,而不是看起来坚固的部分。即便他们在您系统各部分上花费相同的精力,他们也更可能在系统最需要改进的部分中发现问题。这一直觉是广泛适用的。银行里的钱通常比便利店里的钱多,但是它们哪一个更易遭到抢劫呢?当然是便利店。为什么?因为银行往往有更强大的安全性防范措施;便利店则是一个容易得多的目标。让我们假定您拥有一家普通的银行和一家普通的便利店。是为保险库添加额外的门并将安全人员的数目翻倍,还是为便利店花费同样数目的钱雇佣安全官员更划算呢?银行可能已经将出纳员置于防弹玻璃之后

18、,并安装了摄像机、配备了安全保卫、装备了上锁的保险库以及具有电子密码的门。相比之下,便利店可能装备了没那么复杂的摄像机系统以及很少的其它设备。如果您将对您的金融帝国的任何一部分进行安全性投资,那么便利店将是最佳选择,因为它的风险要大得多。这一原则显然也适用于软件世界,但大多数人并没有给予任何重视。特别地,密码术不太会是系统最薄弱的部分。即使使用具有 512 位 RSA 密钥和 40 位 RC4 密钥的 SSL-1,这种被认为是难以置信的薄弱的密码术,攻击者仍有可能找到容易得多的方法进入。的确,它是可攻破的,但是攻破它仍然需要大量的计算工作。如果攻击者想访问通过网络传输的数据,那么他们可能将其中

19、一个端点作为目标,试图找到诸如缓冲区溢出之类的缺陷,然后在数据加密之前或在数据解密之后查看数据。如果存在可利用的缓冲区溢出,那么世界上所有的密码术都帮不了您 而且缓冲区溢出大量出现在 C 代码中。因为这一原因,虽然加密密钥长度的确对系统的安全性有影响,但在大多数系统中它们并不是如此的重要,在这些系统中更重要的事情都有错。同样地,攻击者通常并不攻击防火墙本身,除非防火墙上有众所周知的弱点。实际上,他们将试图突破通过防火墙可见的应用程序,因为这些应用程序通常是更容易的目标。如果执行一个好的风险分析,则标识出您觉得是系统最薄弱的组件应该非常容易。您应该首先消除看起来好象是最严重的风险,而不是看起来最

20、容易减轻的风险。一旦一些其它组件很明显是更大的风险时,您就应该将精力集中到别的地方。当然,可以永远使用这一策略,因为安全性从来就不是一个保证。您需要某些停止点。根据您在软件工程过程中定义的任何量度,在所有组件都似乎在可接受的风险阈值以内时,您应该停下来。原则 2:纵深防御纵深防御背后的思想是:使用多重防御策略来管理风险,以便在一层防御不够时,在理想情况下,另一层防御将会阻止完全的破坏。即便是在安全性社区以外,这一原则也是众所周知的;例如,这是编程语言设计的着名原则:纵深防御:采取一系列防御,以便在一层防御不能抓住错误时,另一层防御将可能抓住它。让我们回到为银行提供安全性的示例。为什么典型的银行

21、比典型的便利店更安全?因为有许多冗余的安全性措施保护银行 措施越多,它就越安全。单单安全摄像机通常就足以成为一种威慑。但如果攻击者并不在乎这些摄像机,那么安全保卫就将在那儿实际保护银行。两名安全保卫甚至将提供更多的保护。但如果两名保卫都被蒙面匪徒枪杀,那么至少还有一层防弹玻璃以及电子门锁来保护银行出纳员。如果强盗碰巧砸开了这些门或者猜出了 PIN,起码强盗将只能容易抢劫现金出纳机,因为我们有保险库来保护余下部分。理想情况下,保险库由几个锁保护,没有两个很少同时在银行的人在场是不能被打开的。至于现金出纳机,可以为其装备使钞票留下印记的喷色装置。当然,配备所有这些安全性措施并不能确保银行永远不会遭

22、到成功的抢劫。即便在具备这么多安全性的银行,也确实会发生银行抢劫。然而,很清楚,所有这些防御措施加起来会形成一个比任何单一防御措施有效得多的安全性系统。这好象同先前的原则有些矛盾,因为我们实质上是在说:多重防御比最坚固的环节还要坚固。然而,这并不矛盾;“保护最薄弱环节”的原则适用于组件具有不重叠的安全性功能的时候。但当涉及到冗余的安全性措施时,所提供的整体保护比任意单个组件提供的保护要强得多,确实是可能的。一个好的现实示例是保护在企业系统不同服务器组件间传递的数据,其中纵深防御会非常有用,但却很少应用。大部分公司建立企业级的防火墙来阻止入侵者侵入。然后这些公司假定防火墙已经足够,并且让其应用程

23、序服务器不受阻碍地同数据库“交谈”。如果数据非常重要,那么如果攻击者设法穿透了防火墙会发生什么呢?如果对数据也进行了加密,那么攻击者在不破解加密,或者(更可能是)侵入存储未加密形式的数据的服务器之一的情况下,将不能获取数据。如果我们正好在应用程序周围建立另一道防火墙,我们就能够保护我们免遭穿透了企业防火墙的人攻击。那么他们就不得不在应用程序网络显式输出的一些服务中寻找缺陷;我们要紧紧掌握那些信息。原则 3:保护故障任何十分复杂的系统都会有故障方式。这是很难避免的。可以避免的是同故障有关的安全性问题。问题是:许多系统以各种形式出现故障时,它们都归结为不安全行为。在这样的系统中,攻击者只需造成恰当

24、类型的故障,或者等待恰当类型的故障发生。我们听说过的最好的现实示例是将现实世界同电子世界连接起来的示例 信用卡认证。诸如 Visa 和 MasterCard 这样的大型信用卡公司在认证技术上花费巨资以防止信用卡欺诈。最明显地,无论您什么时候去商店购物,供应商都会在连接到信用卡公司的设备上刷您的卡。信用卡公司检查以确定该卡是否属被盗。更令人惊讶的是,信用卡公司在您最近购物的环境下分析您的购物请求,并将该模式同您消费习惯的总体趋势进行比较。如果其引擎察觉到任何十分值得怀疑的情况,它就会拒绝这笔交易。从安全性观点来看,这一方案给人的印象十分深刻 直到您注意到某些事情出错时所发生的情况。如果信用卡的磁

25、条被去磁会怎样呢?供应商会不得不说:“抱歉,因为磁条破了,您的卡无效。”吗?不。信用卡公司还向供应商提供了创建您卡的标记的手工机器,供应商可以将其送给信用卡公司以便结帐。如果您有一张偷来的卡,那么可能根本不会进行认证。店主甚至可能不会向您要您的 ID。在手工系统中一直有某些安全性所示,但现在没了。在计算机网络出现以前,可能会要您的 ID 以确保该卡同您的驾驶证相匹配。另外需要注意的是,如果您的号码出现在当地定期更新的坏卡列表之内,那么该卡将被没收。而且供应商还将可能核查您的签名。电子系统一投入使用,这些技术实际上就再也不是必需的了。如果电子系统出现故障,那么在极少见的情况下,会重新使用这些技术

26、。然而,实际不会使用这些技术。信用卡公司觉得:故障是信用卡系统中十分少见的情形,以致于不要求供应商在发生故障时记住复杂的过程。系统出现故障时,系统的行为没有通常的行为安全。遗憾的是,系统故障很容易引起。例如,很容易通过将偷来的信用卡在一块大的磁铁上扫一下来毁坏其磁条。这么做,只要小偷将卡用于小额购买(大额购买经常要求更好的验证),他们就或多或少地生出了任意数目的金钱。从小偷的角度看,这一方案的优点是:故障很少会导致他们被抓获。有人可以长期用这种方法使用同一张卡,几乎没有什么风险。为什么信用卡公司使用这种愚蠢落后的方案呢?答案是:这些公司善于风险管理。只要他们能够不停地大把赚钱,他们就可以承受相

27、当大数量的欺诈。他们也知道阻止这种欺诈的成本是不值得的,因为实际发生的欺诈的数目相对较低。(包括成本和公关问题在内的许多因素影响这一决定。)大量的其它例子出现在数字世界。经常因为需要支持不安全的旧版软件而出现问题。例如,比方说,您软件的原始版本十分“天真”,完全没有使用加密。现在您想修正这一问题,但您已建立了广大的用户基础。此外,您已部署了许多或许在长时间内都不会升级的服务器。更新更聪明的客户机和服务器需要同未使用新协议更新的较旧的客户机进行互操作。您希望强迫老用户升级,但您尚未为此做准备。没有指望老用户会占用户基础中如此大的一部分,以致于无论如何这将真的很麻烦。怎么办呢?让客户机和服务器检查

28、它从对方收到的第一条消息,然后从中确定发生了什么事情。如果我们在同一段旧的软件“交谈”,那么我们就不执行加密。遗憾的是,老谋深算的黑客可以在数据经过网络时,通过篡改数据来迫使两台新客户机都认为对方是旧客户机。更糟的是,在有了支持完全(双向)向后兼容性的同时仍无法消除该问题。对这一问题的一种较好解决方案是从开始就采用强制升级方案进行设计;使客户机检测到服务器不再支持它。如果客户机可以安全地检索到补丁,它就升级。否则,它告诉用户他们必须手工获得一个新的副本。很遗憾,重要的是从一开始就应准备使用这一解决方案,除非您不在乎得罪您的早期用户。远程方法调用(Remote Method invocation

29、 (RMI))的大多数实现都有类似的问题。当客户机和服务器想通过 RMI 通信,但服务器想使用 SSL 或一些其它加密协议时,客户机可能不支持服务器想用的协议。若是这样,客户机通常会在运行时从服务器下载适当的套接字实现。这形成了一个大的安全漏洞,因为下载加密接口时,还没有对服务器进行认证。攻击者可以假装成服务器,在每台客户机上安装他自己的套接字实现,即使是在客户机已经安装了正确的 SSL 类的情况下。问题是:如果客户机未能建立与缺省库的安全连接(故障),它将使用一个不可信实体给它的任何协议建立连接,因此也就扩展了信任范围。原则 4:最小特权最小特权原则规定:只授予执行操作所必需的最少访问权,并

30、且对于该访问权只准许使用所需的最少时间。当您给出了对系统某些部分的访问权时,一般会出现滥用与那个访问权相关的特权的风险。例如,我们假设您出去度假并把您家的钥匙给了您的朋友,好让他来喂养您的宠物、收集邮件等等。尽管您可能信任那位朋友,但总是存在这样的可能:您的朋友未经您同意就在您的房子里开派对或发生其它您不喜欢的事情。不管您是否信任您的朋友,一般不必冒险给予其必要的访问权以外的权利。例如,如果您没养宠物,只需要一位朋友偶尔收取您的邮件,那么您应当只给他邮箱钥匙。即使您的朋友可能找到滥用那个特权的好方法,但至少您不必担心出现其它滥用的可能性。如果您不必要地给出了房门钥匙,那么所有一切都可能发生。同

31、样,如果您在度假时确实雇佣了一位房子看管人,那么您不可能在没有度假时还让他保留您的钥匙。如果您这样做了,那么您使自己陷入额外的风险之中。只要当您的房门钥匙不受您的控制,就存在钥匙被复制的风险。如果有一把钥匙不受您的控制,而且您不在家,那么就存在有人使用钥匙进入您房子的风险。当有人拿了您的钥匙,而您又没有留意他们,那么任何这样的一段时间都会构成一个时间漏洞,在此段时间内您就很容易受到攻击。为了将您的风险降到最低,您要使这段易受攻击的时间漏洞尽可能的短。现实生活中的另一个好的示例是美国政府的忠诚调查系统 “需要知道”政策。即使您有权查看任何机密文档,您仍不能看到您知道其存在的 任何机密文档。如果可

32、以的话,就很容易滥用该忠诚调查级别。实际上,人们只被允许访问与那些交给他们的任务相关的文档。 UNIX 系统中出现过一些违反最小特权原则的最著名情况。例如,在 UNIX 系统上,您一般需要 root 特权才能在小于 1024 的端口号上运行服务。所以,要在端口 25(传统的 SMTP 端口)上运行邮件服务器,程序需要 root 用户的特权。不过,一旦程序在端口 25 上运行了,就没有强制性要求再对它使用 root 特权了。具有安全性意识的程序会放弃 root 特权并让操作系统知道它不应再需要那些特权(至少在程序下一次运行之前)。某些电子邮件服务器中存在的一个大问题是它们在获取邮件端口之后没有放

33、弃它们的 root 权限(Sendmail 是个经典示例)。因此,如果有人找到某种方法来欺骗这样一个邮件服务器去完成某些恶意任务时,它会成功。例如,如果一位怀有恶意的攻击者要在 Sendmail 中找到合适的栈溢出,则那个溢出可以用来欺骗程序去运行任意代码。因为 Sendmail 在 root 权限之下运行,所以攻击者进行的任何有效尝试都会成功。 另一种常见情况是:一位程序员可能希望访问某种数据对象,但只需要从该对象上进行读。不过,不管出于什么原因,通常该程序员实际需要的不仅是必需的特权。通常,该程序员是在试图使编程更容易一些。例如,他可能在想,“有一天,我可能需要写这个对象,而我又讨厌回过头

34、来更改这个请求。”不安全的缺省值在这里可能还会导致破坏。例如,在 Windows API 中有几个用于访问对象的调用,如果您将“0”作为参数传递,那么这些调用授予所有的访问。为了更有限制地进行访问,您需要传递一串标志(进行“OR”操作)。只要缺省值有效,许多程序员就会坚持只使用它,因为那样做最简单。对于受限环境中运行的产品的安全性政策,这个问题开始成为其中的常见问题。例如,有些供应商提供作为 Java applet 运行的应用程序。applet 构成移动代码,Web 浏览器会对此代码存有戒心。这样的代码运行在沙箱中,applet 的行为根据用户同意的安全性政策受到限制。在这里供应商几乎不会实践

35、最小特权原则,因为他们那方面要花太多的精力。要实现大体意思为“让供应商的代码完成所有的任务”的策略相对要容易得多。人们通常采用供应商提供的安全性策略,可能是因为他们信任供应商,或者可能因为要确定什么样的安全性策略能最佳地使必须给予供应商应用程序的特权最小化,实在是一场大争论。原则 5:分隔如果您的访问权结构不是“完全访问或根本不准访问”,那么最小特权原则会非常有效。让我们假设您在度假,而你需要一位宠物看管人。您希望看管人只能进出您的车库(您不在时将宠物留在那里)但是如果您的车库没有一把单独的锁,那么您别无选择而只能让看管人进出整幢房子。分隔背后的基本思想是如果我们将系统分成尽可能多的独立单元,

36、那么我们可以将对系统可能造成损害的量降到最低。当将潜水艇构造成拥有许多不同的船舱,每个船舱都是独立密封,就应用了同样原则;如果船体裂开了一个口子而导致一个船舱中充满了水,其它船舱不受影响。船只的其余部分可以保持其完整性,人们就可以逃往潜水艇未进水的部分而幸免于难。分隔原则的另一个常见示例是监狱,那里大批罪犯集中在一起的能力降到了最低。囚犯们不是居住在营房中,而是在单人或双人牢房里。即使他们聚集在一起 假定,在食堂里,也可以加强其它安全性措施来协助控制人员大量增加带来的风险。在计算机世界里,要举出糟糕分隔的示例比找出合理分隔容易得多。怎样才能不分隔的经典示例是标准 UNIX 特权模型,其中安全性

37、是关键的操作是以“完全访问或根本不准访问”为基础的。如果您拥有 root 特权,那么您基本上可以执行您想要的任何操作。如果您没有 root 访问权,那么就会受到限制。例如,您在没有 root 访问权时不能绑定到 1024 以下的端口。同样,您不能直接访问许多操作系统资源 例如,您必须通过一个设备驱动程序写磁盘;您不能直接处理它。通常,如果攻击者利用了您代码中的缓冲区溢出,那人就可以对磁盘进行原始写并胡乱修改内核所在内存中的任何数据。没有保护机制能阻止他这样做。因此,您不能直接支持您本地磁盘上永远不能被擦去的日志文件,这意味着直到攻击者闯入时,您才不能保持精确的审计信息。不管驱动程序对底层设备的

38、访问协调得多么好,攻击者总能够避开您安装的任何驱动程序。在大多数平台上,您不能只保护操作系统的一部分而不管其它部分。如果一部分不安全,那么整个系统都不安全。有几个操作系统(诸如 Trusted Solaris)确实做了分隔。在这样的情况中,操作系统功能被分解成一组角色。角色映射到系统中需要提供特殊功能的实体上。一个角色可能是 LogWriter 角色,它会映射到需要保存安全日志的任何客户机上。这个角色与一组特权相关联。例如,LogWriter 拥有附加到它自己的日志文件的权限,但决不可以从任何日志文件上进行擦除。可能只有一个特殊的实用程序获得对 LogManager 角色的访问,它就拥有对所有

39、日志的完全访问权。标准程序没有对这个角色的访问权。即使您破解了一个程序并在操作系统终止这个程序,您也不能胡乱修改日志文件,除非您碰巧还破解了日志管理程序。这种“可信的”操作系统并不是非常普遍,很大一部分是因为这种功能实现起来很困难。象在操作系统内部处理内存保护这样的问题给我们提出了挑战,这些挑战是有解决方案的,但得出解决的结果并不容易。分隔的使用必须适度,许多其它原则也是如此。如果您对每一个功能都进行分隔,那么您的系统将很难管理。原则 6:简单性 在许多领域,您可能听到 KISS 咒语“简单些,蠢货!”与其它场合一样,这同样适用于安全性。复杂性增加了问题的风险;这似乎在任何系统中都不可避免。很

40、明显,您的设计和实现应该尽可能地简单。复杂的设计不容易理解,因此更有可能产生将被忽略的拖延问题。复杂的代码往往是难以分析和维护的。它还往往有更多错误。我们认为任何人都不会对此大惊小怪。类似地,只要您所考虑的组件是质量良好的,就应该考虑尽可能重用组件。特定组件被成功使用的次数越多,您就更应该避免重写它。对于密码库,这种考虑尤其适用。当存在几个广泛使用的库时,您为什么想重新实现 AES 或 SHA-1 呢?那些库可能比您在房间里装配起来的东西更为健壮。经验构筑了保证,特别当那些经验是成功的经验时。当然,即使在广泛使用的组件中,也总是有出现问题的可能性。然而,假设在已知数量中涉及的风险较少是合理的。

41、原则 7:提升隐私 用户通常认为隐私是安全性问题。您不应该做任何可能泄露用户隐私的事情。并且在保护用户给您的任何个人信息方面,您应该尽可能地认真。您可能听说过恶意的黑客能够从 Web 访问整个客户数据库。还经常听说攻击者能够截获其它用户的购物会话,并因此获得对私有信息的访问。您应该竭尽所能避免陷入这种窘境;如果客户认为您不善处理隐私问题,则您可能很快失去他们的尊重。原则 8:难以隐藏秘密安全性通常是有关保守秘密的。用户不想让其个人数据泄漏出去,所以您必需加密密钥以避免窃听或篡改。您还要保护您的绝秘算法免遭竞争者破坏。这些类型的需求很重要,但是与一般用户猜疑相比较,很难满足这些需求。 很多人以为

42、用二进制表示的秘密也许能保守秘密,因为要抽取它们太困难了。的确,二进制是复杂的,但要对“秘密”保密实在是太困难了。一个问题就是某些人实际上相当擅长对二进制进行逆向工程 即,将它们拆开,并断定它们是做什么的。这就是软件复制保护方案越来越不适用的原因。熟练的黑客通常可以避开公司尝试硬编码到其软件中的任何保护,然后发行“破译的”副本。很长时间以来,使用的技术越来越多;供应商为阻止人们发现“解锁”软件的秘密所投入的精力越多,软件破解者在破解软件上花的力气也越多。在极大程度上,都是破解者达到目的。人们已经知道有趣的软件会在正式发布之日被破解 有时候会更早。 如果软件都在您自己网络的服务器端运行,您可能会

43、判定您的秘密是安全的。实际上,它比隐藏秘密难得多。如果您可以避免它,就不应该信任您自己的网络。如果一些不曾预料到的缺点允许入侵者窃取您的软件将会怎么样呢?这是就在他们发行第一版 Quake 之前发生在 Id 软件上的事情。 即使您的网络很安全,但您的问题可能是在内部。一些研究表明对公司最常见的威胁就是“内部人员”攻击,其中,心怀不满的雇员滥用访问权。有时候雇员并不是不满;或许他只是把工作带到家里做,朋友在那里窃听到他不应该知道的东西。除此之外,许多公司无法防止心怀恶意的看门人窃取其仔细看守的软件。如果有人想要通过非法手段获取您的软件,他们或许会成功。当我们向人们指出内部攻击的可能性时,他们常常

44、回答:“这不会发生在我们身上;我们相信我们的员工。”如果您的想法也是这样,那么您应该谨慎一点。与我们对话的 90% 的人说的都一样,然而大多数攻击都是内部人员干的。这里有一个极大的差距;大多数认为可以相信其员工的那些人肯定是错的。请记住,员工可能喜欢您的环境,但归根结底,大多数员工与您的公司都有一种业务关系,而不是个人关系。这里的寓意就是多想想也是值得的。 有时,人们甚至不需要对软件进行逆向工程,就可以破译它的秘密。只要观察正在运行的软件,就常常可以发现这些秘密。例如,我们(John Viega 和 Tim Hollebeek)曾经仅仅通过用一系列选择的输入来观察其行为,就破解了 Netsca

45、pe 电子邮件客户机中的一个简单密码算法。(这太容易做到了,所以我们说:“我们不用铅笔和纸来做这件事。我们的许多笔记都用钢笔写。我们不需要擦除更多东西。”)最近,ETrade遭受了类似下场,当您在 Web 上登录时,任何人都可以看到您的用户名和密码。 相信二进制(就此而言,或者是任何其它形式的模糊)为您保守秘密的实践被亲切地称作“含糊的安全性(security by obscurity)”。只要有可能,您都应该避免将它用作您唯一的防御线。这并不意味着含糊的安全性没有用武之地。明确地拒绝对源代码的访问会稍微对攻击者产生一些障碍。模糊代码以产生一个模糊的二进制甚至会有更大帮助。这些技术要求潜在的攻

46、击者拥有比在他们需要实际破坏您系统时更多的技巧,这通常是一件好事。相反,大多数以这种方法保护的系统无法执行一次足够的安全性审查;有一些事情是公开的,它允许您从用户那里获得免费的安全性忠告。 原则 9:不要轻易扩展信任如果人们知道不能相信最终用户所控制的客户机,那么他们可能常常会意识到他们的秘密正处于危险中,因为不能相信最终用户会按照他们期望的那样使用客户机。我们还强烈要求您勉强相信您自己的服务器,以防止数据窃取,这种犹豫应该渗透到安全性过程的各个方面。 例如,虽然现成的软件的确可以帮助您简化您的设计和实现,但您怎么知道相信现成组件是安全的呢?您真的认为开发人员就是安全性方面的专家吗?即使他们是

47、,您期望他们确实可靠吗?许多有安全性漏洞的产品都来自安全性供应商。许多从事安全性业务的人实际上并不太了解有关编写安全代码方面的知识。 通常很容易扩展信任的另一个地方是客户支持。毫无戒心的客户支持代理(他们有相信的倾向)非常容易遭到社会工程攻击,因为它会使他们的工作变得更加容易。 您还应该注意一下“随大流”。仅仅因为一个特殊的安全性功能是标准的并不意味着您应该提供同样低级的保护。例如,我们曾经常听到人们选择不加密敏感数据,仅仅是因为他们的竞争对手没有对数据进行加密。当客户遭到攻击,于是责备某人疏忽安全性时,这就不是充足的理由。 您也不应该相信安全性供应商。为了出售他们的产品,他们常常散布可疑的或

48、完全错误的信息。通常,这种“蛇油”传播者通过散布 FUD 害怕、不确定和怀疑进行工作。许多常见的警告标记可以帮助您发觉骗子。其中我们最喜欢的一个就是用于秘钥加密算法的“百万位密钥”广告。数学告诉我们,对于整个宇宙生命周期,256 位很可能足以保护消息 假设该算法是高质量的。做了较多广告的人对密码术知道得太少而无法出售安全性产品。在完成购物之前,请一定要进行研究。最好从“Snake Oil”FAQ开始。 您还应该勉强相信您自己和您的组织。当涉及您自己的主意和您自己的代码时很容易目光短浅。尽管您可能喜欢完美,但您应该容许不完美,并且对正在做的事情定期获取高质量的、客观的外部观点。 要记住的最后一点

49、是信任是可转移的。一旦您信任某个实体,就会暗中将它扩展给该实体可能信任的任何人。出于这个原因,可信的程序决不应该调用不可信的程序。当确定要信任哪些程序时,也应该十分小心;程序可能已经隐藏了您不想要的功能。例如,在 90 年代早期,我们有一个具有极受限制的、菜单驱动功能的 UNIX 帐户。当您登录时从菜单开始,并且只能执行一些简单操作,如读写邮件和新闻。菜单程序信任邮件程序。当用户编写邮件时,邮件程序将调出到一个外部编辑器(在这种情况下,是“vi”编辑器)。当编写邮件时,用户可以做一些 vi 戏法来运行任意命令。当它关闭时,很容易利用对 vi 编辑器的这种隐含的、间接的信任完全摆脱菜单系统,而支

50、持正规的旧的不受限的命令行 shell。 原则 10:信任公众虽然盲目随大流不是一个好主意,但从数字上讲还是有一点实力。无失败地重复使用会增进信任。公众的监督也可增进信任。(这是应用这个原则的唯一时机;其它情况下,原则 9 是正确应用的一个原则,您应该忽略这个原则。) 例如,在密码术中,信任公众不知道的且未受广泛监督的任何算法被认为是一个坏想法。大多数密码算法在安全性方面都没有真正可靠的数学证明;仅当一群聪明人花大量时间来尝试破解它们并且都没有实质性进展时才信任它们。 许多人发现编写他们自己的密码算法很有吸引力,希望如果这些算法不牢靠,含糊的安全性将用作安全网络。重申一遍,这种希望将破灭(例如

51、,前面提到的 Netscape 和 E*Trade 破坏)。争论结果通常是,秘密算法比公众知道的算法好。我们已经讨论了您应该如何期望您的算法秘密不会保持太久。例如,RC4 加密算法应该是 RSA Data Security 的商业秘密。然而,在其引入后不久,它被进行逆向工程并在因特网上以匿名方式张帖出来。 事实上,加密者设计他们的算法,使算法知识对安全性无关紧要。好的密码算法能起作用是因为您保守了一个称为“密钥”的小秘密,而不是因为算法是秘密的。即,您需要唯一保守秘密的东西就是密钥。如果您可以做到这一点,并且算法真的很好(且密钥足够长),那么即使是非常熟悉该算法的攻击者也无法攻击您。 同样,最好信任已被广泛使用并且被广泛监督的安全性库。当然,它们可能包含尚未被发现的错误 但至少您可以利用其他人的经验。 仅当您有理由相信公众正在尽力提升您要使用的组件的安全性时,才应用这个原则。一个常见的误解是相信“开放源码”软件极有可能是安全的,因为源代码可用性将导致人们执行安全性审计。有一些强有力的证据表明:源代码可用性没有为人们审阅源代码提供强大的动机,即使许多人愿意相信那个动机存在。例如,多年来,广泛使用、自由软件程序中的许多安全性错误没有引起人们注意。对于最流行的 FTP 服务器(WU-FTPD),有几个安全性错误被忽视已有十多年!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!