RAR密码,为什么彩虹表不起作用?

Fra*_*kie 5 encryption passwords rainbowtable

我一直在寻找加密,我已经看到Rainbow Tables的几个实现就像密码上的魅力(比如说windows).

我还没有看到对RAR文件执行Rainbow攻击.为什么会如此.是什么让RAR加密更加安全并且不受这些攻击的影响?

Gil*_*il' 15

彩虹表是反转散列函数的优化:当你拥有的所有东西都是它的散列时找到密码.虽然这里并不是绝对必要,但我建议阅读什么是彩虹表以及它们是如何使用的?这有一个非常好的解释,清除了一些常见的误解.

RAR加密有两个部分(或几乎任何使用密码加密某些数据的部分).首先,使用密钥导出函数(KDF)从密码导出加密密钥.然后,加密密钥用于加密或解密数据.

即使KDF是哈希函数,彩虹表也无济于事:攻击者没有KDF的输出.使用密码进行身份验证时,KDF的输出将存储在数据库中.当密码用于加密时,KDF的输出是密钥,这是攻击者所追求的密钥.

无论如何,彩虹表只能帮助抵御无盐的哈希.WinRAR 使用包含盐的良好KDF(PBKDF2).

KDF将可变长度字符串转换为固定大小的键.KDF的一个关键属性是它必须将输入字符串与不同的键区分开来.一个加密散列函数(SHA-1,SHA-256,...)实现这一目的.当输入字符串是人工提供的密码时,哈希函数本身无法实现另外两个重要属性:

  • 如果两个人选择相同的密码,他们最终不能拥有相同的密钥.
  • KDF的计算速度一定很慢,因此攻击者无法通过暴力找到密码.

盐达到了第一个属性.第二个属性是通过这样的方式实现的:获取密码,附加盐,散列批次; 拿这个哈希,追加盐,散列很多; 重复多次.

彩虹表是通过"单向"函数计算前映像的优化:在一个方向上易于计算但几乎不可能反转的函数,即给定x很容易计算y = f(x)但是给定y除了以某种方式猜测x和检查之外,没有已知的方法来找到x使得y = f(x).散列函数是这样的.使用对称密钥进行加密不是这样的:攻击者无法计算f而不是计算其逆数.因此,彩虹表无法帮助打破对称加密.


And*_*per 6

彩虹表用于解码哈希,而不是加密.彩虹表只是一组预先计算的哈希值,用于某些可能的输入.

因此,如果您为每个可能的Windows密码预先计算哈希值,那么当您想要恢复未知密码时,您需要的只是SAM数据库中的哈希值,然后在彩虹表中查找.然后,彩虹表会为您提供一个与该哈希对应的密码.密码盐很复杂,但这是基本的想法.

彩虹表无法打破加密.从理论上讲,你可以为所有可能的键和所有可能的纯文本输入预先计算所有可能的密文 - 但是你可能需要更多的比特来存储这些数据而不是宇宙中的原子,更不用说这些原子会在你到达那里之前可能已经沸腾了.只是强行关键,它会更快(虽然仍然过于缓慢).