这是我们的故事:我们正在开发一些软件(用 C#/.NET 编写)并且我们已经使用强名称对程序集进行签名,我在 Visual Studio 中使用受密码保护的 pfx 文件执行此操作。
作为一个附加的安全步骤,我想用 Authenticode 对程序集或至少是可执行文件进行签名。
问题是:我们部署的目标将无法访问互联网,我们目前也无法获得自己的 CA 验证证书。我们在部署阶段完全控制了部署目标,我们选择硬件,安装操作系统等,但是一旦我们的产品(因此是硬件和软件的组合)“存在”,我们希望提供尽可能多的安全保障。
我们当然明白,我们无法控制它在野外发生的事情,但我们也采取了措施,能够查看硬件是否被篡改。如果有,我们知道我们不能信任该软件并且我们不会查看它。
回到我们的主要问题:创建我们自己的“假”(不可验证)证书来签署程序集是否有意义?我们是否需要将这些证书放入 Windows 商店?我试图保护我们的可执行文件不被其他可执行文件替换,比如通过 USB 闪存驱动器或类似的东西。
处理这个问题的最佳方法是什么?提前致谢。