25

谁能告诉我为什么 /dev/random 在擦除硬盘驱动器中的数据时更适合安全性?

4

2 回答 2

62

简单的回答,/dev/random不是首选。两者同样安全。用于/dev/zero更轻松的验证。CPU使用率也更低,可能更快。

更完整的答案。对于现代硬盘驱动器的盘片密度,不可能从驱动器的未完全覆盖的扇区中获取信号,Gutmann 等人在很多很多年前就写到了这一点。就现代硬盘驱动器而言(我将其放置为任何容量可以以千兆字节或更高为单位测量的硬盘驱动器),如果它被覆盖,它就消失了。故事结局。因此,您将数据更改为什么并不重要。只是你改变了数据。

除此之外,即使您完全擦除硬盘驱动器,驱动器上仍可能会保留由硬盘驱动器固件重新映射的扇区中的数据,但这些数据相对较少,并且只会包含非常少量的数据在内部,更不用说您需要非常专业的设备来检索该数据(您必须编辑驱动器的G-List内部System Area才能获得它),更不用说这些扇区在第一次重新映射的原因地方是因为他们失败了。

总而言之,DoD 擦拭布是愚蠢的,Gutmann 擦拭布更愚蠢,使用/dev/zero它几乎 100% 的情况下都很好。如果这是一个极端情况,那么您需要非常专业地了解如何获取数据并删除数据。

“谢谢!那么,U盘呢?”

USB 记忆棒完全是另一种动物,您需要绕过闪存控制器才能将其清除,即使是 Gutmann 擦除也不会完全删除数据,因为磨损均衡算法。但就像硬盘一样,如果你覆盖数据一次,它就消失了,诀窍是强制设备实际覆盖数据。

话虽这么说,如果你有一个便宜的 USB 记忆棒,但没有一个控制器来进行磨损均衡,那么一次 0 填充应该足以删除其中的数据。否则,您正在寻找定制硬件和焊接工作。

SSD 应被视为带有执行磨损均衡控制器的 USB 记忆棒。SSD 将始终进行磨损均衡,我不知道这条规则有任何例外。许多 U 盘没有。

如何判断 U 盘是否磨损均衡?您需要将其拆开并检查控制器芯片并在其上查找数据表。

“您能否提供“无法从驱动器的未完全覆盖扇区获取信号”的声明的来源?我不是在谈论计算机杂志上关于数据恢复存储的测试,我说的是最坏的情况:a装备精良的政府实验室。所以我真的很想知道你怎么能保证这种说法,最好是一篇科学论文。”

我将给出一些关于在磁介质上模拟存储数字数据的理由和信息。以下内容主要是我在数据恢复公司工作时学到的东西,在某些地方可能部分不准确。如果是这样,请告诉我,我会纠正它。但这是我对材料最好的理解。

硬盘驱动器制造完成后,首先会从伺服标签写入机接收伺服标签。这是一台单独的机器,它的唯一工作是获取一个完全空白的硬盘驱动器并引导它。(这就是为什么硬盘驱动器上有孔,上面覆盖着铝带,这就是伺服贴标机放置写入头的地方。)如果你曾经有一个驱动器,当你打开它时它只会产生“点击点击点击”它是是因为它无法读取伺服标签。当硬盘驱动器通电时,它尝试做的第一件事就是将其读头扔到盘片的某个地方并获取磁道。伺服标签定义轨道。如果它看不到伺服标签,它会到达中间,发出咔哒声,将手臂拉回并再次尝试。

我提到这一点的原因是,这几乎是外部设备读取和写入硬盘驱动器的唯一实例,它大致描述了驱动器自身读头之外的硬件可以处理盘片上的数据的限制。如果有可能使伺服标签更小,硬盘制造商会更节省空间。伺服标签的空间效率相对较低,原因有两个。

  1. 他们不失败是绝对关键的。如果伺服标签出现故障,则每次磁头越过该特定伺服标签时,它都会丢失磁道,这实际上意味着整个磁道不可用。
  2. 它提供了一些关于硬盘驱动器硬件在处理盘片上的信息方面比外部机器好多少的想法。

一圈伺服标签定义了一个轨道。关于轨道,您必须了解一些事情。

  1. 它们不一定是圆形的。它们是不完美的,并且可能包含扭曲。这是因为伺服贴标机不准确。
  2. 它们不一定是同心的。他们可以并且确实交叉。这意味着某些扇区或整个磁道可能会因为伺服标签机不准确而无法使用。

伺服标签写入后,接下来是低级格式。驱动器的实际低级 1980 年代格式,除了更复杂。因为盘片是圆形的,但硬盘驱动器的速度是恒定的,所以读头下方通过的区域量是到盘片中间距离的可变函数。因此,为了从盘片中挤出最后一滴存储空间,盘片的密度是可变的并在区域中定义。在典型的 3.5" 硬盘上,会有几十个不同盘片密度的区域。

其中之一是特殊的超低密度,称为System Area. 系统区域是驱动器上存储所有固件和配置设置的地方。它具有超低密度,因为该信息更重要。密度越低,随机出现问题的可能性就越小。当然,它一直都在发生,但比用户区域中的事情少。

