關 滄 , 馮錫煒
(1.遼寧石油化工大學 計算機與通信工程學院,遼寧 撫順 113001;2.撫順職業技術學院 信息工程系,遼寧 撫順 113006)
隨著網絡技術的發展,帶動了Web技術的應用,許多的業務活動可以依托該技術來完成,例如員工考勤管理、檔案管理、信息查詢、郵件收發等均可通過架設內部Web服務器來實現。不同的網絡應用需要不同的服務器來支持,而多個服務器意味著用戶需要使用多個的賬號密碼,且在每次使用到不同服務器時都需要進行賬號密碼的驗證工作,隨著系統的增多,用戶需要花費精力記住更多的賬號和密碼,給用戶帶來很多不便,也存在很大的安全隱患[1]。
針對這類問題,研究和探討了一種基于RBAC技術的單一登錄(Single Sign-On,SSO)的模型,讓用戶只要登錄一次,就可以根據角色的權限,訪問相應的Web應用系統資源,從而避免頻繁登錄,且可以將賬號密碼整合為一個,提高了用戶賬號密碼的安全性,以及管理上的方便性。
以角色為基礎的訪問控制是新一代的訪問控制策略,在用戶與權限之間加入了角色,讓用戶與權限成為間接的關系,通過角色將用戶與權限的關聯[2]。以角色作為中介,其優點在于可以讓管理者的管理工作更為便捷并且具有彈性,把角色賦予給用戶,再把權限賦予給角色,當用戶的職能或是任務有所改變的時候,只需改變賦予給用戶的角色,就可以改變此用戶所可以執行的權限,讓權限的管理更加的簡單。并且角色可以對應到日常工作中的職務,讓權限的管理更符合實際業務運作的安全需求。

