最近我把不少心思放在一件事上:给个人数据找个安全的安放之处。不是因为藏着什么了不得的秘密,就是单纯觉得,自己的文件凭什么要光着放在别人家的柜子里。这些天我缠着 Codex 来回问了一堆问题,想法一点一点磨成型。最后我把这方案想明白了——结论是不可行,我也不会真的去做。写下来,是怕过阵子连"当初为什么这么想"都忘了,也想把这份思考分享出去。
这篇只是我的思考记录,不是完整的技术方案。文里涉及的平台现状、限速数值、封号案例,都是我了解到的信息,云盘的策略变得很快,请以实际情况为准。
起因其实有点跑题。我先是查 JuiceFS 是什么:数据和元数据分离,数据放对象存储,元数据放数据库,POSIX 兼容,还和 K8s 集成得很好。我又追问了一句"为什么说它容量近乎无限",得到的解释是:数据层跑在对象存储上,容量取决于对象存储集群本身,扩容对使用者完全透明。
本来到这儿,了解一个新工具就够了。可我问了一个把方向整个带跑的问题:它有没有"不被平台审查"的能力?
答案是没有。JuiceFS 自己不审查任何东西,审查发生在底层的对象存储:公有云的 OSS、COS 都带着内容审核,只有自建 MinIO,才谈得上不受平台审查。
我不死心,又追问:那把文件分片呢?分片之后,平台总看不出来了吧?
答案依然是没有。分片只是传输层的一种优化手段,平台审查的对象是合并还原之后的完整文件。你把它碎成一百块,拼起来还是它,审查照样落在它头上。
这两句回答让我愣了一会儿。我真正在意的其实根本不是"搭一个存储系统",而是一个更朴素的东西:我的数据,能不能有一层连平台都读不懂的外壳。
顺着这个念头,我开始琢磨"有没有真正的分片存储"——云端存的本来就是一个个分片,下载到本地再还原,再配合加密,让每个分片单独拿出来都毫无意义。答案是有,Horcrux 这类工具早就实现了。
但我很快认清了一个区别:这类工具规避的是"内容审查",不是"行为风控"。平台确实读不懂你的数据是什么,但它看得懂你的行为反常——比如短时间内高频上传一大堆加密小文件。审查是从内容上拦你,风控是从行为上标记你,这是两码事。
所以绕回最开始,我的目的其实就一句话:我就是为了个人数据安全。加密、分片、分散存储,对这个目的来说完全合理;代价是密钥管理的责任全部落在我自己头上,恢复数据也比"一个文件夹多端同步"麻烦得多。这个代价,当时我觉得可以接受;不过后来会发现,真正挡路的还不止这笔账。
想清楚之后,方案慢慢成形:一个客户端,生成一个加密文件作为密钥,这个密钥文件能传到其他设备;客户端对接各大云盘,做到加密存储、分块存储。
我一度以为这种需求应该很常见,结果把现有的工具翻了一圈,找不到完全对得上的。Horcrux 最接近,Cryptomator 最成熟,但"用一个密钥文件解锁整个云盘"——没有现成方案。
分块这件事我也细化过:不是所有文件都分块。小文件整体加密直传就好,只有大文件才加密后分块、分散存放,另外需要一个索引文件,记录每个分片放在哪。
这样恢复流程就清楚了:跨端带一个密钥文件,从云盘导入索引文件,两者合起来就能把数据取回来。密钥文件小而稳定,索引文件随数据变化而变,两个文件分离,各管一段。
文件要分享给别人,直接把密钥文件发过去不现实。用信封加密:拿接收者的公钥去加密 File Key,生成一个只属于这次分享的密钥文件,接收者用自己的私钥解开,就能还原内容。
这里有个特别容易绕晕的点。云盘为了保证内容安全,密文本来就不会公开可访问——云盘鉴权负责"你能把密文下载下来",我的分享密钥文件负责"你能把密文解开"。两层各管各的,正好互补,不用指望云盘来当这一层锁。
后来我还冒出过一个更偷懒的想法:按时间动态生成几个文件夹,每个自带密码,里面放各部分分片,那公开访问是不是也无所谓了?逻辑上成立,但有个前提得分清:“访问密码"和"解密密钥"是两回事。把密文挂到网上,等于把锁柜大剌剌摆在街上,密码的强度就是仅有的安全底线——太弱的密码,挡不住慢慢试的人。
到这儿,方案在纸面上已经挺完整了。真正把我拉回地面的,是"下载"这件事。
给对方下载文件是个很实际的问题:有的平台不支持在线下载,有的要登录,有的限速。这个环节只能塞进客户端内部:优先走 API 拉取,WebDAV 当适配层,实在不行再解析直链兜底。
然后我按"稳定、支持 API、不限速、不用企业资质"这几个条件,把国内平台一个个过了一遍,越看越清醒:
- 百度网盘:API 下载照样限速,非会员 96~170KB/s;SVIP 的官方客户端能满速,API 却仍然受限。社区有模拟官方客户端换直链的方案,那是拿封号风险换的。
- 123 云盘、光鸭云盘:相对最接近理想,但都没让我放心。123 的风控出了名激进,有过"18TB 原创素材被封、要求加钱升级商用版"的案例;光鸭的风险,当时只聊到它不能完全排除,具体我没再深挖。
- 阿里云盘第三方工具永久封号,115 对"孤本文件高频上传"这种异常行为有风控,百度对加密压缩包也有自己的限制。
- 蓝奏云一度像是发现了捷径:每个分片 50MB 不就行了?技术上可行,但分卷压缩可能失效、下载只能一个一个点、条款对内容审查严格,更别说它根本没有官方 API,社区方案脆弱也不稳定。
- OSS 的账也算过:存储费不高,流量费才是大头,100GB 存储加 100GB 下载,一个月大概 59 元。想白嫖的话,Cloudflare R2 最接近完美——10GB 存储、流出免费;中科院数据胶囊给了 20GB 免费,但注册繁琐、没有桌面客户端、没有增量同步、还会长期静默清空数据,定位上就是个毛坯房。
绕了一大圈,理论上每一步都是走得通的:加密、分片、分散存储、信封加密分享、密钥和索引分离……但要把这些串成一个能用的成品,却找不到落点。要么平台限速限到让人没耐心恢复数据,要么风控随时可能封掉账号,要么各家平台的体验拼不出一个"接近无感"的完整方案。方案不可行,问题不在某个环节本身,而在于"拼起来"这件事。
所以这篇文章的结论并不漂亮:这方案最终判定不可行,我也不打算真的去做。花这么多时间想明白"为什么不可行”,本身也算一点收获。把它写下来,就当把想法分享给同样动过念头的人——如果哪天真有人找到更好的路子,希望这篇能帮他省掉前面这些弯路。