隨著信息技術(shù)及相關(guān)應(yīng)用的不斷普及,用戶(hù)每天需要登錄不同的信息系統(tǒng),如WEB服務(wù)器、郵件服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器及各種應(yīng)用服務(wù)器等。
傳統(tǒng)的認(rèn)證機(jī)制采用基于用戶(hù)名/密碼的分散管理,即用戶(hù)通過(guò)網(wǎng)絡(luò)世界的身份標(biāo)識(shí)來(lái)訪(fǎng)問(wèn)各種資源,不同系統(tǒng)生成的身份標(biāo)識(shí)無(wú)法相互傳遞,導(dǎo)致用戶(hù)必須通過(guò)每個(gè)系統(tǒng)單獨(dú)的用戶(hù)名和密碼進(jìn)行來(lái)認(rèn)證方能進(jìn)入系統(tǒng)。

傳統(tǒng)認(rèn)證機(jī)制存在兩方面安全隱患:一是基于用戶(hù)名/密碼的認(rèn)證方式安全強(qiáng)度不高;二是大量的用戶(hù)名/密碼給用戶(hù)帶來(lái)了額外的安全管理問(wèn)題。在傳統(tǒng)認(rèn)證機(jī)制逐漸無(wú)法滿(mǎn)足用戶(hù)需求后,新的更具安全性的認(rèn)證機(jī)制由此出現(xiàn)--單點(diǎn)登錄技術(shù)。該技術(shù)在網(wǎng)絡(luò)資源使用過(guò)程中更為高效、安全并且更加簡(jiǎn)便。
Kerberos是目前使用最廣泛的單點(diǎn)登錄協(xié)議之一,它利用集中式認(rèn)證取代分散認(rèn)證,通過(guò)減少用戶(hù)身份認(rèn)證次數(shù),減輕服務(wù)器負(fù)擔(dān);同時(shí)使用對(duì)稱(chēng)密碼算法實(shí)現(xiàn)通過(guò)可信第三方的認(rèn)證服務(wù)。
Kerberos的運(yùn)行環(huán)境由密鑰分配中心(KDC)、應(yīng)用服務(wù)器和客戶(hù)端3個(gè)部分組成。

△ Kerberos運(yùn)行環(huán)境示意圖
· KDC是整個(gè)系統(tǒng)的核心部分,負(fù)責(zé)維護(hù)所有用戶(hù)的賬戶(hù)信息。
KDC提供認(rèn)證服務(wù)(AS)和會(huì)話(huà)授權(quán)服務(wù)(TGS)。認(rèn)證服務(wù)(AS)對(duì)用戶(hù)的身份進(jìn)行初始認(rèn)證,若認(rèn)證通過(guò)便給用戶(hù)發(fā)放授權(quán)票據(jù)(TGT);用戶(hù)使用該票據(jù)可訪(fǎng)問(wèn)會(huì)話(huà)授權(quán)服務(wù)(TGS),從而獲得訪(fǎng)問(wèn)應(yīng)用服務(wù)器時(shí)所需的服務(wù)票據(jù)(ST)。
· 應(yīng)用服務(wù)器接受用戶(hù)的服務(wù)訪(fǎng)問(wèn)請(qǐng)求,驗(yàn)證用戶(hù)身份,并向合法用戶(hù)提供所請(qǐng)求的服務(wù)。
· 客戶(hù)端在用戶(hù)登錄時(shí)發(fā)送各種請(qǐng)求信息,并接收從KDC返回的信息。
Kerberos基本認(rèn)證過(guò)程可以分為3個(gè)階段,分別由3組消息來(lái)完成。
第一階段 獲得票據(jù)許可票據(jù)
本階段,用戶(hù)登錄客戶(hù)端請(qǐng)求服務(wù),認(rèn)證服務(wù)器(AS)在數(shù)據(jù)庫(kù)中驗(yàn)證用戶(hù)的訪(fǎng)問(wèn)權(quán)限,生成票據(jù)許可票據(jù)和會(huì)話(huà)密鑰。

