2019年底丢失了一台LUKS加密的笔记本电脑,现在正试图找出一个非常老练的攻击者能够入侵的可能性。
LUKS容器创建于2017年年中,具有LUKS1默认设置。
当时我使用的CPU是英特尔的Corei7-6700K,我仍然拥有它。
我使用cryptsetup benchmark运行了一些基准测试,为PBKDF2-sha1生成了以下值。
PBKDF2-sha1 1659139 iterations per second for 256-bit key我不记得我使用的确切密码(我的密码太多了),除非它至少有14个字符长,并且包含a-z0-9,而且它不包含在任何字典中(选中rocyou2021.txt)。
我在GitHub上使用Nvidia GeForce RTX 3090找到了一个基准表。
Hashmode: 12000 - PBKDF2-HMAC-SHA1 (Iterations: 999)
Speed.#1.........: 9240.9 kH/s (47.48ms) @ Accel:16 Loops:499 Thr:1024 Vec:1
Hashmode: 12001 - Atlassian (PBKDF2-HMAC-SHA1) (Iterations: 9999)
Speed.#1.........: 923.3 kH/s (72.49ms) @ Accel:8 Loops:1024 Thr:1024 Vec:1
Hashmode: 22600 - Telegram Desktop App Passcode (PBKDF2-HMAC-SHA1) (Iterations: 3999)
Speed.#1.........: 328.7 kH/s (63.58ms) @ Accel:8 Loops:128 Thr:1024 Vec:1基于这些数字,我得出结论,GPU可以计算9249 kH/s 1000次迭代。如果迭代次数增加1659到1659139,那么GPU的速度就会下降到:\frac{9249 kH/s}{1659} =5575H/S,这意味着攻击者只能有效地检查每秒5575个密码。
基于字符集(a-z0-9,length=14)的可能密码是:36^{14}。为了简单起见,让我们把它切成两半,这就给我们留下了一个普通的例子:\frac{36^{14}}{2}=3*10^{21}。
这意味着攻击者平均需要\frac{3*10^{21}}{5575}=5*10^{17}秒才能找到正确的密码,这相当于3*10^{9}年。这意味着即使攻击者拥有100万个GPU,破解密码仍然需要300年的时间。
我的问题是:
发布于 2021-10-11 09:09:06
您的密码空间不小,36^{14}是非常强的密码,这是72位的熵。
小密码空间是通过字典攻击完成的,包括带有转换的字典。即使是XKCD方法也只能保证44位熵。
您不太可能记住一个随机的14字符密码,所以如果您使用的是密码管理器,并且使用的是强随机密码,那么即使是相当弱的KDF也足够了。
但是,对于例如44位熵,这只会导致在你提到的GPU上的几百个小时,而大多数人认为这是不够的。
您可以增加迭代次数,但请记住,攻击者有优势,可以执行批处理,会执行切分,以及GPU和FPGA。我认为假设攻击者拥有x1000甚至x10K优势的经验法则是合理的。如果您使用内存硬KDF,您可能会减少这一点,并承担一个较小的优势(例如100倍)。当增加迭代次数时,您也会放慢速度,并且需要确保用户体验和您自己的计算成本保持合理。
https://crypto.stackexchange.com/questions/95526
复制相似问题