估计彩虹桌的大小

信息安全 密码学 密码 哈希 密码分析
2021-09-01 05:47:40

什么是彩虹表,它们是如何使用的?给出了关于彩虹表是什么以及如何使用它们的非常精确的答案。我总是混淆哈希表和彩虹表。我的问题是关于彩虹桌的大小。现在,对于哈希表,文件的大小为:

n = ( size of the input plain text file )(假设每个纯文本一行)

所以 size(hash table) = n + (bytes in hash)*h + n ( for separation) Bytes

另一方面,是否有类似的机制来估计彩虹表的大小?我确信有,因为用于生成彩虹表的工具通常会对它们进行大小估计。

彩虹表的大小是如何估计的,给定:

字符集、链长、纯文本的最小和最大长度。

这将更好地理解彩虹表如何以及为什么更好。

2个回答

RainbowCrack可能是您用来生成彩虹表的工具。彩虹表总是在一个键空间上生成,例如 5-9 字节长的字母数字和链长度和计数,这将影响生成表的速率和大小。如果您有输入文件,那么它不是彩虹表,而是其他查找表。彩虹表是一种特殊类型的查找表,具有简洁的属性。例如散列函数(sha256vs sha512)的大小不会影响彩虹表的大小。

有一些 matlab 脚本可以计算彩虹表的大小,但是这个站点更容易使用

彩虹表的特点是它的平均链长它是在表构建时选择的参数。我们称之为t

如果该表包含大约N个暂定密码,那么它将具有大约N/t个“条目”的大小,其中一个条目是“链端”。链端的编码大小取决于很多细节,但它通常与可以保存整数值N的字段一样大或稍大一些换句话说,如果N接近 2 40,每个条目将需要至少 5 个字节,但可能会多一点,比如 8 个字节。

为了节省存储成本,您需要使t尽可能大。然而,你不能把它做得像你想要的那样大,因为它会增加其他成本。简要说明:

  • 表成本约为散列函数的1.7*N次评估。
  • 存储成本N/t链端
  • 攻击时的CPU 成本约为散列函数的t 2 次评估。
  • 攻击时查找成本大约是表中的t次随机访问。

现代硬盘每秒允许大约 100 次查找,所以如果你想保持攻击时间低于一分钟,你不能让t高于 6000。如果你使用 SSD,你可以有更高的t(允许数千每秒随机访问),但存储成本增加,因为 SSD 非常昂贵。此外,如果t变得太高,二次 CPU 成本可能会变得过高。

之前存在彩虹表(Hellman 的时间记忆权衡)与混合了 Hellman、Oechslin、Rivest、Biham 和其他一些想法的现代变体之间的差异在 CPU 和查找费用。