6

让我们假设一个简单的非加盐哈希函数,只是一个普通的 old $hash = md5($pass)

前提:

  1. 密码散列全部发生在服务器端,散列存储在数据库中。客户无法看到这些。
  2. 彩虹表攻击必须知道哈希值才能检索密码。

鉴于前提 2.,这意味着黑客已经控制了数据库,此时您手头的问题要大得多。

因此,试图阻止彩虹表攻击只是为了保护从已经受损的数据库/系统中检索密码的目的。是这么简单还是我还缺少其他东西。

我已经熟悉密码散列技术,但我只是想知道为什么有这么多关于彩虹表的炒作。谢谢!

4

4 回答 4

10

是的。

许多人对所有事情都使用相同的密码。破坏原始密码(而不是简单地将其更改为您知道的密码)通常可以让攻击者访问其他服务上某人的帐户。

与字典攻击(需要散列)或蛮力(需要更多散列)相比,彩虹表的计算密集度(简单查找)也少得多。

使用强而独特的密码!

于 2011-05-12T19:28:02.067 回答
8
  1. 密码泄露不需要控制数据库。如果我闯入你的车并偷走一堆带有数据库转储的 DVD 怎么办?您确实备份了数据库,对吗?
  2. 如前所述,人们对多个站点使用相同的密码。HBGary 最近被 Anonymous 攻击时成为了受害者。一台具有 SQL 注入漏洞的服务器变成了更大的妥协。
  3. 如果我可以访问您的数据库 5 分钟并获取哈希值,那么我现在可以访问您的帐户,直到您更改密码。
  4. 盐很便宜。
  5. 无论如何,您都应该使用密钥派生函数,而不是盐。
于 2011-05-12T19:31:55.890 回答
3

大多数时候,从数据库中窃取数据是通过注入成功的。有时甚至是盲注。

在您的一个脚本中发现数据库注入漏洞的攻击者无法控制系统的其余部分,直到他能够检索某种更高的凭据(可能是管理员的密码)。

如果您(作为管理员)将您的密码与其他用户一起存储为一个简单的 md5() 哈希,并且攻击者设法检索它 - 他最终可能会通过使用彩虹表查找它来超越您的系统。

于 2011-05-12T19:41:40.627 回答
0

如果我理解正确,彩虹表消除了计算哈希的计算负担(故意很高),因此攻击速度更快。

于 2011-05-12T19:30:20.663 回答