加密可在其他计算机上使用的文件的安全方法

时间:2012-12-31 06:53:47

标签: c# visual-studio-2010 security encryption hash

让我们说我的程序是反病毒。 让我们说我有一个名为“Signatures.dat”的文件。它包含要扫描的病毒列表。 我希望以一种可以在任何计算机上通过防病毒方式打开我的文件加密该文件,但用户将无法看到该文件的内容。

我将如何完成这项任务?

我正在研究像DPAPI这样的问题,但我认为这不适用于我的情况,因为它基于用户的设置。我需要我的解决方案是普遍的。

我有一种方法来加密它,但后来我不知道如何存储密钥。 我知道将它存储在我的代码中真的是不安全的,所以我真的不知道该做什么。

2 个答案:

答案 0 :(得分:5)

您希望用户的计算机能够读取该文件,并且您希望用户的计算机无法读取该文件。如你所见,这是一个矛盾,它无法解决。

您实施的内容基本上是DRM方案。没有使用TPM(不,这在现实中不起作用,甚至不考虑它),你只是无法使其安全。您可以使用模糊处理来尽可能地对其进行反向工程并检索密钥。您可以将密钥的一部分存储在服务器上并在线检索(基本上做EA对他们的游戏所做的操作)等等,但您可能只会使您的产品难以用于合法用户,以及任何真正<的人/ em>希望仍能获得密钥,从而获得文件。

答案 1 :(得分:0)

在您的示例中,您是要尝试验证文件的完整性(以确保它未被修改),还是隐藏内容?

如果你试图隐藏内容,那么最终你已经说过了。

如果要验证文件未被修改,则可以通过哈希来执行此操作。您似乎并没有混淆这两个用例,但有时人们会假设您使用加密来确保文件没有被篡改。

你最好的选择可能是使用这两种方法 - 加密文件以阻止随意的浏览器,但要知道这并不会真正阻止任何人有足够的时间。然后使用您的服务器验证文件的哈希值(使用https,并确保验证证书指纹)。即使有人破解了您的加密,这也将确保文件未被修改。