用于密钥分发的公钥密码学与Diffie-Hellman



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

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

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

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

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

我不禁想知道为什么Diffie-Hellman会被用在这样的场合情况。根据我的理解,公钥密码学可能用于确保真实性并在客户端和服务器。

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

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

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

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

RSA密钥交换或多或少就是这样:客户端对预主密钥进行加密,只有服务器才能解密。

您可以在TLS规范的"身份验证和密钥交换"部分中了解到这一切(不考虑匿名密钥交换)。密码套件的选择(见附录A.5和C)将决定所使用的密钥交换机制,这取决于客户端和服务器的配置方式。

据我所知,固定DH交换相当罕见。短暂DH(DHE密码套件)更为常见。它可以提供";Perfect Forward Secrecy":即使攻击者掌握了私钥,他们也无法解密现有的流量,因为他们还需要DH参数,而这些参数并非对所有连接都相同。然而,这在性能方面是有代价的。你可以在这篇文章中找到更多关于这个主题的内容。

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

答:假设黑客一直在跟踪客户端和服务器之间交换的所有消息并保存消息,但他无法解密这些消息,因为他不知道共享的对称密钥。如果服务器的私钥被泄露,那么在困难的情况下,黑客仍然无法解密消息,因为困难的赫尔曼算法从不在网上发送密钥,而是客户端和服务器在不共享的情况下同意相同的密钥,这是一种不共享的密钥协商算法。要攻击diffie Hellman,中间的人应该是活着的,并且应该知道用于身份验证的服务器私钥。但在我们的情况下,黑客已经通过了艰难的赫尔曼消息,所以他不能使用中间人攻击。同时,服务器更改了它的私钥,所以并没有损坏。但如果我们使用RSA密钥来共享密钥,那么在服务器的私钥泄露后,黑客就可以获得所有会话对称密钥,并可以解密所有过去的消息。

最新更新