9

有人可以让我放心,看看这个设置是否会验证文件是否来自我。了解这是多么安全的想法以及任何潜在的攻击媒介都会很棒。

  1. 使用 DSACryptoServiceProvider 创建公钥和私钥。
  2. 添加公钥作为应用程序资源
  3. 创建更新
  4. 使用私钥获取更新的 dsa 哈希
  5. 向应用程序发送哈希和更新(假设这些可以被拦截/更改)
  6. 使用公钥验证哈希是否正确。
  7. 如果验证应用更新

更新是一个 exe,将被执行,所以我想确保如果有人替换或篡改它,它不会被执行。

编辑:更新第 6 点,因为公钥实际上并没有生成哈希,只是验证它。我认为这是我在安全方面苦苦挣扎的部分。

4

1 回答 1

1

你的方法看起来不错。剩下的问题是您的应用程序在客户端上的安全性如何。有人可能篡改可执行文件吗?也许在应用程序资源中切换公钥?

这里是理论上的,但我建议对第 6 步进行小修改:具体说明您要使用哪个确切的公钥。如果某个攻击者可以切换应用程序资源中的密钥,他可以发送一个更改过的包,其中包含另一个私钥的正确散列。这可能只是一个小问题,因为攻击者已经修改了您的软件。但是,如果他只能替换应用程序资源而没有其他功能,那么他将能够让您的应用程序使用他的恶意代码进行自我更新。

于 2012-11-22T16:01:42.260 回答