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