理解彩虹表攻击

2025年4月11日 | 阅读 3 分钟

引言

在计算机系统中,密码通过加密哈希处理,而不是直接以简单文本保存。哈希函数是单向函数,无法解密。每次用户提供密码时,都会对其进行哈希处理并与先前保存的哈希值进行比较。如果输入的数据匹配,则用户通过验证。

彩虹表是一种数据库,用于通过破解密码哈希来获取身份验证。为了确定哪个明文密码生成给定的哈希,可以使用预先计算的简单密码及其相应哈希值的字典。只要许多文本生成相同的哈希,原始密码是什么并不重要;重要的是生成了哈希。

彩虹表攻击的工作原理?

彩虹表通过进行快速高效的密码分析来操作。与暴力攻击不同,暴力攻击通过确定每个现有字符串的哈希函数,在每个阶段将每个字符串的哈希值与计算机进行比较。通过哈希大量可用字符串,彩虹表攻击消除了这一步的必要性。这包括两个主要步骤

1. 创建表

在这种情况下,获取字符串的哈希,减少它,然后一次又一次地创建它。为了说明,让我们使用 MD5 哈希函数对前八个字符进行操作,以生成一个非常流行的密码 12345678 的表

  • 字符串最初通过 MD5 哈希算法处理。
    哈希 MD5(12345678) = 25d55ad283aa400af464c76d713c07ad
  • 通过删除除前八个字符之外的所有字符,我们可以最小化哈希。接下来,我们再次哈希它。
    哈希 MD5(25d55ad2) = 5c41c6b3958e798662d8853ece970f70
  • 直到输出链包含足够的哈希,才执行此操作。这表示一个从初始纯文本开始并以最终哈希结束的单个链。
  • 一旦我们获得了足够的链,我们就会将它们保存在一个表中。

2. 破解密码

首先验证哈希文本或密码是否存在于数据库中。如果是,则从链的开头开始哈希,然后继续直到找到匹配项。当找到匹配项并且身份验证被破解时,该过程结束。步骤如下流程图所示

Understanding the Rainbow Table attack

决策 1:哈希文本是否与任何链末尾的任何最终哈希匹配

决策 2:哈希文本是否与原始哈希密码匹配?

彩虹表攻击的优点和缺点

好处

  1. 由于所有内容都是预先计算的,因此应用哈希函数在这里不是问题,这与暴力破解不同。它简化为对表的直接搜索和评估过程,因为所有数字都已预先计算。
  2. 无需知道精确的密码。如果哈希匹配,即使文本看起来不是实际密码,也无关紧要。它将得到验证

缺点

  1. 存储表需要大量的存储空间。
  2. 它简化为对表的简单搜索和比较过程,因为所有数字都已预先计算。

防范彩虹表攻击

加盐方法涉及将随机数据与纯文本结合传递到哈希函数中,从而可以轻松避免彩虹表攻击。这通过确保每个密码都有唯一生成的哈希来防止彩虹表攻击,该攻击基于许多文本可以具有相似哈希值的想法。

关键拉伸是另一种防范预计算攻击的方法。盐、密码以及某些中间哈希参数多次通过哈希算法,以增加哈希每个密码所需的时间。密钥强化是另一种策略,它使用随机盐扩展密钥然后安全删除它,这与关键拉伸不同。这使得攻击者和授权用户都需要对盐值进行暴力搜索。因此,没有理由跳过加盐步骤。

结论

本教程旨在了解彩虹表,详细介绍了彩虹表攻击的工作原理、彩虹攻击的优缺点以及如何防范彩虹表攻击。