shred 命令后恢复文件

Vin*_*ent 10 bash rm forensics shred

假设我的计算机中有一些敏感文件,我想完全删除它们,这样就没有人可以检索它们。为此,我可以使用该rm命令,但它仍然很容易恢复。所以我选择使用shred用噪音覆盖我的文件然后删除它的命令。

> shred -n 120 -u my_file.txt
Run Code Online (Sandbox Code Playgroud)

但是,我仍然不确定我的方法是否完全安全。
粉碎文件后可以做什么来恢复它?

先决条件

假设我可以使用所有可用的取证软件和实验室设备来恢复我的数据。
假设我想保持硬盘驱动器的物理完整性(因此没有微波炉、火灾或任何物理损坏)。

研究

我也尝试过:

dd if=/dev/zero of=my_file.txt bs=16M status=progress
Run Code Online (Sandbox Code Playgroud)

为了将我的文件内容替换为0。但我不知道这个方法是否比shred.

Dav*_*ill 18

\n

我仍然不确定我的方法是否完全安全。

\n
\n

它不是:

\n
\n

Shred 基本上依赖于一个非常重要的假设:文件系统会就地覆盖数据。这是传统的处理方式,但许多现代文件系统设计并不满足这个假设

\n
\n

资料来源:https ://unix.stackexchange.com/questions/656146/how-to-use-the-shred-command-the-right-way#comment1234353_656147,丹尼尔·凯利评论

\n
\n

几乎不可能恢复敏感数据的唯一方法是使用几种定义的模式覆盖(\xe2\x80\x9cwipe\xe2\x80\x9d 或 \xe2\x80\x9cshred\xe2\x80\x9d)数据。

\n

注意:擦除或粉碎工具的使用依赖于一个非常重要的假设:文件系统会覆盖适当的数据。这是传统的处理方式,但许多现代文件系统设计不满足这个假设,例如 Ext4、XFS、ReiserFS 等。

\n
\n

来源:SystemRescue - 安全删除数据

\n

Shred 不适用于 SSD:

\n
\n

将块写入 SSD 不会覆盖旧块。这是因为所有最近的 SSD 都使用一种称为“磨损均衡”的技术。

\n

要将块写入 SSD,您需要先擦除它,然后才能写入新数据。但擦除是一个只能执行有限次数的操作;每次执行擦除时,\n都会“削弱”硬件,直到无法再正确擦除该块。

\n

因此,磨损均衡不会擦除和覆盖同一个块,而是会让 SSD 选择一个不同的、未使用的块,并写入此块,将旧块上的数据保留在原处。

\n

如果旧块上的数据就位,则意味着仍然可以读取它。

\n

因此,您可以用来“覆盖”文件的任何命令(cp、dd、cat、shred 等等)都有这个弱点:它实际上根本不覆盖文件,而是写入零、随机数据或\n任何新块。

\n

因此,与 HD 不同,这不是确保您的数据不丢失且无法被其他人读取的好方法。

\n
\n

来源:碎片化对 SSD 的擦除有害吗?- Unix & Linux Stack Exchange ,由dirkt回答

\n
\n

进一步阅读:

