有没有办法确保无法恢复已删除的文件?

如您所知,通过按shift键或使用垃圾桶删除文件并不意味着该文件永远消失了。它位于计算机中的某个位置。

在日常生活中,执法人员或小偷使用恢复程序来泄露我们的私人数据或其他东西。

他们可以恢复驻留在硬盘,RAM甚至USB中的所有数据。

要保护我们免受这些人员的伤害,该怎么办?一个人应该使用哪个程序?

注意:我不想要像先使用恢复程序然后将其擦除的文件那样的答案。我只想用一个程序就可以删除计算机上所有未使用/已删除的文件。

评论

不幸的是,即使没有答案非常严格地适用于SSD时代,赏金还是会自动授予。除非进行了驱动器制造商特定的API调用,否则使用SSD字节并不会真正覆盖(除非您执行整个驱动器过程)。请参阅答案之一中引用的文章。

#1 楼

Shred
此命令行工具已经从Ubuntu的核心实用程序中安装,可以使用Gutman方法安全地擦除和覆盖单个文件。
快速切碎
shred -vzn 0 /dev/sdc1

通过覆盖来擦除整个分区一次迭代中所有带有0的内容。如果没有法律方面的规定要求采取其他程序,则可以安全地删除您的私人数据。摘自Craig Wright,《计算机科学》,2008年,第5352页,第243-257页。
安全切碎
shred -vzn 3 /dev/sdc1

使用3个带有随机数的迭代来擦除整个分区。另外(选项-z),该操作将写入零以隐藏最后的粉碎过程。这将比快速方法花费4倍的时间。
注意:通过切碎一个分区,我们将用0或随机数覆盖此分区。因此,它可以有效地永久删除该分区上的所有内容,包括文件系统缓存。这也可以用来删除已删除文件的多余部分。我们要保留的文件在切碎之前必须进行备份。

擦拭

此选项提供了更多选项,以及删除单个文件之外的目录的可能性。命令行实用程序。
wipe filename
wipe -r dirname


有关日记文件系统和SSD的其他说明:


请阅读链接的联机帮助页中有关出现的安全问题的说明删除单个文件时从日记文件系统中仍可恢复的备份中删除文件。即使使用日记文件系统,覆盖整个分区而不是单个文件也将有效擦除所有数据。


擦除固态磁盘(SSD)上的数据只能通过多次迭代覆盖整个驱动器(不仅是单个分区)来完成。某些SSD可能具有删除数据的内置功能,但这可能并不总是有效的(请参阅注释中的链接)。目前,对于安全删除所有可用SSD上的所有数据残留所需的擦除过程或擦除迭代次数,没有普遍建议。


可以在以下菜单的上下文菜单中添加这些选项: Nautilus和Thunar。

在Thunar中,打开“编辑”,然后“配置自定义操作”

添加(加号)
名称“切碎的文件”
随便描述
动作“切细-u%f”
wipe类似。

对于鹦鹉螺,请参阅此问题及相关内容

选择“外观条件”,然后选择“其他文件”

评论


可能还值得注意的是,如果您使用的是固态驱动器,它还可以充当简单的日志结构文件系统,并且可能不会覆盖数据。

–詹姆斯·亨斯特里奇
11年8月18日在8:58

@shred,“大约需要20分钟才能擦除1.44MB”。关于一生要擦除640 GB :)。对于擦除,“ ...我们不能保证擦除会真正擦除数据,或者擦除的数据无法通过高级方式恢复。”换句话说,擦除没有真正/完全的内存消耗。

–user20296
2011年8月20日7:50



请注意,虽然您也可以在单个文件上使用碎片,但是如果您使用现代日记文件系统,则不能保证碎片将导致不可恢复的删除。您必须删除整个分区。我认为美国政府的标准是随机数据通过7次。

–斯科特遣散费
11年8月24日在2:44

关于SSD的一种评论:覆盖整个驱动器实际上并没有帮助。简而言之:您无法可靠地从闪存中删除数据。始终存储加密的机密文件。 (请参阅Wei等人的文章,可靠地从基于闪存的固态驱动器中擦除数据:usenix.org/events/fast11/tech/full_papers/Wei.pdf)

–freddyb
2011年8月26日10:19



@freddyb:我知道一个事实,目前尚不清楚如何安全地从SSD擦除数据。加密总是更好-这也包括传统驱动器!但是,问题在于如何安全地擦除数据(暗示它们以前可能没有被加密)。

