在PBKDF2中使用SHA1作为哈希函数是否仍然安全?

14

由于SHA1的密码分析技术已经有了显著的进展,因此应该逐步淘汰SHA1并采用SHA2 (维基百科)。

然而,在PBKDF2中作为基础哈希函数使用时,它基本上被用作伪随机数发生器。因此,将SHA1用作PBKDF2的哈希算法仍然是安全的,对吗?

3个回答

23

目前已知的SHA-1弱点在使用HMAC时对其安全性没有任何影响,尤其是在使用PBKDF2时更是如此。就此而言,MD5也可以使用(但不是MD4)。

然而,在公关方面,SHA-1表现不佳:如果你在2011年使用SHA-1,那么你必须准备好为自己的选择辩护。另一方面,SHA-256是一个很好的“默认函数”,没有人会质疑它。

PBKDF2中没有性能问题(PBKDF2包括一个“迭代次数”,旨在使其正好足够慢),因此在这里很少有理由使用SHA-1而不是SHA-256。但是,如果您有一个已经部署了的系统,其中使用了PBKDF2-with-SHA-1,则没有立即需要“解决”它。


2
Stack Crypto中也有一个相当不错的解释。简而言之,密码碰撞并不是一件坏事,这只意味着恶意用户(或有效用户)可以使用几个不同的密码登录,而不是他们可以找回原始的“真实”密码。 - David Beckman

1

对SHA1的攻击引起了很多公众的骚动,这使得构造一个具有与不同消息相同哈希值的消息成为可能。当然,这在原则上对于每个哈希函数都是可能的,因为哈希函数的输出位数少于输入位数。然而,通常不太可能意外发生,并且故意这样做应该是计算上不可行的。

从“确保消息完整性”的角度来看,这可以被视为一场灾难。

另一方面,对于生成随机数的目的,这完全没有任何影响。


1
当然。如果您想生成更多的密钥材料,SHA-256或更大的哈希算法可能更有效率。但是PBKDF2-HMAC-SHA1也可以。同时,标准的HMAC使用尚未被破解,但是在这种情况下,更长的哈希算法原则上更安全。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接