挑战握手认证协议(CHAP)是简单口令协议(PAP)的改进型,它用“挑战/应答”的方式,经过三次握手周期性认证被认证对象的身份。
CHAP的认证过程如下。
(1)在需认证对象要访问给出服务的系统的时候,认证方向被认证对象发送递增改变的标识符和一个挑战消息,也就是一段随机的数据。
(2)被认证对象对认证方发个响应,此响应数据通过单向散列函数计算出来,单向散列函数的输入参数是本次认证的标识符、密钥与挑战消息组成的。
(3)认证方把得到的响应与由认证标识符、密钥与挑战消息计算得出的散列函数值对比。如果相符那么认证通过,对被认证对象发“成功”消息;要不然发送“失败”消息,断开服务连接。
(4)CHAP协议不只是在连接建立阶段实施,在后面的数据传输阶段,仍是在随机的间隔周期中实施,若发现结果不同,认证方也会切断服务连接。
CHAP具有以下优点。
(1)融入不确定因素,借助持续使认证标识符与随机的挑战消息变化进行避免重放攻击。
(2)用周期性的挑战消息认证约束了单个攻击的暴露时间,认证者管控挑战的频度。
(3)认证过程中依赖的密钥不在链路传输。
(4)尽管CHAP实施的是单向认证,不过在两个方向上实施CHAP协商,同一密钥能非常轻易地完成交互认证。
CHAP的不足之处如下。
(1)CHAP认证的关键是密钥,密钥以明文形式存放与使用,无法用通常的不可逆运算加密口令。
(2)CHAP的密钥是通信两方共享的,这点和对称密钥体制相似,所以给密钥的分发与更新造成了困难,需要每个通信对均有个共享的密钥,不符合大规模的系统。