[音乐]
[音乐]
同学们好, 今天我们讲这个经典的模型,BLP 模型。
这是一个机密性的安全模型,BLP 模型呢,是很早的时候在73年的时候,由
Bell 和 LaPadula 在 做这个系统,做 Mantis 系统的时候,提出的一个最早的一个安全模型。
这个模型当时也称为多级安全模型,主要是 针对这个系统里面的机密性的一些安全需求,所建立的这样一套模型。
在这个模型里面,它采用的是状态机的方式来进行描述和刻画的。
比如说,它给出了这个系统的安全状态还有安全状态的转换规则。
并且制定了相关的一些约束的规则和相关的一些公理。
那么 BLP 模型本身在这个安全策略方面,它是有两种策略。
第一个策略呢,是关于这个自主安全策略。
自主安全策略我们前面提到过, 它主要是采用的是一个主体要去访问一个客体的话,
是由这个主体,这个客体的所有者去决定
什么样的主体可以对它进行访问,这是由这个,比如说我们前面提到过的 9
bitway 的模式和这个 访问控制列表的模式来实现的这样的一个自主访问控制的方式。
当然这边我们更多的指的是,这个,访问控制矩阵的方式来实现的。
另外呢,就是关于这个强制安全策略这一块儿,在这个 BLP 的模型里面也体现了。
它主要体现的就是那个,前面我们提到过的多级安全的思想。
就是说关于这个简单安全属性和新属性,比如说基于主体和客体的安全级别。
来决定基于主客体档的安全级别,以及这个相关的这个 制定的读写的规则,来决定一个主体能否去访问一个客体。
我们先来看一下这个模型里面很重要的就是模型元素这一部分。
比如说建模,我们首先要知道这个系统里面跟模型相关的一些元素主要有哪些。
然后我们再来确定这个状态机模型所需要做的 几件工作,第一个就是要去确定这个安全状态是什么。
第二个要确定这个安全的这个条件是什么,第三就是要定义一些相关的安全操作和操作规则。
最后呢,就是要去证明,那么也就要制定一些定理,我们要去证明,咱们所定义的这些规则
它是满足安全条件的,另外也要去定义这个初始状态是满足安全条件的。
那么这样之后我们才能说我们这个模型是安全的,是符合这个安全性要求的。
模型元素呢,我们看一下这个 BLP 的模型的主要元素有一些,这个主体
S ,这是主体集合,对于系统里面就是主要是进程了。
第二是有一个 S' , 就是主体呢,它分成两类,一个是
S', S' 代表的是所有受新特性约束的这样的主体。
那么也就说新特性它是必须要求满足的。
那么新特性大家知道,就不可以下写这样一个规则。
St 呢,是关于这个可信的主体,那么这个主体也就被列为这个
不受新特性约束的主体,也称为可信主体。
那么 S' + St 当然就等于 S。
另外呢就是客体集合 O ,也就是我们所关注的安全相关的一些客体。
C 呢是定义这个多级安全或是说这个
BLP 的这个强制策略所需要的就是一个范畴
密级,就是密级,那么密级之间是满足这个线性关系的。
K 呢,是我们的这个范畴,就是我们的范畴,就是系统里面定义呢
跟安全级我们知道是密级和范畴集合,对吧,那么范畴的一个集合。
L 呢是代表的这个一个这个安全级,安全级。
就是安全级是有一个密级和一个范畴集合所构成。
那么 A 代表的是这个访问的模式,访问模式跟自主访问控制策略有关,跟强制访问控制策略都有关。
它主要涉及到这个模式,读,写,执行和追加。
另外呢,在这个模型元素里面还给出了一个就是 RA。
这 RA 代表的是这个请求的模式,就是在这个操作里面我们会给
就是说,用户会提出什么样的一个操作请求,操作请求。
这么它呢在这里分成了这个 g 类和 r 类,g 类和 r 类。
那么 g 类呢会被定为是 get 和这个
give 类,那么 r 呢定义的是 release 和 rescind 类。
我们来看一下这两个类型的请求。
get 类里头有一种叫这个 get-read ,就是要 获取去检查自己是否有读的权限,读的权限。
那么当然就是一个主体,它是进程 ID 就是 process ID 是代表这个主体。
那么这个 segment ID 呢代表的是它要访问的那个数据段。
那么 read 呢,是它请求的这个模式。
那么 get-read 呢就是说这个进程去请求,对这个客体去请求。
看它有没有这个读的权限。
那么 get-write-only 呢,是请求它是否对这个数据段 能够获得这个写的,只写的权限。
那么 get-execute 呢是获得它是不是对这个数据段,当然这个数据段可能就是一个可执行代码了,
它是否具有执行的权限。
那么还有一种 是 get-read-write 这个就是又读又写,这是通常在 Linux
系统里面 我们所说的那个写,就是 W 的那个写,其实是读和写的这个两个权限的
统一表示,所以的话,这个代表的是这样一个同时想获得读和写的权限。
此外呢,就是关于 g 类的,刚才我们看到的是,这一块儿,就是所有
get-read 这样的一个操作功能,此外呢还有关于 r 类的。
r 类的话,其实刚才提到了有这个 release 类的,这个 release
类的这个操作呢, 也同样涉及到读,写,执行这样三类操作。
那么事实上,它表示的是同样是这个进程 ID 对这个数据段去请求,
去取消它对这个数据段的这个读,写,执行权限。
相当于是,原来是我可以让你可以去读和写和执行,现在 我是要取消掉这样一个权限,让它不再发挥这样一个作用。
或释放掉这样一个权限。
那么 give 类呢,是涉及到两个主体,就是说一个主体可能要把
自己的一个什么样的权限要授予另一个主体,对某一个客体的权限授予另一个主体。
这个是 give 类的,就是相当于这里,就是这个 requesting
的这 process ID 去把它的权限授予这个 receiving 的这 process ID。
去对这个,这个主体去获得这个读,执行或者是写的这样一个属性,权限。
此外呢,还有一个叫 rescind。
rescind 这个操作呢,同样也涉及到两个主体。
就是,刚才我们看到这个,前面提到的这个 give
是 把一个权限呢是授予另一个主体,同样它可以收回,就是说一个主体可以收回另一个主体
曾经拥有的这个读,写,执行权限。
所以这一块儿强调的是,这个请求的主体去吊销 或是说去撤销,对这个就是曾经给予
这个 receive ID 对这个数据段的一个读,写,执行的权限。
OK 这就是刚才我们所看到的这个 g 类和 r 类的这样的一些请求。
啊 g 类包括这个就是 get 和 give 类。
那么 r 类包括这个 release 和这个 rescind 这样几个操作函数。
另外呢,对于这个 BLP 模型,它还给出了这个请求的一个
规范,就是 R ,这个请求规范呢,它规定有五个模式。
这五个模式呢,我们看一下它都约定了它的这个每一种请求的这个参数的形式。
比如说对于第一类请求,它是要求, 必须有一个 RA
的请求,就前面我们的 g 类或 r 类的这样的一个请求。
那么它携带的参数当然是一个主体请求对一个客体拥有一个什么样的访问模式。
那么 R(2) 类的呢,代表的是两个主体之间,就相当于我们前面看到的 give 和这 rescind 类的这样的操作。
它会涉及到两个主体,第三类这个就是请求模式是 R(3)的。
这 R(3)的话,是在创建一个新的客体的时候,所用到的一个请求格式。
另外呢就是,还有这个创建这个新的客体,就是要删除一个客体所用到的一个请求模式,就是 R(4)。
那么 R(5)代表的是,就是请求改变这个主客体安全级的时候,
所用到的一个这样的一个格式,我们来看一下它的这个命令,这个函数的功能 描述。
这是创建一个客体的这个 功能描述,那么在创建客体的时候,要考虑给它赋予新的安全级别。
这是一个删除客体的这样的一个模式,它只要指定这个客体的名称就可以。
那么这是要改变一个主体的安全级别。
所以它要涉及到这个目标的安全级别,这样一个参数。
那么这个是要改变一个客体的安全级别,那么同样也要涉及到这个客体的一个安全级别这- 个参数。
这就是关于这个 R 这个集合。
就是请求模式它做了一个规范。
另外呢,在这个,我们再看到这个 D。
D 是在关于决策,因为我们在这个 BLP 模型里面,主要是对访问请求做一个决定。
是同意还是不同意,对吧,所以这个 D 代表的就是 结论。
那么这个结论有四种,一种是 yes 就是允许, no 呢,就是拒绝,error
呢是表示你的参数 出了错误,可能哪个地方出错了。
那么"问号"呢,就是对于你这个请求模式,我们不能够 就是不能够理解,比如说就是不在我这个规范的五种
请求模式之内,那么这个就会是"问号"。
此外呢,就是跟 我们这模型相关的其他的一些我们来看一下,一个是 T 了,就是时间。
就是有的时候我们需要考虑一下这个时间因素。
F 呢代表的是这个主客体的安全级别的这个
函数,就是访问类的一个函数,这个函数呢可以用来表达这个主体, 还有客体的。
主体呢有两种安全级别的获取,一个是主体的当前安全级。
还有一个是主体的最大安全级,那么 O 呢是表示这个客体的安全级,通
f(o),f(s),f(c)来分别来表示 获得它们的相关的安全级别,那么
X 代表的是这个系统里面的 这个请求序列,Y
代表的是决策序列,那么 M 代表 的是访问控制矩阵,就是我们说了这个
BLP 模型是包括自主访问控制的,所有它有一个访问控制矩阵。
下面我们就看这个图里面也给出了就是关于这个 V。
这个 V 事实上就是我们后面会重点讲到的就是说,它是这个系统的安全状态。
安全状态,因为我们知道这个 BLP 模型是由两部分组成,自主策略和强制策略。
所以它的安全状态主要就是两部分,一个是那个矩阵, 一个呢就是我们多级安全的相关的这个上下文。
那么Z呢,是代表的这个系统的这个状态序列,因为我们是状态机嘛,所以关心的是这个系统的 相关的状态序列,用 V 来表示。
好,这是关于我们 BLP 模型的前面的一些铺垫的一些工作。
那么后面我们会讲到这个模型的具体的 相关的这个建立的方法。
这次课就讲到这儿,谢谢。