2017 年 MD5 原像漏洞

信息安全 密码 哈希 md5
2021-08-22 20:38:22

我最近发现我们的一个(严格面向内部 - 除非其他系统完全受到威胁,否则没有外部风险)平台正在通过加盐存储密码,然后对它们进行 MD5 哈希处理。根据 Wikipedia 文章,MD5 非常容易受到碰撞,但仅在理论上容易受到原像攻击(成本约为 2 123)。然而,这篇文章引用了 2009 年创建的原像攻击 - 很久以前!我找不到任何有关 MD5 易受原像攻击的漏洞的最新信息。

因此,我的问题是:是否在 MD5 中发现了任何漏洞,这些漏洞允许对散列密码进行原像攻击,无论是发现冲突还是确定密码,成本低于 2 123

作为一个后续问题,我试图迫使供应商放弃 MD5 以进行密码散列有多重要?这是主要和直接的漏洞,还是更多理论上的未来漏洞(如果数据库被破坏)。

2个回答

MD5 在密码使用方面应该被认为是完全妥协的,并且长期以来一直被“弃用”密码。它甚至不必涉及原像攻击或显式漏洞。这很简单,因为现代 GPU 堆栈针对 MD5 的哈希率是如此之快,以至于您几乎可以暴力破解任何密码(好吧,我稍微夸大了一点)

这是一个极端的设置,但它每秒可以运行近 2000 亿次哈希。这意味着如果它们被散列为 MD5,它每秒可以猜测大约 2000 亿个密码。我没有确切的翻译,但正如您可以想象的那样,每秒能够尝试 2000 亿次密码猜测意味着即使是强密码也很容易被破解。文章建议它可以在短短 7 分钟内破解 14 个字符的 Windows XP 密码(稍弱,哈希率大约是 MD5 的两倍)。

更真实的散列设置可能会以大约十分之一的速率散列密码,但即使如此,仍然很有可能暴力破解任何使用 MD5 散列的真实密码。

编辑以解决您问题的后半部分

这是一个直接的威胁吗?是和不是。实际上,这是一种理论上的威胁,因为只有在此内部系统被破坏的情况下,您的密码才会容易受到攻击。但是,您越多地了解犯罪分子在想要某些东西时所经历的非常复杂的黑客攻击,您就越会意识到在系统的各个级别上拥有彻底的安全性是多么重要。我个人认为内部系统应该和外部系统一样安全。这是一个很好的例子,说明糟糕的安全性会导致代价高昂的违规行为:

https://gizmodo.com/hackers-found-a-new-way-to-rip-off-atms-1818859798

此外,另一个问题是 MD5 在密码存储方面已经“过时”了很长一段时间。我会非常担心他们的其他安全性同样过时,并且您的这个内部系统充满了安全漏洞。

另一个编辑

需要牢记的一个重要想法:对于这些事情,一个重要的考虑因素是在发生违规事件时可能造成的损害。我不知道这个内部系统做了什么,但它肯定存储了一个重要的敏感信息:您的用户密码。即使这就是它所存储的全部内容,它也具有潜在的危险。这是一个非常合理的更坏情况。您的管理员在该内部系统上拥有用户帐户的可能性有多大?如果是这样,那么该人在内部系统中使用相同的密码来管理(例如,您的公司范围的电子邮件系统)密码的可能性有多大?如果是这样,那么从破解 MD5 密码到控制您的电子邮件系统,以及从那里到您公司的任何面向 Web 的方面,这只是一个短暂的跳跃,跳过和跳跃。

当您尝试与管理您的内部系统的人一起解决问题时,您可以自己思考这个思考过程并采取适当的步骤:“如果恶意用户设法获得了电子邮件帐户 X 的密码,那么麻烦有多大?他们能引起吗?”。您会惊讶地发现有多少公司的整个系统有效地依赖于单个电子邮件帐户的安全性,并且没有任何 2FA。如果您的公司属于这种情况,则无论该第三方供应商怎么说,您都应该解决此问题。否则,您的最坏情况是非常糟糕的,而这个内部系统只是恶意攻击者可能会削弱您的公司的众多方式之一。

请考虑使用更现代的密码哈希,Scrypt 或 Argon2id。

基于 GPU 的字典攻击对加盐哈希非常有效,即使哈希是 SHA512。PBKDF2 是一种很差的散列算法,碰撞很小,防御很差。Bcrypt 是可以的,但你会更安全地切换到在 GPU 上效率低下的现代内存硬密码哈希算法。Scrypt 是普遍的并且仍然非常好,但是如果您可以访问 Argon2id,我会使用它。

向我发送您的 MD5 哈希和盐的随机样本,我将在 24 小时内发回 90% 的相应密码。我将在没有 GPU 的情况下破解它们:只需使用我的笔记本电脑。真的。只需下载 HashCat,它就是即插即用。