为什么需要

密码复用的风险:

如果你在多个网站使用同一个密码,那么其中任何一个网站发生数据泄露,攻击者就可以用这组凭据尝试登录你的其他所有账户("凭据填充攻击",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。

说明:本文为安全实践的知识整理。