《信息安全导论》课程资料 - 图文 下载本文

? 强静态原则,是指安全等级在系统的整个生命周期中不改变。强静态原则的优点是没有 安

全等级的变化,这样就不会产生违反安全条件的可能性;缺点是不够灵活,在实际应 用中,这样的原则太过严格。

? 弱静态原则,是指安全等级在不违反已给定的安全策略的情况下可以改变。弱静态原则对于安

全等级的变动要求更加灵活,如果用户要求这种状态转换,那么在不违反安全策略的情况下,应当允许这种状态转换。

由于静态原则突出了模型中的信任假设,因此在Bell-LaPadula模型中有着十分重要的作用,在应用过程中应该受到特别的关注。 2.3.4 Bell-LaPadula模型的局限性

Bell-LaPadula模型是第一个符合军事安全策略的多级安全模型。该模型的理论思想对于后续其他的安全模型有着重大的影响,并且在一些信息安全系统的设计中得到应用。Bell-LaPadula模型从本质上讲是一种基于安全等级的访问控制模型,它以主体对客体的访问安全级函数构成访问控制权限矩阵来实现主体对客体的访问。Bell-LaPadula模型自被提出以来,就不断地引起人们对该模型的讨论,人们一般认为该模型的局限性主要有以下几点:

①缺乏对信息的完整性保护。实际上这是Bell-LaPadula模型的一个特征而不是缺陷。对于一个安全模型来说,限制它的目标是十分合理的。也就是说该模型的目标只专注于信息的保密性,这正是Bell-LaPadula模型的特点之一。

②包含隐信道。隐信道是系统中不受安全策略控制的、违反安全策略的信息泄露途径。在Bell-LaPadula模型中,信息是不能直接由高等级向低等级流动的,但实际情况是可以利用访问控制机制本身构造一个隐信道来破坏这一原则。Bell-LaPadula模型不能防止或解决隐信道问题,在特殊环境下的实际应用中应尽量避免这一问题的产生。例如,如果低级别的主体可以看见高级别客体的名字,虽然直接访问客体的内容是被拒绝的,但是它可以通过隐信道非法得到想访问的内容。因此,仅仅隐藏客体的内容是远远不够的,往往还需要隐藏客体本身的存在。

③“向上写”会造成应答盲区。当一个低安全等级的进程向一个高安全等级的进程发送一段数据后,按照Bell-LaPadula模型中“不向下写”的规则,高等级的进程无法向低等级进程发送关于操作成功的回应,相应的低等级进程无法知道它向高等级进程发出的消息是否正确到达。

④时域安全性。不同主体访问同一客体时会出现时域上的重叠,有时会出现信息的泄露。

⑤安全等级定义的完备性。主体的安全等级是由安全密级和类别组成的二元组。在创建主体时就确定了该主体当前的安全等级,并且在主体的整个生命周期内固定不变。这种方法过于严格,缺乏灵活性。

了解了Bell-LaPadula模型以及它的局限性,在实际的应用中就可以针对安全目标来制定适合具体环境的安全模型,弥补原始模型中的一些漏洞,改进原始模型在某些方面的不足。 2.4 完整性模型与策略

信息的完整性要求是指维护系统资源在一个有效的、预期的状态,防止资源被不正确、不适当地修改。完整性模型与策略是对信息的完整性进行保护,防止信息的非授权更改,此时对于信息的机密性保护成为次要目标。下面我们就来了解完整性策略以及典型的完整性模型。 2.4.1 完整性策略的目标

完整性策略主要应用在商业领域。例如,对于一个库存控制系统而言,它的正常运作建立在管理数据可以正常发布的情况下。如果这些数据被随意改动了,那么这个管理系统也就不能正常工作了。完整性的主要目标是防止涉及记账或者审计的舞弊行为的发生。例如,入侵到银行系统内部非法更改账户的存款金额,入侵到大型超市的物流管理网络非法篡改货物信息等等都是对信息的完整性进行破坏。

上文介绍的Bell-LaPadula模型的出现为人们解决信息系统的保密性问题做出了巨大的贡献,但是,人们发现商业与军事在安全方面的需求是不同的,商业安全更强调保留资料的完整性,Bell-LaPadula模型并不适合所有的环境。因此,人们提出了针对保护信息完整性的模型和策略。下面就以Lipner提出的完整性模型为例来明确商业生产系统安全策略中需要达到的目标。

Lipner提出了为保证完整性所需要达到的几条规则,这些规则主要是针对特殊的商业策略而制定

的。虽然假设环境比较特殊,但是通过分析这些需求规则可以明确完整性模型需要达到的目标。该原则应用在系统开发的环境下,在后面2.4.3节中介绍Lipner完整性模型时会再用到这些原则。

