-2

好的,所以哈希的整个问题是用户输入的密码长度不能超过 15 个字符。大多数只使用 4-8 个字符,使攻击者很容易用彩虹表破解它们。

解决方案,使用用户 salt 使哈希输入更复杂,超过 50 个字符,这样他们就永远无法生成表(对于这种大小的字符串来说太大了)。另外,他们必须为每个用户创建一个新表。问题:如果他们下载数据库,他们将获得用户盐,所以如果他们足够关心,你就会回到第一方。

解决方案,使用站点“pepper”加上用户盐,那么即使他们获得了数据库,他们仍然必须知道配置文件。问题:如果他们可以进入您的数据库,他们也可能会进入您的文件系统并发现您的站点。

因此,在所有这些已知的情况下 - 让我们假设攻击者进入您的网站并获得一切,一切。那你现在怎么办?

在讨论的这一点上,大多数人的回答是“谁在乎这一点?”。但这只是一种廉价的说法,“我不知道下一步该做什么,所以它不可能那么重要”。可悲的是,我在其他任何地方都问过这个问题,这就是答案。这表明大多数程序员错过了一个非常重要的点。

让我们想象您的网站与其他 95% 的网站一样,并且用户数据——甚至是完全服务器访问权限——不值得蹲下。攻击者碰巧在追捕您的一位用户“Bob”,因为他知道“Bob”在您的网站上使用的密码与他在银行网站上使用的密码相同。他也碰巧知道鲍勃在那里有他毕生的积蓄。现在,如果攻击者可以破解我们网站的哈希值,那么剩下的就是小菜一碟了。

所以这是我的问题——如何在没有任何可追踪路径的情况下延长密码的长度?或者您如何使散列过程变得复杂以便及时复制?我想出的唯一一件事是您可以重新散列哈希数千次,并将创建最终彩虹表所需的时间增加 1,000 倍。这是因为攻击者在创建表时必须遵循相同的路径。

还有其他想法吗?

4

5 回答 5

6

解决方案,使用用户 salt 使哈希输入更复杂,超过 50 个字符,这样他们就永远无法生成表(对于这种大小的字符串来说太大了)。另外,他们必须为每个用户创建一个新表。问题:如果他们下载数据库,他们将获得用户盐,所以如果他们足够关心,你就会回到第一方。

这种推理是错误的。

彩虹表(这是通用字典攻击的具体实现)以空间换时间。但是,生成字典(彩虹或其他)需要很多时间。只有当它可以用于多个哈希时才值得。盐可以防止这种情况。盐不需要是秘密的,它只需要对于给定的密码是不可预测的。这使得攻击者为该特定盐生成字典的机会小到可以忽略不计。

于 2009-05-02T18:55:07.007 回答
2

“我想出的唯一一件事是,你可以重新散列数千次哈希,并将创建最终彩虹表所需的时间增加 1000 倍。”

这不正是基于 Blowfish 的BCrypt哈希的意义所在吗?增加计算哈希所需的时间,以便暴力破解(和彩虹表创建)变得不可撤销?

“我们提出了两种成本可调的算法(...)”

有关自适应成本哈希算法的更多信息:http ://www.usenix.org/events/usenix99/provos.html

于 2009-05-02T18:38:00.790 回答
1

如何采用“胡椒”的想法并在专门用于散列密码的单独服务器上实现它 - 并锁定,除了这个简单且尽可能安全的服务 - 甚至可能设置速率限制以防止滥用。为攻击者提供了另一个需要克服的障碍,要么获得对该服务器的访问权限,要么对胡椒、自定义 RNG 和明文扩展算法进行逆向工程。

当然,如果他们可以访问所有内容,他们可以在一段时间内偷听用户活动......

于 2009-05-02T18:42:43.867 回答
1

嗯...好吧,我对此的看法:

  • 您无法从哈希中取回原始密码。我有你的哈希值,我可能会找到一个适合该哈希值的密码,但我无法登录使用此密码的任何其他站点,假设它们都使用盐。这里没有真正的问题。
  • 如果有人让您的数据库甚至您的网站来获取您的配置,那么无论如何您都搞砸了。
  • 对于管理员或其他超级帐户,实施第二种验证方式,即将登录限制在某些 IP 范围内,使用客户端 SSL 证书等。
  • 对于普通用户,您将没有太多机会。您使用他们的密码所做的一切都需要存储在某个配置或数据库中,所以如果有您的网站,我也有您的魔法蛇油。
  • 强密码限制并不总是有效。一些网站要求密码包含数字字符 - 因此,大多数用户在他们常用的密码上加 1。

所以我不完全确定你想在这里实现什么?在用户密码前面添加一个 Salt 并使用第二种身份验证方式保护管理员帐户似乎是最好的方法,因为用户根本不会选择正确的密码并且也不能被迫选择。

于 2009-05-02T18:51:45.577 回答
-1

我希望有人可能有解决方案,但遗憾的是,当我第一次发布问题时,我的情况并没有好转。似乎没有什么可以做的,只能找到一个耗时的算法或重新散列 1000 次以减慢生成彩虹表(或暴力破解)散列的整个过程。

于 2009-06-18T22:56:52.270 回答