认证方向被认证方发出一个Challenge报文,其中包含了随机数c;作为响应,被认证方将双方共享的秘密值s和c一起作为输入,计算散列值A1(散列函数通常使用MD5),并通过Response报文返回;认证方在本地将s和c作为输入,用同一散列函数计算散列值A2,并与A1比较。若A2=A1,说明被认证方拥有正确的共享秘密,认证通过,返回成功;否则返回失败。如图所示。
CHAP协议
用于点到点协议(point-to-point protocol,PPP)的基于共享密钥的认证协议。CHAP是挑战握手认证协议(challenge-handshake authentication protocol)的英文缩写。
- 英文名称
- CHAP protocol
- 所属学科
- 计算机科学技术
在PPP流程中,一旦通信双方建立了PPP链路,就需要利用PAP(password authentication protocol,口令认证协议)或CHAP由服务器验证客户端的身份。PAP使用明文传输口令,安全性较差。CHAP则引入密钥实现认证,安全性较高。
微软公司定义的CHAP为MS_CHAP,它借鉴了CHAP的思想,用于Windows网络环境下用户向远程工作站的身份认证,包括2个版本。
① MS_CHAP 第1版。于1998年10月公布,从Windows95开始实现。流程为:当客户端向认证服务器发出认证请求时,认证服务器向客户端发挑战值;客户端用MD5根据挑战值和用户密码计算散列值,并把散列值和用户名一起发送给服务器;认证服务器以用户名为索引,从数据库中取出用户密码,用密码和挑战计算散列值,并与收到的散列值比较。如果二者一致,则认证成功,否则失败。由于整个认证过程传输的仅是用户名和加密后散列值,所以具有较高安全性。
② MS_CHAP 第2版。于2000年1月公布。流程为:认证服务器向客户端发送挑战值会话IDSID和Csc;客户端用MD4算法对用户口令进行处理,得到Pm,生成发给服务器的挑战值Ccs,之后将Csc、Ccs、Pm和SID一起作为输入获得一个安全散列值Hs,最后将用户名Un、Ccs和Hs一起形成认证响应发送给服务器;服务器以用户名为索引查找数据库中的用户口令并获取Pm,计算Hs以进行身份认证;如果身份认证成功,则服务器向客户端进行通告,并返回服务器认证响应,这个响应由两个挑战值、加密处理后的客户端认证响应和用户口令计算;客户端则继续对服务器认证响应进行验证,如果成功,则进行通信,否则会终止通信。
截至2018年,MS_CHAP 第2版在微软视窗操作系统中均绑定实现,而很多企业安全应用也都使用了这种机制。2012年7月,美国密码学家M.马琳斯巴克(Moxie Marlinspike)公布了破解MS-CHAP 第2版的工具,给网络安全带来了新的隐忧。
条目图册
扩展阅读
- 寇晓蕤,王清贤.网络安全协议:原理、结构与应用.2版.北京:高等教育出版社,2016.