我正在做一个 uni 项目,我必须展示工具“开膛手约翰”以及“彩虹表”的用法。
我玩弄了“开膛手约翰”的不同模式,并搜索了“彩虹桌”的概念。
问题是我无法理解这两者是如何连接的,如果可能的话,我如何在密码哈希的解密中使用我自己的“彩虹表”?
我正在做一个 uni 项目,我必须展示工具“开膛手约翰”以及“彩虹表”的用法。
我玩弄了“开膛手约翰”的不同模式,并搜索了“彩虹桌”的概念。
问题是我无法理解这两者是如何连接的,如果可能的话,我如何在密码哈希的解密中使用我自己的“彩虹表”?
它们解决了相同的问题,但方向相反:
像 JtR 这样的密码破解软件会动态地对大量候选明文列表进行散列处理,直到找到产生与目标散列匹配的散列的明文。如果没有候选明文产生匹配,则原始明文未被发现且散列未被“破解”。
彩虹表将给定的散列与预先计算的散列的大(但有限)列表进行比较。如果彩虹表中不存在匹配的哈希,则无法使用该表发现明文。
这是经典的“时间/内存权衡”概念。破解需要更多的计算能力和时间,但需要更少的存储空间。彩虹表需要更少的计算能力和时间,但需要更多的存储空间(通常为 TB 大小)。
而且由于现代 GPU 每秒可以尝试数十亿次未加盐的候选密码,彩虹表仅在非常特定和受限的一组情况下比基于 GPU 的攻击更有用:
因此,除非您是一位具有特定知识的渗透测试者,即高价值密码是随机生成的,但也相对较短(这在实践中很少见),否则彩虹表在很大程度上已经过时了。
为新目标动态“构建彩虹表”也没有任何意义,因为使用彩虹表的速度只有在构建完成后才能实现。您可以简单地更快地运行等效的 GPU 攻击......并且仍然有 4TB 的磁盘空间可用于其他用途。