为什么需要
密码复用的风险:
如果你在多个网站使用同一个密码,那么其中任何一个网站发生数据泄露,攻击者就可以用这组凭据尝试登录你的其他所有账户("凭据填充攻击",Credential Stuffing)。
由于历史上大量网站发生过泄露,这种攻击的成功率相当高。
唯一可靠的对策:为每个网站使用不同的强密码。
而人脑无法记住几十上百个随机密码——因此密码管理器是必要的。
核心机制
密码管理器用一个主密码加密一个密码库(vault)。
- 密码库本身是加密存储的;
- 主密码通过密钥派生函数(如 PBKDF2、Argon2)派生出加密密钥;
- 密钥派生被设计得慢且消耗资源,以抵抗暴力破解。
关键:主密码不上传到服务器(对于 E2EE 的密码管理器)。服务商无法帮你找回——忘了就是忘了。
主要选择
一、独立的第三方密码管理器
代表:Bitwarden、1Password、KeePass 等。
优势:
- 跨平台,可在多个浏览器和操作系统中使用;
- 通常支持 E2EE(服务端看不到你的密码);
- 有些是开源的(如 Bitwarden、KeePass),可以接受安全审计;
- 密码库可以在多设备同步。
考虑:
- 需要信任这个服务商;
- 付费订阅(通常不贵)。
二、浏览器/操作系统内置
代表:Chrome 密码管理器、Apple 钥匙串、Windows 的凭据管理器。
优势:
- 免费,无需额外安装;
- 与系统/浏览器深度集成,体验流畅;
- 通常有系统级的加密保护。
考虑:
- 绑定在特定生态中(换平台迁移麻烦);
- 功能相对简单(如共享、审计功能弱);
- 加密保护取决于设备的解锁状态(如果设备已解锁,密码可能被读取)。
三、自建/离线方案
代表:KeePass(本地文件)、KeePassXC 等。
优势:
- 密码库完全自己掌控,不依赖任何服务商;
- 开源,可审计。
考虑:
- 需要自己解决同步问题(如用同步盘同步密码库文件);
- 使用体验不如商业产品流畅。
使用要点
一、主密码要强
这是唯一需要你记住的密码,应该:
- 足够长(建议 15 个字符以上,或用口令短语——几个随机词组合,如"紫色-柠檬-键盘-河流");
- 唯一(不与其他任何密码重复);
- 不基于个人信息(生日、宠物名、常见词)。
二、启用双因素认证(2FA)
为密码管理器本身启用 2FA——因为它是你所有密码的"钥匙串"。
推荐方式:
- 硬件密钥(如支持 FIDO2/WebAuthn 的 YubiKey)——安全性最高;
- TOTP 应用(如 Google Authenticator、Authy、Aegis)——次优;
- 短信验证码——最弱,但比没有强(存在 SIM 卡交换攻击的风险)。
三、用生成器创建密码
不要自己编密码。用密码管理器的生成器,为每个网站生成:
- 长度足够(建议 16 位以上);
- 包含大小写、数字、符号;
- 完全随机。
网站如果有长度限制,用允许的最大长度。
四、定期审查
很多密码管理器提供安全审计功能,可以找出:
- 重复使用的密码;
- 弱密码;
- 出现在已知泄露数据库中的密码(通过安全的方式比对,通常不上传完整密码)。
定期处理这些报告。
五、保护恢复方式
- 妥善保管恢复密钥(很多服务提供一次性恢复码);
- 了解忘了主密码会怎样(通常是数据无法恢复)。
一个常见担忧
"把所有密码放在一个地方,不是更危险吗?"
权衡的结果通常是:值得。
- 分散管理意味着必然有弱密码和重复密码——这是实际发生攻击的主要途径;
- 密码管理器的攻击面集中在一点,但这一点可以被很好地保护(强主密码 + 2FA + 本地加密)。
实际的安全事件统计中,凭据填充和弱密码造成的损失,远大于密码管理器被攻破的案例。
一句话
如果只能推荐一个安全习惯,那就是:用密码管理器 + 为每个网站生成唯一强密码 + 在重要账户上开启 2FA。
说明:本文为安全实践的知识整理。