访问控制之强制访问控制

目录

一、强制访问控制

二、多级安全思想

三、BLP模型

1.主客体安全属性

2.主体对客体的访问权限

3.安全访问规则

4.BLP模型中的可信主体

5.BLP模型的隐蔽通道问题

四、Biba模型

1.主客体安全属性

2.主体对客体的访问权限

3.安全访问规则

(1)非自主安全策略

(2)自主安全策略

4.Biba模型的不足之处

五、模块分析

1.强制访问控制与特洛伊木马防御

2.强制访问控制与自主访问控制的结合运用

3.BLP模型和Biba模型结合应用中存在的问题


一、强制访问控制

主体不能改变自身的或任何客体的安全属性,包括自己所拥有客体的安全属性;主体也不能将自己所拥有的客体访问权限,授予其他主体。在运行时,系统通过比较主、客体的安全属性,来决定是否允许主体以所请求方式来访问客体。而一旦系统判定某一主体不能访问某个客体时,那么任何人(包括客体的属主)也不能使他访问该客体。从某种意义上讲,这种访问控制是“强制”的。


二、多级安全思想

多级安全思想是军事安全策略的数学描述,是计算机能实现的形式主义。

军事安全策略的目的,是防止用户取得他不应该得到的密级较高的信息。在多级安全策略下,主、客体的安权属性一般都统称为安全级,它由两方面构成:

(1)保密级别:也叫敏感级别。例如,公开、秘密、机密和绝密等级别,在安全级中保密级别是线性排列的。例如:公开<秘密<机密<绝密;

(2)范畴集:表示该安全级涉及的领域,如人事处、财务处等。范畴集是互相独立的和无须的,两个范畴集之间的关系是包含、被包含或无关。


主、客体的安全级通常写成保密级别后随一范畴集的形式。例如,{机密:人事处、财务处、科技处}。两个安全级之间的比较,是通过一种名为“支配”的偏序关系来进行的,具有以下几种情形:
(1)安全级1支配安全级2:即安全级1的级别不小于安全级2的级别,安全级1的范畴集包含安全级2的范畴集。

(2)安全级1等于安全级2:即安全级1的级别等于安全级2的级别,安全级1的范畴集包含安全级2的范畴集,同时安全级2的范畴集包含安全级1的范畴集。

(3)安全级1与安全级2无关:即安全级1的级别不包含安全级2的级别,同时安全级2的范畴集不包含安全级1的范畴集。

例如,如果一个文件的安全级是{机密:NATO,NUCLEAR},用户的安全级为{绝密:NATO,NUCLEAR,CRYPTO},则该用户可以阅读这个文件,他的安全级别高于文件,且他的安全范畴集涵盖了文件的安全范畴集。而如果用户的安全级为{绝密:NATO,CRYPTO},则他不能阅读这个文件,因为其安全范畴集中少了NUCLEAR范畴。


三、BLP模型

BLP模型是Bell&LaPadula模型的简称,主要用于解决面向保密性需求的访问控制问题,是第一个经过严格数学证明的安全模型。BLP模型给出了符合军事安全策略的计算机操作规则,属于强制访问控制模型。BLP模型是最常用、也是最有名的一个多级安全模型,已实际应用于许多安全操作系统、安全数据库等安全信息的开发之中。

1.主客体安全属性

在BLP模型中,主体和客体均被赋予了相应的安全级别L=(C,S),其中:表示安全等级,S是类别集。安全等级从高到低分为4级:绝密(TS)、机密(S)、秘密(C)和非密(U),这里记它们的关系为TS>S>C>U。类别集依赖于应用环境,如它可由不同部门的标识组成。

对于两个安全级别L1=(C1,S1)与L2=(C2,S2),定义:

L1≥L2,当且仅当C1≥C2,S2⊆S1

L1>L2,当且仅当C1>C2,S2⊂S1

L1<L2,当且仅当C1<C2,S1⊂S2

L1≤L2,当且仅当C1≤C2,S1⊆S2

如果L1和L2的关系都不属于以上情况,则其不可比较。

在BLP模型中,客体的安全级别,反映了客体内容或功能的敏感性;主体的安全级别又称为许可授权,它反映了主体的最高安全级别,主体当前的安全级别不会高于其拥有的许可授权。

2.主体对客体的访问权限

在BLP模型中,主体对客体存在只读(Read Only)、添加(Append)、执行(Execute)和读写(Read-Write)四种访问权限。

3.安全访问规则

(1)符号约定

①三元组(s,o,m)表示主体s正以授权m访问访问客体o

②M表示访问矩阵,m=M(s,o)表示授权s以权限m访问客体o;

③f是主体或客体的安全级别函数,其定义为:

f:s∪o => L

(2)规则1:简单安全策略(Simple Security Property)

