ATA 安全擦除和安全擦除有什么区别?我怎样才能确保他们工作?

信息安全 隐私 删除
2021-08-25 18:48:10

我想安全地擦除一堆驱动器(旋转和 SSD)。我通过 hdparm 熟悉 ATA 安全擦除 (SE) 命令,但我不确定是否应该改用安全擦除 (SE+) 命令。

证据表明这些命令不适用于所有驱动器。如何确保真正擦除驱动器,包括保留区域、重新分配的扇区等?

我打算使用 linux live CD(在 USB 上)。Ubuntu 提供了一个可使用的 live CD,我可以使用它安装 hdparm,但是是否有一个较小的 live CD 发行版,其中包含我应该使用的更新软件版本?

所以,总结一下:

SE 与 SE+ 的优缺点是什么?

如何确保驱动器被真正彻底地擦除?

我应该使用哪个 linux 发行版?

3个回答

这个页面引用:

安全擦除用二进制零覆盖所有用户数据区域。增强的安全擦除将预定的数据模式(由制造商设置)写入所有用户数据区域,包括由于重新分配而不再使用的扇区。

这句话只对旋转磁盘有意义,并且没有加密。在这样的磁盘上,任何时候,磁盘都有一个逻辑视图,即一个巨大的编号扇区序列;“安全擦除”是关于用零覆盖所有这些扇区(并且仅这些扇区)一次“增强的安全擦除”更加努力:

  • 它用不同的位模式多次覆盖数据,以确保数据被彻底销毁(是否真的需要这样做还有待商榷,但这里有很多传统在起作用)。

  • 它还覆盖不再使用的扇区,因为它们在某些时候触发了 I/O 错误,并被重新映射(即,当计算机读取或写入磁盘固件时,其中一个备用扇区被磁盘固件使用)。

这是本意从 ATA 规范来看,有两个命令,并没有真正的方法知道擦除是如何实现的,甚至是否真的实现了。众所周知,野外的磁盘有时会在规范方面采取一些自由措施(例如,使用数据缓存)。

另一种更有效的安全擦除方法是加密

  • 首次上电时,磁盘会生成一个随机对称密钥K,并将其保存在一些抗重启的存储空间(例如,一些 EEPROM)中。
  • 每一个读取或写入的数据都将被对称加密,使用K作为密钥。
  • 为了实现“安全擦除”,磁盘只需要通过生成一个新的 K 并覆盖前一个来忘记K。

此策略适用于旋转磁盘和 SSD。事实上,当 SSD 实现“安全擦除”时,它必须使用加密机制,因为考虑到闪存单元的行为以及 SSD 中使用的大量重映射/纠错代码层,“用零覆盖”的意义不大.

当磁盘使用加密时,不会区分“安全擦除”和“增强安全擦除”;它可以实现这两个命令(在 ATA 协议级别),但它们会产生相同的结果。请注意,类似地,如果旋转磁盘声称也实现了这两种模式,它很可能将两个命令映射到相同的操作(希望是“增强”的操作)。

本页所述,该hdparm -I /dev/sdX命令将报告如下内容:

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

2 分钟不足以覆盖整个磁盘,因此如果该磁盘实现了一些实际的“安全擦除”,则必须使用加密机制。另一方面,如果hdparm报告这个:

       168min for SECURITY ERASE UNIT. 168min for ENHANCED SECURITY ERASE UNIT.

那么我们可以得出结论:

  • 该磁盘执行完整的数据覆盖(这是需要将近三个小时的唯一原因)。
  • 该磁盘的“安全擦除”和“增强安全擦除”可能相同。

根据磁盘大小和批量 I/O 的正常性能(可以用 来衡量hdparm -tT /dev/sdX,甚至可以推断出据称数据被覆盖了多少次。例如,如果上面的磁盘大小为 1 TB 并提供 100 MB/s 写入带宽,那么 168 分钟足以进行一次覆盖,而不是“增强的安全擦除”应该需要的三个或更多遍。

(这方面的 Linux 发行版之间没有区别;它们都使用相同的hdparm实用程序。)


必须注意的是,基于加密的安全擦除实际上仅在加密和密钥生成质量的范围内擦除数据。磁盘加密不是一件容易的事,因为它必须是安全的并且支持随机访问。如果固件只是简单地实现了ECB ,那么相同的明文块就会泄漏,就像企鹅图片中通常所示的那样此外,密钥生成可能会失败;潜在的PRNG可能非常弱,并且密钥可以进行详尽的搜索。

这些“细节”对安全性非常重要,您无法对其进行测试因此,如果您想确定是否清除数据,只有两种方法:

  1. 磁盘制造商为您提供了有关磁盘实现的足够详细信息,并保证擦除(最好是合同)。

  2. 你诉诸于古老的物理破坏。拿出重型碎纸机、炽热的熔炉和酸的大锅!

当我对此进行研究时,我得到的印象是,在实际数据删除/清理方面,并非所有制造商都很好地实现了 ATA 安全擦除和其他功能。 SSD 上的 ATA 安全擦除 http://arstechnica.com/security/2011/03/ask-ars-how-can-i-safely-erase-the-data-from-my-ssd-drive/

我的(有限的)理解是,即使对于 hdparm 的安全擦除功能,安全擦除 SSD 仍然没有完全标准化。数据不一定会被删除,尽管多项式对上一个问题的答复表明唯一剩余的数据将被加密。你最好的选择可能是联系供应商,看看他们怎么说。

对于传统的 HDD,DBAN 就足够了,尽管它不能保证所有数据都被真正擦除。(见http://www.dban.org/about

关于旋转硬盘,我更喜欢使用dd(在 linux 上)100% 确保所有扇区都被擦除,而不依赖于制造商实际正确执行 SATA 擦除命令。

dd status=progress if=/dev/urandom of=/dev/sdx bs=512K

不幸的是,这在 SSD 上不起作用(它会运行,但很有可能所有数据都不会被擦除)。

使用的另一个好处dd是你得到一个进度指示器,你没有得到那个使用hdparm并且通过使用dd你可以取消操作,使用hdparm.