public-key-encryption - 在 Diffie-Hellman 中,中间进攻的人是如何工作的?

标签 public-key-encryption diffie-hellman

在 Diffie-Hellman key 交换期间,我对中间人攻击的机制有疑问。我听说它可能发生在 key 协议(protocol)通信期间。但是在 CA(证书颁发机构)存在的情况下,接收者可以在接收到发送者的公钥时对发送者进行身份验证。因此,中间人如何攻击?

最佳答案

我认为您将基本的 Diffe-Hellman(一种 key 交换协议(protocol))与使用证书颁发机构(CA)的“认证版本”混淆了。

很好地解释了基本的 Diffe-Hellman 如何容易受到中间人的攻击 from RSA Labs .

"The Diffie-Hellman key exchange is vulnerable to a man-in-the-middle attack. In this attack, an opponent Carol intercepts Alice's public value and sends her own public value to Bob. When Bob transmits his public value, Carol substitutes it with her own and sends it to Alice. Carol and Alice thus agree on one shared key and Carol and Bob agree on another shared key. After this exchange, Carol simply decrypts any messages sent out by Alice or Bob, and then reads and possibly modifies them before re-encrypting with the appropriate key and transmitting them to the other party. This vulnerability is present because Diffie-Hellman key exchange does not authenticate the participants. Possible solutions include the use of digital signatures and other protocol variants."



然后是经过验证的版本,也称为 Station-to-Station protocol :

"Roughly speaking, the basic idea is as follows. Prior to execution of the protocol, the two parties Alice and Bob each obtain a public/private key pair and a certificate for the public key. During the protocol, Alice computes a signature on certain messages, covering the public value ga mod p. Bob proceeds in a similar way. Even though Carol is still able to intercept messages between Alice and Bob, she cannot forge signatures without Alice's private key and Bob's private key. Hence, the enhanced protocol defeats the man-in-the-middle attack."



所以基本版本容易受到中间人攻击,而使用公钥证书的认证版本则不会。

关于public-key-encryption - 在 Diffie-Hellman 中,中间进攻的人是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471009/

相关文章:

用于公钥身份验证的 bash/ssh 测试

java - 如何使用openssl解密Java使用AES加密的数据

bouncycaSTLe - Javacard KeyAgreement 与 BouncyCaSTLe KeyAgreement 不同

ruby - OpenSSL 添加 CA 进行证书验证

Perl - 哪个模块最适合在 Windows 上使用公钥身份验证执行 SSH、SFTP

php - ASN.1编码例程:OPENSSL_internal:WRONG_TAG

java - 如何将 Diffie-Hellman 类生成的 AES key 添加到我使用该 key 的类中

java - 如何使用 Java 8 将 Java EC key 导入/导出 X9.63 编码

java - 如何使用 openssl 命令验证 Logjam 问题?

java - 如何强制使用 Diffie Hellman Key Exchange