隨著信息技術及相關應用的不斷普及,用戶每天需要登錄不同的信息系統(tǒng),如WEB服務器、郵件服務器、數(shù)據(jù)庫服務器及各種應用服務器等。
傳統(tǒng)的認證機制采用基于用戶名/密碼的分散管理,即用戶通過網(wǎng)絡世界的身份標識來訪問各種資源,不同系統(tǒng)生成的身份標識無法相互傳遞,導致用戶必須通過每個系統(tǒng)單獨的用戶名和密碼進行來認證方能進入系統(tǒng)。
傳統(tǒng)認證機制存在兩方面安全隱患:一是基于用戶名/密碼的認證方式安全強度不高;二是大量的用戶名/密碼給用戶帶來了額外的安全管理問題。在傳統(tǒng)認證機制逐漸無法滿足用戶需求后,新的更具安全性的認證機制由此出現(xiàn)--單點登錄技術。該技術在網(wǎng)絡資源使用過程中更為高效、安全并且更加簡便。
Kerberos是目前使用最廣泛的單點登錄協(xié)議之一,它利用集中式認證取代分散認證,通過減少用戶身份認證次數(shù),減輕服務器負擔;同時使用對稱密碼算法實現(xiàn)通過可信第三方的認證服務。
Kerberos的運行環(huán)境由密鑰分配中心(KDC)、應用服務器和客戶端3個部分組成。
△ Kerberos運行環(huán)境示意圖
· KDC是整個系統(tǒng)的核心部分,負責維護所有用戶的賬戶信息。
KDC提供認證服務(AS)和會話授權服務(TGS)。認證服務(AS)對用戶的身份進行初始認證,若認證通過便給用戶發(fā)放授權票據(jù)(TGT);用戶使用該票據(jù)可訪問會話授權服務(TGS),從而獲得訪問應用服務器時所需的服務票據(jù)(ST)。
· 應用服務器接受用戶的服務訪問請求,驗證用戶身份,并向合法用戶提供所請求的服務。
· 客戶端在用戶登錄時發(fā)送各種請求信息,并接收從KDC返回的信息。
Kerberos基本認證過程可以分為3個階段,分別由3組消息來完成。
第一階段 獲得票據(jù)許可票據(jù)
本階段,用戶登錄客戶端請求服務,認證服務器(AS)在數(shù)據(jù)庫中驗證用戶的訪問權限,生成票據(jù)許可票據(jù)和會話密鑰。
1、用戶從客戶端向AS發(fā)送包含用戶、服務器名和隨機數(shù)N的消息KRB_AS_REQ。
2、AS驗證C的身份和訪問權限后,隨機生成一個加密密鑰作為下一階段客戶方與TGS通信的會話密鑰:生成一個包含客戶方、會話密鑰以及開始和失效時間等信息的TGT,用TGS的密鑰進行加密;AS將會話密鑰和N用客戶端的密鑰K加密,并與TGT一起構成消息KRB_AS_REP,發(fā)送給客戶端。客戶端通過用戶口令變換出K,獲得會話密鑰和N,根據(jù)N驗證該消息是新鮮的。
第二階段 獲得服務許可票據(jù)
本階段,客戶端將票據(jù)許可票據(jù)以及包含用戶名稱,網(wǎng)絡地址和時間的鑒別符發(fā)往票據(jù)授權服務器TGS,票據(jù)授權服務器TGS對票據(jù)和鑒別符進行解密,驗證請求,然后生成請求服務許可票據(jù)。
1、客戶端向TGS發(fā)送TGT、需要訪問的服務器名、保證消息新鮮的N、以及用戶會話密鑰簽名的客戶端認證信息,防止數(shù)據(jù)在傳輸過程中被篡改、每次客戶端要訪問某服務時,必須首先生成一個新的認證信息(鑒別符),該信息包括客戶端名、主機地址、客戶端主機時間,并且最終使用會話密鑰加密。
2、TGS用會話密鑰驗證TGT后,獲取服務器名,從數(shù)據(jù)庫獲得服務器密鑰KS,隨機生成客戶端與應用之間的通信會話密鑰和服務許可票據(jù)。使用會話密鑰加密N和應用會話密鑰與新產(chǎn)生的服務許可密鑰一起發(fā)送給客戶端。
第三階段 獲得服務
客戶端將服務許可票據(jù)和認證信息發(fā)送給服務器,服務器驗證票據(jù)和認證信息中的相匹配,允許訪問服務。如果需要雙向鑒別,服務器返回一個認證信息。
1、客戶端向服務器發(fā)送認證信息,并提交服務許可票據(jù)。
2、應用通過加密獲得客戶端的時間表及,同時將這些信息用應用會話密鑰加密后發(fā)送客戶端,客戶端保留最近接收到的時間標記最大值,以防止重放攻擊。
Kerberos認證系統(tǒng)雖然在網(wǎng)絡環(huán)境中有著廣泛應用,但也存在局限性。
首先,協(xié)議中的認證信息依賴于時間標記來實現(xiàn)抗重放攻擊,這就要求使用該協(xié)議進行認證的計算機需要時間同步,而嚴格的時間同步需要有時間服務器,因此時間服務器的安全至關重要。
其次,協(xié)議認證的基礎是通信方都無條件信任KDC,一旦其安全受到影響,將會威脅整個認證系統(tǒng)的安全,同時容易形成系統(tǒng)性能的瓶頸。






