| |
3.3.4 鉴权协议
在PPP连接过程中,LCP协议定义了一种使用鉴权协议进行鉴权的方法。这种机制可以使用不同的协议进行鉴权,目前支持的鉴权协议包括PAP(Password Authentication Protocol)和CHAP(Challenge Handshake Authentication Protocol)。
1.密码鉴权协议(PAP)PAP提供了一种通过双向握手进行身份确认的简单方法。在LCP链路建立后,被鉴权者将身份和密码发送给鉴权者,然后等待对方的确认信息。因为用户的身份和密码是通过链路以明码的方式发送的,所以PAP不是一种绝对安全的鉴权方法。
(1)PAP数据帧格式
(2)数据帧类型
鉴权请求用于启动密码认证协议,将本地的身份标识和密码发送给对方,并等待对方应答。该过程可以多次重复直到接收到对方的应答信息。
如果接收到的鉴权请求数据帧中的用户标识和密码都合法,那么通信终端将使用鉴权确认数据帧进行确认,以通知对方已经通过了身份验证;如果接收到的信息不合法,则使用鉴权否认数据帧通知对方。在鉴权确认数据帧的数据域中可以包含一些用于显示的信息。
2.挑战握手鉴权协议(CHAP)
CHAP协议使用三方握手来周期性的确定对方的身份,它可以在链路建立后的任何时候进行。当链路建立后,鉴权者向对方发送一个“挑战”信息,对方使用单向链表(one-way hash)函数计算后发送结果,鉴权者将接收到的信息与自己计算出来的结果进行比较,如果两者相同,则鉴权成功;否则,鉴权失败,连接被终止。同PAP相比,CHAP更具有安全性。首先,鉴权过程中使用不断变化的挑战信息和身份标识,这使得攻击者很难有机会进行破解;其次,鉴权由鉴权者控制,它可以随时对对方进行身份确认。使用CHAP时,必须配合一种链表算法,目前与CHAP配合使用的算法是MD5算法。在PPP中使用CHAP必须在LCP协商时配置相应的鉴权算法为CHAP,配置选项格式如下:
(2)CHAP数据帧类型
挑战数据帧用来启动CHAP。鉴权者在LCP协商后主动发送挑战信息来验证用户身份。对方在接收到挑战信息后用单向链表算法进行计算,然后将计算后的结果用应答数据帧进行应答。数据帧格式如下:
代码:挑战数据帧为1;应答数据帧为2
标识:一个字节。每次发送挑战数据帧时必须使用不同的标识码;应答数据帧必须将挑战数据帧的标识码复制后发送。
挑战值长度:一个字节,指示挑战值的长度
挑战值:一个以上的字节,首先发送高位字节。挑战值是一个可变的字节流,每次挑战要使用不同的数值;应答数据帧中该域存放经过计算后的信息流,信息流的长度取决于使用的链表算法,比如MD5算法计算的结果是16字节。
名称:标识传输数据包的系统的名称,但是该域的值并没有限制,可以采用不同数值进行发送。
代码:成功数据帧为3;失败数据帧为4
标识:必须从应答数据帧中复制该值。
信息:信息域是可选的而且其内容是由具体的应用来决定的,一般来说,信息域存放的是可以显示的ASCII码。
转:http://scj2002.blog.163.com/blog/static/55264793200811363049396/