我编写了一个 C# WPF 应用程序,它使用标准的 .Net SignedXml 类对许可证 xml 文件进行签名。我能够将公钥和私钥提取为 xml 字符串。我可以安全地将我的私钥藏在本地用于签名应用程序,但是远程签名检查应用程序(库)中所需的公钥呢?考虑的选项:
- KeyContainer:不好,因为签名和检查发生在两个不同的环境中
- 硬编码:在我的检查库中将公钥硬编码为 xml 字符串。我知道公钥不是秘密的,但是如何防止黑客用自己的密钥替换密钥?我可以签署图书馆,但随后他们可以使用图书馆篡改应用程序....