kerberos
協議:kerberos
協議主要用於計算機網路的身份鑑別
(authentication),
其特點是使用者只需輸入一次身份驗證資訊就可以憑藉此驗證獲得的票據
(ticket-granting ticket)
訪問多個服務,即
sso(single sign on)
。由於在每個
client
和service
之間建立了共享金鑰,使得該協議具有相當的安全性。
條件
先來看看
kerberos
協議的前提條件:
如下圖所示,
client
與kdc
,kdc
與service
在協議工作前已經有了各自的共享金鑰,並且由於協議中的訊息無法穿透防火牆,這些條件就限制了
kerberos
協議往往用於乙個組織的內部,
使其應用場景不同於
過程
kerberos
協議分為兩個部分:
1 . client
向kdc
傳送自己的身份資訊,
kdc從
ticket granting service
得到tgt(ticket-granting ticket)
,並用協議開始前
client
與kdc
之間的金鑰將
tgt加密回覆給
client
。此時只有真正的
client
才能利用它與
kdc之間的金鑰將加密後的
tgt解密,從而獲得
tgt。
(此過程避免了
client
直接向kdc
傳送密碼,以求通過驗證的不安全方式)
2. client
利用之前獲得的
tgt向
kdc請求其他
service
的ticket
,從而通過其他
service
的身份鑑別。
kerberos
協議的重點在於第二部分,簡介如下:
將之前獲得
tgt和要請求的服務資訊
(服務名等
)傳送給
kdc,
kdc中的ticket granting service
將為client
和service
之間生成乙個
session key
用於service
對client
的身份鑑別。然後
kdc將這個
session key
和使用者名稱,使用者位址(
ip),服務名,有效期
, 時間戳一起包裝成乙個
ticket(
這些資訊最終用於
service
對client
的身份鑑別
)傳送給
service,不過
kerberos
協議並沒有直接將
ticket
傳送給service
,而是通過
client
**給service.
所以有了第二步。
2.此時
kdc將剛才的
ticket**
給client
。由於這個
ticket
是要給service
的,不能讓
client
看到,所以
kdc用協議開始前
kdc與
service
之間的金鑰將
ticket
加密後再傳送給
client
。同時為了讓
client
和service
之間共享那個秘密
(kdc
在第一步為它們建立的
session key)
,kdc
用client
與它之間的金鑰將
session key
加密隨加密的
ticket
一起返回給
client。3.
為了完成
ticket
的傳遞,
client
將剛才收到的
ticket
**到service.
由於client
不知道kdc
與service
之間的金鑰,所以它無法算改ticket中的資訊。同時
client
將收到的
session key
解密出來,然後將自己的使用者名稱,使用者位址(
ip)打包成
authenticator
用session key
加密也傳送給
service。4.
service
收到ticket
後利用它與
kdc之間的金鑰將
ticket
中的資訊解密出來,從而獲得
session key
和使用者名稱,使用者位址(
ip),服務名,有效期。然後再用
session key
將authenticator
解密從而獲得使用者名稱,使用者位址(
ip)將其與之前
ticket
中解密出來的使用者名稱,使用者位址(
ip)做比較從而驗證
client
的身份。
5.如果
service
有返回結果,將其返回給
client
。總結
概括起來說
kerberos
協議主要做了兩件事
1.ticket
的安全傳遞。
2.session key
的安全發布。
再加上時間戳的使用就很大程度上的保證了使用者鑑別的安全性。並且利用
session key,在通過鑑別之後
client
和service
之間傳遞的訊息也可以獲得
confidentiality(機密性), integrity(完整性)
的保證。不過由於沒有使用非對稱金鑰自然也就無法具有抗否認性,這也限制了它的應用。不過相對而言它比
x.509 pki
的身份鑑別方式實施起來要簡單多了。
Kerberos認證協議
序言 近幾天學習了kerberos認證協議,覺得有必要把學習過程和學習心得記錄一下,文章內容有william stallings編著的 網路安全基礎 中的部分內容,也有自己的理解和思考。我希望能用自己的理解來解發布kerberos認證協議的工作過程。由於kerberos比較複雜,所以需要通過多個假設...
Kerberos認證協議
一 簡介 kerberos由mit於1988年開發,用於分布式環境中,完成伺服器與使用者之間的相互認證。設計者的設計初衷是要用kerberos的三個頭來守衛網路之門。三個頭分別包括 認證 賬目清算和審計。kerberos要解決的問題 在乙個開放的分布式網路環境中,使用者通過工作站訪問伺服器提供的服務...
kerberos 協議初探
乙個客戶端要訪問某個服務時,先要到kdc去認證自己,並獲得訪問票據tgt 然後客戶端再拿著這個訪問票據到自己真實想要訪問的服務去獲得訪問授權,然後真實的進行訪問 在kerberos中,kdc有兩部分組成 authentication server,用來認證使用者,即驗證使用者存在,且密碼正確 tic...