PPP協議運行原理(二)

通信雙方隨着PPP協議運行的第一階段——鏈路建立階段的完成,雙方將進入到第二階段——驗證(PAP/CHAP)階段。
對PPP進行驗證時使用的協議有很多,比如PAP(口令驗證協議)、CHAP(挑戰握手身份驗證協議)、MS-CHAP v2(微軟挑戰握手身份驗證協議版本2)、EAP(可擴展的身份驗證協議)等。其中PAP和CHAP是我們使用最多的。現將這PAP和CHAP這兩個驗證協議的原理做簡單介紹:
PAP——口令驗證協議,雙方使用PAP進行驗證時,會以明文的方式向對方發送用戶名和密碼。通信雙方都在各自設備上爲對方創建一組用戶名和密碼(口令)。任何一方向對方發起PAP協商驗證時都會使用已在對方設備創建好了的這組用戶名和密碼,對方收到後對這組憑據(用戶名和密碼)進行覈對,如果核對成功則會向發送方迴應確認報文,所以PPP PAP驗證的雙方在交互時需要兩次握手,雙方使用“一問一答”的形式,過程相對簡單。收發雙方都向對方發送 PAP Authentication-Request(驗證請求)報文,該報文攜帶用於驗證的用戶名和密碼(口令)。接收方在收到該報文後會向對方迴應一個Authentication-Ack(驗證確認)報文,該報文用於告知對方驗證成功。現在我們來看看這兩個報文的結構:

Authentication-Request(驗證請求報文)
Code:Authentication-Request(0x01)
Identifier:0x02
Length:24
Data (20 bytes)
Peer ID length:12 bytes
Peer-ID (12 bytes)
Password length:6 bytes
Password (6 bytes)

Code——代碼,表明該報文的類型是“Authentication-Request(驗證請求)”報文;
Identifier——標識,每個Authentication-Request報文都會攜帶一個從0x01開始的標識;
Length——長度,該報文的長度,單位是字節;
Data——數據;
Peer ID length——對端ID的長度,其實就是指進行PAP驗證時給對端發送的用戶名的長度;
Peer-ID——給對端發送的用戶名;
Password length——口令長度,就是在進行PAP驗證時給對端發送的密碼長度是多少字節;
Password——給對端發送的密碼;
-------------------------------------------------------------------------------------
Authentication-Ack(驗證確認)報文
Code:Authentication-Ack (0x02)
Identifier:0x02
Length:36
Data (32 bytes)
Message length:31 bytes
Message (31 bytes)

Authentication-Ack(驗證確認)報文中的字段與Authentication-Request(驗證請求)報文中的字段大同小異,只不過多了一個消息長度的字段,本例中的消息長度爲31字節,我們平時使用PPPoE技術寬帶上網撥號成功後,通常會看到一些反饋信息,比如:驗證成功、網絡已連接、歡迎……等信息。這類信息就是Authentication-Ack報文中消息字段的內容。
CHAP——挑戰握手身份驗證協議,雙方使用CHAP進行驗證時,向對方發送的信息是以密文的方式在網絡上傳送,驗證所需的密碼不會在網絡上傳送,但是雙方驗證時向對方發送的用戶名還是會以明文在網絡上傳送的。使用CHAP驗證的一方會向請求驗證的一方發送一串挑戰值,該挑戰值其實就是一串由若干十六進制數組成的數。請求驗證方將收到的這組挑戰值與雙方已協商好的密碼(口令)進行單向哈希函數計算,使用計算出的結果向對方應答。對方收到該應答後,根據它自己計算出的哈希值來檢查應答,如果值匹配,驗證得到承認;否則,連接應該終止。所以CHAP協商時雙方會經過三次握手的交互才完成驗證。雙方在三次握手過程中會生成三個報文,分別是CHAP Challenge(挑戰)報文(由驗證方發出)、CHAP Response(應答)報文(由請求驗證方應答)和CHAPSuccess(成功)/Failure(失敗)報文(由驗證方發出,表明接受還是拒絕)。四種報文結構如下:

CHAP Challenge(挑戰)報文
Code:Challenge (1)
Identifier:0
Length:24
Data (20 bytes)
Value Size:16
Value:9AE1392916AD4D779C06BBD101132FFE
Name:PDC
Name——該字段指發起挑戰一方的設備名/主機名或用戶名,即驗證方的設備名/主機名或用戶名;
Value——發起挑戰一方的設備/主機根據與對端設備協商的算法(比如,MS-CHAP v2、MD5等)隨機生成的值,也就是我們常說的挑戰值;
Value Size——挑戰值的大小,單位是字節;
--------------------------------------------------------------------------------------
CHAP Response(應答)報文
Code:Response (2)
Identifier:0
Length:60
Data (56 bytes)
Value Size:49
Value:2DF2EF300BE245CD03ADA95B18839ED20000000000000000...
Name:vpnusr
該報文只是將Code字段填充爲“Response (2)”,表示這是針對上一個挑戰報文的應答報文。
---------------------------------------------------------------------------------------
CHAP Success(成功)報文
Code:Response (3)
Identifier:0
Length:46
Message:S=FAEB9847BF2FE04F13BB79274D35C3CA6933E555
驗證成功,由驗證方發送成功信息。
---------------------------------------------------------------------------------------
CHAP Failure(失敗)報文
Code:Response (3)
Identifier:0
Length:46
Message:Authentication failed (驗證失敗)

無論使用PAP還是CHAP,只要通過對端的驗證,PPP協商就進入到下一階段,即第三階段——網絡控制協商(NCP)階段。
待續……       
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章