接收加密文件夹:在不受信任的设备上只存密文
场景:数据要过别人的机器
租用的云服务器、朋友的 NAS、公司内网的一台机器——你想把它当同步中转,但不愿意它看到文件内容。官方提供的方案是把对方设备标记为不受信任(untrusted),共享文件夹时设置一个加密密码。
效果(官方文档的原话是数据在对方磁盘上「成为乱码,不知道密码就无法解读」):
- 受信任端发出数据前用密码加密;
- 不受信任端存储、中转的全是密文;
- 另一台持有相同密码的受信任设备可以从密文端取回明文。
配置方法
受信任端(数据源头):设备编辑 → Sharing 标签,共享文件夹给对方时在 Encryption Password 栏填入密码(密码与文件夹 ID 共同参与加密,两者都要保存好)。
不受信任端:接受文件夹时把文件夹类型设为 Receive Encrypted(接收加密)。此后它对内容保持「无知」:文件名、目录结构、文件内容全部加密存储,磁盘上是一堆形如随机大写字母的文件名,按哈希前缀分层存放。
也可在设备 Advanced 页勾选 Untrusted——此后与该设备的所有文件夹共享强制要求密码,忘设密码直接拒绝连接。
技术细节与边界
- 加密算法为 XChaCha20-Poly1305 与 AES-SIV,密钥由密码和文件夹 ID 经 scrypt 派生(官方规格文档);
- 不受保护的信息:文件夹 ID 与标签、文件大小(密文比明文略大,但能反推原始大小);
- 效率代价:不同文件之间不能复用块(否则会暴露「两个文件内容相同」),改一个文件名也会触发整文件重传——大文件场景下要知道这一点。
找回明文
若不受信任端的数据库损坏、或你拿到一份密文备份要还原,在受信任设备上执行:
syncthing decrypt --to 明文输出目录 --password 你的密码 加密目录路径
该功能的定位
官方文档开头标注此功能仍为 beta/测试性质。它解决的是「存储节点不可信」这一特定问题;日常设备彼此可信时不需要启用。