基于角色的多域访问控制研究
2010-09-14王娟娟宋三华
王娟娟,宋三华
(黄淮学院 计算机科学系,河南 驻马店 463000)
基于角色的多域访问控制研究
王娟娟,宋三华
(黄淮学院 计算机科学系,河南 驻马店 463000)
访问控制是进行信息资源保护的主要措施,而授权管理是访问控制的重点.随着计算机网络的发展,多域环境下的授权管理成为研究热点.文章阐述了一种基于 RBAC的多域访问控制方法,设计了多域环境下的角色算法,并给出了主要实现过程.
访问控制;RBAC;角色分配
访问控制可以有效的保护系统资源,防止非法用户获取内部资源和合法用户越权使用资源.随着网络的发展,信息共享范围不断扩大,多个服务器之间的协同工作越来越流行.面对多个服务器管理域的分布性和匿名性,一些传统的访问控制方法已经不再适合多域环境的要求.授权策略是访问控制的核心,定义了一组说明主体对客体的访问能力及行为的规则.由于同一用户在不同服务器上的权限可能不同,这给用户授权带来不便.目前常用的就是采用角色访问控制技术(Role Based Access Control,简称RBAC),利用角色把用户和权限分离.然而在角色访问控制技术的应用上,对同一用户在不同管理域的角色管理与分配一直是个讨论的热点,本文利用拉格朗日插值多项式来实现角色访问控制技术中的角色存取管理,实现多域环境下的安全访问控制.
1 相关技术简介
1.1 角色访问控制技术
自20世纪70年代以来,RBAC的概念开始出现,随后人们陆续对RBAC进行研究.1992年RBAC有了里程碑式的发展,David F.Ferraiolo和D.Richard Kuhn在原有的RBAC概念基础上,定义了RBAC模型[1].1996年Ravi S.Sandhu等人,共同提出了RBAC 96模型族[2],该协议族包含4个概念模型,它们之间的关系如图1所示.
RBAC0在底层,是基础模型,满足任何支持基于角色访问控制系统的需求.没有考虑角色的约束和继承关系.RBAC1是一个分层模型,通过划分角色的层次来体现其相应的职责与权限.RBAC2是约束模型,包含互斥角色约束、会话约束、基数约束、角色继承约束等四个约束描述.RBAC3是层次约束模型,包含RBAC1和RBAC2,支持角色继承和约束.2001年,NIST的RBAC标准出现[3],该模型在功能上有四个不断增加的级别,为 RBAC应用于实践提供了指导.
图1 RBAC 96概念模型之间的关系
1.2 拉格朗日函数
拉格朗日插值函数的应用很广,缪亮等曾做过拉格朗日插值函数在数字签名方面的相关研究[4].本文探讨拉格朗日插值函数在角色管理上的应用.文献[5]给出了拉格朗日内插多项式公式,即
2 主要设计思想
由于每位用户都拥有自己的ID,而每个ID对应一个拉格朗日多项式,因此可以以ID为索引,在不同服务器上存储使用者的角色.RBAC设计的基本思想是:先把角色赋值(以质数赋值)、服务器赋值,这样角色与服务器之间组成一个二维平面上的点(Si,Ri),其中角色Ri为用户在服务器Si上拥有的角色;再把符合该用户的所有点(Sn,Rn)代入拉格朗日插值多项式中,即可求出该用户的拉格朗日多项式;最后将该多项式存储在 RBAC服务器对应的表上.例如,一个用户在服务器1、服务器2、服务器3上的角色分别为使用者、FTP管理员、信息发布者,各个角色具体代码如表1所示.该用户在上述三个服务器上的角色可以用(1,1)、(2,5)和(3,7)表示.将(1,1)、(2,5)和(3,7)代入拉格朗日插值多项式,就可以得到用户存储在 RBAC服务器中的角色的表达方程公式f(x)=−x2+ 7x − 5.
表1 角色与服务器代码表
3 具体实现
3.1 注册及角色设置
用户选择用户ID和密码PW,系统给该用户分配不同服务器上的角色,并根据用户ID和密码使用哈希函数算出具体的值.随后,向验证服务器a进行注册.验证服务器A将该用户ID、HPW存储到验证表中,并将该用户ID送到RBAC服务器,RBAC服务器为该用户在不同服务器上分配不同角色,并算出该用户的拉格朗日多项式f(x),最后将该用户的ID和f(x)存储在相应表中,格式如表2所示.其中,agent为该用户需要代理的角色,初始值为 2,当需要该用户代理某个角色时,只需把该项设置为需要代理的角色值(相应的质数)即可.
表2 RBAC服务器中用户函数表
3.2 身份验证及角色的获得
用户i登陆服务器j时,若无服务器j的会话密钥,则需要身份验证.于是,服务器j先产生一个随机数Nj,并用哈希函数做二次运算,得出服务器j对使用者签发的cookie值Cj=H(H(Nj)).接着,服务器j将Cj写入使用者的cookie中,并将随机数Nj做一次哈希运算得到H(Nj).然后,用验证服务器A的公钥加密产生加密信息Mj.最后,将Mj及目前用户请求的URL重新传给验证服务器A进行身份验证.
身份验证成功后,验证服务器A给出密钥skij和skaj.其中skij是用户i与服务器j之间的会话密钥,skaj是验证服务器A与使用者i的会话密钥.验证服务器A在将用户i的临时ID送往使用者cookie中的同时,也会把使用者ID及服务器j的信息发送给RBAC服务器.RBAC服务器根据用户ID找到该用户的拉格朗日函数,把服务器j的值代入f(x),得到该用户在服务器j上的角色f(j),然后把f(j)与该用户对应的agent值相乘,得到积R(j),RBAC服务器把R(j)以加密的形式传送给验证服务器A.
验证服务器 A接到密文后,用自己的私钥解密得到R(j),并进行判断:若R(j)能被2整除,则该用户没有代理,整除的结果即是该用户在服务器j上的角色值;若R(j)不能被2整除,对R(j)进行因式分解,可以得到其角色和代理角色.因为角色值设置的是质数,所以解是唯一的.整个流程如图2所示.
图2 用户身份验证及角色获得流程
3.3 角色的更改
角色的更改包括工作调动和代理两种情况.工作调动时,RBAC服务器系统管理员可以登陆RBAC服务器更改用户在不同服务器上的相应角色,系统重新生成该用户的拉格朗日函数.当某人需要别的用户代理其职务时,他需向部门申请,获批后 RBAC服务器系统管理员在用户函数表中设置agent值,代理人登陆后即可行使代理角色的权限.
4 结语
本文讨论了一种基于 RBAC的多域访问控制方法,它结合传统的访问控制机制,采用拉格朗日插值函数来计算用户在不同服务器中角色的值,并通过常用的验证机制进行角色值的传递,这使得每个管理域角色的权限分配直观、容易理解,便于使用和维护.
[1] Ferraiolo D F,Richard Kuhn D.Role-based access control[A].Proceedings of the 15th National Computer Security Conference[C].Baltimore MD,1992:554―563.
[2] Andhu Ravi S,Edward Joyne,Einstein Hal L,Youman Charles E.Role-based access control models[J].IEEE Computer,1996(29):38―47.
[3] Ferraiolo D F,Sandhu Ravi S,Gavrila S,Kuhn D R,Chandramouli R.Proposed NIST standard for role-based access control[J].ACM Transactions on Information and System Security,2001(4):224―274.
[4] 缪亮,朱维克,王素真,李捷.基于拉格朗日插值的签名方案的研究[J].河南大学学报,2007(4):406―407.
[5] 李庆扬,王能超,易大义.数值分析[M].武汉:华中科技大学出版社,2006:20―45.
〔责任编辑 牛建兵〕
TP309
A
1006-5261(2010)05-0038-02
2010-01-11
王娟娟(1981―),女,陕西西安人,助教,硕士.