据我理解,KDF会增加熵,而哈希则会丢失信息。
我读过KDF应该用来存储密码。我不明白为什么我们不使用KDF,然后使用散列,这样--如果密码数据库被泄露--也就不可能找到简单的密码。
因此,将密码存储在数据库中如下所示:
这不应该是存储密码的建议方法吗?
发布于 2014-05-26 07:08:06
据我理解,KDF会增加熵,而哈希则会丢失信息。
基于密码的KDF可以被看作哈希函数(或哈希函数的家族,取决于您的定义),只是那些非常复杂的函数。有时人们会说它们“增加了熵”,但这通常意味着
PBKDF和散列是不可逆转的;这意味着如果不执行蛮力或字典攻击,就不可能找到密码。PBKDF使得执行蛮力搜索在计算上更加困难,而salt使得无法在数据库中找到匹配的密码。
PBKDF和散列都“丢失信息”,因为它们的图像(输出)小于它们的输入域名。但是,这并不会使它们更强,因为如果两个密码提供相同的输出散列,则两者都可以用作身份验证。
因此,在KDF之后使用散列最多是冗余的,并且可以通过增加冲突来减少安全性。
https://crypto.stackexchange.com/questions/16381
复制相似问题