-2

我正在做一个 uni 项目,我必须展示工具“开膛手约翰”以及“彩虹表”的用法。

我玩弄了“开膛手约翰”的不同模式,并搜索了“彩虹桌”的概念。

问题是我无法理解这两者是如何连接的,如果可能的话,我如何在密码哈希的解密中使用我自己的“彩虹表”?

4

1 回答 1

2

它们解决了相同的问题,但方向相反:

  • 像 JtR 这样的密码破解软件会动态地对大量候选明文列表进行散列处理,直到找到产生与目标散列匹配的散列的明文。如果没有候选明文产生匹配,则原始明文未被发现且散列未被“破解”。

  • 彩虹表将给定的散列与预先计算的散列的大(但有限)列表进行比较。如果彩虹表中不存在匹配的哈希,则无法使用该表发现明文。

这是经典的“时间/内存权衡”概念。破解需要更多的计算能力和时间,但需要更少的存储空间。彩虹表需要更少的计算能力和时间,但需要更多的存储空间(通常为 TB 大小)。

而且由于现代 GPU 每秒可以尝试数十亿次未加盐的候选密码,彩虹表仅在非常特定和受限的一组情况下比基于 GPU 的攻击更有用:

  • 密码的长度及其组成(是否需要特定字符等)是预先知道的,并且足够小,可以批量生成并存储在彩虹表中(通常不超过 9 或 10 个字符,具体取决于组成) )
  • 密码可能是随机生成的(因为大多数非随机生成的候选者,具有更大的长度和复杂性,可以在 GPU 上尝试)

因此,除非您是一位具有特定知识的渗透测试者,即高价值密码是随机生成的,但也相对较短(这在实践中很少见),否则彩虹表在很大程度上已经过时了。

为新目标动态“构建彩虹表”也没有任何意义,因为使用彩虹表的速度只有在构建完成后才能实现。您可以简单地更快地运行等效的 GPU 攻击......并且仍然有 4TB 的磁盘空间可用于其他用途。

于 2020-01-04T06:46:55.133 回答