推荐的方法来保存/防篡改应用程序生命周期中的敏感数据

时间:2012-05-08 14:47:22

标签: c# .net security c#-4.0 hash

我的应用程序将用户交互存储在加密文件中,并在Session期间收集。会话就像离线考试一样,不仅可以存储答案,还可以存储鼠标点击,屏幕截图等。

会话必须保持ATOMIC,因此我会一直保存增量文件,并在会话结束时将它们一起修补。如果应用程序发现了被篡改文件的痕迹,则会将会话标记为不合格。

我想要实现的目标:

  • 创建的增量文件只能由应用程序访问。换句话说,任何具有更高权限的人都不应该能够修改或删除它们。
  • 应用程序的非Windows依赖方式,以确保在打包会话时没有人篡改增量文件。
  • 内存防篡改。换句话说,如果内存数据已被强制修改,我的应用程序应该了解它。这可能吗?

我已经考虑过IsolatedStorage,哈希等,但是希望得到其他人做过这类事情的建议。

2 个答案:

答案 0 :(得分:1)

特别是对于.NET(和Java)等托管环境,在与完全控制系统的用户在同一台​​计算机上运行时,无法安全地执行此操作。尝试将需要安全的应用程序部分移动到中央计算机(例如Web服务)。这样,没有人可以将调试工具附加到该逻辑或进行内存转储。这是保护您的应用程序的唯一方法。

答案 1 :(得分:0)

您可以使用SecureString存储敏感信息,但仅限于内存中。并避免内存转储。

您可以加密文件,以避免在文件系统中看到敏感信息。

您无法避免文件删除,您可以在应用程序的生命周期内锁定文件,但这不是防弹