密码哈希算法,即使超级计算机也能保证密码安全?

时间:2013-09-07 21:54:22

标签: algorithm security encryption passwords supercomputers

我正在研究如何知道MD5会发生碰撞,所以它不够安全。我正在寻找一些哈希算法,即使是超级计算机也需要时间来破解。所以你能告诉我什么样的哈希算法可以保证我的密码安全,就像未来20年的超级计算进步一样。

3 个答案:

答案 0 :(得分:4)

使用具有可变数轮数的密钥派生函数,例如bcrypt

您今天加密的密码,以及您自己的系统可以处理而不会减速的散列难度,将永远容易受到未来20年更快的系统的攻击。但是随着时间的推移逐渐增加轮数,你可以增加与超级计算机的功率增加成比例地检查密码所需的工作量。并且您可以对现有存储的密码应用更多轮次,而无需返回原始密码。

它会再坚持20年吗?很难说:谁知道我们可能有什么疯狂的量子加密和密码替换方案?但它确实适用于过去的10年。

另请注意,拥有超级计算机并定位到特定帐户的实体很容易获得足够的权力,以至于您无法保护所有密码。密码散列的目的是通过限制正常攻击者恢复密码的速度来减轻数据库泄漏造成的损害,以便在您发现泄漏并发布密码时,尽可能少的帐户已被泄露。通知告诉大家改变他们的密码。但是没有100%的解决方案。

答案 1 :(得分:1)

正如其他人所说,你所问的几乎无法回答。谁知道未来二十年在处理能力方面会取得哪些突破?还是数学?

此外,您没有告诉我们许多其他重要因素,包括您要针对哪些威胁模型进行保护。例如,您是否正在尝试防御攻击者获取哈希密码数据库并进行离线暴力破解?试图破解一个特定密码的定制ASIC的攻击者?等

话虽如此,但可以做的事情尽可能安全且面向未来。

首先,不要只使用vanilla加密哈希算法;它们不是为您的应用而设计的。实际上,它们专为具有不同要求的其他应用而设计首先,它们是快速,因为速度是哈希函数的重要标准。在这种情况下,这对你不利。

此外,您提到的一些算法(如MD5或SHA1)存在缺陷(一些是理论上的,一些是实用的),不应该使用。

喜欢像bcrypt这样的算法,这是一种旨在抵御暴力攻击的算法,它比通用加密哈希慢得多,其安全性可以根据需要进行“调整”。

或者,使用类似PBKDF2的内容。旨在通过您选择的功能运行密码可配置的次数以及盐,这也使得暴力破解更加困难。

根据您的使用模式调整迭代次数,请记住,速度越慢,您对蛮力的安全性就越高。

在为PBKDF选择加密哈希函数时,更喜欢SHA-3,或者,如果你不能使用它,则更喜欢SHA-2的长变体之一:SHA-384或SHA-512。虽然我不认为这个场景中存在问题,但我还是避开了SHA-256。

无论如何,尽可能使用尽可能大的盐;我建议你使用一个好的加密安全PRNG,不要使用少于64位的盐(注意:我说的是生成的盐的长度,而不是值< / em>返回)。

这些建议会在未来20年内有所帮助吗?谁知道 - 我谨慎谨慎并说“不”。但是如果你需要很长时间的安全性,你应该考虑使用除密码以外的东西。

无论如何,我希望这有帮助。

答案 2 :(得分:1)

以下是这个问题的两个迂腐答案:

  • 如果P = NP,则可证明没有这样的散列函数(反之亦然)。由于在撰写本文时尚未证明P!= NP,我们无法对此进行任何强有力的保证。
  • 话虽如此,我认为可以肯定地说,未来20年内开发的超级计算机将花费“时间”来打破你的哈希,无论它是什么。即使它是明文,I / O也需要一些时间。

因此,你的问题的答案是肯定的和否定的:)