假设我有一个文件,我想在 SSD 中安全删除它。如果我进行常规删除,然后用随机数据文件填充所有未使用的空间,这样可行吗?
答案1
由于闪存设备(如 SSD)中的磨损均衡,为了确保覆盖已释放的块,您需要写入全部未分配的闪存存储块。不幸的是,即使在删除文件之前进行覆盖,也需要覆盖不属于其他文件的每个块,因为每次写可能会作为磨损均衡过程的一部分落在整个存储设备上的任何地方。这意味着,为了通过覆盖安全地擦除,您实际上需要覆盖设备上的所有空间尚未成为要删除的文件所占用的闪存块之外的其他文件的一部分,即使如此,如果在同一个闪存块中存在其他文件(或它们的片段),您也不能确定是否已覆盖最初保存该文件的块。
因此,SSD(或任何形式的闪存)对于存储可能需要在设备物理损坏之前安全擦除的数据来说并不是一个好选择;坚持使用可以粉碎的光学介质,或可以使用多种模式和随机覆盖进行军规擦除的磁性存储(并且数据保留在原处,因此您可以确定它已被覆盖)。如果您必须使用闪存介质,我建议使用容量最小的 SD 或拇指驱动器来容纳您需要的内容,同时使用可靠的方法来避免存储设备的物理丢失。这既可以简化安全删除的“覆盖整个设备”要求,又可以降低设备物理破坏的成本,从而确保绝对安全的删除。
答案2
据我所知,没有真正安全的方法来从 SSD 中删除文件,因为评论指出 SSD 的控制器可以随意决定将其内部存储块从一个可访问扇区“移动”到另一个可访问扇区(用于磨损均衡),并且大多数会保留“额外”未使用的块,以便在将来或随机地换成坏块。
因此,即使你覆盖了 SSD 上每个可访问的块,仍然可能存在一些使用常规工具无法访问的块。
有时secure_erase
可以使用 ATA 命令,但这应该可以安全地覆盖全部的驱动器,因此不能用于仅删除一些文件。(有人评论说并非所有驱动器都可以secure_erase
正确删除。)
如果您想将敏感数据保存在 SSD 上,并且担心以后有人看到这些数据,那么有两条建议:
不
加密- 然后您就不必担心稍后删除错误,因为即使没有密钥,它们也已经有效地“消失”了。
加密仅有的敏感数据,切勿写入任何敏感的非加密数据 - 注意非加密的内存缓存/交换/系统休眠文件)。
加密整个 SSD从头开始,前将任何敏感数据写入其中,并保持其中的所有数据加密 - 包括内存到磁盘文件。
答案3
令人恼火的是,学术论文对如何通常損壞數據。
有几件事值得考虑。传统的磁盘清理技术是为硬盘设计的 - 它们按顺序写入数据,比现代 SSD 更“简单”。通常,将 SSD 视为 HDD 往往会破坏性能和 SSD,而垃圾收集之类的事情通常是由以下因素触发的:具体的ata 命令,如 TRIM 和安全删除。
现在有两种观点 - 一种是 Boddington 等人所持的观点(其论文似乎无法访问),另一种是旧论文Gubanov 等人认为 SSD 使用的垃圾收集算法破坏数据。
另一方面魏等人 Gubanov 等人的最新论文指出,你永远不能实际上删除所有数据,有时传统的数据清理工具无法处理 SSD。
在理论从 SSD 永久删除文件的正确方法是使用安全删除 ATA 命令。实际上,如果想确保万无一失,您可能需要考虑使用密码进行全盘加密,或者在传统硬盘或某种可破坏
存储中使用密钥文件。