胖蔡说技术
随便扯扯

什么是彩虹表?(MD5解密策略)

MD5 算法是一种单向哈希函数,它不可逆,因此无法“自动”解密 MD5 哈希。但是,当前的技术允许我们使用不同的策略来破解 MD5 哈希值并找到原始单词。使用彩虹桌就是其中之一,这就是我将在本文中介绍的内容。

彩虹表是预先生成的文件,经过优化以加快破解速度。它包含像字典一样的所有单词,但也包含等效的哈希值。它们占用更多磁盘空间,但使用速度更快。在本文中,我们将了解为什么它是一个好的策略、它是如何工作的以及如何生成它们。

 

彩虹表有什么用?

彩虹表是包含散列及其密码等价物的计算文件。使用彩虹表是黑客用来破解密码并从存储在数据库中的散列值中找到它们的明文版本的一种常见攻击。

提醒一下,密码通常不会以明文形式存储在网站数据库中。大多数情况下,开发人员会设置一些安全层,以避免在数据库被盗时出现任何重大问题。MD5 是过去最常用的哈希函数之一。其它算法现在被使用,因为MD5为什么不是安全的要做到这一点,但这个想法是一样的。

黑客可以使用不同的策略来破解密码(字典、暴力破解和彩虹表是最常见的)。在本文中,我们将重点介绍彩虹表攻击,但如果您也有兴趣,可以在本网站上找到有关其他攻击的说明。

 

 

彩虹表攻击如何工作?

彩虹表攻击将使用包含哈希及其纯文本等价物的预生成文件来破解存储在数据库中的密码。如果数据库中的哈希值与彩虹表中的哈希值匹配,则现在可以进行身份​​验证,密码已被破解。

像 RainbowCrack 这样的工具经常被用来生成和使用那种表格(见下一个问题)。生成过程很复杂,但这些工具会很有帮助,并且一旦生成表就很容易使用,简而言之:

  • 在网站数据库中标识了一个哈希值
  • 黑客运行搜索命令,查看彩虹表中是否存在哈希
  • 如果匹配,黑客现在可以访问用户帐户

彩虹桌越大,匹配的机会就越大。

如何生成彩虹表?

生成彩虹表最简单的方法是使用工具名称 RainbowCrack。它在 Windows 和 Linux 上可用,可以为不同的哈希算法(包括 MD5、SHA1 和 SHA256)生成表。

要生成表,您需要使用 rtgen 命令。需要几个参数:

  • 算法:例如MD5是彩虹表中常用的算法
  • 字符集:它应该在文件中生成什么样的单词(数字、小写字母数字、特殊字符等)。
  • 单词长度(最小和最大)。
  • 表生成函数
  • 最后一个参数是告诉你是否要将文件拆分成几个小文件

根据这些参数,生成将花费或多或少的时间。生成彩虹表后,您可以使用 RainbowCrack (rcrack) 中包含的另一个命令来检查表中是否存在特定的哈希值。
这是一个带有 MD5 哈希的示例:

99666b497f4bd11

可以看到,我的基本密码(“abcd”)已经在我的彩虹表中找到了,此时破解成功,工具自动停止。

彩虹表有多大?

彩虹表的大小将在几兆字节到几拍字节之间,具体取决于使用的字符集和密码长度。例如,一个只有 7 个字符的小写字母表将需要 35 MB,而一个 8 个字符的字母数字表将需要 1 TB。

通过使用 RainbowCrack 中的不同选项,可以调整结果以确保它适合您的硬盘驱动器或服务器。但基本上,如果您有兴趣以足够的规模进行测试,请确保您拥有大磁盘。如果您没有空间容纳超过 7 个字符的密码,暴力破解可能是更好的策略

针对彩虹表攻击的最佳防御是什么?

作为一般规则,对任何攻击(包括彩虹表)的最佳防御是使用长密码,以最小的复杂性级别并使用强算法和盐将它们存储在数据库中。密码越长,破解它们就越难。

即使它有帮助,复杂性并不是减缓黑客速度的最重要因素,长度才是。如本文所述,8 个字符的密码和 10 个字符的密码的攻击持续时间存在重大差异。

用户需要使用更长的密码,即使密码短语不是太明显也很好,如果黑客访问数据库,开发人员必须使用盐来限制任何重大问题(显然是在其他安全措施之上)。

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » 什么是彩虹表?(MD5解密策略)
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