如何加快磁盘的安全擦除?

mar*_*raf 41 performance security disk

我需要不时安全地擦除硬盘,并使用了各种工具来做到这一点:

  • cat /dev/zero > /dev/disk
  • cat /dev/urandom > /dev/disk
  • shred
  • badblocks -w
  • 数据库网络

所有这些都有一个共同点,即它们需要很长时间才能运行。

在一种情况下 cat /dev/urandom > /dev/disk杀死了磁盘,显然是过热了。

是否有一种“足够好”的方法来实现及时使磁盘上的任何数据无法使用?覆盖超级块和几个具有战略意义的块或类似的东西?

磁盘(包括旋转和 ssd)来自捐赠的计算机,之后将用于在其上安装 Linux-Desktops,分发给买不起计算机但需要一台计算机的人。

捐赠计算机的磁盘通常不会被加密。有时捐助者甚至不会事先考虑删除文件。

更新

从目前得到的答案来看,似乎没有偷工减料。我最好的选择可能是设置一台实验室计算机来一次擦除多个磁盘。要求大公司捐款的另一个理由:-)

谢谢大家!

200*_*ess 46

覆盖超级块或分区表只会让重建数据不方便,如果你只是做一个十六进制转储,这显然仍然存在。

硬盘具有内置擦除功能:ATA Secure Erase,您可以使用hdparm以下方法激活:

  1. 选择一个密码(任何密码):

    hdparm --user-master u --security-set-pass hunter1 /dev/sdX

  2. 开始擦除:

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

由于这是一项内置功能,因此您不太可能找到真正提供真正擦除的更快方法。(不过,由您决定它是否符合您的偏执程度。)

或者,使用全盘加密的磁盘,然后在您想要处理数据时丢弃密钥。

  • 请务必注意,安全擦除只能在硬盘驱动器设置密码时运行,并且安全擦除驱动器也会擦除您刚刚设置的密码。我还应该注意到一些早期的 SATA 驱动器(从 2000 年代开始)没有正确实现它,只是擦除了磁盘的一部分,或者自己变砖了。我不认为这是今天的问题,但如果你真的想确定,你应该在之后读出整个驱动器。要擦除现代 SSD,这是您唯一应该做的事情。 (17认同)
  • 你弄错密码了!应该是猎人2!/秒 (4认同)
  • @johndoe 不需要将驱动器上的所有位清零,除非您尝试擦除古老的 MFM/RLL 驱动器和早期的 IDE 驱动器。但无论如何,这些都没有安全擦除。 (4认同)
  • @cartographer 似乎您指的是 SSD,而这个问题和大部分讨论都是关于旋转生锈的。我很想知道更多现代旋转驱动器没有正确实施安全擦除。 (2认同)
  • 在许多情况下,安全擦除仍然无法安全擦除。例如,某些驱动器会在遇到坏块时停止安全擦除,从而使驱动器部分擦除。唯一负责任的做法是使用擦除并*验证*擦除的程序。 (2认同)

Cri*_*gie 20

可能不受欢迎的答案: 耐心地完全安全地擦除磁盘。

您已接受来自各种来源的捐赠硬件,并承诺将安全删除他们的数据。所以你必须按照你的承诺 安全地擦除磁盘。

如果我是捐赠者,我发现你没有遵守承诺,我以后不会再给你任何硬件。

并且不要缩短 DBAN 运行时,也不要认为清除前半部分或前 10% 就足够了,而事实并非如此。


为了让您的 DBAN 运行更方便,您通常会从主机中删除驱动器吗?如果是这样,除了有多个 SATA 端口之外,还有一个相当低功耗的台式机。当您准备好擦除几个驱动器时,将它们全部设置在这台机器上,并使用可引导的 DBAN ISO 或网络引导 DBAN 会话来擦除它们。然后让机器运行直到最后一个完成。

您可以使用 SATA-USB 磁盘扩展坞,但与原生 SATA 连接相比,这些扩展坞往往非常慢。

