TrueCrypt 容器的安全同步

信息安全 备份 真加密
2021-08-14 05:30:15

需要同步两个 TrueCrypt 容器内的任意文件;一个容器是备份,另一个是我积极使用的容器,在事务期间都是本地的。

当前安全方面的担忧是,使用同步工具会导致“数据泄漏”;例如,同步工具生成的索引在未加密的情况下存储在磁盘上。

任何建议或对使用所述同步工具可能产生的攻击向量的见解?

更新:我删除了对“在 Windows 上”的引用,因为虽然他们解决的答案和问题涉及 Windows,但这些答案(撇开使用的同步工具不谈)适用于 Windows、Linux、OSX 等——而且我不希望阅读问题标题的人认为该问题仅适用于 Windows,因为它不适用,并且考虑到安全执行加密数据备份的重要性,我认为最好使问题尽可能易于访问。

3个回答

当前安全方面的担忧是,使用同步工具会导致“数据泄漏”;例如,同步工具生成的索引在未加密的情况下存储在磁盘上。

您认为索引存在数据泄露风险是正确的。风险的多少取决于索引的具体内容。

不久前,我领导了一个项目来构建一个有点像 Dropbox 的东西。为了跨运行比较目录,我们使用了路径名、内容的 sha256 哈希(如果尚未计算)、各种时间戳信息等。

显然,如果同步工具要存储有关存储在加密容器中的文件的信息,攻击者也可以访问它们。确切的风险实际上取决于您给定的场景。

但是,我怀疑游戏中的风险比您想象的要大。例如,假设在打开文件时,您的无辜软件会创建一个副本,以免损坏个人 - 但是,您已以只读方式安装文件系统,因此它可以轻松创建文件的副本在您的临时文件夹中。太好了,除了 - 它只是将您的数据从加密分区复制到未加密分区,从而泄漏了它。

同步工具也是如此。这将是一种相当糟糕的构建方法 - 但可以想象该工具可以将文件复制到正在进行的临时位置。同样,您有泄漏问题。

更现实一点 - 让我们假设同步工具通过mmaping 和在它们之间复制来复制内存中的文件。如果您在此更新期间遇到系统崩溃并且您的应用恰好被核心转储了怎么办?哎呀,如果 truecrypt 驱动程序的内存也被核心转储了,会发生什么?它很可能包含未加密的文件数据。

事实是,您不太可能从任何这些场景中推断出整个文件的内容 - 但就像在您的房子里变湿一样,某处会泄漏一些东西。完全确定你已经完成所有事情的唯一方法是做显而易见的事情:加密整个批次交换,磁盘,一切。

因此,回答您提出的问题:攻击者可以清除同步工具存储的任何内容。看一看。抓取Process Monitor,查看它存储数据的位置,然后查看其中的内容。这将准确地告诉您哪些数据正在泄漏。

要回答您没有问的问题:没有办法绝对确定您不会在未加密的系统上使用 truecrypt 容器泄漏某些内容。

现在的问题是“如何在单个主机上的两个打开的 TrueCrypt 容器之间进行文件级同步,而不会从同步工具中泄露任何本地数据?”。

答案是你可能不能——当然没有一个完善的文件同步工具(unison、rsync、SyncToy 等)承诺不会有这样的泄漏。他们的重点纯粹是提高效率和可靠性。

这大概是因为这样做需要大量非常艰苦的工作来支持一个晦涩的用例。首先,如果有人可以靠近您的机器以利用这种泄漏,那么您的问题会更严重。其次,如果你真的需要控制这个漏洞,那么无论使用什么同步工具,你都可以采取几个步骤来完成这项工作:

  • 使用全盘加密,因此任何泄漏也会被加密。
  • 同步关闭的卷,以性能为代价消除所有同步工具泄漏。

注意:我在这里指定同步工具泄漏,因为还有其他类型的泄漏:容器的差异分析,或者一旦打开就用于操作容器内容的工具的泄漏。但是同样,如果攻击者已经破坏了足够的机器来执行这些攻击,那么你的问题就会更糟。当您只需将 TrueCrypt 二进制文件替换为通过电子邮件将容器内容发送给您的东西时,为什么还要对容器更改进行困难的差异分析?

(最后一点:有许多优秀的文件同步开源工具,所以第三种选择是将它们分叉成您自己的超级安全版本。)

IMO 最简单和最快的同步方法是安装两个容器并使用您最喜欢的工具来同步它们(我有点像 robocopy)。当您有备份时,请使用不同的容器。如果一个容器是另一个容器的副本,那么可以访问两者的人可以查看更改和使用该信息的扇区。

如果您制作两个容器,那将不是问题,因为无论相同位置的相同文件是否在那里,一切都会有所不同。

我不知道您可以使用哪个“同步工具”,但如果它在同步时没有存储临时信息(比如您的本地临时区域),那么您应该没问题。有些人认为您应该在使用加密时禁用虚拟内存,但 IMO 这不是必需的,只是偏执狂。

-edit- 如果某人可以重复访问您的备份(而不是上面假设的当前和备份),您可以考虑每次创建一个新容器并按照 truecrypt http://www.truecrypt 的建议复制所有数据。 org/docs/?s=how-to-back-up-securely

-edit2- 现在看来您在使用工具时询问有关泄漏的问题。你没有提到任何工具,所以我不能发表太多评论。只要该工具在复制时不生成临时文件或在容器之外有数据库/信息(有时它位于用户应用程序数据目录中),就可以了。正如我上面提到的,我喜欢 robocopy,它只是一个高级命令,如文件复制程序。请参阅http://ss64.com/nt/robocopy.html我个人不复制属性数据,也不希望在远程卷中删除文件。我想我通常使用robocopy srcDriveOrFolder dst /S /W:1 /R:1