ASP.NET : Kerberos网络认证过程
今天抽時間初略學習了一下kerberos網絡認證過程,作為筆記整理如下,希望與大家分享。
一、Kerberos初步定義:
Kerberos這一名詞來源于希臘神話“三個頭的狗——地獄之門守護者”。Kerberos 是一種網絡認證協議,其設計目標是通過密鑰系統為客戶機 / 服務器應用程序提供強大的認證服務。該認證過程的實現不依賴于主機操作系統的認證,無需基于主機地址的信任,不要求網絡上所有主機的物理安全,并假定網絡上傳送的數據包可以被任意地讀取、修改和插入數據。在以上情況下, Kerberos 作為一種可信任的第三方認證服務,是通過傳統的密碼技術(如:共享密鑰)執行認證服務的。
Kerberos 服務是單點登錄系統,這意味著您對于每個會話只需向服務進行一次自我驗證,即可自動保護該會話過程中所有后續事務的安全。服務對您進行驗證后,即無需在每次使用基于 Kerberos 的命令(如ftp 或 rsh)或訪問 NFS 文件系統上數據時都進行自我驗證。因此,無需在每次使用這些服務時都在網絡上發送口令(口令在網絡上可能會被攔截)。
?
二、Kerberos認證工作過程:
主要分要兩大步驟,見圖進行說明:
步驟一:申請并獲取TGT,具體步驟如下
1.Client向KDC發送自己的身份信息(Info C)
2. KDC收到Client的身份信息后,從Ticket Granting Service得到TGT(ticket-granting ticket)
3. KDC用協議開始前產生的Client與KDC之間的密鑰(Key A)將TGT加密回復給Client。
4. Client使用Key A把加密后的TGT解密得到非加密的TGT。由于此密鑰是Client與KDC之間的密鑰,所以此時只有真正的Client才能利用它與KDC之間的密鑰將加密后的TGT解密,從而獲得TGT。(此過程避免了Client直接向KDC發送密碼,以求通過驗證的不安全方式)
步驟二: Client利用之前獲得的TGT向KDC請求其他Service的Ticket,從而通過其他Service的身份鑒別。具體步驟如下:
5.?Client將之前獲得TGT和要請求的服務信息(Info CS )發送給KDC
6. KDC中的Ticket Granting Service將為Client和Service之間生成一個Session Key用于Service對Client的身份鑒別。
7. KDC將這個Session Key和用戶名,用戶地址(IP),服務名,有效期, 時間戳一起包裝成一個Ticket--(Service Tictket) (這些信息最終用于Service對Client的身份鑒別)發送給Service, 不過Kerberos協議并沒有直接將Ticket發送給Service,而是通過Client轉發給Service.所以有了第8-11步。
8. 此時KDC將剛才的Ticket轉發給Client。由于這個Ticket是要給Service的,不能讓Client看到,所以KDC用協議開始前KDC與Service之間的密鑰(Key C)將Ticket加密后再發送給Client。同時為了讓Client和Service之間共享那個秘密(KDC在第一步為它們創建的Session Key), KDC用Client與它之間的密鑰將Session Key加密隨加密的Ticket一起返回給Client。也即是說:Client與Service之間的Session Key(Key B)發出了兩個副本,一個是發給Client的,一個是發給Service的,發給Client的可由Client解密取出使用,但發給Service的由于是由Key C加密,經由Client轉發給Service,所以,Client不能取出,到了Service端后可由Service端取出。
9. 為了完成Ticket的傳遞,Client將剛才收到的Service Ticket轉發到Service. 由于Client不知道KDC與Service之間的密鑰,所以它無法算改Ticket中的信息,只能老老實實地完成轉發任務。
10.Client將收到的Session Key解密出來(用Key A解密)
11.Client將自己的用戶名,用戶地址(IP)打包成Authenticator用前面得到的Session Key(Key B)加密后也發送給Service。
12.Service 收到Ticket后利用它與KDC之間的密鑰(Key C)將Ticket中的信息解密出來,從而獲得Session Key和用戶名,用戶地址(IP),服務名,有效期。然后再用Session Key(Key B)將Authenticator解密從而獲得用戶名,用戶地址(IP)將其與之前Ticket中解密出來的用戶名,用戶地址(IP)做比較從而驗證Client的身份。
13.? 如果Service有返回結果,將其返回給Client。
?
?
總結
以上是生活随笔為你收集整理的ASP.NET : Kerberos网络认证过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11、位段
- 下一篇: .NET 产品版权保护方案 (.NET源