其次,您是否有存储捐赠然后处理它们的工作流程?或者您是否接受硬件、测试、擦拭,然后存放物品以供使用?我建议您制作一个适合您的管道,并使 DBAN 成为该管道中的一个阶段。因此,当您从商店中取出一台机器时,它已经被擦掉了,而且是已知的好东西。

  • 鉴于上下文,我认为这个 ^^^ 是正确的答案。 (2认同)

xen*_*oid 13

dd大块可能比cat

dd if=/dev/zero of=/dev/disk bs=16M
Run Code Online (Sandbox Code Playgroud)

在这个过程中杀死一个磁盘是好事,无论如何它很可能是微不足道的。

如果您使用 LUKS 加密,则可以在设置加密后完成此操作(更难发现磁盘上已使用/未使用的空间)。

你无法避免 I/O,在 50MB/s(对于旧磁盘来说这是一个很好的速度),250GB 需要 5000 秒(大约 1.5 小时)来写入。唯一的问题是你能得到多接近。

  • 我不认为 OP 会担心这个......无论如何,用电钻破坏磁盘只是几秒钟的事情。 (6认同)
  • 如果磁盘死机,您不知道数据是否可以恢复(可能是使用特殊设备或控制器移植),因此您需要物理销毁它。 (2认同)

pip*_*ipe 7

blkdiscard - 丢弃设备上的扇区

我还没有尝试过,但是从快速阅读中,您可以尝试blkdiscard

这只会向驱动器发送简单的命令并且应该非常快,我没有找到任何保证块中的数据将被擦除。不过有一些提示。

  • 从联机帮助页:

警告:设备上丢弃区域中的所有数据都将丢失!

TRIM 告诉 SSD 将 LBA 区域标记为无效,并且对该区域的后续读取将不会返回任何有意义的数据。在很短的时间内,数据仍然可以在内部驻留在闪存上。但是,在发出 TRIM 命令并进行垃圾收集后,即使是法医科学家也极不可能恢复数据。

对于严肃的业务,我显然不会相信这一点,但由于您的要求“足够好”,这可能是一个可行的选择。大概它也只适用于 SSD,如果您正在处理旧的捐赠计算机,这可能是一个更严重的障碍。


Ale*_*ski 6

从安全(偏执)的角度来看,这可能是不可能的。

有一种情况,你只能重写磁盘的一小部分,大多数人会认为它是保存。如果驱动器被加密,则覆盖加密标头(存储加密密钥的地方)应该使其无法恢复。

但还有另一个问题——SSD 可能会保留标头数据(用于覆盖标头的随机数据可以保存到其他单元格)。

  • @markgraf DBAN 在 SSD 上是一个非常糟糕的主意,因为它们的控制器和磨损均衡(以及保留存储等)的工作方式。对于 SSD,您必须依赖制造商提供的工具(并希望它们不包含错误,所以是的,如果它真的很重要,您必须将其粉碎) (4认同)
  • 实际上,在 LUKS 加密的磁盘中,您可以告诉 LUKS 销毁所有密钥,甚至不需要覆盖标头。 (3认同)
  • SSD 在这方面肯定是一个问题。所以显然没有办法绕过 DBAN。 (3认同)

Chu*_*ill 5

大多数关心数据安全的公司已经加密了他们的驱动器,不会(应该)给你驱动器加密密钥,所以无论如何驱动器数据已经被有效地“擦除”了。

并行擦除将解决最大的速度问题。SATA I/O 速度不是你的瓶颈,HDD 物理写入速度才是极限。现代主板至少有 4-8 个 SATA 驱动器连接。设置一台(或多台)实验室计算机以从 SSD 启动(快速)。连接 4-6 个要擦除的驱动器,然后使用首选方法从提供的方法中擦除。

假设您有 4 个驱动器(b、c、d、e)……那么一个简单的脚本将并行擦除所有驱动器。实验室计算机使您能够记录驱动器擦除。

