首页 > 代码库 > PPP验证(PAP和CHAP)
PPP验证(PAP和CHAP)
ppp协议
PPP协议是一种点到点的链路协议,主要运用于在全双工的链路上进行点到点的数据传输
特点:
-支持点到点和点到多点
-支持同步和异步串行服务
-可同时支持多种网络层协议
-支持验证
-支持地址自动协商,能够远程分配IP地址
PPP组成:
LCP:链路控制协议,负责物理层和二层的协商(用来建立、拆除和监控PPP数据链路)
NCP:网络控制协议,负责和三层协商(对于不同的网络层协议进行连接建立和参数协商)
PPP链路认证如下:
1:Dead阶段是没有进行任何连接的阶段,为不可用阶段,只有当两端检测到物理接口被激活的时候,才会从Dead阶段到Establish阶段,也叫链路建立阶段。
2:在Establish阶段,PPP链路进行LCP参数协商。协商内容包括MRU、认证方式、魔术字等,LCP参数协商成功后会进入Opened状态,表示底层链路已经建立。
3:接下来就是链路两端的设备需要经过认证阶段(Authenticate)才能进入到网络层协议阶段,如果在这个阶段再次收到了Configure-Request报文,则又会返回到链路建立阶段。
4:在Network阶段,PPP链路进行NCP协商,只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。如果在这个阶段收到了Configure-Request报文,也会返回到链路建立阶段。
5:NCP协商成功后,PPP链路保持通信状态。
6:在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead状态,直达通信双方建立起一个PPP连接。
PS:Configure-Request(配置请求):链路层协商过程中发送的第一个报文,该报文表明点对点双方开始进行链路层参数的协商。
MRU:最大接受单元
认证方式:包括PAP和CHAP
魔术字:随机产生一个数值,检测链路上是否有环路,如果收到的LCP报文中的魔术字和本段产生的魔术字一样,就认为有环路。但是要保证两端的数字都是一样的,基本上为0
首先了解一下这些名词,:
1. Configure-Request(配置请求):链路层协商过程中发送的第一个报文,该报文表明点对点双方开始进行链路层参数的协商。
2. Configure-Ack(配置响应):收到对端发来的Configure-Request报文,如果参数取值完全接受,则以此报文响应。
3. Configure-Nak(配置不响应):收到对端发来的Configure-Request报文,如果参数取值不被本端认可,则发送此报文并且携带本端可接受的配置参数。
4. Configure-Reject(配置拒绝):收到对端发来的Configure-Request报文,如果本端不能识别对端发送的Configure-Request中的某些参数,则发送此报文并且携带那些本端不能认别的配置参数。
1:RTA发送一个Configure-Request报文,这个报文中包含RTA上的链路层上的一些参数,当RTB收到这个配置请求之后,如果RTB能够识别,那么就会向RTA发送Configure-Ack报文。
2:当然,RTA不会等到RTB主动回复信息,RTA每隔3次就会发送一次,连续发10次,如果还没有收到Configure-Ack报文,就会停止发送
3:当RTB收到RTA发送的Configure-Request报文之后,如果RTB能识别此报文中携带的所有链路层参数,但是认为部分或全部参数的取值不能接受,即参数的取值协商不成功,则RTB需要向RTA发送一个Configure-Nak报文。
4:当RTB收到RTA发送的Configure-Request报文之后,如果RTB不能识别此报文中携带的部分或全部链路层参数,则RTB需要向RTA回应一个Configure-Reject报文。在此Configure-Reject报文中,只包含不能被识别的链路层参数。在收到Configure-Reject报文之后,RTA需要向RTB重新发送一个Configure-Request报文
以上只是LCP链路上的一些协商配置过程,接下来是认证过程(PAP和CHAP)
pap认证使用的是两次握手协议,密码以明文的方式在链路上传输。在LCP链路上写上完成后,认证方要求被验证方进行pap认证。
被认证方将配置的用户名和密码信息使用Authenticate-Request报文以明文方式发送给认证方。认证方收到被认证方发送的用户名和密码信息之后,根据本地配置的用户名和密码数据库检查用户名和密码信息是否匹配,如果匹配,则返回Authenticate-Ack报文,表示认证成功。否则,返回Authenticate-Nak报文,表示认证失败。
CHAP需要三次验证,是一种比较安全的认证方式。它有一个加密算法,这个算法叫做MD5,它是一个不可逆的过程,通常我们也会在网上看到一些解密MD5的网站,但是这些网站是依靠强大的数据库进行碰撞得出的结果,现在还没有一个有效的解密的手段去对他解密。
1. LCP协商完成后,认证方发送一个Challenge报文给被认证方,认证方很皮,他要挑战一下被认证方。
2. 被认证方收到此Challenge报文之后,也皮一下,进行一次加密运算,也是MD5运算,得到一个16字节长的摘要信息,然后将此摘要信息和端口上配置的CHAP用户名一起封装在Response报文中发到认证方那里去。
3. 认证方接收到被认证方发送的Response报文之后,按照Response的用户名在认证方的本地查找相应的密码信息,得到密码信息之后,进行一次加密运算,运算方式和被认证方的加密运算方式相同,然后将加密运算得到的摘要信息和Response报文中封装的摘要信息做比较,相同则认证成功,不相同则认证失败。
本文出自 “costin” 博客,请务必保留此出处http://brighttime.blog.51cto.com/12837169/1953874
PPP验证(PAP和CHAP)