3

假设我们有一个带有私钥和公钥的服务器,后者可供所有客户端使用,并且我们有一个没有自己的不对称密钥的客户端。我们希望在服务器和客户端之间建立安全的通信,客户端必须确保服务器的真实性。这是很常见的情况。

现在,据我了解,通常在这种情况下使用私钥/公钥对只是为了确保真实性(我们的客户端可以使用服务器的公钥来验证服务器的真实性)。为了确保服务器和客户端之间的双向通信,使用了 Diffie-Hellman 密钥交换,然后基于共享密钥进行通信。

我不禁想知道为什么在这种情况下使用 Diffie-Hellman。据我了解,公钥加密可用于确保真实性并在客户端和服务器之间共享密钥。服务器可以向客户端发送使用其私钥编码的消息,客户端可以使用服务器的公钥对其进行解码以确认其身份。此外,客户端可以使用服务器的公钥向服务器发送一个新的随机密钥。只有服务器知道这个密钥,因为只有服务器知道他的私钥。我知道有些人建议不要使用公钥进行编码和解码,但没有人说为什么。

显然,如果客户端和服务器都有自己的公钥/私钥,他们甚至不需要共享任何密钥,但这不是典型的情况。

所以……总结一下。为什么使用 Diffie-Hellman 代替具有公钥加密的密钥分发?有什么优势吗?

4

2 回答 2

3

我不禁想知道为什么在这种情况下使用 Diffie-Hellman。据我了解,公钥加密可用于确保真实性并在客户端和服务器之间共享密钥。

Diffie-Hellman 和 RSA 密钥交换(其中 RSA 用于加密)都可以与 SSL/TLS 一起使用。这取决于密码套件。

服务器可以向客户端发送使用其私钥编码的消息,客户端可以使用服务器的公钥对其进行解码以确认其身份。

这确实是 DH 密钥交换与 RSA 或 DSS 身份验证发生的情况:服务器使用其私钥签署其 DH 参数,客户端可以验证签名。

此外,客户端可以使用服务器的公钥向服务器发送一个新的随机密钥。只有服务器知道这个密钥,因为只有服务器知道他的私钥。

这或多或少是 RSA 密钥交换发生的情况:客户端加密预主密钥,只有服务器可以解密。

您可以在 TLS 规范的身份验证和密钥交换部分阅读所有这些内容(撇开匿名密钥交换不谈)。密码套件的选择(参见附录 A.5 和 C)取决于客户端和服务器的配置方式,将决定使用的密钥交换机制。

据我所知,固定 DH 交换相当罕见。临时 DH(DHE 密码套件)更为常见。它可以提供“完美的前向保密”:即使攻击者掌握了私钥,他们也无法破译现有流量,因为他们还需要拥有 DH 参数,这些参数对于所有连接都不相同。然而,这在性能方面是有代价的。您可以在本文中找到有关此主题的更多信息。

于 2013-02-16T16:49:50.053 回答
1

. 为什么使用 Diffie-Hellman 代替具有公钥加密的密钥分发?有什么优势吗?

Ans:假设黑客一直在跟踪客户端和服务器之间交换的所有消息并保存消息,但他无法解密这些消息,因为他不知道共享对称密钥。如果服务器的私钥被泄露,那么在 diffie-hellman 黑客的情况下仍然无法解密消息,因为 diffie Hellman 算法从不在线发送密钥,而是客户端和服务器在不共享的情况下同意相同的密钥,这是一种密钥协商算法不分享。攻击中间的 diffie Hellman 人应该是活的并且应该知道用于身份验证的服务器私钥。但是在我们的例子中,黑客已经过去了 diffie Hellman 消息,所以他不能在中间攻击中使用人。同时服务器更改它的私钥,因此没有损坏。

于 2018-02-19T11:46:04.977 回答