SHA1仍然可以安全地用作PBKDF2中的哈希函数吗?

时间:2011-02-08 21:51:56

标签: cryptography hash sha1 pbkdf2

由于SHA1的密码分析取得了重大进展,因此应该逐步取消SHA2(wikipedia)。

然而,在PBKDF2中用作底层散列函数时,它基本上用作PRNG。因此,使用SHA1作为PBKDF2的哈希值仍然是安全的,对吗?

3 个答案:

答案 0 :(得分:20)

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

然而,SHA-1对公共关系不利:如果在2011年你使用SHA-1,那么你必须做好准备以证明这一选择的合理性。另一方面,SHA-256是一个很好的“默认函数”,没有人会质疑它。

PBKDF2中没有性能问题(PBKDF2包含“迭代计数”意味着使其完全与所需的一样慢),所以在这里没有理由比SHA-256更喜欢SHA-1。但是,如果您有一个现有的,部署的系统使用PBKDF2-with-SHA-1,则不需要立即“修复”它。

答案 1 :(得分:0)

对SHA1的攻击引起了很多公共混乱,因此可以构造一条与不同消息具有相同哈希值的消息。对于每个散列函数,这当然总是可能(原则上),因为散列函数具有比输入位少的输出位。但是,它通常不太可能偶然发生,故意这样做应该在计算上不可行。

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

另一方面,为了产生随机数,这绝对没有影响。

答案 2 :(得分:0)

不确定。如果要生成更多密钥材料,SHA-256或更大版本可能更有效。 但是PBKDF2-HMAC-SHA1很好。标准的HMAC使用也没有受到影响,但是在这种情况下,更长的哈希原则上更安全。