为什么仍然普遍使用 HTTP,而不是我认为更安全的 HTTPS?
为什么 HTTPS 不是默认协议?
SSL/TLS 有一点开销。当 Google 将 Gmail 切换到 HTTPS(从可选功能到默认设置)时,他们发现 CPU 开销约为 +1%,网络开销 +2%;有关详细信息,请参阅此文本。但是,这适用于 Gmail,它由私有、动态、非共享数据组成,并托管在 Google 的系统上,可以从任何地方以极低的延迟访问这些数据。与 HTTP 相比,HTTPS 的主要影响是:
连接启动需要一些额外的网络往返。由于此类连接“保持活动状态”并尽可能重复使用,因此当使用给定站点进行重复交互时(如 Gmail 的典型情况),这种额外的延迟可以忽略不计;主要服务于静态内容的系统可能会发现网络开销是不可忽略的。
代理服务器无法缓存使用 HTTPS 提供的页面(因为它们甚至看不到这些页面)。同样,Gmail 没有静态缓存,但这是一个非常具体的上下文。ISP 非常喜欢缓存,因为网络带宽是他们的生命力。
HTTPS 是 SSL/TLS 中的 HTTP。在 TLS 握手期间,服务器显示其证书,该证书必须指定预期的服务器名称——这发生在HTTP 请求本身发送到服务器之前。这可以防止虚拟主机,除非使用称为服务器名称指示的 TLS 扩展;这需要客户的支持。特别是,Internet Explorer在 Windows XP 上不支持服务器名称指示(IE 7.0 及更高版本支持,但仅在 Vista 和 Win7 上支持)。鉴于当前使用 WinXP 的桌面系统的市场份额,不能假设“每个人”都支持服务器名称指示。相反,HTTPS 服务器必须为每个服务器名称使用一个 IP;IPv6 部署的现状和 IPv4 地址短缺使这成为一个问题。
在以下意义上,HTTPS 比 HTTP“更安全”:数据被验证为来自命名服务器,并且对于任何可能窃听线路的人来说,传输都是机密的。这是一种在许多情况下都没有意义的安全模型:例如,当您查看来自 Youtube 的视频时,您并不真正关心该视频是来自 youtube.com 还是来自某个(礼貌地)发送的黑客你想看的视频;而且该视频无论如何都是公共数据,因此机密性在这里的相关性很低。此外,身份验证仅针对服务器的证书进行,该证书来自客户端浏览器知道的证书颁发机构。证书不是免费的,因为证书的重点是它们涉及 CA 对证书所有者的物理识别(我并不是说商业 CA 公平地为他们的证书定价;但即使是由佛陀本人运营的最公平的 CA,仍然需要收取证书费用)。商业 CA 只会喜欢HTTPS 成为“默认设置”。此外,尚不清楚 X.509 证书所体现的 PKI 模型是否真的是整个互联网“默认”所需要的(特别是在证书和 DNS 之间的关系方面——一些人认为服务器证书应在创建域时由注册商颁发)。
在许多企业网络中,HTTPS 意味着窃听者无法看到数据,该类别包括各种内容过滤器和防病毒软件。将 HTTPS 设为默认设置会让许多系统管理员非常不高兴。
所有这些都是为什么 HTTPS 作为 Web 的默认协议不一定是一个好主意的原因。但是,它们并不是 HTTPS 目前不是 Web 的默认协议的原因。HTTPS 不是默认设置,因为 HTTP 最先出现。
虽然已经给出了很好的答案,但我相信到目前为止,有一个方面被忽视了。
就是这样:纯 HTTP 是 Web 的默认协议,因为 Web上的大多数信息不需要安全性。
我并不是要贬低这个问题或某些网站/应用程序的安全问题。但我们有时会忘记有多少网络流量:
- 仅包含完全公开的信息
- 或几乎没有价值
- 或拥有更多访问者被视为增加网站价值的地方(新闻媒体、网络效应网站)
几个简单的例子,我相信你可以很快在你的脑海中做出更多:
- 几乎所有的公司网站,有时称为“宣传册网站”,都会列出公司的公开信息。
- 几乎所有的新闻媒体、博客、电视台等都选择了广告支持作为他们的主要货币化策略。
- 可能提供登录和额外个性化的服务,但也会将其内容免费提供给任何匿名浏览的人 (YouTube fx)。
- 它显着增加了服务器的 CPU 负载,尤其是对于静态内容。
- 使用数据包捕获进行调试更难
- 它不支持基于名称的虚拟服务器
Http 始终是默认设置。最初,任何东西都不需要 https,它几乎是附加的,因为在某些情况下显然需要安全性。
即使是现在,有这么多网站不需要 https,完全取代 http 仍然不是一个令人信服的论据。
随着运行 TLS 安全连接的机制越来越有效,CPU 开销已不再是一个问题。