如果主体s对客体o有读写权限,则前者的安全级别一定不低于后者的安全级别。这一规则,可以形式化地表示为:Read or Write ∈ M(s,0)=>f(s)≥f(o)

这常被称为“下读”原则。

(3)规则2:星策略(Star Property)

如果一个主体s对客体o有Append权限,则后者的安全级别一定不低于前者;如果s对o有 Write权限,则它们的安全级别一定相等;如果s对o有Read 权限,则后者的安全级别一定不高于前者。这个规则可以形式化地表示为

Append∈M(s,0)=>f(s)≤f(o)

Write∈M(s,0)=>f(s)=f(o)

Read∈M(s,0)=>f(s)≥(o)

这常被称为“上写”原则。

(4)规则3:自主安全策略

当前正在执行的访问权限必须存在于访问矩阵M中。这个规则保证,主体对客体的权限也需要以自主授权为条件,它可以被形式化地表示为:(s,0,m)∈b =>m∈M(s,0)

4.BLP模型中的可信主体

BLP模型在军事和商业界的安全操作系统、安全文件系统和安全数据库系统中均得到了广泛的应用和实践。但多数安全系统的实践表明,在系统中严格实施 BLP模型是不实际的。在真实的系统中,用户的某个操作可能会违背星策略,但并不会破坏系统的安全性。例如,一个用户可能要从一个机密性文件中摘取一节非机密性的内容,并将它应用到另一个非机密性的文件中,这种操作在严格实施星策略的系统中是被禁止的。因此,为了保证系统的可用性,BLP模型引人可信主体的概念,这类主体是可信的,它们可以违背星策略,但是不会违背系统的安全性。

由于可信主体不受星策略约束,访问权限太大,不符合最小特权原则,所以在应用中,应对可信主体的操作权限和应用范围做进一步细化。例如,可以将操作系统的所有特权细分成一组细粒度的特权,这些特权分别组成若干个特权子集。再把这些特权子集赋予系统中的指定用户。这样,操作系统中就存在若干个特权用户,每一个特权用户都不能独自控制整个系统,这些特权用户共同完成系统的特权操作,且所有的特权用户操作都会被系统审计记录。

5.BLP模型的隐蔽通道问题

如果一个通信信道既不是设计用于通信的,也不是有意用于传递信息的,则称该通信信道为隐蔽通道。BLP模型允许“上写(write-up)””操作,而“上写”操作带来了潜在的隐蔽通道。下面举例分析。

假定一个系统允许“上写”操作,系统中的文件data 的安全级支配进程B的安全级,即进程B对文件data有强制的写权限,但没有强制的读权限。根据BLP模型,进程B可以写打开、关用文件data。因此,每当进程B为写而打开文件data时,总返回一个表示文件已成功打开的标志信息。下面可以着到,这个标志信息就是一个隐蔽通道,利用它可以将信息从绝密区城传到公开区域。


下图给出了绝密级进程A与公开进程B,协作利用这个隐蔽通道传递敏感信息的过程:

(1)进程A创建绝密信息文件data;

(2)进程B打开文件 control,并写入一个字节,内容为“0”或“1”。进程A一直监控文件control的长度,当它发现其变长时,则说明进程B已经做好了接收信息的准备,此时可以开始发送信息了。

(3)进程A改变文件data的DAC访问模式。进程A与进程B双方约定,若允许进程B写 data 文件,则表示进程A发送了一个二进制比特“1”;否则,表示进程A发送了二进制比特“0”。

(4)进程B试图以写方式打开文件data。若打开成功,则认为自己收到了比特位“1”;否则,认为自己收到了比特位“0”。

(5)进程B每接收一个二进制比特信息,则将其写入文件control。进程A则通过检查文件 control的长度是否发生变化,确定信息传递是否正确。

(6)反复执行以上的第2~5步动作,直到绝密信息全部从进程A传给进程B。


四、Biba模型

Biba模型是Biba等人于1977年提出,其目的是保护数据的完整性。它对数据读/写实施了专门的操作策略。Biba模型在定义主、客体安全级别的基础上,更明确地将访问策略划分为非自主策略和自主策略两类,对每类给出了多个策略。下面介绍Biba模型中的各个要素。

1.主客体安全属性

在Biba模型中,每个主体和客体都被分配一个完整性级别(IntegrityLevel)。类似于BLP模型,完整性级别用L=(C,S)表示,其中:C为完整性等级,S是类别集。但这里,完整性等级从高到低分为3级:关键级(Critical,C),非常重要(Very Important,VI)和重要(Important,I),它们的关系为C>VI>I。类别集的概念与BLP模型中的类似,如它也可由不同部门的标识组成。不同完整性级别之间的比较方法,与BLP模型中的安全级别的比较方法相同。

2.主体对客体的访问权限

