【问题标题】:Secure communication basics安全通信基础
【发布时间】:2010-11-30 13:17:02
【问题描述】:

到目前为止,我还没有真正研究过安全通信,并且我有一些基本问题。假设有一个浏览器(客户端)和一个服务器。据我了解,服务器既有公钥又有私钥。公钥是每个人都知道的,而私钥只有服务器知道。所以当客户端向服务器发送消息时,它是用服务器的公钥加密的,只有服务器可以解密(因为只有服务器有私钥)。

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

提前致谢!

最好的问候, 佩塔尔

【问题讨论】:

  • 这是一个编程问答网站,不是协议问答网站。有些人会认为您的问题离题,有些人则不会。
  • 我鼓励阅读RFC 2246 (TLS 1.0)。为简化起见,您可以忽略所有不适用于 RSA 或 DHE_RSA 密码套件的内容。首先阅读第 7.3 节,并在阅读其余部分时将第一个图标记为图 1 的副本。
  • @GregS - 感谢您的链接:)

标签: authentication ssl cryptography communication


【解决方案1】:

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

【讨论】:

  • 公私钥不是非对称加密吗?
  • 是的。您使用非对称密码学来交换共享秘密。你使用秘密来执行对称加密
  • +1 很好的简化。 @Petar - 请注意,非对称(公钥/私钥)加密仅用于初始密钥交换
  • +1。虽然你的答案是正确的,但我会接受另一个,因为它有点详细。
【解决方案2】:

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

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

困难的部分是确保与您交谈的人是值得信赖的。这就是公钥和私钥的用武之地。

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

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

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 2018-09-07
    • 2011-01-10
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多