我正在开发一个Android应用程序,允许用户永久擦除SD卡上的数据。重要的是删除的数据无法通过CardRecover等软件恢复。
据我所知,现在主要有两种方法。
但是,CardRecover能够在这两种情况下恢复数据。
我知道如果整个SD卡都被覆盖,数据就无法恢复了。我尝试过这种方法,但性能难以接受。
那么我该如何实现这一目标呢?
我现在有两个想法,但我不确定它们是否合适。
答案 0 :(得分:2)
使用File#delete()
删除文件或重新格式化卡片相当于书写书籍索引中章节的页码,或者撕下索引页面。您无法再找到所需内容轻松,但实际内容(即数据)仍然存在。
为了删除数据本身,您需要逐个覆盖它。可能不再需要使用多个传递ala shred
,但您仍然需要至少一次传递,因此性能较低。
请记住,如果SD卡使用任何形式的wear leveling,那么覆盖数据实际上并不能保证将其从物理介质中删除 - 一个坚定的(装备精良的)攻击者仍然可以恢复一些数据。使用日记文件系统(在与Android一起使用的SD卡上相当不可能,但仍然......)也可能导致类似的问题。
加密不是真正的解决方案,除非它由操作系统或创建文件的应用程序透明地执行。在事实之后加密文件仍然需要写入相同数量的数据,除非就地执行,否则还会给您带来安全删除原始文件的问题。此外,在解密之前,您的应用程序将无法访问该文件。
至于“打破”文件,该技术的有效性在很大程度上取决于所讨论文件的细节。例如,视频文件通常可以在体面的播放器(例如VLC)上查看,即使文件的重要部分已损坏。没有泛型技术可以在不完全覆盖文件的情况下使文件无用,尤其是针对具有专门取证工具的攻击者。通过例如销毁文件只覆盖他们的标题只会提供一种虚假的安全感。
如果我是你,我会坚持使用有效的方法并且只是覆盖整个文件......