第二讲 传统的访问控制
一、基本概念
访问控制的基本任务是:防止非法用户进入系统及合法用户对系统资源的非法使用,它保证主体对客体的所有直接访问都是经过授权的。
1.客体:
是一种能够从其它主体或客体接收信息的实体(文件、目录、数据块、记录、程序、存储器段、网络节点等),即包含有信息,又可以被访问的实体。
2.主体
是一种可以使信息在客体之间流动的实体(进程、作业或任务(代表用户),用户也称为是主体)或能访问或使用客体的活动实体。
通常,我们把主体也看作是一个客体。因为当一个程序存放在内存或硬盘上时,那么它就与其它数据一样被当作客体,可供其它主体访问,但当这个程序运行时,它就成为了主体,可以去访问别的客体。
3.访问模式(访问权限)
是指主体对客体可进行的特定访问操作如:读(r)、写(w可读可写或修改)、添加(a)、删除(d)、运行(e)等。
二种特殊的访问权限是控制权(c)、拥有权(o)。
c是指某个主体具有改变其它主体对某客体的访问权限的能力。
o若主体S创建客体O,则S对O具有拥有权(每一客体O只有唯一的拥有者)。对O具有拥有权的主体必对O具有控制权,但反之则不然。
4.自主访问控制
是指对某个客体具有拥有权(或控制权)的主体能够将对该客体的一种访问权或多种访问权自主地授予其它主体,并在随后的任何时刻将这些权限回收。
自主访问控制是保护计算机系统资源不被非法访问的一种有效手段,但是,它有一个明显的缺点:这种控制是自主的,虽然这种自主性为用户提供了很大的灵活性,得同时也带来了严重的安全问题。为此人们认识到必须采取更强有力的访问控制手段,这就是强制访问控制。
5.强制访问控制
系统根据主体被信任的程度和客体所包含的信息的机密性或敏感程度来决定主体对客体的访问权,这种控制往往可以通过给主、客体赋以安全标记来实现。
强制访问控制一般与自主访问控制结合使用,在自主访问控制的基础上,施加一些更强的访问限制。一个主体只有通过了自主与强制性访问控制检查后,才能访问某个客体。
用户可以利用自主访问控制来防范其它用户对自己客体的攻击,强制访问则提供了一个不可逾越的、更强的安全保护层。
二、自主访问控制(Discretionary Access Control)
1、自主访问控制的矩阵模型
⑴系统状态用一个有序三元组表示Q=(S,O,A),
其中 S——主体的集合
O——客体的集合
A——访问矩阵,行对应于主体,列对应客体。A的(i,j)项元素aij是一个集合,该集合中列出了主体Si 对客体Oj所允许的访问权限。
例:设S={s1,s2},O={m1,m2,f1,f2,s1,s2,}系统当前的状态如下:
m 1 m 2 f 1 f 2 s1 s2 |
注:“拥有权”与“控制权”在有的系统中有区别。
系统中设置监控程序用来监控主体对客体的访问,某一主体Si要对客体oj进行访问时,监控程序要检查aij以决定Si是否可对oj进行访问以及可以进行什么样的访问,当aij中不包含主体Si对客体oj的某种访问权时,监控程序就禁止Si对oj进行相应的访问操作。监控程序可以由硬件、软件或者硬件与软件共同完成。
⑵系统状态的变化
系统状态是在不断变化的,变化是由于用户的一系列操作引起来的,系统状态变化,则相应的访问控制矩阵也就要发生变化。引起状态变化的操作基本上有如下几种:
1.Enter p into aij (oj拥有者授予主体Si对Oj“p”访问权)
2.Delete p from aij (oj拥有者撤销主体Si对Oj“p”访问权)
3. Create Subject s’
4. Create Object o’
5. Delete Subject s’
6. Delete Object o’
这些操作将引起访问控制矩阵的变化,且使得状态由Q=(S,O,A)转换到Q’=(S’,O’,A’)
2、自主访问控制的实现方法
为了实现自主访问控制,必须将访问控制矩阵所提供的信息以某种形式保存在计算机系统中,实际上在实现自主访问控制时,并不是将矩阵整个存放在系统中,这样做,效率是很低的,因为这个矩阵很可能是一个许多项都为空的一个稀疏矩阵,这对于存储空间和查询时间都是一个很大的浪费。
实际上的实现方法可分为如下几类:
⑴基于行的自主访问控制——权力表
每个主体Si