在Biba模型中,主体对客体的主要访间方式有:修改(modify)、调用(invoke)和观察(observe)等,它们的含义如下:

(1)modify:向客体中写信息。类似其他模型的“写”访问方式。

(2)invoke:invoke操作仅能用于主体,若两个主体间有invoke权限,则允许这两个主体相互通信。

(3)observe:从客体中读信息,类似于其他模型中的“读”访同方式。

3.安全访问规则

Biba模型所定义的不是单个安全策略,而是一族安全策略。每种安全策略采用不同的访问规则来保证信息的完整性。Biba模型的安全策略可以分为两大类:非自主安全策略与自主安全策略。


(1)非自主安全策略

非自主安全策略基于主体和客体各自的安全级别,确定主体对客体的访问方式。Biba模型中的非自主安全策略有五个:严格完整性策略、针对主体的下限标记策略、针对于客体的下限标记策略、下限标记完整性审计策略和环策略。

①严格完整性策略(Strict Integrity Policy)

·简单完整性条件(Simple Integrity Condition):主体能够对客体进行observe访问,仅当客体的完整性级别支配主体的完整性级别。

·完整性星规则(Integrity * -Property):主体能够对客体进行modify访问,仅当主体的完整性级别支配客体的完整性级别。

·调用规则(Invocation Property):一个主体能够对另一个主体进行invoke访问,仅当第一个主体的完整性级别支配第二个主体的完整性级别。

严格完整性策略可总结为两个基本规则:“不下读(No Read Down)”和“不上写(NoWrite Up)”。严格完整性策略防止信息从低完整性级别客体流向高完整性级别或不可比完整性级别,保证信息流仅是observe和modify访问的结果。

②针对主体的下限标记策略(Low Watermark Policy for Subjects)

·主体能够对任何客体进行observe访问。但是,当主体执行了对客体的observe操作之后,主体的完整性级别被置于执行访问之前,主体和客体的完整性级别中的较小者。

·主体能够对客体进行modify访问,仅当此主体的完整性级别支配该客体的完整性级别。

·一个主体能够对另一个主体进行invoke访问,仅当第一个主体的完整性级别支配第二个主体的完整性级别。

针对主体的下限标记策略是动态的,因为主体在对具有较低或不可比的完整性级别的客体执行observe操作后,会降低本身的完整性级别。此策略的主要缺点是,对系统的访问可能要依赖提出访问要求的顺序。因为主体在对某些持有较低或不相容的完整性级别的客体执行observe操作后,会降低自身的完整性级别,这就有可能减少此主体可访问的客体集,使某些原来对主体说来是可以访回的客体,在执行observe操作后变成不可访问的。这样,在observe操作后执行的某些modify或invoke操作会由手相应的客体变成不可访向的而不能执行。

③针对于客体的下限标记策略(Low Watermark Policy for Objects)

·主体能够对客休进行observe访问,仅当客体的完整性级别支配主体的完整性级别。

·主体能够对任何客休进行modify访问。但是,当主体执行了对客体的modify操作后,客休的完整性级别被置于执行访问前,主体和客体的完整性级别中的较小者。

·一个主体能够对另一个主体进行invoke访问,仅当第一个主体的完整性级别亥配第二个主体的完整性级别。

这一安全策略也是动态的,因为被modify的客体的完整性级别有可能改变。此策略的主要缺点,是允许不恰当的modify访问降低客体的完整性级别,而且信息由高完整性级别变为低完整性级别后也是不能恢复的。

④下限标记完整性审计策略(Low Watermark Integrity Audit Policy)

·主体能够对客体进行observe访问,仅当客体的完整性级别支配主体的完整性级别。

·主体能够对任何客体进行modify访问。但是,如果主体modify了一个具有更高或不可比完整性级别的客体,该操作将被审计。

·一个主体能够对另一个主体进行invoke访问,仅当第一个主体的完整性级别支配第二个主体的完整性级别。

这一策略是针对客体的下限标记策略的一个变种。只是,在此策略中,客体的完整性级别是固定的。像前一个策略一样,这一策略并没有防止对信息的不恰当的modify,只是对这访问进行审计。

⑤环策略(Ring Policy)

·主体对具有任何完整性级别的客体均能进行observe访问。

·主体能够对客体进行modify访问,仅当主体的完整性级别支配客体的完整性级别。

·一个主体能够对另一个主体进行invoke访问,仅当第一个主体的完整性级别支配第二个主体的完整性级别。

这一策略防止主体modify具有更高或不可比完整性级别的客体。然而,由于observe访同是非受限的,仍可能发生不恰当的modify操作。如一个具有高完整性级别的主体能够observe一个具有较低完整性级别的客体,然后modify具有自己安全级别的客体,这样信息就从低完整性级别流向高或不可比完整性级别。为了避免这种情况,主体在使用来自低完整性级别客体的数据时要十分小心。

