对于非常大的文件,SHA1 总和与 MD5 总和有多可靠?

对于非常大的文件,SHA1 总和与 MD5 总和有多可靠?

我不断使用 SSH 通过 rclone 将磁盘映像和虚拟机映像(通常每个文件 800GB 到近 1 TB)传输到云服务器,我想知道在验证非常大的文件的完整性时 sha1sum 和 md5sum 有多可靠。

我找到了这个: 如何验证 1TB 文件是否已正确传输?

然而,它与性能有关,而不是与生成的哈希的可靠性有关。

考虑到有这么多不同的文件,是否有可能另一个文件共享生成的相同哈希值?

那么,MD5 和 SHA-1 总和对于非常大的文件有多可靠?谢谢。

我还发现了有关碰撞的情况: https://stackoverflow.com/questions/4032209/is-md5-still-good-enough-to-uniquely-identify-files

https://www.theregister.co.uk/2017/02/23/google_first_sha1_collision/

答案1

MD5 和 SHA-1 都可以检测偶然文件的损坏/更改。意外更改的文件具有相同 MD5 摘要的概率是 2^128 分之一 = 340,282,366,920,938,463,463,374,607,431,768,211,456。意外 SHA-1 冲突的概率更小,为 2^160 分之一。如果我们谈论在一组文件中找到意外匹配(称为生日问题),您需要大约 2^64 = 180 亿亿,MD5 冲突才有可能发生。请注意,文件的大小并不重要;重要的是所涉及的文件数量。

但 MD5 和 SHA-1 都不足以防范恶意的替换文件,或为文件提供可靠的唯一 ID。例如,如果您使用其中任何一种,有人可能会给您一个文件,让您计算哈希摘要,然后通过将其替换为具有相同哈希值的另一个文件来欺骗您。或者提交两个具有相同哈希值的文件,这可能会使您的系统感到困惑。

顺便说一句,意外/恶意的区别有点模糊。假设有人发现 Google 生成的两个 PDF 具有相同的 SHA-1 哈希值,并认为“这很酷!我应该保存它们以备后用”,然后尝试使用您的系统来存储和分发它们……从而意外破坏了系统。如果可以想象到这样的事情,您最好改用 SHA-256。

编辑:BitErrant与我在上一段中描述的类似:它是对 BitTorrent 的攻击,利用 BitTorrent 使用 SHA-1 校验和作为文件块的 ID 这一事实。

相关内容