正确的腌制和使用PHPass(Proper salting and using PHPass)

2019-09-21 17:40发布

我一直在使用PHPass哈希我的密码很长一段时间。 我承认,还是有事情,我不完全了解(或忽略)哈希密码正确所以今天我正在审查所有的信息,我能找到它。

回顾PHPass文件,我已经steped到这一点:

除了实际的散列,phpass透明产生当一个新的密码或口令被散列随机盐,以及它所编码的哈希类型,盐,密码拉伸迭代计数到“散列编码串”,它返回。 当phpass验证针对存储的散列一个密码或口令,它类似地透明地提取并使用该哈希类型标识符,盐和迭代计数出来的“散列编码串”的。 因此,你不需要用盐腌和伸展你自己费心 - phpass,照顾这些你。

我加粗困扰我的句子。
我始终认为,虽然盐应该有点秘密,在某种意义上说,它不应该是已知的攻击。 所以,如果一个正确的理解,PHPass存储在相同的散列使用的盐,因此能够比较密码时要使用它,并检查是否有效。
我的问题是

  1. 这是安全的? 如果哈希被攻破,攻击者用于散列密码的盐......有些事情我错过这里。
  2. 我在这里真的是免费的操心盐析密码? 我真的可以依靠PHPass?

Answer 1:

盐的目的不是要成为一个秘密。 其目的是为一个唯一的组件添加到每个散列输入,因此相同的密码将不散列到相同散列,由此使得强力过程更困难和费时,因为每个散列必须被单独地尝试。

是的,这将是稍微更安全,如果盐是秘密的,但很难在实践中认识到,因为你的应用程序所需要的盐一样,所以它需要存储在某个地方,其中的密码是访问也是如此。 因此,在实践中,当攻击者获取密码哈希,他通常也能够无论如何,得到盐。



Answer 2:

一些背景知识
盐并不意味着是秘密的,而是盐“作品”,通过确保散列结果唯一的每个使用实例。 这是通过选择不同的随机盐值对每个计算的哈希来完成。

该盐的意图时,已知不被损害; 攻击者仍然需要单独攻击每个哈希。 因此,你可以简单地存储旁边的密码盐。

那么,PHPass安全吗?
是! PHPass(根据最佳做法)为您生成一个强大的随机盐。 这是一个很好审查,质量好的库。

感兴趣的链接
如何安全散列密码?
如何存储盐?
中的密码哈希加盐+胡椒或盐就够了吗?
产生盐和开源软件



Answer 3:

如果我理解正确,盐主要用于阻止预先计算哈希/彩虹表攻击。 只要是用于生成,使其合理的全球唯一的哈希(在PHPass没有硬编码为例),你确定。



文章来源: Proper salting and using PHPass