【问题标题】:Same Salt Or Different Salts相同的盐或不同的盐
【发布时间】:2012-06-07 12:45:40
【问题描述】:

这是我的问题:根据您的经验,对存储在 PHP 文件中的每个哈希值进行哈希处理是否更安全,或者对每个哈希对象使用不同的盐值并将其存储在数据库中是否更好用那个物体?

【问题讨论】:

  • 令人惊讶的是,这个问题引发了相当不错的讨论,而且没有人赞成

标签: php mysql hash salt


【解决方案1】:

盐只有在每个散列字符串都不同时才有意义。

所以,是的,创建额外的列并将 random 盐放在那里

【讨论】:

  • 如果盐存储在数据库中,它唯一能做的就是防止在数据库中查找哈希。除非软件是开源的,否则 PHP 文件中的盐会更安全。
  • @AustinAllover:除非你知道算法(你需要相关的资源)——盐和哈希的知识什么都没有。 PS:感谢投票
  • 你需要知道这两种情况的算法,不管哈希是在数据库中还是在文件中。数据库中的盐有什么好处?我投了反对票,因为我觉得你的答案是错误的:P
  • @AustinAllover:“你需要知道这两种情况的算法”---完全正确。你不知道算法 - 你不能暴力破解密码。不管是否有静态盐。 “数据库中的盐有什么好处?” --- 最大和唯一的盐优势 - 每个条目都是随机且不同的。它并不打算保密。 PS:CS 是一门围绕知识的科学,而不是感觉
  • 如果攻击者可以在您的网站上注册,他们可以使用许多不同的算法通过散列将数据库中的散列与其密码相匹配。如果没有有效的盐,这种技术是不可能的。我认为将盐存储在数据库中没有任何好处。
【解决方案2】:

每个哈希使用不同的盐;否则散列对象容易受到暴力攻击。

【讨论】:

  • 任何东西都容易受到暴力破解
  • @zerkms:我不同意。蛮力攻击(最终)将始终有效,但盐渍化的密码并不是“易受攻击的”……要易受攻击,就需要有可利用的弱点。就像使用相同的盐一样。
  • bruteforce 之所以称为“brute-”,是因为它只是一个一个的暴力项目。没有暴力破解保护。根据定义,每个哈希都容易受到暴力破解。如果我们知道盐(显然我们知道) - 我们可以应用蛮力。
  • @zerkms:我认为我们有不同的“弱势”背景。我说的是比较的;你说的是绝对的。正如我所说,蛮力攻击总是有效的,但是一个经过充分盐分的密码哈希使它更难做到。它更具抵抗力。如果每种散列技术都“易受攻击”,那么用比较来表达你的参考框架是否有意义?
  • 我不知道什么是“加盐”。对我来说,秘密字符串(密码)要么加盐,要么不加盐。
【解决方案3】:

如果您将密码存储在数据库中,则需要在每个条目中混合一些不同的内容,这样您就无法在数据库中轻松找到匹配的密码。您可以使用随机盐,也可以只包含用户名(如果它是不可变的)或其他一些不可变的唯一字段。

如果您使用用户名之类的东西,那么您还应该做一些对您的实施来说是独特的事情,因为可能有其他网站使用相同的算法,因此有机会发现匹配项。严格来说,它不一定是你包含在哈希中的盐,它可能只是你的算法工作方式的不同,但通常只添加一个全局盐是最简单的。如果您使用的是 per entry salt,则无需添加另一个全局 salt。

对于这些类型的问题,通常最容易想到黑客可能使用的攻击类型。请记住,您实际上并不是在尝试保护您的数据(因为您的数据库已被入侵),您实际上是在尝试阻止黑客获取您网站上使用的凭据并在其他网站上使用它们。

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2015-01-17
    • 2023-03-13
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多