提供目录加密视图的文件系统 – EncFS的反转

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

我想知道是否存在“倒置”的EncFS选项? 安装了未加密的目录,在安装目录中只能看到加密文件。 因此,我可以使用未加密的文档,而同步工具只能查看和读取/写入加密文件。

澄清 :我的主要用例是同步而非备份。 我希望能够安全地保持机器同步而不会在本地操作时造成双重加密损失(我必须等待保存时,与传输时间相比,加密操作是最小的时间增量 – 而且它是后台时间,而不是用户时间)

实际上有一个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配置文件夹它就可以工作。

现在,如何完成您指定的内容:

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

 ~/ 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文件系统fusefltfuseflt提供文件系统的只读视图,其中任意用户指定的filter应用于每个读取的文件。

在您的情况下,您想要的filter是像gpg这样的加密程序。

请参阅文档以了解如何编写配置文件。 基本上,使用flt_cmd = gpg --encrypt [... your chosen encryption settings]作为过滤命令。

小心; 如果您搞砸了配置,它可能会将明文数据暴露给您的Internet服务。 我会推荐我的其他答案用于一般用途。


由于您还需要写入支持同步工作,看起来您必须编写自己的FUSE文件系统。 修改fuseflt源以增加写入支持可能并不困难; 只需填写未实现的写入function。 这与读取支持的工作方式相同,调用解密filter而不是加密filter。

要编写FUSE文件系统,可以使用几个 教程 。 有关更多文档,另请参阅FUSE wiki 。

完成此操作后,将您的FUSE filesystem mount命令添加到.profile,以便在登录时自动挂载。

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

我知道有2个合适的备份程序。 这两个文件还可以为您提供文件的完整历史记录。

Duplicity / Deja-Dup

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

您还可以使用Deja-Dup前端,默认情况下包含在最近的Ubuntu版本中。

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

如果您要备份大量数据,则Duplicity不适用。 由于存储增量备份的方式存在限制,因此需要定期运行完整备份,这需要上传所有数据。

Obnam

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

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

Ubuntu包链接 。 还有一个PPA 。

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

请参阅Seafile安全function

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