揭穿关于 HTTPS 的迷思

2025-06-07

揭穿关于 HTTPS 的迷思

大多数安全专家都会建议在任何地方使用 HTTPS。这无疑是一个值得遵循的好建议。

然而,它常常会误导大多数用户,包括技术达人。

HTTPS解决了什么问题?

HTTPS 为 HTTP 协议实现了 TLS(传输层安全性)。您每天使用浏览器与网站交互时都会发送 HTTP 请求,这些交互称为 HTTP 请求和响应。

TLS 的理念是防止数据以纯文本形式发送(例如 HTTP),这样攻击者如果拦截了请求,就能够读取数据。此类攻击非常常见,网络犯罪分子喜欢嗅探受害者的流量来收集机密信息。

TLS 使用加密密钥来保护通信,因此从理论上讲,即使有人设法拦截请求(例如中间人攻击),数据也不可能被利用(随机字符串)。

TLS 握手简介

在后台,用户设备和服务器之间会发生 TLS 握手。简单来说,就是客户端和服务器同意使用特定的会话密钥通过安全通道进行通信。

这些握手涉及一系列消息和各种步骤,我们不会在这里介绍,但我们可以说有方法可以滥用该机制。

研究人员和网络犯罪分子发现了各种攻击角度来伪造身份并冒充 TLS 客户端。因此,TLS 不断改进,最新版本不再支持 RSA 和其他易受攻击的密码。

TLS 证书简介

托管服务通常免费提供 SSL 证书(例如,Let's encrypt)或收取特定费用。

该证书保存着网站的公钥等信息,可以让想要建立连接的设备验证服务器的身份和网站的所有权,从而防止伪造。

证书由独立于托管服务提供商的证书颁发机构 (CA) 颁发,但这些服务通常会为其客户处理证书的安装和激活。证书激活后,您将看到一个锁定图标(通常为绿色),并且可以加密通信。

网站也可以拥有未经任何官方机构 (CA) 验证的自签名证书,但浏览器可能会将其标记为“不安全”。

这并不意味着自签名证书总是恶意的,但旨在覆盖数百万用户的公共网站至少应该经过 CA 的验证。

不要相信挂锁

锁形图标可能会给人一种安全的错觉,因为网络犯罪分子也可以通过域名抢注获得合法的 SSL 证书。事实上,大多数钓鱼和诈骗网站都是 HTTPS 的。

注册一个与热门网站相似的域名并激活 SSL 证书使其看起来像是合法的并不复杂。2017 年,曾旭东甚至成功使用 Punycode (xn–pple-43d.com) 伪造了 apple.com。默认情况下不显示这些特殊字符的客户端不会让用户看出其中的区别。

一种“更复杂”的方案是手动将所有受害者的流量路由到外部服务器。攻击者还可以创建虚假网络或路由器。换句话说,攻击者可以在某些条件下充当代理,而受害者不会察觉,因为受害者不会改变其行为,因为看起来没有任何问题。

HTTPS 流量可以解密

成功嗅探流量的攻击者可以使用 Wireshark 等开源软件来分析 TLS 数据包。当然,TLS 正是为这种情况而设计的,但实现 TLS 的软件(例如浏览器)会将密钥和机密信息写入系统上的特定文件,这使得攻击者如果能够读取配置文件,就能解密截获的数据包。

每个操作系统都有自己的实现,但是当您拥有受害者的机器时,这并不是最难完成的任务,例如使用SSLKEYLOGFILE

HTTPS 会隐藏 URL 吗?

当您访问网站时,TCP 连接和未加密的 DNS 查询会在后台进行,因此 HTTPS 不会隐藏主机名等关键信息。理论上,攻击者无法看到目标用户正在访问的具体页面,但如果网站未使用 HSTS(HTTP 严格传输安全)策略(强制浏览器仅使用 HTTPS 连接),许多中间人 (MITM) 攻击都可能得逞。

有动机的攻击者还可以进行更深入的分析,并根据某些 HTTP 响应的长度或特定的 HTTP 标头(例如 referer)推断出某些路径。对于内容混合且通过 HTTP 提供 JavaScript 或 CSS 等资源的网站尤其如此。事实上,现代浏览器会发出警报,但受害者可以忽略它。

为什么有人会忽视安全警告?

不知道,也许可以赢得一部 iPhone 14 或任何其他奖励来解释这种疯狂的行为。

数据并非在所有地方都加密

HTTPS 的目的是确保传输安全,但数据可能在各种地方被拦截,例如在 Web 服务器或数据库中。数据最终会变成静态的,因此 HTTPS 并不能使其“坚不可摧”。

包起来

HTTPS 是必需的,但还不够。您应该强化浏览器的配置,或者选择更安全的替代方案,禁止非 HTTPS 流量。

同样,如果该网站没有严格的政策,就不要去那里。

“HTTPS”中的“s”确实表示“安全”,但它具有误导性,因为即使是钓鱼网站也可能拥有它。

文章来源:https://dev.to/spo0q/debunking-myths-about-https-f2k
PREV
Python 专业技巧
NEXT
开发人员缓慢而痛苦的死亡