圖1 RBAC架構圖Fig.1 Structure diagram of RBAC
RBAC 包含 3 個主要的部分,用戶(Users)、角色(Roles)與權限(Permission,PRMS),在權限中又分為操作(Operations,OPS)與對象(Objects,OBS)。 用戶首先需要分配角色,才能獲得相對應的權限。其中用戶–角色的對應(Users Assignment,UA)與角色-權限的對應(Permission Assignment, PA)都是多對多的關系,即一個用戶可以具有多個角色,同一個角色也可以指派給多個用戶;同時一個角色可以包含多個權限在內,而權限也可指派給多個角色。RBAC是利用角色來對應權限,與傳統方法為用戶定義權限的方式不同,RBAC的特點在于,當用戶發生變動時,不會造成權限的變動;同樣的,當權限有變動時,也不會影響到用戶。變更的管理可以完全由角色來進行,這樣就使得管理的復雜度下降,而且提高了工作效率。另外,票據(Sessions)發生在用戶在角色轉換的過程,是共享授權信息的數據結構,用戶所分配的角色是一對多的關系,同一時間內用戶可以具有多個不同的角色,限制用戶不會有過多且過大的權限,以達到最少權限的安全策略,如圖1所示。
點登錄技術是為了解決用戶在登錄不同網站之間時,需要進行多次的輸入,并且需要記憶多個賬號密碼的問題,可以提高使用者存取網站的便捷性,并且減輕用戶在管理賬號密碼上的負擔[3]。
單點登錄技術的核心思想是Web訪問接口標準化,支持分布式,能夠很容易的與原有系統建立安全的通信機制,利用目前廣泛使用的標準瀏覽器,在不同的web服務器存取資料而不需要重復進行身份驗證[4]。單點登錄技術的成員角色如下:
1)用戶(User):對服務進行存取的角色,包括客戶端(Client)或客戶(Customer)。
2)服務器(Service Server):提供 Web 服務的角色,包括網站(Web Site)或服務器(Web Server)。
3)驗證服務器(Authentication Server):對用戶進行身分驗證并發放相關的認證,包括登錄服務器(Login Server)或驗證服務器(Verification Server)。
目前,單點登錄模型[5]主要分為經紀人模型、代理模型、網關模型、令牌模型。
1)經紀人模型:用一個中央認證服務器和中央數據庫集中對身份認證和用戶賬號進行管理,提供一個公共和獨立的平臺實現集中式管理。這種模型需要對各Web服務系統進行較大修改。
2)代理模型:通過代理程序自動地為不同的Web應用程序認證用戶身份,具有比較好的可實施性和靈活性,但由于票據存儲在客戶端而存在較大的安全隱患。
3)網關模型:在網絡入口處設置防火墻或專用加密通信設備作為網關,分別連接到身份認證系統和服務提供系統。當用戶需要訪問Web應用服務系統時,首先需要通過身份認證系統進行認證,認證通過后網關自動將用戶身份信息傳遞到要訪問的Web應用服務系統進行認證。網關模型對網絡要求較高,且不同的網關之間需要同步用戶信息。
4)令牌模型:服務器生成一張憑證令牌傳輸到客戶端瀏覽器并寫入Cookie,同時生成一張服務令牌用于緩存用戶信息。這種模型雖簡單易用,但也會帶來很多安全隱患。
Lagrange插值多項式[6]是由意大利數學家Joseph Louis Lagrange所提出來的,有n個相異的 (X,Y)點,可以利用Lagrange插值多項式將這些(X,Y)點的組合,計算出一個多項式f(x),可以將這些點均包含在內變成是一條曲線多項式,利用此特性我們可以將每個User在不同Server的不同權限放置在此曲線多項式中,等到需要某個Server的權限時,代入表示該Server的數值來取出權限值。
結合單點登錄與以角色為基礎的訪問控制(RBAC)來設計一個適用在實際環境中的身份授權與訪問控制模型。該模型由用戶(User)、Web 服務器(Service Server)、驗證及 RBAC服務器(Authentication and RBAC Server)組成[7]。
1)用戶為Intranet的使用者。
2)每個用戶默認在每部主機均有基本權限。
3)User– Role的對應關系由RBAC集中統一管理。
4)所使用到的相關參數如下:
IDi:User i所注冊的賬號;HPW:用戶自選的ID與PW經一次哈希運算后所得的值;Xn:Server n與 RBAC共享的私密值,用來保護角色值;Rin:User i在 Server n 的角色;ROLEin:Rin與 Xn做 XOR 運算后的結果;Nn:Server n 的隨機數;Sn:Web服務器,以 SA、SB 表示;AS:驗證服務器;En(m)、Dn(m) :服務器n的公鑰加密與私鑰解密后的信息;SKn:服務器所發放的通信密鑰;H(m):以單向哈希運算后的信息;CKn:Web 服務器對用戶的Cookie;TIDi:使用者i登入后的臨時ID;⊕:XOR運算。

本模型總共分為6個階段,分別為注冊、申請服務、通信密鑰發放與角色獲取、登錄其他Web服務器、運行服務以及退出,模型的工作流程如圖2所示。

圖2 工作流程圖Fig.2 Flow chart the work of model
2.2.1注 冊
1)新用戶自選賬號、密碼,算出HPW后向驗證服務器(Authentication Server,AS)進行注冊,驗證服務器收到用戶的注冊申請之后,將ID、HPW儲存到驗證表中,HPW=H(ID, PW)。

