RFC1994------CHAP:PPP 挑战握手认证协议

挑战握手认证协议(CHAP)通过三次握手周期性的校验对端的身份,在初始链路建立时完成,可以在链路建立之后的任何时候重复进行。

  1. 链路建立阶段结束之后,认证者向对端点发送“challenge”消息。

  2. 对端点用经过单向哈希函数计算出来的值做应答。

  3. 认证者根据它自己计算的哈希值来检查应答,如果值匹配,认证得到承认;否则,连接应该终止。

  4. 经过一定的随机间隔,认证者发送一个新的 challenge 给端点,重复步骤 1 到 3 。

  通过递增改变的标识符和可变的挑战值,CHAP 防止了来自端点的重放攻击,使用重复校验可以限制暴露于单个攻击的时间。认证者控制验证频度和时间。

  该认证方法依赖于只有认证者和对端共享的密钥,密钥不是通过该链路发送的。

  虽然该认证是单向的,但是在两个方向都进行 CHAP 协商,同一密钥可以很容易的实现相互认证。

  由于 CHAP 可以用在许多不同的系统认证中,因此可以用 NAME 字段作为索引,以便在一张大型密钥表中查找正确的密钥,这样也可以在一个系统中支持多个 NAME/ 密钥对,并可以在会话中随时改变密钥。

  CHAP 要求密钥以明文形式存在,无法使用通常的不可回复加密口令数据库。

  CHAP 在大型网络中不适用,因为每个可能的密钥由链路的两端共同维护。

 

CHAP 的配置选项格式如下:

 


Type ― 3
Length ― 5
Authentication-Protocol ― 对于 CHAP,为 C223(Hex)。
Algorithm ― Algorithm 字段为八位字节,表示使用的认证方法。


CHAP 数据包结构如下所示:


Code ― 识别 CHAP 数据包类型。CHAP 代码具有以下几种:1、Challenge;2、Response;3、Success;4、Failure。
Identifier ― 用于匹配 Challenges、Responses 和 Replies 信息。
Length ― CHAP 数据包的长度,包括 Code、Identifier、Length 和 Data 字段。
Data ― 0或更多八位字节。该字段格式取决于 Code 字段。对于 Success 和 Failure,Data 字段包括一个独立执行的可变信息字段。

 


1 PPP概述

  点到点协议(Point to Point Protocol,PPP)是IETF(Internet Engineering Task Force,因特网工程任务组)推出的点到点类型线路的数据链路层协议。它解决了SLIP中的问题,并成为正式的因特网标准。

  PPP协议在RFC 1661、RFC 1662和RFC 1663中进行了描述。

  PPP支持在各种物理类型的点到点串行线路上传输上层协议报文。PPP有很多丰富的可选特性,如支持多协议、提供可选的身份认证服务、可以以各种方式压缩数据、支持动态地址协商、支持多链路捆绑等等。这些丰富的选项增强了PPP的功能。同时,不论是异步拨号线路还是路由器之间的同步链路均可使用。因此,应用十分广泛。

  本文我们主要介绍PPP的身份认证功能。

  2 CHAP原理

  PPP提供了两种可选的身份认证方法:口令验证协议PAP(Password Authentication Protocol,PAP)和质询握手协议(Challenge Handshake Authentication Protocol,CHAP)。如果双方协商达成一致,也可以不使用任何身份认证方法。

  CHAP认证比PAP认证更安全,因为CHAP不在线路上发送明文密码,而是发送经过摘要算法加工过的随机序列,也被称为"挑战字符串".如图1所示。同时,身份认证可以随时进行,包括在双方正常通信过程中。因此,非法用户就算截获并成功破解了一次密码,此密码也将在一段时间内失效。

                               

 

 

 CHAP对端系统要求很高,因为需要多次进行身份质询、响应。这需要耗费较多的CPU资源,因此只用在对安全要求很高的场合。

 

 


3 CHAP配置

  3.1 PPP基本配置

  对于同步串行接口,默认的封装格式是HDLC(Cisco私有实现)。可以使用命令encapsulation ppp将封装格式改为PPP.如图2所示。

         

                                                   图2 PPP串行封装

 

 

     当通信双方的某一方封装格式为HDLC,而另一方为PPP时,双方关于封装协议的协商将失败。此时,此链路处于协议性关闭(protocol down)状态,通信无法进行。如图3所示。

       

                                   图3 两端路由器串行接口封装格式不一致

 


