密码修改 —— 为什么改密码不等于升级强度
修改密码的正确位置
Vault Options → Password 标签页 → 点 Change Password。弹出对话框:

三个输入 + 一个复选框:
- Current password —— 当前密码(如果你能解锁保险库说明你知道这个)
- New password —— 新密码(至少 8 字符,强烈建议密码短语)
- Repeat new password —— 再输一次确认
- 复选框:"I understand that files will not be re-encrypted and that older masterkey files stored in cloud version history could still be decrypted with the previous password." —— 必须勾上才能点 Change
改密码到底做了什么
Cryptomator 用你的旧密码派生旧 KEK → 解包出主密钥(两把 256 bit)→ 用你的新密码派生新 KEK → 用新 KEK 把同一对主密钥重新包裹 → 写回 masterkey.cryptomator。
改密码流程:
旧密码 → scrypt → 旧 KEK → AES Key Unwrap → 主密钥(不变!)
主密钥 → AES Key Wrap → 新 KEK → scrypt → 新密码
写回 masterkey.cryptomator
文件本身完全不变——还是原来的那些 .c9r 密文文件,用原来的主密钥加密的。
这个设计的好处
- 快:不管保险库里有多少文件,改密码几秒钟搞定(只处理 masterkey.cryptomator 一个小文件)
- 安全:主密钥没变,整个加密体系的根没变
- 方便:多设备同时解锁的保险库不会因为改密码而需要重新加密同步
这个设计的坑
坑 1:云盘版本历史 = 旧 masterkey 还在云端
很多云盘(Google Drive "Version History"、Dropbox "Version History"、OneDrive 文件历史)会在云端保留旧版本的文件。你改密码后,云端的 masterkey.cryptomator 会被云盘替换成新版本。但如果云盘保留了版本历史:
攻击者如果能访问你的云盘版本历史 + 你的旧密码,就能下载旧版本的 masterkey.cryptomator → 用旧密码派生旧 KEK → 解包出和现在完全一样的主密钥 → 解开所有文件。
主密钥没变,旧密码也能解开它——因为主密钥本身还是那对 512 bit,只是包裹它的 KEK 换了。
坑 2:Recovery Key 还是那个
改密码后,Recovery Key 完全不变——因为 Recovery Key 本来就是主密钥的人类可读形式,和密码无关。改密码不会改变 Recovery Key,旧 Recovery Key 依然有效。
什么时候改密码是安全的
以下场景改密码基本没问题:
- 你只是觉得换个密码更安心,但旧密码并没有泄露给任何人 → 改吧,没事
- 云盘不保留版本历史(或你已清空版本历史)→ 改吧,旧 masterkey 没了
以下场景改密码不安全:
- 旧密码已经泄露(比如电脑被入侵过,或者密码管理器被攻破)
- 云盘保留版本历史且你没有清空
正确的"升级密码强度"方式
如果旧密码已经泄露、或者你想把弱密码换成强密码,不要直接改。正确步骤:
- 新建一个保险库(密码设成新的强密码,Recovery Key 也新的)
- 解锁旧保险库 → 把里面所有文件拖到新保险库里 → 等新保险库完全加密 + 云盘同步
- 确认新保险库完整可用(换一台设备解锁试试)
- 锁定旧保险库 → 彻底删除旧保险库目录(本地和云端)
- 清空云盘版本历史(重要!确保旧 masterkey.cryptomator 真没了)
- 保留旧保险库的 Recovery Key?不保留? —— 旧 Recovery Key 指向旧主密钥,旧保险库删了就没用了。可以销毁。
这个流程比较麻烦,但它是唯一能确保"旧密码再也解不开你的文件"的方式。
忘记当前密码怎么办
改密码对话框里要求输入"Current password"——但如果你忘了当前密码,还是能用 Recovery Key 重置新密码(见下一页 用 Recovery Key 重置密码)。和改密码本质上是同一件事,只是 Recovery Key 绕过了"旧密码"这个步骤。