一、簡介
kerberos由mit於2023年開發,用於分布式環境中,完成伺服器與使用者之間的相互認證。設計者的設計初衷是要用kerberos的三個頭來守衛網路之門。三個頭分別包括:認證、賬目清算和審計。
kerberos要解決的問題
在乙個開放的分布式網路環境中,使用者通過工作站訪問伺服器提供的服務,存在許多問題:
kerberos的解決方案
kerberos基本性質
二、協議具體內容
三個重要概念
乙個簡單的認證對話
上圖就是乙個簡單的認證對話過程,總共有三步:
c → as : idc || pc || idv
as → c : ticket
c → v : idc || ticket
其中ticket = ekv
[ idc || adc || idv]
符號說明:
c :客戶端
as :認證伺服器
v :服務(伺服器)
idc :在c上的使用者標誌
idv :在v上的使用者標誌
pc :在c上的使用者口令
adc :c的1網路位址
kv :as與v共享的加密金鑰
|| :級聯
過程理解
c → as : idc || pc || idv
在這一步中,c向as傳送自己的身份,口令以及要申請的服務。也就是c向as說,我是誰誰誰,這是我的密碼,我要啥啥啥服務,幫我認證一下,給我張票。
as → c : ticket
在這一步中,as驗證c的真實性(驗證idc 的口令是不是 pc ),驗證通過就給c發張ticket,ticket用as與v共享的金鑰加密了c的身份,c的位址以及v的身份。
c → v : idc || ticket
第三步,c向v傳送自己的身份以及票據,請求服務。v收到訊息後,得到c的身份以及票據,使用as與v之間的共享金鑰解密後得到票據裡的資訊,看c是否與ticket中的c一致
存在的兩個最突出的問題
解決方案
改進的認證對話
改進的認證對話有五步:
c → as :idc || idtgs
as → c : ekc
[tickettgs]
其中tickettgs = ektgs
[idc || adc || idtgs || ts1 || lifetime1]
符號說明:
idtgs : tgs的標誌符
kc :由使用者口令匯出的金鑰
ts1 :時間戳
lifetime1 :生存期
c → tgs :idc || idv || tickettgs
tgs → c :ticketv
其中ticketv = ekv
[idc || adc || idv || ts2 || lifetime2]
符號說明:
kv :tgs和伺服器共享的金鑰
c → v :idc || ticketv
過程解釋
c → as :idc || idtgs
這一步中,使用者只需要將自己的識別符號以及tgs的識別符號傳遞給as,不需要傳遞明文口令
as → c : ekc
[tickettgs]
第二步中,as使用由c的口令衍生的金鑰加密票據,該訊息只有as與c雙方之間才能解讀,票據當中包含c的識別符號,位址,tgs的識別符號,時間戳以及生存週期(防止重放攻擊),票據的資訊由as與tgs之間的金鑰進行加密,這樣保證了只有對應的tgs能驗證
c → tgs :idc || idv || tickettgs
c將票據以及自己的身份和要申請的服務傳送給tgs,tgs驗證票據,檢查有效期。
tgs → c :ticketv
驗證通過後,tgs向c傳送票據,該票據的資訊包括了c的識別符號,位址,v的識別符號,生存週期,時間戳,這些資訊經由tgs和伺服器之間共享的金鑰進行加密
c → v :idc || ticketv
最後一步,c憑藉票據和身份獲取服務
可以看到,在改進的方法中,口令不需在網路上頻繁的傳輸,身份的認真也經過了加密,設定了生存期,在生存期內票據可以重用
存在的問題
解決方案
kerberos 第四版
具體步驟:
c → as :idc || idtgs || tg1
as → c : ekc
[kc,tgs || idtgs || ts2 || lifetime2 || tickettgs]
其中tickettgs = ektgs
[kc,tgs || idc || adc || idtgs || ts2 || lifetime2]
符號說明:
kc,tgs : 由as生成允許客戶端和tgs間安全交換報文
c → tgs :idv || tickettgs || authenticatorc
tgs → c :kc,tgs[kc,v || idv || ts4 || ticketv]
其中ticketv = ekv
[kc,v || idc || adc || idv || ts4 || lifetime4]
authenticatorc = ekc,tgs
[idc || adc || ts3]
符號說明:
authenticatorc :由客戶端產生認證符,證明票據的有效性
c → v : ticketv || authenticatorc
v → c :ekv
[ts5 + 1]
其中:authenticatorc = ekc,v
[idc || adc || ts5]
第六步可以使c確信不是就回答的重放
過程分析
第四版覺改進的會話多了會話的金鑰,每次交換用的金鑰都由上一步生成,票據都經過加密再傳遞給c,兒c向v傳送服務請求,v會向c傳送加密的資料,這個資料證明伺服器不是敵手偽裝的。
請求其他域的伺服器的服務
先佔坑,有空再寫。
Kerberos認證協議
序言 近幾天學習了kerberos認證協議,覺得有必要把學習過程和學習心得記錄一下,文章內容有william stallings編著的 網路安全基礎 中的部分內容,也有自己的理解和思考。我希望能用自己的理解來解發布kerberos認證協議的工作過程。由於kerberos比較複雜,所以需要通過多個假設...
kerberos協議認證流程
kdc key distribute center 金鑰分發中心 authentication service身份驗證服務 ticket granting service票據分發服務 ad account database儲存所有的client as會去ad中查詢client是否存在 tgt1 se...
Kerberos認證流程
rtech 所介紹的kerberos認證的來談談個人對kerberos認證流程以及訊息互動理解。如果您想深入了解,此處 如有理解不當的地方,還望賜教。概念說明 ad active directory service session key 服務會話金鑰 logon session key 登入會話金...