挑战-应答认证如何防止中间人攻击?我已阅读维基百科文章,但仍然无法理解。
总的来说,挑战-响应系统并不能保证不受中间人攻击:如果Alice试图告诉Bob她的银行账户号码,这个协议虽然实现了一些挑战和响应,但无法提供完整性和隐私:
Alice: Bob, is that you? // first challenge
Bob: Yes, Alice, it is me, is that you? // first response, second challenge
Alice: Yes! Great. My account number is 314159. // second response, and result
Mallory可以代替Alice或Bob回答“是”,可以伪造第三个“结果”消息,或者可以监听第三条消息。
即使挑战得到改进,例如:“请哈希0x31415926并在我们共享的密码前面添加”,以明文传输数据(或使用弱密码或选择差的密钥)将会导致隐私丢失,并且在没有任何消息认证检查的情况下传输的数据可能会被第三方修改。
挑战/响应协议真正闪耀的地方在于防止重放攻击:如果Alice向Bob发送了一条类似“请从我的账户中扣除$5并向您的账户存入$5”的消息,Mallory可以记录该消息并重放该消息以耗尽Alice的账户。
一个良好的挑战/响应系统将为每个事务或会话生成一个新的挑战(并确保不重复使用以前的挑战!),因此无法将会话转录拼接在一起以创建新的欺诈系统。
希望这有所帮助,但我担心没有更详细的想法来解决您的疑问,它只会成为噪音。