如何安全擦除SSD?[重复]


40

这个问题已经在这里有了答案:

我们的一位客户正在要求SSD的DOD-7 Pass Erase方法。

我们尝试通过Tabernus lan擦拭256 GB(三星制造)的SSD,但这花费了太多时间。

请指导我如何从Tabernus lan 7.3.1版本擦除SSD。

在此处输入图片说明


5
如果您不愿意参加NSA,通常只需要通行1次即可。但是,SSD难道没有某种形式的TRIM命令使数据无法访问而没有实际删除(节省写周期)吗?
Paul Stelian

5
您应该查看三星的“ Magician”软件​​(可启动磁盘,该磁盘可让您运行“安全擦除”命令)。现在,无论是TRIM还是SSD的“安全擦除”都符合DoD法规,这是另一回事……我不知道。
Kinnectus

5
@PaulStelian-别忘了这是OP在谈论的SSD-擦除SSD与传统的机械HDD完全不同。
Kinnectus

16
最安全(但更昂贵)的方法是用火融化
Sarge Borsch

7
国防部甚至不再使用那个古老的标准。如果在SSD上执行,则完全不相关且具有破坏性。
迈克尔·汉普顿

Answers:


62

简要:

多(7)次覆盖重写不会达到您期望在SSD上执行的操作。如果需要,您可以实现它并告诉客户端您已经做了,但是不要指望它会擦除所有数据

背景:

要从常规硬盘中清除数据,您有以下解决方案:

  • 擦拭索引(例如清洁diskpart)。易于恢复。
  • 覆盖整个磁盘。这会擦掉普通用户。如果您可以访问非常敏感的硬件(只有政府可以访问的硬件),则可以恢复一些数据。可以将其视为擦除铅笔书写笔记和书写新文本。阴影依然存在。
  • 用不同的模式多次覆盖磁盘,甚至击败最有能力的攻击者。

SSD的工作方式不同。它们具有许多分组的块。写只能发生在一个组上。可以将其视为一本只能写到一页的书。如果要添加句子,则SSD的控制器将读取整个页面,并将新页面(带有额外的句子)写入其他位置。然后它将旧页面标记为空并将旧页面编号分配给新页面。

这意味着在OS看到的扇区(页面)和磁盘上的内容之间没有直接映射。

您可以用一个新文件(例如一个仅包含零的文件)填充整个磁盘,并且保留空间不会被触及。因此,仍然有可恢复的数据。您可以执行7次,但仍可以恢复相同的数据。

好消息

好消息是,SSD通常附带磁盘加密功能。扔掉加密密钥,数据就一文不值。

更好的消息是,可以始终使用这种数据加密。即使您没有明确启用加密。在那种情况下,磁盘仍会使用存储在SSD上某处的密钥来写加密数据。告诉它丢弃此密钥并用新密钥替换它,就可以完成了。快速安全。

甚至还有一个命令可以执行此操作(ATA安全擦除)。

这是唯一正确的技术解决方案。即使他们坚持要进行7次覆盖,也要这样做(仅这样做是为了使您符合他们的要求,而首先要满足这些要求的意图)。

慢的坏方法

我没有tabernus lan的经验。但是几乎所有的SSD都会接受超过100MB /秒的持续写入。以这种速度,即使是非常慢的SSD也可以在一个小时内完成。中速固态硬盘应在该时间的五分之一以下完成。

如果您无法达到该性能,那么我怀疑您的解决方案正在逐个扇区进行写操作。那很不好。它应该以32的队列深度尽可能快地刷新扇区。否则,您将从上面进入页面类比。

