比较密码哈希算法 - PoC 的想法?

信息安全 密码 密码学 哈希 密码管理
2021-09-02 19:58:54

好的,所以我刚开始在一家安全咨询公司工作,我们推荐 SHA 256(加盐)用于密码散列,因为 MD5 太弱了。我在 sec.SE 上阅读了一些关于过去几个月密码散列的精彩答案(列表太长了!!!),如果不尝试向我的同事和前辈证明 MD5 和 SHA 不是,那将是一种罪过适用于密码哈希。

我认为提出一个 PoC(包含使用 MD5、SHA 256 和 bcrypt 散列的密码并尝试测量生成散列所需的时间)并附有一些标准参考资料的 PoC 是个好主意。我愿意的要点要做的是:

  1. 使用 SHA 256 而不是 MD5 进行密码散列并不能提高安全性。密码散列算法(bcrypt,PBKDF2)将是存储密码的更好选择,当然还有唯一的盐。
  2. 支持这些观点的一些标准参考。参考文献对于支持观点很重要。

ps 我有编程经验,但在基于硬件的密码破解方面我是新手。这不是“给我密码”的问题;我只是在寻求想法和建议,以使其成为更好的 PoC。

3个回答

列出 1,000 个密码:一些简单的(密码、cat)、一些基于模式的(mY$p455w0rd)、一些随机的(s%Xn3,0a9aN),并以三种不同的方式对它们进行散列:MD5 加盐,SHA-256 加盐和 bcrypt。

在结果上使用hashcat

如果您的同事对详尽的解释已发布的基准没有足够的敬畏,并且确实需要“实际研究人员”(无论这意味着什么)或更糟糕的是某个政府机构的批准印章,那么向他们展示:

  • 正在进行的密码哈希竞赛,他们试图找到超越当前 bcrypt / PBKDF2 / scrypt 三元组的更好功能。
  • NIST Special Publication 800-132是您所能获得的官方出版物,并且合理地解释了为什么您需要像 PBKDF2 这样的东西。

当然,棘手的一点是让他们意识到他们应该已经知道什么,而不是让他们觉得,嗯,他们真的应该已经知道,作为一家安全咨询公司等等。让人们暴露于自己的无能有时可能引发一种有益的谦逊反射和学习意愿;但是,它通常会引起积极的反应,这会适得其反——也就是说,他们不会停止使用糟糕的密码散列,但会因为你的无礼而解雇你。

你说你在一家安全公司工作,但同时你说他们不相信 SHA-256 不适合密码。所以,我不确定你的同事的知识如何,但我会添加一些图形来解释散列如何用于 SHA-256 以及它如何用于 scrypt。也许一个很好的起点是关于记忆困难问题的 Security Now 插曲,它解释了 scrypt 的工作原理以及为什么它更适合密码。

旁注:前段时间,我向一家公司的一些开发人员做了类似的演示。我已经从他们的用户那里获取了密码并对他们运行了 hashcat,同时解释说 SHA-256 并不真正适合并且 scrypt 会是一个更好的选择。当我说话的时候,密码在后台滚动。可以说,在半小时的演示结束时,他们非常确信 SHA-256 还不够好。有时,实际演示比带有数字的 PowerPoint 更好;-)