设置强密码 —— 为什么密码短语比随机字符好记又安全
密码决定了整个保险库的安全上限
Cryptomator 的主密钥本身是 512 bit(加密 + MAC),暴力破解它从计算上不可能。但主密钥被用你的密码派生的 KEK 包裹。攻击者只要能猜到你的密码,就能用它解包出主密钥,进而解开整个保险库。
所以:密码有多强,保险库就有多强。 一个 8 字符的纯数字密码,哪怕 Cryptomator 本身是银行级加密,也会被秒破。
三种密码类型对比
| 类型 | 示例 | 熵(约) | 推荐程度 |
|---|---|---|---|
| 短数字/字母 | qwerty123 | 30 bit | ❌ 不安全 |
| 8 字符随机 | fZ3!k9m@ | 52 bit | ⚠️ 可以但难记 |
| 4 词密码短语 | apple table moon river | 80-100 bit | ✅ 强烈推荐 |
密码短语(passphrase)是目前公认的最佳实践:
- 好记:4 个词连成一句自然语言,比随机字符好记百倍
- 打字错误少:有空格分隔,少打一个词也容易发现
- 熵值高:scrypt 派生过程会把密码短语里的每个额外字符都转化为额外的暴力破解难度
Diceware 风格生成器
一种靠谱的生成方法是 Diceware(用骰子从一个 7776 词的词表里随机选 4-6 个词)。你不一定需要骰子,可以:
- 找在线 Diceware 生成器(搜索 "Diceware passphrase generator")
- 用 1Password / Bitwarden 等密码管理器自带的密码短语生成功能
生成后记下来(写在纸上或者存进密码管理器)——你不可能记住一个 4 词密码短语,除非你特别有天赋。
键盘布局雷区
Cryptomator 直接用你输入的密码字符来派生 KEK。如果你:
- 在英文键盘布局下设的密码是
kühlschrank!1(带德国变音和感叹号) - 之后在中文键盘布局下想解锁保险库
中文布局下你可能打不出 ü 这个字符(或者打出来的 ! 是全角感叹号,和半角 ! 不是同一个字符)。Cryptomator 会一直提示密码错误,但它的"自动补全 Recovery Key"功能不会帮你——密码不做容错。
安全建议:
保险库密码只用 ASCII 字符(字母 + 数字 + 半角符号),避免任何依赖特定键盘布局的特殊字符。
密码短语长度 vs 强度
| 长度 | 估计的暴力破解时间(scrypt 32768 轮) |
|---|---|
| 8 字符随机 | 几周 |
| 12 字符随机 | 几个月 |
| 4 词 Diceware | 数千世纪 |
| 5 词 Diceware | 数亿世纪 |
你不需要 5 词——4 词 Diceware 密码短语已经足够抵御能买到的最强 GPU 集群。多一个词当然更好,但没必要。
常见错误
把保险库密码和云盘密码设成一样的
云盘密码会被云服务商看到(需要验证),而保险库密码你希望谁都看不到。一定设成两个完全不同的密码。
用"记住密码"功能就当密码白设了
Cryptomator 确实可以把密码存在系统钥匙串里(macOS Keychain / Windows Hello / GNOME Keyring),方便下次解锁不用重新输。但这意味着任何能进入你电脑的人都能解锁你的保险库——包括笔记本被偷的场景。
- 如果是个人设备:可以放心存钥匙串
- 如果是工作电脑 / 有被偷风险:不要存钥匙串,每次手动输密码
改密码能升级强度吗?
不能。这是 Cryptomator 设计上的一个 trade-off。改密码只是重新派生 KEK、重新包裹主密钥——文件本身不会重新加密。这导致:
- 如果云盘有版本历史功能(Google Drive 的 "Version history"、Dropbox 的 "Version history"),老版本的 masterkey.cryptomator 可能仍然在云端可访问,里面装着用旧密码派生的 KEK 包裹的主密钥
- 只要攻击者能访问云端版本历史 + 旧密码,就能解包出主密钥
正确的"升级密码强度"方式是:
- 创建一个新保险库,用新强密码
- 把旧保险库所有文件拖进新保险库
- 彻底删除旧保险库目录(包括本地和云端)
- 等云盘确认彻底删除(有些云盘有回收站保留期,要清空)
更多 Vault 管理见 密码修改。