整个范围 - 反向MD5查找

时间:2010-08-16 00:25:37

标签: encryption md5

我正在学习加密方法,我对MD5有疑问。

我看到有几个网站有'彩虹表'会给你反向MD5查找,但是,他们无法查找所有可能的组合。

为了知识,我的问题是:

假设,如果一群人考虑上限(例如5或6个字符)并决定为该范围内的所有值绘制整个MD5哈希值,则将结果存储在数据库中以用于反向查找。

1。你认为这样的事情很可能吗? 2。如果可以推测,这意味着什么样的资源规模? 3。据您所知,有没有公开或私下的尝试?(

我不是指具有基于字典的选择条目的表,而是将整个范围映射到一定数量的字符。

(我已经提到This问题了。)

4 个答案:

答案 0 :(得分:5)

  1. 有可能。对于少数角色,它已经完成。在不久的将来,对于大量的角色来说很容易。 MD5没有变得更强。

  2. 这是时间的函数。要反转整个6个或更少字符的字母数字空间,需要计算62 ^ 6个条目。这是56万亿MD5。现在,这是由一个坚定的小团体或政府容易做到的。将来,它可以在家用电脑上使用。但请记住,随着允许字符数或最大长度的增加,难度增加呈指数级增长。

  3. 人们已经完成了。但是,老实说,这并不重要 - 因为任何有半盎司意识的人都会使用随机的。如果您预先计算整个MD5空间并将其反转,那么这并不意味着如果有人正在使用密钥加强或好盐的话!阅读盐渍。

答案 1 :(得分:4)

5或6个字符很容易。 6 bytes 是可行的(即2 48 组合),即使硬件有限。

即,来自英特尔的简单Core2 CPU将能够在大约150个时钟周期内散列一个密码(假设您使用SSE2实现,它将在600个时钟周期内并行散列四个密码)。使用2.4 GHz四核CPU(这是我的PC,不完全是最新的机器),我可以尝试每秒2个 26 密码。对于这种工作,大规模并行架构很好,因此使用GPU是有意义的。对于大约200美元,您可以购买NVidia视频卡,速度大约快4倍(即每秒2个 28 密码)。 6个字母数字字符(大写,小写和数字)接近2 36 组合;然后尝试所有这些都是2 (36-28)秒,这小于五分钟。有6个随机字节,需要2个 20 秒,即不到两周。

这是CPU成本。如果您想加速实际攻击,则存储哈希结果:因此,每次攻击密码时都不需要重新计算所有这些哈希密码(但您仍需要执行一次)。 2 36 散列结果(每个16字节)表示1 TB。你可以购买100美元的硬盘。 2 48 哈希结果意味着存储空间的4096倍;在平原硬盘中,这将花费与房子一样多:对于普通的无聊学生来说有点贵,但对于大多数政府或犯罪组织来说都是可以承受的。

彩虹表是存储的优化技巧。粗略地说,每个 t 哈希结果只存储一个,而不必进行 t 查找和 t 2 每次攻击的哈希计算。例如,你选择 t = 1000 ,你只需购买四个硬盘而不是四千个硬盘,但每次你想要破解密码时你需要进行1000次查找和一百万次哈希(这将是如果你做的话,最多需要十几秒钟。

因此,您有两个成本:

  • CPU成本是关于完整密码空间的计算哈希值;使用表(彩虹与否)你必须做一次,然后可以为每个受攻击的密码重复使用计算工作。

  • 存储成本是关于存储哈希结果以便轻松攻击多个密码。硬盘不是很贵,如上所示。彩虹桌可以帮助您降低存储成本。

Salting通过预先计算的表(无论是彩虹表还是普通表)都无法实现成本分摊:表格是关于重复使用几个受攻击密码的预计算值,而盐会阻止此类回收。

通过定义散列过程不仅仅是单个散列计算,可以增加CPU成本;例如,您可以将“密码哈希”定义为在10000个密码副本的串联上应用MD5。这将使每个攻击者猜一个 千倍贵。它还使合法密码验证成本高出一千倍,但大多数用户都不会介意(用户只输入了密码;他无法确定密码验证是否需要10毫秒或10微秒)。

现代类Unix系统(例如Linux)使用“MD5”密码,其实际上结合了salting和迭代散列,如上所述。 (实际上,现代Linux系统可能会使用另一个散列函数,例如SHA-256,但这并没有改变太多。)因此预先计算的表无济于事,而且即时密码破解也很昂贵。具有6个字母数字字符的密码仍可在几天内破解,因为6个字符无论如何都是弱点。此外,许多较长的密码是可以破解的,因为事实证明人类开始是坏的记住密码;因此他们不会选择任何随机的字符序列,他们会选择具有一些“意义”的密码。这减少了可能的密码空间。

答案 2 :(得分:2)

它被称为彩虹表,它很容易被盐腌击败。

答案 3 :(得分:2)

  1. 是的,它不仅可能,而且可能以前完成了。

  2. 这取决于它们是映射整个可能的范围还是只映射一系列ASCII字符。假设您需要128位+6个字节来存储每个匹配项。这是22个字节。你需要:

    • 6.32 GB用于存储所有小写字母组合[a-z]
    • 405 GB以适用于所有字母组合[a-zA-Z]
    • 1.13 TB,适用于所有字母数字组合[a-zA-Z0-9]
    • 5.24 TB,适用于由字母,数字和18个符号组成的所有组合。
  3. 如你所见,它呈指数级增长,但即使是5.24 TB,对NSA或中央情报局这样的机构来说也没什么。他们可能已经做到了。

    正如其他人所说的那样,腌制可以很容易地击败彩虹桌,这几乎和哈希一样重要。阅读:Just hashing is far from enough - How to position against dictionary and rainbow attacks