彩虹表是用GPU还是CPU运行?

问题描述 投票:0回答:2

我知道彩虹表,但这个问题是在面试时问我的,我无法回答。所以我的问题是,正如标题中所说,我想知道彩虹表使用 GPU 还是 CPU。以及原因。预先感谢您!

我对此做了一些研究,但一些资源说彩虹表使用 GPU,有些说同时使用 CPU,有些说两者都使用。所以我需要一个明确的答案。

hash gpu cpu rainbowtable
2个回答
1
投票

答案是两者都不是。原因是我们谈论的是彩虹表,即具有特定内容的数据结构,并且通过术语“运行”,我们用一种生成彩虹表或搜索彩虹表的算法来扩展此主题另一方面,我们谈论硬件,即 GPU 与 CPU。

我们先来了解一下什么是彩虹桌。

简单地说,彩虹表是一个将所有可能的键与其值映射的表(想想哈希)。在此处查看更多信息:https://www.techtarget.com/whatis/definition/rainbow-table

它本身并不运行,就像默认情况下文件不运行一样。但对于彩虹桌,你可以做一些事情。

首先,您可以生成它们,也就是说,您可以循环所有可能的值,运行您想要为这些输入映射的哈希算法并将结果存储在某处。

其次,您可以通过值(通常是哈希值)搜索键。

因此,正如我们所看到的,关于彩虹表已经有两个主要操作,并且可以想象进一步的操作,例如对这些表建立索引以便可以快速找到值等。

现在,CPU 和/或 GPU 是执行算法的媒介。您说的是破解密码,因此,从技术上讲,CPU 和 GPU 都可以用于此任务。然而,您可能打算通过在更快的硬件上运行较慢的算法来加快其处理速度,这就是为什么黑客可能会选择使用 GPU 而不是 CPU 来运行彩虹表的生成和索引。然而,CPU 也完全能够胜任这项任务。至于搜索,这是比生成完整映射更轻量级的操作,因为您只查看值的相等性,也可能使用索引,而不是对所有可能的值运行哈希算法。


0
投票

您需要将破解阶段与创建阶段分开考虑。

创建阶段在 GPU 上运行得非常高效,因为它非常简单。您需要生成大量由交替哈希和归约函数组成的长链,并将第一个和最后一个元素存储在表中。哈希计算和写表之间的比例很大,因此写表不会减慢 GPU 的速度。

破解需要大量查表。事实上,您将生成许多长度不断增加的链,并且您需要在表中查找每个链的末尾。因此,破解主要受到内存或文件访问带宽的限制,并且 GPU 相对于 CPU 不会有很大的优势。

确切的性能取决于您的桌子的参数(链条的数量和长度)。这很大程度上取决于您是否可以将表放入 RAM 中,还是必须将其存储在磁盘上。

请注意,您(或其他人)只需创建表一次。

© www.soinside.com 2019 - 2024. All rights reserved.