![使用 dd 填充磁盘是否会安全地删除文件?](https://linux22.com/image/625816/%E4%BD%BF%E7%94%A8%20dd%20%E5%A1%AB%E5%85%85%E7%A3%81%E7%9B%98%E6%98%AF%E5%90%A6%E4%BC%9A%E5%AE%89%E5%85%A8%E5%9C%B0%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我想安全地删除我的文件,而不必担心有人恢复它们,我知道我可以使用 shred,但即使使用 -n 1 也需要太长时间,所以我想也许如果我删除文件并使用 dd 写入磁盘,填满所有可用空间,我就不必使用 shred 了,对吧?我相信 dd 会比 shred 更快,尤其是我的文件几乎填满了磁盘中的大部分可用空间
那么使用 dd 填充磁盘是否可以保证我的文件被安全删除?
答案1
这与互联网上的大多数传统观点相悖,但我们还是开始吧……
如果这是一个现代旋转磁盘,只需使用 /dev/zero 进行 dd 即可挫败几乎任何数据恢复尝试,即使是来自专业的数据恢复机构。 它可能可以提取一些用极其昂贵的专业设备(例如政府实验室)获取数据,但对于不愿意花费数百万美元的人来说,这几乎是无法承受的。(请注意这一点将不会遵守任何听起来很官方的政府数据处理标准,但它是有效的。
你在互联网上读到的关于这个话题的大多数智慧的问题在于,它们更多的是都市传说,而不是实际事实。如果你寻找关于这个话题的实际来源,大多数人都会回头去1996 年发表的一篇论文,指的是 MFM/RLL 驱动器(IDE 之前)。此外,人们提到的大多数政府数据销毁标准都是几十年前制定的。
多次擦除数据的逻辑可以归结为这样一个想法:残留信息可能会停留在盘子上的扇区。在较旧的硬盘上,扇区的密度相对较低,盘片上有大量空白空间,这些剩余数据可以存放在那里。自 1996 年以来,硬盘容量已增加了几个数量级,而盘片大小却保持不变。盘片上根本没有那么多空白空间可供数据存放。 如果盘片上有可用的额外空间,驱动器制造商就会使用它并向您出售更大容量的磁盘。
这些安全擦除标准的智慧已被拆散,并有论文发表称一次通过即可。
几年前,有人发布了伟大的零挑战,有人用 dd 和 /dev/zero 覆盖了一个驱动器,并向某人发出公开挑战,要求他们提取数据。我记得没有人接受。(免责声明:此挑战的原始网站现已不存在。)
但是固态硬盘怎么样? 由于闪存磨损均衡、坏扇区重新映射和垃圾收集以及额外的“隐藏容量”,传统的覆盖方法可能实际上不会覆盖数据(尽管在主机 PC 上看起来已被覆盖)。 使用 /dev/zero 执行一次 dd 将阻止普通用户从 SSD 读取任何数据。 然而,一个专门的攻击者逻辑分析仪可以打开驱动器并从里面的闪存芯片中提取数据。
这个问题是不久前才发现的。因此,一个名为安全擦除已添加到 ATA 标准中。驱动器中的固件将安全地擦除所有闪存单元。大多数现代 SSD 都支持此命令。我相信它也适用于旋转驱动器。请注意,此命令有时对于最终用户来说可能很难访问。您通常需要一个特殊的实用程序才能使用它,某些 BIOS 会实施“安全冻结”,这可能会妨碍您。请咨询 SSD 制造商以获取实用程序。如果他们没有,您可以使用第三方实用程序。
请注意,有些人对驱动器固件内置的安全擦除功能的可靠性表示担忧。2011 年发表的一篇论文这表明,一些驱动器在安全擦除后会留下数据。请注意,自那时以来,SSD 固件已经取得了很大进步。如果安全擦除对您来说是一项重要功能,我建议您从顶级制造商处购买驱动器,最好是他们的服务器/数据中心产品线(这些产品线不太可能容忍有缺陷的固件)。
如果上述情况让您担心驱动器上剩余的数据,那么您的下一个最佳选择是多次用随机数据填充驱动器,因为这有望解决覆盖 SSD 中多余的隐藏容量的问题,但如果不了解固件的内部工作原理,您就无法绝对确定。这也会缩短 SSD 的使用寿命。
你应该从中学到的是:
- 使用 dd 和 /dev/zero 或单次传递选项覆盖驱动器数据库管理系统足以阻止大多数人获取您的数据(SSD 或旋转)。
- 如果您有旋转驱动器,则可以使用多遍擦除方法。它不会造成任何损害,但会花费更长的时间。
- 如果您拥有信誉良好的制造商生产的较新型 SSD,则应使用 ATA 安全擦除命令,最好使用制造商提供的实用程序。
- 如果您的驱动器不支持 ATA 安全擦除(或已知有缺陷),则多次擦除是您的下一个最佳选择。
- 如果您需要按照某个标准擦除驱动器(例如,您有一份合同规定数据应按照 DoD 5220.22-M 擦除),那么就照做,不要争论是否有必要。
- 没有什么能比物理破坏更糟糕。 如果驱动器上的数据过于敏感,其价值超过了驱动器本身的现金价值,则应将其物理销毁(使用锤子、虎钳、钻床或发挥创意)。如果您真的很偏执,请确保驱动器的残余物分散在广阔的区域(例如,城市多个地方的多个公共垃圾桶)。
答案2
定义“安全”。您有多希望这些数据消失,丢失存储空间会有多痛苦?如果这些数据绝对不能再被任何人看到,那么合适的工具不是dd
:shred
而是一把大锤。
如果你不太需要去那到目前为止,您可以使用软件,但问题仍然存在:您认为谁可能想要数据,不让他们得到数据有多重要?传递零可以阻止脚本小子,但如果有人真的被付钱来恢复您的数据,他们不会有太多麻烦。传递零、传递一和传递 /dev/random 将使坚定的攻击者的生活非常痛苦,但如果他们有资源并且非常想要您的数据,仍然有办法得到它,并且运行这么多传递需要很长时间,您还是会使用它们shred
。
底线是,如果您真的想要安全,就没有必要使用dd
来擦除数据。它不会阻止任何复杂的攻击。如果shred
比用大锤还要费时,那就用大锤吧。如果您不能承受磁盘空间的损失,那就花点时间使用shred
。为此目的使用dd
是不够安全的。
答案3
如果您要覆盖整个磁盘,那么 dd 应该可以很好地完成这项工作。shred 允许安全删除单个文件,即使您粉碎磁盘上的每个文件,它也会保留文件系统。因此,不同之处在于它们在不同级别上运行。Shred 需要找出特定文件的存储位置并仅覆盖该位,这可能是它花费更长时间的原因。
答案4
正如其他人所说,DD 不会满足您的需要。DBAN 是一款非常好的工具。DD 不会使文件无法恢复。即使是 DBAN 或其他工具也无法 100% 保证。如果您担心数据安全,最好的选择是销毁物理介质。
DBAN is a self-contained boot disk that automatically deletes The contents of any hard
disk that it can detect. This method can help prevent identity theft before recycling a
computer. It is also a solution commonly used to remove viruses and spyware from
Microsoft Windows installations. DBAN prevents all known techniques of hard disk forensic
analysis. It does not provide users with a proof of erasure, such as an audit-ready
erasure report.