PPP(Point to Point Protocol)协议是在点到点链路上承载网络层数据包的一种链路层协议,由于它能够提供用户验证、易于扩充,并且支持同/异步通信,因而获得广泛应用。
PPP定义了一整套的协议,包括链路控制协议(LCP)、网络层控制协议(NCP)和验证协议(PAP和CHAP)。
l 链路控制协议(Link Control Protocol,LCP):主要用来建立、拆除和监控数据链路。
l 网络控制协议(Network Control Protocol,NCP):主要用来协商在该数据链路上所传输的数据包的格式与类型。
l 用于网络安全方面的验证协议族PAP和CHAP。
PAP验证
PAP(Password Authentication Protocol)验证为两次握手验证,密码为明文,PAP验证的过程如下:
(1) 被验证方发送用户名和密码到验证方;
(2) 验证方根据本端用户表查看是否有此用户以及密码是否正确,然后返回不同的响应(Acknowledge or Not Acknowledge)。
图1 PAP验证示意图
PAP不是一种安全的验证协议。当验证时,口令以明文方式在链路上发送,并且由于完成PPP链路建立后,被验证方会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以不能防止攻击。
CHAP验证
CHAP(Challenge-Handshake Authentication Protocol)验证为三次握手验证,密码为密文(密钥)。
CHAP单向验证是指一端作为验证方,另一端作为被验证方。双向验证是单向验证的简单叠加,即两端都是既作为验证方又作为被验证方。在实际应用中一般只采用单向验证。
CHAP验证过程如下:
(1) 验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge),并同时将本端的用户名附带上一起发送给被验证方;
(2) 被验证方接到验证方的验证请求后,检查本端接口上是否配置了缺省的CHAP密码,如果配置了则被验证方利用报文ID、该缺省密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response);
(3) 如果被验证方检查发现本端接口上没有配置缺省的CHAP密码,则被验证方根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,如果在用户表找到了与验证方用户名相同的用户,便利用报文ID、此用户的密钥(密码)和MD5算法对该随机报文进行加密,将生成的密文和被验证方自己的用户名发回验证方(Response);
(4) 验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,根据比较结果返回不同的响应(Acknowledge or Not Acknowledge)。
图2 CHAP验证示意图
PPP运行过程
PPP运行过程(参见下图)如下:
(1) 在开始建立PPP链路时,先进入到Establish阶段。
(2) 在Establish阶段PPP链路进行LCP协商,协商内容包括工作方式(是SP还是MP)、验证方式和最大传输单元等。LCP协商成功后进入Opened状态,表示底层链路已经建立。
(3) 如果配置了验证(远端验证本地或者本地验证远端)则进入Authenticate阶段,开始CHAP或PAP验证。
(4) 如果验证失败进入Terminate阶段,拆除链路,LCP状态转为Down;如果验证成功就进入Network协商阶段(NCP),此时LCP状态仍为Opened,而IPCP状态从Initial转到Request。
(5) NCP协商支持IPCP协商,IPCP协商主要包括双方的IP地址。通过NCP协商来选择和配置一个网络层协议。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。
(6) PPP链路将一直保持通信,直至有明确的LCP或NCP帧关闭这条链路,或发生了某些外部事件(例如用户的干预)。
图3 PPP运行流程图
.- 上一篇:PPPoE的技术介绍
- 下一篇:MP简介