ts=$(date +%Y%m%d%H%M%S)
mkdir -p erase-${ts}
# figure out where your linux mounts the drives (avoid trashing your SSD)
for drive in b c d e; do
    target="sd$drive"
    dd if=/dev/zero of=/dev/${target} bs=16M 2>&1 |tee erase-${ts}/${target} &
done
Run Code Online (Sandbox Code Playgroud)

虽然,我会在单独的终端中运行每个驱动器擦除,所以我可以观察特定驱动器上的错误。应该更换有多个错误的驱动器。来自驱动器的 SMART 信息会让您了解驱动器的使用年限。

如果您配置了 2-4 台实验室计算机,挑战将是在实验室计算机中加载足够的驱动器,以使其忙于擦除驱动器。假设每台实验室计算机有 5 个驱动器 X 3 台实验室计算机 = 15 个驱动器被并行擦除。您每 30 (ish) 分钟完成一批

SSD 万无一失,它们的工作方式不同。大多数具有更快的写入速度。并且以上都不会擦除已被坏块检测映射而不再使用的扇区(某些数据可能无论如何都不会被擦除)。

有几项研究,特别是谷歌的一项相当大的研究,发现在头两年之后,硬盘故障的概率达到了 5-6%(每年),并且在随后的几年里显着增加。任何超过 5 年的磁盘都有很大的故障概率。考虑只淘汰(销毁、回收)超过五年的硬盘驱动器。

我的建议是只保留三年或更少年的驱动器,或者更换所有驱动器,然后退役(销毁或回收)。


Har*_*ica 5

框架挑战:

停止拆解电脑

我这辈子拆过很多电脑。您在抱怨时间,但您却在浪费时间拆卸 PC 进行成像——每台 PC 都必须经过两次测试,然后重新测试。

你的老化期是淡茶。您只是将系统放在一起足够长的时间来配置和测试新映像的驱动器。因此,您将向客户运送有缺陷的 PC(许多是出于某种原因提供给您;诸如散热问题之类的小故障就是其中之一。)

改变你的装配线。将 PC 置于带电状态,连接 KVM,然后使用 PC 擦拭 PC。这也将给它一个方便的“运行一段时间”的老化;如果你使用 /dev/urandom 也会有严重的 CPU/热老化。

您可以在他们的 Windows 环境下启动并删除除系统文件和应用程序之外的所有内容,或者您​​可以从 CD 启动,或者如果系统能够启动,则从 U 盘启动。或者,您可以先对系统进行映像,然后在安装新映像后擦除可用空间。

如果在旧操作系统下本地运行,则无需删除和擦除 Windows 系统文件和应用程序,例如魔兽世界是 40GB 的数据,不需要进行安全擦除。因此\Windows\Program Files可以从安全擦除中排除,和其他系统目录。(如果他们把数据放在那里,他们就不能指望安全擦除它)。有一个高度可移植的 perl 4 版本可以轻松解决这个问题,而 perl 4 对于这种事情来说已经足够强大了。

如果我使用的是本机操作系统,我会分两遍完成:首先删除所有非系统非应用程序文件;然后用零填充磁盘(如果您担心 CIA 层磁盘取证,则使用系统文件的副本)。

或者在成像后最后擦拭

一样; 仍然使用 PC 本身进行映像,例如从 CD 启动并通过以太网或其他方式拉取映像。

现在,使用首次启动时的操作构建映像,它会擦除​​可用空间,然后禁用自身。

所有数据都被 a) 新图像的文件覆盖,或 b) 覆盖自由空间。

如果您希望此功能是“可检查点”,即不必在断电后重新开始,那么只需将具有随机名称的巨大文件写入 /tmp/ 中,直到磁盘已满。确认磁盘已满后,删除 /tmp/ 文件,然后删除自身。

一旦磁盘被新数据 100% 占用,旧数据肯定已被覆盖。