如何安全擦除硬盘?


209

我打算出售一个USB外部硬盘驱动器,该驱动器当前包含一个已安装的旧版Ubuntu,带有已存储的密码和银行信息。

出售前如何安全擦除驱动器?


2
另外,请查看此EFF页面以获取涵盖多个OS的全面说明。
汤姆·布鲁斯曼

@Lekensteyn'删除键位'?刚刚搜索非盟,却没有得到任何答案,但这只是部分相关的问答。我应该问这个新问题还是在这里讨论?
汤姆·布鲁斯曼

如果您有安全的密码短语,那么当您丢失驱动器时,世界不会丢失。但是,建议按照code.google.com/p/cryptsetup/wiki/…的 5.3中所述清除键槽。继续询问有关擦除加密磁盘的问题。
Lekensteyn'4

Answers:


225

安全擦除存储设备

有一个名为的命令行实用程序shred,该实用程序会使用随机位覆盖文件或整个设备中的数据,使其几乎无法恢复。

首先,您需要标识设备的名称。

这可能类似于/dev/sdb/dev/hdb(但喜欢/dev/sdb1,这是一个分区)。您可以sudo fdisk -l用来列出所有已连接的存储设备,并在那里找到您的外部硬盘驱动器。

注意请确保它是正确的设备,选择错误的设备会擦拭它。

卸载该设备上所有当前已安装的分区(如果有)。然后运行以下命令,替换/dev/sdX为您的设备名称:

sudo shred -v /dev/sdX

这将用随机数据覆盖设备上的所有块3次,该-v标志表示详细信息,并将打印当前进度。

您可以添加-nN仅执行此操作N次的选项,以节省大容量设备上的时间。这可能需要一段时间,具体取决于外部硬盘驱动器的大小(我认为4 GB闪存驱动器大约需要20分钟)。

您也可以在最后一次迭代后通过添加option将所有位设置为零-z,我更喜欢这样做。

sudo shred -v -n1 -z /dev/sdX

之后,您将不得不重新分区设备。最简单的方法是安装GParted并使用它:

sudo apt-get install gparted
gksu gparted

在右上角列表中选择您的设备。然后选择Device -> Create partition table在设备上创建分区表。

然后添加一个使用设备上所有未分配空间的分区,选择fat32作为文件系统。通过单击工具栏中的“ 应用”按钮(绿色复选标记)来应用更改。

提示

  • 在线或通过在终端上输入来阅读手册shredman shred
  • 请注意,不会擦除磁盘的某些部分-使用驱动器固件的“ SECURE ERASE”命令(例如,通过hdparm)来正确清理磁盘。

31
此处的最佳做法:断开所有硬盘驱动器,插入外部驱动器,然后对活动CD进行上述操作,以防止损坏任何重要内容。
Nick Pascucci 2010年

30
请注意,此安全性已被要求驱动器自行擦除的SECURE ERASE方法所弃用。这应该处理所有可能的数据,并且不会不必要地增加系统负担。您可以使用该hdparm实用程序执行安全擦除,其中驱动器会自行擦除。此方法尝试擦除整个驱动器,包括坏扇区。此外,它比覆盖常规方法快得多。这也是SSD驱动器的推荐方法,这shred是一个非常糟糕的主意。
Maarten Bodewes 2013年

6
@owlstead:您能详细说明吗?什么是安全擦除?如何使用它?如果您有一个更好的答案,请单独回答,我们将不胜感激。
Mads Skjern 2014年

17
有关使用ATA Secure Erase命令的评论具有误导性。使用SE存在严重问题(关于缺少供应商的一致支持以及过程的透明性)。相关:security.stackexchange.com/questions/62253
MV。

2
@Fiksdal我不知道,距我写这个答案已经五年了,我不记得我这么说的动机。话虽如此,我想我的意思是“在今天实际上已经不可能了,但是在技术上有足够的改进,在将来很有可能”。
Frxstrem '16

94

