安全的通信基础知识

时间:2010-11-30 13:17:02

标签: authentication ssl cryptography communication

直到现在我还没有真正研究过安全通信,我有一些基本的问题。假设有一个浏览器(客户端)和一个服务器。根据我的理解,服务器同时具有公钥和私钥。每个人都知道公钥,只有服务器知道私钥。因此,当客户端向服务器发送消息时,它将使用服务器的公钥进行加密,并且只有服务器可以对其进行解密(因为只有服务器具有私钥)。

现在我的问题:当服务器想要向客户端发送消息时会发生什么?服务器使用其私钥对消息进行加密,客户端使用公钥对其进行解密(每个人都知道)。到现在为止还挺好。但如果有人嗅到流量,他也可以解密消息,导致每个人都知道公钥。它如何安全?我相信我不明白这里真正基本的东西:(

提前致谢!

祝你好运, 斯托

2 个答案:

答案 0 :(得分:5)

简化:客户端生成对称加密的密钥,并将其发送到服务器,使用服务器的公钥加密。 以这种方式进行安全的密钥交换。 从客户端和服务器上开始,使用交换密钥进行对称加密。 标准方式是Diffie-Helman key exchange,它比给定的例子稍微复杂一点。

答案 1 :(得分:3)

安全通信不仅涉及加密(实际上是简单的部分),而且更重要的是涉及身份验证。

可以在双方之间建立加密通信,而无需事先交换任何密钥(例如,见Diffie–Hellman key exchange)。

困难的部分是确保与您交谈的任何人都值得信赖。这是公钥和私钥的来源。

所以工作流程有点像这样:

  1. 客户端和服务器之间建立连接。
  2. 客户端已经知道服务器的公钥(不对称加密),因此它可以证明另一个端点是他们所说的人:公钥用于解密一个令牌,经过验证,证明它确实存在使用服务器的私钥加密。
  3. 现在认证已经完成,双方使用上面的Diffie-Hellman等方法来建立shared secret
  4. 此共享密钥用作加密/解密密钥(对称加密),用于客户端/服务器会话的其余部分的所有数据交换。
  5. 关闭连接时,将丢弃上述加密密钥。如果建立了新连接,则上述算法将为该新会话生成新的加密密钥。