3、 强制访问控制
自主访问权限为用户提供了很大的灵活性,从而导致系统安全的薄弱。
强制访问控制
事先规定了某一个客体对哪些客体允许进行什么样的访问
安全策略:(根据 安全需求 指定相应的 安全策略)
为了描述系统的安全需求而指定的对用户行为进行约束的一套严谨的规则。
规定了系统中哪些访问是被允许的,用计算机能表达的方式表达出来,用于指导建立相应的强制访问控制机制。
a) 军事安全策略
安全需求是信息的保密性
多级安全
1. 信息的保密性,
根据信息的机密程度进行分类,将机密程度不同的信息限制在不同的范围,
防止用户取得不应该得到的密级较高的信息。(安全需求)
2. 安全集
系统为每个主体和客体都分配一个安全集。
安全集对 主体来说称为许可证
客体来说表示信息的敏感程度或机密性
安全集有两部分组成,用二元组(密级,范畴级)表示
a) 密级
i. 一般,秘密,机密,绝密 (U,C, S, TS)
b) 范畴集(部门集,类别集)
i. 对客体来说,定义为该客体所包含的信息所设计的范围
ii. 对主体来说,定义为该主体能访问的信息涉及的范围或部门。
iii. 密级A和范畴级B的密集PB都构成了偏序集。
PB表示范畴集B所有子集构成的集合。(含空集和全集)
主、客体的安全集 表示为A与PB的笛卡尔积
通过比较二者,便可决定主体是否可以对客体有什么样的访问。
如:class(u) = (S, {科技处,财务处});主体u对科技处和财务处有机密的权限
class(o1) = (C, {科技处});客体o1对科技处有秘密级权限
class(o2) = (C, {情报处});客体o2对情报处有秘密级权限
主体u支配客体o1,但与o2互不支配
iv. 多级安全策略表述为:(向下读,向上写)
1. 仅当主体的安全级支配客体的安全级时,允许该主体“读”访问该客体
2. 仅当客体的安全级支配主体的安全级时,允许该主体“写”访问该客体。
b) 商业安全策略
安全需求的是信息的完整性,防止非授权的修改,和数据的伪造和错误,控制方法为:良性事务和职责分散,二者是商业数据完整性保护的基本原则。
i. 良性事务
1. 限制用户按照一定的步骤去完成相应的事务。
ii. 职责分散
1. 将一个操作分为几个子操作,并要求不同的子操作由不同的用户来执行,除非执行子系统的用户案子勾结,那么我们认为该操作是一致的。
2. 最基本的原则,创建或验证良性事务的人,不允许他去执行良性事务,若要对良性事务进行修改,至少需要两个人的参与才能进行。
c) 是任何安全策略一部分的两个要求:
i. 计算机系统必须有一种机制来保证系统实施了安全策略中的安全需求。
ii. 系统的机制必须防止篡改和非授权的修改。
4、 安全模型
对安全策略所表达的安全需求进行清晰准确的描述,并建立相应的模型。
安全模型的特点:
1、 精确的,无歧义的
2、 简单、抽象,也是易于理解的
3、 仅涉及安全性质,不过分限制系统的功能与实现
分为形式化的安全模型(自然语言)和非形式化的安全模型(数学语言)
a) Bell-La Padula 安全模型(BLP安全模型)
是形式化的多级安全策略模型,也是状态机模型
i. 模型的基本元素
-
需要用到笛卡尔积和幂集(一个集合所有子集的一个集合)的概念
-
S = {s1,s2,s3…sn} 主体的集合。
O= {o1,o2,o3…on} 客体的集合。
C = {c1,c2,c3…cn} 主体或客体的密级
K = {k1,k2,k3…kn} 范畴级
Pk 表示范畴级的幂集
A = {r,w,e,a,c} 读,写,执行,添加,控制权
RA = {g,r,c,d} 请求元素集
g表示 get或give
r表示 release或rescind
c表示 change或create
d表示 deleteD = {yes,no,error,?} 结果集
yes 表示请求被执行
no 表示请求被拒绝
error 表示系统出错,有多个规则适合于这一请求
? 表示请求出错
μ = {M1,M2,M3…Mp} 访问矩阵的集合
F表示安全集是Cs、Co、(PK)s、(PK)o 的笛卡尔积
Cs:表示主体的密级
Co:表示客体的密级
(PK)s:表示主体的范畴级
(PK)o:表示客体的范畴级
所以对于F的每一个元素f都有f = {f1 ,f2, f3, f4}。
f1和f3给出了主体的安全集,f2,和f4给出了客体的安全集。
ii. 系统状态 V = P(SOA) μF
V的每个元素v = (b,M,f),其中:
b = {(s1,o2,r),(s1,o2,w)…}
M ∈ μ 描述被自主授权了哪些权限
f 即为主体和客体的安全级
iii. 安全特性
如果状态v满足以下3条特性,那么v是安全状态
1. 自主安全性
对于状态v = (b,M,f)满足自主安全性,
当且仅当对所有的(si,oj,x)∈b,有x∈Mij 。(x是某一权限)
2. 简单安全性
对于状态v = (b,M,f)满足简单安全性,当且仅当对所有的(si,oj,x)∈b,有:
1、x = e, x = a, x = c 或
2、(x=r或x=w)且f1≥f2(主体的密级大于等于客体的密级),
f3⊇f4(主体的范畴集包含客体的范畴集)
意义在于低安全级的主体不允许获得高安全级客体的信息
- *-性质
对于状态v = (b,M,f)满足*-性质当且仅当对所有的s∈S(主体集),若
o1∈b(S: w, a)【表示s对o1有w和a权】由s流向o1
o2∈b(S: r, w)【表示s对o2有r和w权】由o2流向s
则 f2(o1)≥f2(o2), f4(o1)⊇f4(o2)o1支配o2
这表明模型中的信息只能由低安全级向高安全级流动的安全策略
iv. 请求 R = S * RA * S * O * X
用五元组(δ1,γ,δ2,o,x)表示
为:δ1请求γ给δ2对o的x权限。
如(Φ,g,s,o,w):主体s请求得到客体o的写权限
(S,g,s,o,w):主体S请求授予主体s对客体o的写权限
v. 状态转换规则 (10条)
ρ:R*V(表示请求和当前状态)→D*V(表示结果和请求和的转换后的状态)
- 用于主体s请求得到客体o的read权限 五元组Rk=(Φ,g,s,o,r)当前状态为v =(b,M,f)
作如下检查:
a) 主体的请求是否适用于规则1;
b) O的拥有者是否授予了s对o的读访问权;(检查权限矩阵M的s所在的行o所在的列,是否有read权限)(自主安全性检查)
c) S的安全级是否支配o的安全级(简单安全性检查)
d) *-性质的检查 - 用于主体s请求得到客体o的append(添加)权限
a) 类似于规则1、的检查,只是不用进行简单安全检查。 - 用于主体s请求得到客体o的execute(执行)权限
a) 类似于1、只是不用进行简单安全性检查和*-性质检查 - 用于主体s请求得到客体o的write权限
a) S的请求是否适用于规则4
b) S是否被自主地授予了对o的w权(自主安全性检查)
c) S的安全级是否支配o的安全级(简单安全性检查)
d) *-性质检查,这一项检查有些特殊
i. 若s已对某一客体o’有读权,则o的安全级必须支配o’的安全级
ii. 若s已对某一客体o’有添加权,则o的安全级必须受o’的安全级的支配
iii. 若s已对某一客体o’有写权,则o的安全级必须等于o’的安全级 - 用于主体s请求释放对客体o的x权限
a) 访问权的释放不会对系统造成安全威胁,因此不需要作安全性检查 - 用于主体s请求授予另一个主体s’对客体o的x权限
a) 请求是否适用于规则
b) 作自主安全性有关的检查(即主体s要对该客体o有x权限或者c【控制】权限)
c) 这一授权成功后,并不意味着就已经获得了x权限,因为s’还未经过简单安全性和*-性质的检查 - 用于主体s撤销另一个主体s’对客体o的x权限
a) 同规则6、类似仅涉及到自主安全性 - 用于改变静止客体的密级和范畴级。五元组Rk=(Φ,c,Φ,o,f*)
静止客体是指被删除了的客体,该客体名可能被系统中的主体重新使用
a) 新定义的安全集不能改变系统中主体、客体的安全级,只能改变静止客体的安全级。 - 用于主体s创建一个客体o,五元组R k =(Φ,c, s, o, Φ)或(Φ,c, s, o, e)
a) 要求主体所创建的客体不能是活动着的客体。(即该客体的下标不能是系统中已经存在的主体) - 用于主体s删除一个客体o,五元组R k =(Φ,d, s, o, Φ)。
a) S必须对o有控制权才能删除
vi. 系统的定义
- 符号的约定
a) T = {1,2,3,4…t…} 表示离散时刻的集合,用作事件的下标。
b) X = R T = {x | x:T→R} 请求序列的集合 【五元组(δ1,γ,δ2,oj,x)】x t :表示时刻t时发出的请求。
c) Y = D T = {x | x:T→D} 判定序列的集合 (?, yes, no, error)
y t :表示时刻t时做出的判定。
d) Z = V T = {z | z:T→V} 状态序列的集合【(b,M,f)】
z t :表示时刻t的状态用z t表示 - 系统的定义
a) ω = {ρ1,ρ2,…,ρs}表示一组规则集,
关系W(ω)⊆ R * D * V * V (前面的V表示转换后的状态,后面的表示转换前的状态)
i. 当D为“ ?”时,没有任何一条规则适合它
ii. 当D为“ error ”时,有多条规则适合它
iii. 当D为“no”或“yes”时,有唯一一条规则适合它,为no状态不发生改变,为yes状态进行改变
iv.
vii. 安全系统的定义
- 安全状态:若一个状态满足自主安全性,简单安全性,*-性质,那么这个状态就是安全的。
- 安全状态序列:若z是一个安全状态,若对于每一个t,z t 都是安全状态,则z是安全状态序列
- 安全出现(x,y,z)∈ Σ(R, D ,W(ω), z0 )称为一次出现,并且z是安全状态序列,则(x,y,z)是系统 Σ(R, D ,W(ω), z0 )的安全出现。
- 安全系统:若系统Σ(R, D ,W(ω), z0 )的每次出现都是安全出现,则称该系统是安全系统
viii. 模型中有关的安全结论: - BLP模型的10条规则都是安全性保持的,若v是安全状态,则经过这些规则转换后的状态v*也一定是安全状态。
- 若z是安全状态,ω是一组安全性保持的规则,
则系统Σ(R, D ,W(ω), z0 )是安全的。
b) 其他安全模型
i. 安全信息流的格模型
ii. 无干扰模型
iii. Biba模型
iv. Clark-Wilson 模型
5、 基于角色的访问控制模型(RBAC,基于角色的访问控制)
角色将用户和权限进行分离,角色与用户构成多对多的联系,
角色与权限也构成多对多的关系。
a) 角色:是RBAC机制中的核心,它一方面是用户的集合,另一方面又是访问权限的集合,作为中间媒介将用户与访问权限联系起来。
RBAC支持3条安全原则:
i. 最小特权原则
不超过完成某项任务所必须的权限
ii. 职责分散原则
防止任务构成中的欺诈
iii. 数据抽象原则
b) RBAC96模型族
RBAC0模型 基本模型,支持RBAC的系统的最小需求
RBAC1模型 包含RBAC0,增加了角色层次 的概念
RBAC2模型 包含RBAC0,增加了约束的概念 RBAC3模型 包含RBAC1和RBAC2
i. RBAC0模型
某一用户创建了会话s,user(s),这一用户对应n个角色,role(s),
每一角色又对应n个权限,p s 就表示会话s所拥有的权限
1. 定义:
a) U表示用户集,R表示权限集,P表示权限集,S表示会话集
b) PA ⊆P×R, 是权限到角色的多对多指派关系;
c) UA ⊆U×R, 是用户到角色的多对多指派关系;
d) User:S→U, 是会话到用户的映射函数,user(s)
e) Role:S→2R, 是会话到角色子集的映射函数,role(s)
f) 会话s具有的权限P s ,
会话为系统对用户一次请求的执行,每个会话由一个用户建立。
用户建立一个会话时,系统会激活该用户拥有的角色集的一个子集,
用role(s)表示,会话s所具有的权限,便是这个子集中所有角色的权限的并集。
ii. RBAC1 模型 增加角色层次(即,角色有等级)
如三个角色:r1≤r2≤r3 则r3有r1和r2的所有权力
1. 角色层次,反应在一个机构中不同的职务(或角色)不但具有不同的权力和责任,这些角色的权力之间还具有包含关系。职务越高的人责任和权力越大。高级别的角色继承低级别角色的所有权限。
2. 定义:
a) RBAC0的所有定义
b) RH ⊆R×R, 是集合R上的偏序关系,称为角色的层次关系
c) Role:S→2R, 同RBAC0不同的是:可以由建立该会话的用户所属的任何角色或低级角色组成。
d) 会话s所具有的权限,由role(s)中的每一个角色,以及被这些角色所覆盖的低级角色相对应的权限组成的权限集。
因此RBAC1模型可以实现多级安控制。(低等级角色不能访问高等级角色)
iii. RBAC2 模型 引入了一个约束(限制)集
1. 互斥限制(如同一用户不能同时具有会计和出纳的角色身份,类似于职责分散)
2. 基数限制(用户,角色,权限之间多对多数目的限制)
3. 先决条件限制(当一个角色被指派到某角色A,当他已经是另一个角色B的成员)
4. 运行时的互斥限制(如果一个用户拥有两个互斥角色的成员资格时,那么系统运行时不可以同时激活这两个角色)
5. 会话数量的限制(限制用户同时进行会话的数量)
6. 时间频度限制(对特定角色权限使用的时间和频度进行限制)
iv. RBAC3 模型 既有角色层次又有约束集
c) 基于角色授权模型的基本框架
i. 授权是指拥有某角色的用户能将该角色的成员资格授给其他的用户。
ii. 授权的特性
- 永久性
a) 永久性授权
b) 暂时授权 - 同一性(自身是否还保持角色的成员资格)
a) 同一性授权
b) 非同一性授权 - 全部性
a) 全部性授权
b) 部分授权 - 执行性(授权由谁执行)
a) 自主执行(授权者本人执行)
b) 代理执行(授权者向第三方提出请求) - 传递性
a) 单步授权
b) 多步授权 - 多重性(同一时刻可以对多个用户授权)
- 协议性(是否征得被授权者的同意)
a) 确定协议授权
b) 非确定授权
iii. 授权回收的策略 - 基于支撑角色的回收
a) 某用户是在角色A的背景下取得了角色B的授权,当角色A的权限被回收后,B的权限也被回收。 - 基于发起角色的回收
a) 当用户A对用户B进行授权,当用户A的角色被回收后,用户B的授权也被回收。 - 授权者有关回收
a) 只有授出权限的用户才能回收 - 授权者无关回收
a)
d) 对角色进行管理的模型——ARBAC97模型
i. 包括3个部分: - URA97 用户到角色指派管理
- PRA97 权限到角色指派管理
- RRA97 角色与角色的继承关系管理