只需使用dd工具将其“归零”即可:

  1. 通过启动磁盘实用程序 System > Administration > Disk Utility
  2. 寻找你的磁盘在左侧面板中,选择它,在右边找到设备路径(如/dev/sdX
  3. 从gnome终端(应用程序>附件>终端)运行以下命令:

    sudo dd if=/dev/zero of=/dev/sdX bs=1M

    确保使用正确的设备路径,不仅仅是复制此行!

这将用零覆盖整个磁盘,并且比生成千兆字节的随机数据快得多。像所有其他工具一样,它也不会处理由于任何原因(写入错误,保留等)而被映射的块,但是您的买方极不可能拥有从这些块中恢复任何东西的工具和知识。

PS:在您之前,布鲁斯·施耐尔(Bruce Schneier)的狂热粉丝对我表示不满:我想证明有可能从已经被零覆盖的非古老的旋转硬盘驱动器中恢复数据。甚至不要考虑另外评论!:P


6
+1为Bruce Schneier(和DD确实是一个出色的工具)
2011年

6
并不是说这是最强的“证明”,但存在Gutmann方法是有原因的。据我所知,如果硬盘被零覆盖,理论上现代硬盘仍然容易恢复其数据。不管这种说法是否仍然成立,希望您可以承认使用/ dev / random或为此目的使用特定算法进行覆盖不会对它造成损害。
塞林2012年

13
不,这不会造成伤害,只是会花费很多时间(尤其是如果您使用/ dev / random:P),并且收益可疑。我读过的有关该主题的最后一篇论文(对不起,没有细节,我想是2008年以来)建议-基于使用真实硬件进行的测试数据-恢复单个位的机会是<50%→意味着您得到的回报更低使用抛硬币“恢复”每个位时的错误率。因此,除非有证据证明清零还不够(目前还不是“也许”,而是“没有节制的方式”),否则这是我选择的方法。
htorque '02

12
@Cerin我的理解是,从来没有任何证据可以证明这些偏执的数据恢复幻想是可能的。正如在指出“批评”你链接的文章的部分,怎么他的算法已被使用“格特曼自己是关键更是一种巫术咒语的驱逐邪灵比驱动编码技术进行技术分析的结果 ” 。进行零擦拭操作的唯一原因是情感上的...也就是说,它使您感觉更好...而不是技术上的。
非理性的约翰

4
很好,但是您能否请我解释一下为什么要输入bs=1M参数?我可以读取和man,并且IIUC只是将缓冲区限制为1 MB。为什么这样做很可取?
gaazkam 2015年

20

看看安全堆栈交换上的这个权威性问题

如何可靠地擦除硬盘驱动器上的所有信息

本文讨论了各种安全删除选项,以及物理销毁和擦除操作,因此您可以决定哪个选项可能是最好的选择。

但是请记住,不同存储的当前恢复状态如下:

  • 非常老的硬盘驱动器:磁道之间存在间隙,因此您有可能会在这些间隙中渗出(如果您有扫描电子显微镜的话)。多次覆盖可能很有用。
  • 新的硬盘驱动器:目前不存在即使经过一次覆盖也无法读取的技术。
  • 固态硬盘驱动器:损耗均衡意味着您无法安全覆盖。取而代之的是,您要么加密整个卷并丢弃密钥以进行擦除,要么销毁设备。

30年前非常老的定义是什么?
动机

10Mb MFM驱动器大约在20
Rory Alsop

这与手机和平板电脑等设备中的驱动器有什么关系?
启发

@Motivated鉴于手机和平板电脑都使用闪存,它的答案可能与SSD的答案相同,但我不确定。您可以要求超级用户提供更好的信息。
wjandrea

20

我通常会使用进行破坏性的读写测试badblocks -w。两个主要优点是

  • 它是基本系统以及几乎所有救援系统的一部分,因此可以从Ubuntu安装程序的救援外壳中获得。
  • 您最终会收到报告,磁盘上是否有坏块

请注意,如果报告指示有问题,我将不再出售该磁盘,因为它可能很快就会发生故障。

使用示例(如果您的磁盘是sdd):

sudo badblocks -wsv /dev/sdd

(已添加sv进度条+详细)


11

现在,磁盘gnome-disks)工具具有ATA安全擦除。您可以使用它来擦除硬盘驱动器。使用命令行工具在此答案中说明了相同的选项hdparm

  1. 打开磁盘工具→选择目标磁盘
  2. 从菜单:格式化磁盘...
  3. 从下拉列表中选择,擦除:ATA增强安全擦除
  4. 格式

ATA增强安全擦除1 ATA增强安全擦除2


