cv.cm

知识库 · 文本、数据与安全

怎样的密码才算强密码?

阅读约 5 分钟

简短回答

强密码应当足够长、随机生成,并且只用于一个账号。长度和随机性比混用符号更重要:NIST SP 800-63B 现在建议,当密码是唯一认证因素时至少 15 个字符,不强制字符组合规则,不定期强制更换,并对照已泄露密码列表进行检查。从 7,776 个单词的词表中随机选 4 个词,熵约为 51.7 位;选 6 个约为 77.5 位。

打开密码生成

强度用「需要猜多少次」来衡量

攻击者不会一个字母一个字母地猜。他们先试已泄露的密码,再试带常见替换的字典词,然后是各种模式,比如首字母大写的单词加年份再加 !。像 P@ssw0rd2024! 这样的密码满足大多数复杂度规则,却很快就会被破解,因为它的每一部分都可以预测。

熵衡量的是一个随机生成的密码需要被猜多少次。从 N 个符号的集合中均匀随机选取、长度为 L 的密码,熵为 L × log2(N) 位,每多 1 位,破解工作量就翻一倍。这个公式只适用于随机生成的密码,对人自己编的密码没有参考意义。

常见密码类型的熵

类型符号集大小每个符号的位数示例长度总熵
小写字母264.7016 个字符≈ 75.2 位
字母和数字625.9512 个字符≈ 71.5 位
全部可打印 ASCII 字符946.5512 个字符≈ 78.7 位
全部可打印 ASCII 字符946.5516 个字符≈ 104.9 位
Diceware 单词7,77612.924 个单词≈ 51.7 位
Diceware 单词7,77612.926 个单词≈ 77.5 位

计算示例:log2(7,776) = 12.925,所以 4 个随机单词的熵为 4 × 12.925 ≈ 51.7 位,约 3.7 × 10^15 种可能。攻击者针对泄露的快速哈希每秒猜 100 亿次,大约 4 天就能穷举完。6 个单词按同样速度则需要约 70 万年。

在线攻击要慢得多,因为登录页面会限速和锁定账号。这么大的安全余量,针对的是数据库泄露后的离线攻击,其猜测速度取决于网站如何存储哈希。

NIST SP 800-63B 最新规定

NIST 特别出版物 800-63B 第 4 版于 2025 年定稿,为美国联邦系统制定密码规则,也被其他地方广泛借鉴。它对接受密码的服务提出的主要要求如下:

  • 当密码是唯一的认证方式时,最短 15 个字符;作为多因素认证的一部分时,最短 8 个字符。
  • 允许至少 64 个字符的密码,并接受空格、全部可打印 ASCII 字符和 Unicode 字符。
  • 不设字符组合规则,比如必须包含数字、大写字母和符号。
  • 不强制定期更换密码,只有在有证据表明密码泄露时才要求更换。
  • 对照黑名单检查新密码,包括已泄露的、常见的,以及与上下文相关的值,如服务名或用户名。
  • 不设密码提示或安全问题,并允许粘贴,以便使用密码管理器。

理由是,组合规则和定期过期会迫使人们采用可预测的模式,比如把 Summer2025! 改成 Autumn2025!,实际增加的熵微乎其微。

密码短语与随机字符

随机字符随机单词
示例r7#Qm2!vLx9@pT4zorbit-candle-mosaic-thrift-velvet-harbor
熵≈ 105 位(94 选 16)≈ 77.5 位(7,776 选 6)
容易输入不容易,在手机上尤其如此容易
容易记住不容易多练几次就行
最适合保存在密码管理器中的账号少数必须背下来的密码

单词必须随机选取,用骰子或生成器,而不是自己挑。歌词、名言或你自己会写的句子,实际熵远低于其长度所暗示的水平。

实用建议

  1. 使用密码管理器,让它为每个账号生成一个独立的随机密码,长度 16 个字符或以上。CISA 也给出了同样的建议。
  2. 只背少数几个密码短语:密码管理器的主密码和设备登录密码。用五到六个随机单词。
  3. 绝不重复使用密码。撞库攻击(拿泄露的邮箱和密码组合去其他网站尝试登录)是最常见的账号盗用方式之一。
  4. 为邮箱、银行和密码管理器开启多因素认证,最好使用通行密钥或身份验证器应用,而不是短信验证码。
  5. 在服务方通报数据泄露时更换密码,而不是按日历定期更换。

常见问题

密码应该设多长?

根据 NIST SP 800-63B 第 4 版,仅靠密码保护的账号至少 15 个字符。对于保存在密码管理器中的随机生成密码,16 到 20 个字符是比较稳妥的默认值。

密码短语比普通密码更安全吗?

如果单词是随机选取的,就可能更安全。6 个随机单词胜过一般人自己编的 10 位密码,但 16 位随机字符密码的熵比 6 个单词还高。

应该定期更换密码吗?

不需要。NIST 不建议强制定期更换,因为这会导致可预测的变体。当出现泄露迹象(比如收到数据泄露通知)时再更换密码。

加特殊字符能让密码更强吗?

作用很小。可选字符从 62 个增加到 94 个,每个字符只多约 0.6 位熵;而多加一个字符能增加约 6.5 位。长度比符号更有用。

全部知识文章