【问题标题】:protect hash code? [closed]保护哈希码? [关闭]
【发布时间】:2013-03-04 13:13:53
【问题描述】:

我确信所有这一切都有一些基本的东西可以简化我所缺少的整个概念,但这里是:

好的,为了安全起见,您对密码进行了加盐和哈希处理,但是执行此操作的代码呢?

如果您在主机或 vps 上,“某人”不能获取您在那里编译的源代码吗?或者,如果他们可以访问您的数据库,他们是否不能访问执行加密/解密的程序并暴力破解它,直到他们获得算法?

我知道没有什么是 100% 安全的,但是在这种情况下如何提高安全性呢?

【问题讨论】:

标签: security hash shared-hosting vps salt


【解决方案1】:

如果您的数据遭到破坏,Salting 将在一定程度上保护数据免受字典或彩虹表攻击。蛮力并非不可能,但会很慢,并且需要对每个密码哈希再次执行。如果不加盐,蛮力攻击变得更容易实现。

与某些人所说的相反,盐没有以任何特殊方式受到保护(也不需要),而是以纯文本形式附加到散列中。但是,它确实需要对每个散列都是唯一的,否则对于这种用途来说毫无意义。这与用于所有哈希的辣椒形成对比,并且必须受到保护。由于这种区别,盐腌通常是首选,除非能保证限制接触辣椒(这不是一件容易的事)。

如果您想提高安全性,请不要使用共享主机。并且不允许直接访问数据库。并且不要让未经预先筛选的任何人访问您的系统。在实际意义上,这些并不总是可行的选择。所以只需使用盐并忍受它:)

【讨论】:

  • 大声笑,最后一段说明了一切
  • @PinnyM:帮助我理解不需要保护盐的说法。如果我知道与特定帐户一起使用的盐,我能否像未加盐一样轻松构建彩虹表?
  • @EricJ。 - 是的,您可以使用此盐来构建彩虹表,但是当您为每个密码应用不同的盐时,您将不得不为每个密码构建这样的表。没有人会这样做,因为蛮力更快,如果您找到匹配项,则构建彩虹表的其余部分是没有意义的。对于盐和胡椒:它们不相互排斥,盐是必须的,胡椒在某些情况下有助于保护弱密码。
  • @martinstoeckli:如果盐是已知的,暴力破解也变得更加简单,因为我只需要猜测密码加上盐并创建一个哈希值,而不是排列所有可能的密码加上盐值.因此,弱密码仍然很弱。
  • @EricJ。加盐并不是为了保护弱密码本身。它的设计目的是不允许单个彩虹表一次将它们全部破解。由于需要为每个表创建一个单独的表,这显着增加了暴力破解所有密码的时间,增加了几个数量级。但是,您是对的,可以在同一时间范围内暴力破解单个密码。试图隐藏 salt 可能不会带来太多好处,因为如果数据库被破坏,那么代码库(和 salt)被破坏的可能性有多大?
【解决方案2】:

您的源代码中没有任何关于哈希算法的“隐藏”内容。事实上,您应该使用经过验证的、众所周知的强哈希实现,而不是自己实现算法。

盐是需要保护的部分。该盐不是您代码的一部分(或不应该是),而是应该存储在某种文件存储/数据库中(取决于您的应用程序),并且应该基于每个用户应用(用户 Joe 应该有与用户 Fred 不同的密码盐)。

可以肯定的是,保护每个用户密码使用的盐是至关重要的。这就是适当的文件系统/数据库权限发挥作用的地方。

另一方面,您的 代码 也应该受到任何未经授权的用户的保护,但不是为了保护盐(至少不是直接...如果有人可以访问盐,或者只是替换您自己的代码,完全绕过身份验证检查)。

【讨论】:

  • 盐一般不被视为秘密。
猜你喜欢
  • 2012-06-12
  • 2016-02-06
  • 2020-11-13
  • 1970-01-01
  • 2010-12-08
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
相关资源
最近更新 更多