如何安全擦除SSD驱动器中的文件?


14

尝试安全擦除SSD时,我们遇到几个问题:

  • 有限的擦除周期后,SSD会磨损
  • SSD具有一个控制器,该控制器可动态地将LBA(系统用于访问磁盘的逻辑块地址)映射到NVRAM单元(实际的闪存单元)以平衡磨损,这意味着告诉磁盘覆盖以前存储特定磁盘的块。文件可能会导致覆盖任何其他备用块。
  • SSD具有显着百分比的备用容量,用于补偿快要耗尽的存储单元并减少磨损。它们对系统不可见,并且可能包含旧的数据片段。

现在,我们从Ubuntu内部可以选择哪些选项来安全擦除SSD?

我听说有些较新的SSD应该可以安全地擦除自身,但是如何确定我的SSD是否可以这样做以及如何触发呢?
还应该有一个ATA安全擦除命令,如何确定是否支持该命令以及如何触发该命令?

还有其他方法可以安全地仅擦除给定文件或仅擦除未使用的空间吗?
我猜想对所有分区进行备份,安全地擦除整个磁盘,然后还原备份是可能的,但是听起来太复杂了,而且花费的时间太长,无法实用。还有其他选择吗?如果没有,我可以使用哪些工具来备份分区而不备份已经删除的文件?

当然像标准工具的shredwipe用于上述的点是不可用在这里。它们只是覆盖一个文件(通过覆盖绑定到LBA的文件系统群集,这些LBA由于耗损均衡控制器而不能始终指向同一闪存单元)。



我知道将其纳入内核的相关学术工作,请参阅lwn.net/Articles/480269
noleti

Answers:


9

当前,如果不擦除整个驱动器的内容或访问SSD的固件,就无法安全地擦除SSD上的文件。

  • 无法知道SSD可以在哪里存储逻辑块的先前副本。

  • 更糟糕的是,由于文件系统的日志记录和写时复制机制,可能无法知道哪些逻辑块可以保存特定文件的先前副本。

防止已删除文件泄露给直接访问驱动器的人的唯一方法是首先对它们进行加密,并确保加密密钥不被撬开。

附录:

我进行了一些研究,发现如果您设法学习文件系统的所有未占用扇区,则可以清除所有以前删除的文件,这通常是可能的,并且由某些文件系统工具提供(例如ext *系列) ),然后丢弃(例如,使用此链接问题的答案中blkdiscard(8)概述的方法),这将返回用于垃圾回收的块,直到再次使用它们并在过程中将其覆盖。

这样可以防止无法直接访问闪存单元的每个人,因此每个

  • 没有合适的闪存读取设备,并且
  • 无法说服驱动器固件揭示未分配块的内容(在大多数情况下,由于没有标准化的方法,这需要对固件进行有意义的修改和自定义ATA命令)。

您能否在答案中包含要点和该链接的指示摘要?
字节指挥官

我链接到一个等效的澳大利亚问题。我希望那会更好。
David Foerster

在启动时安全擦除可用空间是否可行?
user4493605 18-10-11

1
@ user4493605:您说的“可行”是什么?当然有可能。拜托你打开一个新的问题,如果你有一个新的或后续的问题?评论部分不适用于新问题或扩展讨论。欢迎您给我发送评论,并附上通知以引起我的注意。谢谢。
大卫·佛斯特

3

警告:如果尚不清楚,安全擦除驱动器将消除驱动器上的所有数据,并使其无法恢复。您应该备份所有关键信息。

确定驱动器是否支持安全擦除的最简单方法是询问它:在以下示例中,我使用了/ dev / sdX。您需要仔细更改它以匹配您正在使用的设备:

资料来源:

https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

/superuser/1161531/how-to-un-freeze-drive-in-linux

$ sudo hdparm -I /dev/sdX | grep -i erase

在我的SSD上,结果为:

supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

如果您的设备支持安全擦除,则触发过程需要2到3步。

  1. 如果设备报告其冻结,如以下sudo hdparm -I /dev/sdX类似的输出所示:
not   enabled
not   locked
      frozen
not   expired: security count
supported: enhanced erase

通过挂起并恢复系统来解冻它。我通过sudo systemctl suspend 移动指针直到系统恢复的命令来完成此操作。

  1. 在这种情况下,您必须设置密码以使用安全擦除,而我使用的是foob​​ar作为密码,您可以使用任何您喜欢的非空白密码作为临时密码。

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

  2. 设置密码后,您现在可以使用它来安全擦除驱动器:

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

如果您的驱动器支持它,并且您希望这样做,则可以选择使用增强型安全擦除功能,而不是:

sudo hdparm --user-master u --security-erase-enhanced foobar /dev/sdX

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.