–塔卡特语
2011年9月1日14:18在

#2 楼

您没有一个可以运行的命令可以轻松为您清除所有已删除的文件。但是,将来您可以做很多事情来减少这种攻击的脆弱性。

正如其他人所说,使用shred或srm之类的工具可以使您删除特定文件,具体方法如下:实际上覆盖了它,而不仅仅是将其从文件系统中删除。如果您感觉粗体,可以将rm命令替换为shredsrm,以安全地删除以后的文件。这意味着每当您(或另一个程序)尝试使用rm删除某些内容时,都会运行secure delete命令。

但是,如果您使用的是固态磁盘,甚至是一些更新的机械磁盘磁盘,碎片和其他基于覆盖的方法可能无效,因为磁盘可能实际上并未写入您认为正在写入的位置(源)。


全盘加密

更方便的选择是全盘加密。如果您使用备用安装程序,Ubuntu可以自动为您设置一个完全加密的磁盘,但是您也可以自己定制和配置设置。一旦安装,加密对您几乎是不可见的:在计算机启动时输入密码短语(确保选择一个不错的长密码短语)后,一切看起来和感觉都与普通的Ubuntu类似。

您还可以使用Ubuntu的磁盘工具对外部介质(如USB驱动器)进行加密。设置加密的外部磁盘就像格式化磁盘时选中“加密底层文件系统”框一样简单。您甚至可以将密码短语存储在(加密的)密钥环上,这样就不必在每次将该磁盘插入计算机时都输入该短语。

如果您的整个磁盘以及所有可移动媒体都已加密,则无需担心太多。窃贼或警察需要在计算机开机时(或非常好的关机后一两分钟内)轻扫计算机才能访问您的数据。如果您在不使用计算机时使其休眠(而不是挂起),则应该非常安全。

如果您需要完全销毁所有数据,则无需执行任何操作。古特曼抹掉了整个磁盘。只需覆盖磁盘的开头,即可破坏加密卷的标头。与常规文件系统不同,这实际上将使它无法恢复数据。


那么,如何从当前设置转到安全加密的磁盘?改造当前安装的操作系统以使用加密磁盘是一个很大的挑战。最简单的方法是备份所有数据和设置,然后使用加密磁盘重新安装。备份时,请确保将数据备份到加密的外部驱动器上,但不要将密码短语保存在密钥环中。

备份所有内容后,您可能需要大胆地擦除您的硬盘驱动器,以确保将来无法恢复任何现有数据。如果您使用的是SSD,则该过程将更具挑战性,因此,根据要在该过程中投入多少资金,可能有必要销毁当前磁盘(具有挑战性的主张)并从新磁盘开始。 >
重新安装操作系统时,如果尚未主动擦除磁盘,则应确保完全填充新的加密分区,该分区将覆盖所有旧数据。恢复备份后,您可能需要积极擦除备份磁盘的开头,以破坏加密头,以便无法再次对其进行恢复。

评论


您能解释一下“仅覆盖磁盘的开头以破坏标题...”这一部分吗?我一直只是在加密驱动器发生故障时丢弃或返回加密驱动器,假设没有人可以恢复数据。这是一个错误的假设吗?它具有64个字符的随机十六进制密码,因此没有人破解它们。

–汤姆·布鲁斯曼
2012-02-17 14:12

您链接的幻灯片(pdf)得出的结论是,可靠地切碎SSD的唯一方法是从字面上(物理上)切碎它。

– Titus
17年6月15日在7:22

#3 楼

更新:如果您尚未删除想要不可恢复的文件,请使用已接受的答案。但是,如果您已经删除了文件,则这是我所知道的下一个最佳方法。

如果我没看错,您想删除所有以前删除的文件。这是执行此操作的简单方法:

$ dd if=/dev/zero of=/path/to/mounted/partition/tmp_file bs=1M count=999999999999


让它运行直到它抱怨直到得到磁盘写错误[空间不足]为止。然后删除文件!这样做只是用000s填充了空磁盘,因此所有以前的文件都将被覆盖。确保立即删除文件,否则将没有任何磁盘。如果您确实偏执,您可能需要这样做几次。或者,如果您想随机写入磁盘,建议将/dev/zero替换为/dev/urandom