①用户不能随意编写程序,必须使用现有的生产程序与数据库。

②编程人员是在一个非生产的系统上进行开发工作的。如果他们需要访问生产系统中的数据,则必须通过特殊处理过程来获得这些数据,并且只能将这些数据使用在自己开发的系统中。

③开发系统上的程序必须经过特殊处理过程才能安装在生产系统上。

需要说明的是,上述原则中最后一条所说的特殊处理过程必须要受到控制和审计,并且要保证管理员和审计员必须能够访问系统状态和已生成的系统日志。

以上这些原则表明了一些特殊的操作规则,例如,职责分离、功能分离以及审计。

职责分离规则,是指如果执行一个关键操作需要两个以上的步骤才能完成,则至少需要两个不同的人来执行这些操作。例如,将程序从开发系统安装到生产系统中这一关键操作,一般交给没有负责开发的人员来完成,原因是如果从开发到安装都是同一个人员完成的话,很多错误就很难发现。由于开发人员在开发过程中总会提出一些假设,安装人员的工作正是要验证这些假设是否正确,只有假设正确,系统才能正常工作。另外,如果开发人员故意写入恶意的代码,那么只有安装测试工作交给不是开发的人员来完成才有可能检查出恶意代码。

功能分离规则,是指开发人员不能在生产系统上开发程序或者处理生产数据,否则对生产数据会造成威胁。开发人员和测试人员可以根据各自的安全等级及信息的安全等级获得相应的生产数据。

可恢复性和责任可追究性在商业系统中十分重要,这就是审计的作用。商业系统中需要大量的审计工作,用来确定系统中所进行的操作及这些操作的执行者,尤其当程序由开发系统转移到生产系统时,审计和相关日志十分重要。

由于完整性模型与保密性模型应用的环境不同,导致了它们的目标也不相同。前者主要应用于商业环境,后者主要应用在军事环境中。商业环境和军事环境对于信息的保护目标和原则有着明显不同的需求。首先,对于访问权利的获得问题,在军事环境中,安全等级和类别是集中建立的,这些安全等级直接决定了用户对信息的不同访问权限。在商业环境中,安全等级和类别都是分散建立的,如果某个主体在其职责内需要了解某个特定的信息,那么这个访问是会被允许的。其次,对于在商业安全模型中的特殊需求,在军事安全模型中可能不会遇到。例如,在商业环境中一些保密的信息很可能从一些可公开的信息中推导得到。为了防止这种情况发生,商业安全模型需要跟踪被访问的信息情况,这样就大大地提高了模型的复杂性,对于这一点,保密性模型就做不到。下面要介绍的完整性安全模型正是针对商业环境中的这些特殊需求提出的。 2.4.2 Biba完整性模型

Biba通过对系统完整性需求的研究提出了三种策略,分别是低水标(Low-Water-Mark )策略、环策略以及严格完整性策略。其中,严格完整性策略的模型一般被称为Biba模型。Biba模型使用了一种非常类似于Bell-LaPadula的状态机,从主体访问客体这个角度来处理完整性问题。为了更加简洁直观地表示Biba模型策略及另外的两种策略,下面分别介绍系统模型中将涉及的元素以及它们之间的常见关系。

一个系统包含了主体集合S,客体集合O,以及完整性等级集合I。它们之间的关系表达如下:

??I1*I2表示I2完整性等级高于或者等于I1完整性等级。 下面是几个函数表达方法:

min:I x I→I表示两个完整性等级的较低者;

i: S∪O→I表示一个主体或者客体的完整性等级。 下面是几种关系表达方法:

r?S*O表示主体读取客体的能力; w?S*O表示主体写入客体的能力;

x?S*S表示一个主体执行另一个主体的能力。 完整性等级越高,程序执行的可靠性就越高,高等级数据比低等级数据具有更高的精确性和可靠性。这种模型隐含地融入了“信任”的概念。例如,一个客体所处的等级比另一个客体所处的等级要高,则可认为前者拥有更好的可信度。

Biba在测试其策略时引入了路径转移的概念。在一个信息系统中,主体可以通过一系列的读写操作将客体中的数据沿着一条信息流路径转移到其他客体中。定义如下:

一条转移路径是信息系统中的一系列客体o1,...,on+1和与之对应的一系列主体s1,...,sn,使得对于所有的i,1?i?n,满足si roi和siwoi+1。

下面依次介绍Biba提出的三种策略。 (1)Low-Water-Mark策略

该策略的要求是在一个主体完成对一个客体的访问后,该主体的完整性安全等级将变为该主体和被访问客体中较低的那一个等级。具体规则表示如下:

