王娟娟,宋三華
(黃淮學院 計算機科學系,河南 駐馬店 463000)
基于角色的多域訪問控制研究
王娟娟,宋三華
(黃淮學院 計算機科學系,河南 駐馬店 463000)
訪問控制是進行信息資源保護的主要措施,而授權管理是訪問控制的重點.隨著計算機網絡的發展,多域環境下的授權管理成為研究熱點.文章闡述了一種基于 RBAC的多域訪問控制方法,設計了多域環境下的角色算法,并給出了主要實現過程.
訪問控制;RBAC;角色分配
訪問控制可以有效的保護系統資源,防止非法用戶獲取內部資源和合法用戶越權使用資源.隨著網絡的發展,信息共享范圍不斷擴大,多個服務器之間的協同工作越來越流行.面對多個服務器管理域的分布性和匿名性,一些傳統的訪問控制方法已經不再適合多域環境的要求.授權策略是訪問控制的核心,定義了一組說明主體對客體的訪問能力及行為的規則.由于同一用戶在不同服務器上的權限可能不同,這給用戶授權帶來不便.目前常用的就是采用角色訪問控制技術(Role Based Access Control,簡稱RBAC),利用角色把用戶和權限分離.然而在角色訪問控制技術的應用上,對同一用戶在不同管理域的角色管理與分配一直是個討論的熱點,本文利用拉格朗日插值多項式來實現角色訪問控制技術中的角色存取管理,實現多域環境下的安全訪問控制.
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]給出了拉格朗日內插多項式公式,即

由于每位用戶都擁有自己的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.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值,代理人登陸后即可行使代理角色的權限.
本文討論了一種基于 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―),女,陜西西安人,助教,碩士.