挑战-响应协议如何帮助防范中间人攻击?

8
挑战-应答认证如何防止中间人攻击?我已阅读维基百科文章,但仍然无法理解。

1
你有什么具体不理解的吗? - sarnold
你在看这个链接吗?http://en.wikipedia.org/wiki/Challenge-response_authentication 是的,我认为它很令人困惑。 - Harvey Kwok
2个回答

10

总的来说,挑战-响应系统并不能保证不受中间人攻击:如果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的账户。

一个良好的挑战/响应系统将为每个事务或会话生成一个新的挑战(并确保不重复使用以前的挑战!),因此无法将会话转录拼接在一起以创建新的欺诈系统。

希望这有所帮助,但我担心没有更详细的想法来解决您的疑问,它只会成为噪音。


使用公钥密码学的挑战响应系统是否有助于消除中间人攻击? - user574183
@user574183:您希望如何使用公钥密码学? - sharptooth
这些系统是否使用对称密钥运作? - user574183
@user574183:有一个秘密 - 说出密码。客户端知道密码,服务器也知道密码。看起来像是对称密钥。 - sharptooth
@user574183: 它们适用于对称和非对称系统:您可以将我的“使用此一次性密码哈希密钥”例程替换为“使用您的私钥解密此一次性密码,然后对连接您的用户名和一次性密码的 Sha-256 哈希进行签名并返回签名”。(永远不要设计需要一方签署由另一方完全提供内容的协议;每次使用公钥系统都会泄漏一些(非常少量)密钥数据,因此始终对数据的 哈希 进行签名。) - sarnold

3
用户sarnold已经提供了一个好的答案,我想引起以下注意。
挑战-响应解决了两个问题 - 使明文发送密钥变得不必要(发送哈希类似的产品),并防止重放攻击(因为挑战每次都会更改)。它不会做任何超出此范围的事情——它本身无法将任何人认证给任何人,它只是明文协议的改进,其中客户端发送其用户名和密码(密钥),服务器决定是否正确。
所以,如果中间存在某些派对,它不会帮助检测或防止它冒充该特定会话的客户端,但是该方将无法访问密钥,因为密钥永远不会以明文形式发送,并且该方将无法通过重播再次冒充 - 它只能在那个非常会话期间被冒名顶替。

好的,所以在这种挑战/响应身份验证中,只有当中间人知道秘密密钥时才可能发生中间人攻击。如果知道密钥,他将能够解密挑战并正确回答挑战,我说得对吗? - user574183
@user574183:首先,挑战是未加密的发送的,密钥用于将挑战与密钥组合。如果中间人知道密钥,则可以随时冒充客户端 - 它知道密钥,因此服务器无法区分它和客户端。即使不知道密钥,它也可以干扰正在进行的会话 - 密钥仅在开始时使用,不用于会话期间发送的数据。 - sharptooth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接