PPP及PPPOE协议介绍

PPP概念
PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议 。这种链路提供全双工操作,并按照顺序传递数据包 。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案 。
PPP链路建立过程
PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题 。PPP协议包含这样几个部分:链路控制协议LCP(Link Control Protocol);网络控制协议NCP(Network Control Protocol);认证协议,最常用的包括口令验证协议PAP(PassWord Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol) 。
LCP负责创建,维护或终止一次物理连接 。NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题 。下面介绍PPP链路建立的过程:
PPP链路状态机如图1所示 。一个典型的链路建立过程分为三个阶段:创建阶段、认证阶段和网络协商阶段 。
阶段1:创建PPP链路
LCP负责创建链路 。在这个阶段,将对基本的通讯方式进行选择 。链路两端设备通过LCP向对方发送配置信息报文(Configure Packets) 。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了LCP开启状态 。应当注重,在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现 。
阶段2:用户验证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器 。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接 。在认证完成之前,禁止从认证阶段前进到网络层协议阶段 。假如认证失败,认证者应该跃迁到链路终止阶段 。在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被答应的 。在该阶段里接收到的其他的packets必须被静静的丢弃 。最常用的认证协议有口令验证协议(PAP)和挑战握手验证协议(CHAP) 。认证方式介绍在第三部分中介绍 。
阶段3:调用网络层协议
认证阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP) 。选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址 。这样,经过三个阶段以后,一条完整的PPP链路就建立起来了 。
认证方式
1 口令验证协议(PAP)
PAP是一种简单的明文验证方式 。NAS(网络接入服务器,Network Access Server)要求用户提供用户名和口令,PAP以明文方式返回用户信息 。很明显,这种验证方式的安全性较差,第三方可以很轻易的获取被传送的用户名和口令,并利用这些信息与NAS建立连接获取NAS提供的所有资源 。所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施 。
2 挑战-握手验证协议(CHAP)
CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码 。NAS向远程用户发送一个挑战口令(challenge),其中包括会话ID和一个任意生成的挑战字串(arbitrary challengestring) 。远程客户必须使用MD5单向哈希算法(one-way hashing algorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送 。
CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密 。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照 。CHAP为每一次验证任意生成一个挑战字串来防止受到再现攻击(replay attack) 。在整个连接过程中,CHAP将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remote client impersonation)进行攻击 。

推荐阅读