网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

挑战握手认证协议(CHAP)

更新时间:2026年03月27日   作者:spoto   标签(Tag):

Challenge Handshake Authentication Protocol(CHAP)是一种由IETF(互联网工程任务组)开发的点对点协议。该协议用于在连接初始建立阶段进行身份验证。此外,CHAP还会定期进行检查,以确认路由器是否仍然与同一主机进行通信。
特点:  

  • 它采用了三路握手协议(与TCP不同)。首先,认证方向对方发送一个挑战包,然后对方使用自己的单向哈希函数来回应一个数值。之后,认证方会将收到的数值与自己计算出的哈希值进行比对。如果两者匹配,则认证成功;否则,连接将被终止。
  • 它使用了一种名为MD5的单向哈希函数。
  • 此外,该系统还会定期进行验证,以确保通信确实是在与同一台设备进行的。
  • 此外,与PAP(密码认证机制)相比,这种方式提供了更高的安全性。因为所使用的密码值是通过哈希函数来生成的,而该哈希值的值是可以灵活变化的。
  • CHAP协议要求必须知道加密后的明文内容,因为该明文永远不会通过网络进行传输。


CHAP数据包: 
CHAP数据包共有4种类型。

  1. 挑战任务包这是由认证器在CHAP三方握手开始时发送给对方的数据包。同时,还会定期发送挑战数据包,以确认连接是否未被篡改。该数据包包含标识符值、随机值以及认证器的名称。名称字段用于查找密码。此外,该字段还会被输入到MD5哈希生成器中,从而生成唯一的哈希值。
  2. 响应数据包它用于响应挑战数据包。 该字段中包含了一个单向哈希值、标识符以及名称字段。 “Response数据包中的Name字段,其值被设置为对端路由器的主机名。” 现在,需要查询Challenge数据包中的“Name”字段来获取密码。 路由器会查找与“Challenge”数据包中的“Name”字段中提供的用户名相匹配的条目,然后获取相应的密码。 然后,该密码会被传递给MD5哈希算法进行处理,从而生成出一个唯一的哈希值。 该值会被插入到响应数据包的“value”字段中,然后被发送到认证器。
  3. 成功数据包现在,验证器也会执行同样的操作:它会在响应数据包的“用户名”字段中查找该用户名是否存在,然后利用该信息来生成哈希值。如果生成的哈希值与对方提供的哈希值相同,那么就会发送成功消息。
  4. 失败数据包如果生成的值与预期值不同,那么就会向对方发送一个失败数据包。

优点/优势

  • 强认证:CHAP提供了一种强大的身份验证方式。它通过向用户发送一个随机生成的挑战字符串来实现身份验证,而这个挑战字符串会在每次会话时都发生变化。这样一来,用户的密码或密钥就不会被通过网络传输到外部设备了。
  • 安全:CHAP是一种安全的认证协议。它使用单向哈希函数来加密挑战字符串和密码,因此攻击者很难截获并解密用户的凭据。
  • 防止重放攻击:CHAP机制通过在挑战字符串中包含一个序列号来防止重复攻击,从而确保相同的挑战字符串不会被重复使用。
  • 兼容性:CHAP与多种网络协议和操作系统兼容,因此可以在各种网络环境中轻松实现和使用。
  • 可扩展性:CHAP是一种可扩展的认证协议,因为它能够支持网络中大量用户和设备的认证需求。

缺点/不利因素

  • 容易受到中间人攻击:CHAP协议容易受到中间人攻击,因为攻击者可以截获挑战包和响应包,然后利用这些包来在网络中进行身份验证。
  • 需要预先共享的密钥。CHAP协议需要预先共享的密钥或密码来验证用户身份。在大规模网络环境中,这种管理方式可能会变得相当复杂。
  • 没有相互认证:CHAP并不提供相互认证功能,这意味着网络无法以与用户验证网络的方式相同的方式来验证用户身份。这样一来,网络就容易受到欺骗攻击的威胁。
  • 间接费用:CHAP会在网络中引入额外的开销,因为每次会话中,用户与网络之间都需要交换多个数据包。
  • 不适合用于需要高度安全性的应用场景。CHAP并不适合那些需要高级身份验证和加密机制的高安全性的应用场景,因为CHAP仅提供基本的身份验证和加密功能而已。


配置: 
 


这里有一个由2台路由器组成的小型网络,分别名为Router1和Router2。Router1的IP地址为10.1.1.1/30,位于s0/0接口上;而Router2的IP地址为10.1.1.2/30,同样位于s0/0接口上。需要注意的是,默认情况下,Cisco路由器上启用了HDLC协议。因此,首先需要将封装方式更改为PPP协议。
配置R1:

Router1(config)# int s0/0Router1(config-if)# encapsulation ppp


配置R2:

Router2(config)# int s0/0Router2(config-if)# encapsulation ppp


请同时更改两台路由器的主机名。

Router1(config) hostname R1Router2(config)# hostname R2


请依次输入用户名和密码。

R1(config)# username R2 password GeeksforGeeks  
R2(config)# username R1 password GeeksforGeeks 


请注意,用户名和密码是区分大小写的。此外,在路由器R1上,我们必须输入其他路由器的用户名,即R2的用户名,反之亦然。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料