SHA1完全不安全,应将其更换。
这个问题已经8岁多了,时代已经改变了:
https://arstechnica.com/information-technology/2017/02/at-deaths-door-for-years-widely-used-sha1-function-is-now-dead/
密码:https://en.wikipedia.org/wiki/PBKDF2
对于数据:SHA3
SHA512比SHA1更复杂,但是与SHA1哈希相比,SHA1哈希加密的密码使我损失了多少安全性?对于拥有数据库的人来说,破解单个密码所花费的时间。我使用的框架无法让我轻松访问SHA512,我不得不重写一些东西才能使其正常工作,因此我考虑只使用SHA1,尽管过去我一直使用SHA512。
最佳答案
SHA-1上当前已知的弱点不会影响您尝试执行的操作的安全性。无法从其哈希版本恢复密码取决于“原像抵抗”,据我们所知,SHA-1仍然无法完全实现。 SHA-512,SHA-256甚至MD4或MD5也完全不可行。面向科幻的思维者可能会想到,计算机将能够在2050年左右找到MD4或MD5的原像。 SHA-1将花费更长的时间。
现在碰巧发生了,尽管尚无已知的在SHA-1上计算原像的捷径,但也几乎没有安全证明。用数学的话来说,如果SHA-1中使用的压缩函数与“随机预言”无法区分,那么它对于原像是安全的。但是,SHA-1的已知弱点(从理论上讲)会导致冲突,这也表明SHA-1的压缩功能不是随机预言。因此,SHA-1对原像的安全性不再是“说不出有充分的数学理由,为什么它不会破裂”的说服力。它更多的是“嗯,还没有找到如何破解它”的那种。
简而言之,如果您使用SHA-1,那么您可能必须证明自己是正确的。即使您没有做错任何事情,您对SHA-1的选择也会受到质疑。没有人会质疑使用SHA-256或SHA-512,即使这暗示了一些开发开销。简而言之,使用SHA-1是不好的公共(public)关系。
请注意,盐析与该问题完全正交。盐化是为了防止针对不同密码实例的攻击之间的成本分担。预先计算的表(包括所谓的“彩虹表”)是一种共享(表的构建很昂贵,但可以用来攻击2、10、10000个密码,而每个被攻击的密码要花费很少的额外费用)。加盐会破坏共享。加盐很好。击败共享很重要,因为可以攻击一个密码:不是因为哈希功能,而是因为密码是一种适合人脑的密码,因此容易受到暴力攻击(“字典式攻击”)。使用任何与密码有关的东西,都不会因为哈希函数的弱点而出现问题,而是因为您首先使用了密码。
关于php - 与盐腌的SHA512相比,盐腌的SHA1有多不安全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3740443/