cryptomator 中文文档 下载 App

AES-256 与文件名加密 —— 不只是文件内容,连名字也保密

AES-256-GCM 是工业标准

AES(Advanced Encryption Standard)是美国国家标准与技术研究院选定的对称加密标准,256-bit 是它的密钥长度选项之一。Cryptomator 用的是 AES-256-GCM——GCM(Galois/Counter Mode)是一种带认证的加密模式(AEAD),能同时做到:

这比"普通 AES 加密 + 单独做 HMAC"更安全、更高效,因为 GCM 自带认证标签。

Cryptomator 当前使用的 cipherCombo 是 SIV_GCM——SIV(Synthetic IV)是对初始化向量的特殊处理,目的是让相同的明文文件在加密后能产生相同的密文(对文件名加密尤其重要,见下),同时不降低安全性。

主密钥派生流程图
Cryptomator 主密钥生成与加密流程:加密主密钥 + MAC 主密钥由 CSPRNG 生成,用 AES Key Wrap 包裹后写入 masterkey.cryptomator

文件名加密:确定性加密模式

云盘场景里,加密文件名比加密内容更重要——因为文件内容加密了,但如果云盘还能看到你有 budget.xlsx 这个文件,它仍然能猜到你在存什么。

Cryptomator 对文件名采用确定性加密(Deterministic Encryption)——相同的明文文件名 + 相同的密钥 → 相同的密文。好处是:

加密后的文件名会被 Base64 风格编码(字符集:字母 + 数字 + 下划线 + 星号 + 等号),然后在末尾加 .c9r 扩展名。

目录结构混淆

目录名也走同样的加密流程,而且父目录/子目录的映射关系也被打散。原本的层级关系通过内部的 dirId.c9r 和 dir.c9r 文件维持——解锁状态下由 Cryptomator 重建;密文状态下云盘只看到一堆 hash 目录名。

短名机制(Name Shortening)

部分文件系统(尤其是 Windows 的 NTFS、旧版 FAT32、某些云盘内部存储)对文件名长度有限制。Cryptomator 默认会在加密后的文件名超过 220 个字符时开始"短名"——后面的字符用 hash 替换,确保最终密文文件名不超过所在文件系统的上限。

这是 Vault Format 8 里 shorteningThreshold 字段的作用。你可以在创建保险库时的专家设置里调整它(见 加密文件名长度专家选项),但调整前务必确认目标文件系统的真实限制。

不同系统/云盘的典型文件名长度上限:

平台文件名最大长度路径总长度
Windows NTFS255260(可长路径补丁后 32,767)
macOS APFS2551,015
Linux ext42554,096
Google Drive32,76732,767
Dropbox255无硬性限制
OneDrive255400

短名阈值设在 220 基本能兼容所有主流系统/云盘。调得太低会导致正常文件名也被短名,调得太高可能在某些云盘上同步失败。

一个完整的加密映射示例

解锁状态下你看到:

├─ myProject.pptx
├─ Images for Project
│  └─ ImageOfBees.jpg
└─ …

保险库目录里实际存储的是:

├─ d/
│  ├─ BZ/
│  │  └─ R4VZSS5PEF7TU3PMFIMON5GJRNBDWA/
│  │     ├─ dirId.c9r
│  │     ├─ 5TyvCyF255sRtfrIv...83ucADQ==.c9r      ← myProject.pptx
│  │     └─ FHTa55bH*sUfVDbEb0gTL9hZ8nho.c9r        ← 指向子目录 "Images for Project"
│  └─ FC/
│     └─ ZKZRLZUODUUYTYA4457CSBPZXB5A77/
│        └─ 4lmrQYfE_5ETusEkVJlTJrcFzjwxNBymig==.c9r  ← ImageOfBees.jpg
├─ masterkey.cryptomator
└─ vault.cryptomator

没有任何一个部分能被云服务商用来推断你的文件是什么。 这正是 Cryptomator 相比"只加密内容不加密名字"的其他云盘加密方案最强的地方。

验证加密效果

想确认某个明文文件对应的密文文件是什么?用 Locate 定位加密文件。想反过来(已有密文文件名,想看清明文名)?用 Decrypt 解密文件名。