0

可以说我的程序是防病毒程序。还可以说我有一个名为“Signatures.dat”的文件。它包含要扫描的病毒列表。我想加密该文件,使其可以通过任何计算机上的防病毒软件打开,但用户无法看到该文件的内容。

我将如何完成这项任务?

我在看像 DPAPI 这样的东西,但我认为这在我的情况下不起作用,因为它基于用户的设置。我需要我的解决方案是通用的。

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

4

2 回答 2

5

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

您正在实施的基本上是一个 DRM 方案。如果不使用 TPM(不,这在现实中不起作用,甚至不要考虑它),您根本无法使其安全。您可以使用混淆来尽可能难以对其进行逆向工程并检索密钥。您可以将部分密钥存储在服务器上并在线检索(基本上就像 EA 对他们的游戏所做的那样)等,但您可能只会让您的产品难以为合法用户使用,而任何真正想要的人仍然会能够获得密钥,从而获得文件。

于 2012-12-31T07:00:31.160 回答
0

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

如果您试图隐藏内容,那么正如最终所说的那样,您不能。

如果你想验证文件没有被修改,你可以通过哈希来做到这一点。您似乎没有混淆这两个用例,但有时人们认为您使用加密来确保文件没有被篡改。

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

于 2012-12-31T11:20:13.937 回答