Confidex

你的密码,只属于你。

Confidex 把您的密码、验证码、备注和文件保存在一个只有您能打开的保险库中。负责同步的服务永远不会得知您的姓名、电子邮件或密码,也读不到任何一个条目。

在您的设备上 GitHub 用户名 密码 一次性验证码 标签 octocat •••••••••••••••• 482 913 工作,两步验证 0d24b0ab 在同步服务器上 7f3a9ce2 c04d178b 2be5f04a 没有姓名,没有邮箱,没有密码
每次更改在离开您的设备之前都已在设备上封存并签名。服务器保存的只是带编号的密封盒,仅此而已。
  • 无需注册

    在我们这一边没有任何账户可供窃取、钓鱼或重置。

  • 在您的设备上封装

    任何数据在离开之前都已加密并签名,如果它会离开的话。同步是可选的。

  • 免费且开源

    GPL-3.0 的应用,以及可以自行运行的 AGPL-3.0 同步服务器。

一次登录真正需要的一切,都在一处。

记录不是固定的表单。把密码放在它的一次性验证码、恢复备注、用来付款的卡和通过电子邮件收到的文件旁边。它们保存在一起,也一起加密。

  • 登录与密码附带一个把设置保存在您设备上的生成器。
  • 一次性验证码两步登录的验证码,在您的设备上生成。
  • 银行卡卡号、有效期和安全码作为普通的加密字段。
  • 备注与文档普通备注,或受保护的备注,在您要求之前保持隐藏。
  • 照片与文件扫描件、PDF 和图片,在封存前于您的设备上调整大小。
  • Wi-Fi 网络由已保存的密码生成的 QR 码,供您的客人扫描。
  • API 密钥与令牌在您显示之前保持隐藏,一步即可复制。
  • SSH 密钥附带原生代理,每次使用前都会征求您的确认。
  • 您自己的字段您需要的任何其他内容。编辑时不会丢弃任何东西。
  • 完整历史每次更改都被保留。可以打开一条记录的任何早期版本。

搬家只需一次导入。

Confidex 可从 1Password、Bitwarden、KeePass 和 CSV 导入,也可导出回这些格式。用您的真实数据试一试;如果改变主意,可以带着全部数据离开。

  • 1Password
  • Bitwarden
  • KeePass
  • CSV

桌面

面向 Mac、Linux 和 Windows 的真正原生应用程序,用 Rust 编写,界面由 GPU 加速。没有 Electron,没有 Flutter,没有网页视图。

  • macOS
  • Linux
  • Windows

浏览器

打开 app.confidex.me 即可立即开始。首次访问后也可离线使用,还可以安装到手机主屏幕。

打开 app.confidex.me

离线优先

每台设备都保存完整的保险库。您可以随时同步,通过我们的服务器或您自己的服务器,也可以从不同步:把保险库留在一台设备上并备份到文件。如果两台设备的内容不一致,您会看到两个版本并自行选择。

两把钥匙打开您的保险库。除了您,没有人同时持有两把。

密码和秘密密钥共同打开存放保险库私钥的小锁. 记录单独加密, 每个修订版都有签名. 同步服务器验证签名, 无需接收任何一个解锁秘密, 也无需用户账户.

您的密码 您的秘密密钥 已锁定 已打开 仅密码 仅密钥 两者兼备
  • 您的密码

    由您记住。它从不存储在任何地方,也从不发送。

  • 您的秘密密钥

    由您的设备保存。在新设备上,您以传输码的形式输入一次:77 个字母和数字,每 7 个一组。

  • 锁

    保存着保险库密钥,只有两者齐备才会打开。Argon2id 刻意让每次密码猜测都很慢:每次尝试需要 64 MiB 内存和三轮运算。

单独一把钥匙改变不了什么。服务器上所有内容的副本甚至不能用来猜测您的密码,因为服务器从不持有秘密密钥。

您的设备通过一台无法窥视内容的服务器保持同步。

每次更改离开您的设备时都已封存并签名。服务器在您的设备之间传递密封盒并检查签名,因此其他任何人都无法更改您的保险库。它打不开任何一个盒子,而且在明文 HTTP 上和在 HTTPS 上一样安全。

笔记本电脑 7f3a9ce2 c04d178b 2be5f04a 同步服务器 手机

服务器只负责存储和转发。只有来自您自己密钥的签名才能让更改进入。

