安全DSA签名

时间:2012-05-15 02:38:50

标签: c# .net code-signing

有人可以放下我的想法,看看这个设置是否会验证文件来自我。 关于这是多么安全的想法将是伟大的和任何潜在的攻击向量。

  1. 使用DSACryptoServiceProvider创建公钥和私钥。
  2. 将公钥添加为应用程序资源
  3. 创建更新
  4. 使用私钥获取更新的dsa哈希
  5. 发送哈希并更新到应用程序(假设这些可以截取/更改)
  6. 使用公钥验证哈希是否正确。
  7. 如果已验证,则应用更新
  8. 更新是一个exe并将被执行,所以我想确保如果有人替换或篡改它就不会执行。

    编辑:更新了第6点,因为公钥实际上并不生成哈希,只是验证它。我认为正是这部分我正在为安全问题而苦苦挣扎。

1 个答案:

答案 0 :(得分:1)

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

这里有理论,但我建议对第6步进行一些小修改:具体说明你要使用的确切公钥。如果某些攻击者可以在应用程序资源中切换密钥,他可以发送一个更改的包,其中包含另一个私钥的正确哈希。由于攻击者已经修改了您的软件,因此这可能只是一个小问题。但是,如果他只能替换应用程序资源,那么他就没有别的能力让你的应用程序使用他的恶意代码更新自己。