在公共热点上访问 HTTPS 网站是否安全?

信息安全 tls 网页浏览器 无线上网
2021-08-27 23:35:24

人们常说 HTTPS SSL/TLS 连接是加密的,据说是安全的,因为服务器和我之间的通信是加密的(也提供服务器身份验证),所以如果有人嗅探我的数据包,如果使用暴力破解,他们将需要数亿年的时间来解密理论上的力量。

假设我在公共 wifi 上,并且在同一个 wifi 上有一个恶意用户嗅探每个数据包。现在让我们假设我正在尝试使用这个 wifi 访问我的 gmail 帐户。我的浏览器与服务器进行 SSL/TLS 握手并获取用于加密和解密的密钥。

如果那个恶意用户嗅探了我所有的传入和传出数据包。他能否计算相同的密钥并读取我的加密流量,甚至以我的名义向服务器发送加密消息?

4个回答

HTTPS 在公共热点上是安全的。在设置TLS(HTTPS 使用的安全层)期间,仅传输公钥和加密消息(这些消息也由根证书签名) 。客户端使用公钥加密主密钥,然后服务器使用其私钥对其进行解密。所有数据都使用一个函数加密,该函数使用每一方生成的主密钥和伪随机数。

因此,

  • 数据是安全的,因为它由主密钥和伪随机数签名
  • 主密钥和伪随机数是安全的,因为它在 TLS 握手发生时使用公私钥加密
  • 公私钥加密是安全的,因为:
    • 私钥是保密的
    • 公私钥加密被设计成没有私钥就无用
    • 众所周知,公钥是合法的,因为它们是由根证书签名的,要么
    • 随您的计算机一起提供
    • 或经您特别授权(注意浏览器警告!)

因此,您的 HTTPS 连接和数据是安全的,只要:

  1. 您信任计算机随附的证书,
  2. 您注意只授权您信任的证书。

简短的回答:这取决于。

SSL/TLS 本身在公共 wifi 连接上并不比在“常规”互联网上更容易受到攻击。它被设计用于开放渠道。

但是,还有一些其他方面需要考虑:

  • 用户通常不会直接浏览 HTTPS 站点,而是从 HTTP 站点开始并从那里重定向。例如,您浏览到http://example.org/,然后单击Email链接,该链接会将您重定向到https://mail.example.org/由于原始 HTTP 页面未加密,恶意用户可以修改您的流量,导致Email链接不重定向到 HTTPS,但可能重定向到其他地方。例如,如果您单击Emailexample.org 主页上的链接,您会注意到它带您到 了http://mail.exxxample.org/吗?(举个例子)。可能会,别人可能不会。
  • 如果用户劫持了您的连接,但提供了他自己的伪造 SSL 证书而不是 example.org 的 - 您的浏览器显示错误,即证书无效。但是,大多数用户只会点击它,从而允许攻击者通过 SSL 对您的安全站点进行 MITM。
  • 要考虑的另一个方面是,不要假设公共热点已安全配置。正如这个问题所示,pwned 路由器太常见了,并且可能造成与您的 SSL 无关的更多损害。

完全通过 HTTPS 的会话是相当安全的,因为来自浏览器的所有请求和服务器传输的页面都是加密的。

但是,当通过 HTTPS 访问时,许多站点将仅通过 HTTPS 执行身份验证步骤,然后在会话的其余部分返回到 HTTP。因此,您的密码本身是安全的,但服务器用于在该会话中识别您身份的会话 ID 由您的浏览器以明文形式传输。这减少了网络服务器的负载(因为加密/解密是 CPU 密集型的),但会使网站的安全性大大降低。Gmail 是安全的,因为它在整个会话中使用 HTTPS,但 Facebook 和许多其他网站不这样做。

这就是当攻击者共享未加密的无线网络时, Firesheep等工具能够劫持用户帐户的方式。

您可以通过使用 VPN 加密所有会话数据或仅使用具有强大的按用户加密的网络(如 WPA-PSK)来保护自己免受这种攻击(WEP 对每个用户使用相同的密钥,因此不会提供免受这种攻击的保护)。

由于答案似乎无处不在(是的,不,可能是,应该是),让我首先重申@waiwai933 的答案:它是安全的。

具体来说,您问:“如果那个恶意用户嗅探了我所有传入和传出的数据包。他能否计算相同的密钥并读取我的加密流量,甚至以我的名义向服务器发送加密消息?” 答案是否定的。带脚注。

他无法计算相同密钥的原因似乎自相矛盾,事实上,当 Diffie 和 Hellman 首次发表时,它是密码学的重大突破。TLS 使用密钥交换协议,如 Diffie-Hellman,但更复杂以防止中间人攻击。该协议允许两个在之前从未交换过信息的人计算出一个没有人看到所有消息的人可以计算出的密钥。

拥有共享密钥后,您可以使用它来加密您的流量。由于恶意用户不知道密钥,因此他无法加密看起来像是来自您的流量。

现在是那些脚注。

  • 我们假设 SSL/TLS 协议是正确的。对于大多数涉及的加密协议,会不时发现并修复错误。SSL/TLS 确实有一个最近的错误(在一些答案中提到它不安全的原因),但是它已经暂时解决并且现在已修复(RFC 5746)并且修复处于不同的部署阶段。(在您的场景中,该错误允许恶意用户以您的名义发送数据包,但不会读取您的流量。)由于协议中未发布的错误,攻击者总是可能知道如何破坏 TLS/SSL。
  • 显而易见但值得重复的一点:恶意用户可以看到您的请求并使用他自己的证书发送自己的响应。所以一定要检查证书。
  • 也许另一个明显的点是:如果当前页面是 HTTPS,您只能确定 SSL/TLS 将用于未来的页面。例如,如果您在一个希望您登录的 HTTP 页面上,并且根据过去的经验,您知道单击登录按钮会将您重定向到 HTTPS 连接,则此功能可能会被活动的恶意用户删除在您的网络上。所以只登录已经是 HTTPS 的页面(除非你知道如何检测登录页面是否被修改)。