什么是询问握手身份验证协议

传输网/接入网/交换网

6人已加入

描述

什么是询问握手身份验证协议

CHAP(询问握手身份验证协议)是用于远程登录的身份验证协议,通过三次握手周期性的校验对端的身份,在初始链路建立时完成,可以在链路建立之后的任何时候重复进行。CHAP通常用在客户机与服务器之间或者Web浏览器与Web服务器之间。询问/响应是一种安全机制,用于在不泄露由两个实体共享的密码的情况下,验证用户或进程的身份。它也指的是三次握手。与CHAP相关的重要概念是客户机必须向服务器证明它知道共享密码,但实际上并不泄露密码(通过线路发送密码可能将它泄露给偷听者)。CHAP提供了这么做的机制。

当客户机与使用CHAP的系统进行联系时,该系统(此处称为验证者)通过将“询问”发送到客户机来响应。询问是对此身份验证会话惟一的一些信息。然后,客户机接受此信息并使用以前发布的由客户机和验证者共享的密码对它加密。然后,此操作的结果返回到验证者。验证者具有相同的密码并将其用作对它加密。以前发送到客户机的信息的密钥。它把它的加密结果与客户机发送过来的加密结果进行比较。如果它们相同,则客户机被认为是真实可信的。

在会话过程中始终重复该过程,以验证正确的客户机仍在连接中。重复这些步骤可以防止有人通过“重放”从线路上截获的信息来“偷听”客户机的会话。

后面描述该例程的细节,如图C-11所示。注意:该技术不要求客户机以开放方式通过线路将密码发送到服务器(验证者)。该密码已经由客户机和验证者共享,而且用它执行各自的单独的散列函数。

身份验证

图C-11 询问、响应机制

l.客户机与验证者连接。

2.验证者通过向客户机发送询问进行响应。

3.客户机将共享密码附加到询问,并通过单向散列函数运行该组合,该散列函数创建不可能由当前标准回复到原始形式的消息摘要。

4.客户机将此操作的结果返回到验证者。

5.验证者单独执行相同的操作。它组合并散列处理共享密码和它发送到客户机的询问。然后,它将其结果与从客户机收到的结果相比较。

6.如果它们匹配,则认为该客户机真实可信。如果不匹配,则终止该连接。

CHAP通过递增改变的标识符和可变的挑战值,防止了来自端点的重放攻击,使用重复校验可以限制暴露于单个攻击的时间。认证者控制验证频度和时间。该认证方法依赖于只有认证者和对端共享的密钥,密钥不是通过该链路发送的。

另一个重要特征是,验证者在每次登录时发布不同的询问,并且随着会话的进行,周期性地发布不同的询问来检测已经被黑客接管的会话。当发送每个新的询问时,必须用共享密码散列处理。如果没有共享密码的人已经接管会话,这将导致身份验证失败,服务器将断开该会话。

在这种情况下,验证者询问客户机——一种单向方案。客户机也希望确定它被连接到正确的服务器,因为黑客也可能侵入会话并伪装成服务器。解决方案是在两个方向上都运行CHAP,但每个CHAP会话的共享密码应该不同。

挑战握手协议的优点在于密钥不在网络中传送,不会被窃听。由于使用三次握手的方法,发起连接的一方如果没有收到“挑战信息”就不能进行验证,因此在某种程度上挑战握手协议不容易被强制攻击。但是,CHAP中的密钥必须以明文形式存在,不允许被加密,安全性无法得到保障。密钥的保管和分发也是CHAP的一个难点,在大型网络中通常需要专门的服务器来管理密钥。

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

CHAP数据分组格式和身份验证时交换数据分组的方法会泄露关于CHAP如何工作的更多细节。交换如图C-12所示。CHAP数据分组的大小是可变的,这取决于发送的数据分组的类型。

图C-12 CHAP数据分组交换

CHAP数据分组中的字段如下所述:

•代码字段 代码字段包含一个数字值,按以下方式标识CHAP数据分组的类型:1=询问数据分组(验证者到客户机),2=响应数据分组(客户机到验证者),3=成功数据分组(验证者到客户机,身份验证成功时),4=失败(验证者到客户机,身份验证失败时)。验证者在发送代码为4的数据分组后,终止连接。

•标识符 该字段包含一个值,标识特定的身份验证会话。所有的询问和响应数据分组具有相同的标识符以与其他身份验证会话区别。

•长度 该字段包含一个值,指示CHAP数据分组的长度,包括“代码”、“标识符”、“长度”和“数据”字段。

•数据(值) 根据数据分组代码类型,该字段具有可变的大小,并包含以下信息: 询问值(代码1)字段中的该值是由验证者生成的惟一的且不可预测的值。该值的惟一性防止攻击者试图用以前截取的值欺骗验证者。

响应值(代码2)该值字段保存客户机创建的单向散列。通过加密标识符、密钥和询问值的组合创建该散列。通常使用MD5加密来创建散列。

成功或失败值(代码3和代码4)这些数据分组的成功或失败值取决于执行情况,但通常只是用户可读取的消息,对协议操作没有影响。

在图C-12中,注意如何在交换数据分组中区别代码值和数据值。步骤3和5大约同时发生在客户机和验证者上,然后验证者等待来自客户机的散列结果,并将它们与自己的结果相比较。然后,它根据比较结果,发送成功或失败的数据分组。

询问/验证方案也可以与公共密钥一起使用来验证用户身份。假设甲给乙发送一个询问,甲用乙的公共密钥加密该询问。乙用他的私人密钥解密该询问并将询问返回给甲,以此向甲证明,他拥有与甲用于加密该询问的公共密钥相关的私人密钥。另一项技术是,乙将询问与一些其他信息组合,并用他的私人密钥签署它,将结果返回给甲。甲用乙的公共密钥执行相同的操作,并将该操作结果与它从乙那里收到的结果相比较。如果它们匹配,则甲知道乙拥有正确的密钥。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分