命令行工具(如“shred”)附带许多免责声明,说明在某些情况下可能无法安全删除文件。我想到了一种既便宜又简单的方法,希望得到一些建议。
如何从 /dev/zero 运行“dd”并尝试创建一个大于分区剩余空间的文件。这肯定会用全零填充底层块,一旦它因磁盘空间不足而死机,您只需删除此文件即可。
这样,我在想,任何试图检查底层磁盘的恢复实用程序无论它看在哪里都只会看到零……
是的,这对于较大的分区来说效率不高,但除此之外 - 这有多合理?......
答案1
如果您的系统没有其他可能需要访问(或导致访问)磁盘的进程,那么这种方法可能有效,但效率极低。理想情况下,您会识别正在使用的磁盘块,确保驱动器控制器未重新映射任何块,并使用各种值多次覆盖数据块,以确保没有残留痕迹。
答案2
不起作用。
诸如“shred”之类的程序所做的就是将随机垃圾多次写入文件所使用的整个磁盘。
仅写入零仍会留下原始数据的“印记”。即使你这样做了几次。
这也是低效的。你可能有大量从未写入过的磁盘区域,而你却无缘无故地花费数小时向其中写入零。覆盖给定文件实际使用的区域要高效得多。
答案3
如果存在印记问题,可以通过从 /dev/urandom 而不是 /dev/zero 进行获取来解决。或者,由于性能似乎在前提下根本不重要,因此甚至可以从 /dev/random 进行获取。
重新映射磁盘块仍会存在问题,尤其是在固态硬盘中。如果固件认为您写入敏感数据的某个块有故障,它将被保留块替换并退出,内容将复制到替换块。文件系统对此一无所知,您的敏感数据无法通过软件访问,但仍可通过取证方法访问。您无法通过任何基于软件的方法访问并覆盖这个退出的块及其上的敏感数据。
答案4
DD 是一个非常糟糕的选择。它是一个基于扇区的复制工具。它不关心这些扇区中有什么数据。据我所知,DD 没有可用空间或文件的概念。我将笔记本电脑的硬盘从 120GB 升级到 320GB,DD 复制了 120GB 的数据,尽管我实际上有 30GB 的可用空间。(它真的很酷,甚至不需要对其进行分区,它只是复制了所有分区、删除了文件、交换等)
更不用说,可用空间并不连续,它们通常分散在整个驱动器上。因此,您不能仅仅因为驱动器只有一半满就说“覆盖驱动器的后半部分”,因为数据将遍布整个驱动器。