使用KDF实现来存储密码安全吗?
更广泛地说,这是标准吗?公司真的使用KDF吗?还是他们通常依赖其他算法?
如果你有第二个问题的实际例子,我将不胜感激。
发布于 2017-09-08 14:45:38
是的和不是的,这取决于你所说的“存储密码”的含义。如果您的意思是“在密码存储中存储我自己的密码”,那么“不”,因为这显然不是KDF的目标。但是,如果您的意思是“在数据库中存储身份验证数据以验证我们的用户”,那么是的,因为以这种方式存储的密码确实很难恢复。
“是的”,公司确实使用KDF,并将继续使用它越来越多。值得注意的是,由于NIST在其最新发布的密码存储( NIST.SP.800-63b )中标准化了它们的使用,它说:
验证者应将记忆好的秘密即密码存储在抵抗离线攻击的形式中。记住的秘密应使用适当的单向密钥派生函数进行腌制和散列。密钥派生函数以密码、salt和成本因子作为输入,然后生成密码哈希。他们的目的是让获得密码散列文件的攻击者试用每一个密码猜测,因此猜测攻击的成本很高或很高。
也是因为现在,数据泄漏对任何公司的公关都是极其有害的。
有两种不同类型的KDF:
我在这里讨论的类型是第一类,当您将密码存储在数据库中以验证用户身份时。我个人对Argon2有偏好。由于其他如PBKDF2,可以是在专用集成电路器件上实现,这使得使用这些设备的暴力攻击更加容易,或者有更少的参数可以调整.此外,它还被选为密码散列竞赛的获胜者。
现在,关于KDF是否实际使用,您可以简单地查看大多数密码验证,我相信您会发现最重要的是.例如,LastPass使用PBKDF2 2做广告可以保护您的密码-存储主密码,并且您可以调整自己完成的迭代次数。姜戈的框架文件还提到PBKDF2是它的默认算法。
最后,维基百科有一个使用PBKDF2 2的好列表。(尽管存在理论上更好的KDF,但它仍然是使用最多的KDF。)
https://crypto.stackexchange.com/questions/51306
复制相似问题