由于SHA1的密码分析技术已经有了显著的进展,因此应该逐步淘汰SHA1并采用SHA2 (维基百科)。
然而,在PBKDF2中作为基础哈希函数使用时,它基本上被用作伪随机数发生器。因此,将SHA1用作PBKDF2的哈希算法仍然是安全的,对吗?
由于SHA1的密码分析技术已经有了显著的进展,因此应该逐步淘汰SHA1并采用SHA2 (维基百科)。
然而,在PBKDF2中作为基础哈希函数使用时,它基本上被用作伪随机数发生器。因此,将SHA1用作PBKDF2的哈希算法仍然是安全的,对吗?
目前已知的SHA-1弱点在使用HMAC时对其安全性没有任何影响,尤其是在使用PBKDF2时更是如此。就此而言,MD5也可以使用(但不是MD4)。
然而,在公关方面,SHA-1表现不佳:如果你在2011年使用SHA-1,那么你必须准备好为自己的选择辩护。另一方面,SHA-256是一个很好的“默认函数”,没有人会质疑它。
PBKDF2中没有性能问题(PBKDF2包括一个“迭代次数”,旨在使其正好足够慢),因此在这里很少有理由使用SHA-1而不是SHA-256。但是,如果您有一个已经部署了的系统,其中使用了PBKDF2-with-SHA-1,则没有立即需要“解决”它。
对SHA1的攻击引起了很多公众的骚动,这使得构造一个具有与不同消息相同哈希值的消息成为可能。当然,这在原则上对于每个哈希函数都是可能的,因为哈希函数的输出位数少于输入位数。然而,通常不太可能意外发生,并且故意这样做应该是计算上不可行的。
从“确保消息完整性”的角度来看,这可以被视为一场灾难。
另一方面,对于生成随机数的目的,这完全没有任何影响。