为什么直接暴力破解密码而不是密钥?

信息安全 加密 密码 蛮力 md5 kdf
2021-09-03 06:59:06

一位非常知名的用户对另一个关于安全 stackexchange的问题的回答解释了为什么他更喜欢 GnuPG 而不是 OpenSSL 进行文件加密。据我了解,可以总结为:

使用 OpenSSL 时,使用的加密密钥是从 MD5(密码+盐)派生而来的,只有一次迭代。因此,攻击者很容易暴力破解密码并获取加密密钥。

我的问题是:为什么攻击者要直接暴力破解密码而不是密钥?例如,如果密钥长度为 128 位,而我的密码长度为 16 个字符(128 位),则我的 (password+salt) 已经比加密密钥长。这意味着直接暴力破解加密密钥而不是密码实际上更容易,并且密钥派生函数中的迭代次数无关紧要。

但是上面给出的答案通常被链接为许多其他类似问题的参考,并且来自知名用户。那么我推理的缺陷在哪里?

1个回答

暴力破解密钥与暴力破解密码

暴力破解密钥

要直接暴力破解密钥,我需要不断猜测密钥并尝试用它解密加密文件,直到最终文件正确解密。在没有任何额外信息的情况下,我需要随机尝试 2 128个可能的键值。

平均而言,我需要做 2 128 / 2 = 2 127次猜测。顺便说一句,这是一个巨大的数字!物理缩减:在低功耗嵌入式设备上,一条 ARM 汇编指令(ADD、SUB、XOR、...)每条指令消耗大约 300 pJ ~= 3.0x10 -10焦耳。太阳包含大约 1.2x10 44焦耳的核燃料。假设我们可以猜出一个密钥并尝试在单个 ARM 指令中解密文件(这是香蕉,您正在查看数百万条指令以获得一个合理大小的文件),那么进行这种蛮力攻击将需要消耗 2x10 15颗星是的,2 127是一个巨大的数字。祝那次蛮力攻击好运。希望你有一个好的电费。

暴力闹剧密码

密码的长度仅在 16 字符密码比 8 字符密码具有更多可能的组合来猜测的情况下才相关。虽然您的 16 个字符的密码可能需要 128 位的磁盘空间,但它肯定不是 128 位的安全性。对于初学者来说,只有95 个可打印的 ASCII 字符,因此对于只使用键盘字符(没有重音符号、表情符号等)的密码,您最多只能看到 95 16 ~= 2 105 个可能的 16 字符密码来猜测。最重要的是,我们知道互联网上 30% 的帐户的密码来自前 10,000 个密码 [来源],因此如果您是这 10,000 个密码中的一员,长度实际上是无关紧要的。

把它放在一起

暴力破解密码,如果这是一些随机的互联网用户(即他们以普通互联网用户的方式发明密码),那么你有 30% 的机会在前 10,000 次猜测中破解它。如果我直接暴力破解密钥(不使用任何额外知识),那么我有 0.0000000000000000000000000000000003% (3x10 -35 ) 的机会在前 10,000 次猜测中破解它。

基本上,密码比密钥弱,因为人脑是愚蠢且可预测的。如果您的密码来自随机生成器,那么这是一个完全不同的故事,因为它实际上更像是一个密钥而不是密码。