我尝试过 wipe、shred、srm、peazip 的安全擦除等。无论我使用什么选项,我都使用所有这些实用程序安全地擦除文件,然后使用十六进制编辑器在磁盘上进行搜索,文件的内容仍然留在磁盘上的某个地方。我一直认为,如果我粉碎文件,它完全地从磁盘中删除,即没有留下任何痕迹。我做错了什么?
答案1
您可能没有做任何“错”的事情,但擦除数据比软盘时代要困难得多。
除非你的文件系统是非日记的,并且你从不对文件系统进行碎片整理,否则确保数据完全丢失的唯一保证就是软件是销毁整个文件系统,或者在 SSD 上,安全擦除整个磁盘。
参见这个答案(正如您所发现的,问题中“接受的”答案并不完全可靠):https://askubuntu.com/a/58420/544090
现代文件系统在操作过程中会出于各种原因透明地移动或复制数据。如果你覆盖然后删除磁盘上文件的最新位置,则可能会有较旧版本的数据从某个文件中分段磁盘上的其他位置。您很幸运能够再次恢复整个文件,但正如您所看到的,数据碎片可能仍然存在。在 SSD 上,情况会变得更糟,因为存在磨损均衡,硬件控制器会非常频繁地将磁盘上的逻辑位置重新映射到闪存上的物理位置。
一个非常基本的例子是这样的:
- 您创建一个文件,其数据存储在磁盘上的位置 A 中。
- 无论出于什么原因,数据都会被复制到磁盘上的 B 位置。现在文件系统会说您的文件位于“B”,但在“A”位置仍有一份较旧的文件副本。
- 您的“shred”或类似命令会彻底消灭位置“B”的数据。
- 您仍然可以在位置 A 找到数据的某个版本。(或者更糟的是,“碎片”导致数据再次发生移动,并使碎片发生在位置“C”,而您在位置 A 和 B 仍然有文件的旧位)
因此,对于存储在机械硬盘上的数据,您至少需要覆盖整个分区(如果您以 root 身份运行 shred 并将其指向 /dev/,它可以执行此操作)。对于 SSD,您必须使用驱动器的内部安全擦除。请参阅:https://serverfault.com/a/694494/354612
这些方法将确保通过其接口(SATA、SAS、USB 等)访问磁盘的任何操作都无法再看到数据。但是,对于这些类型的方法在多大程度上能够防止攻击者物理打开驱动器来扫描盘片/NAND 芯片本身,目前尚无明确的答案。这就是为什么某些组织仍然会物理销毁旧磁盘的原因。