锁定后,它就从内存中消失了。

保险库打开期间,密钥和您查看的记录存在于内存中。当您锁定时,Confidex 在那一刻就把它们丢弃。Rust 以确定性方式释放内存,没有可能让秘密多停留一段时间的垃圾回收器。剪贴板或操作系统制作的副本不在此保证范围内。

内存 保管库密钥,打开的记录 锁定时立即释放 已解锁 已锁定。内存中毫无残留。

不是垃圾回收器决定您的秘密何时离开内存。锁定决定。

如果我们的服务器被攻破会怎样?

切换攻击者设法得到的东西。

目前什么也没有。

切换攻击者拥有的东西。答案遵循项目文档中的威胁模型。

使用我们的同步服务器,或自己运行同一个服务器。

服务器很小,因为它没有什么需要保护。它存储密封盒,为每个保险库维护一个计数器,并在接受更改之前检查签名。可以在任何机器上作为 Docker 镜像运行,也可以作为免费套餐的 Cloudflare Worker 运行,无需自己的服务器,也无需付费。新保险库使用 sync.confidex.me;一项设置即可把它们指向您的副本。

运行方式
Docker 镜像、原生二进制文件,或免费套餐的 Cloudflare Worker。
索引
原生运行时使用 SQLite 或 PostgreSQL,在 Worker 中使用 D1。
对象
S3 兼容存储桶、普通目录和 Git 仓库的任意组合。写入到全部目标;读取时逐个回退并校验摘要。
传输
HTTP 或 HTTPS,由您选择。无论哪种方式,盒子都已封存并签名。
账户
没有。保险库通过上传其已签名的锁来注册。此后只有签名密钥的持有者才能更改它。
完全不用
同步是可选的。保险库可以留在一台设备上,备份到本地 ZIP 文件,永不接触网络。
许可证
AGPL-3.0。您为他人运行的修改版本必须保持开源。

Confidex 不保护什么。

密码学保护静止和传输中的数据。它无法保护一台已解锁的设备,也无法隐藏一切。以下是我们已知的边界,如实陈述。

已解锁且被感染的设备

保险库打开期间,密钥和您查看的记录都在内存中。在那台设备上运行的恶意软件可以读取它们。离开时请锁定。

形态,而非内容

服务器能看到保险库和记录的标识符、哪个修订版本接在哪个之后、时间戳以及封存值的大小。内容、名称、类型和标签保持隐藏;形态则不会。

弱密码加上泄露的秘密密钥

持有您传输码的人可以离线尝试密码。Argon2id 让每次猜测都要付出 64 MiB 和三轮运算的代价,因此长的口令短语能够抵挡。短的则不能。

本地搜索索引

标题、网址、标签和未受保护的备注以明文形式在您的设备上建立索引以供搜索。索引永远不会离开设备,但任何读取您磁盘的人都能得知这些标签。

没有前向保密性

如果保险库的私密材料一旦暴露,在它之下封存的记录就可以被读取。更改密码会重新包装锁;它不会重新封存旧的修订版本。

应用之外的副本

锁定时清除内存覆盖的是 Confidex 持有的内容。剪贴板、浏览器和操作系统可能保留它们自己的副本。

给愿意核对的人看的构造。

纯 Rust 实现,没有 C 绑定。每个构造都有固定的测试向量,存储格式、锁、记录加密、签名和同步协议都逐字节地写入了规范。

密码学页面逐步跟随一个保险库,从它的第一个随机字节到一个已同步的修订版本:材料如何变成两个密钥对,锁如何封存和打开,修订版本如何加密、签名和命名,以及服务器验证什么。

  • 创建保险库32 个随机字节、X25519 秘密密钥、Ed25519 签名密钥对、UUIDv5 地址、77 个符号的传输码。
  • 锁Argon2id 64 MiB,结合秘密密钥的 HKDF-SHA256,对 33 字节的 XChaCha20-Poly1305,总共 344 字节。
  • 记录与修订版本MessagePack,一次 zlib,HPKE base 模式,对精确字节的 Ed25519,SHA-256 修订版本 ID。
  • 同步服务器分离的锁签名、钉住的密钥、精确字节、游标比较并推进。
  • 哪些信息仍然可见标识符、父版本、epoch、大小和时间。没有任何可读内容。

把您的秘密放在一个无法被要求交出它们的地方。