0

在 SO 上已经解决了关于这个主题的几个问题,但我无法找到这个特定查询的答案。我看过给 您的密码加盐:最佳实践?以及对密码散列的非随机盐的出色回答,它们都有非常有用的指导方针,但没有明确的存储指导方针。

是否建议将哈希、随机盐和迭代计数都放在同一个表中?如果没有,建议的方法是什么?

我确实明白,即使我们将它们放在一起,也不能轻易使用随机盐制作彩虹表。问题是因为有许多简单的额外威慑可以起到很长的作用。例如,将盐放在不同的表中(注入通常会浸出表,而不是 DB),而迭代计数在不同的层中(例如,中间层中的常量)。

4

2 回答 2

2

我们已经在 Security Stack Exchange 上以各种形式回答了这个问题。

这些在概念上类似于您将所有信息保存在同一个表中的方法。

@Greg 的评论部分正确 - 一个坚定的攻击者最终将能够获得所有数据,但这里的关键是时间。如果有足够的时间和资源,熟练的攻击者将能够访问您的系统 - 关键是使其变得足够困难或嘈杂,以便您及时发现它。

来自密码学家 Thomas Pornin 在我们的 Security Stack Exchange 博客上的一篇文章:

  • 为什么要对密码进行哈希处理 - 我们对密码进行哈希处理是为了防止具有只读访问权限的攻击者升级到更高的权限级别。密码散列不会使您的网站免受攻击;它仍然会被黑客入侵。密码散列是损害遏制。
于 2012-06-11T08:22:04.137 回答
2

将盐和迭代计数与计算的哈希一起存储是正常模式。

盐不是秘密。盐通过对每个计算的散列不同而“起作用”。如果攻击者知道盐和迭代计数,它对他没有任何帮助。

于 2012-06-11T09:20:56.043 回答