从写有8个句子的整页开始。

  • 抹掉句子1。

    • 阅读整页。
    • 删除第一句话
    • 将包含7个句子的整个页面写到不同的块/页面
  • 抹去句子2。

    • 阅读整页。
    • 删除第二句
    • 将包含6个句子的整个页面写到不同的块/页面
  • 抹掉句子3。

    • 阅读整页。
    • 删除第三句
    • 用5个句子将整个页面写到不同的块/页面
  • 抹掉句子4。

    • 阅读整页。
    • 删除第四句
    • 用5个句子将整个页面写到不同的块/页面
  • 抹掉句子5。

    • 阅读整页。
    • 删除第5句
    • 将包含3个句子的整个页面写到不同的块/页面
  • 抹掉句子6。

    • 阅读整页。
    • 删除第六句
    • 将包含2个句子的整个页面写到不同的块/页面
  • 抹去句子7。

    • 阅读整页。
    • 删除第七句
    • 用1个句子将整个页面写到不同的块/页面
  • 抹掉句子8。

    • 在页面上标记为已删除(但在需要更多空间之前不要真正擦除它)

请注意该文本多长时间了?与SSD速度相同。


评论不作进一步讨论;此对话已转移至聊天
Sathyajith Bhat

1
甚至有一个命令可以执行此操作(ATA安全擦除)。这是唯一正确的技术解决方案。 ”请注意,ATA SE无法安全擦除某些SSD:usenix.org/events/fast11/tech/full_papers/Wei.pdf
Miles Wolbe '18

9

您使用的软件显然无法正常运行。您的一张屏幕截图显示速度为97MB / s。以这种速度,在256GB驱动器上进行7次全磁盘覆盖将花费大约5个小时。计算简单。

您可能要尝试使用Blancco 5。如您所见,用于Tabernus Erase LAN的链接被重定向到其站点。您还可以考虑使用最新的DBAN,它似乎是Blannco的免费版本。

老实说,我从未使用过上述任何软件。我怀疑他们真的比简单的随机覆盖做得更好。

我个人在GNU coreutils中使用shred:

shred -v -n 7 /dev/sdX

我不会真正使用-n 7。最多我将其保留为默认值:3次通过,并可能在末尾(-z)处额外进行一次单次填充零填充。

或者,openssl:

openssl enc -aes-256-ctr -in /dev/zero -out /dev/sdX -pass file:/dev/urandom -nosalt

您可以编写一个简单的bash循环使其执行多次。它不会报告进度,shred尽管。

顺便说一下,根据互联网上相当多的随机消息来源(如Google),美国国防部似乎已经废弃了数据清理规范。现在看来只承认物理破坏。

您可能要担心的原因之一是,简单的覆盖可能无法“到达” SSD上的所有后台存储空间,以进行所谓的“过度配置”(在固件中完成)和/或坏扇区的重新分配。不幸的是,多道次随机数据填充可能是你可以做,如果你的SSD不支持硬件加密的最好的事情。


如果您需要安全擦除数据,请不要指望ATA DSM / TRIM。TRIM可能甚至不能完全擦除SSD的“外观”(即hexdump),但实际上并不会像重写一样破坏后台数据。

也不应真正信任ATA安全擦除1ACS标准仅要求它执行(单遍)模式填充。普通模式应使用零或一作为模式,而增强模式应使用特定于供应商的模式(但仍在填充模式),并且还应擦除“重新分配的用户数据”。

但是,在未引入ATA SANITIZE DEVICE的情况下,该功能集长期以来一直被供应商滥用以执行非标准任务3。因此,ATA安全擦除的行为可能完全取决于供应商,尤其是在SSD上。

在SSD上,通常将ATA安全擦除与ATA SANITIZE DEVICE的块擦除实现相同,这几乎等效于全磁盘ATA TRIM(在RZAT 2 SSD上)。

固定模式填充(可能会包含在不考虑SSD的“ DOD擦除”的某些实现中)确实不值得做,因为SSD中的“智能”控制器可以进行压缩,甚至可以忽略这种重复覆盖。

如果出于某些原因确实希望这样做,我认为ATA SANITIZE DEVICE的OVERWRITE是最佳的使用方法。(希望如此,供应商将确保当用户向驱动器发布控制器时,控制器不会“发挥聪明”。)


在具有所谓的硬件加密的HDD / SSD上,通常将ATA安全擦除的增强模式与ATA SANITIZE DEVICE的CRYPTO SCRAMBLE相同,从而触发加密密钥的再生。如果您要所谓的安全擦除驱动器,这可能是最好的“快速”方法,因为这几乎就是非Opal硬件加密的全部要点(而人们通常错误地认为其主要要点是使用ATA密码)。