2
尽管通常这是最佳选择,但它不适用于USB(如上述问题所示)。在ata.wiki.kernel.org/index.php/ATA_Secure_Erase上有关于此的警告和免责声明。但是,我在Gnome问题中对此进行了询问。
科兰

1
@colan据我了解,这取决于整个堆栈中的功能支持(磁盘-内核-驱动程序-控制器-驱动器)。虽然我的情况适合两个硬盘(WD USB3硬盘和带有SATA-USB3有源适配器的WD),但我确认并非适用于所有情况,我已经看到一些具有硬编码块对齐方式的SATA-USB3适配器(读取512b) &4k块不会创建相同的图像),有些不支持SMART,后者也具有一些长的exec命令,某些USB驱动器具有非标准/扭曲的实现,用于密码保护/加密的分区(通过另一个USB适配器使用它会打破它)
user.dz

8
  • 您需要创建一个回送设备,该设备在驱动器的整个内容上运行/ dev / random。
  • 这样几乎可以完全随机地填充整个驱动器,然后可以使用dd将所有位设置回0。

  • 实际上,dd应该能够随机化所有信息。

  • 您说您已经在银行硬盘上存储了银行信息。因此,我建议您从活动CD(其中hdX是您的硬盘驱动器)中运行以下任一命令。

    dd if=/dev/zero of=/dev/hdX

    dd if=/dev/random of=/dev/hdX

    dd if=/dev/urandom of=/dev/hdX

  • 根据您的硬盘大小,将花费很长时间。

供你参考:

请参阅以下链接,

注意:

  • 随机使用随机位,零使用0位。
  • Urandom是随机的半随机版本。

随机真的有必要吗?将所有位都替换为1,然后替换为0,还不够吗?
巴克(Buck)2015年

7

你可以用

安装

sudo apt-get install wipe

您可以使用该软件或使用以下命令:

shred -vfz -n ? (drive)

是“?” 是,输入您要切碎驱动器的次数,然后输入“(drive)”,则插入要切碎的驱动器。完成后,随心所欲。我认为这种方法更有效,因为您可以控制对驱动器所做的操作并立即获得结果。

链接

  1. http://wipe.sourceforge.net/
  2. http://www.howtogeek.com/howto/15037/use-an-ubuntu-live-cd-to-securely-wipe-your-pcs-hard-drive/
  3. http://ubuntuforums.org/showthread.php?t=817882

6
为什么在擦拭与切碎之间使用一个?
Mads Skjern 2014年

7

最好是使用ATA驱动器的安全擦除功能。安全擦除会以固件级别擦除驱动器。无法获得更高的安全性。

首先检查是否支持安全擦除:

sudo hdparm -I /dev/sdX | grep -i security

(将sdX替换为sda / sdb / sdc,无论您的磁盘是什么)。

如果看不到输出,请使用dd:

sudo dd if=/dev/zero of=/dev/sdX bs=1M

如果看到输出,请检查设备是否未冻结:

sudo hdparm -I /dev/sdX | grep -i frozen

如果未冻结,请将密码设置为“ Eins”:

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

可选:您可能想知道这需要多长时间:

sudo hdparm -I /dev/sdX | awk '/for SECURITY ERASE UNIT/'

然后执行擦除:

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

然后等一下 显然,对于1TB磁盘,这可能需要3个小时或更长时间。

有一个很好的脚本可以自动执行这些步骤


6

您可以使用DBAN维基百科

Darik的Boot and Nuke(通常称为DBAN)旨在安全擦除硬盘,直到数据被永久删除并且无法恢复为止,这是通过用梅森捻线器或ISAAC生成的随机数覆盖数据来实现的。 PRNG)。Gutmann方法,快速擦除,DoD Short(3次通过)和DOD 5220.22-M(7次通过)也作为处理数据保留的选项而包括在内。

DBAN可以从基于Linux的软盘,CD,DVD或USB闪存驱动器启动。它支持PATA(IDE),SCSI和SATA硬盘驱动器。可以将DBAN配置为自动擦除它在系统上看到的每个硬盘,这使其在无人值守的数据销毁方案中非常有用。DBAN存在于Intel x86和PowerPC系统。

像其他数据擦除方法一样,DBAN适用于在计算机回收之前用于个人或商业情况,例如捐赠或出售计算机[2]。如果感染了恶意软件,则可以在将磁盘恢复生产之前使用DBAN。


