我目前正在尝试开发客户端-服务器结构,客户端位于.NET 中,服务器是基于 PHP 的 SOAP 服务器。
现在,我正在尝试使用 Rijndael 256 和一些摆弄来实现一个非对称密钥系统。我了解公钥/私钥对的基本概念(根据此页面和维基百科),但是我无法理解它在任何客户端环境中的安全性。
简而言之,该软件将在客户端机器上运行,因此用户将有能力篡改该软件。大多数客户端的功能都围绕从服务器接收到的响应,以显示报告和详细信息。除此之外,客户端软件有时会等待来自服务器的命令,服务器将告诉客户端显示弹出窗口或执行客户端程序关闭(与许可有关)。我意识到服务器可能崩溃或挂起,或者客户端断开连接。其中大部分都在代码中进行了考虑和处理。但我担心的是有人篡改客户端,使其完全忽略服务器的命令。
客户将可以使用各种“玩具”,例如 IDA、ILDASM、de4dot 和各种其他调试器和/或反编译器,我相当肯定有经验的破解者将能够在短时间内找出公钥/私钥组合一段的时间。我知道 .NET 代码本身是非常不安全的,但我不确定除了使用 .NET Reactor 和 Dotfuscator 等工具之外该怎么做。
我的问题:我可以使用什么样的实践、代码、想法或任何东西来严重延迟所说的破解者,或者更确切地说,我如何不惜一切代价保护私钥。
非常感谢任何提示、提示、建议或示例!