FWIW,在擦除之前总是需要首先启用ATA安全功能集(即“用户密码”),由于实施不当(通常是PEBKAC),这通常会使驱动器变砖。如果驱动器支持ATA SANITIZE DEVICE,则应首选它。不幸的是,与hdparm中支持的ATA安全性不同,似乎还没有实用程序支持最新的功能集。一个人最多可以为此手动形成一个SCSI ATA PASS-THROUGH命令,并sg_rawsg3_utils中发送它。


注意:

1 ATA安全擦除的标准命令名称是SECURITY ERASE UNIT,这是ATA安全功能集中的必需命令。

2修剪后返回零数据;请参阅ACS标准的确切定义

3 英特尔530 SATA SSD规范 ; 请参阅“ 5.3安全模式功能集”;主要供应商“滥用” ATA安全功能集的示例


...或者您可以设置一个简单的dm-crypt映射,并使用ddrescue从/ dev / zero覆盖到映射中,以确保进程加密质量与随机性没有区别。
CVn

1
由于SSD会在引擎盖下执行如此多的块移动以提高性能,并且可能会被过度配置(比所宣传的空间更多,因此它可以执行上述操作),因此永远不能假定将数据写入SSD会真正删除所有数据。供应商重置是真正清除单元格的唯一方法(它会擦除它们,并且无法恢复它们)。这与硬盘驱动器不同,在硬盘驱动器中,攻击者可能会读取磁性残留物(尽管现代驱动器上的数据密度很高,但如今即使一次写入也已足够)。
艾伦·舒特科

1
@AlanShutko仅在驱动器具有硬件加密的情况下。否则,SANITIZE BLOCK ERASE / ATA Secure Erase只能像TRIM一样工作(或至少可以;到目前为止,我见过的所有SSD都以这种方式实现)。使用ATA命令“安全地”擦除驱动器的警告,等同于“信任您的供应商”。
汤姆·严

1
似乎并不能 shred 确保擦除SSD和每种文件系统上的数据。从其手册中CAUTION: Note that shred relies on a very important assumption: that the file system overwrites data in place. 可以得到有关在完整分区上工作时shred如何工作(哪个命令发送)的参考吗?
Hastur

1
@Hastur在谈论shred文件系统上的文件,而不是在shred分区/磁盘上。
汤姆·严

5

ATA安全擦除页面之后,此archlinux页面上有关SSD存储器单元清除的建议

  1. 步骤1-确保驱动器安全性未冻结
  2. 步骤2-通过设置用户密码来启用安全性
  3. 步骤3-发出ATA安全擦除命令

一些细节更多

  • 对于步骤1,您可以检查驱动器是否未冻结

    hdparm -I /dev/sdX
    

    如果命令输出显示“冻结”,则无法继续进行下一步。某些BIOS通过在启动操作系统之前发出“ SECURITY FREEZE”命令“冻结”驱动器来阻止ATA安全擦除命令。

  • 对于步骤2,请阅读[ 1 ]以获取有关Lenovo计算机的警告:

    hdparm --user-master u --security-set-pass PasSWorD /dev/sdX security_password="PasSWorD"
    

    它应该回答类似

    /dev/sdX:
    Issuing SECURITY_SET_PASS command, password="PasSWorD", user=user, mode=high
    

    然后再次检查

    hdparm -I /dev/sdX
    
  • 对于步骤3:

    hdparm --user-master u --security-erase PasSWorD /dev/sdX
    

    它存在--security-erase-enhanced 用于增强安全性擦除的参数。据报道[ 1 ]“反过来短时间(如2分钟)表示该装置被自加密和其BIOS功能将擦拭内部加密密钥,而不是覆盖的所有数据单元的”,同时较长的请求的时间应指示未加密的设备。

    在加密的设备上,可以为--security-erase--security-erase-enhanced选项报告相同的预期时间。在这种情况下,假定将使用相同的算法[ 3 ]。请注意,对于普通的HDD,增强的参数(除其他差异外)应覆盖甚至不再使用的扇区,因为它们在某个时刻触发了I / O错误并已重新映射。我们应该假设它对于SSD也将以相同的方式起作用,即使该块的数量不应足够大以反映在大于一分钟的时差中。在Security SE的答案中了解更多信息。

    清除SSD存储单元页面的示例中,对于Intel X25-M 80GB SSD,报告的时间为40秒。

    等待命令完成。此示例输出显示,Intel X25-M 80GB SSD花费了大约40秒。