(2)自主安全策略

①访问控制表(Access Control List):对每个客体分配一个访问控制列表,指明能够访问此客体的主体和每个主体能够对此客体执行的访问方式。客体的访问控制列表可以被对此客体持有modify访问权限的主体修改。

②客体层次结构(Object Hierarchy):模型将客体组织成层次结构,此层次结构是一棵带根的树。一个客体的先驱节点是从此客体节点到根的路径上的节点。若主体要访问客体,则必须拥有对此客体的所有先驱节点的observe访问权限。

③环(Ring):对每个主体分配一个权限属性,称为环。环用数值表示,环的值越小,表示其权限越高。此策略的访问规则如下:

·仅在环允许的范围内,主体才能对客体进行observe访问。

·仅在环允许的范围内,主体才能对客体进行modify访问。

·一个主体仅在环允许的范围内,能够对另一个具有更高权限的主体进行invoke访问。

·主体能够对任何具有较低或相同权限的主体进行invoke访问。

4.Biba模型的不足之处

(1)完整标签确定的困难性。由于BLP机密性策略可以与政府分级机制完美结合,所以很容易确定机密性标签的分级和范畴,但是对于完整性的分级和分类一直没有相应的标准予以支持。

(2)Biba模型的主要目的,是保护数据免受非授权用户的恶意修改,同时其认为内部完整性威胁应该通过程序验证来解决,但在该模型中并没有包括这个要求,因此Biba模型在有效保护数据一致性方面是不充分的。

五、模块分析

1.强制访问控制与特洛伊木马防御

防止特洛伊木马侵入系统是极端困难的,如果不依赖于一些强制手段,想避免特洛伊木马的破坏是不可能的。解决特洛伊木马的一个有效方法是使用强制访问控制机制。在强制访问控制的情况下,对于违反强制访问控制的特洛伊木马,可以防止它取走信息。例如,在多级安全系统中,其特性能阻止正在机密安全级上运行的特洛伊木马进程把机密信息写入一个公开的文件里,因为用机密进程写入的每一信息的安全级必须至少是机密级的。例如,一个公司对系统中的信息指定强制存取范畴,只有该公司的雇员才可能进入这个范畴。如果它的一个雇员使用了特洛伊木马,他不可能将该公司的信息传递到这个范畴以外的地方去,但在这个范畴里,信息可以在各用户间自由传递。

2.强制访问控制与自主访问控制的结合运用

强制访问控制和自主访问控制是两种不同类型的存取控制机制,它们常结合起来使用。仅当主体能够同时通过自主访问控制和强制访问控制检查时,它才能访问一个客体。用户使用自主访问控制防止其他用户非法人侵自己的文件,强制访问控制则作为更强有力的安全保护方式,可以防止用户有意识地或因误操作而导致安全问题。

3.BLP模型和Biba模型结合应用中存在的问题

由于许多应用的内在复杂性,在结合应用Biba模型和BLP模型时,人们不得不通过设置更多的范畴来满足这些复杂应用在机密性和完整性方面的需求,而这些不同性质的范畴在同时满足安全性和完整性目标方面是难以配合使用的,特别当保密性和完整性都受到充分的重视后,就很容易出现进程不能访问任何数据的局面。

相关推荐

  1. Nginx访问控制

    2024-07-18 11:10:05       50 阅读
  2. ACL访问控制列表

    2024-07-18 11:10:05       51 阅读
  3. odoo字段访问控制

    2024-07-18 11:10:05       37 阅读
  4. ACL访问控制列表

    2024-07-18 11:10:05       26 阅读
  5. nginx访问控制

    2024-07-18 11:10:05       35 阅读
  6. nginx访问控制

    2024-07-18 11:10:05       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 11:10:05       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 11:10:05       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 11:10:05       62 阅读
  4. Python语言-面向对象

    2024-07-18 11:10:05       72 阅读

热门阅读

  1. 手写实现简单Redis命令客户端功能

    2024-07-18 11:10:05       18 阅读
  2. Leetcode 238. 除自身以外数组的乘积

    2024-07-18 11:10:05       23 阅读
  3. qt listview 列表文字显示不全,如何用悬浮显示?

    2024-07-18 11:10:05       18 阅读
  4. PF4J+SpringBoot

    2024-07-18 11:10:05       19 阅读
  5. CAS的原理

    2024-07-18 11:10:05       27 阅读
  6. P5717 【深基3.习8】三角形分类

    2024-07-18 11:10:05       21 阅读
  7. 【数据平台-dataworks】-问题总结

    2024-07-18 11:10:05       23 阅读
  8. spring中的依赖注入

    2024-07-18 11:10:05       21 阅读
  9. 力扣212题:单词搜索 II

    2024-07-18 11:10:05       21 阅读