我暂时忘记了某个文件的密码,于是使用一款名为 KRyLack RAR Password Recovery 的软件尝试恢复密码。幸运的是(但不幸的是,在购买了这款软件后),我记起了密码,并能够打开文件。
我的问题是关于该软件每秒尝试密码的速度 - 完全出于好奇。我知道这可能与机器的速度有关,但我运行的是 i7,例如在其峰值时,该软件每秒会尝试 13 个密码。为什么会这样?我尝试了 3 个字符、4、5、9、10 个字符的长度,速度相同。这似乎是出于某种原因而强加的限制,这是由于 winrar 本身的一些限制,还是其他原因?
答案1
WinRAR 用于对保护加密密钥的密码进行哈希处理的算法 -PBKDF2-HMAC-SHA256:
6. Changes in RAR 5.0 encryption algorithm:
a) encryption algorithm is changed from AES-128 to AES-256 in CBC mode.
Key derivation function is based on PBKDF2 using HMAC-SHA256;
... 设计得很慢,特别是为了抵抗高速离线攻击......虽然 CPU 确实会慢一些:
$ hashcat -w 4 -O -b -D 1 -m 10900
hashcat (v4.1.0) starting in benchmark mode...
* Device #7: AMD FX(tm)-8350 Eight-Core Processor, 8034/32139 MB allocatable, 8MCU
Hashmode: 10900 - PBKDF2-HMAC-SHA256 (Iterations: 999)
Speed.Dev.#7.....: 21213 H/s (370.38ms)
... 比 GPU:
$ hashcat -w 4 -O -b -D 2 -m 10900
hashcat (v4.1.0) starting in benchmark mode...
* Device #1: GeForce GTX 1080, 2028/8113 MB allocatable, 20MCU
* Device #2: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #3: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #4: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #5: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #6: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
Hashmode: 10900 - PBKDF2-HMAC-SHA256 (Iterations: 999)
Speed.Dev.#1.....: 1222.0 kH/s (478.00ms)
Speed.Dev.#2.....: 1204.6 kH/s (484.15ms)
Speed.Dev.#3.....: 1213.5 kH/s (481.70ms)
Speed.Dev.#4.....: 1210.2 kH/s (482.47ms)
Speed.Dev.#5.....: 1220.8 kH/s (477.90ms)
Speed.Dev.#6.....: 1214.7 kH/s (480.94ms)
Speed.Dev.#*.....: 7285.8 kH/s
这些基准测试假设了理想条件。实际速度可能只有该速度的一半甚至更低,具体取决于攻击类型。
只要生成候选密码的速率足够高,并且由于算法本身及其工作因素(迭代等)而可能产生的本机每秒哈希值速率足够慢,候选密码的长度就不会影响猜测率。