首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高的PKBDF SHA1 1迭代计数在多大程度上弥补了弱的口令熵?

高的PKBDF SHA1 1迭代计数在多大程度上弥补了弱的口令熵?
EN

Cryptography用户
提问于 2021-10-11 06:47:37
回答 1查看 283关注 0票数 1

2019年底丢失了一台LUKS加密的笔记本电脑,现在正试图找出一个非常老练的攻击者能够入侵的可能性。

LUKS容器创建于2017年年中,具有LUKS1默认设置。

当时我使用的CPU是英特尔的Corei7-6700K,我仍然拥有它。

我使用cryptsetup benchmark运行了一些基准测试,为PBKDF2-sha1生成了以下值。

代码语言:javascript
复制
PBKDF2-sha1      1659139 iterations per second for 256-bit key

我不记得我使用的确切密码(我的密码太多了),除非它至少有14个字符长,并且包含a-z0-9,而且它不包含在任何字典中(选中rocyou2021.txt)。

我在GitHub上使用Nvidia GeForce RTX 3090找到了一个基准表。

代码语言:javascript
复制
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年的时间。

我的问题是:

  1. 考虑到对现代GPU的蛮力或字典攻击,相对较高的迭代计算在多大程度上补偿了我的密码的相对弱熵?
  2. 我的分析中有没有遗漏任何重要的细节?
EN

回答 1

Cryptography用户

发布于 2021-10-11 09:09:06

您的密码空间不小,36^{14}是非常强的密码,这是72位的熵。

小密码空间是通过字典攻击完成的,包括带有转换的字典。即使是XKCD方法也只能保证44位熵。

您不太可能记住一个随机的14字符密码,所以如果您使用的是密码管理器,并且使用的是强随机密码,那么即使是相当弱的KDF也足够了。

但是,对于例如44位熵,这只会导致在你提到的GPU上的几百个小时,而大多数人认为这是不够的。

您可以增加迭代次数,但请记住,攻击者有优势,可以执行批处理,会执行切分,以及GPU和FPGA。我认为假设攻击者拥有x1000甚至x10K优势的经验法则是合理的。如果您使用内存硬KDF,您可能会减少这一点,并承担一个较小的优势(例如100倍)。当增加迭代次数时,您也会放慢速度,并且需要确保用户体验和您自己的计算成本保持合理。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/95526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档