【问题标题】:Does a salt increase security with PHP 5.5's hashing function盐是否通过 PHP 5.5 的散列函数提高安全性
【发布时间】:2015-10-04 00:49:50
【问题描述】:

我知道 PHP 5.5 的新哈希函数不必使用用户指定的盐,但它会增加安全性吗?我一直在做一些阅读,据我了解,散列函数每次都使用随机盐,当需要验证散列时,它可以从散列值中检索。但是生成自己的盐并使用它们有什么好处吗?有什么坏处吗?

【问题讨论】:

  • 自己生成盐不会有任何好处。您可以做的是,使用服务器端密钥加密散​​列,这在某些情况下可能是一个优势。有兴趣的可以看看我tutorial的末尾。

标签: security hash salt php-5.5


【解决方案1】:

我知道 PHP 5.5 的新哈希函数不必使用用户指定的盐,但它会提高安全性吗?

假设您在谈论password_hash,那么不是。它内置了您需要的所有盐,再添加将没有任何好处。

也没有什么坏处,除了更多代码 = 更复杂 = 更可能出现错误。

【讨论】:

  • 我想补充一点,在 PHP 7 中已经弃用了指定自己的 salt 的功能,因为我们没有发现这可能有用的单一案例,但很多情况下人们设法做到了用它来打破一切。
  • @NikiC - 很高兴听到这个消息,我认为这是一个非常明智的决定。
【解决方案2】:

看来你这里有一些误解。

一旦生成哈希,整个想法就是它完全是一种方式。这意味着,从安全散列算法的消息摘要中,无法知道盐是什么。例如,我见过人们将盐存储在另一列中。

Salt 旨在在您的消息摘要集中创建熵。并使用 Rainbow 表防止攻击。盐为消息摘要添加了一个随机元素,超出了算法和原始值可以做的事情。

尝试变得聪明并使用自己的哈希值的不利之处在于,意识到自己可能不如编写可用 API 的安全专家聪明。说真的,当涉及到安全性时,你不能利用它来对抗你的想法。人脑容易出错;这就是我们团队合作的原因。一个专家团队为您制作了随机哈希生成器。说真的,使用它们。

【讨论】:

  • 我应该更具体一点。如果 PHP 5.5 函数在每个哈希上使用随机盐,它如何验证密码?
  • 当然你必须知道盐来做验证,它是存储在哈希值中的明文。
  • @martinstoeckli 那么哈希中只有纯文本盐吗?所以也许我曾经在我的哈希表中看到“垃圾邮件”这个词并不是巧合。如果有人可以访问您的数据库,他们难道不能获取哈希,将其放入自己的页面并尝试使用 password_hash 暴力破解它吗?
  • @Chris - 是的,盐是哈希值的一部分,看看这个answer。是的,他们可以暴力破解这个密码,但这不是盐所保护的,它的目的是防止攻击者构建一个彩虹表并立即找到所有密码的匹配项。相反,他必须为每个盐/密码分别建立一个彩虹表,这使得这些表不实用。
  • @martinstoeckli - 很有趣。谢谢。
猜你喜欢
  • 2013-03-24
  • 2014-06-23
  • 2014-04-27
  • 2010-11-09
  • 2011-12-29
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 2011-06-23
相关资源
最近更新 更多