AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 939918
Accepted
N73k
N73k
Asked: 2018-11-14 17:01:14 +0800 CST2018-11-14 17:01:14 +0800 CST 2018-11-14 17:01:14 +0800 CST

可以从加扰的 SSD 中恢复数据吗?

  • 772

如果我“粉碎”(这是一个 Linux 实用程序/命令)SSD,数据还能恢复吗?

ssd
  • 2 2 个回答
  • 620 Views

2 个回答

  • Voted
  1. Best Answer
    Kurt Fitzner
    2018-11-14T19:27:27+08:002018-11-14T19:27:27+08:00

    答案是“也许”,但最好假设“是”。

    当您覆盖固态驱动器上的现有文件时,处理磨损均衡的特殊驱动程序通常通常不会真正覆盖旧数据所在的确切位置。这是因为在保存该位置的单元磨损之前,固态驱动器只能有限次数地写入同一位置。因此,磨损均衡驱动程序不会覆盖旧位置,而是查看驱动器上的哪些点磨损较少,并将其映射到您正在覆盖的位置。旧的、被覆盖的数据本身会重新映射到不被使用的地方。

    这有点过于简单化了。这种重新映射并不总是发生,不同的 SSD 设备处理这个问题的方式不同,这取决于操作系统是否知道它是固态驱动器。但是您永远不能假设覆盖任何单个文件会导致该文件的数据在任何 SSD 上被破坏,这包括 MicroSD 卡、USB 记忆棒和其他便携式固态设备。

    擦除最旧的“已删除”数据的最佳方法是用随机数据填充驱动器的所有未使用空间。如果您填满了驱动器上的全部未使用空间,那么您最有可能覆盖之前删除的所有内容。不过,这有两个警告。首先是,你会在你的驱动器上造成很多磨损。您将该驱动器上每个单元的写入次数减少了 1 次。另一个警告是,您不一定会以这种方式删除所有旧数据。这是因为许多固态驱动器,包括大多数更好的驱动器,都有一点额外的空间没有显示给用户。这个额外的空间被保留用于重新映射到细胞几乎耗尽的地方。然后,当它被重新映射时,旧单元格被永久映射出来,但它仍然有以前的东西。获取这些数据很困难,但通常并非不可能。许多制造商都有专有的方法来查看在哪里重新映射了什么,并且可以访问旧数据。现在,一个单元在拥有敏感数据后立即停止服务的可能性可能很低。这完全取决于驱动器上有多少敏感数据。但这不是零机会。

    有两种通用方法可以覆盖驱动器上已删除的旧数据。您可以通过简单地创建一个增长以填满文件系统上所有空白空间的文件来非破坏性地执行此操作(对文件系统和驱动器上的当前文件)。您可以通过用随机数据从头到尾填充驱动器的块设备来破坏性地做到这一点。

    非破坏性: 在 Linux 中,您可以执行以下非破坏性方法:

    $ dd if=/dev/urandom of=random.bin
    

    您可能需要以 root 身份执行此操作,以便同时覆盖文件系统的保留部分。这会耗尽文件系统上的所有可用空间,因此当您在根文件系统上执行此操作时,可能会出现诸如 syslog 之类的内容无法再写入日志的后果。不过,这通常不是灾难性的,如果您在重新启动后快速删除 random.bin 文件,通常情况下就可以了。更谨慎的方法是首先从 Live CD/DVD/USB 启动,然后挂载 SSD 文件系统并在其中执行上述操作。如果 SSD 上有多个文件系统,则需要对所有文件系统执行此操作,然后再删除其中任何一个文件系统上的 random.bin。

    破坏性: 这更容易,并且是您可以使用的最完整的方法,不会对驱动器造成物理破坏。从 Live CD/DVD/USB 启动,然后在确定 SSD 的物理设备后,您可以使用:

    $ dd if=/dev/urandom of=/dev/sda bs=1M
    

    其中 /dev/sda 被替换为 SSD 的设备。不过,您必须在执行此操作后重新制作所有分区。当您在 SSD 上创建分区以确保它们与设备的内部存储单元和块大小正确对齐时,有时会产生一些后果,因此请调查一下。

    已提出就地加密驱动器然后销毁密钥作为擦除驱动器的替代解决方案。这充其量并不比上述破坏性方法好,最坏的情况是可以恢复驱动器的几乎全部内容。可能的问题是,某些加密产品默认情况下不会用随机数据覆盖可用空间,或者有办法将其关闭,它们不一定会覆盖现有分区之间或末尾的空闲空间。驾驶。

    简而言之,没有 100% 可靠的方法来确保敏感数据在任何 SSD 上被覆盖。确保无法从固态驱动器中提取敏感数据的唯一方法是物理销毁它。我的意思是确保每个存储芯片中间的实际硅晶片都破裂了。有些驱动器碎纸机就是为此而设计的。高温燃烧也是有效的。

    必须指出,几乎所有这些痛苦都可以通过预防来规避(或至少减轻)。从一开始就使用全盘加密系统,这样就不会将未加密的数据写入驱动器,这是迄今为止确保数据最安全的最佳方式。即便如此,在驱动器的 EoL 中,我仍然建议对驱动器进行物理销毁或上述破坏性方法。

    • 5
  2. mdpc
    2018-11-15T12:12:03+08:002018-11-15T12:12:03+08:00

    所有较新的 SSD 磁盘都包含低级“修剪”功能。基本上,低级命令中指定的块会导致 SSD “垃圾收集”这些块,从而使已删除的内容无法访问且无法恢复。

    安装的 SSD 磁盘将对 Windows 系统(可能 7 及更高版本)中已删除的文件空间执行修剪功能。我相信这可以使用注册表项来禁用。

    在与 Windows 不同的 Linux 中,您必须使用一个特殊的挂载选项discard来执行 SSD 驱动器上的“修剪”功能。但是,这可以通过与fstrim结合使用的命令定期完成cron。

    如果问题是如何使已删除的空间不可恢复,那么在 SSD 上使用“修剪”功能似乎是一个开始。

    • 1

相关问题

  • SSD TRIM 的硬件 RAID 控制器支持

  • 用于存档目的的 SSD?

  • 在 SSD 上重新分区是否会有效缩短设备的使用寿命?

  • 最适合与 Linux / SSD 一起使用的日志结构文件系统?

  • 在 RAID 0 中使用 2 个固态驱动器是否可靠?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve