【问题标题】:How does HTTPS provide security?HTTPS 如何提供安全性?
【发布时间】:2010-10-19 12:04:50
【问题描述】:

我想知道 HTTPS 是如何实现的。数据是加密的还是路径是加密的(通过它传递数据)。如果有人向我提供实施细节,我将不胜感激。

【问题讨论】:

标签: https


【解决方案1】:

很简单,HTTPS 使用安全套接字层来加密在客户端和服务器之间传输的数据。 SSL 使用非对称加密技术 RSA 算法https://en.wikipedia.org/wiki/RSA_(cryptosystem)。该算法如何工作的精确细节很复杂,但基本上它利用了这样一个事实,即虽然将两个大素数相乘很容易,但将结果分解回组成素数是非常非常困难的。所有 SSL/RSA 加密的工作原理是:

服务器生成两个大素数,并将它们相乘。这称为“公钥”。任何希望将数据安全地传输到服务器的客户端都可以使用此密钥。客户端使用这个“公钥”来加密它希望发送的数据。现在因为这是一个非对称算法,公钥不能用来解密传输的数据,只能加密它。为了解密,您需要原始质数,并且只有服务器拥有这些(“私钥”)。收到加密数据后,服务器使用其私钥对传输进行解密。

在您浏览网页的情况下,您的浏览器会向服务器提供其公钥。服务器使用此密钥对要发送到浏览器的数据进行加密,然后浏览器使用其私钥进行解密。

所以是的,所有通过 HTTPs 传输到服务器/从服务器传输的数据都是加密的 - 并且加密得很好。典型的 SSL 实施使用 128 或 256 位数字作为其密钥。要打破这一点,您需要真正大量的计算资源。

据我所知,对服务器资产的请求未加密 - 使用 httpfox https://addons.mozilla.org/en-US/firefox/addon/6647/ 或 Wireshark http://www.wireshark.org/ 或其他方式进行确认。

【讨论】:

  • 你的回答有一些错误。公钥通常为 2048 位长,仅用于交换对称密码的密钥,例如RC4。原因是对称密码对于给定的密钥长度要安全得多,而且加密和解密要快得多。然后,通过该链接传递的所有实际数据都使用对称密钥进行加密。
  • @JeremyP - 假设每个数字有 1 个字节,即 1024 或 2048 位。当然,关于 RSA 仅用于交换密钥,而对称算法用于加密数据,您当然是正确的。
  • 每个数字一个字节没有意义(基数 256 除外)。 RSA 密钥实际上是单个 1024 位或 2048 位二进制数。
  • 顺便说一下,SSL 是传输层加密。客户端获得公钥后通过 TCP 连接传输的所有内容都被加密。这包括包含请求的服务器资源的 HTTP 请求的第一行。
  • @Bytecode 任何通过互联网传输的消息都由公钥加密并由私钥解密。来自服务器的数据由client public key 加密,而到服务器的数据由server public key 加密。这里的见解是第三方可以拦截公钥和消息,但没有私钥他们无法获取纯文本。
【解决方案2】:

有两种方式。

  1. 确保您和网站之间传输的所有信息都经过加密。它通过使用 RSA 的密钥交换过程来实现这一点(交换“会话密钥”,用于实际加密)。

  2. 通过(试图)证明对您访问的网站的信任。证书是提供给域的,其想法是在您的机器上,您只信任来自各种知名来源的证书。然后,您可以(理论上)确信,当弹出“Your Bank”的证书时,它确实是“Your Bank”网站,而不是其他网站。在实践中,很少有人关心/注意到 SSL 的这一方面。

这是传输层的安全性。它不是应用程序级别。您仍然需要遵循安全编码实践和各种其他技术来确保您的网站是安全的。

【讨论】:

    【解决方案3】:

    我认为这是一个非常简洁易读的解释: http://robertheaton.com/2014/03/27/how-does-https-actually-work/

    这是我的总结版本:

    概念:

    • 非对称加密算法 – 公钥加密,私有 密钥解密。
    • 对称密码算法 – 公钥 加密和解密。

    握手:

    1. Hello – 客户端发送加密算法及其支持的 SSL 版本。
    2. 证书交换 - 服务器发送证书以识别自己,以及证书公钥。
    3. 密钥交换 – 客户端使用证书公钥加密新的客户端重新生成的公钥(使用步骤 1 中商定的非对称加密算法)并将其发送到服务器。服务器使用其私钥(使用非对称加密算法)对其进行解密。
    4. 数据交换 - 现在客户端和服务器都知道这个公钥。它用于客户端和服务器上的加密和解密的后续请求/响应(对称加密算法)

    【讨论】:

      【解决方案4】:

      您可以阅读 TLSv1 RFC-2246 中的所有详细信息。


      安全分析,具体如下:

      F.安全分析

      TLS 协议旨在建立安全连接 客户端和服务器通过不安全的通道进行通信。这个 文件做了几个传统的假设,包括 攻击者拥有大量计算资源,无法获取 来自协议之外来源的秘密信息。攻击者是 假定具有捕获、修改、删除、重放和 否则篡改通过通信通道发送的消息。 本附录概述了 TLS 如何被设计来抵抗各种 攻击次数。

      截取更多内容

      【讨论】:

        【解决方案5】:

        服务器和客户端无法控制用于传输数据的路径。使用的路径是网络层(Internet 协议 - IP)的问题,而不是传输层安全性 (TLS) 的问题

        数据本身是加密的,也有检查服务器真实性的方法,正如 Noon Silk 所说。

        http://en.wikipedia.org/wiki/Transport_Layer_Security

        【讨论】:

          猜你喜欢
          • 2014-06-25
          • 1970-01-01
          • 1970-01-01
          • 2011-03-27
          • 2019-02-25
          • 2015-06-01
          • 1970-01-01
          • 2021-10-12
          • 2013-04-15
          相关资源
          最近更新 更多