这基本上是对截至 2020 年 2 月的答案的完全重写,并且有更多的细节。
EncFS 在大多数普通用户可能会遇到的各种情况和威胁模型下是可靠安全的,尤其是对于 Dropbox 等文档同步服务。更具体地说,当您的期望类似于“攻击者无法读取我的文件”时,它会非常有效。
但是当你开始在它之上链接更复杂的假设时,它并没有那么热。这通常发生在您要保护的目录以其他人设想的方式使用时,例如浏览器的配置文件目录、某些自动化管道的数据存储或公司中所有用户的主目录。如果您的期望更加模糊和包罗万象,例如:“攻击者都将被挫败,因为目录已加密”,那么这不是适合您的工具。
为了做出合理的选择,了解您正在做出的权衡是有帮助的。所以这就是攻击者可以做的事情,以及他们可以在什么条件下做到这一点。
元数据
EncFS 每个未加密文件只存储一个加密文件,并且具有相同的目录结构、相同的修改时间和相似的文件大小(和文件名大小)。所以攻击者基本上会知道关于你的文件的所有元数据。这是一种有意的安全权衡,所以如果这听起来很危险,那么 EncFS 不适合您。您可以从日期、大小和目录结构中推断出很多信息,特别是如果您正在观察一段时间(见下文)。这可能是攻击者推断某些行为所需的所有信息。如果这对您很重要,那么这是一个依靠 EncFS 来保护的不仅仅是文件内容的示例,这意味着您需要一个不同的工具。
特别值得注意的是,EncFS 支持稀疏文件,这意味着长时间(非常长)运行的零不会被加密。这些空块中的任何一个都可以在加密存储中轻松识别。这是另一个有意的安全权衡;它可以为您节省大量存储空间,但代价是您可能无法接受更多有关这些特殊类型文件的信息。
元数据历史
如果攻击者可以看到随时间的变化,那么他们可以获得更多信息。他们可以查看哪些文件更改以及更改频率、更改是否影响文件大小等等。在某些情况下,他们甚至可以大致判断文件的哪一部分被更改。
Dropbox 会存储一定数量的文件历史记录(30 天或更长时间,具体取决于您的订阅和设置),即使没有持续存在也可以实现这一点,尽管显然窗口有限。
基于历史的攻击(被动)
此外,如果攻击者可以看到对单个文件(可能数百万)的绝对大量更改,他们可能能够利用该信息在数学层面获得更多洞察力,而不仅仅是元数据。
但实际上可能不会。实际上不存在已知的攻击,而且 Dropbox 同步文件通常不会更改足够多的时间以使提议的攻击模式与相关。即使他们这样做了,Dropbox 也不只是让您将一组数百万个旧修订下载到一个文件中。
基于写的攻击
如果攻击者可以编写您将尝试解密的文件,那么现在您遇到了一些真正的问题。至少,攻击者可以选择性地删除或破坏文件。他们甚至可以通过使用元数据作为指导来猜测要破坏哪些文件。此外,他们可能只能破坏文件的某些部分。
记住关于稀疏文件的一点;攻击者可以通过清零相应的密文来清零文件的大块。
此外,对您的 Dropbox 具有写入权限的攻击者可以将文件恢复到以前的版本……尽管这也是 Dropbox 的一项明确功能。哪一种提出了这样的观点,即如果您将平台功能本身视为一个严重的漏洞,那么您必须问自己 Dropbox 是否真的是您要开始寻找的东西。
这就是重点。在云同步服务之上分层客户端加密有很多好处,有点像第二层防御。但是,如果您尝试提供的保证与底层平台的功能明显背道而驰,那么您可能会尝试将方形钉钉入圆孔中。您可能能够使用精心挑选的工具生成功能性解决方案,但您的整体体验会变得更糟,因为底层服务已经过优化,可以精确地执行您不想要的操作。
交互式攻击
如果攻击者可以修改密文,然后查看明文是什么(或者它是否成功解密),那么他们可能会在解密密钥中将数百万或数十亿文件更改为零。没有已知的攻击来实际派生密钥。但如果他们能做到,那么它将成为整卷的万能钥匙,这是值得提出这一事实的主要原因。攻击者可能很容易禁用其中一项保护措施(MAC 设置)。
此外,如果攻击者的代码在受害者的机器上运行,那么他们可能能够利用时间信息来深入了解密钥。同样没有实际已知的攻击,只是猜测。在这些情况下,攻击者通常处于有利位置,实际上不需要密钥。
结论
对于典型的“个人文件”用例和典型的攻击模型,EncFS 通常没问题。如果提供的保护级别可以满足普通用户的期望,即使考虑到 Dropbox 的文件修订历史。主要需要注意的是元数据,因为它是故事中最可靠的可利用部分,人们很少考虑攻击者可以从元数据中学到多少。
但是对于更严格的保护,特别是如果这涉及某种自动化或共享设置,那么您可能想要加密磁盘映像而不是这种直通系统。而且您可能也不想要 Dropbox。