在驱动器被低级格式化后,固件被写入系统区。每个驱动器的固件都不同。为了优化驱动器以满足盘片极其精细的要求,必须调整每个驱动器。(这实际上发生在低级格式化之前,当然,因为你必须知道设备有多好才能决定制作盘片的密度。)这个数据被称为adaptives并保存在系统区。自适应区域中的信息是“当伺服标签告诉我我偏离轨道时我应该使用多少电压来纠正自己”,以及使硬盘驱动器实际工作所需的其他信息。如果自适应功能稍微关闭,则可能无法访问用户区域。系统区域更容易访问,因此只需很少的自适应存储在 PCB CMOS 上。

摘自本段:

  1. 较低的密度意味着更容易阅读。
  2. 密度越高,事情随机搞砸的可能性就越大。
  3. 用户区域的密度与硬盘制造商所能达到的一样高。
  4. 如果这看起来很草率和草率,那是因为它确实如此。硬盘制造商在每 GB 的价格上竞争并取胜。硬盘驱动器设计并不是真的要制作非常精心制造的设备并将它们非常小心地组合在一起,因为这已经远远不够了。当然,他们仍然这样做,但他们还必须使这些部件在软件中相互协作,因为硬件公差太宽,不再具有竞争力。

所以。因为用户的密度如此之高,实际上非常(非常(非常非常))可能在正常情况下搞砸了。这可能是由许多因素引起的,包括非常轻微的时序问题和盘片退化。硬盘驱动器的很大一部分扇区实际上包含搞砸的位。(您可以通过向您的驱动器发出ATA28 READLONG命令来自己验证这一点(仅对前 127 GB 左右有效。它没有ATA48被丢弃!)在许多扇区上多次并比较输出。您会发现它不是某些位会行为不端并表现出吸吮或关闭甚至随机翻转的情况并不罕见。)这是生活中的事实。这就是为什么我们有ECC.

ECC 是包含在 512(或较新驱动器中的 4096)字节数据之后的校验和,如果错误位足够少,它将纠正该数据。确切的数字取决于固件和制造商,但所有驱动器都有它并且所有驱动器都需要它(它比你预期的要高得多,比如 48-60 字节,可以检测和纠正多达 6-8 个错误字节。疯狂数学继续。)这是因为盘片的密度太高,即使是高度专业化和调整的内部硬盘驱动器设备。

最后,我想谈谈前置放大器芯片。它位于硬盘驱动器的臂上,用作扩音器。因为信号是由非常小的磁场产生的,所以它们作用在非常小的磁头上的潜力非常小。因此,您不能将硬盘磁头用于 Gutmann 方法,因为您无法从中获得足够准确的读数,从而使 Gutmann 的技术值得。

但是让我们假设 NSA 有一件神奇的设备,他们可以在 1 毫秒内对任何特定位进行非常准确的读取(精确到足以计算潜力并得出先前写入的数据)。他们首先需要什么?

首先,他们需要系统区域。因为那是存储翻译器的地方(翻译器是将 LBA 地址转换为 PCHS 地址的东西(物理气缸盖扇区,而不是假的逻辑 CHS 地址)。系统的大小面积不一样,不用魔法工具也能搞定,正常情况下也就50-100MB左右,翻译器的布局是固件特有的,所以你要倒过来(不过以前做过,没什么大不了的)

所以第一个问题,信噪比。如前所述,盘片密度调整得更高,这是严格安全的。Gutmann 的方法需要在正常读/写活动中具有非常低的方差,才能以任何精度计算位的先前状态。如果信号的变化很大,那么它可能会破坏这些尝试。并且差异大到足以让你彻底崩溃(这就是 ECC 在现代驱动器中如此疯狂的原因。)类比就像试图完美地听到有人在嘈杂的房间中间和你说话时对你耳语一样。

第二个问题,时间。即使电子显微镜非常快速和准确(每比特 1 毫秒!这对电子显微镜来说是闪电。它也比 1200 波特调制解调器慢),硬盘驱动器上有大量数据,完整图像需要非常很久。(WA 说整个 500GB 硬盘驱动器需要 126 年,这不包括 ECC 数据(您需要)。还有很多其他与硬盘驱动器扇区相关的元数据,我没有提到,比如 ID 字段和地址标记,但是这些不会被覆盖,也许您可​​以想出一种更快的方法来正常成像它们?毫无疑问,有一些方法可以加快这个过程(例如有选择地对驱动器的部分进行成像),但即使这样也需要你几个月的 24 /7 日以继夜的工作只是为了得到$MFT标准硬盘驱动器上的文件(通常在安装了 Windows 的驱动器上大约 50-300MB))。

第三个问题,可接受性。如果政府追捕你,他们追捕你的原因只有几个,他们想知道你知道的事情,或者他们想逮捕你,把你关进监狱。有更简单的方法可以获得前者(橡胶软管密码学),而后者需要定期的证据程序。回到类比,如果有人作证说有人悄悄告诉他们某事,而其他人在拥挤嘈杂的房间中间与他们交谈,那么那里就有很大的怀疑空间。它绝不会是那种需要花费大量时间和金钱的有力证据。

于 2012-07-16T06:58:04.050 回答
2

你问错问题了。尝试通过写入用户可见块来安全擦除驱动器完全忽略了这样一个事实,即在标记为坏的扇区中可能存在用户数据(但仍包含可读的敏感数据)。

当然,可以通过发出 ATA 命令来解决这个问题,但随后一个 ATA 安全擦除命令将首先完成您想要的所有操作。有关如何使用该选项发出安全擦除命令的详细信息,请参阅https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase 。hdparm--security-erase

于 2012-07-16T12:44:15.587 回答