撞库攻击
很多人在不同网站用同一个密码。这带来的风险不是"密码太简单",而是横向扩散。
攻击者常用一种叫撞库(Credential Stuffing)的手法:
- 某个网站发生数据泄露,用户名和(未加盐或弱哈希的)密码被公开;
- 攻击者拿这些凭据去批量尝试登录其他网站(邮箱、社交、电商、支付);
- 因为用户用了相同密码,一部分账号直接被攻破。
这意味着:你的账号安全,部分取决于你使用的其他网站的安全水平。哪怕你自己的习惯很好,只要某个小网站泄露了数据,你的主邮箱也可能被波及。
为什么复杂密码不够
"P@ssw0rd1" 这类符合复杂度要求的密码,问题在于:
- 人类难以为几十个网站记住几十个真正随机、彼此无关的密码;
- 于是人们会重复使用,或者用有规律的变体(站点名 + 固定后缀)——而规律一旦被识破,所有账号一起沦陷。
密码管理器的工作方式
核心思路:用一个主密码加密一个密码库,库里存放所有网站的高强度随机密码。
- 你只需要记住主密码;
- 每个网站使用独立生成的长随机密码(通常 16–20 位,含大小写、数字、符号);
- 密码库通过强加密算法(如 AES-256)保护,并经过大量 KDF 迭代(如 Argon2、PBKDF2)来抵御暴力破解。
关键设计:服务端不存储主密码。正规的密码管理器采用零知识架构——加密和解密都在本地完成,服务商无法获取你的明文数据。这意味着如果主密码丢失,数据无法找回(这是安全的代价)。
安全性的权衡
密码管理器把风险从"几十个弱密码"集中到"一个主密码 + 一个应用"。
这当然引入了新的风险面:
- 主密码一旦泄露,所有密码暴露;
- 密码管理器软件本身若有漏洞,可能被攻击。
但权衡下来,主流观点认为:集中保护一个强主密码,远优于分散管理几十个弱密码。前提是使用经过安全审计的成熟产品,并为主密码启用双因素认证。
双因素认证(2FA)
即便密码泄露,2FA 也能挡住大部分攻击。常见形式:
TOTP(基于时间的一次性密码):如 Google Authenticator、各类验证器 App。每 30 秒生成一个新的一次性码。原理是服务端与客户端共享一个密钥,用时间和密钥生成哈希。
硬件密钥(如 FIDO2/WebAuthn):安全性最高。基于公钥密码学,私钥永不出硬件,且能防钓鱼——密钥会验证网站域名,伪造网站无法骗取认证。
短信验证码:方便但安全性最弱,存在 SIM 卡劫持、短信拦截等风险。在条件允许时应优先选择前两者。
几条实用建议
- 为邮箱、支付、社交等核心账号启用 2FA;
- 不同网站使用不同密码;
- 定期检查账号是否出现在已知的泄露数据库中(如 haveibeenpwned 一类服务);
- 主密码要足够长且唯一(可以考虑用口令短语而非短密码)。
说明:本文为网络安全实践的公开知识整理。