2010-11-30 56 views
1

到目前为止,我还没有真正研究安全通信,我有一些基本问题。假设有一个浏览器(客户端)和一个服务器。据我所知,服务器既有公钥也有私钥。公钥由每个人都知道,而私钥只能由服务器识别。因此,当客户端向服务器发送消息时,它会使用服务器的公钥进行加密,并且只有服务器才能解密(导致只有服务器拥有私钥)。安全通信基础知识

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

感谢的东西提前

最好的问候, 斯托

+0

这是如何离题? – 2010-11-30 13:22:52

+0

这是一个编程问答网站,而不是协议问答网站。有些人会考虑你的问题脱离主题,其他人不会。 – 2010-11-30 21:41:43

+0

我会鼓励阅读[RFC 2246(TLS 1.0)](http://www.rfc-editor.org/rfc/rfc2246.txt)。为了简化目的,您可以忽略不适用于RSA或DHE_RSA密码套件的所有内容。首先阅读第7.3节,并在阅读其余部分时阅读第一张标有图1的图。 – 2010-11-30 21:48:42

回答

3

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

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

困难的部分是确保您与谁交谈是值得信赖的。这是公钥和私钥进来

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

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

简化了很多:客户端生成对称加密密钥并把它发送使用服务器的公钥对其进行加密 以这种方式进行安全密钥交换 从客户端和服务器使用对称加密和交换的密钥 标准方式是Diffie-Helman key exchange这是一个小的比给出的例子更复杂