为什么我们需要 HTTPS 来处理静态内容?如果我们可以在最后得到一个由私钥签名的校验和,那不就证明了有效性吗?

信息安全 tls 电子签名 缓存
2021-08-16 03:46:38

我所说的这种方法可以改善 ISP 对图像、视频和 CSS 的缓存,而不仅仅是依赖于浏览器缓存。并且也证明了发送者的合法性。有什么理由不考虑这个半 HTTPs 吗?

不对称签名的成本是我能想到的一件事。但是,如果我们对静态内容块进行分组并分批计算 sha256 校验和,则在浏览器中验证签名可能是比不在浏览器缓存中的每个请求的端到端网络成本更好的权衡。

4个回答

为什么我们需要 HTTPS 来处理静态内容?如果我们可以在最后得到一个由私钥签名的校验和,那不就证明了有效性吗?

我认为你正在用这个问题设置一个稻草人。对于静态内容,我们其实并不需要 HTTPS,而且 HTTPS 的目的不仅仅是为了证明内容的有效性。这只是几个目的之一过去几年将大量网站切换到 HTTPS(即使是那些提供无害静态内容的网站,例如维基百科)的举动主要并不是因为人们担心获取错误的内容。这是因为人们担心三信机构会监视用户;例如,大规模迁移到 HTTPS 主要是出于隐私原因(参见例如RFC 7258,Pervasive Monitoring is an Attack。)

您使用签名校验和的想法已经在整个互联网上投入生产:您下载的软件通常会这样验证。大多数操作系统的包管理器/更新系统都这样做,个别软件项目通过发布 pgp / gpg 签名及其软件下载来以较小的规模这样做。

无论这些下载是否通过 https 交付,这一切都有效,尽管通常另外使用 https 。

您建议添加除 http 和 https 之外的第三种协议,可能称为 httpv 的“已验证”协议,它将内容验证构建到协议中,但忽略了 ssl 的其余部分。

我同意以明文形式提供一些静态内容是有好处的,因此可以对其进行缓存。但是,如果您担心根据情报界监视我们所有通信的计划而担心隐私问题,这不是一个选择。

为什么不考虑这个半 HTTPs 的任何特殊原因?

所以我假设你的第三个协议不能收集太多的蒸汽,因为

  1. 当我们确实需要验证内容时,已经有可行的解决方案,并且

  2. 现在很多互联网都被加密以保护我们的隐私,似乎另一个不能防止间谍活动的协议没有太多用处。

您的建议是基本上将 HTTPS 分为两部分:仅签名和加密:仅签名可防止中间的活跃人员注入他们自己的内容 - 例如脚本标签 - 并且加密将保护敏感数据。

但是谁来决定什么是敏感数据,什么不是呢?这似乎很耗时且容易出错。

您当然可以自动将图像、CSS、视频和 JS 文件声明为非敏感文件。但他们是吗?

  • JS文件用于交换数据
  • 图像和视频可能包含高度敏感的数据
  • CSS 文件可以提供对一个人正在查看的特定页面的洞察
  • 所有请求都可能在 HTTP 标头回复中包含敏感数据(例如设置的 cookie)

您的想法还需要一些其他更改:

  • HSTS 怎么样?它通过 HTTPS 强制所有流量,强烈推荐。您的仅签名 HTTP 是否算在内?这将如何在实践中发挥作用?
  • 可用性怎么样?浏览器界面需要向用户指示当前使用的“模式”。并且需要对用户进行进一步的教育,了解这些模式的含义以及何时适合使用哪种模式。这会导致很多混乱(用户甚至不了解当前界面的所有元素,例如挂锁或各种警告)。
  • 您需要以某种方式向 ISP 缓存服务器发出您正在请求此文件的信号。您不能只通过 HTTP 向服务器发出请求,因为这会泄漏 cookie 和其他敏感数据。或者您需要指定永远不会将 cookie 发送到这些非敏感文件。但是你将如何可靠地做到这一点?当然,它们可以从不同的域提供服务,但这需要对现有网站进行一些重大的重新设计。如果这些非敏感文件应该通过某种身份验证来保护呢?

除此之外,这种方法的好处似乎很低。根据我的阅读,ISP 很少再缓存任何东西,因为 CDN 已经处理好了。

tl;dr:这种方法会侵犯用户的隐私,并且会因为最终用户和开发人员的可用性问题而引入安全问题。

是的,实施某种校验和会起作用。但是使用 TLS 要容易得多。

通常还建议使用标准协议,除非您有充分的理由不这样做。

最后,https 提供了多种其他优势。在 CA 系统的范围内,您知道您正在接收您认为自己来自的文件。它为您的用户提供隐私,防止观察者看到他们请求的特定网址。

我能想到一些安全问题。

重播和替换

没有什么可以阻止中间人用另一个签名资源(之前捕获的)替换一个签名资源。例如,我可以让一个绿色的 GO 按钮出现在应该是 STOP 按钮的地方,让你开车掉下悬崖。或者我可以让它看起来像您的现金转账失败,这样您就一次又一次地提交它,我得到了多次付款。

如果某个站点的某些静态内容是 Javascript 文件,也许我可以将它与同一个站点的不同 Javascript 文件交换。如果我很聪明,也许我可以找到一个具有相同功能名称但做不同事情或缺乏某些验证的函数。

重定向

我可以拦截您对图像的请求,并以 302 重定向回复到其查询字符串参数包含 XSRF 攻击的 URL。

失去隐私

监控您的流量的黑客可以通过检查静态资源的 http 请求模式来确定您正在访问的页面。

通过缓存中毒的 DoS

一名黑客在中间工作,用一个无效文件替换其中一个响应。代理缓存文件。尝试使用缓存资源的浏览器会发现它无法通过验证并显示错误,并且没有简单的方法可以绕过该问题。

PS 性能问题

此外,还有一个性能问题——受校验和影响的资源将无法逐步呈现,因为需要整个 BLOB 来计算校验和。因此,您的图像会显得较慢,并且您的电影在整个过程通过管道之前不会开始。