求用于网盘存储的冗余加密软件

需求是把大量媒体数据存到网盘上,要求加密文件内容文件名。目前考虑用 Cryptomator,但看到有用户反馈,百度网盘会莫名其妙删掉一两个加密后的文件,导致整个数据无法恢复。

因此,我需要一个具备冗余加密功能的方案:即能把一个文件切分成多个碎片,即使其中少数碎片丢失,依然能从剩下的碎片中恢复出完整的原文件。

请问有没有支持这种“加密+冗余”的工具或方法?

文件复制两份,然后上传两份。完美满足需求

winrar内部添加恢复记录

你提到了“百度网盘会莫名其妙删掉一两个加密后的文件,导致整个数据无法恢复。”

看起来只需要对所有文件分别加密就可以了。百度网盘会删掉其中的一部分,但是其它的加密文件都可以解密恢复。

如果想要保留所有文件,那按照你说的情况不太可能。因为你不知道百度网盘会删多少。就算你存了双份,你也很难保证厂商会不会全删掉。

(其实我对“百度网盘会莫名其妙删掉一两个文件”这个说有些疑问,我总感觉是加密后文件名长度超了,或者有非法字符,导致没存上去)

大概率是这个原因,我用的rclone方案配合OneDrive也需要将默认编码改为base32768来避免非法字符和过长的加密文件名,楼主可以参考下

这个需求有点意思。我检索了下资料,这个需求使用 reed-solomon编码 就可以实现。

利用AI就可以比较容易的实现一个最小功能的CLI软件。

选用 GitHub - klauspost/reedsolomon: Reed-Solomon Erasure Coding in Go · GitHub 这个库就可以开干了。

已经做了一个最小可用实现。测试功能ok,基本满足楼主需求。

1 个赞

已发布二进制。通过这次尝试,对 reed-solomon 方法有了基础的了解。还算是有点收获。

以前用过一个 CryptSync,但只能加密,没有冗余

大佬神速啊…认真学习:open_book::pen::pen::pen:

之前说 Cryptomator 丢失加密文件会无法解密,感觉不够严谨,容易误导人。所以做了个实验,同时参考了它的官方文档(https://docs.cryptomator.org/)。

实验过程
Cryptomator 加密了一个 25MB 的文件夹,里面有 101 个文件和 38 个文件夹,包括文本文件和视频。文件夹递归对比使用 Beyond Compare

加密文件夹形如:

.
│   masterkey.cryptomator
│   masterkey.cryptomator.60B6DDF2.bkup
│   vault.cryptomator
│   vault.cryptomator.1AB88A04.bkup
│
└───d
    ├───2F
    │   └───T7ME6WQHACX63ZDNAS45I4FESX3MSG
    │           dirid.c9r
    │
    ├───36
    │   └───6OD3F4NCGDEVVLZ4QIUXTGZ637FQ7K
    │       │   aRBQRRSH2jz8OcaYzaTDHDPDXkc=.c9r
    │       │   dirid.c9r
    │       │
    │       └───4LihZrErsTsG5-X0_a83wxOvPz8=.c9r
    │               dir.c9r
    ......

这些文件可以分为三类,不同类型的丢失影响也不一样:

1. 后缀包含 .cryptomator 的文件
这些文件保存着加密密钥等元信息。解锁需要同时具备 masterkeyvault
那两个 .bkup 后缀的是备份文件,能恢复对应的 masterkeyvault
如果 masterkeyvault 本身以及它们的备份都丢了,就只能靠一开始存好的备份密钥(创建密码库时会随之生成)当最后手段。
好消息是:只要把备份密钥在本地另外存一份,就不怕这四个文件丢失。

2. 名字又长又乱的那种文件
存的是实际的数据,每个文件只对应一个原文件。所以丢了其中一个,只会损坏它对应的那个文件,不会影响别的文件。
但有例外:丢失了对应文件夹的加密文件,那么文件夹下的所有文件都会变成孤儿文件,能恢复数据但无法恢复文件夹结构。

3. dirid.c9r 文件
我做了个极端实验:把所有的 dirid.c9r 文件都删掉,居然还能正常解密!
查官网知道,这些文件记录的是目录结构,没有它们可能会让目录结构没法正确重建。实验删掉这些之后,“解密文件名”功能就无法使用了。但整个解锁密码库还是有正确目录结构的,并且可以“健康检查”恢复。
这类文件至少有一定容灾能力。

小结
根据实验,如果开两个不同密钥的密码库,并且把备用密钥保存在本地,容灾性应该还可以。
不过还没最终决定用 Cryptomator,再研究下大家的推荐。

1 个赞

winrar可以,但是要用恢复卷,50%就是10个分卷可以丢5个,足够冗余了

推荐两个方案:

  1. WinRAR分卷压缩+加密+设置冗余卷
  2. 任何压缩格式的分卷压缩+加密+MultiPar
1 个赞

winrar就支持.

恢复卷

此选项仅在创建 RAR 多卷 压缩文件时可用,在这种情况下,您只需选择要创建的 恢复卷 的数量。 您还可以向此参数附加一个百分比字符,在这种情况下,创建 .rev 文件的数量将等于从 RAR 卷总数中获取的这个百分比。 每个恢复卷允许重建一个缺失的卷文件。 您可以 在此处阅读有关此功能的更多信息。

恢复卷

恢复卷


恢复卷或 .rev 文件是可以由 WinRAR 创建的特殊文件,并允许重建卷集中丢失和损坏的文件。 它们只能用于 多卷压缩文件

此功能可能适用于备份,例如,当您将多卷压缩文件发布到新闻组,而部分订户没有收到某些文件时。 重新发布恢复卷而不是通常的卷可能会减少要重新发布的文件总数。

每个恢复卷都能够重建一个缺失的 RAR 卷。 例如,如果您有 30 个卷和 3 个恢复卷,则可以重建任何 3 个缺失的卷。 如果 .rev 文件的数量少于缺失的卷的数量,则无法重建。 常规卷和恢复卷的总数不得超过 65535。 恢复卷的数量不得超过 RAR 卷的 10 倍。 超出阈值的值将自动调整。

创建恢复卷后,不得修改原始 RAR 卷。 恢复算法使用存储在 REV 文件和 RAR 卷中的数据来重建缺失的 RAR 卷。 因此,如果您在创建 REV 文件后修改 RAR 卷(例如,锁定它们),恢复过程将失败。

除了恢复数据之外,RAR 5.0 恢复卷还存储服务信息,例如受保护 RAR 文件的校验和。 因此,它们比它们保护的 RAR 体积略大。 如果您计划将单个 RAR 和 REV 文件复制到某些可移动媒体,则需要将其考虑在内,并指定比媒体大小小几 KB 的 RAR 卷大小。

WinRAR 在单击 .rev 文件或使用 rc 命令时重建丢失和损坏的卷,如果它找不到下一个卷并在解压缩时找到所需数量的 .rev 文件,则会自动重建丢失和损坏的卷。

您可以使用 “压缩文件名称和参数” 对话框中的“恢复卷”选项或 “保护压缩文件 ”命令中的类似选项来创建恢复卷。 在 命令行模式下 ,您可以使用 -rv开关或 rv 命令来完成。

在重建之前,已损坏卷的原始副本将重命名为 *.bad。 例如,volname.part03.rar 将重命名为 volname.part03.rar.bad。

我感觉winrar就挺合适,参考恢复卷一节: