绝大多数账号被盗的故事,起点都不是”黑客技术高超”,而是两件很朴素的事:同一个密码用在了多个网站上,以及这个密码并不像用户自以为的那样难猜。密码管理的核心问题因此也朴素得令人失望——不是想出一个”更聪明”的密码,而是让每个账号的密码都彼此独立、足够随机,同时自己又不必记住它们。
一、密码强度到底在衡量什么
用户习惯用”含大小写、含数字、含特殊符号”来判断密码强度,但攻击者衡量密码的维度是另一个:熵(entropy),即这个密码在所有可能取值中的不确定性有多大,用比特(bit)来度量。
一个纯随机的 6 位数字密码,可能取值是 10 的 6 次方,约等于 20 比特的熵。一个由常见英文单词拼成的密码,哪怕长度超过十几位,实际熵也可能很低——因为攻击者的字典里本来就收录了这些词的组合方式。反过来,correct-horse-battery-staple 这种几个不相关词拼起来的短语,长度和随机性都上去了,熵反而更可观。
熵直接换算成爆破成本。假设攻击者能以某种速率穷举候选密码(例如每秒千万次量级的离线哈希运算),熵每多 10 比特,穷举时间就大约翻 1000 倍。所以”多加一个特殊符号”这类规则,如果它只让密码从 40 比特涨到 42 比特,意义远不如”多用两个随机词”。
密码策略里常见的”必须每 90 天更换一次”也值得重新审视。如果密码本身熵够高、没有泄露迹象,强制定期更换往往换来的是 Password2024!、Password2025! 这类可预测的递进模式,安全性不升反降。
二、口令短语:把记忆负担变成优势
口令短语(passphrase)的思路是用多个随机挑选的普通词拼成密码,比如四个互不相关的常见名词。它比 Tr0ub4dor&3 这类”一个词加一堆替换规则”的密码更安全,原因有两个:
- 长度足够长,抵消了字典词本身的低熵,整体熵由”选了几个词、词表有多大”决定。
- 对人类记忆友好。四个具象名词的画面感,比一串无意义符号容易回忆得多。
自己造 passphrase 时要注意”随机”两字。把一句喜欢的歌词、电影台词或地址拼音当密码,看起来很长,实际在社工字典面前脆弱得多。真正稳妥的做法是用随机数生成器从一份大词表里抽词,而不是凭”灵感”联想。
三、密码管理器的原理
既然每个账号都该有独立的随机密码,人脑显然记不住。密码管理器的本质是把”记忆密码”的任务,收缩为”记忆一个主密码”。
它的核心机制大致是这样:
- 用户设定一个高熵主密码(通常是 passphrase)。
- 管理器用 KDF(密钥派生函数,如 PBKDF2、scrypt、Argon2 一类)从主密码派生出加密密钥。KDF 的特点是故意把计算做得慢且吃内存,让攻击者即使拿到加密库也无法快速离线爆破。
- 加密密钥用来加密本地的密码库(vault),库里的条目是各站点的账号、密码、备注。
- 解锁时输入主密码,派生密钥解密库;使用时自动填充到浏览器或表单。
整条链路的安全性高度依赖两点:主密码的熵,以及库文件的存储位置。主密码一旦是弱口令,攻击者只要拿到库文件就等于拿到了一切;反过来,主密码足够强时,即使库文件泄露,攻击者也很难在合理时间内解开。
因此实践上:
- 主密码只用这一次,别拿它注册任何网站。
- 库文件尽量留在本地或端到端加密的同步通道里,不要随手丢进明文网盘。
- 把主密码写在纸上,放在安全的地方,比把它记在浏览器密码栏里更稳妥。
四、为什么绝不能复用密码
复用密码的风险不来自当前这个站点,而来自任意一个曾经泄露过明文或弱哈希密码的站点。只要攻击者拿到了”邮箱 + 密码”这对组合,接下来的撞库就是流水线作业:同一组合批量尝试登录其他站点,成功概率取决于复用面有多广。
用户很难知道自己用过的密码是否已出现在泄露库里。所以正确的假设是:只要密码被复用,就默认它已经泄露。每个账号独立随机密码的意义正在于此——把单点泄露的影响半径压缩到这一个站点。
对已知泄露过的账号,除了改密码,还要检查该邮箱是否被绑定过其他重要服务(密码找回、二次验证都走这个邮箱),这往往是攻击者横向移动的通道。
五、双因素认证放的位置
双因素认证(2FA)解决的是”密码被知道了怎么办”,它和强密码是互补关系,不是替代关系。常见的第二因素分几类:
| 类型 | 举例 | 特点 |
|---|---|---|
| 知识类 | 短信验证码、邮箱验证码 | 抵御撞库,但存在钓鱼与劫持风险 |
| 时间类 | TOTP 动态口令(6 位数字) | 无需网络,比短信更抗劫持 |
| 硬件/通行密钥 | USB Key、FIDO2、Passkey | 与站点绑定,抗钓鱼能力最强 |
几个实践要点:TOTP 的种子(二维码或密钥串)等同于第二因素本身,要当作密码一样保管;恢复码离线保存,否则换手机时可能被锁在账号外面;能用硬件密钥或通行密钥的场合优先用,它们在协议层面就验证了站点身份,假登录页拿不到有用的东西。
六、企业密码策略的几个误区
组织里推行密码策略时,常见的几个误区值得单独拎出来:
- 过度复杂度要求,忽视长度。强制”8 位 + 四类字符”逼出的是可预测的变形词;不如直接要求更长的最小长度,或鼓励 passphrase。
- 全员定期强制换密。对未泄露的账号这是纯负担;更有效的做法是接入泄露库检测,命中才强制更换。
- 共享账号写在共享文档里。需要多人共用的凭据应当走特权访问管理或临时授权,共享密码一旦出事无法追责,也无法定向吊销。
- 只管密码不管找回流程。邮箱找回、客服身份核验这些路径如果比登录更松,攻击者会绕开正面攻击。
密码体系的最终形态,是让”密码”变成一串用户自己都看不到的随机字符,由管理器生成、存储、填充;用户只负责守住那一个主密码和第二因素。这比任何”聪明密码技巧”都更可靠,也更省心。
Comments (4)
希望能出个进阶版,讲讲复杂场景。
照着改完,线上没出问题,稳。
讲得清楚,就是例子略少。
这个点很多教程都跳过了,能写出来不容易。
Please Sign in to join the discussion.