摘 要: Kerberos協(xié)議是一種基于可信第三方的身份認證協(xié)議,針對Kerberos協(xié)議具有口令猜測攻擊、重放攻擊等缺陷,提出一種基于DESX算法和SHA函數(shù)的Kerberos協(xié)議改進方案,通過分析比較,改進協(xié)議不但摒棄了原Kerberos協(xié)議存在的缺陷,且以相對較小的開銷使Kerberos協(xié)議認證過程更安全可靠。
關(guān)鍵詞: Kerberos協(xié)議;身份認證;DESX;安全性;票據(jù)
Kerberos協(xié)議是麻省理工學院(MIT)在20世紀80年代為Athena計劃開發(fā)的一種基于可信第三方協(xié)助的統(tǒng)一身份認證協(xié)議,它可以在不安全的網(wǎng)絡(luò)環(huán)境中實現(xiàn)用戶對遠程服務(wù)器的訪問,并提供自動鑒別、數(shù)據(jù)安全性和完整性服務(wù),其特點是用戶只需輸入一次身份驗證信息就可以憑此驗證獲得訪問服務(wù)器的票據(jù)。至今,Kerberos已經(jīng)有5個版本,前3個版本是內(nèi)部應用版本,Kerberos V4是被公諸于眾的第1個版本,Kerberos V5針對V4存在的不足作了改進。但由于Kerberos協(xié)議基于對稱加密算法DES實現(xiàn),仍然存在口令猜測攻擊、密鑰管理困難等不足[1]。針對這些不足,學者們提出了很多對Kerberos協(xié)議的改進方案,如參考文獻[1]利用公鑰密碼體制對Kerberos協(xié)議進行了改進;參考文獻[2]基于動態(tài)密碼體制對Kerberos協(xié)議進行修正;參考文獻[3]基于橢圓曲線的零知識證明方法解決字典攻擊問題;參考文獻[4]提出基于混合加密體制和Daffier-Hellman密鑰協(xié)商對Kerberos協(xié)議的修正方案;參考文獻[5]提出用ECC算法作為加密和簽名工具對Kerberos協(xié)議進行改進。這些方案雖然從不同角度對Kerberos協(xié)議進行了修正和補充,彌補了Kerberos協(xié)議的不足,但也在很大程度上修改了Kerberos協(xié)議算法,增加了運算復雜度,提高了系統(tǒng)開銷。
本文在深入分析Kerberos協(xié)議結(jié)構(gòu)和認證過程的基礎(chǔ)上,提出了基于DESX及SHA-2函數(shù)對Kerberos協(xié)議的改進方案,不但摒棄了Kerberos協(xié)議存在的不足,增加了Kerberos協(xié)議的安全性,而且由于DESX算法是DES算法的變型,在不改變Kerberos協(xié)議認證模型及開銷較小的情況下彌補和修正了Kerberos協(xié)議的缺陷。
1 Kerberos協(xié)議及其安全性分析
1.1 Kerberos認證協(xié)議
Kerberos體系結(jié)構(gòu)由密鑰分配中心KDC(Key Distribution Center)、應用服務(wù)器和客戶3個部分組成,KDC在整個認證系統(tǒng)中處于核心地位,由認證服務(wù)器AS(Authentication Server)、票據(jù)授權(quán)服務(wù)器TGS(Ticket Granting Service)及認證數(shù)據(jù)庫組成。
Kerberos協(xié)議以域為單位進行管理,每個域中包含若干客戶、1個認證服務(wù)器AS、1個票據(jù)授權(quán)服務(wù)器TGS和若干應用服務(wù)器。因此,Kerberos認證協(xié)議分為兩種認證模式:域內(nèi)認證和跨域認證。本文主要從域內(nèi)認證模式闡述對Kerberos協(xié)議的改進。Kerberos協(xié)議認證流程共有6個步驟,如圖1所示。
本文用到的符號定義:
C:客戶;
S:應用服務(wù)器;
IDc:用戶的身份標識;
ADc:用戶的地址;
Kx:X與AS的共享密鑰;
Kx,y:x、y共享的會話密鑰;
Ticketx,y:訪問時的票據(jù);
Lifetime:生存時間;
TS:時間戳,信息的發(fā)送時間;
Authenticationc:由客戶產(chǎn)生,用于驗證用戶所持票據(jù)的真實性;
{M}Kc:密鑰Kc加密信息M;
Option:可選項,用于請求在票據(jù)中設(shè)置相應的標志位,通過設(shè)置相應的標志,可以在協(xié)議中添加一些控制;
Nonce:一個保鮮數(shù),它表示回應的信息是新鮮的,預防遭到重放攻擊;
Times:客戶請求在票據(jù)中設(shè)置時間,包括請求票據(jù)的起始時間、過期時間和過期時間的更新時間,從而允許票據(jù)擁有任意長度的有效期;
Subsky:子密鑰,用以保護某一特定的應用程序會話;
Seq:可選項,說明在此次會話中服務(wù)器向客戶發(fā)送消息的序列號,將消息排序可以防止重放攻擊。
Kerberos協(xié)議的信息交換過程共分3個階段6個步驟[6-7]:
?。?)客戶C請求AS發(fā)放訪問TGS的許可票據(jù)Tickettgs。C發(fā)送明文請求消息到AS,AS返回1張加密過的票據(jù),加密密鑰Kc由用戶口令Password得到。當AS回應的信息到達客戶端,客戶提示用戶C輸入口令,由此產(chǎn)生密鑰Kc,并對收到的報文解密,得到Tickettgs,若口令正確,票據(jù)正確解密,恢復加密的許可票據(jù)Tickettgs,否則提示錯誤返回。
①C→AS:{Options,IDc,IDtgs,Times,Nonce1}
?、贏S→C:{IDc,Tickettgs{Kc,tgs,Times,Nonce1,IDtgs}Kc}
Tickettgs={flags,Kc,tgs,IDc,ADc,Times}Ktgs
(2)客戶C訪問TGS獲得訪問應用服務(wù)器S的服務(wù)許可票據(jù)Tickets。TGS對收到的許可票據(jù)Tickettgs解密,并核查解密后的信息,檢查票據(jù)有效期Times和新鮮數(shù)Nonce2,核定該票據(jù)是否過期;比較票據(jù)中的用戶信息與收到的數(shù)據(jù)包中的用戶鑒別信息是否一致,確定用戶是否為合法用戶,如用戶合法,發(fā)放訪問應用服務(wù)器的許可票據(jù)Tickets。用戶鑒別信息Authenticationc1由用戶C與TGS之間的共享密鑰加密Kc,tgs。
?、跜→TGS:{Options,IDs,Times,Nonce2,Tickettgs,Authenticationc1}
Authenticationc1={IDc,TS1}Kc,tgs
④TGS→C:{IDc,Tickets,{Kc,s,Times,Nonce2,IDs}Kc,tgs}
Tickets={flags,Kc,s,IDc,ADc,Times}Ks
?。?)客戶C據(jù)許可票據(jù)Tickets訪問應用服務(wù)器,并進行相互身份驗證。客戶持許可票據(jù)Tickets申請訪問應用服務(wù)器S,S解密信息(實現(xiàn)客戶對應用服務(wù)器身份確認),并根據(jù)Tickets和用戶鑒別信息Authenticationc2,驗證用戶身份,構(gòu)建回應信息包??蛻舢a(chǎn)生與應用服務(wù)器間會話的子密鑰Subkey和序列號seq,來確保信息傳輸?shù)陌踩院托畔鬏數(shù)捻樞蛐浴?br />
?、軨→S:{Options,ickets,Authenticationc2}
Authenticationc2={IDc,TS2,Subkey,Seq.#}Kc,s
?、轘→C:{TS2,Subkey,Seq.#}Kc,s
1.2 Kerberos的安全性分析
Kerberos協(xié)議是目前計算機網(wǎng)絡(luò)環(huán)境中應用最廣泛的第三方認證協(xié)議,Kerberos協(xié)議雖然能夠?qū)崿F(xiàn)身份認證,并提供數(shù)據(jù)完整性和保密性服務(wù),但卻存在著一定的安全缺陷。參考文獻[1]、[7]、[8]列舉了Kerberos V4協(xié)議存在的安全問題,主要有以下幾方面:
?。?)口令猜測攻擊:Kerberos協(xié)議中,AS并不直接驗證用戶的口令,只是通過用戶口令產(chǎn)生的密鑰能否解密來判斷用戶的合法身份,若攻擊者捕獲該消息,并嘗試各種口令解密,如果解密成功,攻擊者即可得到用戶口令,進而冒充用戶身份訪問服務(wù)器。
(2)重放攻擊:雖然Kerberos V4采用時間戳預防重放攻擊,但在時間戳許可的有效時間內(nèi),攻擊者若把事先準備好的偽造消息發(fā)出,服務(wù)器就很難判斷信息是否是偽造的。
?。?)票據(jù)有效期有限:Kerberos V4用8 bit表示票據(jù)的有效期,因此其最大有效期約256×5=1 280 min[8]。
除了以上所描述的缺陷,Kerberos V4還存在消息字節(jié)順序由發(fā)送者決定、域間認證不完善、采用非標準的PCBC加密模式、多次使用同一個會話密鑰等不足。Kerberos V5在V4的基礎(chǔ)上進行了修改,改用了標準的CBC加密模式、對消息字節(jié)的發(fā)送順序也作了一定的規(guī)定,并且可以設(shè)置一些標志位,增加了Nonce保鮮數(shù)、機動設(shè)置票據(jù)時間、用戶訪問應用服務(wù)器時產(chǎn)生子密鑰、添加發(fā)送消息的序列號等,解決了大部分Kerberos V4存在的問題,但Kerberos V5依然存在口令猜測攻擊的致命缺陷。
2 Kerberos協(xié)議改進方案
2.1 DESX加密算法
數(shù)據(jù)加密標準DES(Data Encryption Standard)是由IBM公司研制的一種分組對稱加密算法,自發(fā)布以來,DES在各行各業(yè)得到廣泛應用。DESX算法是RSA數(shù)據(jù)安全公司對DES算法的改進,它采用白化技術(shù)來掩飾輸入和輸出,除了有DES的56 bit密鑰外,DESX還有附加的隨機密鑰,將總密鑰長度擴展到184 bit,即使用3個64 bit的密鑰K1、K2和K3對數(shù)據(jù)塊加密,充分保證了數(shù)據(jù)的安全。DESX加密過程分為3個步驟:(1)使用K2對數(shù)據(jù)塊C做XOR運算;(2)使用K1對上一步結(jié)果做DES加密運算;(3)使用K3對第二步的結(jié)果進行XOR運算得到密文。即DESKk1,k2,k3(C)=k3?茌Desk1(k2?茌C)(密鑰K=k1.k2.k3符號“.”表示級聯(lián))[9]。
與DES和3DES相比,DESX只做了1次DES運算,計算開銷和普通DES相當,但密鑰長度提高到184 bit,在保證安全性前提下,極大地提高了執(zhí)行效率,且白化技術(shù)迫使攻擊者不僅要猜出算法密鑰,而且必須猜出1個白化鍵,因此DESX抵御各種網(wǎng)絡(luò)攻擊的能力更強。
當DESX的密鑰K=k1.k2.k3=k1.064.064時,DESX與DES兼容[9]。
2.2 SHA-2函數(shù)
Hash函數(shù)可以將任意長的數(shù)據(jù)映射為定長的Hash碼,也稱為數(shù)據(jù)摘要,即h=H(M)。它具有單向性、抗碰撞性等特點,在身份認證、數(shù)字簽名和完整性檢驗等方面得到了廣泛應用。
安全散列算法(SHA)是由美國國家標準與技術(shù)協(xié)會NIST設(shè)計發(fā)布的安全Hash函數(shù),1995年發(fā)布了FIPS180-1,稱之為SHA-1;由于SHA-1存在安全隱患,2002年,NIST又發(fā)布其修訂版FIPS180-2,并稱為SHA-2,其中包含3種新的Hash函數(shù),因其Hash值長度分別為256 bit、384 bit和512 bit,故分別稱為SHA-256、SHA-384和SHA-512。
SHA-2是一種迭代結(jié)構(gòu)的Hash函數(shù),它可以把任意長度的輸入數(shù)據(jù)壓縮成固定長度的數(shù)據(jù)摘要。SHA-2不但具有Hash函數(shù)抗碰撞性、計算不可逆等特點,且SHA-2的數(shù)據(jù)分組和摘要信息都比SHA-1大,所以它具有更高的安全性[10],其在信息安全領(lǐng)域的應用也越來越多。
2.3 建議的Kerberos協(xié)議改進方案
通過1.2節(jié)對Kerberos協(xié)議安全性的分析,對Kerberos協(xié)議的改進主要從以下幾個方面進行:
?。?)針對加密算法,原Kerberos協(xié)議采用的DES算法密鑰較短、強度較弱、存在互補對稱性等缺陷,建議Kerberos協(xié)議以184 bit密鑰的DESX算法對數(shù)據(jù)進行加密,提高了Kerberos協(xié)議的安全性。
(2)針對口令猜測攻擊,取消認證過程中的直接口令認證,改為采用SHA-2函數(shù)計算的多參數(shù)密鑰認證, 并在數(shù)據(jù)通信過程中多次實現(xiàn)對用戶的身份確認。
建議的Kerberos協(xié)議模型與原Kerberos協(xié)議模型相似,認證過程中每個階段的修改主要有以下幾點:
?。?)CAS,客戶C請求認證服務(wù)器AS發(fā)放訪問票據(jù)授權(quán)服務(wù)器TGS的許可票據(jù)Tickettgs。
客戶C發(fā)送認證信息給認證服務(wù)器,認證服務(wù)器收到信息后反饋一個密鑰Kc加密的信息及票據(jù)Tickettgs,客戶收到信息后,輸入口令Passwork作為解密密鑰Kc。在原Kerberos協(xié)議中,密鑰Kc即用戶口令Password,而建議的Kerberos協(xié)議中密鑰采用SHA-2函數(shù)計算得到,即:
Kc=Hash(Password+用戶信息+Times)
Password是用戶在系統(tǒng)中注冊的口令信息,KDC認證數(shù)據(jù)庫中僅存儲用戶Password,認證服務(wù)器在需要使用Kc加密數(shù)據(jù)時,通過Hash函數(shù)計算得到Kc;用戶信息關(guān)于用戶的一些信息,也可以是IDc或ADc等;Times為客戶在請求票據(jù)中設(shè)置的時間,包括票據(jù)的起始時間、到期時間和到期時間的更新時間。
?。?)C TGS客戶C訪問TGS獲得訪問應用服務(wù)器S的服務(wù)許可票據(jù)Tickets。
客戶收到Ktgs加密的票據(jù)Tickettgs,同IDc、Times、Authenticationc1等信息一起發(fā)送到票據(jù)授權(quán)服務(wù)器TGS,其中用戶鑒別信息Authenticationc1的作用是驗證用戶所持票據(jù)的真實性,確保票據(jù)是被擁有者所持有。但是如果攻擊者捕獲該票據(jù),并冒用IDc從另一個工作站上發(fā)送消息,會誤導票據(jù)授權(quán)服務(wù)器TGS授權(quán)給攻擊者。所以建議的Kerberos協(xié)議在Authenticationc1中添加用戶身份信息,確保信息發(fā)送者是服務(wù)器授權(quán)的用戶身份。
Authenticationc1={IDc,ADc,TS1}Kc,tgs
?。?)S C,客戶C訪問應用服務(wù)器S,并實現(xiàn)C和S的雙向身份認證。
客戶通過與應用服務(wù)器間會話的子密鑰Subkey和序列號Seq來確保信息傳輸?shù)陌踩院晚樞蛐浴?蛻舫质跈?quán)票據(jù)Tickets訪問應用服務(wù)器S,應用服務(wù)器通過客戶所持票據(jù)Tickets對其身份進行認證,同時在用戶鑒別信息Authenticationc2中添加用戶信息ADc,防止攻擊者冒充客戶身份,實現(xiàn)應用服務(wù)器和客戶的雙向確認。
Authenticationc2={IDc,ADc,TS2,Subkey,Seq.#}Kc,s
2.4 改進的Kerberos協(xié)議分析
?。?)加密算法的改進
在建議的Kerberos方案中采用DESX加密算法,DESX算法是為了克服DES算法容易受到口令猜測攻擊而提出的改進加密算法,它采用當前密碼學中流行的級聯(lián)密碼和白化技術(shù),將密鑰長度擴展到184 bit,其密鑰K2、K3被稱為白化鍵,它采用混合計算排列的輸入和輸出來掩蓋密鑰[9]。因此采用DESX加密算法的Kerberos協(xié)議安全性更強。
?。?)口令猜測攻擊
在原Kerberos協(xié)議中,認證服務(wù)器通過用戶是否能解密信息來判斷用戶的合法身份,且用戶密鑰是預先存儲在AS中的不變的用戶信息,由于通常用戶所選擇的密碼比較簡單或具有明顯的特征,極易遭到口令猜測攻擊。而建議的Kerberos方案中,用戶密鑰是通過多參數(shù)的Hash函數(shù)計算而來,且每次用戶認證時,密鑰會隨當時認證時間、參數(shù)等信息不同而不同,由于Hash函數(shù)的不可逆性,攻擊者通過口令猜測攻擊能得到是不可能實現(xiàn)的。
?。?)重放攻擊
Kerberos V4協(xié)議中,在時間戳允許的范圍內(nèi),攻擊者可以把事先準備好的偽造消息發(fā)出,進行重放攻擊。在建議的Kerberos方案中不僅設(shè)置了時間戳TS、生存期Times和保鮮數(shù)Nonce,并且在認證過程中協(xié)商產(chǎn)生序列號Seq,杜絕了重放攻擊的發(fā)生。另外在與TGS和AS的交互過程中,鑒別信息Authenticationc1和Authenticationc2中添加用戶身份信息ADc,防止攻擊者冒充客戶身份訪問服務(wù)器,更加強了對重放攻擊的預防。
?。?)用戶身份確認
在建議的Kerberos協(xié)議的實現(xiàn)過程中,每個階段都對用戶的身份進行確認,第一次,通過密鑰解密信息來確認用戶身份,第二次和第三次分別是客戶與TGS和AS交互過程中,通過在加密了的鑒別信息Authenticationc1和Authenticationc2中添加用戶身份信息ADc,實現(xiàn)對用戶身份的確認,保障認證過程中每個階段對客戶身份的鑒別,防止攻擊者冒充客戶身份。
建議的Kerberos改進方案采用DESX作為加密算法,DESX算法的計算開銷和普通DES相當,且協(xié)議認證過程僅需執(zhí)行一次Hash計算,因此在協(xié)議實現(xiàn)復雜度與加解密速度上,較參考文獻[1]、[2]、[3]、[4]、[5]提議的Kerberos改進方案[11-12],存在明顯的改善。
本文詳細分析了Kerberos認證協(xié)議,并針對Kerberos協(xié)議存在的安全隱患,提出了一種基于DESX加密算法和SHA-2函數(shù)的Kerberos改進方案。通過分析比較,建議的Kerberos改進方案彌補了原Kerberos協(xié)議存在的口令猜測攻擊和重放攻擊等缺陷,提高了協(xié)議認證過程的安全性,加強了協(xié)議認證過程中各階段對客戶身份的鑒別,有效防范了攻擊者冒充客戶身份,并且建議的協(xié)議方案與原協(xié)議實現(xiàn)模型類似,在Kerberos協(xié)議逐漸淘汰DES加密算法的過程中,具有很好的實用意義。
參考文獻
[1] RAVI GANESAN. Yaksha: Augmenting Kerberos with Public Key Cryptography[J]. Network and Distributed System Security, 1995(6):132-143.
[2] 盧小良,袁丁.對一種基于動態(tài)密碼體制的Kerberos協(xié)議的改進[J].四川師范大學學報,2006,29(2):239-242.
[3] 張健,戴威嶺,郝善勇.基于橢圓曲線的零知識證明方法對Kerberos系統(tǒng)的改進[J].計算機工程,2002,28(10):143-144.
[4] 胡宇,王世倫.基于混合體制的Kerberos身份認證協(xié)議的研究[J].計算機應用,2009,29(6):1659-1661.
[5] 文鐵華,谷士文.增強Kerberos協(xié)議安全性的改進方案[J].通信學報,2004,25(6):76-79.
[6] FREDERICK BUTLER, ILIANO CERVESATOB, AARON D. Jaggardc, Andre Scedrovd, Christopher Walstadd, Formal analysis of Kerberos 5[J]. Theoretical Computer Science,2006:57-87.
[7] STEVEN M. BELLOVIN, MICHAEL MERRITT. Limitations of the Kerberos Authentication System[J]. http://hdl.handle.net/10022/AC:P:9123,1999.
[8] 周倜,王巾盈,李夢君,等.Kerberos協(xié)議版本的分析與比較[J].計算機學報,2009,36(2):119-123.
[9] JOE KILIAN. How to Protect DES Against Exhaustive Key Search (an Analysis of DESX)[J]. Journal of Cryptology,2001(14):1,17-35.
[10] CHU HSING LIN, YI SHIUNG YEH, HUNG SHENG CHIEN, et al. Generalized secure hash algorithm: SHA-X[J].International Conference on Computer as a Tool (EUROCON), IEEE, 2011:27-29.
[11] 莫燕,張玉清,李學干.對Kerberos協(xié)議的攻擊及對策研究[J].計算機工程,2005,30(10):66-69.
[12] NEUMAN, KERBEROS B C. An authentication service for computer networks[J]. Communications Magazine,IEEE.1994,32(9):33-38.