1. KDChtml
全稱:key distributed center安全
做用:整個安全認證過程的票據生成管理服務,其中包含兩個服務,AS和TGS網絡
2. ASide
全稱:authentication servicepost
做用:爲client生成TGT的服務性能
3. TGS加密
全稱:ticket granting servicespa
做用:爲client生成某個服務的ticket .net
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兩個服務。
1.client向kerberos服務請求,但願獲取訪問server的權限。kerberos獲得了這個消息,首先得判斷client是不是可信賴的,也就是白名單黑名單的說法。這就是AS服務完成的工做,經過在AD中存儲黑名單和白名單來區分client。成功後,AS返回TGT(向TGS申請ticket的票據)給client。
2.client獲得了TGT後,繼續向kerberos的TGS請求,但願獲取訪問某個server的權限。kerberos又獲得這個消息,這時候經過client消息中的TGT,判斷出client擁有了這個權限,給了client訪問server的權限ticket。
3.client獲得ticket後,終於能夠成功訪問server。這個ticket只是針對這個server,其餘server須要再次向TGS申請ticket(門票)。
經過這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的通訊也是如此
// 對kerberos通俗易懂的介紹