彩虹表攻击是否真的构成威胁?

6

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

前提:

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

鉴于前提2,这意味着黑客已经控制了数据库,在这种情况下,你会面临更大的问题。

那么,试图挫败彩虹表攻击的目的是否只是为了保护从已经被攻破的数据库/系统中检索密码?是这么简单还是我漏掉了什么。

我已经熟悉了密码哈希技术,但是想知道为什么彩虹表会引起如此大的轰动。谢谢!


1
考虑你的用户。你想向他们解释说他们所有的密码都被泄露了吗?只需要问问Gizmodo... - ircmaxell
4个回答

10

是的。

许多人在所有账户中都使用相同的密码。攻击者通过获取原始密码(而不是简单地更改为您所知道的其他密码)通常可以访问某个人在其他服务上的账户。

彩虹表的运算量也比字典攻击(需要哈希)或暴力破解(需要更多的哈希)要少得多,只需要进行简单查找。

请使用强大且独特的密码!


+1,我决定不会大量添加任何你所说的内容。 - user257111

8
  1. 密码被泄露并不需要控制数据库。如果我闯进你的车里,偷走一堆带有数据库转储的DVD,你备份了数据库,对吧?
  2. 正如提到的那样,人们在多个网站上使用相同的密码。HBGary最近被Anonymous黑客攻击时就成为了受害者。一个具有SQL注入漏洞的服务器变成了一个更大的威胁。
  3. 如果我能够在五分钟内访问你的数据库并得到哈希值,那么我现在可以访问你的账户直到你修改密码。
  4. 盐是廉价的。
  5. 无论如何,你都应该使用密钥派生函数,而不是盐。

你应该在密钥派生函数中使用盐。事实上,PBKDF2需要一个(用于基于密码的密钥的标准派生函数)... - ircmaxell
谢谢你提出的第一点建议,我没有考虑到。是的,我备份了我的数据库 :) 我也同意你的第四点和第五点。 - Kenny Cason
@ircmaxwell -- 是的,我表达得不够清楚。我的意思是“不仅仅是盐”。 - Dietrich Epp

3
大多数情况下,从数据库中窃取数据的成功是通过注入实现的;有时甚至是盲注入。
攻击者在您的脚本中发现数据库注入漏洞后,直到能够检索到某种更高的凭据(可能是管理员的密码),才能控制其余系统。
如果您(作为管理员)将密码存储为简单的md5()散列值以及其他用户,则攻击者成功检索该散列值后,可以使用彩虹表进行查找,最终接管您的系统。

0

如果我理解正确,彩虹表可以消除计算哈希值的计算负担(这是故意设置得很高的),因此攻击速度更快。


1
实际上,计算哈希应该是非常低负担的(事实上,在选择良好的加密强度哈希函数时,这是其中一个标准之一,即它要)。你所说的负担是因为有太多的可能性要尝试,而不是每个可能性都很昂贵(事实上,一些破解器可以每秒哈希超过1500万个密码)。这就是为什么您应该拉伸您的密钥,使它们变得更慢以抗击暴力破解... - ircmaxell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接