📜  了解彩虹表攻击

📅  最后修改于: 2022-05-13 01:56:32.870000             🧑  作者: Mango

了解彩虹表攻击

什么是彩虹桌?

计算机系统中的密码不直接存储为纯文本,而是使用加密进行哈希处理。哈希函数是单向函数,这意味着它不能被解密。每当用户输入密码时,都会将其转换为哈希值,并与已经存储的哈希值进行比较。如果值匹配,则用户通过身份验证。
彩虹表是一个数据库,用于通过破解密码哈希来获得身份验证。它是明文密码及其相应哈希值的预计算字典,可用于找出哪个明文密码产生特定哈希值。由于不止一个文本可以产生相同的散列,因此知道原始密码到底是什么并不重要,只要它产生相同的散列即可。

彩虹表攻击是如何工作的?

彩虹表通过非常快速有效地进行密码分析来工作。与蛮力攻击不同,它的工作原理是计算每个字符串的哈希函数,计算它们的哈希值,然后在每一步将其与计算机中的哈希值进行比较。彩虹表攻击通过计算大量可用字符串的散列消除了这种需要。这有两个主要步骤:

创建表
在这里,一个字符串的散列被取出,然后被归约以创建一个新的字符串,它再次被归约,重复。例如,让我们创建一个最常见的密码表12345678 ,对前 8 个字符使用 MD5 哈希函数:

  • 首先,我们获取字符串并通过 md5 散列函数将其传递。
hashMD5(12345678) = 25d55ad283aa400af464c76d713c07ad
  • 我们只取前 8 个字符来减少散列。然后,我们重新散列它。
hashMD5(25d55ad2) = 5c41c6b3958e798662d8853ece970f70
  • 重复此操作,直到输出链中有足够的哈希值。这表示一个链,它从第一个纯文本开始,到最后一个哈希结束。
  • 在获得足够的链后,我们将它们存储在一个表中。

破解密码
从散列文本(密码)开始,检查它是否存在于数据库中。如果是这样,请转到链的开头并开始散列,直到匹配为止。一旦获得匹配,该过程就停止并且认证被破解。以下流程图解释了这些步骤:

彩虹表攻击的优缺点

好处:

  1. 与暴力破解不同,执行散列函数在这里不是问题(因为一切都是预先计算的)。由于已经计算了所有值,因此将其简化为仅对表进行简单的搜索和比较操作。
  2. 不需要知道确切的密码字符串。如果哈希匹配,则字符串是否不是密码本身并不重要。它将被验证。

缺点:

  1. 存储表需要大量存储空间。
  2. 由于已经计算了所有值,因此将其简化为仅对表进行简单的搜索和比较操作。

彩虹表攻击防御

彩虹表攻击可以通过使用技术轻松防止,盐技术是一种随机数据,与纯文本一起传递到散列函数中。这确保了每个密码都具有唯一的生成哈希,因此可以防止彩虹表攻击,其工作原理是多个文本可以具有相同的哈希值。

另一种有助于防止预计算攻击的技术是密钥拉伸。使用它,盐、密码和一些中间哈希值通过哈希函数多次运行,以增加哈希每个密码所需的计算时间。另一种方法,称为密钥强化,使用随机盐扩展密钥,但随后(与密钥拉伸不同)安全地删除盐。这迫使攻击者和合法用户都对盐值进行暴力搜索。因此,没有必要绕过加盐。