恢复密钥的本质 —— 为什么它和密码无关、却能绕过密码
先理清楚:Recovery Key 到底是什么
Recovery Key 是一串 12 个英文单词,长得像:
abandon ability able about above absent absorb abstract absurd abuse access accident
它的本质是:加密主密钥 + MAC 主密钥这对 512 bit 的原始字节,被转换成了一串人类可读的单词序列(类似 BIP39 助记词标准)。这串单词可以直接反推出那 512 bit 主密钥——中间没有任何额外的加密或派生。
这意味着:
拿到 Recovery Key = 拿到原始主密钥 = 能解开整个保险库 = 直接绕过密码。
和密码的关系
| 密码 | Recovery Key | |
|---|---|---|
| 作用 | 派生 KEK → 包裹主密钥 | 直接反推出原始主密钥 |
| 独立性 | 每个保险库独立,可改 | 和主密钥绑定,改密码不变 |
| 暴露风险 | 知道密码 + 知道加密的 masterkey.cryptomator = 解包主密钥 | 知道 Recovery Key 就直接有主密钥 |
| 可重置吗 | 只能用 Recovery Key 重置(改密码不是重置) | 不能 |
密码是"通过一道门才能拿到主密钥"——Recovery Key 是"直接拿着主密钥进门"。
它能做什么
Vault Format 8 支持以下四种恢复场景:
| 场景 | 需要什么 | Recovery Key 能救吗 |
|---|---|---|
| 忘了密码,还记得 Recovery Key | Recovery Key | ✅ 重置新密码 |
| masterkey.cryptomator 丢了 | Recovery Key | ✅ 重建文件 |
| vault.cryptomator 丢了 | Recovery Key 或 旧密码 | ✅ 重建文件 |
| masterkey + vault.cryptomator 都丢了 | Recovery Key | ✅ 全重建(1.18.0+) |
| 整个保险库目录物理删除 | 什么都没用 | ❌ 没救 |
Recovery Key 不能做的:
- ❌ 恢复被物理删除的文件
- ❌ 绕过云盘账号验证
- ❌ 解锁别人的保险库
- ❌ 让你"看一眼密码"(Recovery Key 不知道密码是什么,只能绕过它)
为什么它"不破坏加密"
官方在密码页面里说 "Recovery Key feature does not break encryption in any way"——什么意思?
Recovery Key 实际上是主密钥的另一种表示形式,不是后门、不是明文密码。它的存在逻辑是:
Cryptomator 的整个加密体系根在于那对 512 bit 的主密钥。密码只是"获取这对主密钥的一道门"——门丢了(忘了密码)可以用 Recovery Key 这道"直达电梯"。但电梯和门都指向同一个主密钥——加密本身没有被破坏。
如果 Recovery Key 泄露了,攻击者等于直接拿到了你的主密钥——这和攻击者用 GPU 暴力破解你的密码最终解包出主密钥的结果是一样的。加密算法本身没被绕过。
Vault Format 7 及更早没有这个能力
Vault Format 7 及更早版本的 masterkey 里没有 Recovery Key 相关的字段。这意味着:
- Format 7 保险库密码忘了 = 真没了(没有任何方式找回)
- Format 7 保险库 masterkey 丢了 = 真没了(恢复不了)
如果你手上有 Format 7 的保险库(Cryptomator 1.5.x 及更早版本创建的),建议新建一个 Format 8 保险库,把数据搬过去。这不是小事——Format 7 已经不再被更新的恢复功能支持了。
安全警告
把 Recovery Key 的安全优先级和你的保险库密码一样甚至更高地对待。它和密码不同的地方在于:密码可以被云盘版本历史"泄露给旧密码持有者";但 Recovery Key 一旦泄露就是彻底暴露。任何人拿到你的 Recovery Key 都不需要知道你的密码就能访问你的加密数据。
建议的双重保存方式:
- 密码管理器电子存(1Password / Bitwarden / KeePassXC)
- 纸质备份锁起来(写到金属 Recovery Key 板或纸上,锁进保险箱)