①主体集合中的一个主体s可以对客体集合中的一个客体o进行写操作,当且仅当I(o) ≤I(s)。 第一条规则用来防止主体向更高等级的客体写入信息。如果一个主体改变更高可信度的客体,那么会使得该客体的可信度降低,因此这样的写入操作是被禁止的。

②如果主体集合中的一个主体s对客体集合中的一个客体o进行了读操作,那么该主体在完成了读操作之后的完整性等级为min(I(o), I (s))。

第二条规则说明,当一个主体读取了比自己可信度低的客体后,它所使用的数据资料的可信度就降低了,因此,该主体也就随之降低了自身的可信度等级。这样做是为了防止数据“污染”主体。

③主体集合S中的两个主体:s1和s2,如果s1可以执行s2,当且仅当I(s2)≤I(s1)。

第三条规则规定了主体只可以执行完整性等级比自己低的主体,否则,被调用的高等级主体就会被发起调用的低等级主体破坏安全级别。

Low-Water-Mark策略约束信息转移路径的等级条件是:如果存在一条信息转移路径,从客体o1∈O转移到on+1∈O,那么对于所有的n?1,都存在I(on+1)?I(o1)。

这种策略要求主体读取完整性等级较低的客体后必须降低其完整性等级,禁止了降低完整性等级的直接和间接修改。该策略的缺点是由于第二条规则的规定,主体的完整性等级肯定呈现非递增的改变趋势,因此主体很快就不能访问等级较高的客体了。

(2)环策略

该策略中允许任何完整性等级的主体读取任何完整性等级的客体,也就是说该策略对于读权限没有任何限制。相比较其他安全策略中按照一定等级要求的访问,环策略的读权限似乎形成了一个回环。具体规则表示如下:

? 无论完整性等级如何,任何主体可以读取任何客体。

? 主体集合中的一个主体s可以写入客体集合中的一个客体o,当且仅当I(o)?I(s)。 ? 主体集合S中的两个主体s1和s2,如果s1可以执行s2,当且仅当I(s2)?I(s1)。 (3)严格完整性策略

严格完整性策略下建立的Biba模型是Bell-LaPadula模型数学上的对偶。具体规则表示如下: ? 主体集合S中的主体s读取客体集合O中的客体o,当且仅当I(s)?I(o)。 ? 主体集合S中的主体s写入客体集合O中的客体o,当且仅当I(o)?I(s)。

? 主体集合S中的两个主体s1和s2,如果s1可以执行s2,当且仅当I(s2)?I(s1)。

图2-7和图2-8分别说明了Biba模型中的主体“不向下读”和“不向上写”的重要原则,分别对应Biba模型中的读规则和写规则。

通过图2-7和图2-8可以清晰地看出,在Biba模型中,无论是合法的读权限还是合法的写权限,都会使系统中信息的流向由较高的安全等级流向较低的安全等级。

例2-8 用户Bob的安全级别是“机密”,他要访问安全级别为“秘密”的文档“文件2”,他将被允许对“文件2”写入数据,而不能读取数据。如果Bob想访问安全级别为“顶级机密”的文档“文件1”,那么,他将被允许对“文件1”进行读取数据,而不能写入数据。这样,就使信息的完整性得到了保护,如图2-9所示。

通过上面的介绍,我们可以看出Biba策略模型的优势在于策略比较简单明确,易于实施和验证。但是,现有的Biba策略也存在一些问题。例如,存在可用性问题。Low-Water-Mark策略和Biba严格完整性策略的动态实施都会随着主体的长时间运行而失去可调节性。对于这个问题这里就不做详细的讨论了。

2.4.3 Lipner完整性模型

Lipner结合了Bell-LaPadula模型和Biba模型,设计出一种更符合商业模式需求的完整性模型。 (1)Lipner模型中对Bell-LaPadula模型的使用

Lipner模型借鉴了Bell-LaPadula模型的建立模式。Bell-LaPadula模型中分别将系统中的客体划分为不同的等级并且赋予主体不同的安全许可,Lipner模型中也规定了自身的安全等级和安全许可类别。

该模型由高级别到低级别提供了两个安全等级,分别是:审计管理(AM),表示系统年计和管理功能所处的等级;系统低层(SL),表示任意进程都可以在这一等级上读取信息。同时定义了5个类别,分别是:开发(D),表示处于正在开发、测试的过程中但并未使用的生产程序;生产代码(PC),表示生产进程和程序;生产数据(PD),表示与完整性策略相关的程序;系统开发(SD),表示处于正在开发的过程中但还未在生产中使用的系统程序;软件工具(T),表示生产系统上提供的与敏感的和受保护的数据无关的程序。

Lipner按照不同类型的用户各自的工作需要赋予他们不同的安全许可,如表2-6所示;同样,对系统中的数据及程序进行安全类别的分配,如表2-7所示。