CHAP单向验证是指一端作为验证方,另一端作为被验证方。双向验证是单向验证的简单叠加,即两端都是既作为验证方又作为被验证方。在实际应用中一般只采用单向验证。
CHAP验证过程如下:
(1) 主验证方主动发起验证请求,主验证方向被验证方发送随机产生的报文(Challenge),
并同时将本端的用户名(若在接口上有配置用户名则使用此用户名,若没有则使用路由器的名字)一起发送给被验证方;
(2) 被验证方接到验证方的验证请求后,检查本端接口上是否配置了缺省的CHAP密码,如果配置了则被验证方利用报文ID、
该缺省密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response);
(3) 如果被验证方检查发现本端接口上没有配置缺省的CHAP密码,则被验证方根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,
如果在用户表找到了与验证方用户名相同的用户,便利用报文ID、此用户的密码和MD5算法对该随机报文进行加密,
将生成的密文和被验证方自己的用户名发回验证方(Response);
(4) 验证方用自己保存的被验证方密码、报文ID和MD5算法对原随机报文加密,比较二者的密文,根据比较结果返回不同的响应(Acknowledge or Not Acknowledge)。