Skip to content

我用 AI 重写了一个密码管理器

8/12/2026

去年,AI 还没这么火的时候,我纯手工写过一个密码管理器:LockPass。

项目地址:https://github.com/ftyszyx/lockpass

当时它能解决我的一些基本需求,但用了一段时间后,问题也慢慢暴露出来。尤其是密码管理器这种工具,不能只是“能用”,还得足够稳定、足够安全、足够方便。

今年,AI 已经变成了很实用的生产力工具。我结合 AI 的分析和自己的实际使用体验,把这个项目重新做了一版,重点放在安全性和易用性上。

1.1 为什么要重写

旧版 LockPass 最大的问题,不是某一个功能没做好,而是很多细节叠加在一起,影响了长期使用的信心。

  • 同步流程比较繁琐:需要先备份到云盘,再从云盘恢复,很容易出现不同设备之间版本不一致的问题。
  • 附件能力受限:无法保存图片、压缩包等附件,很多和账号相关的材料只能放在别处。
  • 界面和操作稳定性不够:日常使用时有不少影响体验的小问题。
  • 数据迁移机制缺失:后续如果要调整数据结构,迭代成本会比较高。
  • 安全设计也有继续加强的空间:比如锁屏后需要及时清理内存中的密钥材料,备份和恢复流程需要完整性校验,旧版密钥派生方式也不够理想。

旧版的密钥派生方式比较直接:key = SHA256(安全密钥 + 主密码)

这个实现简单,但 SHA-256 本身是高速哈希。如果直接用它派生解锁密钥,一旦攻击者拿到本地数据,就可以比较高效地离线猜测主密码。对密码管理器来说,这个成本还是太低了。

1.2 这次重写想解决什么

所以这次重写,我没有只把界面翻新一遍,而是把几个基础能力重新梳理了一下。

  • 同步要更自然:多端数据应该尽量保持一致,不再依赖手动备份和恢复。
  • 数据模型要更完整:密码条目之外,也要支持附件、图片、文件等材料。
  • 安全机制要更完整:重新设计了底层的安全机制以及每个密码的存储位置和边界。
  • 后续迭代要更方便:数据迁移、服务端、自部署和管理后台都要提前考虑。

目前新版已经初步可用,先简单介绍一下。

项目官网:https://lockpass.bytefuse.cn/

源码:https://github.com/ftyszyx/lockpass-next

1.3 LockPass Next 由几部分组成

这次不再只是一个单独的桌面应用,而是拆成了几个互相配合的部分。

  • 桌面端:计划支持 Mac 和 Windows,目前先打包了 Windows 版本。
  • 浏览器插件端:用于辅助添加网站密码,也可以自动填入账号密码。
  • Web 端:功能上和桌面端保持一致,方便在不同环境下使用。
  • 服务器:负责加密数据的存储和同步。
  • 服务器管理后台:用于管理后台数据和服务状态。

服务器支持自己部署。也就是说,如果你不希望把数据放在我的服务上,可以自己部署一套同步服务。

1.4 界面预览

桌面端主界面:

浏览器插件主界面:

管理后台:

1.5 安全机制:两个凭据,三类密钥

密码管理器最核心的问题是:就算本地数据库或者服务器数据泄露,别人能不能直接拿到你的明文密码。

在 LockPass Next 里,用户需要保管两个东西:

  • 主密码:由用户自己设置,需要记住。
  • 安全密钥:由软件生成,需要用户妥善保存。

系统会根据主密码和安全密钥派生出下面三类密钥。普通用户不需要理解每个细节,只要知道:服务器不会保存能直接解开数据的明文密钥。

密钥

来源与用途

存在范围

unlockKey

由 Argon2id 基于主密码和安全密钥派生;用于解开或包装 vaultKey

仅在一次解锁过程中短暂存在。

vaultKey

创建保险库时随机生成;用于加密和解密条目、附件等用户数据。

仅在已解锁的会话内存在。

wrappedVaultKey

使用 unlockKey 通过 AES-256-GCM 加密 vaultKey 后生成。

可以保存到本地密文库和服务器;它本身不是可直接使用的明文密钥。

简单理解就是:

用户数据真正由 vaultKey 加密;

unlockKey 只负责解开 vaultKey

wrappedVaultKey 则是可以存储和同步的密文形态。

用户数据的加密和解密流程如下:

软件解锁时获取 vaultKey 的流程如下:

1.6 它主要防什么

这套设计不是在说“绝对安全”,而是把风险拆开:服务器拿不到完整密钥,主密码和安全密钥也不会单独成为唯一防线。

威胁场景

风险缓解方式

本地数据库或服务器数据泄露

攻击者只能拿到密文、同步数据和非敏感元数据。服务器不持有解密所需的完整密钥,不能直接读取条目内容。

安全密钥泄露

攻击者仍然需要主密码。Argon2id 会提高离线猜测主密码的计算成本。

主密码被撞库或过弱

仅有主密码还不够,仍然需要安全密钥才能派生出正确的 unlockKey

1.7 目前的状态

现在项目的基本框架已经可用,但还有很多功能需要继续完善。我会先通过自己的真实使用持续优化,把高频场景跑顺,再慢慢补齐更多细节。

如果你对这个项目有兴趣,可以试用,也可以提建议、提 issue,甚至直接参与开发。

对我来说,这次用 AI 重写 LockPass,最有价值的地方不是“让 AI 一次性写完一个产品”,而是把过去那些一直想改、但成本太高的部分,变成了可以持续推进的工程。