郭 非
摘 要 Kerberos認(rèn)證協(xié)議在身份認(rèn)證領(lǐng)域具有廣泛的應(yīng)用,但是Kerberos協(xié)議還存在許多不足之處。本文詳細(xì)分析了Kerberos協(xié)議的認(rèn)證過程,并針對(duì)協(xié)議中的安全漏洞,提出基于AES和RSA結(jié)合的認(rèn)證協(xié)議改進(jìn)方案及利用Diffie-Hellman密鑰協(xié)商改進(jìn)Kerberos協(xié)議。
關(guān)鍵詞 Kerberos 認(rèn)證工作流程 AES RSA Diffie-Hellman密鑰協(xié)商
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A
1引言
身份認(rèn)證協(xié)議是一種特殊的通信協(xié)議,是通信雙方身份認(rèn)證的基礎(chǔ)和前提,其目的在于通過協(xié)議消息的傳遞來(lái)達(dá)成通信主體身份的認(rèn)證,并在此基礎(chǔ)上為下一步的安全通信分配所使用的會(huì)話密鑰。
Kerberos鑒別是一種使用對(duì)稱密鑰加密算法來(lái)實(shí)現(xiàn)通過可信第三方密鑰分發(fā)中心(KDC)的身份認(rèn)證系統(tǒng)。Kerberos是最早被廣泛使用的認(rèn)證服務(wù)。Kerberos實(shí)現(xiàn)了服務(wù)器和用戶雙向身份認(rèn)證,防止了通信過程中非授權(quán)的用戶獲得未授權(quán)的服務(wù)或數(shù)據(jù)。
2 Kerberos認(rèn)證協(xié)議
2.1 Kerberos認(rèn)證協(xié)議基本原理
Kerberos使用對(duì)稱密鑰加密算法來(lái)實(shí)現(xiàn)通過可信第三方密鑰分發(fā)中心的認(rèn)證服務(wù),它并不依賴于主機(jī)操作系統(tǒng)和地址,提供了通信雙方之間相互的身份認(rèn)證手段。
Kerberos協(xié)議中有3個(gè)參與方:包括通信雙方及一個(gè)密鑰分發(fā)中心(KDC)。當(dāng)某個(gè)應(yīng)用進(jìn)程需要訪問另外一個(gè)服務(wù)進(jìn)程時(shí),需要首先向服務(wù)器驗(yàn)證自己的身份,同時(shí)也要確認(rèn)該服務(wù)器的身份,這樣就構(gòu)成了雙向的身份認(rèn)證。將發(fā)起認(rèn)證服務(wù)的一方稱為客戶方,將客戶方需要訪問的對(duì)象稱為服務(wù)器方。在Kerberos中,客戶方證明自己身份的方式是向服務(wù)器方遞交自己的“憑據(jù)”(ticket)。憑據(jù)是KDC發(fā)出的??蛻舴交蛘叻?wù)器方相信憑據(jù)真實(shí)性的基礎(chǔ)是與KDC共享的密鑰。一個(gè)憑據(jù)只在一段有限的時(shí)間內(nèi)有效,稱為憑據(jù)的生命期。
2.2 Kerberos認(rèn)證協(xié)議的工作流程
Kerberos認(rèn)證協(xié)議的工作流程如下:
(1)客戶向認(rèn)證服務(wù)器(Authentication Server,AS)提出“票據(jù)授予票據(jù)”(Ticket Granting Ticket,TCT)請(qǐng)求。
(2)Kerberos認(rèn)證服務(wù)器返回會(huì)話密鑰和一個(gè)TGT給客戶。
(3)客戶向TGS請(qǐng)求訪問應(yīng)用服務(wù)器的票據(jù)。
(4)票據(jù)授予服務(wù)器返回訪問應(yīng)用服務(wù)器的票據(jù)和新的會(huì)話密鑰。
(5)客戶用這個(gè)票據(jù)和認(rèn)證器向應(yīng)用服務(wù)器請(qǐng)求服務(wù)。
(6)服務(wù)器返回時(shí)間戳和服務(wù)器名來(lái)證明自己是客戶需要的服務(wù)。
2.3 Kerberos協(xié)議的局限性
2.3.1 存在口令猜測(cè)攻擊
Kerberos防止口令猜測(cè)攻擊的能力很弱,Kerberos協(xié)議模型沒有對(duì)口令進(jìn)行額外的保護(hù)[6]。在Kerberos協(xié)議的第二個(gè)數(shù)據(jù)包中,會(huì)話密鑰由KC進(jìn)行加密的,而KC是由用戶口令衍生而成的密鑰,特別是當(dāng)用戶口令的強(qiáng)度不夠時(shí),將很容易受到基于密碼字典的猜測(cè)攻擊。攻擊者通過以往搜集的用戶信息,利用窮舉的方法進(jìn)行猜測(cè)攻擊,并根據(jù)反饋的結(jié)果進(jìn)行調(diào)整,最終獲取用戶的口令。
2.3.2客戶方及服務(wù)器方缺乏相互認(rèn)證
在Kerberos協(xié)議認(rèn)證的過程中,服務(wù)器沒有對(duì)用戶進(jìn)行認(rèn)證,用戶也沒有確認(rèn)服務(wù)器的真實(shí)性,導(dǎo)致了巨大的安全威脅。
對(duì)客戶方而言,攻擊者可以通過偽造認(rèn)證服務(wù)器將以前截獲的流程(2)中的數(shù)據(jù)包返回給用戶,由于用戶收到的是偽造的數(shù)據(jù)包和憑據(jù)信息,這些信息無(wú)法在后續(xù)過程中使用和驗(yàn)證,因此將造成用戶驗(yàn)證失效,破壞系統(tǒng)的可用性。
對(duì)服務(wù)器方而言,攻擊者可以利用認(rèn)證服務(wù)器無(wú)需進(jìn)行客戶鑒別就產(chǎn)生“憑據(jù)”的漏洞對(duì)認(rèn)證服務(wù)器進(jìn)行拒絕服務(wù)攻擊。例如攻擊者在相當(dāng)短的時(shí)間內(nèi)發(fā)送大量的請(qǐng)求包,將造成認(rèn)證服務(wù)器頻繁創(chuàng)建票據(jù)許可票據(jù),這將消耗大量的系統(tǒng)資源并有可能導(dǎo)致系統(tǒng)崩潰。
另外,不能提供抗否認(rèn)認(rèn)證機(jī)制,惡意軟件攻擊,抗重放攻擊,密鑰的管理、分配和存儲(chǔ)等都是Kerberos協(xié)議面臨的嚴(yán)峻問題。
3 Kerberos的改進(jìn)
3.1 對(duì)稱密鑰與不對(duì)稱密鑰的結(jié)合使用
公共密鑰方案相比對(duì)稱密鑰方案處理速度慢,因此通常把公共密鑰與對(duì)稱密鑰技術(shù)結(jié)合起來(lái)實(shí)現(xiàn)最佳性能,即用公共密鑰技術(shù)在通信雙方之間傳送對(duì)稱密鑰,而用對(duì)稱密鑰來(lái)實(shí)現(xiàn)對(duì)實(shí)際傳輸?shù)臄?shù)據(jù)加密和解密。
目前不對(duì)稱密鑰加密體制和對(duì)稱密鑰加密體制的代表算法分別為RSA算法和AES算法。RSA算法屬于公共密鑰方案,在密碼體制中加密和解密采用兩個(gè)不同的相關(guān)的密鑰。每個(gè)通信方在進(jìn)行保密通信的時(shí)候有兩個(gè)相關(guān)的密鑰,一個(gè)公開,另一個(gè)保密。對(duì)不同的通信對(duì)象只需保密自己的解密密鑰即可,所以對(duì)加密密鑰的更新非常便捷。AES算法屬于對(duì)稱密碼體制,加密和解密采用相同的密鑰,因此要求通信雙方對(duì)密鑰進(jìn)行秘密分配,密鑰的更新比較困難,而且對(duì)不同的通信對(duì)象,AES需產(chǎn)生和保管不同的密鑰。AES算法的核心技術(shù)是在相信復(fù)雜函數(shù)可以通過簡(jiǎn)單函數(shù)迭代若干次得到的原則下,利用簡(jiǎn)單圈函數(shù)和對(duì)合等運(yùn)算,充分利用了非線性運(yùn)算,因此可以利用軟件和硬件進(jìn)行高速實(shí)現(xiàn);而RSA算法中多次需要進(jìn)行大整數(shù)的乘冪運(yùn)算,通常密鑰越長(zhǎng),加密效果越好,但加解密的開銷也很大,相比而言效率上要相差很多。因此AES算法具有加解密速度快、安全強(qiáng)度高等優(yōu)點(diǎn),在軍事、外交及商業(yè)應(yīng)用中使用得越來(lái)越普遍,但是由于存在密鑰發(fā)行與管理的不足,在提供數(shù)字簽名、身份認(rèn)證等方面需要與RSA算法共同使用,已達(dá)到更好的安全效果。
由于AES算法和RSA算法各具所長(zhǎng),因此我們可以將這兩種算法相結(jié)合,得到一種新的加密方案,將其應(yīng)用到Kerberos協(xié)議認(rèn)證過程中去。這種加密方案的基本原理是:
在Kerberos通信雙方的通信前期,若A要向B送去信息m,A可用A的保密的解密算法DA對(duì)m進(jìn)行加密得到DA(m),再用B的公開算法E對(duì)DA(m)進(jìn)行加密得到:
C=EB(DA (m))
B收到密文C后先用自己掌握的解密算法DB對(duì)C進(jìn)行解密,再用A的公開算法EA對(duì)DAM進(jìn)行節(jié)目得到EA(DA(m))=m,從而得到明文m。這樣的加密方案既能保證數(shù)據(jù)傳輸?shù)姆奖憧旖?同時(shí)也確保了相關(guān)信息的安全性與機(jī)密性。
3.2 利用Diffie-Hellman密鑰協(xié)商改進(jìn)Kerberos協(xié)議
本文中提出的KDH協(xié)議利用了Diffie-Hellman密鑰協(xié)商來(lái)克服Kerberos協(xié)議易受到口令攻擊的安全缺陷。Diffie-Hellman密鑰協(xié)商算法可以使得通信雙方得到一個(gè)共享密鑰從而安全地交換密鑰。
假設(shè)x是素?cái)?shù),y是x的本原根,x和y作為全程的元素公開發(fā)布,不進(jìn)行保密處理。A選擇一個(gè)保密的隨機(jī)整數(shù)a,并將A=ya mod x發(fā)送給B。B也選擇一個(gè)保密的隨機(jī)整數(shù)b,并將B=yb mod x發(fā)送給A。然后A計(jì)算K=Ba mod x,B計(jì)算K=Ab mod x,A和B通過計(jì)算可以得到相同的密鑰。因?yàn)閍和b是保密的,攻擊者無(wú)法通過a或者b來(lái)獲得K的信息,除非攻擊者采用求離散對(duì)數(shù)難題的方式,但這幾乎是不可行的。
在客戶與認(rèn)證服務(wù)器進(jìn)行認(rèn)證的過程中使用Diffie-Hellman密鑰協(xié)商,采用強(qiáng)密鑰KDH代替原中的弱密鑰K進(jìn)行加密,可以防范口令猜測(cè)攻擊,緩解Kerberos協(xié)議中易受口令攻擊的安全威脅。
4 總結(jié)
Kerberos協(xié)議是目前應(yīng)用最廣的網(wǎng)絡(luò)身份認(rèn)證協(xié)議,相對(duì)于其他身份認(rèn)證協(xié)議而言,它有著安全性高和實(shí)用性高的特點(diǎn)。但是對(duì)稱密鑰方案的特性導(dǎo)致了Kerberos協(xié)議存在一定的局限性。本文深入研究了Kerberos認(rèn)證協(xié)議規(guī)范,在此基礎(chǔ)上提出了Kerberos協(xié)議改進(jìn)方案,即在Kerberos協(xié)議中引人RSA+ AES相結(jié)合的數(shù)據(jù)傳輸加密方案和利用Diffie-Hellman密鑰協(xié)商改進(jìn)Kerberos協(xié)議,克服了傳統(tǒng)Kerberos認(rèn)證協(xié)議中容易受到口令攻擊和密鑰管理困難等缺點(diǎn),提高了協(xié)議的安全性。Kerberos是一個(gè)運(yùn)用很廣泛的身份認(rèn)證協(xié)議,隨著應(yīng)有的不斷深入,為了使用網(wǎng)路的高度發(fā)展,我們對(duì)它的研究和改進(jìn)還需要不斷的進(jìn)行。
參考文獻(xiàn)
[1]文鐵華,谷士文.增強(qiáng)Kerberos協(xié)議安全性的改進(jìn)方案[J].通信學(xué)報(bào),2004.25(6):76~79.
[2] 劉坤,楊世平.對(duì)基于對(duì)稱密碼體制的Kerberos協(xié)議改進(jìn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2005.(5):6~8.
[3]莫燕,張玉清,李學(xué)千.對(duì)Kerberos協(xié)議的攻擊及對(duì)策研究[J].計(jì)算機(jī)工程,2005.31(10):66~69.
[4]王澤成,王文龍,李志斌.基于身份的可認(rèn)證會(huì)議密鑰協(xié)商[J].計(jì)算機(jī)工程與設(shè)計(jì),2004.25(10):1767~1770.
[5]郝文江,楊永川.對(duì)Kerberos網(wǎng)絡(luò)認(rèn)證的一種改進(jìn)技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007.6:24~26.
[6]范宏生,葉震,侯?;?基于公鑰密碼體制的Kerberos協(xié)議的改進(jìn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006.16(4):224~227.
[7]李繼勇.基于Weil對(duì)改進(jìn)的Kerberos協(xié)議設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2008.2~28.
[8]陳云,高靜,鄧亞平. Kerberos認(rèn)證協(xié)議的研究及其優(yōu)化[J].重慶郵電學(xué)院學(xué)報(bào),2006.6.
[9]陳鋒,徐正全,徐彥彥.一種利用Diffie-Hellman密鑰協(xié)商改進(jìn)的Kerberos協(xié)議[J].計(jì)算機(jī)應(yīng)用,2007:12~27.