知识库 · 文本、数据与安全
怎样的密码才算强密码?
简短回答
强密码应当足够长、随机生成,并且只用于一个账号。长度和随机性比混用符号更重要:NIST SP 800-63B 现在建议,当密码是唯一认证因素时至少 15 个字符,不强制字符组合规则,不定期强制更换,并对照已泄露密码列表进行检查。从 7,776 个单词的词表中随机选 4 个词,熵约为 51.7 位;选 6 个约为 77.5 位。
打开密码生成强度用「需要猜多少次」来衡量
攻击者不会一个字母一个字母地猜。他们先试已泄露的密码,再试带常见替换的字典词,然后是各种模式,比如首字母大写的单词加年份再加 !。像 P@ssw0rd2024! 这样的密码满足大多数复杂度规则,却很快就会被破解,因为它的每一部分都可以预测。
熵衡量的是一个随机生成的密码需要被猜多少次。从 N 个符号的集合中均匀随机选取、长度为 L 的密码,熵为 L × log2(N) 位,每多 1 位,破解工作量就翻一倍。这个公式只适用于随机生成的密码,对人自己编的密码没有参考意义。
常见密码类型的熵
| 类型 | 符号集大小 | 每个符号的位数 | 示例长度 | 总熵 |
|---|---|---|---|---|
| 小写字母 | 26 | 4.70 | 16 个字符 | ≈ 75.2 位 |
| 字母和数字 | 62 | 5.95 | 12 个字符 | ≈ 71.5 位 |
| 全部可打印 ASCII 字符 | 94 | 6.55 | 12 个字符 | ≈ 78.7 位 |
| 全部可打印 ASCII 字符 | 94 | 6.55 | 16 个字符 | ≈ 104.9 位 |
| Diceware 单词 | 7,776 | 12.92 | 4 个单词 | ≈ 51.7 位 |
| Diceware 单词 | 7,776 | 12.92 | 6 个单词 | ≈ 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@pT4z | orbit-candle-mosaic-thrift-velvet-harbor |
| 熵 | ≈ 105 位(94 选 16) | ≈ 77.5 位(7,776 选 6) |
| 容易输入 | 不容易,在手机上尤其如此 | 容易 |
| 容易记住 | 不容易 | 多练几次就行 |
| 最适合 | 保存在密码管理器中的账号 | 少数必须背下来的密码 |
单词必须随机选取,用骰子或生成器,而不是自己挑。歌词、名言或你自己会写的句子,实际熵远低于其长度所暗示的水平。
实用建议
- 使用密码管理器,让它为每个账号生成一个独立的随机密码,长度 16 个字符或以上。CISA 也给出了同样的建议。
- 只背少数几个密码短语:密码管理器的主密码和设备登录密码。用五到六个随机单词。
- 绝不重复使用密码。撞库攻击(拿泄露的邮箱和密码组合去其他网站尝试登录)是最常见的账号盗用方式之一。
- 为邮箱、银行和密码管理器开启多因素认证,最好使用通行密钥或身份验证器应用,而不是短信验证码。
- 在服务方通报数据泄露时更换密码,而不是按日历定期更换。
常见问题
密码应该设多长?
根据 NIST SP 800-63B 第 4 版,仅靠密码保护的账号至少 15 个字符。对于保存在密码管理器中的随机生成密码,16 到 20 个字符是比较稳妥的默认值。
密码短语比普通密码更安全吗?
如果单词是随机选取的,就可能更安全。6 个随机单词胜过一般人自己编的 10 位密码,但 16 位随机字符密码的熵比 6 个单词还高。
应该定期更换密码吗?
不需要。NIST 不建议强制定期更换,因为这会导致可预测的变体。当出现泄露迹象(比如收到数据泄露通知)时再更换密码。
加特殊字符能让密码更强吗?
作用很小。可选字符从 62 个增加到 94 个,每个字符只多约 0.6 位熵;而多加一个字符能增加约 6.5 位。长度比符号更有用。