2.3.2 BLP模型
1.模型介绍
BLP模型是第一个也是最著名的、符合军事安全策略的多级安全策略模型,由David Bell和len LaPadula在1973年提出。BLP模型是可信系统的状态-转换(State-Transition)模型,主要任务是定义使系统获得“安全”的状态集合,检查系统的初始是否为“安全状态”,检查所有状态的变化均始于一个“安全状态”并终止于另一个“安全状态”。
BLP模型定义了系统中的主体(Subject)访问客体(Object)的操作规则。每个主体有一个安全级别,通过众多条例约束其对每个具有不同密级的客体的访问操作。BLP模型奠定了多级安全模型的理论基础,后来的一些多级安全模型都是基于BLP模型的。BLP模型的安全策略采用了自主访问控制和强制访问控制(详见第6章)相结合的方法,能够有效地保证系统内信息的安全,支持信息的保密性,但却不能保证信息的完整性,没有采取措施来制约对信息的非授权篡改。
2.模型描述
BLP模型是第一个能够提供分级别数据机密性保障的安全策略模型,它对信息按不同的安全等级进行分类,从而进行安全控制。该模型对计算机安全的发展有着重要影响,并且被作为美国国防部橘皮书《可信计算机系统评估准则》的基础。BLP模型中的安全等级是按照军事类型的安全密级进行划分的,由低级到高级依次为UC(UnClassified,无密级)、C(Confidential,秘密)、S(Secret,机密)、TS(Top Secret,顶级机密),等级越高说明该信息的安全要求越高。BLP模型是从军事类型的安全密级分类而来,我们就以军队中的例子来说明该模型。
例2-1 军队对应一个巨大的信息系统,涉及的信息种类很多,不同种类的信息对应不同安全等级的客体,因此客体信息就有了敏感级别,军队中不同职能的人员则对应不同职权等级的主体。在军事信息系统中,有些信息是可以公开的,例如一些假日休息和文艺活动安排信息,从军队司令员到普通战士都可以了解;有些信息只有相关的高级军官才可以知道,例如部队作战计划。因此,需要一个严谨的保密性策略进行信息保护,根据客体与主体不同的等级分类达到防止泄露未授权信息的目的。
这里仍然用s表示信息系统中的主体,如进程,用o表示信息系统中的客体,如数据和文件。主体s可以对客体o进行r(读)、w(写)、a(添加)、e(执行)、c(控制)等几种形式的访问。用l表示安全等级,l(s)表示主体s的安全密级,l(o)表示客体o的安全密级,不同的安全密级由li来表示,i=0,1,…,k-1,且li≤li+1。表2-1是该分类系统的一个实例描述。
表2-1 等级分类系统的一个实例描述
注:最高层是最敏感信息,敏感性向下依次递减。
BLP模型结合了强制型访问控制和自主型访问控制。作为实施强制型访问控制的依据,主体和客体均要求被赋予一定的安全等级。自主型访问控制中的访问策略或者权限是可以由系统中的超级用户或者客体对应的主体拥有者来改变的。主体对其拥有的客体,有权决定自己和他人对该客体的访问权限。从模型描述的条件可以看出,如果满足该模型的规则,那么主体对客体就具有了相应的自主读或写的访问权限,但要最终判断主体与客体之间的访问关系,还要考虑系统中是否存在强制型控制的约束。也就是说,该模型下的访问控制关系是强制型访问控制和自主型访问控制共同作用的结果,例2-3可以说明这一问题。
BLP模型的简单安全条件描述如下。
1)主体s读客体o,当且仅当l(o)≤l(s),且s对o具有自主读的权限。
这一条件使系统中的主体不可能读到安全密级更高的客体,这样就可以保证机密等级高的信息不会流向较低的等级,简称为“不向上读”。图2-2说明了BLP模型中的主体“不向上读”的这一重要原则。这一安全条件不足以防止较高安全密级的信息客体泄露给较低安全密级的主体。因此,保密性模型必须同时满足下面的第二个条件,也称为*-属性。
2)主体s写客体o,当且仅当l(s)≤l(o),且s对o具有自主写的权限。
如果一个较高密级的主体在自己的权限范围内将较高密级的机密信息复制到较低密级的文件中,那么无形中就降低了该机密信息的安全密级,使得原本没有资格获取该信息的主体可以读取到机密信息的内容,从而破坏了信息的保密性。为了防止这种情况发生,就需要遵守*-属性,简称为“不向下写”。图2-3说明了BLP模型中的主体“不向下写”这一重要原则。当主体不能向比自己等级低的文件中进行写操作时,以上情况就不会发生。这一条件明确地表明具有高安全密级的主体不能发送消息给较低安全密级的主体。
图2-2 BLP模型中的主体“不向上读”原则
图2-3 BLP模型中的主体“不向下写”原则
通过图2-2和图2-3可以清晰地看出,在BLP模型中无论是合法的读权限还是合法的写权限都会使系统中的信息流由较低的安全等级流向较高的安全等级。
在军事信息系统中对于敏感信息的访问,一般遵守“最小权限”“需要知道”的原则。前者是指在确定主体访问目标权限的时候,仅赋予该主体最少需要的许可权限。例如,访问者需要访问密级1的数据,就赋予他该密级的权限,不要给予他访问密级2数据的权限。后者是指主体只应该知道他工作所需的那些密级及该密级中所需的数据。例如,一个主体可能需要了解不同密级上的信息,但是每个密级上都需要明确他所需要知道的信息的范围。