这就是实际密码管理器的工作方式
Source: Dev.to

大多数人每天都在使用密码管理器,但很少有人真正了解它们是如何保证密码安全的。
在本文中,我将拆解 真实、生产级密码管理器的工作原理——这些核心思路同样被 1Password 或 Bitwarden 等工具所采用——通过演示我构建的项目 Passwuts。
为什么我会构建 Passwuts
密码复用是当今最大的安全风险之一。当单个网站被泄露时,复用的密码会让用户在 所有 使用该密码的服务上受到威胁。
Passwuts 通过以下方式解决这个问题:
- 强制使用强且唯一的密码
- 使用 客户端加密
- 确保 服务器永远看不到明文凭证
这正是严肃密码管理器所遵循的安全理念。
高层架构(零知识模型)
Passwuts 采用 零知识、客户端优先的加密模型:
- 🔐 主密码 永不离开客户端
- 🔑 加密密钥在本地使用 PBKDF2 派生
- 🔒 密码使用 AES‑GCM 加密
- 🗄️ 服务器仅存储 密文 + IV
即使后端被攻破,密码依旧安全。
加密工作原理(逐步说明)
- 用户创建一个 主密码。
- 使用 PBKDF2(输入:主密码 + 用户 UID 作为盐)派生出强加密密钥。
- 使用 AES‑GCM 并为每条记录生成 随机 IV 对密码进行加密。
- 仅将加密后的数据存入 Firestore。
在整个过程中,明文从未离开浏览器。
金库验证(不存储密码)
问题: 如何在不存储主密码的情况下验证它?
解决方案 – 验证器模式:
- 加密一个已知字符串(例如
"vault-check")。 - 将密文作为 金库元数据 存入 Firestore。
解锁时:
- 客户端在本地解密存储的密文。
- 若解密成功,则密码有效。
✅ 安全 ✅ 零知识 ✅ 无密码存储
浏览器扩展架构
浏览器扩展复用了 与 Web 应用完全相同的加密层:
- Firebase 认证
- 共享内部加密包 (
@pm/crypto) - 仅客户端加密
- 后端不包含任何机密逻辑
这保证了跨平台行为的一致性。
这个项目教会我的事
- 🔍 加密失败通常源于 误用,而非数学本身。
- 🔄 IV/nonce 管理至关重要。
- 🧠 安全体验(UX)和密码学同等重要。
- 🔐 零知识系统需要在各个环节保持纪律。
最后感想
密码管理器并非魔法。它们是 经过精心工程设计的系统,基于:
- 密钥派生
- 认证加密
- 安全的客户端架构
了解它们的工作原理,你将会:
- 成为更好的工程师
- 成为更安全的用户