添加:这不是技术问题,因为显然可以安全地删除内容,否则将没有可用的工具来解决此问题。它。这是一个政策问题:如果有人认为它很重要,应该成为操作系统的一部分,为什么不成为操作系统的一部分呢?这些年来,已经为操作系统增加了很多东西,这肯定是其中之一。这是一个重要的问题,否则大约三十年来不会再有文章和故事了。惯性是什么?做正确的事。
#1 楼
我想使用一个略有不同的方法,而不是另一个“您因为这里而错”的答案:早期的计算机操作系统是由程序员为程序员编写的。任何编程并了解指针的人都知道,“删除”指针不会删除指针所指向的东西:它们是分开的。 。那个指针不见了。在“删除”它(释放内存,重新绑定名称)之后尝试使用它可能会导致不良情况的发生。
但是历史在继续,现在具有不同删除概念的最终用户(像您一样)在图片中。他们(和您)的期望并非不合理(在该线程中有其他说明)。
但是删除绝不会意味着(对于计算机)您认为应该的表现:都有原因技术性(在其他答案中有很好的详细说明)和社交性(惯性45年)。
现代(并且我包括* nix)操作系统为您提供了很多抽象的东西:您不再需要成为计算机专家,拥有/拥有计算机的方式与您不再需要成为拥有/运营汽车的机械师的方式相同。您付出的代价是这些抽象是泄漏的:存在根本无法断开的根本性断开连接。计算机的“文档”实际上不是文档,“桌面”不是桌面,“窗口”不是窗口,等等。
评论
+1电脑最初并不是为外行设计的。
–user541686
16年1月15日在21:04
+1,因为最终它确实归结为“过去的做法,而过去他们有不同的优先级”。
– Spudley
16年1月16日在7:49
@疯狂的不是下选民;但是,如果我要反对任何东西,那就会忽略安全删除与普通用户经常需要的功能不兼容(在其他答案中指出):能够恢复意外删除的内容。
–丹在火光中摆弄
16年1月20日在20:49
删除指向某物的指针可以是恒定时间的操作。将删除的数据清零的顺序是数据长度。这就是为什么许多语言也不会强制将分配的数据清零的原因。不这样做是很懒惰的,但这并不是性能的很小甚至是恒定的因素。
–Rob
16年1月23日在4:46
安全性是过去的事后考虑,以至于旧的Windows操作系统(或至少是MS-DOS)实际上会用内存中的内容随机填充文件系统扇区的松弛空间,而不是将其清零或写入任何其他常量。没有人站起来说“听起来不像是一个安全的主意”,这实际上表明了事后考虑的安全性到底是多少。
–森林
18-2-26在12:49
#2 楼
由于以下原因:性能-它占用破坏文件的资源。想象一个使用成百上千个文件的应用程序。安全删除每个驱动器将是一项巨大的操作。
驱动器上的额外磨损。
有时,检索文件的功能是操作系统的一项功能(例如垃圾箱,回收站,卷影)复制)。如Xander所述,有时物理存储机制是从操作系统(例如SSD或网络驱动器)中抽象出来的。
评论
+1我要补充一点,大多数用户缺乏关于是否安全删除其文件的担忧也是一个可能的因素。如果95%的用户大声疾呼要求普遍安全删除,那么它很可能是一项功能,并且您提到的问题将以一种或另一种方式(可能是由于不同的用户期望)进行管理。
–托德·威尔科克斯(Todd Wilcox)
16 Jan 15'15:42
那种性能的东西-早在操作系统“正确开始”时的SSD之前-想到了从那9条磁道磁带中安全删除材料的出色性能。或对于那些140k的软盘。要安全删除软盘吗?将您不想删除的东西移动到另一张软盘上并销毁原来的东西。比向Applesoft DOS 3.3添加另一个例程更加容易。
–user30204
16年1月15日在22:22
另外:当您确实要安全擦除某些内容时,也需要从所有备份中擦除它。 (您确实有备份,对吗?)默认情况下,安全擦除将完全浪费时间,因为用户只会在实际需要时才从备份中安全擦除内容。
– Peter Cordes
16 Jan 16'在6:17
关心的用户可能也希望一开始就对其文件进行加密,这在大多数情况下是更好的选择,并且是许多操作系统的功能。
–user23013
16年1月16日在17:55
@ R..iff要安全删除的存储部分具有单独的密钥。
–用户
16年1月17日在19:57
#3 楼
不必更正,因为这不是故障。删除文件的指针,并将文件占用的区域标记为可用空间。然后,驱动器会自行覆盖该区域。纯粹是为了减少驱动器的磨损。毕竟,存储设备(尤其是SSD)在发生故障之前可以写入的次数是有限的。大多数用户都不希望在6个月后驱动器出现故障。
确实存在安全解决方案,其中包含可用工具来安全擦除硬盘驱动器上的可用空间。
评论
+1,但普通用户可以达到SSD的磨损极限的想法已过时。请参阅本文。那些250 gb的SSD仍以1 PB的写入速度进行交换(是驱动器容量的4000倍)。
–麦克·恩斯沃思(Mike Ounsworth)
16年1月15日在16:20
这是一个好点,但是,如果每次都安全删除文件(在整个位置写入1次或多次写入),则硬盘驱动器故障的可能性至少更高。
–萨顿曼先生
16年1月15日在16:22
我在2013年购买了配备256GB SSD OS-Drive的机器,一年后它显示了S.M.A.R.T.警告它将会死。得到了更换,一年后,新的SMART警告大约剩余了3%的驱动器抬起声,我又得到了一次更换。也许我的行为是将SSD保持在95%的容量,每天将20 + GB的程序保存在RAM中,并在始终在线的Web服务器上运行,并与我的公司文件同步软件在崩溃时格格不入地斗争未能同步成千上万个文件是造成问题的原因……达到现代SSD的磨损极限并非并非不可能。
–卡尔·沃尔什(Carl Walsh)
16年1月15日在20:14
@CarlWalsh不,在创建新文件之前,操作系统不需要将任何东西归零。新文件的每个块都可以(并且将被)简单地写在当前未使用的块上,无论它是“新鲜”还是以前是其他文件的一部分。
– Peteris
16年1月15日在20:29
@卡尔沃尔什具有写时复制功能的OS和/或文件系统只需要给人一种幻觉,即新分配的块具有给定的值。就像calloc()实际上直到实际使用时才需要分配和擦除内存一样,文件系统可能会假装内容为零,直到您对其进行写操作为止。
– Iwillnotexist Idonotexist
16年1月15日在21:00
#4 楼
您似乎对删除术语有措辞上的疑问,并且对功能的预期有误。您可以在Merriam-Webster网站上检查简单的定义:
删除:从文档,记录,计算机等中删除(诸如文字,图片或计算机文件之类的东西)。
删除功能的目的是从当前位置删除所选对象。可以将它们移动到另一个临时位置(垃圾箱),以防止任何意外损失,或者可以将它们占用的空间直接标记为空闲。
将其与擦除的定义进行比较,例如:
擦除:从磁带(例如录像带或录音带)或计算机磁盘上删除(已记录的东西);还:从(磁带或磁盘)上删除记录的材料
:通过摩擦或刮擦来去除(书面内容),使其不再可见
:删除(表面)上写的东西
这确实是一个较低的层次,在这里我们不仅仅是从文件夹中删除文件,而是从磁盘中删除文件的数据
是在Windows世界中最常遇到的单词,在Unix世界中可能会遇到擦拭,它从更技术的角度描述了该过程视图:
擦拭:用毛巾,手等清洁或干燥(东西)。
:擦去(东西)
:在某个表面上移动(某物)
为什么操作系统默认不这样做呢?出于以下原因:
普通家庭用户不需要此功能,他们所需要的只是从文件夹中删除文件,或者在使用外部驱动器的情况下确保该文件可以彻底清除(外行术语为“慢”格式)。他们很少需要擦除单个特定文件。
普通家庭用户实际上并不想要这样的功能。您将看到默认值不仅是不删除文件,也不是真正将其删除:而是将其移到垃圾箱,因为家庭用户希望他们的操作系统能够在错误操作的情况下保存它们。您通常必须使用特定的组合键(Shift + Del选项)才能删除文件,而无需通过垃圾箱。
最后,这样的选项可能不容易实现,甚至可能无法实现。技术进步为您的实际数据增加了一些逻辑和物理层:
某些操作系统会定期对文件系统内容进行快照,在这种情况下,您的文件可能包含在一个或多个文件中这些快照。确保在这种情况下正确擦除文件而又不危害快照完整性的操作可能会变得很复杂。
如其他答案和注释中所述,要延长存储设备的使用寿命,实际存储与存储之间应有一个抽象级别。由操作系统看到。在这种情况下,尽管操作系统可以尽最大努力确保在文件系统级别删除文件的数据,但它无法确保已在存储级别上将其有效删除。
一方面,您拥有一个操作系统,原因是出于文件目的(为简化起见),但实际上并不关心字节存储;另一方面,您具有一个存储设备的固件,其原因是出于字节原因,但是对文件以及文件系统的实际设置一无所知。
,这是否意味着一切都丢失了,我们需要等待一些不太可能的未来,才能将文件系统本地化存储设备的固件?不,但是您应该做什么取决于您的实际关注:
如果您担心文件系统级别的数据,则可以使用第三方软件,它将在上下文菜单中添加新的“擦除/擦除”选项。您需要手动确保此文件的副本不存在于任何文件系统快照和备份中,因为这需要根据具体情况做出决定,操作系统无法为您做到这一点(您不希望操作系统的橡皮擦向导是为了搞定备份还是为了帮助您?)。
如果您担心物理存储在存储设备上的数据,请使用文件系统加密。这将确保任何人只要将手放在存储设备上,都不会利用由于磨损均衡和错误的块处理而导致的潜在“泄漏”数据。
评论
这是正确的答案。
– PureW
16年1月17日在15:08
例如,在UNIX中,没有“删除”,“删除”或“删除”功能,只有“取消链接”。
–tu-Reinstate Monica-dor duh
16年1月17日在22:51
@tudor:确实,您提出了一个重要观点。尽管“ unlink”是在文件系统级别明确定义的功能,但是擦除/擦除功能实际上是通过覆盖文件内容进行的,因为实际上没有办法仅从磁盘上“删除”数据:只能覆盖它。这里有不同的重写方法,使用随机数据,使用特定模式,使用一次或一定数量的通过等,每种方法都有其优点和缺点。这就是为什么要由用户选择适合自己需求的第三方软件的原因。
–WhiteWinterWolf
16 Jan 18'在9:23
#5 楼
出于性能原因。从索引中删除文件,并声明该文件所在的区域现在是可用的并且可以重复使用,这比擦除该区域上的所有数据要有效得多。评论
对于转过来的SSD。
–JDługosz
16年1月20日在1:23
@JDługosz:不是。基于闪存的驱动器需要物理擦除块上的所有信息,然后才能重用任何空间,但是如果有人要删除使用块中1024个扇区中的64个扇区的文件,则将这64个扇区标记为无效比复制960扇区(其内容仍需要在其他地方)然后擦除包含这64扇区的块要快得多。
–超级猫
16年1月20日在19:36
我的意思是修剪命令。块在非常原始的级别上被标记为未使用,而不仅仅是闲逛直到碰巧被重用。与其重新执行不执行任何操作(不清除)的效率更高,不重新复制未使用的块更有效。
–JDługosz
16年1月21日,0:47
@JDugugz:恕我直言,不幸的是,IMHO决定让所有USB驱动器都使用基于扇区的访问,而不是更接近NFS,因此中级的“标记扇区已过时”操作要比物理擦除它或仅具有更高级别的操作更为有效。级别系统将其视为未使用,而无需告知驱动器。
–超级猫
16年1月23日在19:42
SATA / SAS也是一个问题。不是USB,而是将存储层从设计命令结构的地方移开了,从历史上看,主机具有更多的智能,而设备则更少。
–JDługosz
16年1月23日在21:09
#6 楼
并非所有人都同意您对“删除”的含义的定义。对于99.9%的用户,他们并不担心有人在四处寻找数据。他们希望有空间来存储更多激进的天线宝宝剧集。对于大多数人来说,再也不必为文件保留空间了。
然后有一部分个人属于您,他们想要删除文件,以使文件无法恢复。但是,您是否适当考虑了硬盘驱动器上其他位置的文件的缓存副本?实际上可能很难确保将某些内容完全删除。对于想要这样功能的人,您可能已经平衡了安全性问题,但是您认为99.9%的安全性确实合适吗?
最后,考虑真正关心擦除其秘密的人。政府的标准程序是将硬盘放入研磨机。为什么?您是否知道在擦除文件时,磁盘的某些磁性使数据可访问?普通的硬盘驱动器磁头无法访问它,但将其放入盘中并放入昂贵的磁读取器中,它们实际上就可以提取数据。
如果政府希望重用硬盘驱动器,标准过程是7倍擦除,您在其中写入磁盘的每个扇区7次。他们通常只使用磨床,因为此过程的机械强度很高,以至于大多数磁盘甚至都无法幸免。
“删除”到底是什么意思?
编辑:我试图画一些点,并让其他人画线,但它似乎也可能对我画线有帮助。安全总是涉及妥协。很少有人对安全性有足够的了解,以至于无法正确选择折衷的级别。对于那些有能力的人,您可以将人们分为三类。一类人不太关心安全性,他们讨厌产品以超出可用性的代价推销更多的安全性。一类人比您更关心安全性,并且会对产品缺乏安全性感到沮丧。最后,有一个类别可以满足您的需求。
如果每个人对于“足够安全”都有自己的定义,那么从一开始就获得“正确”的安全删除文件就是比听起来更难。
评论
我不能在这个问答站点上投票,但是……“ 99.9%”(来源?)“因为这个过程机械强度很高……甚至无法幸免遇到的麻烦”(来源?)属性...拉出数据。” (实际上,有一篇研究论文认为一次擦拭不会擦除足够的信息以致无法恢复。但是这里没有链接)。
– Sumurai8
16年1月16日在18:15
@ sumurai8如果一千个用户中有一个意识到文件存储的细微差别而愿意监管他们的文件OS缓存,从而能够从这种安全擦除中获得任何安全性,我会感到惊讶。对于那些不知道自己的操作系统正在为他们做什么的人,这样的功能将是蛇油。我很想看那篇论文。政府显然比您不信任,尽管看到新的确凿证据总是很巧妙。官方规则可能适用于较旧的硬盘驱动器,而新的则没有那么大的作用
–Cort Ammon
16年1月17日在3:43
@CortAmmon无论如何,政府通常都不会对“足够安全”感到满意。这不仅适用于安全性,而且在更大程度上适用于安全性(例如,某些物质的“每日安全剂量”设置为比实际有害物质低几倍的值)。
–立方
16 Jan 18 '13:59
这是您所指的论文吗?古特曼本人更新的结尾致cs.auckland.ac.nz/~pgut001/pubs/secure_del.html#Epilogue
–user2867314
16年1月19日在10:56
#7 楼
与现实世界中的垃圾收集者在将所有东西扔进卡车之前不会切碎所有东西的原因相同。人们可能会丢弃物体或信息的主要原因有两个:
他们希望防止其他人(或某些特定的人)使用它们。
他们不认为这些物品对任何人都具有足够的价值,以证明其使用的合理性保留它们或找到对他们有用的人。
出于第一个原因而放弃事物的人应该销毁它们,以使其无法使用,但对于那些摆脱事物的人由于第二个原因,最好将与相关项目相关的总剩余费用减到最少。由于计算机会生成大量信息,这些信息在相对较短的时间内就会变得无用,而且由于-对于大多数计算机-如果释放这些信息中的大部分都不会对任何人造成任何损害,因此在许多情况下,对故意破坏信息。只要有需要,就足以确保已占用信息的任何空间都可以重复使用。
#8 楼
实际上,您正在弄乱两个不同的过程:删除和安全擦除。第一个只是一个与FS相关的标准操作,一个确定且标准化的操作。第二种-安全擦拭-有很多方法,不擦除保护等级,标准等。因此,从逻辑上讲是正确的,如果您需要第二种,则您有责任选择并激活一种适合您自己独特情况的机制。在每种情况/任务/环境实施中,都没有通用且标准化的安全擦除方法。#9 楼
为什么OS不能从一开始就安全地删除文件?
您是从删除开始还是从操作系统开始?早期的操作系统试图将重点放在技术进步上,例如将内容存储在硬盘驱动器上,而不是软盘驱动器或打孔卡上。操作系统不需要做任何特殊的事情,就不可能从软盘驱动器中检索数据。 (对不起,那里的软盘驱动器的可靠性让我很开心。)那时,“保存”的能力非常重要。进行文件维护(例如能够“删除”)可能是一种隐蔽且很少使用的菜单选项。 “安全删除”对于那些可能只是将磁盘扔掉或先将其刻录掉的人来说似乎是胡说八道。为什么要使用比现在低得多的速度嘈杂的软盘驱动器等待半分钟或更长时间,以便可以覆盖零?在没有人了解“双击”是什么的那一天,因为他们甚至没有鼠标,所以甚至从来没有单击过鼠标,并且他们认为“复制和粘贴”是超先进的技术,
然后,当遇到艰苦的挑战时,操作系统只是做了直截了当的事情,那就是使用已被证明可用于以下目的的相同计算机代码:软盘驱动器。
这是一个重要的问题,否则大约有三十年没有关于它的文章和故事了。
实际上,这可能更多地反映了新闻学的目标,即写出人们可能会发现有趣的东西,或者这可能是教育努力的结果。很多人根本不了解删除是永久性的,这对人们了解事物是有好处的,因此教育是一件积极的事情。这并不意味着应该更改softare的默认行为。
如果有人认为它很重要,应该成为操作系统的一部分,为什么不成为软件的一部分的操作系统?
因为有些人觉得这并不重要。尽管对于某些人(他们一定愿意自由地欢迎他们擦拭(而不是删除)),擦拭可能会有用得多,但不同的人可能有不同的优先级。我首先删除东西,以便有可用磁盘空间而不是已用磁盘空间,并加快影响所有文件的操作(例如将所有已用磁盘空间复制到硬盘驱动器上),所以我不需要来查看旧文件的文件名,以便在需要新文件时不会意外打开旧文件。删除是从软件隐藏不需要的数据(例如旧数据)的有效方法,这样软件就不会使用不需要的数据。在我开始更可靠地备份数据之前,我实际上赞赏偶尔使用可以“删除”数据的恢复软件的功能。正如其他人所表示的,擦拭可能会导致速度变慢和“磨损”。由于我的计算机还没有出现过,因此我担心的人可能会浏览我删除的数据以尝试学习我希望保密的内容,因此擦拭从来都不是我的首要任务。考虑到所有这些,针对您的最后一个陈述,“做正确的事”,我认为对于我的使用场景而言,删除已是“正确的事”,而擦除的频率要远高于擦除情况。我认为,回答您许多问题的最大简单原因是,对于大多数情况而言,确定哪种行为是“正确的事情”可能并不像您认为的那样那么简单。
评论
硬盘驱动器确实的确是在软盘之后出现的,但在大型机和小型计算机上却不是:首先出现在硬盘中(1956年)。稍后(约1970年)开始使用软盘。
–韦恩·康拉德(Wayne Conrad)
16 Jan 24'在13:38
我记得中学时在PDP-11上使用8英寸软盘。希望我保留一个。在这里的某处有几张卡片...似乎很有趣,因为计算机最初主要是为政府和军方开发的,因此它们不包含更多的安全性。我猜他们有身体上的安全感(组件太重了,无法在安全的校园中带锁铁丝网包围并受到武装警卫保护的带锁建筑物中的带锁室内走进去……),所以他们不必为此担心。但是,为什么不包括PC和过去3年中的安全性问题呢?哦,嗯,没有意义。
–user82913
16年1月26日在21:16
#10 楼
为什么他们仍然不这样做呢?
其他答案也回答了为什么以前没有做到这一点(性能,用户期望等),所以我会只需添加一条注释,说明为什么现在仍未完成。一个问题是,安全删除仅被视为部分安全解决方案:它将删除文件的一个副本,但是大多数现代应用程序将留下大量痕迹-历史(撤消)缓冲区,备份副本等-可以从中删除数据聚集。还存在在删除文件之前访问文件的问题(例如,您打算安全删除驱动器上的文件,但是有人偷走了该驱动器)。由于这些原因,现代操作系统已对用户存储实施了完全加密,从而无需进行安全删除。使用加密的用户数据,即使驱动器保留了“已删除”文件的映像,该文件(以及每个其他文件)的所有痕迹也会被没有解密密钥的攻击者隐藏。 Chrome OS,Android和iOS现在都默认情况下都对用户数据进行加密,因此,至少在这些系统上,几乎不需要安全删除单个文件。
评论
对于每个文件的加密密钥,即使密钥随后以明文形式存储,除非用户提供了对其进行加密(而不是填充磁盘加密),这似乎是一个更好的解决方案-然后,您可以简单地覆盖存储密钥的〜256位,然后无法访问该文件。 OpenBSD这样做是为了交换空间,但是普通的文件系统实现并不是特别常见。
– Gert van den Berg
16年1月22日在14:52
@GertvandenBerg:鉴于闪存介质的写入和擦除块大小不同,维护每个文件的文件加密密钥并确保其可靠销毁非常困难。如果闪存芯片提供并记录了一种将已写页面清零的方法会容易得多,但是由于它们的纠错代码逻辑,它们中的许多只允许写入完全空白的页面,并且也不例外。写入将完全清零一页。
–超级猫
16年1月23日在19:46
感谢您解决我的问题的重要部分。
–user82913
16年1月26日在21:12
@supercat:如果有太多的抽象层,它将变得很棘手...如果密钥列表也通过用户提供的密钥进行加密,从而有效地进行了全盘加密,则如果读取密钥数据,将变得更加困难没有被破坏,但是使用起来不太方便。即使没有这种情况,恢复已删除数据的机会仍然比目前要少得多,因为目前没有尝试销毁数据。
– Gert van den Berg
16年4月4日在6:36
#11 楼
其他答案很好,并且已经在技术层面上完全涵盖了该问题。但是我认为会提示另一个答案,从另一个角度解决该问题,因为(IMHO)这个问题并不是真正的技术性问题(询问为什么做的不同之处更多的是业务决策,而不是技术性决策)。问题问为什么操作系统没有真正删除数据。操作系统的制造商可以使其随心所欲。当然,没有理由不能有人构建一个可以删除数据的操作系统。但是为什么会呢?尝试绕开这个问题,为什么有人会在容易下载适合您的实用程序时构建一个删除数据的操作系统?另外,通常的哲学是操作系统应该是极简主义的,并且只包含计算机运行所必需的功能。
我的回答并不是苛刻,我的意思是问题似乎是从错误的角度提出的,并且缺少一些初步的知识。
评论
操作系统极简主义? 25年前,我编写了一组DOS TSR,以通过Novell网络共享调制解调器。大约在那个时候,微软发布了自己的网络功能,最终它可以在其网络方法上共享调制解调器和打印机。微软已经慢慢接管了大多数用于备份,撤消删除等操作的第三方产品。它只是极简主义,并且由于Windows占据了90%的PC,因此大概占了90%。那里的计算机,这确实是我所指的。
–user82913
16年1月26日在21:10
@nocomprende这实际上是所询问问题的另一个问题,它似乎好像所有操作系统都一样,而事实并非如此。 Windows是最肿的操作系统之一。
– Celeletas
16年1月27日在4:01
评论
评论不作进一步讨论;此对话已移至聊天。因为它昂贵,大多数人都不在乎它。同样,大多数信息不是秘密信息。