SHA1在PBKDF2中作为散列函数仍然安全吗?

问题描述:

由于SHA1的密码分析有了显着的进展,它应该被逐步淘汰,转而采用SHA2(wikipedia)。SHA1在PBKDF2中作为散列函数仍然安全吗?

但是,作为PBKDF2中的基础散列函数,它基本上用作PRNG。因此,使用SHA1作为PBKDF2的散列应该仍然安全,对吧?

对SHA-1目前已知的弱点没有在它的安全性产生任何影响。对于这个问题,MD5也可以(但不是MD4)。但是,SHA-1不利于公共关系:如果在2011年使用SHA-1,那么您必须准备好自己来证明这一选择是正确的。另一方面,SHA-256是一个很好的“默认功能”,没有人会质疑它。

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

+1

在[Stack Crypto](http://crypto.stackexchange.com/questions/15218/is-pbkdf2-hmac-sha1-really-broken)中也有一个很好的解释。简而言之,密码冲突并不是一件坏事,它只是意味着恶意用户(或有效用户)可以使用一些不同的密码登录,而不能回到原来的“真实”密码。 – 2017-03-09 16:12:12

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

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

另一方面,为了生成随机数的目的,这绝对没有方向。

当然。如果您希望生成更多密钥材料,则SHA-256或更大,可能会更有效。 但PBKDF2-HMAC-SHA1很好。同样,标准HMAC的使用还没有受到影响,但是同样的情况下,更长的哈希原则上更安全。在PBKDF2使用时,HMAC,更不用说使用时