基于TCP/IP的Kerberos認(rèn)證協(xié)議

Kerberos認(rèn)證協(xié)議是應(yīng)用對(duì)稱密鑰來對(duì)客戶機(jī)(Client)/服務(wù)器(Server)應(yīng)用程序作精確鑒定的。它主要解決的問題是:在公開的分布式環(huán)境中,工作站上的用戶希望訪問分布在網(wǎng)絡(luò)上的服務(wù)器,希望服務(wù)器能限制授權(quán)用戶的訪問,并能對(duì)服務(wù)請(qǐng)求進(jìn)行認(rèn)證[6]。Kerberos認(rèn)證協(xié)議的總體框架圖如下:

基于TCP/IP的Kerberos認(rèn)證協(xié)議

從圖可知,在Kerberos認(rèn)證協(xié)議中,存在4種不同的角色:客戶端,即用戶(C),提供某種服務(wù)的服務(wù)器(S),認(rèn)證服務(wù)器(AS)和票據(jù)準(zhǔn)許服務(wù)器(TGS).它們之間通過對(duì)稱加密機(jī)制作為加密/解密算法,每個(gè)用戶(C)必須擁有一個(gè)認(rèn)證密鑰Kc,該認(rèn)證密鑰由用戶和認(rèn)證服務(wù)器AS之間共享一對(duì)對(duì)稱加密密鑰Ktgs,而票據(jù)準(zhǔn)許服務(wù)器(TGS)和服務(wù)器(S)之間共享一對(duì)對(duì)稱加密密鑰Ks.

總體來說, Kerberos認(rèn)證協(xié)議可以分為以下3個(gè)步驟:

第一步:認(rèn)證服務(wù)交換.包括消息(1)和(2),用戶(C)向認(rèn)證服務(wù)器(AS)證明自己的身份,以便獲得票據(jù)許可票據(jù)(TGT).協(xié)議的形式化描述如下:

(1)C → AS??? (2)AS → C?

第二步:票據(jù)許可服務(wù)交換.包括消息(3)和(4),用戶向票據(jù)準(zhǔn)許服務(wù)器(TGS)索取訪問服務(wù)器(S)的服務(wù)許可票據(jù)(SGT).協(xié)議的形式化描述如下:

(3)TGS → C?? (4)C → TGS

第三步:用戶與服務(wù)器交換.包括消息(5)和(6),用戶使用所請(qǐng)求的服務(wù).

(5)C → S???? (6)S → C

從以上的過程分析中,我們可以發(fā)現(xiàn)Kerberos認(rèn)證協(xié)議存在以下問題:

1). 所有的用戶(C)帳號(hào)信息都存放在一臺(tái)認(rèn)證服務(wù)器(AS)中,如果該服務(wù)器被入侵,則一定會(huì)危及整個(gè)網(wǎng)絡(luò)的安全。

2).原有的認(rèn)證服務(wù)可能被存儲(chǔ)或替換.雖然時(shí)間戳是專門用于防止重放攻擊的,但在票據(jù)的有效時(shí)間內(nèi)仍然可能奏效.因?yàn)槭聦?shí)上,攻擊者可以事先把偽造的消息準(zhǔn)備好,一旦得到票據(jù)就馬上發(fā)出偽造的票據(jù),在相當(dāng)短的時(shí)間內(nèi)是難以檢查出來的。

3).服務(wù)許可票據(jù)的正確性是基于網(wǎng)絡(luò)中所有的時(shí)鐘保持同步,如果主機(jī)的時(shí)間發(fā)生錯(cuò)誤,則原來的認(rèn)證票據(jù)就是可能被替換的。因?yàn)榇蠖鄶?shù)網(wǎng)絡(luò)的時(shí)間協(xié)議是不安全的,所以,分布式計(jì)算機(jī)系統(tǒng)中這將導(dǎo)致極為嚴(yán)重的問題。

4). Kerberos防止口令猜測(cè)攻擊的能力很弱,攻擊者通過長(zhǎng)期監(jiān)聽可以收集大量的票據(jù),經(jīng)過計(jì)算和密鑰分析進(jìn)行口令猜測(cè)。當(dāng)用戶選擇的口令不夠強(qiáng)時(shí),就不能有效地防止口令猜測(cè)攻擊。

5).Kerberos服務(wù)器與用戶共享的秘密是用戶的口令字,服務(wù)器在回應(yīng)時(shí)不驗(yàn)證用戶的真實(shí)性,而是假設(shè)只有合法用戶擁有口令字。如果攻擊者記錄申請(qǐng)回答報(bào)文,就易形成代碼本攻擊。

6).實(shí)際上,最嚴(yán)重的攻擊是惡意軟件攻擊。Kerberos認(rèn)證協(xié)議依賴于Kerberos軟件的絕對(duì)可信,而攻擊者可以用執(zhí)行Kerberos協(xié)議和記錄用戶口令的軟件來代替所有用戶的Kerberos軟件,達(dá)到攻擊的目的。一般而言,裝在不安全計(jì)算機(jī)內(nèi)的密碼軟件都會(huì)面臨這一問題。

7).雖然Kerberos認(rèn)證協(xié)議可以在較大規(guī)模網(wǎng)絡(luò)環(huán)境中使用,但是在分布式系統(tǒng)中,認(rèn)證中心星羅棋布,共享密鑰的管理分配、存儲(chǔ)和更新是一個(gè)非常困難的問題.以及它的配置也不是一件簡(jiǎn)單的事情。

從對(duì)于Kerberos的局限性和問題分析中可以得出,其很多缺陷均是由于單獨(dú)采用對(duì)稱密鑰技術(shù)造成的。因此建議可以將公鑰加密機(jī)制有機(jī)地融合到Kerberos認(rèn)證協(xié)議中去,便能克服其保密性不強(qiáng),擴(kuò)展性差等缺點(diǎn)。