我已经看到 NSA 每秒能够进行至少 1 万亿次(PGP 密码短语)猜测的估计,这意味着具有 80 位熵的密码平均需要 15,000 年以上的时间来猜测。然而,这个估计是从 2015 年开始的,几乎肯定已经过时了。到 2021 年底,今天有多少位熵是安全的?在未来十年左右的时间里,有多少比特会成为未来的证据?
密码应该有多少位熵才能合理地证明未来(10 年以上)?
我们目前认为 128 位的安全性应该足以满足当前和未来的需求。这在很大程度上是由于物理限制:使用理论上的最小能量来存储 2^128 位数据将需要比煮沸世界海洋所需的更多能量。
如果您使用的是密码管理器,这意味着使用 94 个非空白 ASCII 字符的 20 个字符的真正随机密码,如果您使用的是 Base64 字符,则为 22 个字符。如果您不使用密码管理器,您可能应该使用。
如果您想防止最不可能的情况,那么您可以使用具有 256 位熵的密码。我在可能的网站上执行此操作,并且由于我使用密码管理器,因此我无需记住它。
但是请注意,在许多情况下,攻击可能比蛮力攻击更容易。例如,入侵相关站点或服务可能比对密码进行暴力攻击更容易。话虽如此,在大多数情况下使用强密码很容易,所以没有理由不这样做。
每秒 1 万亿个密码听起来像是一个很好的经验法则,并且与我在 2015 年研究我的密码破解时间表时发现的数字(我发现每个节点估计每秒 230 亿个密码,这是合理的,因为 NSA 很容易拥有几十个节点)。
在计算这类事情时,我更愿意假设摩尔定律直接适用于裂纹效率(它每 18 个月翻一番)。自 2015-07-01(2015 年中点)以来已经有 2344 天,占 2015 年中以来 18mo 的 4.3 个周期,因此 2015 年的 1T pw/s 变为 2 4.3 = 19.4T pw/s。由于悲观主义适合这里,让我们将其四舍五入为 20T pw/s(科学计数法,2e13)。
在计算熵的破解时间时,假设攻击者将在所需尝试次数的一半内获得密码,因此熵为 80,即 2 80 个密码,可以在 2 80 pw / 2e13pw/s / 2 / 86400s/d / 365.25d/y = 957.7 年,2021 年 11 月升级到相同的集群大小。
我已经失去了用来确定如何计算每 18 个月升级一次的数学公式,但是快进十年更容易:2e13 × 2 10/1.5 = 2e15,增加了两个数量级。2 80 / 2e15 / 2 / 86400 / 365.25 = 9.58 年,预计在 2041 年左右出现裂缝。
然而,对于人类的记忆来说,80 的熵是非常难以处理的。Diceware(7776 个条目)将需要六个单词(对于熵 77,添加一个随机字母数字以使其成为 83)。使用标准拼写词典(100k 条目),您需要五个单词(对于熵 83)。使用随机可打印的 ASCII 字符,您需要 12 个(对于熵 78,13 个产生 85)。
那时,对于您使用的每个帐户,记住六个随机单词或十三个随机字符真的可行吗?
在允许它的帐户上使用身份验证器。对于大多数系统,这是多因素或 2FA。有时,有一个无密码登录,它自己使用 2FA 技术。对于大多数服务,加密身份验证应用程序提供了足够的安全性,我们将在不久的将来看到很多从密码的转变。更高安全性的问题(例如您的电子邮件、银行和密码管理器)仍然需要安全的身份验证系统和密码。
使用带有密码生成器的密码管理器,该密码生成器使用 16 个以上的随机字符,包括至少 1 个小字符、1 个大字符和 1 个特殊字符,产生 log₂(94¹³×26×26×32) = 99 的熵。要获得bk2204 ' s建议使用128 位熵,总共需要 21 个字符。
对于您无法放入密码管理器的项目(例如密码管理器的输入代码本身),我建议将 8 位字符的密码放在五字密码短语中的随机位置。使用生成器,人类非常不善于理解随机≠任意≠晦涩。例如,我刚刚打开 Bitwarden 并生成reversion junkie unknotted opposite litter密码短语和7!&CPc9T密码(需要一个大写、一个小写和一个特殊密码),然后我得到3一个 0-5 的随机数(echo $(($RANDOM%6))在 bash 中),所以我可以组合在第三个单词之后添加代码的那些:reversion junkie unknotted 7!&CPc9T opposite litter。编一个故事来记住单词并将代码写在钱包里的一张纸上。
这具有 log₂(100000⁵×94⁵×26×26×32×6) = 132 的熵。
不要完全信任您最信任的项目(PGP 密钥、银行、电子邮件等)的云连接密码管理器?生成随机的 16 字符代码并将它们保存为密码,然后生成另一个 5 字符代码,您将其写在钱包中,并附上关于它是什么的神秘线索。使用您的密码管理器填写登录表单后,将其附加到您的密码中。
请注意不要使用您不记得的计划将自己锁定在外,尤其是像银行这样的网站会在少量登录尝试后将您锁定在外。