适当的腌制和使用PHPass

Raú*_*ràs 6 php security phpass

我一直在使用PHPass来密码我的密码很长一段时间.我承认仍然有一些我不完全理解(或忽略)正确散列密码的东西所以今天我正在审查我能找到的所有相关信息.

回顾PHPass文档,我已经踏入了这个:

除了实际散列之外,当新密码或密码被散列时,phpass透明地生成随机盐,并且它将散列类型,salt和密码拉伸迭代计数编码到它返回的"散列编码字符串"中.当phpass对存储的哈希验证密码或密码时,它同样透明地提取并使用哈希类型标识符,盐和"哈希编码字符串"中的迭代计数.因此,您不必费心自己进行腌制和拉伸 - phpass会为您处理这些问题.

我加粗了困扰我的句子.
我总是认为盐应该有些秘密,因为攻击者不应该知道它.因此,如果正确理解,PHPass会将相同哈希中使用的盐存储起来,以便在比较密码时能够使用它并检查是否有效.
我的问题是

  1. 这样安全吗?如果散列遭到破坏,攻击者就会使用盐来散列密码...这里有我想念的东西.
  2. 我在这里真的可以免费打扰密码吗?我真的可以依靠PHPass吗?

dec*_*eze 1

盐的目的不是为了保密。目的是为每个哈希输入添加唯一的组件,因此相同的密码不会哈希为相同的哈希,从而使暴力破解过程更加困难且耗时,因为每个哈希都必须单独尝试。

是的,如果盐是秘密的,那么安全性会稍微高一些,但这在实践中很难实现,因为您的应用程序也需要盐,因此它需要存储在可以访问密码的地方。因此,在实践中,当攻击者获得密码哈希时,他通常也能够获得盐。