\n\n

  • 解决这个问题的方法就是所谓的 SED 或自加密磁盘,其中只有一个块需要监听。该块包含加密密钥,如果没有这些密钥,磁盘上的数据基本上只是随机噪声。使用 Bitlocker 或其他全盘加密程序也可以实现同样的效果。归根结底,删除或“粉碎”文件永远不应该被视为一种安全的处理方法。如果您*必须*保护您的数据,那么加密和物理销毁是唯一有保证的处理方法。 (9认同)
  • @Vincent 写入 SSD 会浪费写入和擦除周期,并且由于磨损均衡器不能保证所有块都被实际写入。正如 David 所说,许多 SSD 都有可以擦除磁盘的程序,但在操作系统中,您可以 [TRIM](https://en.wikipedia.org/wiki/Trim_(computing)) 整个磁盘,这将有效地告诉磁盘:每个块都准备好被擦除,并且会导致控制器磨损均衡器取消所有块的链接并(最终)擦除它们。问题是数据将在实际闪存芯片中保留一段未知的时间。 (5认同)
  • 许多 SSD 都有安全擦除程序... (4认同)

Joe*_*een 7

假设我的计算机中有一些敏感文件,我想完全删除它们,这样就没有人可以检索它们。

这本身就是一个永远无法满足的要求。如果我们假设使用传统的磁驱动器,那么我读过的所有研究和文献都表明,即使只通过一次零,也不可能恢复有意义的数据。

示例: https: //www.researchgate.net/publication/221160815_Overwriting_Hard_Drive_Data_The_Great_Wiping_Controversy

这项研究表明,即使数据很小或仅在硬盘驱动器的一小部分上发现,正确擦除的数据也无法合理地检索。即使使用 MFM 或其他已知方法也不行。相信可以开发出一种工具来从已擦除的驱动器中检索千兆字节或兆兆字节的信息,这是错误的。

现在已经无法挽回了!

但有人仍然可能会说我还没有找到正确的研究,或者尽管这可能是当前的情况,但这并不能保证遥远的特征中没有人能够恢复数据。

覆盖/粉碎是否就位

由于OP正在讨论单个文件,为了覆盖文件的内容(或粉碎或任何你想称呼它的东西),我们必须假设文件在文件系统级别被就地覆盖。因此文件位于集群 10 - 20 中,粉碎机现在可以将粉碎的文件实际保存到集群 10-20 中。然而,如果文件系统出于某种原因决定保存到簇 100 - 110,则原始文件内容将保留,文件系统将不再指向它。在这种情况下,最简单的用户文件恢复软件可能会恢复您打算覆盖/粉碎的数据。

现代驱动器可能并不完全符合您的期望。

即使我们假设文件系统能够协作,像 SSD 或 SMR 驱动器这样的现代驱动器几乎按照定义会将粉碎的数据写入不同的物理位置。除此之外,现代驱动器可能在将块写入“最终目的地”之前缓存“文件”或更好的文件数据。例如,许多 SMR 驱动器保留一个 CMR 区域用于快速写入(媒体缓存),数据先写入该区域,然后再写入较慢的 SMR 区域。在 CMR 区域中的数据被覆盖之前,您的数据会存在 2 个副本。

混合驱动器 (SSHD) 的过程类似。

在 SSD 上,甚至可能存在文件的多个副本..

由于数据的组织、“编程”和擦除方式,SSD 甚至比 SSD 还要糟糕。由于 NAND 的特性,以及一次可以编程多少(一页)和一次擦除多少(一个擦除块),并且只能对擦除的页进行编程,从定义上看,它几乎不会写入您从中读取的物理位置。IOW“你的碎纸机”读取文件,扰乱数据并保存。但SSD不会覆盖原始数据,因为加扰数据被写入其他地方。

此外,在您不知情的情况下,您的文件可能存在多个副本,因为 SSD 往往会在各处打乱数据(擦洗、磨损均衡等),以便在某个时刻擦除过时的副本。研究人员发现,SSD 中只保存过一次的文件多达 16 个副本!由于只有一份副本映射到 LBA,对于我们(最终用户)来说,就好像该数据只存在一份副本。

请参阅:https ://www.usenix.org/legacy/events/fast11/tech/full_papers/Wei.pdf

图 1:多个副本 此图显示 FTL 复制文件多达 16 次。

因此,即使您成功就地粉碎文件,该文件的许多过时副本可能仍然存在,并且可以使用正确的工具恢复

所以,不,你的方法不安全。

但是,我仍然不确定我的方法是否完全安全。粉碎文件后可以做什么来恢复它?

看完前面的内容,应该就很明显了。

我们所需要的只是一种访问该空间的方法,其中这些“过时”的数据副本仍然存在。

此类现代驱动器通常与“转换器”或“转换层”(FTL) 配合使用,将 LBA 地址映射到物理地址,跟踪页面状态、磨损等。

如果 SSD 保存您的文件,即使文件系统写入完全相同的位置,它也会找到一个已擦除的页面来写入数据。读取数据的页面不是根据定义的。然而,对于操作系统来说,数据似乎是写入相同范围的 LBA 块。SSD 通过简单地将不同的物理位置映射到这些 LBA 块来实现此目的。

在 NAND 级别,我们现在拥有文件的两个副本,原始文件位于不再映射到任何 LBA 地址的位置,我们称之为过时数据,以及新文件(粉碎变体)。

因此,我们需要的是一个允许我们访问“LBA 域”之外的数据的工具。

选项1:

Acelab 的 PC3000 SSD。几乎每个数据恢复实验室都有这个工具。要访问“过时数据”,该工具需要“了解”SSD 型号。即使目前不支持特定模型,将来也可能会支持。新型号不断添加。

请参阅: https: //blog.elcomsoft.com/2019/01/life-after-trim-using-factory-access-mode-for-imaging-ssd-drives/

选项2:

完全转储 NAND 并旁路控制器。

示例:http://www.flash-extractor.com/library/SSD/IDX110M00/IDX100M01-LC%20v2__2c_68_04_46__16x1

在现代 NAND 上,这是不可能的,虽然我们可以读取 NAND,但数据是加密的,并且(此时)无法解密,因为我们缺乏控制器的帮助。

示例:http://www.flash-extractor.com/library/SSD/SandForce/SF-2281VB1-SDC-S03__2c_88_04_4b__4x4

关于 SMR 驱动器,PC3000 的最新更新(在撰写本文时)进一步增强了对此类驱动器的支持:https://youtu.be/PylbEVGWo3M

  • @KamilMaciorowski “正确擦除”在这种情况下_是_有意义的。这意味着磁盘上包含数据的部分实际上已被覆盖。例如,与运行“shred”相反,但由于文件系统设计或存储技术或两者兼而有之,它覆盖了物理存储的不同部分,而不是敏感数据曾经和仍然存储的位置。 (2认同)