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)阶段。
待续……       
 

猜你喜欢

转载自blog.csdn.net/lnboxue/article/details/79486093
今日推荐