从这个页面引用:
安全擦除用二进制零覆盖所有用户数据区域。增强的安全擦除将预定的数据模式(由制造商设置)写入所有用户数据区域,包括由于重新分配而不再使用的扇区。
这句话只对旋转磁盘有意义,并且没有加密。在这样的磁盘上,任何时候,磁盘都有一个逻辑视图,即一个巨大的编号扇区序列;“安全擦除”是关于用零覆盖所有这些扇区(并且仅这些扇区)一次。“增强的安全擦除”更加努力:
这是本意。从 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可能非常弱,并且密钥可以进行详尽的搜索。
这些“细节”对安全性非常重要,您无法对其进行测试。因此,如果您想确定是否清除数据,只有两种方法:
磁盘制造商为您提供了有关磁盘实现的足够详细信息,并保证擦除(最好是合同)。
你诉诸于古老的物理破坏。拿出重型碎纸机、炽热的熔炉和酸的大锅!