Kerberos協議主要用於網絡身份鑑別,該協議的特點是隻要輸入一次身份驗證信息就可以訪問多個服務,而且訪問更加安全。其基本原理圖如下所示:
該協議主要分爲兩大步驟。
第一步:Client獲取TGT(ticket-grantingticket)
1.客戶端輸入身份信息向KDC(密鑰分配中心)發送請求,KDC根據客戶端發送的身份信息向Ticket granting service請求取得TGT。然後KDC採用其與請求Client約定的加密策略對TGT進行加密,將TGT發送到Client。
2. Client收到KDC響應後,使用約定的解密策略對反饋的TGT進行解密,得到TGT。
第二步:使用第一步得到TGT請求服務
1.Client將第一步取得的TGT與請求的服務發送給KDC服務器。KDC根據請求信息爲Client和請求的Service直接生成一個Session Key,用於Cilent 與Service直接的身份鑑別。
然後KDC將Session key發送給Service,但KDC不會直接將Session Key發給Service。而是將Session key和請求用戶的用戶名,IP,請求過期時間,以及時間戳等信息使用與該Service約定的加密算法將這些信息加密成一個Ticket,進行加密。併發給Client,由轉發給Service。由於Session Key是Client與Service通信的依據,所以要將Session Key再與之前加密生成的Ticket採用KDC與Client之間的加密算法進行加密,加密後發送個客戶端。
2.Client收到服務器響應後,採用解密算法獲取Session key。由於客戶端不知道KDC與Service之間的解密策略,自然無法將Ticket解密,無法篡改Tieket中的信息。Client將用戶名,IP等需要的相關信息使用Session Key將其打包加密爲一個Authenticator和Ticket一起發送到Service。
3.Service收到Tiket後使用約定的解密策略進行解密,取得Session Key,用戶名,IP等封裝的信息。然後使用Session Key將Authenticator解密,獲取用戶名,IP等信息與Tieket中取得的信息比較驗證用戶信息。如果匹配,向Client返回信息。