如果 HTTP/2 只允许通过 TLS 进行通信,那为什么不是很好呢?

信息安全 tls
2021-09-09 07:44:51

https://en.wikipedia.org/wiki/HTTP/2

早些时候,加密方法 TLS 1.2 或更高版本被计划作为协议的一部分强制执行。然而,代替强制 TLS 的共识,除了需要支持加密模式之外,还存在可选的未加密模式。某些实现,例如 Firefox,已经声明它们仅在通过加密连接使用 HTTP/2 时才支持它。

问题:如果 HTTP/2 只允许通过 TLS 进行通信,那为什么不是很好呢?

3个回答

对所有东西都强制使用 SSL/TLS 有以下缺点:

  • 所有系统都必须支付密码学的费用。对于当前系统而言,成本几乎可以忽略不计,除了非常小的嵌入式设备,他们对此不满意(但他们对不受保护的纯 HTTP 感到满意)。

  • SSL 使一些缓存策略变得更加困难;特别是,透明代理不再起作用。有些人(尤其是 Internet 服务提供商)非常喜欢透明代理,因为它可以帮助他们节省自己的带宽。

  • 在非 SSL 世界中,许多系统管理员在他们的出口路由器/防火墙上运行过滤器和防病毒软件,并且非常喜欢这种做法。切换到整个 SSL 网络将要求他们审查他们的程序并更新他们的技能;他们当然会与这种变化作斗争至死。

  • 使用 TLS 意味着使用 X.509 证书,并向“商业 PKI”之一发送一些钱——或者自己配置和维护一个,用于私人应用程序。这样做的东西是必要的(你没有得到安全无中生有的),但有些人宁愿一个模型更接近SSH,没有他们的手指与可怕的X.509一样的东西的处理弄脏。

因此,预计强制 TLS 会遇到一些阻力。另一方面,这对于专业间谍机构来说是完全中立的,因为他们选择的目标已经使用 SSL 或类似的保护机制,即使它们不是强制性的。

Firefox 和 Chrome 的开发人员已经宣布,他们将不支持任何不通过 TLS 运行的 HTTP/2;这是一个刻意的承诺,试图克服上述阻力。

将一些关于加密数据的事情从我的脑海中浮出水面。

  1. 您不能缓存数据以供在多台计算机之间使用,因为每次通过网络时它看起来都不一样。
  2. 安全网关无法检查进入网络的内容,因此恶意内容可能更容易通过。
  3. 整个信任基础设施是一个巨大的私营产业。要使 SSL/TLS 正常工作,您需要由所有主要浏览器都信任的证书颁发机构授予的有效 SSL 证书,并且通常需要花钱(尽管存在一些免费的)。这意味着如果有人想创建一个网站,他们不仅需要购买域名,还需要购买 SSL 证书,这会增加进入的价格。

另外,请注意,如果您至少没有机会关闭 TLS,那么软件调试会更加困难。我有几个使用 XML over HTTP 或 SOAP 的 Vendor-one-closed-source-client 案例,无法与 Vendor-two-closed-source-server 对话。当然,每个供应商都声称他的解决方案与其他数十种产品都能正常工作,而应该归咎于对方。

关闭 TLS 并启动 Wireshark 并找到违反协议的示例通常是向供应商证明他做错了什么的唯一方法。虽然如果提供服务器密钥,wireshark 可以解码 TLS,但说服服务器管理员在一个小时内降级到纯 HTTP 比分发证书密钥要容易得多。