为什么操作系统没有从一开始就安全地删除文件?为什么他们仍然不这样做?

信息安全 删除
2021-08-24 04:12:33

几十年来听说“删除”并没有真正使数据无法恢复,我不得不问为什么操作系统很久以前没有被纠正来做它应该一直做的事情?有什么大不了的?系统不能在后台运行覆盖和其他必须发生的事情吗?为什么我们需要额外的实用程序来做我们一直认为正在发生的事情?操作系统开发人员不纠正这个问题的动机是什么?

补充:这不是技术问题,因为显然可以安全地删除内容,否则将没有可用的工具来执行此操作。这是一个政策问题:如果有人认为它很重要并且应该成为操作系统的一部分,为什么它不是操作系统的一部分?多年来,许多东西已经添加到操作系统中,这肯定是其中之一。这是一个重要的问题,或者现在大约 3 年没有关于它的文章和故事了。惯性是怎么回事?只要做正确的事。

4个回答

由于以下原因:

  • 性能 - 它占用资源破坏文件。想象一个使用成百上千个文件的应用程序。安全地删除每一个将是一项巨大的操作。
  • 驱动器的额外磨损。
  • 有时检索文件的能力是操作系统的一项功能(例如垃圾箱、回收站、卷影复制)。
  • 正如 Xander 所指出的,有时物理存储机制是从操作系统中抽象出来的(例如 SSD 或网络驱动器)。

而不是另一个“你错了,因为”的答案,我想采取一种稍微不同的方法:

早期的计算机操作系统是由程序员为程序员编写的。任何编程并知道指针是什么的人都知道“删除”指针不会删除它指向的东西:它们是分开的。

这并不意味着删除实际上并没有删除。那个指针不见了。在“删除”它(释放内存,重新绑定名称)之后尝试使用它可能会导致坏事发生。

但历史在继续,现在拥有不同删除概念的最终用户(如您自己)出现在画面中。他们(和您)的期望并非不合理(无论此线程中所说的其他内容)。

但是删除永远不会(对于计算机)意味着您认为它应该的含义:技术(在其他答案中详细说明)和社会(45 年的惯性)都有原因。

现代(包括*nix)操作系统为您抽象了很多东西:您不再需要成为计算机专家来拥有/操作计算机,就像您不再需要成为机械师来拥有/经营汽车。你付出的代价是这些抽象是有漏洞的:有一个永远无法完全弥合的根本脱节。计算机“文档”不是真正的文档,“桌面”不是桌面,“窗口”不是窗口,等等。

它不必被纠正,因为它不是一个错误。

指向文件的指针被删除,文件占用的区域被标记为空闲空间。然后,驱动器会在自己的时间覆盖该区域。它纯粹是为了减少驱动器的磨损。毕竟,存储设备(尤其是 SSD)在发生故障之前可以写入的次数是有限的。大多数用户不会欣赏他们的驱动器在 6 个月后出现故障。

安全解决方案确实存在可用于安全擦除硬盘驱动器上可用空间的工具。

您似乎对删除术语有措辞问题,并且对功能应该做什么有错误的期望。

您可以在 Merriam-Webster 网站上查看简单定义:

删除:从文档、录音、计算机等中删除(某些东西,例如文字、图片或计算机文件)。

删除功能的目标是将选定对象从其当前位置删除。可以将它们移动到另一个临时位置(垃圾桶)以防止任何意外丢失,或者它们所占用的空间可能直接标记为空闲。

将此与擦除的定义进行比较,例如:

擦除:从磁带(如录像带或录音带)或计算机磁盘上删除(已记录的东西);也:从(磁带或磁盘)中删除记录的材料

:通过摩擦或刮擦去除(写的东西),使其不再可见

: 删除(表面)上写的东西

这真的进入了一个较低的层次,在这里我们不仅从文件夹中删除文件,我们正在从磁盘中删除文件的数据,并且在这种微妙之处在于所有的区别。

Erase是您在 Windows 世界中最常遇到的词,在 Unix 世界中您可能会遇到擦除,它从更技术的角度描述了该过程:

擦拭:用毛巾、手等清洁或擦干(某物)

: 擦去(某物)

:在表面上移动(某物)

为什么操作系统默认不这样做?有几个原因:

  • 普通家庭用户不需要这样的功能,他们所需要的只是简单地从文件夹中删除文件,或者在外部驱动器的情况下确保它被完全清理(外行术语中的“慢”格式)。他们很少需要擦除单个特定文件。

  • 普通家庭用户其实并不想要这样的功能。您会看到默认设置不仅不擦除文件,而且也不真正删除它:而是将其移动到垃圾桶,因为家庭用户希望他们的操作系统能够在错误操作的情况下保存它们。您通常必须使用特定的组合键(Shift + Del 选项)来删除文件,而无需通过垃圾桶。

  • 最后,这样的选择可能不容易实施,甚至不可能实施。技术演进在您的实际数据周围添加了几个逻辑和物理层:

    • 某些操作系统会定期拍摄文件系统内容的快照,在这种情况下,您的文件可能会包含在其中一个或多个快照中。在这种情况下确保正确擦除文件而不危及快照完整性可能会变得复杂。

    • 正如其他答案和评论中提到的,为了增加存储设备的使用寿命,实际存储与操作系统如何看待它之间存在一个抽象级别。在这种情况下,虽然操作系统可以尽最大努力确保文件的数据在文件系统级别被删除,但它无法确保它在存储级别被有效擦除。

一方面,您有操作系统,它根据文件(简化)但并不真正关心字节存储,另一方面,您有存储设备的固件,它根据字节原因但对文件一无所知以及文件系统的实际设置方式。

那么,这是否意味着一切都丢失了,我们需要等待一些不太可能的未来来为我们带来存储设备固件中本地实现的文件系统?不,但是您应该做什么取决于您的实际关注点:

  • 如果您关心的是文件系统级别的数据,那么您可以使用第三方软件,它将为您的上下文菜单添加一个新的擦除/擦除选项。您需要手动确保此文件的副本不存在于任何文件系统快照和备份中,因为这需要操作系统无法为您做的个案决定(您不希望操作系统的橡皮擦向导搞砸你的备份或帮助你,是吗?)。

  • 如果您担心存储设备上物理存储的数据,请使用文件系统加密。这将确保由于磨损均衡和坏块处理而导致的潜在“泄漏”数据不会被任何接触您的存储设备的人利用。