我们都需要时刻警惕,创建在数学上固若金汤的密码。如果您是成千上万个在密码中使用姓名和出生日期(新窗口)的人之一,那么现在绝对是时候加强登录安全了。

在本文中,我们将解释如何估算和提高密码熵,这对您的在线安全大有裨益。但这也需要权衡:将密码的熵最大化,基本上意味着您自己根本记不住它。一如既往,有一幅 XKCD 漫画(新窗口)恰如其分地概括了这个问题。

考虑到我们注册的在线服务数量之多(至少有几十个),普通人几乎不可能为每个服务都牢记一个强密码。

正因如此,我们建议使用像 Proton Pass 这样的密码管理器,它可以生成熵值极高的密码,并为您记住和自动填充这些密码。

下文将解释密码熵的含义、如何计算密码熵,以及它如何影响密码强度。这可以帮助您在密码管理器中选择最安全的设置(或避免登录那些需要使用熵值极低密码的服务)。

“密码熵”是什么意思?

密码熵指的是您的密码或短语有多不可预测,以位为单位衡量。通常,熵的位数越多,密码就越复杂,也就越难通过暴力破解攻击攻破。

暴力破解攻击者会使用试错法来猜测登录凭证、密码和加密数据中的字符组合。

例如,许多黑客使用复杂的脚本和机器,在几分钟内自动完成数千次密码猜测。在最令人大开眼界的一个案例中,研究人员每秒处理了多达 350 十亿次密码猜测(新窗口)。

攻击者利用暴力破解攻击快速破解弱密码。通过测量并重视密码的熵,您可以帮助防止这些数据落入不法之徒手中。

密码熵如何影响密码强度?

有多种因素会影响密码的熵,进而影响其强度。您需要考虑密码的以下方面:

  • 长度(以字符数计)
  • 是否使用大写和小写字母
  • 是否使用数字字符
  • 是否使用特殊符号

在上述所有因素中,密码长度最为重要。足够长的密码几乎可以抵御任何暴力破解攻击。您还可以通过使用随机的大写字母、特殊符号和数字来进一步提高熵值。

然而,熵不仅仅取决于密码看起来有多长或多复杂,还取决于它的创建方式。真正随机的字符串比常用单词或短语具有高得多的熵,即使两者的长度相同。

如果您在密码中使用了可识别的单词或常见短语,黑客就可以利用字典攻击来猜测您的凭证。

字典攻击者会自动进行暴力破解,猜测密码中可能使用的词典里的每个单词。

因此,无论密码的熵有多高,如果您在登录详细信息中使用宠物名字、球队名称或其他常见密码(例如,切勿使用“password”),仍然面临被黑客攻击的风险。

如何计算密码熵

我们将解释如何计算密码熵,但需要注意的是,这只是一种演示。您无法仅凭密码的外观可靠地估算其熵值。人工创建的密码——即使是长密码——通常也极易被预测。除非密码是由随机生成器创建的,否则您应假定其熵值低于您的预期。

假设您使用的是随机字符串,密码熵以位为单位衡量,并取决于两个主要因素:

  1. 为密码选择的字符范围中可用字符的数量
  2. 密码中的字符数量

