猜一个 15 个字符的密码有多贵,我应该担心吗?

信息安全 加密 密码 操作系统 磁盘加密
2021-08-25 08:27:41

我目前在 GNU/Linux(带有 xts 的 LUKS AES-256 变体之一)和 Windows 7(Truecrypt)上使用 AES 加密(在家),密码为 15 个字符(仅字母数字小写加 _)。

如果这足够了,还是改用更长的密码会更好。应该多长时间?最近查看 GPU 破解的结果我有点担心。问题是我不想选择密码太久,以至于我会忘记它并被锁定。

2个回答

快速计算:

首先我的假设:

我假设攻击者在两年内花费了 1,000,000 美元。他使用标准显卡,支付 10ct/kWh。

我假设 KDF 由 2*n SHA256 调用组成,其中 n 是迭代次数,并且可以在显卡上以与普通 SHA256 相似的效率实现。1

当前的显卡提供大约 6MHash/s/$ 和大约 4MHash/J。2

计算

  • 1 Hash 的电费:($0.10/kWh) / (4MHash/J) = 7*10 -15美元
  • 1 Hash 的硬件成本:1 / (6MHash/s/$ * 1yr) = 5*10 -15美元
  • 1 Hash 的总成本:1.2 * 10 -14美元
  • 1 美元的哈希值:8*10 13
  • 1,000,000 美元的哈希值:8*10 19

这对应于 66 位密码,受普通 SHA256 保护。TrueCrypt 使用 PBKDF2 进行 1000 次迭代,这给了我们 2000 倍的奖励,所以我们可以减去 11 位,我们得到 55 位。

结论

愿意花费 100 万美元的攻击者可以破解高达 55 位熵的 TrueCrypt 密码。估计你的秘密的价值,并适当地调整它。

一个老练的攻击者可能会使用定制硬件,这将使攻击更加便宜。但是我手头没有任何数字来说明每个散列需要多少能量定制硬件。

从 37 个不同字符中选择的长度为 15 的完全随机密码具有 78 位的熵,因此安全地超出了基于显卡的攻击范围。请注意,这仅适用于密码完全随机的情况。如果它具有一些可利用的结构,例如单词或键盘模式,则熵可能会大大降低。


1 PBKDF2 每次迭代使用 1HMac,而后者又具有 2 次哈希调用

2我将此基于比特币挖矿硬件比较,使用一个比特币哈希包含 2 个 SHA256 调用。

我快速浏览了LUKS 规范——这个链接不是最新的格式,你可能想检查一下。从那里部分引用,根据第 2.3 节的先决条件:

LUKS 需要处理来自键盘输入等熵弱源的密码。PKCS#5 的基于密码的密钥派生函数 (PBKDF2) 已被定义用于增强熵弱密码的安全性

Truecrypt 也使用 PBKDF2。

简而言之,LUKS 使用 PBKDF2 从您的键盘获取您的加密密钥。这个过程应用了盐来使生成通用彩虹表变得困难,并且在派生密钥时计算也很慢,使得每次检查都相对昂贵。

因此,15 个字符的密码应该没问题。PBKDF2 旨在保护此类密码。也就是说 - 如果可以的话,我总是建议使用不同的字符类别(也使用大写字母、标点符号、数字) - 任何增加密码的熵和长度的东西都是一件好事。