2.2.2 申請服務
1)用戶向Web服務器A提出服務的請求。
2)Web服務器A檢查用戶端的Cookie是否擁有Web服務器A的通信密鑰SKA,如果沒有則進行步驟3)。
3)Web服務器A產生一個隨機數NA,經過兩次單向哈希運算得到 CKA=H(H(NA)),并寫入到用戶的 Coo行 ie當中,供后續驗證使用。
NA經過一次單向哈希運算后,以驗證服務器的公開密鑰加密產生 MA,MA=EAS(H(NA))。
4)Web服務器 A將用戶的MA以及目前所在的網址URLA等信息發送到驗證服務器進行身份驗證。
2.2.3 通信密鑰發放與角色獲取
1)用戶向驗證服務器傳遞身份驗證的信息,進行身份登錄的驗證。
2)身份驗證成功后,驗證服務器發放兩組通信密鑰:SKAS、SKA;并給用戶一個TID供后續識別使用。將SKAS和TID發送回用戶的Cookie存放[8]。
3)驗證服務器將用戶者的ID以及Web服務器A的信息送到RBAC服務器。
4)RBAC服務器收到ID與Web服務器A的信息后,找出該ID的Lagrange多項式,并且代入Web服務器A的服務器代碼,求得用戶在Web服務器A的原始角色值,再將此原始角色值乘上對應的代理碼,產生角色值RiA,將角色值RiA與服務器A的私密值XA作XOR運算,產生ROLEiA之后,ROLEiA=RiA⊕XA,發送回驗證服務器。
5)驗證服務器將用戶成功登錄Web服務器A的信息進行記錄,供用戶注銷時使用;驗證服務器將用戶所傳送的MA以自身的私鑰解出 H(NA),H(NA)=DAS(MA)=DAS(EAS(H(NA)));將 H(NA)與 SKA作 XOR 運算產生 W,W=SKA⊕H(NA);將 SKA作一次單向哈希運算得到 X,X=H(SKA);將 H(NA)和 ROLEiA作互斥或運算產生 Y,Y=ROLEiA⊕H(NA);將ROLEiA作一次單向哈希運算得到 Z,Z=H(ROLEiA);最后將W,X,Y,Z以HTTP Post方式發送回Web服務器A。
6)Web服務器A將自己的NA作一次單向哈希運算后,在與W及Y做互斥運算后解出SKA’及ROLEiA’,SKA’=W⊕H(NA)=(SKA⊕H(NA))⊕H(NA),ROLEiA’=Y⊕H(NA)=(ROLEiA⊕H(NA))⊕H(NA);將 SKA’與 ROLEiA’分別做一次單向哈希運算,和 X 及 Z 做比對是否相同,X=H(SKA)=H(SKA’),Z=H(ROLEiA)=H(ROLEiA’)。
將Web務器A自己的NA作兩次單向哈希運算得到CKA’,與用戶端在服務請求時獲得的并存放在Cookie中的CKA進行對比,相同則表示用戶者為原始用戶,CKA’=CKA,其過程如圖3所示。
2.2.4 登錄其他Web服務器
1)用戶身份驗證成功后,向Web服務器B申請服務。申請服務的過程與上述申請服務階段一樣,如果用戶沒有通信密鑰SKB,Web服務器B會產生隨機數NB,并產生CKB,寫入到用戶的Cookie中。Web服務器B將隨機產生的隨機數NB,做一次單向哈希運算,再用驗證服務器的公開密鑰加密產生MB以及用戶者目前所在的URLB以HTTP Post的方式發送到驗證服務器進行身份驗證。

圖3 通信密鑰發放與角色獲取流程圖Fig.3 Flow chart the work of key and role distribution
2)驗證服務器檢查用戶的Cookie中是否有驗證服務器的通信密鑰SKAS以及臨時的TID,若有則表示已通過身份驗證,若否則進行身份驗證。
3)驗證服務器將用戶的ID以及Web服務器B的信息送到RBAC服務器。
4)RBAC服務器收到ID與Web服務器B的信息后,找出該ID的Lagrange多項式,并且代入Web服務器B的服務器代碼之后,求得用戶在Web服務器B的原始角色值,再將此原始角色值乘上對應的代理碼,產生角色值RiB,將角色值RiB與服務器B的私密值XB作XOR運算,產生ROLEiB后,發送回驗證服務器。
5)驗證服務器將用戶成功登錄Web服務器B的信息進行記錄,供用戶退出時使用,驗證服務器將用戶所傳送的MB以自身的密鑰解出 H(NB),將 H(NB)與 SKB作 XOR 運算產生W;將SKB作一次單向哈希函數運算得到 X;將H (NB)和ROLEiB作XOR運算產生Y;將ROLEiB作一次單向哈希運算得到Z;最后將W,X,Y,Z以HTTP Post方式送回服務服務器B。
6)服務服務器B將自己的NB作一次單向哈希運算后,在與 W及 Y做 XOR運算后解出 SKB’及 ROLEiB’,將 SKB’與 ROLEiB’分別做一次單向哈希運算,和X及Z做比對是否相同。
將Web務器B自己的NB作兩次單向哈希運算得到CKB’,與用戶端在服務請求時獲得的并存放在Cookie中的CKB進行對比,相同則表示用戶者為原始用戶,CKB’=CKB。
2.2.5 運行服務
1)用戶向Web服務器A申請服務。
2)Web服務器檢查使用者Cookie是否有通信密鑰SKA,若有則表示用戶已登錄過服務服務器A。

