离线优先的密码管理器,支持设备间直接同步
一款密码管理器,将你的机密保存在你自己的设备上。无需账户,没有服务器保存你的密码库,也没有公司会被入侵并泄露一切。密码库在你手中,密码也在你手中,仅此而已。
Bramble 运行在你所在之处:
三者背后是同一个加密密码库和同一个 Rust 加密核心,你的设备可以点对点(peer-to-peer)直接相互同步,中间没有云。
获取 Bramble:
![]() 你的密码库 | ![]() 选择密码库 | ![]() 在页面上自动填充 |
|---|---|---|
![]() 保存新的登录信息 | ![]() 更新已有的登录信息 | ![]() 编辑条目 |
![]() 创建通行密钥 | ![]() 使用通行密钥登录 | ![]() 设置 |
![]() 解锁方式 | ![]() 备份与导入 | ![]() 定时云备份 |
![]() 设备同步 |
你的密码在你的设备上加密并保存在那里:桌面端位于浏览器扩展的私有存储中,移动端位于应用私有的加密存储中。没有服务器保存你的密码库,也无需注册任何账户。要在多个设备上使用同一个密码库,Bramble 会直接在设备之间进行点对点同步,端到端加密,中间没有云。想要一份自己手里的副本?随时导出一个加密备份文件即可。
所有加密操作都发生在一个单一的 Rust 核心内:在浏览器中编译为 WebAssembly,在 iOS 和 Android 上编译为原生库。密钥派生、加密和解密都在该核心中运行,派生密钥在使用后即从内存中清除。
没有其他人持有你密码库的副本,因此备份由你自己负责。Bramble 为你提供了两种方式:
.bramble 文件,并把它存放在安全的地方:另一块硬盘、U 盘,随你喜欢。它始终保持密文状态,因此打开它仍然需要你的主密码,单独窃取备份毫无用处。时不时这样做,尤其是在任何重大变更之前。一台已同步的第二台设备与偶尔的导出相结合,意味着你永远不会因为丢失或损坏一台设备而失去密码库。
移动应用复用 Bramble 的 Rust 加密核心和密码库格式,并在其上提供原生操作系统自动填充:
iOS 和 Android 应用独立于扩展进行版本管理和发布。
www.ikea.com、ca.accounts.ikea.com 和 ikea.com 都匹配同一条登录信息。一个条目,多个 URL。在浏览器上是页面内的下拉菜单,能触及 iframe 和 shadow DOM 中的表单;在移动端则是跨应用和浏览器的操作系统自动填充栏。.bramble 文件。打开它仍然需要你的主密码。.kdbx(KDBX4)格式,并使用你为该文件选择的密码,然后可在 KeePassXC 或任何其他 KeePass 应用中打开。没有锁定:出门和进门一样容易。otpauth:// URI 或裸密钥,Bramble 就会生成六位验证码。云服务商把所有人的密码库都保存在他们的服务器上,形成一个巨大的攻击目标。一旦某家被攻破,泄露的不是你一个人的密码库,而是数百万个同时泄露,而你几个月后从一篇博客文章中才知道。说的就是你们,LastPass 和 Dashlane 👀
Bramble 扭转了这种局面:
这种取舍是真实存在的,值得坦诚相告:服务器上没有"我忘记密码了"这样的按钮。但你并非没有安全网:每个密码库都会获得一个恢复代码,你也可以注册一个硬件密钥作为另一种解锁方式。保存好恢复代码,保持第二台设备同步,并时不时导出备份。如果所有解锁方式(密码、密钥和恢复代码)都丢失了,密码库也就消失了,因为没有其他人持有副本。
Bramble 使用 LUKS 风格的密钥槽和信封加密。有一个随机的库密钥(VEK)真正保护你的数据。每种解锁方式(主密码、安全密钥、生物识别或恢复代码)都会派生自己的密钥加密密钥(KEK),用于解开同一个库密钥的副本,因此添加或撤销一种解锁方式绝不会重新加密任何条目。库密钥随后为每个条目解开一个全新的逐条目密钥,由该密钥解密条目本身。一切都使用 AES-256-GCM,全部运行在同一个 Rust 核心内(浏览器中编译为 WebAssembly,移动端为原生库)。
flowchart TD
subgraph unlock["Unlock (any one of these)"]
PW["Master password"]
SK["Security key<br/>(WebAuthn PRF)"]
RC["Recovery code"]
end
PW -->|"Argon2id"| KEK["Key-Encryption Key (KEK)<br/>32 bytes, never stored"]
SK -->|"HKDF-SHA256"| KEK
RC -->|"Argon2id"| KEK
subgraph slots["Key slots (in the vault)"]
S["wrapped Vault Key<br/>per slot"]
end
KEK -->|"AES-256-GCM unwrap"| VEK["Vault Key (VEK)<br/>random, protects everything"]
S -.->|"one slot per unlock method"| VEK
VEK -->|"decrypt entries blob"| ENTRIES["Encrypted entries"]
VEK -->|"AES-256-GCM unwrap"| DEK["Per-entry key (DEK)<br/>fresh & random per save"]
DEK -->|"AES-256-GCM decrypt"| DATA["Entry data<br/>(passwords, notes, cards, keys)"]
你的主密码只用于在加密核心内派生密钥,KEK 和解密后的密钥在使用后即从内存中清除。在存储中,只有密码库头部是可读的,其余一切都是密文。
如果你喜欢 KeePass,你会感到宾至如归:你自己的加密数据库,由你掌控,没有云中间商。Bramble 甚至能导入你的 KDBX4 文件。不同之处在于:
KeePass 的理念,加上浏览器原生和移动端原生的外衣,以及流畅好用的自动填充。
Bramble 的部分代码是在 AI(Claude Opus)辅助下编写的,但每一行都由一位拥有十多年经验的软件工程师指导、审查和打磨,尤其是安全关键部分。AI 只是一个快速的打字员,而不是架构师。代码库经过了大量自动化测试和人工测试,因为对于安全软件来说,"看起来能运行"是不够的。
开源项目,欢迎贡献。CONTRIBUTING.md 包含设置步骤、编码规范以及 CI 的期望。有几件事值得提前了解:
添加真实站点自动填充夹具或导入格式覆盖的 PR 尤其有用。
Bramble 是免费开源的。如果它对你有用,非常欢迎打赏。💜 用你的钱包扫描二维码,或复制下面的地址。
| Monero (XMR) | Bitcoin · Lightning | Bitcoin · 链上 |
|---|---|---|
![]() | ![]() | ![]() |
Monero (XMR)
4AC3txuTwFm4fkamoYeK47c9EpnPwbreHNxJeKDYHiDNN6weD5vVA4BCH1azQhSxa6JjereuVpt21Pu2MyRDFDNNH6KGnWq
Bitcoin · Lightning
Bitcoin · 链上
bc1q78sd5rnuufqdtv9plp0p56hrq72c9unj8tec8t
Bramble 是自由软件,以 GNU 通用公共许可证 v3.0 发布。完整文本请参阅 LICENSE 文件。简而言之:使用它、研究它、分叉它、分享它。如果你分发修改版本,请同样传递这些自由,并让你的源代码也以 GPLv3 提供。