假设我们有一个带有私钥和公钥的服务器,后者可供所有客户使用,我们有一个客户端没有自己的任何非对称密钥。我们希望在服务器和客户端之间建立安全通信,客户端必须确保服务器的真实性。这是一种非常常见的情况。
现在,我的理解是私钥/公钥对通常在这种情况下用于确保真实性(我们的客户端可以使用服务器的公钥来验证服务器的真实性)。为了确保服务器和客户端之间的双向通信,使用Diffie-Hellman密钥交换,然后通信基于共享密钥。
我不禁想知道为什么在这种情况下会使用Diffie-Hellman。据我所知,Public-Key Cryptography可用于确保真实性并在客户端和服务器之间共享密钥。服务器可以向客户端发送使用其私钥编码的消息,客户端可以使用服务器的公钥对其进行解码以确认其身份。此外,客户端可以使用服务器的公钥向服务器发送新的随机密钥。只有服务器知道这个密钥,因为只有服务器知道他的私钥。我知道有些人建议不要使用公钥进行编码和解码,但没有人说明原因。
显然,如果客户端和服务器都有自己的公钥/私钥,他们甚至不需要共享任何密钥,但这不是典型情况。
所以......总结一下。为什么Diffie-Hellman使用公钥加密而不是秘密密钥分发?有什么好处吗?
答案 0 :(得分:3)
我不禁想知道为什么Diffie-Hellman会被这样使用 的情况。据我所知,Public-Key Cryptography可以 用于确保真实性和共享密钥之间的密钥 客户端和服务器。
Diffie-Hellman和RSA密钥交换(其中RSA用于加密)都可以与SSL / TLS一起使用。这取决于密码套件。
服务器可以向客户端发送使用其私钥编码的消息 客户端可以使用服务器的公钥解码它以确认它 身份。
这确实与使用RSA或DSS身份验证的DH密钥交换相关:服务器使用其私钥签署其DH参数,客户端可以验证签名。
此外,客户端可以使用服务器的公钥发送新密钥 服务器的随机密钥。只有服务器会知道这个秘密 密钥,因为只有服务器知道他的私钥。
这或多或少与RSA密钥交换相关:客户端加密预主密钥,只有服务器才能解密。
您可以在Authentication and Key Exchange section of the TLS specification中阅读所有这些内容(不要使用匿名密钥交换)。 cipher suites(参见附录A.5和C)的选择(取决于客户端和服务器的配置方式)将决定使用的密钥交换机制。
据我所知,固定的DH交换相当罕见。短暂的DH(DHE密码套件)更为常见。它可以提供“Perfect Forward Secrecy”:即使攻击者获得私钥,他们也无法破译现有流量,因为他们还需要拥有DH参数,这些参数对于所有连接都不相同。然而,这在性能方面具有成本。您可以在this article中找到有关此主题的更多信息。
答案 1 :(得分:0)
。为什么Diffie-Hellman使用公钥加密而不是秘密密钥分发?有什么好处吗?
Ans:我们假设黑客一直在跟踪客户端和服务器之间交换的所有消息并保存消息,但他无法解密这些消息,因为他不知道共享的对称密钥。如果显示服务器的私钥,那么在diffie-hellman hacker的情况下仍然无法解密消息,因为diffie Hellman算法永远不会在线路上发送密钥而客户端和服务器在没有共享的情况下同意相同的密钥,这是一种密钥协商算法而不是分享。攻击diffie Hellman中间人应该是实时的,并且应该知道用于身份验证的服务器私钥。但在我们的案例中,黑客已经过去了不幸的Hellman消息,所以他不能在中间攻击中使用man。同时服务器更改它的私钥,所以没有损坏。但是如果我们使用RSA密钥来共享密钥,那么在披露服务器的私钥黑客时,可以获得所有会话对称密钥,并且可以解密所有过去的消息。