/ dev / zero或/ dev / random - 什么更安全,为什么?

时间:2012-07-16 06:54:29

标签: linux random zero

有人能告诉我为什么在从硬盘驱动器擦除数据时,/ dev / random是安全的首选吗?

2 个答案:

答案 0 :(得分:60)

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

更完整的答案。对于现代硬盘驱动器,盘片密度是这样的,以至于不可能从驱动器的不完全覆盖的扇区获得信号,诸如Gutmann之类的人在许多年前写过。就现代硬盘驱动器而言(我将其置于任何容量可以千兆字节或更好的硬盘驱动器上),如果它被覆盖,它就会消失。故事结局。因此,将数据更改为什么并不重要。只是你改变了数据。

要添加到此,即使您完全擦除硬盘驱动器,驱动器上仍可能存在由硬盘驱动器固件重新映射的扇区中的数据,但这些数据相对较少,而且只是非常罕见少量数据将包含在其中,更不用说您需要非常专业的设备来检索该数据(您必须编辑G-List内的System Area为了实现这一目标,更不用说为什么这些部门首先被重新映射的原因是因为它们失败了。

总而言之,DoD擦拭巾是愚蠢的,Gutmann擦拭巾是愚蠢的,使用/dev/zero,它几​​乎100%的情况都很好。如果它是一个边缘案例,那么你需要非常专业地知道如何获取数据并删除数据。

  

"谢谢!那么,usb棒呢?"

USB记忆棒是完全不同的动物,你需要绕过闪光控制器来清理它,即使Gutmann擦拭也不会因磨损均衡算法而完全删除数据。但就像硬盘驱动器一样,如果你一次覆盖数据,它就会消失,诀窍是迫使设备实际覆盖数据。

话虽这么说,如果你有一个没有控制器的廉价USB记忆棒,那么单次通过0填充应该足以删除其中的数据。否则,您正在查看自定义硬件和焊接工作。

SSD应该被认为是带有控制器的USB记忆棒,可以执行磨损均衡。固态硬盘总是会磨损,我不知道这条规则有什么例外。许多USB记忆棒没有。

你怎么知道USB记忆棒是否磨损?您需要拆开它并检查控制器芯片并在其上查找数据表。

  

"您是否会提供声明来源,因为它无法从驱动器的未完全覆盖的扇区获取信号" ?我不是在谈论有关数据恢复商店的计算机杂志的测试,我说的是最糟糕的情况:一个设备齐全的政府实验室。所以我真的很想知道你怎么能保证这个陈述,最好是科学论文。"

我将提供有关磁介质上数字数据模拟存储的一些理由和信息。以下是我在数据恢复公司工作时所教授的大部分内容,并且在某些地方可能部分不准确。如果是这样,请告诉我,我会纠正它。但这是我对材料的最好理解。

制造硬盘后,首先发生的事情是它从伺服标签写入机器接收伺服标签。这是一台独立的机器,其唯一的工作是采用一个完全空白的硬盘驱动器并进行自举。 (这就是为什么硬盘驱动器上有孔用铝带覆盖,伺服贴标机放置其写头的地方。)如果你曾经有过一个驱动器,那么当你打开驱动器时就会产生它"点击点击"这是因为它无法读取伺服标签。当硬盘驱动器启动时,它尝试做的第一件事就是把它的读头扔到盘子上并获得一个轨道。伺服标签定义轨道。如果它看不到伺服标签它到达中间,发出一声噼啪声,将手臂向后拉并重新尝试。

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

  1. 他们不会失败绝对是至关重要的。如果伺服标签出现故障,那么每当磁头超过该特定伺服标签时,它就会失去跟踪,这实际意味着整个磁道都无法使用。
  2. 它提出了一些关于硬盘驱动器硬件在处理盘片信息方面比外部机器更好的想法。
  3. 一圈伺服标签定义了一个轨道。你必须了解一些关于音轨的事情。

    1. 他们不一定是循环的。它们不完美,可以包含经线。这是因为伺服标签机不准确。
    2. 他们不一定是同心的。他们可以并且可以交叉。这意味着某些扇区或整个轨道可能因为伺服标签机不准确而无法使用。
    3. 写入伺服标签后,出现低级格式。除了更复杂之外,驱动器的实际低级80年代格式。因为盘片是圆形的但是硬盘驱动器速度是恒定的,所以通过读头下方的区域的量是到盘片中间的距离的可变函数。因此,为了从盘中挤出最后一滴存储器,盘片的密度是可变的并且在区域中定义。在一个典型的3.5"硬盘驱动器将有数十个区​​域具有不同的盘片密度。

      其中一种是特殊和超低密度,称为System Area。系统区域是驱动器上存储所有固件和配置设置的位置。它具有超低密度,因为该信息更重要。密度越低,随机搞砸的可能性就越小。它当然会在所有时间发生,但不会比用户区域中的某些时间发生。

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

      取消本段:

      1. 较低的密度意味着更容易阅读。
      2. 密度越高,随机搞砸的可能性越大。
      3. 用户区域的密度与硬盘制造商可能达到的密度一样高。
      4. 如果这看起来很麻烦,那就是因为它确实存在。硬盘制造商竞争并赢得每GB的价格。硬盘设计并不是非常谨慎地制造非常精心制造的设备并将它们放在一起非常小心,因为它已经不够了。当然,他们仍然这样做,但他们也必须在软件中相互协作,因为硬件容差太宽,不再具有竞争力。
      5. 因此。因为用户具有如此高的密度,所以实际上非常(非常(非常非常))可能在正常情况下被搞砸了。这可能是由许多因素引起的,包括非常轻微的时序问题和盘片退化。硬盘驱动器的很大一部分实际上包含了搞砸的位。 (您可以通过向驱动器发出ATA28 READLONG命令来验证这一点(仅对前127 GB左右有效。没有ATA48等效它被丢弃!)在许多扇区上多次比较输出。你会发现,如果某些比特行为不当,行为开启或关闭甚至随意翻转都不会发生。这是生活中的事实。这就是为什么我们有ECC.

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

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

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

        首先,他们需要系统区域。因为存储转换器的地方(转换器是将LBA地址转换为PCHS地址的物体(物理气缸盖扇区,而不是逻辑CHS地址,这是伪造的,仅因遗留原因而存在)。系统区域的大小各不相同,你可以在不使用魔术工具的情况下获得它。通常,它只有大约50-100MB。翻译器的布局是固件特定的,所以你必须逆转它(但它&# 39;之前已经完成了,没什么大不了的。)

        首先是问题,信噪比。如上所述,盘片密度调整得更高,严格安全。 Gutmann的方法要求正常读/写活动的方差非常低,以便以任何精度计算比特的先前状态。如果信号的方差很大,那么它可以克服这些尝试。差异非常大,足以让你彻底搞砸(这就是为什么ECC在现代驾驶中如此疯狂的原因。)类比就像试图在某人正在与你交谈的时候完全听到有人在窃窃私语。嘈杂的房间。

        第二个问题,时间。即使电子显微镜非常快速和准确(每比特1毫秒!电子显微镜的闪电。它也比1200波特调制解调器慢),硬盘上有很多数据完整的图像需要很长时间。 (WA表示整个500GB硬盘的126年,而且不包括ECC数据(你需要)。还有许多与硬盘驱动器相关的其他元数据,我没有提到,像ID字段和地址标记,但这些不被覆盖,也许你可以想出一个更快的方式来正常成像?毫无疑问有办法加快这个过程(如有选择地成像部分驱动器)但即使这样也需要花费数月的24/7全天候工作才能在标准硬盘驱动器上获得$MFT文件(在安装了Windows的驱动器上通常约为50-300MB)。

        第三个问题,可受理性。如果政府追随你,他们只是因为一些原因而追你,他们想知道你知道的事情,或者他们想要逮捕你并把你关进监狱。有更简单的方法来获得前者(橡胶软管密码术),而后者需要定期的证据程序。回到这个比喻,如果有人作证说有人在窃窃私语中告诉他们某事,而其他人在一个拥挤而嘈杂的房间中间与他们交谈,那里有很多疑点。它永远不会是那种想要花费大量时间和金钱的有力证据。

答案 1 :(得分:2)

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

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