永久删除文件

信息安全 删除 文件系统
2021-08-12 06:17:08

据我所知,硬盘驱动器中存在一个文件表,其中不包含每个文件的数据,但可以指向它。

当您删除一个文件时,它的记录会从文件表中删除,但数据仍保留在计算机上。

所以问题是:如果你覆盖一个文件的数据,比方说,只是使用 WriteFile Win API 用零覆盖所有数据,那会变得不可恢复吗?

4个回答

是的,很有可能。然而,总会有边缘情况:

  • SSD 正在进行磨损均衡等,并且很可能不会将您的零写入原始数据写入的相同单元。当然,攻击者如何找到和访问这些数据完全是另一回事。
  • 在传统的旋转 HDD 上,原始数据可能存在于其他扇区,因为磁盘已进行碎片整理。或者操作系统可能决定在写入时重新定位您的文件,以合并文件。至少 OS/2 曾经这样做过,我不确定当前的 Windows 版本是否仍然这样做。
  • NTFS 将小文件直接存储在目录结构 btree 中,这可能会导致您的数据被复制到磁盘周围。
  • 操作系统可能已经创建了系统快照等。

所以问题是:如果你覆盖一个文件的数据,比方说,只是使用 WriteFile Win API 用零覆盖所有数据,那会变得不可恢复吗?

不要使用 WIN API WriteFile 来尝试安全删除。而是使用像 SysInternals sdelete 这样的安全删除工具。

如果您只使用 WriteFile 操作系统/文件系统可以选择将新数据(例如,一堆空字节或其他)写入磁盘上的新块,然后更新主文件表以指向新块不是旧街区。您将无法保证您已经覆盖了原始文件数据(除非您使用 WriteFile 来写入与整个磁盘一样大的文件)。

以 100% 可靠的方式处理文件的一种方法是将其保存在您可以清除的单独 HDD 分区上,或者更好的是,保存在您可以承受破坏的单独介质上。

如果这不切实际,一个好的折衷办法是确保文件仅以加密方式存储。当你需要“摧毁”它时,你所要做的就是忘记钥匙。您不必关心导致文件未被完全覆盖的边缘情况。

下一个不太安全的替代方法是使用您信任的文件粉碎机。如果正确实施,它将跟踪与文件关联的磁盘上的每个扇区并覆盖它。当然,它无法销毁您、您的操作系统或您的存储控制器制作的任何它不知道的数据副本(想想临时文件、交换、磁盘碎片整理等)。一般来说,只有为经过安全审计的工具付费才有意义。

然后是您简单地覆盖文件的想法。它不是 100% 安全的,但它肯定会使用现成的取消删除工具使数据无法恢复。在许多实际情况下,这实际上就足够了。

实际上,是的,覆盖文件使用的块将使其无法恢复。

这可以在 Windows 上使用sdelete或在 Linux上使用shred来完成。