1、用戶(hù)從客戶(hù)端向AS發(fā)送包含用戶(hù)、服務(wù)器名和隨機(jī)數(shù)N的消息KRB_AS_REQ。
2、AS驗(yàn)證C的身份和訪(fǎng)問(wèn)權(quán)限后,隨機(jī)生成一個(gè)加密密鑰作為下一階段客戶(hù)方與TGS通信的會(huì)話(huà)密鑰:生成一個(gè)包含客戶(hù)方、會(huì)話(huà)密鑰以及開(kāi)始和失效時(shí)間等信息的TGT,用TGS的密鑰進(jìn)行加密;AS將會(huì)話(huà)密鑰和N用客戶(hù)端的密鑰K加密,并與TGT一起構(gòu)成消息KRB_AS_REP,發(fā)送給客戶(hù)端。客戶(hù)端通過(guò)用戶(hù)口令變換出K,獲得會(huì)話(huà)密鑰和N,根據(jù)N驗(yàn)證該消息是新鮮的。
第二階段 獲得服務(wù)許可票據(jù)
本階段,客戶(hù)端將票據(jù)許可票據(jù)以及包含用戶(hù)名稱(chēng),網(wǎng)絡(luò)地址和時(shí)間的鑒別符發(fā)往票據(jù)授權(quán)服務(wù)器TGS,票據(jù)授權(quán)服務(wù)器TGS對(duì)票據(jù)和鑒別符進(jìn)行解密,驗(yàn)證請(qǐng)求,然后生成請(qǐng)求服務(wù)許可票據(jù)。

1、客戶(hù)端向TGS發(fā)送TGT、需要訪(fǎng)問(wèn)的服務(wù)器名、保證消息新鮮的N、以及用戶(hù)會(huì)話(huà)密鑰簽名的客戶(hù)端認(rèn)證信息,防止數(shù)據(jù)在傳輸過(guò)程中被篡改、每次客戶(hù)端要訪(fǎng)問(wèn)某服務(wù)時(shí),必須首先生成一個(gè)新的認(rèn)證信息(鑒別符),該信息包括客戶(hù)端名、主機(jī)地址、客戶(hù)端主機(jī)時(shí)間,并且最終使用會(huì)話(huà)密鑰加密。
2、TGS用會(huì)話(huà)密鑰驗(yàn)證TGT后,獲取服務(wù)器名,從數(shù)據(jù)庫(kù)獲得服務(wù)器密鑰KS,隨機(jī)生成客戶(hù)端與應(yīng)用之間的通信會(huì)話(huà)密鑰和服務(wù)許可票據(jù)。使用會(huì)話(huà)密鑰加密N和應(yīng)用會(huì)話(huà)密鑰與新產(chǎn)生的服務(wù)許可密鑰一起發(fā)送給客戶(hù)端。
第三階段 獲得服務(wù)
客戶(hù)端將服務(wù)許可票據(jù)和認(rèn)證信息發(fā)送給服務(wù)器,服務(wù)器驗(yàn)證票據(jù)和認(rèn)證信息中的相匹配,允許訪(fǎng)問(wèn)服務(wù)。如果需要雙向鑒別,服務(wù)器返回一個(gè)認(rèn)證信息。

1、客戶(hù)端向服務(wù)器發(fā)送認(rèn)證信息,并提交服務(wù)許可票據(jù)。
2、應(yīng)用通過(guò)加密獲得客戶(hù)端的時(shí)間表及,同時(shí)將這些信息用應(yīng)用會(huì)話(huà)密鑰加密后發(fā)送客戶(hù)端,客戶(hù)端保留最近接收到的時(shí)間標(biāo)記最大值,以防止重放攻擊。
Kerberos認(rèn)證系統(tǒng)雖然在網(wǎng)絡(luò)環(huán)境中有著廣泛應(yīng)用,但也存在局限性。
首先,協(xié)議中的認(rèn)證信息依賴(lài)于時(shí)間標(biāo)記來(lái)實(shí)現(xiàn)抗重放攻擊,這就要求使用該協(xié)議進(jìn)行認(rèn)證的計(jì)算機(jī)需要時(shí)間同步,而嚴(yán)格的時(shí)間同步需要有時(shí)間服務(wù)器,因此時(shí)間服務(wù)器的安全至關(guān)重要。
其次,協(xié)議認(rèn)證的基礎(chǔ)是通信方都無(wú)條件信任KDC,一旦其安全受到影響,將會(huì)威脅整個(gè)認(rèn)證系統(tǒng)的安全,同時(shí)容易形成系統(tǒng)性能的瓶頸。