因此,密码越长,可能的字符范围越广,密码熵就越高。像 kmXz2=zs[m%7?y4A 这样使用大写字母、小写字母、符号和数字的长密码将具有非常高的熵。

只使用小写字母或数字的密码,如 dzormybs 或 119022833,其熵值会非常低。

密码短语更容易记住,但必须谨慎对待。要达到相似的熵值水平,密码短语必须更长。例如,像 HelpFidoSaveChocolate33! 这样的密码短语看起来很复杂,但由于它使用了四个常见的英文单词,且结尾是可预测的数字符号组合,其实际熵可能更接近 50 位。尽管 kmXz2=zs[m%7?y4A 比它短八个字符,其熵值却远高于这个密码短语。

什么是熵位?

熵位衡量密码被破解的难度。例如,您已经知道的密码,其熵为零位。

通过公式,我们可以计算出密码包含多少熵位,进而计算出攻击者的脚本或机器需要猜测多少次才能获得访问权限。

不过,在计算密码熵之前,我们需要先测量所有各种可能的字符范围。

测量字符范围

下表演示了当您使用英文书写时,在密码中加入不同字符会如何增加您的字符选项。字母和符号的数量可能因您使用的语言而异。

字符类型示例 (s)范围大小
数字0, 1, 2, 310
拉丁字母(小写)a, b, c, d26
拉丁字母(大写)A, B, C, D26
特殊符号!, @, %, $32

您为潜在黑客提供的潜在字符选择越多,密码熵就越高。因此,请优先考虑尽可能广的字符范围,并混合使用所有四种类型。

以下是一些示例密码及其总字符范围:

示例总字符范围
11223310
abcde26
a1b2c3d436
a1B2c3D462
a1!B2%c3^D494

请记住,上述数据显示的是字符范围的潜在大小,而非熵位。我们需要使用特定的公式来计算密码的精确熵位数。

密码熵公式

您可以使用以下公式以位为单位测量密码的熵:

E = L × log2(R)

在此公式中:

  • E 是您的密码熵
  • R 是密码中可能的字符类型范围(如上表所示)
  • L 是密码中的字符数量(即长度)
  • Log2 回答的是“2 的多少次方等于这个数”的问题

使用此公式,以下是一些示例密码以位为单位的测量结果:

示例字符范围密码长度计算熵位数
fygwcbjnhsbh2612 个字符。E = 12 x 4.756.4
HzgNhHkY1WQ8AM6214 个字符。E = 14 x 5.9583.3
kmXz2=zs[m%7?y4A9416 个字符。E = 16 x 6.55104.8

计算表明,密码越长、越复杂,其熵位数就越多。

请记住,这些计算仅适用于随机生成的密码。使用常用单词的密码短语必须更长,并使用不常见、互不相关的单词(最好再加上数字和符号)才能达到类似的安全水平。

另外请记住,这些计算更多是用于演示,而非实际使用。您应该依靠密码生成器,而不是自己尝试计算密码的强度

您可以使用我们免费的密码生成器进行试验,看看不同密码的强度如何。

再次强调,熵只是衡量强度的一个指标。为避免字典攻击,请避免使用常用的密码或短语。您还应避免在密码中使用个人信息,例如出生日期、宠物名字或街道名称,因为攻击者可以获取这些信息。

什么样的密码才算是强密码?

一般来说,强密码或高熵密码的熵值至少为 75 位。低于 72 位的密码对机器而言相当容易破解。

我们使用 2 ^(位数)这一计算方法来计算潜在猜测的最大次数。它表示数字 2 需要翻倍多少次才能达到总位数。

例如,熵为 10 位的密码,按 2 ^ 10 计算,最多需要 1,024 次猜测才能破解。这通常是像 456 这样的三位数字密码。

若要创建强密码,应力求熵超过 100 位,并尽可能高。熵越高,机器通过暴力破解猜出正确密码所需的时间就越长。

关于创建高熵密码的规则,不同的安全专家说法大相径庭,但有几条通用的规则是我们都认可的:

  1. 您的密码长度应至少为 14 个字符,并混合使用多种字符(不能只是基本拉丁字母表中的小写字母)
  2. 您应避免使用任何对您有特殊意义的短语或词语(因此容易被猜到)
  3. 强密码与用户名没有关联(始终将两者视为相互独立的实体)
  4. 至少混合包含一个小写字母、一个大写字母、一个数字和一个特殊字符(例如 %、^、*、&、@、~ 等)

我们还建议使用密码黑名单,以帮助避免使用网络上广为流行的单词或短语。例如,NIST 弱密码项目(新窗口)就是一个广受欢迎的开源工具,可用于创建高熵短语。

如果您想为密码管理器设置一个安全的管理员密码,请考虑以下准则

总而言之,真正安全的密码包含例如:

  • 至少一个大写字母
  • 至少一个小写字母
  • 至少一个特殊符号
  • 至少一个数字
  • 至少 14 个字符 (密码短语则至少 30 个字符,前提是所用的单词不常见且互不相关)

上文中的示例 kmXz2=zs[m%7?y4A 满足所有这些要求,其密码熵约为 105 位,通过暴力破解将需要长得不可思议的时间。

使用 Proton Pass 生成强密码

要为所有在线帐户生成并记住足够多的强密码,唯一的办法就是使用密码管理器。Proton Pass 只需单击一下即可为您生成安全短语。您可以用它创建 10 个单词的密码或 64 个字符的随机密码,并且可以控制每个密码是否使用数字、大写字母和特殊字符,以便将密码的熵最大化。

有了 Proton Pass,您的密码不仅难以破解——它们以端到端加密方式存储,并通过世界上最安全的免费 密码管理器提供的双因素身份验证进行安全备份。阅读Proton Pass 的安全模型了解更多。

如果密码熵让您一头雾水,请注册并开始使用 Proton Pass。我们将帮助您生成、存储和保护密码,以抵御恶意攻击。

更新 2025 年十一月 18 日:本文已更新,以更清楚地解释尝试计算各类密码的熵时存在的问题。除非密码是真正随机生成的,否则其复杂度很容易被高估。

常见问题解答

密码复杂度与密码熵有什么区别?

密码的复杂度通常指其潜在字符范围,而密码熵指的是猜测密码难易程度背后的数学原理。熵以位为单位衡量,它进而告诉您破解一个密码需要多少次暴力破解猜测。

四个单词组成的密码的熵是多少?

这取决于这些单词是如何选择的。如果是随机选择的(例如使用 Diceware 列表),每个单词大约增加 12–13 位熵。因此,由四个随机单词组成的密码短语的熵约为 50–52 位。但如果这些单词是由人工选择的,熵可能低得多。

128 位熵意味着什么?

128 位熵意味着破解您的密码需要 2¹²⁸ 次猜测——这比宇宙中的原子数量还多。从实际角度来看,任何超过 100 位的熵都是安全的。即使是熵为 75–80 位的密码,如今也被认为能够抵御所有已知的暴力破解攻击。