假设我们有一个带有私钥和公钥的服务器,后者可供所有客户端使用,并且我们有一个没有自己的不对称密钥的客户端。我们希望在服务器和客户端之间建立安全的通信,客户端必须确保服务器的真实性。这是很常见的情况。
现在,据我了解,通常在这种情况下使用私钥/公钥对只是为了确保真实性(我们的客户端可以使用服务器的公钥来验证服务器的真实性)。为了确保服务器和客户端之间的双向通信,使用了 Diffie-Hellman 密钥交换,然后基于共享密钥进行通信。
我不禁想知道为什么在这种情况下使用 Diffie-Hellman。据我了解,公钥加密可用于确保真实性并在客户端和服务器之间共享密钥。服务器可以向客户端发送使用其私钥编码的消息,客户端可以使用服务器的公钥对其进行解码以确认其身份。此外,客户端可以使用服务器的公钥向服务器发送一个新的随机密钥。只有服务器知道这个密钥,因为只有服务器知道他的私钥。我知道有些人建议不要使用公钥进行编码和解码,但没有人说为什么。
显然,如果客户端和服务器都有自己的公钥/私钥,他们甚至不需要共享任何密钥,但这不是典型的情况。
所以……总结一下。为什么使用 Diffie-Hellman 代替具有公钥加密的密钥分发?有什么优势吗?