上传云端前如何加密文件
分步指南教你在上传到云存储之前加密文件,最大程度保护隐私和数据安全。
在上传前加密文件,意味着存放在 Google Drive、Dropbox、iCloud、OneDrive、S3、R2 或 Backblaze B2 中的字节只是密文,只有你能解密。服务商看到的是乱码。你可以使用 7-Zip 配合强密码(AES-256 CBC 模式,足以应对大多数威胁)、rclone 配合 crypt 后端(NaCl SecretBox,更佳)、Cryptomator 进行文件夹级透明加密(AES-256-GCM)、或 age/gocryptfs 用于命令行工作流。具体选择取决于你是否需要随机访问、共享或移动端读取,但以上五种方案都能让你处于 CCPA 1798.150 加密安全港的保护范围内。
为什么服务商提供的加密还不够
每家主要云服务商都以"静态加密"为卖点——AES-256 加密驱动器上的数据。他们不会告诉你的是:他们持有密钥。Google 可以解密你的 Drive,Apple 可以解密你的 iCloud(2022 年部分地区推出的高级数据保护层级除外),Dropbox 可以解密你的文件。任何触达密钥管理系统的传票、内部管理员或入侵,都能触达你的文件。上传前的客户端加密彻底改变了这一局面:服务商持有密文,你持有密钥,向服务商发出的传票什么有用信息都得不到。
7-Zip:简单的基于密码的加密
最便于临时加密的工具是 Windows/Linux 上的 7-Zip、macOS 上的 Keka,或 Android 上的 ZArchiver。右键单击文件,选择"添加到压缩包",选择 7z 格式,加密方式选 AES-256,设定强密码。生成的 .7z 文件即为密文,可上传到任何云端。注意:7-Zip 的默认密钥派生函数(KDF)偏弱——使用固定的 2^19 次 SHA-256 迭代派生密钥,现代 GPU 破解速度约为每秒 10 万个密码。使用 20 个以上字符的口令短语来弥补这一不足。适合偶尔上传;对于 10 GB 文件效率较低,因为任何改动都需要重新上传整个压缩包。
rclone crypt 后端:云无关同步
rclone(开源,MIT 许可)可同步到 70 多个云服务商,其 crypt 后端使用 NaCl SecretBox(XSalsa20-Poly1305)在上传前加密文件。用 rclone config 配置一次,设定密码,此后任何 rclone sync ~/docs crypt:bucket 命令都会透明地完成加密。文件名也会被加密。密钥存放在 rclone 的本地配置中,经过混淆处理,但如果有人控制了你的主目录则可还原——将密码存入密码管理器,并将配置视为可替换的。适用于 Backblaze B2(每 GB/月 0.006 美元)、R2(零出口费用)或 Wasabi(每 GB/月 0.0068 美元)。
Cryptomator:文件夹级透明加密
Cryptomator(开源,桌面端免费)在 macOS、Windows 和 Linux 上将加密保险库挂载为虚拟驱动器。将文件拖入保险库,Cryptomator 使用 AES-256-GCM 加密并将密文存储在同级文件夹,由 Dropbox 或 Drive 同步。明文原始文件永远不会上传到云端。各文件使用从保险库密码通过 scrypt 派生的独立密钥。一个 12 MB 的 .docx 加密后仍是 12 MB——没有压缩包开销——因此增量同步正常工作。移动应用(iOS 15 元人民币,Android 18 元人民币)读取相同的保险库格式,手机在 Cryptomator 应用内看到解密文件,而同步服务商什么都看不到。
age 和 rage:Unix 命令行工具
age(读作"ahh-gay")是 Filippo Valsorda 开发的 GPG 现代替代品,使用 X25519、ChaCha20-Poly1305 和 HKDF-SHA256。通过 brew install age 或等效命令安装。密码加密使用 age -p -o file.age file.pdf,公钥加密使用 age -r age1...。输出的 .age 文件可上传到任何地方。rage 是具有相同格式的 Rust 移植版本。与 GPG 相比,age 没有选项、没有信任网络、没有遗留密码算法——只有可用的现代密码学。对于自动化流水线(夜间数据库备份到 S3),age 配合 SOPS 或 KMS 密钥是 2026 年的惯用模式。
VeraCrypt:完整容器卷
VeraCrypt(TrueCrypt 的开源分支)创建挂载为驱动器的加密容器文件。50 GB 的 VeraCrypt 容器可以存放任意文件,使用 AES-256、Serpent 或 Twofish 实时加密,并作为单个文件上传。支持通过隐藏卷实现合理推诿。缺点:修改大型容器内的一个文件意味着需要将整个容器重新同步到云端,这会破坏 Dropbox 的增量同步。将 VeraCrypt 用于归档式备份(年度快照)而非活跃工作集。容器文件在更换服务商时(从 Dropbox 迁移到 Mega)无需重新加密。
gocryptfs:Linux 和 macOS 日常使用
gocryptfs 是已经过安全审计(Quarkslab 2017 年,2023 年再次审计)的 FUSE 文件系统,在 Linux 和 macOS(通过 macFUSE)上运行。类似 Cryptomator 但更轻量:gocryptfs ~/cipher ~/plain 后,你在 ~/plain 中正常工作,而 ~/cipher 中存放密文并同步。文件级 AES-256-GCM 加密,保留目录结构但使用 EME 加密文件名。由于是原生 C 语言而非 Java,速度快于 Cryptomator。与 rclone 配合进行云同步,或与 restic 配合进行去重备份,效果出色。这是希望获得无 GUI 透明加密的技术型 Linux 用户的首选。
密钥派生策略的选择
上述所有工具都从你的密码派生加密密钥。强度取决于 KDF:7-Zip 使用 2^19 次 SHA-256 迭代(约 50 万次),rclone crypt 使用 N=16384 的 scrypt,Cryptomator 使用默认参数 2^15 的 scrypt,VeraCrypt 使用 50 万次 PBKDF2-HMAC-SHA512,age 密码模式使用 N=2^18 的 scrypt。Argon2id 优于所有这些;只有较新版本的 age 包含它。选择至少具有 75 位熵的密码(20 个随机字符或六个 Diceware 词),使 KDF 的弱点无关紧要——100 字符的口令短语即使在迭代次数低的情况下也能抵抗离线攻击。
文件元数据的处理
加密文件内容是主要目标,但元数据同样会泄露信息。文件大小、修改时间戳、文件名和目录结构都会暴露信息。Cryptomator、gocryptfs 和 rclone 会加密文件名;age 和 7-Zip 不会。为实现最大程度的隐私,将敏感文件打包成一个具有混淆名称(archive-2026-05-14.tar.gz.age)和中性修改日期的单一压缩包。服务商看到时间戳,但看不到你编辑了哪些文件。对于与同事共享的云存储,这种混淆程度通常会破坏工作流——根据需要权衡取舍。
何时使用 HexaTransfer 而非永久云存储
如果你上传文件只是为了与一个人共享然后删除,根本不需要云存储——短期有效的加密传输更为合适。HexaTransfer 采用客户端 AES-256-GCM 加密,密钥永远不会到达服务器,上限 10 GB,文件自动过期。相比将 age 加密文件上传到 Dropbox、共享链接、再记得事后删除,专用传输工具需要管理的事情更少。对于永久存储,用上述工具在上传前加密。对于临时共享,使用短期 E2EE 服务。
在 hexatransfer.com 上试试 — 免费、无需注册、最多 10 GB。