第三章 BLP模型(Bell-La Padula模型)
是对安全策略形式化的第一个数学模型,是一个状态机模型,用状态变量表示系统的安全状态,用状态转换规则来描述系统的变化过程。
一、模型的基本元素
模型定义了如下的集合:
S={s1,s2,…,sn} 主体的集合,主体:用户或代表用户的进程,能使信息流动的实体。
O={o1,o2,…,om} 客体的集合,客体:文件、程序、存贮器段等。(主体也看作客体S O)
C={c1,c2,…,cq} 主体或客体的密级(元素之间呈全序关系),c1≤c2≤…≤cq.
K={k1,k2,…,kr} 部门或类别的集合
A={r,w,e,a,c} 访问属性集,其中,r:只读;w:读写;e:执行;a:添加(只写); c:控制。
RA={g,r,c,d} 请求元素集
g:get(得到),give(赋予)
r:release(释放),rescind(撤销)
c:change(改变客体的安全级),create(创建客体)
d:delete(删除客体)
D={yes,no,error,?} 判断集(结果集),其中
yes:请求被执行;
no: 请求被拒绝;
error:系统出错,有多个规则适合于这一请求;
?: 请求出错,规则不适用于这一请求。
μ={M1,M2,…,Mp} 访问矩阵集,其中元素Mk是一n×m的矩阵,Mk的元素Mij A。
F=CS×CO×(PK)S×(PK)O,其中,
CS={f1|f1:S→C} f1给出每一主体的密级;
CO={f2|f2:O→C} f2给出每一客体的密级;
(PK)S={f3|f3:S→PK} f3给出每一主体的部门集;
(PK)O={f4|f4:O→PK} f4给出每一客体的部门集。
其中,PK表示K的幂集(PK=2K)。
F的元素记作f=(f1,f2,f3,f4),给出在某状态下每一主体的密级和部门集,每一客体的密级和部门集,即主体的许可证级(f1,f3),客体的安全级(f2,f4)。
二、系统状态
V=P(S×O×A)×μ×F是状态的集合,状态v=(b,M,f)用有序三元组表示,其中
b S×O×A,是当前访问集。
M是访问矩阵,它的第i行,第j列的元素Mij A表示在当前状态下,主体Si对客体Oj所拥有的访问权限。
f=(f1,f2,f3,f4),其中,f1(s)和f3(s)分别表示主体s的密级和部门集,f2(s)和f4(s)分别表示客体O的密级和部门集。
三、安全特性
⑴自主安全性
状态v=(b,M,f)满足自主安全性,当且仅当对所有的(si,oj,x)∈b,有x∈Mij。
⑵简单安全性
状态v=(b,M,f)满足简单安全性,当且仅当对所有的(s,o,x)∈b,有
(i)x=e或x=a或x=c
或(ii) (x=r或x=w)且(f1(s)≥f2(o),f3(s) f4(o))。
S |
O |
e,c,a |
S (高) |
O (低) |
r,w |
⑶*—性质
S |
O1 (高) |
O2 (低) |
a |
r |
S |
O1 (高) |
O2 (低) |
a |
w |
解释:
S |
O1 (高) |
O2 (低) |
w |
r |
S |
O1 |
O2 |
w |
w |
(级别) |
(级别) |
相等 |
一个状态v如果满足上述三条性质,那么v才是安全状态。
四、请求
R=S+×RA×S+×O×X 请求集(不是请求元素集),它的元素是一个完整的请求。其中S+=S { },X=A { } F。
R中的元素是一个五元组,代表一次请求或一个操作。
T={1,2,…,t,…} 离散时刻的集合(标识)。用作请求序列,结果序列和状态序列的下标;
X=RT={x|x:T→R},其中元素x可表示为x=x1x2x3…xt…是一个请求序列,每一时刻有一请求,构成一个请求序列,因此X是请求序列的集合;
Y=DT={y|y:T→D},其中元素y=y1y2y3…yt…是一个结果序列,每一时刻的请求导致一个判断(或结果),构成一个结果序列,Y是结果序列的集合;
Z=VT={z|z:T→V},其中元素z=z1z2z3…zt…是一个状态序列,每一zt∈V,表示时刻t时系统的状态。Z是状态序列的集合
五、状态转换规则
系统状态的转换由一组规则定义,一个规则P定义为:R×V→D×V。其中:R是请求集,D为判断集,V是状态集。
也就是说,P规定对于给定的一个状态和一个请求,系统产生一个判断和下一个状态,只有当D的取值为“yes”时,请求才被执行,状态才发生转换。
BLP模型定义了十条基本规则(后来又有所扩充):
规则1~规则4分别用于主体请求对客体的读(r),添加(a),执行(e)和写(w)的访问权。(φ,g,si,oj,r), (φ,g,si,oj,a), (φ,g,si,oj,e), (φ,g,si,oj,w)。
规则5用于主体释放它对某客体的访问权(包括r,或a,或e,或w)。(φ,r,si,oj,x)
规则6和规则7分别用于一个主体授予和撤销另一个主体对某客体的访问权。
(sλ,g,si,oj,r) (sλ,r,si,oj,r)
规则8用于改变静止客体的密级和类别集。(φ,c,φ,oj,f*)
规则9和规则10分别用于创建和删除(使之成为静止)一个客体。
(φ,c,sj, oj,e) (φ,d, si,oj,φ)
(φ,c, si,oj,φ)
规则1:主体si请求得到对客体oj的r访问权
get-read P1(Rk,v)
if σ1 φ or γ g or x r or σ2=φ then
P1(RK,v)=(?,v)
if r Mij or (f1(si)
then P1(RK,v)=(no,v)
if ={o|o b(si:w,a) and [f2(oj)>f2(o) or f4(oj) f4(o)]}= φ
then P1(RK,v)=(yes,v*=(b {(si,oj,r)},M,f))
else P1(RK,v)=(no,v)
end
规则2:主体si请求得到对客体oj的a访问权
get-append:P2(RK,v)
如果 σ1 φ or γ g or x a or σ2=φ,则P2(RK,v)=(?,v)
如果 a Mij,则P2(RK,v)=(no,v)
如果 ={o|o b(si:r,w) and [f2(oj)
则 P2(RK,v)=(yes,v*=(b {(si,oj,a)},M,f))
否则 P2(RK,v)=(no,v)
end
规则3:主体si请求得到对客体oj的e访问权
get-execute:P3(RK,v)
if σ1 φ or γ g or x e or σ2=φ then P3(RK,v)=(?,v)
if e Mij then P3(RK,v)=(no,v)
else P3(RK,v)=(yes,v*=(b {(si,oj,e)},M,f))
end
规则4:主体si请求得到对客体oj的w访问权
get-write:P4(RK,v)
if σ1 φ or γ g or x w or σ2=φ then P4(RK,v)=(?,v)
if w Mij or [f1(si)
then P4(RK,v)=(no,v)
if ={o|o b(si:r) and [f2(oj)
{o|o b(si:a) and [f2(oj)>f2(o) or f4(oj) f4(o)]}
{o|o b(si:w) and [f2(oj) f2(o) or f4(oj) f4(o)]}=φ
then P4(RK,v)=(yes,v*=(b {(si,oj,w)},M,f))
else P4(RK,v)=(no,v)
end
规则5:主体si请求释放对客体oj的r或w或e或a访问权
release-read/write/append/execute:P5(RK,v)
if (σ1 φ) or (γ r) or (x r,w,a and e) or (σ2=φ)
then P5(RK,v)=(?,v)
else P5(RK,v)=(yes,v*=(b-{(si,oj,x)},M,f))
end
规则6:主体sλ请求授予主体si对客体oj的r或w或e或a访问权
give-read/write/append/execute P6(RK,v)
if (σ1 S) or (γ g) or (x r,w,a and e) or (σ2=φ)
then P6(RK,v)=(?,v)
if x Mλj or c Mλj then P6(RK,v)=(no,v)
else P6(RK,v)=(yes,(b,M [x]ij,f))
end
规则7:主体sλ请求撤销主体si对客体oj的r或w或e或a访问权
rescind-read/write/append/execute:P7(RK,v)
if (σ1 S) or (γ r) or (x r,w,a and e) or (σ2=φ) then
P7(RK,v)=(?,v)
if x Mλj or c Mλj then P7(RK,v)=(no,v)
else P7(RK,v)=(yes, (b-{(si,oj,x)},M [x]ij,f))
end
规则8:改变静止客体的安全级
change-f:P8(RK,v)
if (σ1 φ) or (γ c) or (σ2 φ) or x F
then P8(RK,v)=(?,v)
if f1 or f3 or [ (oj) f2(oj) or (oj) f4(oj) for j A(m)]
注:A(m)表示活动客体的集合
then P8(RK,v)=(no,v)
else P8(RK,v)=(yes,(b,M,f*))
end
规则9:主体s请求创建客体oj
create-object:P9(RK,v)
if σ1 φ or γ c or σ2=φ or (x e and φ) then
P9(RK,v)=(?,v)
if j A(m) then P9(RK,v)=(no,v)
if x=φ then P9(RK,v)=(yes,(b,M [{r,w,a,c}]ij,f))
else P9(RK,v)=(yes,(b,M [{r,w,a,c,e}]ij,f))
end
规则10:主体s请求删除客体oj
delete-object:P10(RK,v)
if σ1 φ or γ d or σ2=φ or x φ then
P10(RK,v)=(?,v)
if c Mij then P10(RK,v)=(no,v)
else P10(RK,v)=(yes,(b,M [{r,w,a,c,e}]ij,1≤i≤n,f))
end
六、系统的定义
1.R×D×V×V={(rK,dm,v*,v) | rK R,dm D,v*,v V}
即,任意一个请求,任意一个结果(判断)和任意两个状态都可组成一个上述的有序四元组,这些有序四元组便构成集合R×D×V×V。
2.设ω={P1,P2,…Ps}是一组规则的集合,定义W(ω) R×D×V×V.
⑴(rk,?,v,v) W(ω) iff对每个i,1≤i≤s,Pi(rk,v)=(?,v)
⑵(rk,error,v,v) W(ω) iff存在i1,i2,1≤i1,i2≤s,使得对于任意的v* V有Pi1(rk,v) (?,v*)且Pi2(rk,v) (?,v*)。
⑶(rk,dm,v*,v) W(ω),dm ?,dm error,iff存在唯一的i,1≤i≤s,使得对某个v*和任意的v** v,Pi(rk,v) (?,v**),Pi(rk,v)=(dm,v*)。
以上定义说明W(ω)只包含R×D×V×V中一部分四元组,或某些特定的四元组。若某(rk,dm,v*,v) W(ω),则说明该四元组一定满足上述定义中(3条)的某一条,亦即意味着在状态v下,发出某请求rk后,按照某条规则,其结果为dm,状态v转换成状态v*。因此W(ω)是由ω中的一组规则所定义的有序四元组所组成。
3.X×Y×Z={(x,y,z)|x X,y Y,z Z},其中,
x=x1x2…xt…是请求序列,X是请求序列集;
y=y1y2…yt…是结果序列,Y是结果序列集;
z=z1z2…zt…是状态序列,Z是状态序列集。
任意一个请求序列,任意一个结果序列和任意一个状态序列均可组成一个有序三元组,X×Y×Z即由所有这样的有序三元组所构成。
4.系统表示为∑(R,D,W(ω),z0),定义为:
∑(R,D,W(ω),z0) X×Y×Z,只含有其中一部分有序三元组,X×Y×Z中的有序三元组(x,y,z) ∑(R,D,W(ω),z0),iff对每一个t T,(xt,yt,zt,zt-1) W(ω)。
z0是系统的初始状态,通常表示为(φ,M,f)
令 x=x1x2…xt…是请求序列;
y=y1y2…yt…是结果序列;
z=z1z2…zt…是状态序列。
若(x,y,z) ∑(R,D,W(ω),z0),则意味着对于所有的t T,(xt,yt,zt,zt-1) W(ω),即符合ω所规定的操作规则。
z0 |
z1 |
z2 |
zt-1 |
zt |
x1 |
x2 |
xt |
y1 |
y2 |
yt |
因此系统∑(R,D,W(ω),z0)是一个状态机,它从一个特定的初始状态z0开始,接受用户的一系列请求,按照W(ω)的规则给出相应的结果,并进行相应的状态转换,符合上述条件的所有可能的(x,y,z)组成系统∑。系统R就是由所有这些有序三元组(x,y,z)所组成。
从初始状态z0出发,任何一个请求序列均可导致出一结果序列和状态序列,引起一系列的状态转换。
七、系统安全的定义
1.安全状态
一个状态v=(b,M,f) V,若它满足自主安全性,简单安全性和*—性质,那么这个状态就是安全的。
2.安全状态序列
设z Z是一状态序列,若对于每一个t T,zt都是安全状态,则z是安全状态序列。
3.系统的一次安全出现
(x,y,z) ∑(R,D,W(ω),z0)称为系统的一次出现。
若(x,y,z)是系统的一次出现,且z是一安全状态序列,则称(x,y,z)是系统∑(R,D,W(ω),z0)的一次安全出现。
4.安全系统
若系统∑(R,D,W(ω),z0)的每次出现都是安全的,则称该系统是一安全系统。
八、模型中的有关安全的结论
BLP模型中证明了:
1.这十条规则都是安全性保持的。(即若v是安全状态,则经过这十条规则转换后的状态v*也一定是安全状态)
2.若z0是安全状态,ω是一组安全性保持的规则,则系统∑(R,D,W(ω),z0)是安全的。
说明BLP模型所描述的系统是一个安全的系统。
九、对BLP安全模型的评价
BLP模型是最早的一种安全模型,也是最有名的多级安全策略模型。它给出了军事安全策略的一种数学描述,用计算机可实现的方式定义。它已为许多操作系统所使用。
由于它描述的是军事安全策略,受到美国国防部的特别推崇,以致于在很长一段时期人们将多级安全策略等同于强制访问控制策略。
优点:①是一个最早地对多级安全策略进行描述的模型;
②是一个严格形式化的模型,并给出了形式化的证明;
③是一个很安全的模型,既有自主访问控制,又有强制访问控制。
④控制信息只能由低向高流动,能满足军事部门等一类对数据保密性要求特别高的机构的需求。
1.总的来说,BLP模型“过于安全”。
①上级对下级发文受到限制;
②部门之间信息的横向流动被禁止;
③缺乏灵活、安全的授权机制。
不安全的地方:
①低安全级的信息向高安全级流动,可能破坏高安全客体中数据完整性,被病毒和黑客利用。
②只要信息由低向高流动即合法(高读低),不管工作是否有需求,这不符合最小特权原则。
③高级别的信息大多是由低级别的信息通过组装而成的,要解决推理控制的问题。
2.仔细分析BLP模型,其描述上尚有不安全的地方,还有待改进,缺乏记忆,造成不安全性。
S |
r |
o2 |
高 |
低 |
o3 |
r |
时刻t1 |
时刻t2 |
释放对o2,o3的访问权 |
S |
a |
o3 |
高 |
低 |
o4 |
r |
时刻t3 |
S已含有o2和o3的信息 |
此时S可将o2的信息传送到o3 |
(无记忆) |
oo |
r |
s2 |
高 |
更高 |
s1 |
a |
低 |
改进:针对过安全:
1.允许高安全级的主体在受控的情况下创建低安全级的客体。(解决从上到下流的问题)。
2.对客体安全级的动态约束,如(秘级,部门级,时限)。随客体内容进行动态约束(解决自上向下和横向)。
3.给主体发临时许可证,如(密级,部门级,时限)或(客体,权限,时限)。
针对不安全问题:
1.可否用“推”和“拉”来解决。用“拉”,而不用“推”。在计算机中“推”和“拉”如何实现? “同级写”
2.基于语义的动态控制;
3.问题比较复杂。