Kerberos認證協議

2021-09-22 14:08:25 字數 3439 閱讀 6241

一、簡介

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 登入會話金...