4)RiA除以2,如果能整除則商為用戶原始的角色值,如果不能整除,則拒絕服務。
服務流程如圖4所示。

圖4 運行服務流程圖Fig.4 Flow chart the work of Service Execut
2.2.6退 出
用戶按照正常程序進行退出,Web服務器將用戶信息發送至驗證服務器,驗證服務器查詢用戶登錄過的Web服務器,并將原先發放給用戶的通信密鑰SKAS以及Web服務器與用戶所用的通信密鑰SKn做超時丟棄處理,即完成退出。
如果用戶沒有依照正常程序退出,密鑰具有時間限制,待其超時后,密鑰會自動失效;若用戶直接關閉瀏覽器,則存放在Cookie中的密鑰也將超時丟棄。
通過對該模型的研究,在服務器端,不需要變更現有的網絡架構,不需要額外安裝系統軟件;在用戶端,用戶只需要使用支持W3C(World Wide Web Consortium)標準的瀏覽器,不需要額外安裝用戶端軟件,也不會改變使用者原本的使用習慣,就可以平滑的過渡,保留了用戶的操作習慣;在系統平臺方面沒有任何限制;在實現技術上,使用了目前已經成熟的技術,例如:HTTP、Cookies、非對稱式加解密、XOR 運算、單向哈希運算等,并且都可以使用免費的Open source,節約了建設成本,在Web界面上達到單點登錄結合用戶授權的目的。本研究所提出的模型依然有不足之處,跨域和角色分組將是未來研究的方向。
[1]季曼,林中.單點登錄方案的研究與設計[J].計算機工程與設計,2009,30(12):2862-2864.
JI Min,LIN Zhong.Research and design of single sign-on scheme[J].Computer Engineering and Design,2009,30(12):2862-2864.
[2]侯瀟.角色-用戶-權限控制設計與實現 [J].電子設計工程,2009,19(12):96-101.
HOU Xiao.Design and implementation of role-users-access control[J].International Electronic Elements,2009,19(12):96-101.
[3]梁志罡.基于Web Service的混合架構單點登錄的設計[J].計算機應用,2008,30(12):3363-3364.
LIANG Zhi-gang.Design ofsingle sign-on forhybrid architecture based on web service[J].Journal of Computer Applications,2008,30(12):3363-3364.
[4]楊榮華.基于SOA的單點登錄系統研究與設計[D].長沙:中南大學,2008.
[5]徐寶磊,王安志.基于Session的單點登錄系統研究與設計[J].重慶文理學院學報:自然科學版,2012,31(2):75-77.
XU Bao-lei,WANG An-zhi.Research and design of single sign-on system based on session[J].Journal of Chongqing University of Arts and Sciences:Natural Science Edition,2012,31(2):75-77.
[6]張挺,耿繼秀.Web環境下的SSO實現模式的研究[J].計算機仿真,2005,22(8):128-131.
ZHANG Ting,GENG Ji-xiu.Research and Design of Webbased SSO System[J].Computer Simulation,2005,22 (8):128-131.
[7]鄧緒水,宋庭新,黃必清.單點登錄技術在企業資源集成中的應用[J].湖北工業大學學報,2012,24(2):24-27.
DENG Xu-shui,SONG Ting-xin,HUANG Bi-qing.Application of EIP-based single sign-on technology in EAI[J].Journal of Hubei University of Technology,2012,24(2):24-27.
[8]董毅南.分布式數據庫安全的關鍵技術[J].工業儀表與自動化裝置,2012(4):15-17,50.
DONG Yi-nan.The key technology of distributed database security[J].Industrial Instrumentation&Automation,2012(4):15-17,50.