特殊形式的文件系统,可防止安全擦除数据后恢复

信息安全 取证 文件系统
2021-08-30 05:19:35

我正在寻找具有合理错误更正的文件系统,但在擦除后可以抵抗取证。

比如说,通过循环安装的加密容器,如 ext4 - 日志文件系统。这是良好的性能并且在许多方面都是安全的。

在这种情况下,擦除至少会破坏加密容器(ext4 的日志)的开始。它很快。恢复需要巨大的力量:密钥+密码+销毁的加密容器的前缀。

是否有具有加密和强大擦除功能的特殊文件系统。“很棒”,我的意思是快速且不可恢复。

例如,文件系统开头的日志不包含文件地址,而是随机位于内存区域中的块的键映射。销毁此密钥意味着销毁整个文件系统的序列。此类文件系统中的文件位于未分段的内存序列中。加上整个文件系统加密。

擦除只需要重写文件系统的日志(映射)。

比如说,重写地图和密钥 30 次尝试,没有 NSA,没有 NASA,没有 CIA 可以恢复擦除的文件系统。

4个回答

“清除”数据的正确方法是使用加密:永远不要让未加密的数据进入磁盘。如果这样做,那么销毁解密密钥就足以销毁数据。解密密钥很小,在许多情况下您只能将其保存在 RAM 中(例如,您在启动时将其键入为“密码”,这实际上意味着“人类记住的密钥”);如果密钥在 RAM 中并且只保留在 RAM 中,那么销毁它就像关闭电源一样简单(但请注意,RAM 内容可能会在几秒钟或几分钟内抵抗掉电)。

当您没有以正确的方式做事时,您会执行文件擦除。确实在物理介质上写了敏感信息,没有任何加密。你想“修复”它。这样做存在三个主要问题:

  • 文件删除不会覆盖物理介质上的数据;它只是将其标记为可重复用于其他文件。
  • 有时,即使重写数据也可能不会真正破坏它。这就是所谓的“文件粉碎机”介入的地方,通过使用特殊模式多次覆盖数据,这应该破坏过去数据的所有痕迹。但是,这种碎纸机对实际的磁盘技术是非常特定的,而且在实践中,对 12 年前磁盘使用的技术也非常特定;在现代磁盘上,碎纸机可能无用且不必要。相反,使用 SSD,相当多的数据仍然无法被最彻底的碎纸机所触及。因此,文件粉碎机要么完全矫枉过正,要么不足,没有中间立场。
  • 部分文件数据的副本可以存储在其他区域。这可能发生在虚拟内存中,因为文件数据在进入文件之前就在 RAM 中。这也可能发生在日志文件系统中(取决于文件系统的实现和配置)。

因此,任何基于文件“擦除”的解决方案都可能效率低下且不完整。无论如何,尽管存在这种不完整,但有些人试图进行某种自动化粉碎。这可以在不同的层次上完成;这是通过修补unlink()C 库函数调用(通过 LD_PRELOAD 技巧)来实现的。不过,静态链接的进程仍然可以避免它(但在典型的 Linux 安装中静态链接的应用程序非常少)。我不会推荐它(作者本人对此很警惕);值得注意的是,SSD 上的文件粉碎不仅无效(见上文),而且显着缩短了所述 SSD 的使用寿命。

没有可用的 [主线] 文件系统可以执行您描述/期望的方式,主要是因为它作为文件系统效率不高。并不意味着它是不可能的,而是它只是不经常这样做并且没有达到常见的使用场景。实际上,您所描述的更像是一个加密的文件系统,而不是一个快速擦除的文件系统;稍后会详细介绍。

虽然它不像我认为您描述的那样“快速”,但DBaN 软件(Darik 的 Boot and Nuke,dban.org)提供了从物理磁介质中非常成功的数据擦除。我从执行数据恢复的经验中知道这一点,包括使用低级磁性扫描仪。一旦足够的随机数据覆盖了您的目标数据,物理磁介质就无法用于恢复目的。

对于“快速”方法,您必须使用全盘加密(想想TrueCryptMicrosoft 的 BitLocker)或物理磁盘破坏。加密“混乱”了数据,因此没有私钥就无法使用。破坏消除了物理介质,因此没有可恢复的数据(通常通过对磁性表面进行消磁,然后对其进行物理改变,使其永久无法使用) 加纳制造了一些好的破坏器,它们会在钻盘之前先消磁。在那之后,没有人会从驱动器中获取数据。

使用像橡胶软管这样的系统,破坏文件系统非常容易。只需删除橡胶软管分区的主密钥,它就无法再被解码甚至检测到。

您是否正在寻找一种擦除整个文件系统或单个文件的方法?安全地擦除整个文件系统很容易。使用像 LUKS 这样的东西,它使用“反取证条纹”,一种将您的密码拉伸到大约 256 KiB 的技术,使得破坏密钥的尝试更有可能成功。只需要破坏几个字节就无法恢复,并且没有一个重新分配的扇区可能导致导致部分密钥被遗忘。销毁整个文件系统变得像运行一样简单cryptsetup erase /dev/mapper/sda_crypt,立即安全地销毁该卷上的所有内容。

如果您正在寻找基于每个文件执行此操作的能力,以便删除导致文件和元数据的即时和安全破坏,我认为您不会有太多运气。我不知道有任何文件系统能够做到这一点。支持加密的文件系统可以完全擦除,但单个文件仍使用其主密钥加密。然而,一些文件系统支持 's' 文件属性(由 chattr 设置),它告诉文件系统驱动程序在取消链接时用零覆盖该文件中的所有块。然而,流行的 ext4 和 btrfs 文件系统不支持它。它也不会删除元数据,因此某些信息仍可能以文件名、大小、inode 编号和其他元数据属性的形式泄漏。

理想的文件系统会在每个文件 inode 中存储一个随机加密密钥,并使用该密钥加密每个块。删除后,inode 可以与密钥一起被安全擦除,使其指向的所有块都变得无用。这将为像 ext4 这样的文件系统提供一种简单的方法来支持 's' 属性,至少。