如何安全地删除存储在 SSD 上的文件?

如何安全地删除存储在 SSD 上的文件?

来自(很长,但绝对值得一读)有关 SSD 的文章

当您在操作系统中删除文件时,硬盘或 SSD 都不会做出任何反应。直到您覆盖扇区(在硬盘上)或页面(在 SSD 上)时,您才会真正丢失数据。文件恢复程序利用此特性来帮助您恢复已删除的文件。

然而,HDD 和 SSD 之间的主要区别在于覆盖文件时会发生什么。HDD 可以简单地将新数据写入同一扇区,而 SSD 会为覆盖的数据分配一个新的(或以前使用的)页面。包含现在无效数据的页面将被标记为无效,并在某个时候被擦除。

那么,安全擦除 SSD 上存储的文件的最佳方法是什么?像我们习惯的那样用随机数据覆盖硬盘(例如使用“shred”实用程序)是行不通的,除非您覆盖整个驱动器……

答案1

由于 NAND 闪存的特性,SSD 无法直接覆盖数据。在删除文件之前反复覆盖文件不会安全地擦除 SSD 上的数据 - 数据只会写入 NAND 上的其他位置。

要理解为什么会出现这种情况,有必要解释一下 SSD 内部的工作原理。

  • NAND flash分为,每个由一组页面通常大小为 4 KB(加上纠错码)。大多数现代 SSD 使用 NAND,块大小为 512 KB,每块 128 页,但有些驱动器(尤其是较旧的驱动器)可能使用 256 KB 或更小的块。下图假设块为 256 KB,但无论块大小如何,概念都是相同的。

NAND 块中的页面图
来源- 礼貌音乐分类器来自维基百科,CC BY-SA 3.0

  • 每个页面都可以单独写入,但页面在擦除之前无法重写,并且擦除只能以整个块的形式进行。这意味着每当重写数据时,SSD 都必须将受影响页面中的数据标记为无效,并将其重写到其他地方,可能是不同的块中。在更合适的时间,理想情况下,当驱动器空闲并且块中的所有页面都标记为无效时,SSD 可以擦除不再使用的块。此清理过程称为垃圾收集

  • 为了让 SSD 知道哪些块可以擦除,操作系统必须告诉它哪些块不再包含有效数据。这是使用ATA修剪命令. 然后 SSD 就可以自由地收集那些未使用的块。

SSD 尝试将写入操作均匀分布在 NAND 上以避免过早出现故障,这个过程依赖于驱动器的可用空间。

  • 每个 NAND 块只能承受有限数量的写入/擦除周期。当今许多消费级 SSD 都使用 19-21nm NAND,其中每个块在无法使用之前可以持续约 3,000 次周期,尽管企业级 SSD 和几款使用更耐用的 NAND 类型的高端消费级 SSD 已在市场上销售。

  • 然而,在所有情况下,SSD 都必须将写入分散到整个驱动器上,以避免对任何单个块造成过度磨损,从而避免驱动器过早出现故障,这个过程称为磨损均衡. 只有在有一定空间的情况下才能实现有效的磨损均衡(过度配置) 被保留,以便即使驱动器几乎已满,也能按要求进行高效的垃圾收集。

  • 在极端条件下,SSD 被要求以比其擦除旧块更快的速度写入数据(在写入繁重的数据中心工作负载中很常见),它可能被迫将一个块中的数据重写到另一个块中,然后立即擦除旧块以便为新数据让路,然后才有机会执行垃圾收集。

  • 强制重写块并不理想,因为它会降低性能并导致写入放大,其中写入底层 NAND 的数据比驱动器实际写入的量要多。增加的过度配置有助于缓解写入放大,因为它提供了更多的备用空间来重写数据和擦除旧块。这就是为什么高端企业级 SSD(如三星 SSD 845DC PRO)有 200 GB 和 400 GB 的大小,尽管驱动器实际上分别包含更接近 256 或 512 GB 的 NAND。也可以看看:为什么 SSD 的尺寸很奇怪?

  • 三星 SSD 白皮书系列全面解释了 SSD 的内部工作原理。有关写入和擦除 NAND 页和块以及垃圾收集的说明请参见白皮书 04

真正擦除 SSD 上数据的唯一方法是使用 ATA 安全擦除命令。

  • 安全擦除指示驱动器擦除所有存储的数据,包括可能保留在过度配置的 NAND 区域中的数据。执行此操作后,所有块都将被擦除,从而使驱动器保持完好。

  • 在具有自加密功能的驱动器中,只需擦除加密密钥即可实现安全擦除。由于加密驱动器的 NAND 上的数据在没有密钥的情况下是不可读的,因此无需像未加密驱动器那样擦除所有块。

答案2

如何加密卷本身?已删除的数据仍会存在,但没有适当密钥的任何人都无法访问。

答案3

如果 SSD 驱动器支持 ATA 安全模式功能集,则它具有内置的安全擦除功能,您应该能够使用安全擦除之类的工具来访问该功能,记录在案这里这里

答案4

正如@teabot所说,使用全盘加密软件将绕过安全删除的问题,因为你不再需要这样做。然而,正如相关问题,这将对性能产生巨大影响,因为这会阻止许多控制器的功能,如压缩和 TRIM,并且据报道会将性能降低到普通硬盘比昂贵的 SSD 更快的水平。对于基于 SandForce 的设备,有一个更好的解决方案:这些设备默认进行 AES 加密,当您使用 ATA 安全删除功能时密钥将被擦除,除非攻击者可以破解 AES(当前为 128 位,2011 年 3 月发布的新驱动器为 256 位),否则所有数据都无法访问。

相关内容