双重身份/似曾相识

双重身份/似曾相识

目前我正在使用 EncFS 将我的目录“confidential”加密为“.encconfidential”,并且同步使用在线服务(例如 Dropbox、UbuntuOne 等)加密该目录。但是我的整个磁盘都已使用 LUKS 加密,因此双重加密会影响性能。

我想知道是否有“反转”的 EncFS 选项?未加密的目录被挂载,在挂载的目录中您只能看到加密的文件。因此我可以使用未加密的文档,而同步工具只能查看和读取/写入加密文件。

澄清:我的主要用例是同步不是备份。我希望能够安全地保持机器同步,而无需在本地操作时承受双重加密惩罚(当我点击保存时,我必须等待,与传输时间相比,加密操作是时间的最小增量 - 而且它是后台时间,而不是用户时间)

答案1

实际上,Encfs 有一个“反转”选项。摘自 Encfs 手册页:

   --reverse
       Normally EncFS provides a plaintext view of data on demand.  Normally it stores enciphered data and displays plaintext data.  With --reverse it
       takes as source plaintext data and produces enciphered data on-demand.  This can be useful for creating remote encrypted backups, where you do
       not wish to keep the local files unencrypted.

       For example, the following would create an encrypted view in /tmp/crypt-view.

           encfs --reverse /home/me /tmp/crypt-view

       You could then copy the /tmp/crypt-view directory in order to have a copy of the encrypted data.  You must also keep a copy of the file
       /home/me/.encfs5 which contains the filesystem information.  Together, the two can be used to reproduce the unencrypted data:

           ENCFS5_CONFIG=/home/me/.encfs5 encfs /tmp/crypt-view /tmp/plain-view

       Now /tmp/plain-view contains the same data as /home/me

       Note that --reverse mode only works with limited configuration options, so many settings may be disabled when used.

我还没有尝试同步,但我认为只要你.encfs5在另一端使用相同的配置文件夹它就会起作用。

答案2

现在来了解如何准确执行您指定的操作:

您所要求的是一个只读文件系统视图,它会自动加密通过它读取的任何文件:

~/
    confidential/
        secret_file.txt      # Stored unencrypted
    .enc_confidential/       # Read-only view of files in confidential/
        secret_file.txt      # Encrypted view of corresponding file

执行此操作的标准方法是使用 FUSE(用户空间中的文件系统)。

对于您的用例,已经存在一个可以执行您想要的操作的 FUSE 文件系统,fuseflt.fuseflt提供文件系统的只读视图,其中对读取的每个文件应用任意用户指定的过滤器。

就您而言,您需要的过滤器是类似的加密程序gpg

文档有关如何编写配置文件的信息。基本上,用作flt_cmd = gpg --encrypt [... your chosen encryption settings]过滤命令。

请小心;如果您弄乱了配置,可能会将纯文本数据暴露给您的互联网服务。我建议大家使用我的其他答案。


由于您还需要写入支持才能使同步工作,因此看起来您必须编写自己的 FUSE 文件系统。修改源代码fuseflt以添加写入支持可能并不难;只需填写未实现的写入函数即可。这将以与读取支持相同的方式工作,调用解密过滤器而不是加密过滤器。

为了编写你的 FUSE 文件系统,一些 教程可用。另请参阅FUSE 维基了解更多文档。

完成此操作后,将您的 FUSE 文件系统挂载命令添加到您的 .profile 中,以便它在登录时自动挂载。

答案3

原则上这是可能的(使用 FUSE 文件系统),但更简单的选择是使用现成的加密备份程序,使用您的在线服务作为备份目标。

我知道有 2 个合适的备份程序。这两个程序都能提供文件的完整历史记录。

双重身份/似曾相识

表里不一Ubuntu 软件包) 是一款备份程序,可高效地将压缩、加密的增量备份写入远程位置。增量备份节省空间,因为它使用 rsync 算法来生成二进制差异。

您还可以使用 Deja-Dup 前端,它是最新 Ubuntu 版本中默认包含的。

Duplicity 支持写入许多远程位置,或者后端。具体来说,Duplicity 有一个 Ubuntu One 后端。我认为它不直接支持 Dropbox,但你可以告诉它备份到 Dropbox 同步的本地目录。

如果你要备份大量数据,Duplicity 就不合适了。由于增量备份的存储方式有限,它需要定期运行完整备份,这需要上传全部您的数据。

奥布南

对于较大的备份,请查看奥布南. 它存储加密数据去重在备份存储库中。要将其与远程存储服务一起使用,请告诉 Obnam 备份到 Dropbox/Ubuntu One 将同步的位置的存储库。由于 Obnam 使用基于 B 树的存储库格式,只需将新/更改的数据写入存储库,因此同步速度应该很快。

缺点是它需要在硬盘上存储 2 份数据副本(规范副本和备份存储库中的副本)。

Ubuntu 软件包链接。还有购电协议

答案4

另一个现成的同步工具是 Seafile。它是一个类似 Dropbox 的单服务器多客户端解决方案。最新版本中有一个选项,可以以服务器不知道密钥的方式共享加密文件夹。

Seafile 安全功能

提示:为了更好地理解文档,Seafile 将共享文件夹称为“库”。

相关内容