密钥拉伸算法与密码"散列"的限制

Cli*_*max 2 security hash password-protection

为什么人们建议使用像bcrypt/pbkdf2这样的关键拉伸算法,这需要花费更长的时间来计算(故意),而不是使用更快的算法,这些算法也是安全的,比如salted sha-256或sha-512,并使用限制机制来限制暴力 - 强制攻击?

限制不受CPU限制,并且对于暴力攻击会提供相同的"延迟",同时对普通用户来说仍然很快.另一方面,bcrypt/pbkdf2是CPU绑定的,并且总是很慢.

mar*_*kli 5

当您使用键拉伸时,您可以为攻击者从数据库中窃取哈希值的情况做好准备.然后,攻击者可以利用其GPU/CPU的全速启动离线攻击和暴力破解密码.

只有绝对必要的代码才能计算哈希值,因为所有其他代码(如限制)都可以简单地省略.要设置每个哈希的最小时间,您必须使问题本身难以解决.这是关键的延伸,没有更便宜的方法来计算所有轮次的哈希值,以获得类似的哈希值.

像BCrypt/SCrypt这样的算法是以某种方式设计的,因此很难用GPU解决它们.