为什么一些流行的软件仍然使用md5?

信息安全 哈希 md5
2021-08-27 07:49:52

现在没有人敢为md5辩护,当然也不应该!

但是,许多流行的软件仍然在密码散列等应用程序中使用 md5(尽管它不是简单/普通的 md5,并且可能使用了盐 + 密钥拉伸等高级技术)。例如,我听说 Drupal CMS 使用 md5,据我所知,许多其他程序仍在使用 md5。(我认为 Apache 可以,也许还有很多论坛软件。)

为什么是这样?可以忍受吗?

这些似乎是经过多年开发和知情开发人员的专业和流行的程序。

4个回答

MD5 的大多数剩余用途是由于开发人员不了解的情况。如果您是该站点的常客,那么您很快就会知道要使用的“默认”哈希函数是 SHA-256;这就是密码学家和标准化机构的建议。但是您也会注意到显然有无穷无尽的人想要使用 MD5,或建议 MD5,或开始问自己有关 MD5 的问题并寻求一些指导。这意味着:

  • 使用 MD5 有一个相当重要的传统。
  • 关于 SHA-256 如何比 MD5 好得多的信息并不广泛。
  • 大多数开发人员进行开发并且不熟悉安全性(并且很少关心它)。“正常”的开发方法(我指的是大多数开发人员的工作方式)是:

    1. 谷歌上当前的问题。
    2. 复制并粘贴出现在某个随机博客或问答网站中的第一个看起来不错的解决方案。
    3. 编译,运行。
    4. 如果它似乎有效,请写博客。(选修的)
    5. 转到下一个问题。

    毫无疑问,95%(至少)的网站和相关应用程序都是以这种方式开发的。但是网络上到处都是 MD5;因此,大多数应用程序也将充满 MD5 —— 而且,由于上面的第 4 点,Web 将更加充满 MD5。

请注意,在大多数情况下,没有更换 MD5 的紧迫性。MD5 在碰撞方面完全被破坏了,但它仍然(几乎)和新的原像一样此外,在HMAC和衍生物(包括PBKDF2中使用它似乎仍然可以。在许多情况下,冲突不是问题(这包括密码散列;密码散列的 MD5 问题不是冲突,而是速度)。因此,虽然 MD5 已经过了它的鼎盛时期并且不应用于新的应用程序,但 MD5 的许多现有用法仍然相当强大,不需要紧急更新。不要恐慌。

旧习难改。有些人不知道或不在乎 md5 坏了。在某些情况下,使用 md5 不是漏洞。md5 可用于数据一致性或生成随机数。

我认为 MD5 仍然用于计算校验和和验证数据。但是 MD5 和 SHA-1 不是散列密码的好选择。它们的计算速度很快,发现碰撞不再是一项艰巨的任务。

出于兼容性原因,较旧的软件也可能保留 MD5。即旧版本的软件在数据和/或通信协议中使用了 MD5(由于无知,或者因为在编写软件时 MD5 仍然被认为是安全的)。现在较新的版本必须至少支持 MD5 才能向后兼容。

他们可能还希望避免升级文件格式/通信协议以支持更现代的散列的成本,甚至明确保留旧版本软件的前向兼容性。