注意:经过3个步骤,驱动器将被擦除,驱动器的安全性应自动设置为“禁用”(因此不需要密码即可访问)。


更新资料

ATA安全擦除页面

此过程描述了如何使用hdparm命令向目标存储设备发出安全擦除ATA指令。当对SSD驱动器发出安全擦除操作时,其所有单元将被标记为空,从而将其恢复为出厂默认的写入性能。

免责声明:这将删除您的所有数据,甚至数据恢复服务也将无法恢复。


On occasion, users may wish to completely reset an SSD's cells to the same virgin state they were manufactured, thus restoring it to its factory default write performance.这就是全部操作,这里的“原始状态”并不意味着安全擦除了数据。
汤姆·颜

你想念--security-erase吗?
哈斯图

我想你是说--security-erase-enhanced。您知道吗,我有确切的示例磁盘(该死的经典X25-M gen1 / 50nm 80GB)。它不支持硬件加密或TRIM。它(似乎)支持正常模式和增强模式的安全擦除。两者的估计时间相同(2分钟)。现在,猜猜他们有什么不同吗?:P
Tom Yan

1
@TomYan您可以阅读serverfault主持人的答案,该主持人指向的ATA规范与上述答案相同。DISCLAIMER: This will erase all your data, and will not be recoverable by even data recovery services.
哈斯图

1
@MichaelHampton这是在同一archlinux页面上报告的一句话。我同意大约2秒钟的按键时间,即使是两分钟,在我看来,即使是内部命令,擦除所有块的时间也太短(最大写入速度70 MB / s * 120秒〜8.4G = 1 80GB的/ 10)。此外,在安全性SE站点上答复中,他们说:““ 2分钟不足以覆盖整个磁盘,因此,如果该磁盘实现了某些实际的“安全擦除”,则必须使用加密机制”。请添加有关它的参考,它将很有用。
哈斯图

1

由于SSD并不关心您放入的数据传输次数(只是磨损更快),并且在完整传输之后无法进行数据恢复(除非您将数据放入配置空间过大),因此只需写入完全以1表示将删除所有现有数据。

您面临的问题将主要存在于用户无法访问的存储中,例如用于磨损平均化的任何过度验证的空间,任何缓存以及可能包含标识系统,操作系统等数据的NVRAM。

要安全擦除SSD,它需要明确支持,并且目前仍特定于控制器和固件。在这里使用专为磁性介质设计的安全擦除软件毫无意义,因为安全擦除数据的方式基本上与固态存储和磁性存储之间没有关系。理论上,使用磁存储可以恢复位的先前状态,但是对于闪存,位实际上不能具有可以检测到的“先前”状态。它保持0或1,而不保持磁极,强度取决于先前保持的值而变化。

我只是将PCB放在工业搅拌机中,然后将闪存芯片模制成粉末。没有得到任何数据。转售用过的SSD也不是一件真正的事,因为它们还没有HDD那样有很多已知的使用寿命/使用模式。充其量来说,它们具有“穿戴状态” SMART数据。


1

如果这是真正重要的数据,永远都不能恢复,那么使用磁盘就不安全了。

就像其他人所说的那样,改写在SSD上是行不通的,如果制造商错误地加密(偷工减料以节省金钱,不称职等),那么即使删除密钥也无济于事。

立即生效,DSS将不再批准用于分类处理的IS存储设备(例如,硬盘驱动器)的清理或降级(例如,发布到较低级别的分类信息控件)的覆盖过程。

如果您使用机密数据(尤其是涉及政府的数据),则需要安全一些。我建议喷灯:

来源,CNET

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.