密码库
一个端到端加密的零知识场所,用于保存您的网站登录信息并生成强密码。在Public网络和Android同步。
密码保管库可让您在 Public 中保存网站、URL、用户名、密码和注释,并在您的设备之间同步它们。一切都是端到端加密,并带有只有您知道的主密码 — Public 的服务器只能看到加密的 blob。
重要提示:您的主密码与您的Public帐户密码不同。您的帐户密码可让您登录Public。您的主密码可解锁保管库,并且永远不会发送到我们的服务器。我们无法重置或恢复它。
如何保护
创建保管库时,您的设备:
- 生成随机 vault key(32 字节)和随机 salt(16 字节)。
- 使用 Argon2id 从您的主密码和盐中派生出 密钥加密密钥 (KEK)(内存困难,OWASP 推荐)。
- 使用 AES-256-GCM 将保管库密钥与 KEK 封装在一起,并仅上传封装的 blob。
- 存储一个小的验证程序值(使用 KEK 加密的已知常量),以便下一个登录的设备可以确认“此主密码是正确的”而无需传输您的主密码。
然后,每个单独的登录信息在离开您的计算机之前都会使用保管库密钥在设备上进行加密。服务器仅密文和随机数 - Public 无法读取任何站点名称、URL、用户名、密码或注释。
找到它
- 网页:打开public.kim/密码(或左侧边栏/更多菜单中的密码)。
- Android:打开菜单选项卡→密码。
Web 应用程序需要安全上下文(HTTPS 或http://localhost在开发期间)让浏览器加密发挥作用。如果您以某种方式通过纯 HTTP 登陆该页面,我们将显示“需要安全连接”通知,而不是运行。
首次设置
首次在任何设备上打开保管库时,系统会要求您创建主密码。
- 选择你能记住但别人猜不到的东西。由几个不相关的单词组成的密码非常棒。
- 键入两次。强度计必须至少为 Fair,最少 8 个字符。
- 点击/单击“创建保管库”。
设置屏幕以红色警告您:如果您忘记了此主密码,则无法恢复您保存的登录信息。如果您担心的话,可以离线写下来。
设置完成后,您的设备会将保管库密钥保存在内存中,您可以开始保存登录信息。
解锁金库
在每次新的应用程序启动(Android)或页面加载(Web)时,保管库都被锁定:
- 输入您的主密码。
- 设备使用 Argon2id 派生 KEK(这需要 1-2 秒 - 这是故意的,这使得暴力破解变得不可行)并在本地解开保管库密钥。
- 保管库密钥将保留在内存中,直到您再次锁定、注销、刷新网页或 5 分钟不活动。
错误的密码只会失败,并显示 “主密码错误。” — 它永远不会告诉服务器任何信息。
保存登录信息
- 在列表中,点击/单击“添加登录”(+ 按钮)。
2、填写:
- 网站或应用程序 — 例如GitHub
- URL — 可选,例如
https://github.com- 电子邮件或用户名 - 密码 — 输入密码,或点击 魔杖 图标生成一个强密码(见下文)。
- 注释 — 可选的自由文本。
- 点击保存。
所有内容在上传之前都会在设备上进行加密。
生成一个强密码
点击密码字段旁边(或编辑器中)的 魔杖 图标以打开 密码生成器。您可以配置:
- 长度 — 滑块从 8 到 64 个字符。
- 大写字母 (A–Z)
- 小写字母 (a–z)
- 数字 (0–9)
- 符号 (
! @ # $ %……) - 避免相似 - 跳过视觉上不明确的字符,例如
I l 1 O 0。
生成器使用您设备的加密随机数源,并保证每个启用的类别中至少有一个字符。点击再次生成滚动一个新的,或使用此密码将其放入您正在编辑的条目中。
查找并使用您的登录信息
- 列表显示每个条目的 站点 和 用户名。
- 搜索框按站点、URL、用户名或注释进行过滤(全部在内存中,在您的设备上)。
- 点击一个条目即可编辑它。
- 点击小钥匙图标将密码复制到剪贴板。
- 点击小复制图标复制用户名。
当您复制敏感值时:
- 剪贴板在Android 13+ 上被标记为敏感,因此它不会出现在系统剪贴板预览中。
- 我们尝试在约 30 秒后清除剪贴板,但前提是在此期间剪贴板未被覆盖。
锁定金库
- 右上角菜单 → 锁定保险库 立即清除内存中的密钥。
- 每台设备上5 分钟不活动后,保管库也会自行锁定。
- 在网络上,页面刷新或关闭选项卡始终会锁定保管库。
- 在Android上,关闭应用程序或让它在后台被杀死会锁定它。
要再次使用它,只需使用主密码解锁即可。
更改您的主密码
您可以随时轮换您的主密码。因为 Public 使用 双密钥设计(主密码 → KEK → 保险库密钥 → 条目),因此 不会重新加密每个保存的登录信息 — 仅对包装的保险库密钥进行加密和验证者变更。即使有数百个条目,操作也很快。
在网络上
- 打开**public.kim/密码** 并解锁。
- 右上角…菜单→ 更改主密码。
- 输入您的当前主密码,然后输入两次新密码。
- 保存。
Android
- 从 菜单 选项卡打开 密码 并解锁。
- 右上角⋮菜单→ 更改主密码。
- 输入您的当前主密码,然后输入两次新密码。
- 保存。
您当前的主密码在本地进行验证,从未发送到我们的服务器。
隐私和安全保证
- 服务器仅存储:KDF salt + 参数、包装的保管库密钥、验证者 blob 和每个条目
{ ciphertext, nonce }。 - 服务器从不存储您的主密码、派生密钥、保管库密钥或任何明文凭据 - 我们无法为您恢复它们。
- 所有保管库 HTTP 流量从不缓存(客户端发送
Cache-Control: no-store)。 - Web Vault 拒绝在 非安全来源 上运行(Web Crypto 需要 HTTPS 或
localhost)。 - Android金库屏幕使用**
FLAG_SECURE** 因此凭据不会显示在屏幕截图或最近的应用程序预览中。
如果您删除帐户会发生什么
删除您的 Public 帐户会完全删除您的保管库:
- 每个加密条目(
PasswordEntry) 被删除。 - 包装的保管库密钥和 KDF 元数据(
PasswordVault)被删除。 - Because the deletion is permanent and the data was zero-knowledge to begin with, nobody — including Public — can restore it.
看删除账户。
重要限制
- 主密码无法重置。如果您忘记了,唯一的恢复方法是使用全新的保管库重新开始并重新添加每次登录。看忘记主密码。
- 该保险库用于网站/应用程序登录,不适用于银行卡、安全笔记、文件或 TOTP 代码(尚)。
- Web 客户端和Android 客户端是逐字节兼容的——在一个客户端上创建的保管库可以在另一个客户端上解锁。每个保存的登录名都使用字段加密为 JSON
site,url,username,password, 和notes。使用旧版的旧 Android 条目email键仍然可以正确读取并映射到username解密时。
## 有关的