这时,在路由器RouterA与路由器RouterB的链路没有成功建立之前,路由器RouterA及RouterB的路由表将为空。

  3.2 CHAP配置

  3.2.1 CHAP认证过程

  同PAP一样,CHAP认证可以在一方进行,即由一方认证另一方身份,也可以进行双向身份认证。这时,要求被认证的双方都要通过对方的认证程序,否则,无法建立二者之间的链路。我们以单方认证为例分析CHAP配置过程及诊断方法。

  如图4所示。当双方都封装了PPP协议且要求进行CHAP身份认证,同时它们之间的链路在物理层已激活后,认证服务器会不停地发送身份认证要求直到身份认证成功。和PAP不同的是,这时认证服务器发送的是"挑战"字符串。

 

                    

                                                            图4 CHAP验证

 

 


在图4中,当认证客户端(被认证一端)路由器RouterB发送了对"挑战"字符串的回应数据包后,认证服务器会按照摘要算法(MD5)验证对方的身份。如果正确,则身份认证成功,通信双方的链路最终成功建立。

  如果被认证一端路由器RouterB发送了错误的"挑战"回应数据包,认证服务器将继续不断地发送身份认证要求直到收到正确的回应数据包为止。

  3.2.2 CHAP认证服务器的配置

  CHAP认证服务器的配置分为两个步骤:建立本地口令数据库、要求进行CHAP认证。

  建立本地口令数据库

  通过全局模式下的命令username username password password来为本地口令数据库添加记录。这里请注意,此处的username应该是对端路由器的名称,即routerb.如下所示:

  RouterA(config)#username routerb password samepass

  要求进行CHAP认证

  这需要在相应接口配置模式下使用命令ppp authentication chap来完成。如下所示:

  RouterA(config)#interface serial 0/0

  RouterA(config-if)#ppp authentication chap

  3.2.3 CHAP认证客户端的配置

  CHAP认证客户端的配置只需要一个步骤(命令),即建立本地口令数据库。请注意,此处的username应该是对端路由器的名称,即routera,而口令应该和CHAP认证服务器口令数据库中的口令相同。如下所示。

  RouterB(config-if)#username routera password samepass

  3.2.4 CHAP的诊断

  对于CHAP身份认证中出现的问题也可以利用debug ppp authentication命令进行诊断。如图5所示,它表明认证客户端发送的"挑战"回应数据包没有通过认证服务器的认证。

     

 

                         图5 命令debug ppp authentication 的输出

 

图6表明经过若干次认证要求后,认证服务器最终收到了认证客户端发送过来的正确的"挑战"回应数据包。此时,双方的链路将成功建立。

             图6 命令debug ppp authentication 的输出

  注意:

  1、CHAP认证过程中,口令是大小写敏感的。

  2、身份认证也可以双向进行,即互相认证。配置方法同单向认证类似,只不过需要将通信双方同时配置成为认证服务器和认证客户端。

  3、口令数据库也可以存储在路由器以外的AAA或TACACS+服务器上。限于篇幅,此处不再赘述。

  通信认证双方选择的认证方法可能不一样,如一方选择PAP,另一方选择CHAP,这时双方的认证协商将失败。为了避免身份认证协议过程中出现这样的失败,可以配置路由器使用两种认证方法。当第一种认证协商失败后,可以选择尝试用另一种身份认证方法。如下的命令配置路由器首先采用PAP身份认证方法。如果失败,再采用CHAP身份认证方法。

  RouterA(config-if)#ppp authentication pap chap

  如下的命令则相反,首先使用CHAP认证,协商失败后采用PAP认证。

  RouterA(config-if)#ppp authentication chap pap

                          图6 命令debug ppp authentication 的输出

  注意:

  1、CHAP认证过程中,口令是大小写敏感的。

  2、身份认证也可以双向进行,即互相认证。配置方法同单向认证类似,只不过需要将通信双方同时配置成为认证服务器和认证客户端。

  3、口令数据库也可以存储在路由器以外的AAA或TACACS+服务器上。限于篇幅,此处不再赘述。

  通信认证双方选择的认证方法可能不一样,如一方选择PAP,另一方选择CHAP,这时双方的认证协商将失败。为了避免身份认证协议过程中出现这样的失败,可以配置路由器使用两种认证方法。当第一种认证协商失败后,可以选择尝试用另一种身份认证方法。如下的命令配置路由器首先采用PAP身份认证方法。如果失败,再采用CHAP身份认证方法。

  RouterA(config-if)#ppp authentication pap chap

  如下的命令则相反,首先使用CHAP认证,协商失败后采用PAP认证。

  RouterA(config-if)#ppp authentication chap pap

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值