当文件被删除时,直到 SSD 上的页面被覆盖,它才真正被删除,我如何确保我的敏感文件被永久删除并且无法恢复?
我知道我可以创建虚拟数据并将其复制到整个驱动器直到它满了(从而删除 SSD 上敏感文件的页面),但是有没有简单的方法可以做到这一点?
答案1
SSD 与普通 HDD 不同,主要是因为它们使用不同的技术来记录数据。HDD 是一种旋转盘片,通过移动机械臂进行写入。SSD 更类似于闪存棒,将信息存储在单元中。要将新数据写入单元,驱动器必须先擦除现有数据。这使得文件写入 SSD 后更难(甚至不可能)完全删除。
安全擦除方法“理论上”应该在第一次操作时就删除驱动器中的所有数据。但正如多项研究表明,实施不当或存在缺陷的安全擦除版本可能会导致数据残留。这些数据是可以恢复的。最好的方法是完成至少两次完整的安全擦除过程,以确保每个 SSD 单元都完全清除。
加州大学的一组工程师研究了从固态硬盘 (SSD) 上删除数据的难度。尝试安全删除单个文件会遗留 4% 到 75% 的信息。这对硬盘来说很困难。
解决方案?
您可以做的是确保加密您的 SSD,并确保您拥有具有 TRIM 功能的 SSD 驱动器。
SSD 中的数据不断移动。这就是完全删除曾经写入的文件如此困难的原因。但是……幸运的是,TRIM 命令旨在解决这一难题,它通过标记驱动器不再认为正在使用的数据块,以便在内部擦除。简而言之,您丢弃的数据最终将消失得无影无踪,无法恢复,但只有您的驱动器真正知道什么时候会这样。
始终确保使用制造商的软件。
答案2
SSD 由 NAND 内存和控制器组成。控制器使用 SATA 协议,并且足够智能,可以将数据分散到各个块中(搜索“磨损均衡”)。
只有控制器知道您的数据到底在哪里,因此简单地将空值写入同一地址是没有帮助的。
相反,您需要让控制器擦除所有内容。SATA 协议中有一个特殊命令,称为“安全擦除”(https://en.wikipedia.org/wiki/Parallel_ATA#HDD_passwords_and_security)
使用您的 SSD 供应商软件(例如三星的“Magican”)启动此命令。
答案3
如果您不想依赖操作系统驱动程序对 TRIM 的使用,则 Linux(也许其他地方)上有两个命令可用于调用 SSD 上的 TRIM 内部功能。
fstrim(8)丢弃已挂载文件系统中所有未使用的块,可能限制在您指定的区域内。
blkdiscard(8)丢弃(并有效擦除)整个驱动器的所有块(或指定区域)。
我可以想象在偶尔插入的 SSD 上使用它,可能会错过现代操作系统通常计划的 TRIM 操作,或者在您即将回收或捐赠的 SSD 上使用它。