C#完全删除文件,使其无法检索

时间:2013-10-25 15:19:26

标签: c# gnupg pgp

我们有一些软件可以从客户端检索文件,对其进行解密,处理,加密结果并将其发回。

我们使用PGP密钥(我们私有解密,他们的公共加密)。

然而,我发现虽然我们在处理完文件后删除了文件,但理论上可以使用取消删除工具从硬盘中获取文件。

目前我们使用gpg2.exe程序作为gpg4win的一部分来进行pgp解密,所以我不确定我们是否可以将它直接解密到内存中,因此它永远不会触及硬盘。

是否有一种简单的方法可以确保在删除它时它完全消失了?

3 个答案:

答案 0 :(得分:2)

您可以检查gpg程序是否允许从stdout获取输出而不是将其写入文件,因此它不会写入磁盘。可能还有一个C#或C ++库也可以这样做。

如果你必须使用一个中间文件,你可以通过在删除它之前用随机数据覆盖内容几次,或使用专门的粉碎工具删除它来使它变得更难。

顺便说一句:请注意,如果您偏执到足以担心某人使用特殊软件来恢复已删除的数据,您可能还需要担心RAM中剩余数据的碎片。

答案 1 :(得分:0)

您可以使用擦除实用程序(http://wipe.sourceforge.net/)来擦除未加密的数据。

答案 2 :(得分:0)

是的,取消删除文件并在编写时即时捕获它是微不足道的。所以更安全的方法是使用OpenPGP库来执行内存中的所有操作(除非你有大量文件不适合内存)。

你需要记住,内存也被交换到磁盘,所以如果你有一个绝密数据,你的任务就会变得更加复杂 - 你需要创建未交换的内存块,并以某种方式在.NET中使用它们。

还有一个复杂问题 - 如果您的应用程序解密数据,那么它附近有一个私钥。攻击者很有可能窃取加密密钥,然后窃取加密文件并解密它们。

所以你的主要问题是在磁盘之外 - 这是为了确保整个计算机系统的安全性。

相关问题