挑戰握手認證協議

挑戰握手認證協議

CHAP:挑戰握手認證協議(Challenge Handshake Authentication Protocol

挑戰握手認證協議(CHAP)通過三次握手周期性的校驗對端的身份,在初始鏈路建立時完成,可以在鏈路建立之後的任何時候重複進行。

目錄

簡介


CHAP:挑戰握手認證協議(Challenge handshake Authentication Protocol)
挑戰握手認證協議(CHAP)通過三次握手周期性的校驗對端的身份,在初始鏈路建立時完成,可以在鏈路建立之後的任何時候重複進行。
1. 鏈路建立階段結束之後,認證者向對端點發送“challenge”消息。
2. 對端點經過單向哈希函數計算出來的值做應答。
3. 認證者根據它自己計算的哈希值來檢查應答,如果值匹配,認證者得到認;否則,連接應該終止。
4. 經過一定的隨機間隔,認證者會發送一個新新的消息challenge端點點,重複步驟 1 到 3 。
通過遞增改變的標識符和可變的挑戰值,CHAP 防止了來自端點的重放攻擊,使用重複校驗可以限制暴露於單個攻擊的時間。認證者控制驗證頻度和時間。
該認證方法依賴於只有認證者和對端共享的密鑰,密鑰不是通過該鏈路發送的。
雖然該認證是單向的,但是在兩個方向都進行 CHAP 協商,同一密鑰可以很容易地實現相互認證。
由於 CHAP 可以用在許多不同的系統認證中,因此可以用 NAME 欄位作為索引,以便在一張大型密鑰表中查找正確的密鑰,這樣也可以在一個系統中支持多個 NAME/ 密鑰對,並可以在會話中隨時改變密鑰。
CHAP 要求密鑰以明文形式存在,無法使用通常的不可回復加密口令資料庫。
CHAP 在大型網路中不適用,因為每個可能的密鑰由鏈路的兩端共同維護。
協議結構
CHAP 的配置選項格式如下:
8 16 32 40 bit
Type Length Authentication-Protocol Algorithm
• Type ― 3
• Length ― 5
• Authentication-Protocol ― 對於 CHAP,為 C223(Hex)。
Algorithm ― Algorithm 欄位為八位位元組,表示使用的認證方法。
CHAP 數據包結構如下所示:
8 16 32 bit Variable
Code> Identifier Length Data . . .
• Code ― 識別 CHAP 數據包類型。CHAP 代碼具有以下幾種:1、Challenge;2、Response;3、Success;4、Failure。
• Identifier ― 用於匹配 Challenges、Responses 和 Replies 信息。
• Length ― CHAP 數據包的長度,包括 Code、Identifier、Length 和 Data 欄位。
• Data ― 0或更多八位位元組。該欄位格式取決於 Code 欄位。對於 Success 和 Failure,Data 欄位包括一個獨立執行的可變信息欄位