loo*_*bee 23 filesystems security data-recovery btrfs
有时,需要删除文件系统中的文件,并确保该文件确实消失了。例如,包含敏感密码的文件应该从磁盘中彻底擦除。
rm
在典型的文件系统上发出一个简单的命令会删除文件的 inode(“指针”),但它不会删除物理磁盘中文件的内容 - 这些内容会保留在那里,直到文件系统需要可用空间时被覆盖。
在许多文件系统上,shred 程序可以实现这种安全删除。但是,在诸如 btrfs 之类的 CoW 文件系统上,这种方法是无用的。该文件可能存在于卷快照中这一事实加剧了该问题。
有没有办法安全地删除一个文件上的btrfs文件系统?删除所有指针(在所有卷上)并用零填充可用空间是否足够?
安全删除在任何文件系统上都是一个艰难的提议。除非文件系统非常特殊并且保证没有其他文件副本存在,否则您需要清除设备上的所有可用空间。虽然您更有可能在写时复制文件系统上找到文件的许多位,但在实践中甚至更多的“静态”文件系统没有这种保证,因为许多文件被编辑,所以有一些来自以前版本的文件躺在身边。
请注意,用零擦除与用随机字节擦除一样好,而且您不需要多次通过。用零擦除留下的残留数据可以在实验室条件下使用 1980 年代的硬盘技术部分恢复;这在今天不再适用。请参阅为什么在硬盘驱动器上多次写入零(或随机数据)比只执行一次好?
您可以通过加密磁盘上的所有内容来摆脱明文机密数据。在该文件系统上设置一个ecryptfs卷并将您的所有(机密)文件移动到它。然后覆盖文件系统的所有未使用空间。您可以通过填充文件系统来擦除大部分内容cat /dev/zero >zero
。可能仍有一些信息留在不完整的块中(包含文件最后一个块的块,后面跟着一些垃圾——可能是机密文件的剩余部分)。为确保没有不完整的块,请将文件系统上的所有内容移动到 ecryptfs(ecryptfs 的文件使用整个块,至少在块为 4kB 的典型设置中)。确保将此应用于所有卷并擦除包含纯文本机密数据的所有快照。
日记中可能还剩下一些信息。不知道怎么刷
在 SSD 上,由于块重新分配,可能会留下一些无法通过正常软件方式读取的数据,但可以通过破解固件或物理访问来恢复。在那里,您唯一的办法是完全擦除 SSD。
嗯,btrfs 似乎击败了所有常用的粉碎方法......
nodatacow
但这似乎不会影响已经存在的文件。debugfs
。它仅适用于 ext 文件系统,但有一个可能有效的补丁。您可以使用它来找出受影响的块地址,然后直接在 /dev/sdXY 上覆盖它们。但这非常危险并且可能不起作用(特别是如果文件有更多快照)最干净的尝试(对于非常敏感的数据)是:
这可能不是最便宜的方法,但考虑到当今的低存储成本和其他选项的麻烦,它实际上可能是最便宜的方法(就工时而言)。