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