为什么 HTTP/2 规范不需要 TLS?

信息安全 tls http http2
2021-08-17 08:59:43

尽管目前没有浏览器实现完整的 HTTP/2 规范,但仅限于 TLS 部分,但互联网上的故事称,这种不完整的规范实现是抵制移动服务提供商“邪恶”游说的一种方式。注入广告并塑造流量。现在,我当然明白在不安全的连接上分析、塑造甚至改变流量是可能的,但对于所需的 TLS 缺乏共识真的是由互联网服务提供商的游说造成的吗?其次,是否有理由相信,如果是这样的话,这主要是出于所声称的原因。

2个回答

没有技术理由将 HTTP/2 限制为 TLS。没有 TLS 的通信有其技术用途,无论是未加密的流量还是通过其他方式(VPN 等)加密的流量。

在标准中将 HTTP/2 限制为 TLS 会将 HTTP/2 协议的使用绑定到仅出于政治(*)原因的 TLS 的使用。通常会避免出于非技术原因进行此类绑定:例如,如果您查看 HTTP/1.1 的 RFC,它们会明确保持传输层打开,即承认 HTTP/1.1 通常在 TCP/IP 之上使用,但可能会被使用在其他协议之上(RFC2616,第 1.4 节)。

因此,虽然有人可能认为存在一些邪恶的游说,但我认为大多数人认为标准应该是技术细节的地方,而不是政治(*)声明的地方。

在这种情况下,一个有趣的邮件主题是强制性加密2013 年 IETF HTTP WG 邮件列表上的剧院,它突出了技术用户之间意见的多样性。并且从这个线程中也可以看出,这不是来自某些 ISP 或类似的游说,而是有技术原因不将 HTTP/2 过多地绑定到 TLS,因为众所周知 TLS 不是身份验证多样性的最佳解决方案,加密和隐私问题:在某些情况下,您希望获得比 TLS 提供的更好的保护,而在其他情况下,您不需要保护,但 TLS 的开销正在困扰您。

(*) 为了更清楚地说明我认为什么是政治性的:它不是地缘政治或公司政治,而是主要受这些更大政治影响的个人观点。这导致了基于个人对世界应该如何运作的看法而不是基于技术原因的争论。有时这种政治论点甚至对技术论点视而不见,因为它们不符合个人的世界观。这包括所有用例都需要隐私(TLS 无论如何都不能完全提供),没有大量资源的小型系统应该成长或不使用 HTTP,缓存是不需要考虑的不重要的事情(即我们有很多带宽,不在乎其他人是否没有)等。

强制加密至少提供了非加密通信没有的一件事。真正加密的通信,端到端(至少 http over SSL)是不可能缓存的并且需要更多带宽。要求 SSL/TLS 将限制某些中间代理服务器缓存非敏感信息的情况。

加密也是有代价的。它增加了一些开销,并增加了一些处理能力。但是任何协议的许多特性也是如此。因此,问为什么加密是特殊的并且是可选的,这是一个公平的问题。

也有一些实际原因不需要 TLS。除非您想训练用户跳过可怕的自签名或过期证书,否则 TLS 要求您为每个端点获取一个签名证书,并在它们过期后维护它。家庭和企业中有数百万台设备通过 http 进行通信。婴儿监视器、洗衣机、路由器、电话等通常都有http接口。要求 TLS 意味着这些设备无法采用 http 2,而必须保持在 http 1.1 上。

还有其他问题,但我认为它高度涉及到什么是有价值的。斯蒂芬将此称为“政治”,但这似乎是对标准论点的过度简化。政治可能意味着很多事情。有时这意味着利益冲突。有时它意味着“地缘政治”,有时它与政治意识形态有关。有时它意味着……我什至不知道是什么。在我看来,把所有这些都扔到一个桶里似乎有点简化。