挑战响应机制
挑战响应机制
一. 介绍
一个实体向另一个实体证明其有密码但是不直接泄露其所拥有的密码证明其身份。挑战者通常会选择一个随机值发送给验证者,验证者使用密钥对挑战值进行加密得到响应发送给挑战者,挑战者再计算响应是否正确判断对方是否真实拥有密钥。
二. 实现
1. 基于对称密钥的挑战响应
要求验证者和声称者共享一个密钥信息,在用户数量较多的系统当中需要一个可信的第三方为双方提供共享的会话密钥。
询问握手验证协议(CHAP)是实际当中用的最广泛的挑战响应协议,具体实现在RFC文档当中定义,是PPTP协议当中普遍使用的认证协议。
2. 基于公钥密码的挑战响应
公钥技术用于挑战响应当中实现对身份的验证。其中H为Hash函数,Ka和Kb分别表示A和B的公钥,Ek表示以k为密钥的加密函数,SigA为A的签名函数,"||"表示消息的串联。
1. 基于公钥解密的挑战响应
- B-->A: H(Rb)||TokenAB
- A-->B: Rb
TokebAB=Eka(Rb||B), Rb是B选取的随机数。
2. 基于数组签名的挑战响应
- B-->A: Rb
- A-->B: CertA||TokenAB
TokenAB = Ra||Rb||B||SigA(Ra||Rb||B), Ra和Rb分别是A和B选择的随机数,CertA是A的公钥证书。
三. 流程