【问题标题】:Can I securely delete a file this way?我可以通过这种方式安全地删除文件吗?
【发布时间】:2014-12-17 06:57:04
【问题描述】:

假设我有一个 10 MB 的文件并执行以下步骤:

  1. 用我最喜欢的读/写编程语言打开它
  2. 擦除流中的所有内容
  3. 将 10 MB 的随机数据准确写入同一流
  4. 将更改保存到磁盘
  5. 通过正常方式删除文件

我能否确定新的 10 MB 在硬盘驱动器的扇区级别上成功覆盖了旧的 10 MB?或者“擦除流中的所有内容”步骤是否有可能删除旧文件并可能将新的 10 MB 写入新位置?

【问题讨论】:

    标签: file-io hard-drive


    【解决方案1】:

    知道自己在做什么并且可以访问磁盘上的原始数据(即不通过文件系统)的专业人员仍然可以访问这些数据。

    你的程序基本上相当于Linux的shred命令,包含如下警告:

    注意:请注意,shred 依赖于一个非常重要的假设: 文件系统覆盖数据。这是传统 做事的方式,但许多现代文件系统设计不能满足这一点 假设。以下是使用 shred 的文件系统的示例 无效,或不保证在所有文件系统模式下都有效:

    • 日志结构或日志文件系统,例如随 AIX 和 Solaris(以及 JFS、ReiserFS、XFS、Ext3 等)

    • 写入冗余数据的文件系统,即使某些写入也会继续 失败,例如基于 RAID 的文件系统

    • 制作快照的文件系统,例如 Network Appliance 的 NFS 服务器

    • 缓存在临时位置的文件系统,例如 NFS 第 3 版客户端

    • 压缩文件系统

    还有其他情况,例如具有磨损均衡的 SSD。

    【讨论】:

      【解决方案2】:

      不,因为在任何现代文件系统上提交都是原子的,所以您几乎可以 100% 确定 10Mb 不会覆盖旧的 10Mb,而那是在我们考虑实际保证这一点的日志文件系统之前。

      【讨论】:

        【解决方案3】:

        简短回答:不。

        这可能取决于您的语言和操作系统。我有一种感觉,流调用被传递给操作系统,然后操作系统决定做什么,所以我倾向于你的第二个问题是正确的,只是为了安全起见。此外,在删除后仍会出现磁伪影,该磁伪影仍可用于恢复所述数据。即使用全零覆盖相同的扇区也可能使数据处于褪色状态。通常建议进行多次删除。请参阅here 了解说明,或参阅here 了解开源 C# 文件粉碎机。

        对于 Windows,您可以使用 SDelete 命令行实用程序,该实用程序实现了国防部的清除和消毒标准:

        安全删除应用程序会覆盖已删除文件的磁盘数据 使用显示使磁盘数据无法恢复的技术,甚至 使用可以读取磁介质中模式的恢复技术 显示弱删除的文件。

        特别注意:

        压缩、加密和稀疏由 NTFS 在 16 集群中管理 块。如果程序写入此类文件 NTFS 的现有部分 在磁盘上分配新空间来存储新数据,然后 新数据已写入,之前解除分配集群 被文件占用。

        【讨论】:

          猜你喜欢
          • 2022-01-23
          • 2019-12-09
          • 1970-01-01
          • 2021-03-15
          • 1970-01-01
          • 2019-08-18
          • 1970-01-01
          • 2020-10-01
          • 1970-01-01
          相关资源
          最近更新 更多