重要術語 1. KDC 全稱:key distributed center 作用:整個安全認證過程的票據生成管理服務,其中包含兩個服務,AS和TGS 2. AS 全稱:authentication service 作用:為client生成TGT的服務 3. TGS 全稱:ticket grantin... ...
重要術語
1. KDC
全稱:key distributed center
作用:整個安全認證過程的票據生成管理服務,其中包含兩個服務,AS和TGS
2. AS
全稱:authentication service
作用:為client生成TGT的服務
3. TGS
全稱:ticket granting service
作用:為client生成某個服務的ticket
4. AD
全稱:account database
作用:存儲所有client的白名單,只有存在於白名單的client才能順利申請到TGT
5. TGT
全稱:ticket-granting ticket
作用:用於獲取ticket的票據
6.client
想訪問某個server的客戶端
7. server
提供某種業務的服務
認證流程
概述
圖1 kerberos認證流程
圖1展示了kerberos的認證流程,總體分為3步。
- client與AS交互
- client與TGS交互
- client與server交互
詳細分析
kerberos為什麼要採用3步交互的形式來完成安全認證,那就要從kerberos的使用場景說起。
相比kerberos,https可能更為熟悉一點,通過證書和非對稱加密的方式,讓客戶端可以安全的訪問服務端,但這僅僅是客戶端安全,通過校驗,客戶端可以保證服務端是安全可靠的,而服務端卻無法得知客戶端是不是安全可靠的。這也是互聯網的一種特性。而kerberos可以支持雙向認證,就是說,可以保證客戶端訪問的服務端是安全可靠的,服務端回覆的客戶端也是安全可靠的。
想證明client和server都是可靠的,必然要引入第三方公證平臺,這裡就是AS和TGS兩個服務。
- client向kerberos服務請求,希望獲取訪問server的許可權。kerberos得到了這個消息,首先得判斷client是否是可信賴的,也就是白名單黑名單的說法。這就是AS服務完成的工作,通過在AD中存儲黑名單和白名單來區分client。成功後,返回AS返回TGT給client。
- client得到了TGT後,繼續向kerberos請求,希望獲取訪問server的許可權。kerberos又得到了這個消息,這時候通過client消息中的TGT,判斷出了client擁有了這個許可權,給了client訪問server的許可權ticket。
- client得到ticket後,終於可以成功訪問server。這個ticket只是針對這個server,其他server需要像TGS申請。
通過這3步,一次請求就完成了。當然這裡會有個問題,這樣也沒比https快啊。解釋一下
1. 整個過程TGT的獲取只需要一次,其中有超時的概念,時間範圍內TGT都是有效的,也就是說一般情況訪問server只需要直接拿到ticket即可
2. 整個過程採用的是對稱加密,相對於非對稱加密會有性能上的優勢
3. kerberos的用戶管理很方便,只需要更新AD中的名單即可
當然整個過程的通信都是加密的,這裡設計到兩層加密,因為所有的認證都是通過client,也就是說kerberos沒有和server直接交互,這樣的原因是kerberos並不知道server的狀態,也無法保證同時和server,client之間通信的順序,由client轉發可以讓client保證流程順序。
第一層加密,kerberos對發給server數據的加密,防止client得到這些信息篡改。
第二層加密,kerberos對發給client數據的加密,防止其他網路監聽者得到這些信息。
client和server的通信也是如此。
轉自:https://www.cnblogs.com/ulysses-you/p/8107862.html