如何使用Ubuntu Live CD安全擦除硬盘?

我想在EBay上出售我的旧SSD。我该如何准备硬盘以保护个人数据,并使用Ubuntu live cd使硬盘处于良好状态?

3请查看安全擦除磁盘 - Arch Wiki - leorize
3个回答

最好的方法来擦除SSD是使用ATA SECURE_ERASE命令,而不是使用低级工具如dd,因为它更快速和可靠,有很多原因。
  1. 运行lsblk命令,确定驱动器当前映射到哪个块设备(如果只连接了这个驱动器,它很可能映射到/dev/sda
  2. 运行sudo hdparm -I /dev/sda命令,确定驱动器当前是否被冻结:

    Security: 
        Master password revision code = 65534
            supported
        not enabled
        not locked
            **frozen**
        not expired: security count
            supported: enhanced erase
        2min for SECURITY ERASE UNIT. 8min for ENHANCED SECURITY ERASE UNIT.
    

    如果是被冻结的,暂停系统然后恢复:

    Security: 
        Master password revision code = 65534
            supported
        not enabled
        not locked
        not frozen
        not expired: security count
            supported: enhanced erase
        2min for SECURITY ERASE UNIT. 8min for ENHANCED SECURITY ERASE UNIT.
    
  3. 运行sudo hdparm --user-master u --security-set-pass password /dev/sda命令设置安全密码(这是为了安全擦除驱动器必须要做的)

  4. 运行sudo hdparm --user-master u --security-erase password /dev/sda命令安全擦除驱动器
如Takkat所指出的,要注意这个方法无法捕捉到重新分配的坏扇区。
为了同时捕捉到这些坏扇区(如果有的话,并且驱动器支持),您可以发出增强型ATA SECURE_ERASE命令,该命令会多次写入制造商预定义的模式,并且还能捕捉到重新分配的坏扇区:
4. 运行sudo hdparm --user-master u --security-erase-enhanced password /dev/sda来安全擦除驱动器。

3这是建议的SSD擦除方式,但我们应该指出,在某些驱动器上,它仍可能留下可恢复的数据残留(对于通常的私人数据来说并不是一个大问题,但对于高度敏感的数据可能会有影响)。 - Takkat
@Takkat 是的,我已经添加了第二种方法来处理可能重新分配的坏扇区,甚至可能的实验室恢复尝试,现在应该没问题了。 - kos
@Takkat - 在非固态硬盘设备(例如旋转磁盘)上使用安全清除是否有价值?请参阅我在(https://security.stackexchange.com/questions/200332/should-a-secure-ata-erase-be-performed-on-a-non-ssd-drive)发布的帖子。 - Motivated
@Motivated 你的回答相当不错 :) - Takkat

使用lsblk命令列出所有驱动器并找到您的/dev/sdx
运行以下命令:
# dd if=/dev/urandom of=/dev/sdx bs=8M && sync

用你想要擦除的驱动器替换x。如果你有偏执狂(每次弹出和重新插入驱动器以确保数据被清除),可以运行多次。

这将擦除所有内容,所以请小心。我是认真的。在此之后,无论如何都无法恢复数据。

编辑:根据进一步阅读,使用上述方法很可能会安全擦除驱动器,但某些片段可能是可恢复的(几乎没有机会)。鉴于这个警告,请注意我不会删除这个答案,因为它提供了一个非常简单的方法来擦除数据,而恢复技术需要物理绕过SSD控制器,这在大多数情况下会损坏驱动器本身。


1一些人声称可以做到这两次。在进行此操作之前,最好备份所有个人数据。灾难只差一个数字而已 :D - Rinzwind
驱动器被清零后,数据仍然可以恢复。 - leorize
这种方法无法安全擦除固态硬盘上的数据,仅适用于传统硬盘。 - Takkat
这种方式并不能完全彻底地擦除数据,以至于在实验室中无法轻易且完全地恢复。在磁盘上写入的旧模式仍然可见,即使进行了多次覆盖(每次信号只是稍微变弱一些)。如果您希望数据完全不可恢复,您需要使用精心选择的模式将磁盘的每个部分重写20次 - 只用零覆盖一次将无法阻止任何人,除非是一个只使用硬盘本身来查看其中数据的普通人。 - Carlo Wood
@CarloWood 当你多次覆盖任何磁盘(满容量)时,它会擦除旧数据。而这种方法会写入随机数字,而不是零,增加了旧数据损坏的可能性。对于固态硬盘(SSD),安全擦除是一种更快的方法,但多次执行此操作也能达到效果! - xyz

这里接受的答案对我没有起作用,我可能会通过另一个答案来帮助其他人节省时间。
Drop Ubuntu live for this purpose. Get DBAN (http://dban.org).

DBAN是一个Linux可启动程序,它的唯一目的是擦除硬盘。它会引导启动,然后您可以选择一个硬盘,并指定擦除方法。它提供了几种算法选择。简单/快速方法会用0覆盖整个硬盘。中级方法会多次重写,而最安全的方法则需要一周甚至更长时间来完全消除任何即使是NSA也无法恢复的数据的可能性。
使用上述基于hdparm的方法,我从未成功过。我无法解决“冻结硬盘”问题。正如这里接受的答案所警告的那样,当hdparm -I输出显示为冻结状态时,密码分配和擦除方法将无法工作。在尝试了许多解决方法后,没有一种能够帮助我解冻硬盘。当从Ubuntu的实时驱动器启动后,挂起再恢复操作会导致键盘和鼠标失效,因此第一个建议的修复方法失败了。
我通常会想:“我会一直坚持下去,直到它成功为止”,然后我继续寻找解冻Ubuntu活动光盘的建议。我大概花了5个小时尝试各种方法来解冻这些硬盘。如果你谷歌一下,你会看到一长串要做的事情,其中有些听起来很荒谬。例如,建议先断开SATA和电源线,启动机器,然后在系统启动后插入硬盘。电击,有人要吗?
另一方面,DBAN第一次就成功了。它需要大约3分钟启动。我们选择了DOD擦除,它处于安全性谱系的中间位置。它用随机噪声覆盖硬盘31次。唯一的缺点是对于一个1TB的硬盘需要8个小时。为了擦除十几台机器,我制作了6个可启动的USB,并在两个晚上完成了任务。我试图擦除那些使用1TB SATA硬盘的3-5年旧的戴尔工作站。也许在更好的电脑上或者更小的硬盘上速度会更快。但确实需要8个小时。
在我看来,将磁盘覆写31次是过度杀伤力的。如果我只覆写每个驱动器几次,我会睡得很踏实。我已经破坏了分区表并重新分区了驱动器。根据我的经验,攻击者通常无法在仅仅进行这一步骤后恢复任何有用的东西。在我看来,如果攻击者对被擦除的文件表没有相当多的信息,他们几乎没有机会恢复到太多有用的信息。在这里,您需要对敌人试图恢复您的数据的难度以及您需要保护哪些数据进行个人评估。
如果您坚持要使用Ubuntu Live,并且只能使用终端工具,那么您可以使用终端销毁分区,创建新分区,新文件系统,并使用dd或类似工具多次写入磁盘。我会感到震惊,如果有人能够恢复到任何有用的东西。
我说这话时并不是在开玩笑。如果你担心NSA或俄罗斯黑帮会在你销毁分区、创建新分区、建立新文件系统,并在每个扇区上写入0和1后仍能恢复一些东西,那么你的问题比软件擦除更严重。唯一明智的做法就是拿起你的步枪对着硬盘开几枪。或者用铁锤砸碎它。

目前http://dban.org/无法加载(似乎宕机),但是这篇关于它的文章来自2022年5月的https://www.lifewire.com/how-to-erase-a-hard-drive-using-dban-2619148,在SourceForge上链接到了一份副本。 - Ryan