【问题标题】:How do file hashes guarantee files haven't been altered?文件哈希如何保证文件没有被更改?
【发布时间】:2014-12-13 01:42:01
【问题描述】:

从大多数受信任的站点下载文件时,它们会为文件提供哈希值,然后您可以使用这些哈希值来验证您下载的文件是否与他们发布的文件相同(或者,如果我在这方面有误,请纠正我!)

我的问题是:如果您是一名能够修改网站上文件的黑客,您难道不能同时更改该网站上发布哈希值的页面以反映您的新“修改”值吗?如果是这样,它提供了哪些额外的安全性?如果不是,为什么不呢?或者......我只是错过了关于这一切如何运作的明显内容吗?

【问题讨论】:

  • 我多次向朋友、家人和客户提出同样的观点。我想有总比没有好,但不多。事实上,它可能更糟,因为它可能会导致错误的安全感。这就是数字签名的全部原因。不幸的是,许多重要的供应商和开源项目仍然提供未经数字签名的下载(叹气)。创建哈希的开销基本上为零。显然,获取签名证书和签名图像的开销太大了(又叹了口气……)
  • 只要哈希是在通过 https 传递的页面上发布的,您至少可以合理地确定它是由给定证书的主题发布的。如果攻击者可以修改站点本身的文件,那么哈希就没有用了。我同意@Dan,最好是签名的可执行文件。
  • 当文件也托管在下载镜像上时,哈希具有最大的附加值。通过在主站点上提供哈希值但在不同站点上提供文件,您可以确保来自其他站点的文件没有被更改。我同意,当它们都托管在同一个站点上时,它没有太多附加值。
  • 感谢大家 (@Dan @user18044 @Rutix) 的回答!都是非常好的点。感谢您抽出宝贵时间分享。

标签: file security hash


【解决方案1】:

关键是您要防御的攻击向量:

  1. 有人破坏了主服务器

    如果有人可以进入主服务器,他们可以重写哈希值使其看起来有效(所以不行)。

    因此,哈希无法防止主服务器遭到破坏。

  2. 有人破坏镜像服务器

    假设哈希在主服务器上,那么它们可以添加一层防御以防止有人破坏镜像,因为您可以检测到它们的修改。

  3. 中间人在连接中

    如果有人可以 MITM 连接,他们可以修改文件和哈希。

    所以它根本不会保护你。

  4. TCP 连接有一点错误

    这是散列文件的主要好处。过去,当错误检查不如现在好时,您会下载一个 100mb 的文件,其中会出现随机位错误。 md5sum 可以让您快速检测到这些错误并重新下载文件。

这就是哈希的好处。完整性检查您下载的内容是服务器上的内容。

如果您想要安全,您需要来自可信私钥 (GPG) 的签名。在绝大多数情况下,散列对安全没有任何帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2011-02-13
    • 1970-01-01
    • 2020-06-27
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多