直到现在我还没有真正研究过安全通信,我有一些基本的问题。假设有一个浏览器(客户端)和一个服务器。根据我的理解,服务器同时具有公钥和私钥。每个人都知道公钥,只有服务器知道私钥。因此,当客户端向服务器发送消息时,它将使用服务器的公钥进行加密,并且只有服务器可以对其进行解密(因为只有服务器具有私钥)。
现在我的问题:当服务器想要向客户端发送消息时会发生什么?服务器使用其私钥对消息进行加密,客户端使用公钥对其进行解密(每个人都知道)。到现在为止还挺好。但如果有人嗅到流量,他也可以解密消息,导致每个人都知道公钥。它如何安全?我相信我不明白这里真正基本的东西:(
提前致谢!
祝你好运, 斯托
答案 0 :(得分:5)
简化:客户端生成对称加密的密钥,并将其发送到服务器,使用服务器的公钥加密。 以这种方式进行安全的密钥交换。 从客户端和服务器上开始,使用交换密钥进行对称加密。 标准方式是Diffie-Helman key exchange,它比给定的例子稍微复杂一点。
答案 1 :(得分:3)
安全通信不仅涉及加密(实际上是简单的部分),而且更重要的是涉及身份验证。
可以在双方之间建立加密通信,而无需事先交换任何密钥(例如,见Diffie–Hellman key exchange)。
困难的部分是确保与您交谈的任何人都值得信赖。这是公钥和私钥的来源。
所以工作流程有点像这样: