如何写回现有文件,确保磁盘上的位被OS X覆盖

1 filesystems security cocoa

可以使用什么API的Cocoa或Core Foundation来确保当我写回存储设备上已存在的文件时,这些位被写入?出于安全原因,我们的想法是清除这些位.

Mar*_*off 5

在现代文件系统中,无法保证您覆盖磁盘上的相同物理位置 - 缺少该保证允许文件系统为您提供更好的性能.您可能有兴趣阅读本文(PDF),适当标题为什么安全删除不起作用,并且不应将未加密的敏感数据存储在磁盘上(强调我的).

想想也是从这个警告shred手册页:

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

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

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

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

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

  • 压缩文件系统

话虽如此,在Cocoa或Core Foundation中可能会有某种方式允许您写入特定的头/柱面/扇区/等.在磁盘上 - 我对这些API不够熟悉 - 但我对它非常怀疑.