信息的保密性又称机密性,信息的保密性要求是指防止信息泄露给未授权的用户。保密性模型与策略是对信息的保密性进行保护,防止信息的非授权泄露,此时对于信息的完整性保护已经成为次要目标。下面介绍保密性策略以及典型的保密性模型。
保密性策略主要应用在军事领域。例如,军事消息的内容对保密性的要求很高,消息的安全性是建立在消息的保密性基础上的,有一些机密信息宁可牺牲其完整性,也要保证不被敌方获取,一旦消息被泄露给敌方,就会造成严重后果。保密性的主要目标是防止涉及军方、政府或个人隐私等方面信息泄露的发生。例如,盗取政府机密、截获作战计划等行为都是对信息的保密性进行破坏。
在军事环境中,为了有效保证信息的保密性,对于信息和用户的安全等级进行了划分,用户对信息的访问权限严格遵循这些等级之间的访问关系,最为典型的保密性策略是BLP(Bell-LaPadula)模型。
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 的安全密级,不同的安全密级由 l i 来表示, i =0,1,…, k -1,且 l i ≤ l i +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数据的权限。后者是指主体只应该知道他工作所需的那些密级及该密级中所需的数据。例如,一个主体可能需要了解不同密级上的信息,但是每个密级上都需要明确他所需要知道的信息的范围。
Lattice模型将BLP模型的每一个安全密级加入了相应的安全类别,从而使BLP模型得到了拓展。每一个类别包含了描述同一类信息的一组客体,一个客体可以属于多个类别。Lattice模型中主体与客体之间访问的安全等级关系与BLP模型相同,但考虑的因素不仅仅局限于主体与客体的安全级别,而是从安全级别与类别两方面进行考虑。例2-2就介绍了Lattice模型关于客体类别的例子。如果主体对客体有访问权限,那么主体能够访问的类别中一定包含该客体,否则就不能合法访问了。
例2-2 系统中可访问的客体类别共有四个,分别是Asia、Europe、America和Africa。那么某个主体可访问的类别集合就是下列集合之一:空集,{Asia},{Europe},{America},{Africa},{Asia,Europe},{Asia,America},{Asia,Africa},{Europe,America},{Eu-rope,Africa},{America,Africa},{Asia,Europe,America},{Asia,Europe,Africa},{Asia,America,Africa},{Europe,America,Africa},{Asia,Europe,America,Africa}。这些类别集合在操作(子集关系)下形成一个格(如图2-4所示),其中,图中的连线表示符号“⊆”的关系。
图2-4 类别关系
针对信息系统对信息的控制要求,可以利用主体的密级和客体的类别二元组来描述这种多级安全的需求。每个安全密级和类别可以形成一个安全等级,用二元组可以表示为(密级,{类别})。其中,密级与之前提到的四个敏感密级对应,类别则是针对系统中的信息分类而言,表示信息的范围。例如,如果某公司中的文件类别是人事文件、项目文件、一般文件,那么某人可以访问的类别集合就是以下集合之一:空集、{人事文件}、{项目文件}、{一般文件}、{人事文件、项目文件}、{人事文件、一般文件}、{项目文件、一般文件}、{人事文件、项目文件、一般文件}。公司人员Alice可能属于等级(秘密,{项目文件}),Bob属于等级(机密,{项目文件、人事文件}),显然,Bob比Alice的密级高,并且他们所能访问的文件类别也不同。
安全等级改变了访问的方式。在定义安全条件时,不能直接比较主体和客体的安全密级,还要根据“需要知道”原则,考虑主体访问的客体类别集合。因此,需要引入“支配”的概念。
安全等级(L,C)支配安全等级(L′,C′),当且仅当L′≤L且C′⊆C。
用C( s )表示主体 s 的类别集合,用C( o )表示客体 o 的类别集合。Bell-LaPadula模型的简单安全条件及*-属性可以改进为:主体 s 读客体 o ,当且仅当 s 支配 o ,且 s 对 o 具有自主读的权限;主体 s 写客体 o ,当且仅当 o 支配 s ,且 s 对 o 具有自主写的权限。
BLP模型形式化地描述了系统状态和状态间转换的规则,定义了安全的保密性的概念,并制定了一组安全特性,以此对系统状态和状态间转换规则进行限制和约束,使得对于一个系统,如果它的初始状态是安全的,并且所经过的一系列的转换规则也是安全的,那么可以判定该系统是安全的。
BLP模型中的自主安全特性是指系统状态的每一次存取操作都是由访问控制矩阵限定的。也就是说,如果系统中的主体对客体的当前访问模式包含在访问控制矩阵中,则授权此次访问。
根据以上介绍的BLP模型的几条属性可以归纳出如下的基本安全定理。
定理2.1 假设一个系统的初始状态 θ 0 是安全的,经过一系列的状态转换,如果状态转换集合中的每个元素都遵守以上的安全条件及*-属性,那么对于转换后的系统,每个状态 θ i 都是安全的( i ≥0)。
这个安全定理在检验信息系统的安全性时起到了很大的作用。例如,已知一个系统的初始状态是安全的,只要能证明后续的转换状态都是安全的,那么这个系统一定一直保持着安全性。
当然,在实际应用中,可能较高等级的主体会有与较低等级的主体进行直接通信的需求。例如,一个处在较高等级的主体需要写信息到一个较低等级的客体中去,以便将该信息传达给较低等级的主体。这一操作违反了上面介绍的关于BLP模型的*-属性。BLP模型中有以下两种方法可以满足这一类型的通信需求。
· 临时降低主体的安全等级。一个主体可以拥有一个最高安全等级和一个当前安全等级,最高安全等级必须支配当前安全等级。一个主体的安全等级可以从最高安全等级降低下来,以满足与较低安全等级的主体进行通信的需求。
· 确定一些可信的主体,暂时违反*-属性。系统中不可信的主体必须严格遵守安全策略,一些可以确认为值得信赖的主体可以在确保不破坏系统安全性的情况下,暂时违反*-属性。
例2-3 用BLP策略模型中的强制访问控制关系和自主访问控制关系来判断主体与客体之间的关系,只有同时满足这两类访问控制关系的访问权限才是合法的。利用表2-1中实体安全等级的状态,假设一个信息系统中有三个访问主体,分别是高级人事主管、项目经理和宣传人员,有两个文件,分别是文件1和文件2,安全密级分别是:高级人事主管-顶级机密级、项目经理-机密级、宣传人员-秘密级、文件1-机密级、文件2-秘密级(强制访问控制关系如图2-5所示)。现在系统赋予这些主体一些访问权限(自主访问控制关系如表2-2所示)。根据BLP策略模型依次判断下列访问权限是否合法:高级人事主管对文件1的读权限;高级人事主管对文件2的写权限;项目经理对文件2的读权限;项目经理对文件2的写权限;宣传人员对文件1的读权限。
图2-5 强制访问控制关系
表2-2 自主访问控制关系
下面根据BLP模型来对这五个权限依次进行判断。
· 判断高级人事主管对文件1的读权限:根据已知条件,高级人事主管的密级高于文件1的密级,且高级人事主管对文件1具有读的权限,因此该权限是合法的,应该被允许。
· 判断高级人事主管对文件2的写权限:由于不满足高级人事主管的密级小于等于文件2的密级这一安全条件,因此该权限非法,应该被禁止。
· 判断项目经理对文件2的读权限:虽然满足项目经理的密级大于等于文件2的密级,但是访问矩阵中没有此权限,因此权限是非法的,应该被禁止。
· 判断项目经理对文件2的写权限:由于不满足项目经理的密级小于等于文件2的密级,因此该权限是非法的,应该被禁止。
· 判断宣传人员对文件1的读权限:由于不满足宣传人员的密级大于等于文件1的密级,因此权限是非法的,应该被禁止。
这个例子充分表现了BLP安全模型中强制型控制访问和自主型控制访问的区别与作用。整个信息系统的访问控制是综合了这两种访问控制类型的结果,从而能够对权限的合法性做出相应的判断。
这里需要引入一个重要的概念——静态原则(The Tranquility Principle)。静态原则是指主体和客体的安全等级在初始化之后就不会改变了。客体安全等级的变化会给信息的保密性带来影响。假设较低安全等级的客体提高了安全等级,那么原来可以访问该客体的主体就失去了访问该客体的权限,同样,较高安全等级的客体降低了安全等级,那么原来不能访问该客体的主体也可以访问该客体。因此,静态原则是保证信息保密性的一个必要措施。静态原则有以下两种形式。
· 强静态原则,是指安全等级在系统的整个生命周期中不改变。强静态原则的优点是没有安全等级的变化,这样就不会产生违反安全条件的可能性,缺点是不够灵活,在实际应用中,这样的原则太过严格。
· 弱静态原则,是指安全等级在不违反已给定的安全策略的情况下是可以改变的。弱静态原则对于安全等级的变动要求更加灵活,如果用户要求这种状态转换,那么在不违反安全策略的情况下,应当允许这种状态转换。
由于静态原则突出了模型中的信任假设,因此在BLP模型中有着十分重要的作用,在应用过程中应该受到特别的关注。
BLP模型是第一个符合军事安全策略的多级安全的模型。该模型的理论思想对于后续其他的安全模型有着重大的影响,并且在一些信息安全系统的设计中得到应用。BLP模型从本质上讲是一种基于安全等级的存取控制模型,它以主体对客体的存取安全级函数构成存取控制权限矩阵来实现主体对客体的访问。BLP模型自从被提出以来,就不断地引发人们对该模型的讨论。人们一般认为该模型的局限性主要有以下几点。
· 缺乏对信息的完整性保护。实际上这是BLP模型的一个特征而不是缺陷。对于一个安全模型来说,限制它的目标是十分合理的。也就是说,该模型的目标只专注于信息的保密性,这正是BLP模型的特点之一。
· 包含隐信道。隐信道是系统中不受安全策略控制的、违反安全策略的信息泄露途径。在BLP模型中,信息是不能直接由高等级向低等级流动的,但实际情况是可以利用访问控制机制本身构造一个隐信道来破坏这一原则。BLP模型不能防止或解决隐信道问题,在特殊环境下的实际应用中应尽量避免这一问题的产生。例如,如果低等级的主体可以看见高等级的客体的名字,虽然直接访问客体的内容是被拒绝的,但是它可以通过隐信道非法得到想访问的内容。因此,仅仅隐藏客体的内容是远远不够的,往往还需要隐藏客体本身的存在。
·“向上写”会造成应答盲区。当一个低安全等级的进程向一个高安全等级的进程发送一段数据后,按照BLP模型中“不能向下写”的规则,高等级进程无法向低等级进程发送关于操作成功的回应,相应的低等级进程无法知道它向高等级进程发出的消息是否正确到达。
· 时域安全性。不同主体访问同一客体时会出现时域上的重叠,有时会导致信息的泄露。
· 安全等级定义的完备性。主体的安全等级是由安全密级和类别组成的二元组。在创建主体时就确定了该主体当前的安全等级,并且在主体的整个生命周期内固定不变。这种方法过于严格,缺乏灵活性。
了解了BLP模型以及它的局限性,在实际的应用中就可以针对安全目标来制定适合具体环境的安全模型,弥补原始模型中的一些漏洞,改进原始模型在某些方面的不足。