如何安全地删除固态硬盘(SSD)、U盘等闪存设备上的文件使其无法恢复?

对SSD, USB闪存设备以及SD卡进行安全删除

Secure Deletion on Solid-state Disks (SSDs), USB Flash Drives, and SD Cards

文章节选并译自SSD.EFF.org

开门见山地说,不幸的是——由于SSD, USB闪存设备以及SD卡的工作方式,局部的安全擦除很难做到。除非你将整块设备(的每个文件以及空闲空间)全部擦除。
因此,在这些设备上,你能够保护数据的最好方法便是启用加密。基于加密,即使文件依然存在于硬盘上,在发现文件的其它人看来也是一段毫无意义的数据,并且无法强制你对文件解密。
总而言之,就目前来说,并没有一种信得过的通用方法可以明确地安全移除你固态硬盘上的数据。如果你想要知道为什么,请继续阅读:

正如我们上文提到的,固态硬盘和USB闪存设备使用一种被称为均衡磨损技术(wear leveling)的技术。我们将在下文粗略地描述它是如何工作的。

对于机械硬盘,其上的空间被分割成了许多的区块(blocks),就好像一本书上的许多页章。当一个文件被写入到硬盘,它将被分配到某个区块或某一组区块(区块的序列)上。如果你想要覆写这个文件,你要做的事情就只是告诉硬盘去覆写这些区块。

但对于固态硬盘和USB闪存设备,由于每一个区块都只可以被"擦除-再写入"有限的次数,超出这个限制区块便会会无法工作(如同纸张在多次书写和擦除后难以使用)。频繁地擦除和再写入同一个区块是难以做到的。
为了解决这个问题,固态硬盘和USB闪存设备会使每个一区块被"擦除-再写入"的次数尽可能相等,以便让设备拥有较长的寿命。

而作为副作用,有时,向区块中擦除或写入文件并非如字面般即时地储存,而是并不触动区块本身、只将它标记为无效并将修改后的文件储存在其它区块中。这就如同将要被修改的书页放置不管而是在其它书页上写入要修改的内容,并修改目录表指出更新的书页。

所有的一切都在硬盘非常底层的电子层面上发生,以至于操作系统甚至不会注意到它们已经发生了。这表现为当你想要覆写一个文件,实际上计算机并无法保证实际的覆写了它,这便解释了为何安全擦除数据在固态储存设备上如此困难。

本文译者: yakuback
版权声明: 译文使用 署名-非商业性使用-相同方式共享 许可协议. 如需转载,请您注明出处.

上一篇:SSD系列算法理解


下一篇:【转载】什么是NVMe?