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

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

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

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

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

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