我想下载某个 Linux 发行版。但是它只使用 bittorent 进行下载。我不太喜欢 bittorent。但是,如果我使用它,如果我下载的 MD5 与发行版网站的 MD5 匹配,这是否意味着文件没有被篡改?它与提供商的 MD5 完全匹配,并且假设原始文件是“安全的”,那么下载的 torrent 文件也是“安全的”?
答案1
如果我下载的MD5与发行网站的MD5匹配,是否意味着该文件没有被篡改?
可能没有被篡改过。MD5 确实受到过攻击,所以它不如 SHA-1 之类的算法好。对于验证文件是否正确之类的事情,MD5 是可行的。
如果您使用哈希作为存储的密码,那么 MD5 就不太适用了。网站等通常不想存储您的密码,而是存储它的哈希值 - 然后将您输入的用于登录的密码与哈希值进行比较。这样,他们就不知道您的密码了。但是,如果黑客获得了包含这些哈希值的帐户列表,他们可能能够生成一个密码,当通过 MD5 时,会生成相同的哈希值(这称为哈希碰撞)。我真的不知道这一切是如何工作的,只是 MD5 哈希碰撞是可能的,而且比过去更容易。
Bittorrent 使用 SHA-1 来“了解”它正在下载什么文件以及对等方交换的文件是否正确。因此,恶意对等方不太可能将坏数据注入群中 - 即使一个对等方知道如何破解 SHA-1,大多数其他对等方也必须合作。您可以相对确信 Bittorrent 群中没有人可以破坏下载,前提是您拥有正确的.torrent
文件,并且该文件没有被恶意修改以指向不同的跟踪器或其中的哈希值被修改。
答案2
是的,很可能没问题。
我在日常系统管理工作中经常使用 md5,因此我对安全问题进行了大量研究。我发现了一些很棒的链接,并在一篇博客文章中总结了安全问题和哈希的用途
要点是:需要考虑三个主要事项:
1) 两个不同的文件可能具有相同的哈希值。根据他们的发现,这两个文件都需要由攻击者(即文件的创建者)创建。
2) 哈希也无法被定位。你无法找到一个哈希,然后设计一个文件来匹配该哈希。相反,创建者必须创建两个具有相同哈希的不同文件,并且实际哈希值本身无法提前“选择”
3) 最后,哈希值的数量是有限的,因此,纯靠运气,两个随机文件可能会有相同的哈希值(称为“冲突”)。好的哈希算法的优势之一就是避免冲突。
考虑到以上因素:因此,如果您使用供应商提供的哈希值,那么您就知道这是您可以高度信任地检查的实际哈希值
以下是一些供您参考:
这里有一篇关于散列安全性的精彩文章: http://blog.codinghorror.com/speed-hashing/
关于散列的安全漏洞的非常深入的文章(甚至展示了创建两个具有相同散列的不同文件的示例) http://www.win.tue.nl/hashclash/SoftIntCodeSign/
我自己收集的有关安全性和哈希使用的信息 http://geekswing.com/geek/the-magic-of-hash-and-i-mean-of-the-md5-and-sha-1-vintage/
答案3
可能没问题。MD5 现在不是更安全的算法 - 比 CRC 好得多,但比 SHA1、Ripemd 和 SHA256 弱 - 但找到 MD5 哈希冲突非常困难,只有大型组织才能承受特定攻击,并且不太可能在随机 torrent 上毫无目的地发生。