但是,这将花费更长的时间,所以我将其整夜运行。另外,如果要使用进度表,请改为执行以下操作:

$ free=$( df {PARTITION OR MOUNTPOINT}  |awk '{print }'|tail -1 )
$ dd if=/dev/zero bs=1M count=999999999999 | pv -s "$free" > /path/to/mounted/partition/tmp_file


首先,您要使用du,awk和tail获得可用的磁盘空间,然后使用dd来获取/ dev / zero,将其管道传递到代表“管道查看器”的pv,将所有内容重定向到tmp_file
再次,然后删除该文件。 $ rm tmp_file

无论如何,希望有人觉得这有用! :)

评论


是否有一个命令行实用程序为您执行此操作?说,overwrite_empty_space / dev / sdb1?

–landroni
14年6月16日在18:41

@landroni,我不知道这样的实用程序。但是,您可以轻松地将其放入BASH脚本中。 [如果您这样做,我建议您不要使用“ / dev / sdb1”,而是给它一个指向大文件的路径。无论将其安装在何处,都将清洁该磁盘。]这需要一些工作,因此在这里我将不做详细介绍。我相信您可以通过搜索找到信息。

–马特
2014年7月2日19:28



如果您确实要确保无法恢复文件,为什么不将磁盘装满后将tmp_file切碎?

– SPRBRN
2014年12月3日,9:05

#4 楼

首先,使用终端上的rm或nautilus上的shift-delete删除文件。
更好的是,使用Secure-Delete工具包中的srm

您可以安装安全删除工具像这样:

apt-get install secure-delete


其次,使用填充清除磁盘上未使用的空间:

sudo sfill -f <directory>


这将花费一些时间,因为它正在使用加密技术填充磁盘。

警告:这将遍历整个文件系统,并且您是root用户。小心使用!

这将创建一个文件,该文件将清除所有先前存在的数据。该文件将在<directory>中创建。

评论


该程序花费太多时间。对于80 GB,我已经等待了大约18个小时。而且,没有工具可以显示进度。

–user20296
2011年8月18日在8:35



我忘了补充;仅用/000.0文件填充磁盘需要18小时

–user20296
11年8月18日在15:42

但它是安全的,您可以删除文件或目录。

–RusAlex
11年8月23日在8:37

我怀疑这是否真的安全。在现代文件系统(ext2 / 3/4,ntfs等)上,有一种日志可帮助防止意外数据丢失。因此,即使擦除可用空间,也不能保证从日志中删除文件。另外,我了解到某些文件系统的工作水平足够高,因此很难保证您实际上覆盖了写入的物理磁盘扇区。 AFAIK,安全擦除某物的唯一方法是擦除整个分区及其上的所有文件。

–斯科特遣散费
11年8月24日在2:48

即使在日记文件系统中,也应该有可能覆盖可用的群集和空闲空间。尽管对于松弛空间,您可能希望在使用新文件时将其清除。无论如何,您必须在启动时刷新日志,并可能在此期间暂停正常的文件系统操作。

–rsaxvc
2015年12月10日下午5:37

#5 楼

一个GUI程序是BleachBit(也在源代码中)。 BleachBit Sourceforge页面上的最新版本(deb文件)。

除了简单地删除文件之外,它还包括一些高级功能,例如粉碎文件以防止恢复,擦除可用磁盘空间以隐藏被其他人删除的文件的痕迹应用程序。


