复杂度的错觉
很多人以为“加符号、混合大小写”就能更安全。决定密码强度的核心是熵,而熵由长度 × 字符集规模共同决定——其中长度的影响最直接:每多一位,尝试空间呈指数级增长。
直观对比
- 8 位纯小写:约 2^37 种组合;
- 12 位(大小写+数字):约 2^71 种组合;
- 16 位(含符号):约 2^104 种组合。
实用原则
- 长度优先:至少 12 位,条件允许 16 位以上;
- 每个站点独立密码,避免“一破全破”;
- 用密码管理器保存——人类记不住这么多随机串;
- 开启两步验证,密码泄露也有第二道防线。
常见误区
“P@ssw0rd!” 看起来复杂,但它基于字典词加常见替换,在字典攻击面前并不强。随机生成的无意义串才是真正的强密码——这正是随机生成器的价值。
破解时间直观对比
按每秒 100 亿次尝试(离线 GPU 集群的保守估计)计算:
| 密码形态 | 字符集 | 大致穷举时间 |
|---|---|---|
| 8 位小写字母 | 26 | 几分钟 |
| 8 位大小写 + 数字 | 62 | 数小时 |
| 12 位大小写 + 数字 | 62 | 数个世纪 |
| 16 位含符号 | 94 | 远超宇宙年龄 |
这张表的前提是密码真随机。若是字典词加替换(如 P@ssw0rd),实际耗时会被字典攻击压缩到几秒——这正是“看起来复杂”的陷阱。
三种可落地的做法
- 随机密码 + 密码管理器:生成 16 位以上随机串交给管理器,人只需牢牢记住主密码;
- 密码短语:四个以上互不相关的词组合(如“钢琴·沼泽·路灯·铁钉”),好记且熵很高;
- 两步验证:密码泄露后仍有第二道门,TOTP 应用或硬件密钥优于短信验证码。
延伸问题
需要定期更换密码吗?NIST 现行建议是:没有泄露迹象就不必强制轮换——频繁更换只会催生 Password1!、Password2! 这类可预测变体。“同一个密码加不同后缀”够安全吗?不够。规则一旦被猜出(比如某站后缀是站名),一处泄露就会连坐所有站点。
搭配使用的两个关键措施
- 密码管理器:让每个站点都用独立的随机密码,你只需记住一个足够强的主密码;开启自动填充还能降低把密码填进钓鱼页面的概率;
- 两步验证:优先使用 TOTP 应用或硬件密钥,其次才是短信(短信存在补卡与拦截风险)。开启后即使密码泄露,攻击者仍缺少第二因素;
- 找回方式也要安全:备用码离线保存,不要把能被社工绕过的密保问题作为唯一兜底。
一个常见误区的再说明
「定期强制改密码」并不能提升安全性,反而催生 Password1! → Password2! 这类可预测变体。真正的优先级是:长度足够 + 每站独立 + 管理器保存 + 两步验证,而不是频繁更换。
实战案例:三种被攻破的口令
- “Password1!” 类:看起来满足复杂度,却在常用口令字典里,几秒即破。
- 生日 + 姓名:可由社交信息猜出,属于“高概率猜测”,再长也不安全。
- 一处泄露、处处通用:撞库攻击利用的是“复用”,而非单点破解。每个站点用独立口令是底线。
常见问题(FAQ)
复杂度规则还重要吗?不如长度重要——16 位全是小写字母也比 8 位混合更强;规则主要是挡住最差的一批。多久换一次?无泄露不必频繁更换,泄露后立即更换。口令短语安全吗?随机拼出的 4–5 个词熵足够且好记,但别用歌词或名句。怎么记住这么多?用密码管理器,只需记住一个强主密码加两步验证。
动手试试:随机密码生成器
熵估算速查
- 公式:熵(比特)≈ 长度 × log₂(字符集大小);
- 字符集:小写字母 26(4.7 位/字符)、大小写 52(5.7)、再加数字 62(5.95)、再加符号约 94(6.55);
- 对照:16 位全小写约 75 位熵;12 位混合大小写与数字约 71 位;两者强度接近,但前者更好记;
- 结论:与其强制加符号,不如把最小长度提高 2–4 位,用户更省心、强度也不降。