找回丢失的 masterkey.cryptomator —— Recovery Key 一键重建
masterkey.cryptomator 丢了会发生什么
你把保险库目录复制到另一台设备、或者云盘同步过程中 masterkey 被误删 / 损坏 / 同步失败,Cryptomator 会:
- 主界面上尝试 Unlock 时弹出对话框:"Masterkey file not found."
- 保险库的其他文件都还在(vault.cryptomator 和 d/ 里的所有密文文件都完好)
- 只是 Cryptomator 没了"解密主密钥的钥匙"
密文文件本身一点没坏——你只是缺了把它们解密的 masterkey。这时候 Recovery Key 就能救场。
恢复步骤
有两种进入恢复流程的方式:
方式 1:从 Unlock 对话框里触发
- 主界面选中保险库 → 点 Unlock
- 弹出 "Masterkey file not found" 对话框
- 有两个选择:
- Choose —— 手动指定之前备份好的 masterkey.cryptomator 文件位置(如果你有备份)
- Restore the masterkey file instead —— 勾上这个选项,点 Restore
- 弹出生成 Recovery Key 的对话框 → 输入你的 Recovery Key 12 个词
- Cryptomator 恢复正确的 masterkey.cryptomator → 解锁保险库
方式 2:用 Recover Existing Vault 入口
如果 masterkey 丢了的保险库还没被添加到 Cryptomator 列表里:
- 主界面加号 + → Recover Existing Vault…
- 选中保险库密文目录
- Cryptomator 自动检测到 masterkey 缺失 → 弹 Recovery Key 输入框
- 输入 Recovery Key → 恢复 → 保险库被添加回列表
恢复过程中做了什么
Cryptomator 收到 Recovery Key(12 个词)后:
- 把 12 个词反推出原始的 512 bit 主密钥(2×256 bit)
- 随机生成一个临时密码(或者让你输入一个新密码)
- 用这个临时/新密码派生 KEK
- 用 KEK AES Key Wrap 包裹原始主密钥
- 按 Vault Format 8 的 JSON 格式写回
masterkey.cryptomator - 写回 scrypt 参数等元数据
整个过程中,主密钥本身没变——还是原来那对 256 bit。变的只是"包裹它的 KEK",因为你的密码可能和当初创建保险库时不一样了。
这一点非常重要:恢复 masterkey 不会改变保险库的加密内容。所有
.c9r密文文件都还是用原来的主密钥加密的——恢复只是重建了"打开保险库的那把钥匙"。
恢复后新的密码是什么
恢复成功后,Cryptomator 会提示你:
- 用恢复时输入的 Recovery Key 对应的新密码解锁
- 旧密码可能已经不能用了(因为 masterkey 被重新包裹过,KEK 变了)
但 Recovery Key 依然有效——它和主密钥本身绑定,没被改变过。
前提:Vault Format 8 以上
Recovery Key 重建 masterkey 这个功能只有 Vault Format 8 才支持。如果你的保险库是 Format 7 或更早版本,这个选项不会出现。
Format 7 的保险库如果 masterkey 丢了,完全没救——Cryptomator 没有任何方式找回。唯一的办法是从早期的密文目录备份里找到 masterkey 文件。
恢复失败怎么办
如果 Recovery Key 输入正确但恢复失败:
- 检查 Vault Format 版本——到保险库目录里看 vault.cryptomator(如果它还在的话),用 JWT 解码看看 payload 里的
format字段是不是 ≥ 8 - 检查 Recovery Key 拼写——12 个单词每个都必须和当初的 Recovery Key 完全一致(拼写、顺序、空格)。Cryptomator 有自动补全功能(见下一页),尽量用它
- 换一个 Cryptomator 版本试试——某些旧版本可能不支持恢复
- 去官方社区发帖——community.cryptomator.org
恢复之后立刻做什么
恢复成功 → 解锁保险库 → 确认所有文件都在 → 立刻:
- 锁定保险库
- 强制触发云盘同步(等云盘把新 masterkey.cryptomator 同步上去)
- 清空云盘版本历史(防止旧 masterkey 被恢复回去)
- 给新 masterkey 做一份本地备份(防止下次又丢)