Algorithm 密码散列算法,即使在超级计算机上也能保证密码安全?

Algorithm 密码散列算法,即使在超级计算机上也能保证密码安全?,algorithm,security,encryption,passwords,supercomputers,Algorithm,Security,Encryption,Passwords,Supercomputers,我在研究MD5是如何发生碰撞的,所以它不够安全。我正在寻找一些即使是超级计算机也需要时间来破解的哈希算法。那么,您能告诉我,在未来20年的超级计算发展中,什么样的哈希算法可以保证我的密码安全。使用具有可变轮数的密钥派生函数,例如 你现在加密的密码有一个散列困难,你自己的系统可以在不减慢速度的情况下处理,在未来20年的更快系统中,密码总是容易受到攻击。但是随着时间的推移,通过逐渐增加轮次,你可以增加检查密码所需的工作量,这与超级计算机不断增长的能力成正比。而且,您可以对现有存储的密码进行更多轮次,

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

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

你现在加密的密码有一个散列困难,你自己的系统可以在不减慢速度的情况下处理,在未来20年的更快系统中,密码总是容易受到攻击。但是随着时间的推移,通过逐渐增加轮次,你可以增加检查密码所需的工作量,这与超级计算机不断增长的能力成正比。而且,您可以对现有存储的密码进行更多轮次,而无需返回原始密码

它还能维持20年吗?很难说:谁知道到那时我们可能会有什么疯狂的量子密码和密码替换方案?但在过去的10年里,它确实奏效了


还要注意的是,拥有超级计算机并以特定帐户为目标的实体很容易就会有足够的能力来攻击它,以至于你永远无法保护你所有的密码。密码散列的目的是通过限制普通攻击者恢复密码的速度来减轻数据库泄漏造成的损害,以便在您发现泄漏并发出通知通知通知所有人更改密码时,尽可能少的帐户已经被泄露。但是没有100%的解决方案。

使用具有可变轮数的键派生函数,例如

你现在加密的密码有一个散列困难,你自己的系统可以在不减慢速度的情况下处理,在未来20年的更快系统中,密码总是容易受到攻击。但是随着时间的推移,通过逐渐增加轮次,你可以增加检查密码所需的工作量,这与超级计算机不断增长的能力成正比。而且,您可以对现有存储的密码进行更多轮次,而无需返回原始密码

它还能维持20年吗?很难说:谁知道到那时我们可能会有什么疯狂的量子密码和密码替换方案?但在过去的10年里,它确实奏效了


还要注意的是,拥有超级计算机并以特定帐户为目标的实体很容易就会有足够的能力来攻击它,以至于你永远无法保护你所有的密码。密码散列的目的是通过限制普通攻击者恢复密码的速度来减轻数据库泄漏造成的损害,以便在您发现泄漏并发出通知通知通知所有人更改密码时,尽可能少的帐户已经被泄露。但是没有100%的解决方案。

正如其他人所说,你所问的几乎是不可能回答的。谁知道在接下来的二十年里,在处理能力方面会有什么突破?还是数学

此外,您没有告诉我们许多其他重要因素,包括您打算保护哪些威胁模型。例如,您是否试图防御攻击者获得哈希密码数据库并进行脱机暴力强制?具有自定义ASIC的攻击者试图破解一个特定密码?等等

话虽如此,您可以做一些事情来尽可能地确保安全和经得起未来考验

首先,不要只使用普通的加密哈希算法;它们的设计并没有考虑到您的应用程序。实际上,它们是为具有不同需求的其他应用程序而设计的。首先,它们是快速的,因为速度是散列函数的一个重要标准。这对你不利

此外,您提到的一些算法,如MD5或SHA1,都有弱点(一些是理论上的,一些是实际的),不应使用

更喜欢类似这样的算法,这种算法通过比通用加密散列慢得多来抵抗暴力攻击,而通用加密散列的安全性可以根据需要进行“调优”

或者,使用类似的方法。设计用于通过您选择的函数运行密码,可配置的次数以及salt,这也使得暴力强制变得更加困难

根据您的使用模型调整迭代次数,请记住,迭代越慢,对暴力的安全性就越高

在为PBKDF选择加密散列函数时,请选择SHA-3,如果无法使用,请选择SHA-2的一个长变体:SHA-384或SHA-512。我会避开SHA-256,尽管我认为在这种情况下它没有问题

在任何情况下,尽可能使用最大和最好的盐;我建议您使用良好的加密安全PRNG,并且永远不要使用小于64位的salt(注意:我指的是生成的salt的长度,而不是返回的值)

这些建议是否有助于未来20年的发展?谁知道呢——我会犯谨慎的错误,说“不”。但是如果你需要长时间的安全性,你应该考虑使用除密码之外的其他东西。
无论如何,我希望这能有所帮助。

正如其他人所说,你所问的问题实际上是不可能回答的。谁知道在接下来的二十年里,在处理能力方面会有什么突破?还是数学

此外,您没有告诉我们许多其他重要因素,包括您打算保护哪些威胁模型。例如,您是否试图防御攻击者获得哈希密码数据库并进行脱机暴力强制?具有自定义ASIC的攻击者试图破解一个特定密码?等等

机智