3

在这种情况下,与dd相比,粉碎的另一个优点是:我的磁盘有故障,需要退还给供应商进行交换。

dd在第一个坏块处停止,并且无法破坏其余的块(除非我痛苦地使用skip = ...每次停止时都向前跳)。

切细会忽略写入错误,在这种情况下很高兴继续进行。


0

扎根

dd if=/dev/random of=/dev/(your usb drive device here); dd if=/dev/zero of=/dev/(your usb drive device here)

确定您的驱动器正确!


7
切勿将/ dev / random用于此类操作。/ dev / random使用熵池生成随机数据,并在此熵池为空时阻止操作。因此,如果您不对计算机进行任何操作以产生新的随机性,则该操作将永远花费。请改用/ dev / urandom。另请参阅man random
htorque 2010年

2
您可能需要在命令前加上sudo。此外,dd当使用的块大小大于默认大小时,往往会更快完成。因此,我建议非常谨慎地使用:sudo dd if=/dev/random bs=1m of=/dev/sdX
非理性的约翰

啊,这意味着要成为sudo dd if=/dev/urandom bs=1m of=/dev/sdX哦,好吧。
非理性的约翰


0

那些建议使用切丝的建议不正确。Shred的手册页说它在日志文件系统上实际上是无用的,如果您不更改其文件系统默认值(ext3和ext4已记录日志),Ubuntu几乎可以保证会使用它。resierfs和Reiser4以及许多其他常见的Linux文件系统也是如此)。

更不用说切碎对于完全空白或随机化磁盘完全没有用,因为它仅适用于单个文件或文件集(在文件系统级别,而不是原始数据级别)。如果要安全擦除磁盘,则必须在驱动器的主设备节点上使用dd(例如:/ dev / sdc而不是/ dev / sdc1),而没有装载任何磁盘。

这将需要一段时间,但与粉碎不同,它将完全不可逆地将硬盘从MBR擦除到最终扇区。另外,请在dd上使用BIG WARNING,确保在正确的设备上使用它,或者至少要部分擦除错误的磁盘。如果您不小心在系统驱动器上使用dd,这可能是灾难性的,这不仅会使它无法启动,而且可能不可逆地损坏驱动器上的任何给定分区。这给它起了“磁盘破坏者”的绰号。

切碎不是用于可靠擦拭驱动器的可靠工具。如果您要出售或放弃计算机,则清空驱动器的正确方法是将其置零或用dd对其进行随机化,并且永远不要使用粉碎,因为文件系统日志可以毫不费力地有效还原粉碎的文件。


9
您不要指向文件碎片。您将其指向整个设备。文件系统无关。
大卫·

1
@DavidGiven从技术上讲,您可以只粉碎文件系统中的一个文件,而这正是切碎的联机帮助页所谈论的。在这种情况下,Yaro的警告将是有效的。但是,是的,切碎整个分区是完全不同的事情。在那种情况下,文件系统确实没有关系。
阿洛瓦·马哈德

0

最简单的方法是使用:

sudo shred -fv /dev/xxx

xxx是设备,要确保您拥有什么设备,请输入:

sudo fdisk -l

该设备将在磁盘字后并在冒号char :处指示,如下所示:

Disk /dev/sde: 500.1 GB etc...

不要挂载您要擦除等的磁盘文件系统。切碎将在部分时间内完成您想要的操作。-z选项用于最后一次运行,其值为0以隐藏擦除,而擦除数据不是必需的。

最好的方法是像以前的用户一样使用dd:

sudo dd if=/dev/urandom of=/dev/xxx bs=1M

使用urandom设备,因为它是获取随机模式的更现代且更好的方法。

此刻的其他工具可能会比较旧,而开发的人会更少。Shred是Linux的核心应用程序。

请看以下示例:擦除2009 http://lambda-diode.com/software/wipe/。但它是众所周知的应用程序。可以使用bleachbit,但是在我尝试时花了很长时间。


-1

如果dd cmd无法正常工作,则可以使用重定向方法清除数据。

喜欢,

cat /dev/urandom > /dev/sd**a**   # depends on your hdd location 

要么

或者,您可以使用cp(复制cmd)覆盖以前的数据。

cp /dev/urandom /dev/sd**a**      # depends on your hdd location 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.