戚 湧,李文娟,李千目
(南京理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇 南京 210094)
隨著基于網(wǎng)絡(luò)的應(yīng)用的迅速發(fā)展,網(wǎng)絡(luò)信息安全問(wèn)題越來(lái)越突出,其中身份認(rèn)證及訪問(wèn)授權(quán)問(wèn)題顯得尤為重要。Kerberos是近年來(lái)應(yīng)用廣泛的安全認(rèn)證協(xié)議之一,由于Kerberos協(xié)議中身份認(rèn)證服務(wù)和票據(jù)授權(quán)服務(wù)是集中式管理的,容易形成瓶頸,系統(tǒng)的性能和安全性也過(guò)分依賴于服務(wù)的性能和安全。當(dāng)前對(duì)Kerberos協(xié)議的研究主要集中在身份認(rèn)證部分,而對(duì)訪問(wèn)授權(quán)問(wèn)題僅提供了基本擴(kuò)展方式,并未提供具體訪問(wèn)授權(quán)策略。
本文將基于XACML授權(quán)模型的與Kerberos協(xié)議集成,為Kerberos協(xié)議增加訪問(wèn)授權(quán)管理。在此基礎(chǔ)上,使用SAML安全斷言機(jī)制進(jìn)行消息的傳送,并且增加基于EAP?Md5的身份預(yù)驗(yàn)證機(jī)制,力求加強(qiáng)Kerberos協(xié)議的安全性。
Kerberos作為一個(gè)分布式的認(rèn)證服務(wù)系統(tǒng),是目前互聯(lián)網(wǎng)上一個(gè)重要的身份認(rèn)證協(xié)議。Kerberos協(xié)議主要用于網(wǎng)絡(luò)身份認(rèn)證服務(wù)(Authentication),它的特點(diǎn)是用戶只要輸入一次身份認(rèn)證信息,通過(guò)驗(yàn)證后即可獲得可用于訪問(wèn)多個(gè)服務(wù)的票據(jù)[1],即SSO(Single Sign On)。
Kerberos模型涉及以下術(shù)語(yǔ):
(1)Client,用戶??梢允钦谶\(yùn)行的進(jìn)程,也可以是普通的用戶。
(2)Server,應(yīng)用服務(wù)器。向用戶提供所請(qǐng)求服務(wù)的實(shí)體。
(3)TGS(Ticket?Granting Server),票據(jù)發(fā)放服務(wù)器。為用戶發(fā)放票據(jù)的服務(wù)器,用戶使用該票據(jù)向應(yīng)用服務(wù)器表明自己的身份。
(4)AS(Authentication Server),身份認(rèn)證服務(wù)器。為用戶發(fā)放票據(jù),用戶可以使用該票據(jù)向TGS表明自己的身份。
(5)KDC(Key Distribution Center)。TGS與AS統(tǒng)稱為KDC,即密鑰分配中心。
(6)Ticket,票據(jù)。是一種有TGS發(fā)放的一種數(shù)據(jù)結(jié)構(gòu),在Kerberos協(xié)議中用來(lái)記錄信息、密鑰等,Clien向Server出示票據(jù)以證明身份,票據(jù)中包括了Client的身份標(biāo)識(shí)、時(shí)間戳、會(huì)話密鑰等信息。
(7)TGT(Ticket?Granting Ticket),票據(jù)授權(quán)票據(jù)。Client用TGT向TGS證明自己的身份。由AS發(fā)放。
(8)ST(service ticket),服務(wù)票據(jù)。Client用ST向Server證明自己的身份,由TGS發(fā)放。
Kerberos協(xié)議的執(zhí)行過(guò)程如圖1所示:
圖1 Kerberos協(xié)議的執(zhí)行過(guò)程
Kerberos協(xié)議執(zhí)行過(guò)程包括6個(gè)過(guò)程:
(1)C_AS_REQ:Client向AS申請(qǐng)票據(jù)TGT,消息中包括自己的主體標(biāo)識(shí),TGS的主體標(biāo)識(shí)及產(chǎn)生隨機(jī)數(shù)串;
(2)C_AS_REP:AS向Client發(fā)送票據(jù)TGT以及Cli?ent與TGS的會(huì)話密鑰;
(3)C_TGS_REQ:Client向TGS申請(qǐng)?jiān)L問(wèn)應(yīng)用服務(wù)器Server的票據(jù)ST,發(fā)送的消息包括票據(jù)TGT,Server的標(biāo)識(shí)和隨機(jī)數(shù);
(4)C_TGS_REP:TGS接受到消息(3)后,首先驗(yàn)證票據(jù)TGT,如果驗(yàn)證通過(guò),則驗(yàn)證CLient的身份,通過(guò)驗(yàn)證后,生成一個(gè)CLient與Server共享的密鑰和一個(gè)服務(wù)票據(jù)ST給Client;
(5)C_S_REQ:Client用收到的ST向應(yīng)用服務(wù)器認(rèn)證;
(6)應(yīng)用服務(wù)器接收到消息(5)后,解密得到ST,驗(yàn)證有效性后,完成應(yīng)用服務(wù)器對(duì)用戶的認(rèn)證過(guò)程。
EAP協(xié)議是由點(diǎn)對(duì)點(diǎn)協(xié)議 PPP(Peer?Peer Protocol)擴(kuò)展而來(lái),可以在EAP協(xié)議的基礎(chǔ)上擴(kuò)展多種認(rèn)證機(jī)制,是一種建立在挑戰(zhàn)/響應(yīng)通信模型上的通信協(xié)議。認(rèn)證服務(wù)器通過(guò)EAP機(jī)制向客戶端提問(wèn),所有的認(rèn)證都由后臺(tái)服務(wù)器完成。
EAP?MD5認(rèn)證協(xié)議流程如圖2所示:
無(wú)論何時(shí)Server發(fā)出EAP?Failure消息,都表示認(rèn)證過(guò)程從此終止。
SAML即安全斷言標(biāo)記語(yǔ)言,英文全稱是Security Assertion Markup Language。SAML標(biāo)準(zhǔn)中定義了兩種身份,即身份提供者(identity provider)和服務(wù)提供者(Service Provider),SAML用于在這兩種身份之間交換認(rèn)證和授權(quán)數(shù)據(jù)。
圖2 EAP?MD5認(rèn)證協(xié)議流程
SAML規(guī)范由聲明、請(qǐng)求/響應(yīng)協(xié)議、綁定和配置文件由四個(gè)部分組成:
(1)聲明(Assertions)。它是SAML的基本數(shù)據(jù)對(duì)象,描述了主體的身份、屬性、權(quán)限信息。其分為認(rèn)證聲明(Authentication Assertion),屬性聲明(Attribute Asser?tion),授權(quán)決議聲明(Authorization Decision Assertion)。
(2)請(qǐng)求、響應(yīng)協(xié)議(Request/Response)。該協(xié)議規(guī)定了SAML數(shù)據(jù)在兩點(diǎn)間共享時(shí)的消息格式和種類。SAML給出兩種消息格式:請(qǐng)求消息(Request)和響應(yīng)消息(Response)。Request中可以分為三種查詢類型(Query),分別是主體查詢(SubjectQuery)、認(rèn)證查詢(AuthenticationQuery)、屬性查詢(AttributeQuery)和授權(quán)決策查詢(AuthorizationtQuery),這三種查詢對(duì)應(yīng)三種聲明格式。
(3)綁定(Bindings)。綁定定義了如何通過(guò)標(biāo)準(zhǔn)的傳輸協(xié)議和消息收發(fā)協(xié)議交換SAML消息。
(4)配置文件(Profiles)。配置文件是SAML規(guī)范定義的一組規(guī)則,描述了聲明是在底層消息協(xié)議中是如何嵌入、提取和集成的。
XACML(Extensible AccessControlMarkup Language)是一種用于決定請(qǐng)求/響應(yīng)的通用訪問(wèn)控制策略語(yǔ)言和執(zhí)行授權(quán)策略的框架,它被廣泛用于訪問(wèn)控制策略的執(zhí)行。在典型的訪問(wèn)控制框架中,主要有策略執(zhí)行點(diǎn)PEP(Policy Enforcement Point)和策略決定點(diǎn) PDP(Policy Decision Point)組成。
PEP用于對(duì)PDP提出申請(qǐng)和執(zhí)行PDP返回的訪問(wèn)控制決策,它將資源申請(qǐng)信息發(fā)給策略決策點(diǎn)(PDP),PDP將依據(jù)已有的安全訪問(wèn)控制策略,對(duì)申請(qǐng)進(jìn)行評(píng)估并作出授權(quán)決定,最后將決定返回給PEP。
本文提出一種增加EAP?MD5預(yù)驗(yàn)證和XACML?SAML訪問(wèn)控制模型的新的Kerberos構(gòu)架,Kerberos協(xié)議在對(duì)Client提供TGT之前對(duì)其進(jìn)行EAP預(yù)認(rèn)證,并在向TGS申請(qǐng)ST時(shí),利用XACML框架進(jìn)行授權(quán)管理,認(rèn)證和授權(quán)的具體過(guò)程在下文中詳述。
這種新的Kerberos總體構(gòu)架如圖3所示。
圖3 一種新的Kerberos總體框架
(1)KDC。本體系結(jié)構(gòu)的主要成分。由票據(jù)發(fā)放服務(wù)器TGS和認(rèn)證服務(wù)器AS組成。AS除了作為Kerbe?ros協(xié)議中的身份認(rèn)證服務(wù)器,在基于EAP協(xié)議的預(yù)身份驗(yàn)證中,AS扮演了Server的角色,與用戶交換EAPREQ/RESP包。它還通過(guò)AAA基礎(chǔ)設(shè)施對(duì)EAP報(bào)文轉(zhuǎn)發(fā)。關(guān)于授權(quán)過(guò)程中,TGS服務(wù)將負(fù)責(zé)用戶屬性檢索和訪問(wèn)控制的要求,充當(dāng)了XACML訪問(wèn)控制模型PEP(策略實(shí)施點(diǎn))的角色,分別與IDP和PDP進(jìn)行交互,根據(jù)PDP決策結(jié)果,確定ST是否必須頒發(fā)給客戶端。
(2)AAA服務(wù)器。它是負(fù)責(zé)通過(guò)EAP的認(rèn)證用戶的實(shí)體。因此,具有EAP服務(wù)器的功能。AAA服務(wù)器與IDP交互,請(qǐng)求要求認(rèn)證和授權(quán)信息。
(3)idp統(tǒng)一認(rèn)證中心(identity provider)。idp用于解碼SAML請(qǐng)求和生成SAML響應(yīng),提供對(duì)用戶的身份認(rèn)證,idp可能會(huì)要求提供有效登錄憑據(jù)或檢查有效會(huì)話Cookie以驗(yàn)證用戶身份,驗(yàn)證成功后,idp會(huì)生成帶有驗(yàn)證過(guò)的用戶信息的SAML響應(yīng)。
(4)策略決策點(diǎn)(PDP)。它是KDC放置訪問(wèn)控制策略的實(shí)體。PDP從PEP(由KDC扮演PEP的角色)處接受請(qǐng)求,評(píng)估適用于該請(qǐng)求的策略,并將授權(quán)決定返回給PEP(KDC)。
(5)服務(wù)Service。提供的特定服務(wù)(例如,Web,SSH,F(xiàn)TP等)的實(shí)體。
Client需要得到Kerberos票據(jù)ST才能得到Service服務(wù)器提供具體服務(wù),為了從TGS處獲得ST,必須先從AS處得到TGT,在這之前用戶必須通過(guò)AAA服務(wù)器執(zhí)行基于EAP的預(yù)身份驗(yàn)證。AAA服務(wù)器和idp成功驗(yàn)證Client身份后,向KDC發(fā)送認(rèn)證聲明指出已經(jīng)成功認(rèn)證Client端,KDC向用戶發(fā)送TGT,其中包括AAA服務(wù)器發(fā)回的類似認(rèn)證壽命的信息。用戶得到TGT后向AS申請(qǐng)ST,KDC開始執(zhí)行授權(quán)管理,KDC通過(guò)SAML斷言向idp發(fā)送Client的身份信息,KDC作為XACML框架中的PEP向PDP請(qǐng)求授權(quán)決定,(PDP提供整體的訪問(wèn)控制策略)。PDP查詢?cè)L問(wèn)控制策略并做出授權(quán)決定,并將授權(quán)決定返回發(fā)送給KDC,KDC根據(jù)授權(quán)決定頒發(fā)ST給Client。
本文提出的新Kerberos協(xié)議的認(rèn)證授權(quán)過(guò)程如圖4所示。
圖4 認(rèn)證授權(quán)過(guò)程
具體的認(rèn)證、授權(quán)操作協(xié)和如下:
(1)C_AS_REQ、EAP?Start,從Client向AS發(fā)送TGT請(qǐng)求,也相當(dāng)于向EAP協(xié)議的服務(wù)器發(fā)送EAP?Start報(bào)文,開始EAP接入。
(2)C_AS_REP、EAP?REQ(id),AS向Client返回響應(yīng),發(fā)送了EAP?REQ(id)報(bào)文,要求Client提供身份信息。
(3)C_AS_REQ、EAP?RESP(id),Client回應(yīng)服務(wù)器,發(fā)送身份信息。
(4)AAA_REQ、EAP?RESP(id),AS將受到的EAP?RESP(id)報(bào)文封裝,發(fā)送給AAA服務(wù)器。
(5)AAA_REP、EAP?REQ/MD5?Challenge,AAA 服務(wù)器產(chǎn)生一個(gè)Challenge,通過(guò)AS將報(bào)文發(fā)送給客戶端。
(6)C_AS_REP、EAP?REQ/MD5?Challenge,AS將收到的報(bào)文發(fā)送給Client,要求客戶端進(jìn)行認(rèn)證。
(7)C_AS_REQ、EAP?RESP/MD5?Challenge(pass?word),客戶端收到EAP?REQ/MD5?Challenge報(bào)文后,將密碼和Challenge做MD5算法后的password發(fā)送給AS。
(8)AAA_REQ、EAP?RESP/MD5?Challenge(pass?word),AS將收到的報(bào)文發(fā)給AAA服務(wù)器進(jìn)行驗(yàn)證。
(9) AAA_idp_REQ(SAMLAuthenticationQuery),AAA服務(wù)器根據(jù)用戶信息做MD5算法后判斷是否合法后,向idp發(fā)送SAML認(rèn)證請(qǐng)求,要求idp對(duì)Client認(rèn)證。
(10)AAA_idp_RESP,idp對(duì)接收到的認(rèn)證請(qǐng)求作出響應(yīng),對(duì)Client進(jìn)行認(rèn)證,如果成功,給Client進(jìn)行授權(quán),如果認(rèn)證失敗,則結(jié)束。
(11)AAA_REP、EAP?Success(或者EAP?FAilure),AAA向發(fā)送AS認(rèn)證結(jié)果。
(12)C_AS_REP、EAP?Success,AS向Client發(fā)送認(rèn)證結(jié)果,頒發(fā)TGT。認(rèn)證過(guò)程結(jié)束。
(13)C_TGS_REQ(TGT),Client向TGS發(fā)送TGT,申請(qǐng)ST票據(jù)。
(14)TGS_idp_REQ、SAMLAttributeQuery,TGS向idp發(fā)送屬性查詢的消息,獲得Client相關(guān)屬性信息。
(15)TGS_idp_RESP,idp對(duì)接受的屬性查詢申請(qǐng)作出響應(yīng),返回Client相關(guān)屬性信息。
(16)TGS_PDP_REQ、SAMLAuthorizationtQuery,TGS將Client的身份信息、屬性信息發(fā)送給PDP,發(fā)送授權(quán)決策查詢,請(qǐng)求PDP進(jìn)行決策。
(17)TGS_PDP_RESP,PDP做出決策,并將決策結(jié)果返回給TGS。
(18)C_TGS_REP(ST),TGS根據(jù)PDP發(fā)回的決策,決定是否頒發(fā)ST給Client。授權(quán)過(guò)程結(jié)束。
本文在Kerberos協(xié)議的基礎(chǔ)上,增加了基于EAP?MD5協(xié)議的預(yù)認(rèn)證服務(wù)和基于XACML框架的授權(quán)管理。通過(guò)EAP?MD5協(xié)議,提供了使用AAA服務(wù)器對(duì)Client端進(jìn)行認(rèn)證的可能,與之前Kerberos傳統(tǒng)的認(rèn)證方式相比,使用AAA服務(wù)器更好地實(shí)現(xiàn)了對(duì)Client的身份管理,也可以在此基礎(chǔ)進(jìn)行授權(quán)和計(jì)費(fèi)的擴(kuò)展,并且在Client需要跨域訪問(wèn)服務(wù)的時(shí)候,本地KDC與AAA服務(wù)器進(jìn)行通信,避免了跨域時(shí)多個(gè)KDC之間的協(xié)作時(shí)的安全性問(wèn)題。
基于SAML技術(shù)和XACML技術(shù)的授權(quán)管理技術(shù)已經(jīng)成熟,而傳統(tǒng)的Kerberos協(xié)議并未將授權(quán)管理納入考慮。本文將這兩種技術(shù)與Kerberos協(xié)議相結(jié)合,為Ker?beros提供授權(quán)管理。其中,用戶的屬性有idp管理,PEP的角色由KDC扮演,增加了相應(yīng)的策略決策點(diǎn),PDP將負(fù)責(zé)處理訪問(wèn)控請(qǐng)要求,檢查策略和回復(fù)由KDC的強(qiáng)制執(zhí)行的決定。在這個(gè)意義上,授權(quán)管理對(duì)服務(wù)是透明的。
本文提出一種新的方法,Client為了訪問(wèn)基于Ker?beros的服務(wù),要先進(jìn)行EAP?MD5協(xié)議的預(yù)認(rèn)證,提高了認(rèn)證的安全性。使用AAA服務(wù)器不僅能夠管理認(rèn)證和密鑰分配,還具有授權(quán)和計(jì)費(fèi)的功能,方便未來(lái)進(jìn)行擴(kuò)展。另一方面,利用現(xiàn)有的SAML配置文件,PEP/PDP的結(jié)構(gòu)也符合XACML框架,利用SAML與XACML框架進(jìn)行授權(quán)管理,系統(tǒng)可以在通過(guò)控制授權(quán)判定條件等使得授權(quán)管理更加靈活。
注:本文通訊作者為李文娟。
[1]文鐵華,谷士文.增強(qiáng)Kerberos協(xié)議安全性的改進(jìn)方案[J].通信學(xué)報(bào),2004,25(6):76?79.
[2]KOHL J,NEUMAN C.RFC1510:the Kerberos network au?thentication service(V5)[M].[S.l.]:ISI,1993.
[3]韓偉,范植華.基于SAML的單點(diǎn)登錄技術(shù)在Web服務(wù)中的應(yīng)用研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(3):634?636.
[4]羅昌行,歐陽(yáng)晉,章衛(wèi)國(guó).基于SAML標(biāo)準(zhǔn)的信任與授權(quán)服務(wù)平臺(tái)設(shè)計(jì)[J].計(jì)算機(jī)工程,2005,31(13):118?120.
[5]王曼珠,周亮.基于RADIUS/EAP的WLAN認(rèn)證及其安全性分析[J].電子科技大學(xué)學(xué)報(bào),2005,34(2):168?171.
[6]陳家琪,馮俊,郝妍.無(wú)證書密鑰協(xié)商協(xié)議對(duì)跨域Kerberos的改進(jìn)[J].計(jì)算機(jī)工程,2010,36(20):150?152.
[7]劉克龍,卿斯?jié)h,蒙楊.一種利用公鑰體制改進(jìn)kerberos協(xié)議的方法[J].軟件學(xué)報(bào),2001(12):874?877.
[8]李曉峰,馮登國(guó),徐震.基于擴(kuò)展XACML的策略管理[J].通信學(xué)報(bào),2007,28(1):103?110.
[9]ZRELLI Saber,SHINODA Yoichi.Specifying Kerberos over EAP:Towards an integrated network access and Kerberos sin?gle sign?on process[C]//21st International Conference on Ad?vanced Networking and Applications.Niagara Falls,Ontario,Canada:IEEE,2007:490?497.
[10]EMAN E I,KOUTB E,KELASH M,et al.An optimized ker?beros authentication protocol[C]//International Conference on Computer Engineering&Systems.Cairo:[s.n.],2009:508?513.