組成:
- 憑證發放中心KDC
- 身份鑑別伺服器AS(Authentication Server)
- 通行證簽發中心TGS(Ticket Granting Server)
- 身份鑑別伺服器AS(Authentication Server)
- 使用者端(client)
- 伺服器端(service server)
運作程序(簡化版):
- Client向Ticket Granting Server(TGS) 要求一張"通行證"
- TGS回傳給Client一個”加密”過的通行證, 只有對應Client知道解密方式, 以此確保唯有正確的Client才可以解密, 得到通行證
- TGS會把”通行證”, “Client ID”, “有效期限”, “時間戳記”...etc. 包裝成一個最終Ticket, 寄給Service server, 進行最後的認證
詳細運作程序:
首先,用戶使用客戶機(用戶自己的機器)上的程序登錄:
- 用戶輸入用戶ID和密碼到客戶機。
- 客戶機程序運行一個單向函數(大多數為雜湊)把密碼轉換成密鑰,這個就是客戶機(用戶)的"用戶密鑰"(K_client)。受信任的AS通過某些安全的途徑也獲取了與此密鑰相同的密鑰。
隨後,客戶機認證(客戶機從AS獲取票據的票據(TGT)):
- 客戶機向AS發送1條消息(注意:用戶不向AS發送密鑰(K_client),也不發送密碼):
- 包含用戶ID的明文消息,例如"用戶Sunny想請求服務"(Sunny是用戶ID)
- AS檢查用戶ID有效性,而後返回2條消息:
- 消息A:用戶密鑰(K_client)加密後的"客戶機-TGS會話密鑰"(K_TGS-session)(會話密鑰用在將來客戶機與TGS的通信(會話)上)
- 消息B:TGS密鑰(K_TGS)加密後的"票據授權票據"(TGT)(TGT包括:客戶機-TGS會話密鑰(K_TGS-session),用戶ID,用戶網址,TGT有效期)
- 客戶機用自己的密鑰(K_client)解密A,得到客戶機-TGS會話密鑰(K_TGS-session)。(注意:客戶機不能解密消息B,因為B是用TGS密鑰(K_TGS)加密的)。
然後,服務授權(客戶機從TGS獲取票據(T)):
- 客戶機向TGS發送以下2條消息:
- 消息c:即消息B(K_TGS加密後的TGT),和想獲取的服務的服務ID(注意:不是用戶ID)
- 消息d:客戶機-TGS會話密鑰(K_TGS-session)加密後的"認證符"(認證符包括:用戶ID,時間戳)
- TGS用自己的密鑰(K_TGS)解密c中的B得到TGT,從而得到AS提供的客戶機-TGS會話密鑰(K_TGS-session)。再用這個會話密鑰解密d得到用戶ID(認證),而後返回2條消息:
- 消息E:伺服器密鑰(K_SS)加密後的"客戶機-伺服器票據"(T)(T包括:客戶機-SS會話密鑰(K_SS-session),用戶ID,用戶網址,T有效期)
- 消息F:客戶機-TGS會話密鑰(K_TGS-session)加密後的"客戶機-SS會話密鑰"(K_SS_session)
- 客戶機用客戶機-TGS會話密鑰(K_TGS-session)解密F,得到客戶機-SS會話密鑰(K_SS_session)。(注意:客戶機不能解密消息E,因為E是用SS密鑰(K_SS)加密的)。
最後,服務請求(客戶機從SS獲取服務):
- 客戶機向SS發出2條消息:
- 消息e:即消息E
- 消息g:客戶機-伺服器會話密鑰(K_SS_session)加密後的"新認證符"(新認證符包括:用戶ID,時間戳)
- SS用自己的密鑰(K_SS)解密e/E得到T,從而得到TGS提供的客戶機-伺服器會話密鑰(K_SS_session)。再用這個會話密鑰解密g得到用戶ID(認證),而後返回1條消息(確認函:確證身份真實,樂於提供服務):
- 消息H:客戶機-伺服器會話密鑰(K_SS_session)加密後的"新時間戳"(新時間戳是:客戶機發送的時間戳加1)
- 客戶機用客戶機-伺服器會話密鑰(K_SS_session)解密H,得到新時間戳。
- 客戶機檢查時間戳被正確地更新,則客戶機可以信賴伺服器,並向伺服器(SS)發送服務請求。
- 伺服器(SS)提供服務。
原文網址: 巨量資料時代面臨的考驗(下):Kerberos原理與程序,Information Security 資安人科技網 http://www.informationsecurity.com.tw/article/article_detail.aspx?aid=7397#ixzz3OkEqBVG8
沒有留言:
張貼留言