“ BleachBit可以快速释放磁盘空间并不懈地保护您的隐私。
释放高速缓存,删除cookie,清除Internet历史记录,切碎临时
文件,删除日志,并丢弃您在那里不知道的垃圾。
专为Linux和Windows系统设计,它清除了90种干净的应用程序
,包括Firefox(为了使速度更快而进行抽真空),Internet Explorer,
Adob​​e Flash,Google Chrome,Opera,Safari等。” (来自http://bleachbit.sourceforge.net/)


BleachBit具有多个高级清除程序:


清除内存并在Linux上交换
在Linux上删除损坏的快捷方式
删除Firefox URL历史记录而不删除整个文件-带有可选的切纸
查找广泛使用的垃圾,例如Thumbs.db和.DS_Store文件。
删除OpenOffice.org最新文档列表,而不删除整个Common.xcu文件。
覆盖可用磁盘空间以隐藏以前的文件
真空Firefox,Google Chrome,Liferea,Thunderbird和Yum数据库:缩小文件而不删除数据以节省空间并提高速度
通过删除整个文件从.ini和JSON配置文件中删除私人信息

有关如何使用Bleachbit删除安全的特定文件和文件夹的详细信息
请参阅此答案。

#6 楼

如果您想要一个不受病态困扰的人无法阻止的解决方案,则应考虑以下几种组合(受货币资源的限制):


消磁-磁擦除硬盘
物理上禁用硬盘驱动器-即工业打孔机
酸洗<-不能从一堆粘糊糊中得到碎片。

这些解决方案的成本范围很大和独创性。一些:


http://www.semshred.com/hard_drive_crusher
http://www.edrsolutions.com/solution.asp
http:/ /www.doc-res.com/hard-drive-destruction.shtm


评论


答案很有趣,但我认为提问者希望在删除后能够继续使用他的硬盘。

–克里斯托弗·凯尔·霍顿(Christopher Kyle Horton)
2011年9月2日在15:49

哪里有办法:为什么不发射原子弹?

–user47206
13年3月14日在21:07



OP希望销毁数据-而不是他/她的国家! :P

–约翰·里克斯(John Rix)
16年7月30日在0:31

我发现15磅的大锤非常有效...而且具有治疗性。

–user535733
17-2-25在15:17

Thermite是彻底消除的另一种选择(德语文章,但包含该过程的精美图片)。

–大卫·福斯特(David Foerster)
18年7月19日在10:51

#7 楼

对于SSD和其他闪存存储介质,

SSD和许多其他闪存存储介质使用一种称为“损耗平衡”的技术,该技术会根据以前的写入周期数重新分配未使用的存储单元块,以延长驱动器的使用寿命时间。因此,覆盖块范围不能像硬盘驱动器那样安全地(甚至有效地)擦除存储内容。另一方面,闪存可以更快,更有效地安全擦除块,块范围或整个驱动器。

擦除整个驱动器


请使用驱动器的安全擦除功能。


确保驱动器安全性支持安全的erause1并且未“冻结”。如果是,则可能有助于挂起和恢复计算机。

$ sudo hdparm -I /dev/sdX | grep frozen
       not     frozen 


(已过滤的)命令输出表示此驱动器支持安全擦除,“未冻结”您可以继续。


设置用户密码(在此示例中为Eins)。此密码也将被清除,确切的选择无关紧要。

sudo hdparm --user-master u --security-set-pass Eins /dev/sdX



发出ATA安全擦除命令。

sudo hdparm --user-master u --security-erase Eins /dev/sdX



请参阅Linux内核Wiki中的ATA安全擦除文章,以获取包括故障排除的完整说明。


(源)

如果步骤1中的命令输出为空,则驱动器不支持安全擦除,但仍可能支持以下部分要求的TRIM命令。

擦除驱动器分区

如果驱动器支持,则blkdiscard(8) 2可以安全地擦除块设备1:

sudo blkdiscard --secure /dev/sdXN


其中/dev/sdXN是指向要擦除的驱动器或分区的块设备节点的路径。


1如果驱动器位于具有USB或FireWire连接的外壳内部,则转换芯片组可能会阻止对某些可选功能的支持,例如安全擦除和TRIM,即使随附的驱动器也支持它。

2可用并安装自Ubuntu Xenial Xerus(16.04)起默认为默认设置。

#8 楼

我会说解决方案是这里给出的几个答案的组合。对于仍在使用的已经删除的文件和分区,我同意Matt的观点。

然后,为了将来,我建议开始使用安全删除工具,而不是简单的'rm'。

最后,当可以重新格式化分区时,应考虑对分区进行加密的选项。也许使用像Truecrypt一样提供合理可信性的方法

#9 楼

我将truecrypt文件映像用于此类重要数据。我不方便,免费,跨平台,不需要完整的磁盘,也不需要使用任何其他软件来“真正删除”文件。

请确保您具有强密码,并对映像文件进行备份。我将备份保存在云中。

评论


警告:使用TrueCrypt并不安全,因为它可能包含未解决的安全问题。Microsoft终止对Windows XP的支持后,TrueCrypt的开发已于5/2014结束。

– Midhun KM
16年1月10日,12:10

有多种TrueCrypt衍生产品仍在维护中,例如。 VeraCrypt。顺便说一句,在微软停止XP和停止TrueCrypt开发之间没有任何联系-据我所知,围绕后者的情况仍然是个谜。

–约翰·里克斯(John Rix)
16年7月30日在0:37

#10 楼



第一个选项是切丝。关于碎纸的先前答案缺少一些必要的细节。如果在分区上运行shred(如sdc5的示例),您将无法克服文件系统的缓存,快照和日记等功能,并且数据将保留,其中有很多可能。

切碎必须有效,尤其是在现代SSD上,必须在设备而非分区上运行它。这将是/dev/sdc ...,末尾没有数字(分区号)。

如果要清洁的驱动器是计算机的主要设备,则需要通过活动USB进行操作。在这种情况下,最好在创建实时USB时向其添加持久性,以便可以下载一些额外的工具来正确执行此工作。

运行命令:sudo shred -vfxz /dev/sdcsda或任何设备名称。如果不确定名称,请打开“磁盘”或“ GParted”以标识您的设备,或在终端中运行命令-lsblk,然后在此处标识设备的名称。

在命令中添加字母fx很重要,因为f =强制权限和x =文件的确切大小。没有这些,您可能会丢失需要读取或写入权限的数据,或者将文件四舍五入到块大小时会丢失数据。

您可以通过添加-n(您的愿望)。示例:sudo shred -vfxz -n 5 /dev/sdc

这是擦除驱动器的第一个呼叫端口。运行灌木,安全删除和nwipe等类似工具可能会有所帮助。它们都以非常相似的命令以及略有不同的方法和模式以相同的方式工作。转到Linux手册页或Google,以快速熟悉如何使用这些命令。您不太可能需要超过标准的4条切碎通行证,但如果重要的话,您还可以多加努力,因为它可能会有所帮助。


您的RAM上可能有数据。安装安全删除后,对sdmem运行命令。这将擦除您的RAM内存。但是,您曾经用RAM填充的第一个数据,以及长时间保留在RAM中的任何数据,都可能留下痕迹。

购买新RAM(或HD / SSD) ,最好将驱动器填满几次。您可以使用shred,但在这里dd可能更好。命令:

sudo dd if=/dev/urandom of=/dev/ # (insert your device partion name)


如果要提高安全性,最好在使用RAM之前重复执行此过程,以提高安全性,并尽快擦除RAM中的敏感数据。之后可能。这次是留在原地,这是它留下痕迹的能力的主要原因。
剩下要做的就是创建一个分区或安装下一个发行版。


加密-人们经常将此方法称为可靠方法,但是如果您要继续使用硬盘或将其传递给其他人,则这不是有效的选择。关于法律麻烦,通常无法选择不对加密设备进行解锁,并且在许多地方可能被认为有罪或实际犯罪。但是,它可能会阻止小偷,等等(仅窃取数据)。

还请注意,加密的主文件夹非常不同,它无法保护您的计算机上的任何内容,适用于在线/


如果处置设备-切碎后,请使用包含特殊字符(例如*等)的长密码进行加密,以分解字母和密码,再次使用shred,但是您只能指定驱动器的前10gig(取决于大小,但这是一个很大的安全数字)。例如:sudo shred -vfxzs10G /dev/sdc在这种情况下,这比切碎整个驱动器更快且有效。

然后可以确定的是,取出硬盘驱动器和RAM,RAM很容易卡住和破坏,SSD也是如此。您可以发挥创意,并在打破它们的同时释放那种偏执的能量。



评论


欢迎来到Ask Ubuntu! :-) OP正在询问有关粉碎文件而不是设备的问题...

–法比
17年12月31日在12:22

糟糕!同样也非常需要karel的编辑。谢谢

–杰伊
17年12月31日在13:50

@Fabby-OP要求粉碎所有已删除的文件,而不只是一个。在这种情况下,切碎设备是合适的。即切碎可用空间。

–ravery
17年12月31日下午14:55

+1解决为什么加密不是解决方案

–猛兽
18年7月16日在19:22

#11 楼

您可以使用DD来安全擦除文件,祝您好运。请参阅此站点上的示例。

以下是用于安全擦除文件的命令(调整bs=xx参数)

dd if=/dev/urandom of=/tmp/test/myfile.txt bs=27 count=1 conv=notrunc


其中bs=##是写入文件的随机数据(以字节为单位)(必须与要覆盖的文件大小匹配,如ls -l命令所示,以字节为单位输入文件大小)