我一直在寻找加密,我已经看到彩虹表的几个实现就像密码的魅力(比如 windows)。
我还没有看到对 RAR 文件实施 Rainbow 攻击。为什么会这样。是什么让 RAR 加密更安全且不受此类攻击的影响?
我一直在寻找加密,我已经看到彩虹表的几个实现就像密码的魅力(比如 windows)。
我还没有看到对 RAR 文件实施 Rainbow 攻击。为什么会这样。是什么让 RAR 加密更安全且不受此类攻击的影响?
彩虹表是对反转散列函数的优化:当你只有它的散列时找到密码。虽然这不是绝对必要的,但我建议阅读什么是彩虹表以及它们是如何使用的?它有一个很好的解释,可以消除一些常见的误解。
RAR 加密有两个部分(或几乎任何使用密码来加密某些数据的东西)。首先,使用密钥导出函数(KDF) 从密码导出加密密钥。然后使用加密密钥对数据进行加密或解密。
即使 KDF 是一个散列函数,彩虹表也无济于事:攻击者没有 KDF 的输出。当使用密码进行身份验证时,KDF 的输出就是存储在数据库中的内容。当使用密码进行加密时,KDF 的输出是攻击者所追求的密钥。
在任何情况下,彩虹表只有助于对抗未加盐的哈希。WinRAR使用包含盐的良好 KDF ( PBKDF2 )。
KDF 将可变长度的字符串转换为固定大小的密钥。KDF 的一个关键属性是它必须将输入字符串不同地映射到不同的键。加密散列函数(SHA-1、SHA-256、...)实现了这一点。当输入字符串是人工提供的密码时,散列函数本身无法实现的其他两个重要属性:
盐实现了第一个特性。第二个属性是通过执行以下操作来实现的:获取密码,附加盐,散列批次;取这个散列,附加盐,散列很多;重复多次。
彩虹表是一种通过“单向”函数计算原像的优化:在一个方向上易于计算但几乎不可能逆向计算的函数,即给定 x 很容易计算 y=f(x) 但给定 y除了以某种方式猜测 x 并检查之外,没有已知的方法可以找到 x 使得 y=f(x)。哈希函数是这样的。使用对称密钥的加密不是这样的:攻击者不能计算 f ,就像他不能计算它的倒数一样。因此彩虹表无法帮助破解对称加密。
彩虹表用于解码哈希,而不是加密。彩虹表只是一组可能输入的预计算哈希列表。
因此,如果您预先计算每个可能的 Windows 密码的哈希值,当您想要恢复未知密码时,您所需要的只是来自 SAM 数据库的哈希值,然后在彩虹表中查找它。然后彩虹表会为您提供与该哈希相对应的密码。密码盐使这变得复杂,但这是基本思想。
彩虹表无助于破解加密。从理论上讲,您可以为所有可能的密钥和所有可能的纯文本输入预先计算所有可能的密文,但是您可能需要比宇宙中的原子更多的位来存储这些数据,更不用说这些原子会在你到达那里之前可能已经沸腾了。只是暴力破解密钥会更快(尽管仍然非常慢)。
彩虹表有助于从加密哈希函数生成的哈希中恢复纯文本内容,但 RAR 文件对文件数据和标题使用 AES 加密。这是一种不同的动物。