安全DSA签名

Oli*_*Oli 9 .net c# code-signing

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

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

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

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

Joh*_*ber 1

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

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