安全的非对称密钥实现客户端

时间:2013-06-11 11:23:08

标签: c# encryption public-key-encryption decompiling code-security

我目前正在尝试开发客户端 - 服务器结构,客户端在.NET中,服务器是基于PHP的SOAP服务器。

现在,我正在尝试使用Rijndael 256实现一个非对称密钥系统,而且还有一些小问题。我理解公钥/私钥对的基本概念(根据this page和维基百科),但我无法理解它在任何客户端环境中都是安全的。

简而言之,该软件将在客户端计算机上运行,​​因此用户将能够篡改该软件。大多数客户端的功能都围绕从服务器接收的响应来显示报告和细节。除此之外,客户端软件偶尔会等待来自服务器的命令,服务器将告诉客户端显示弹出窗口或执行客户端程序关闭(与许可有关)。我意识到服务器可能崩溃或挂起,或者客户端断开连接。大部分内容都已经过代码处理和处理。但我担心的是有人篡改了客户端,因此它完全忽略了服务器的命令。

客户可以访问各种各样的“玩具”,例如IDA,ILDASM,de4dot以及各种其他调试器和/或反编译器。我相当确定一个经验丰富的破解者将能够找出公钥/私钥组合在很短的时间内。我知道.NET代码本身是非常不安全的,但是我不知道如何使用.NET Reactor& Dotfuscator等。

我的问题:我可以使用什么样的做法,代码,想法或任何东西来严重延迟破解者,或者更确切地说,我如何不惜一切代价保护私钥。

非常感谢任何提示,提示,建议或样品!

1 个答案:

答案 0 :(得分:1)

正如@Corak所说,公钥/私钥对通常通过保密私钥来工作。在客户端,您可以在每次连接时生成新的公钥/私钥对。最容易隐藏的数据是首先没有保存的数据。

问题的另一部分是"如何阻止饼干!"这是不可能的,因为最终用户可以完全控制机器。您可以尝试在内存中混淆私钥,将其保留在交换文件之外等等,但是任何有合适工具并希望破解程序的破解者都会这样做。

除非<!/ em>的

您可以与领先的硬件供应商合作。让他们在所有硬件上安装一个超级安全的芯片,这个芯片将在你的控件下,而不是用户的控件。激活后,该芯片将监控所有I / O和内存,并仅允许您决定允许的内容。然后你可以简单地禁止像IDA这样的程序,使得破解者无助!作为副作用,您还可以完全控制用户的计算机,并且可以随意使用该功能。每个人都赢了!

最后一点:如果你决定实施这个,我建议你的营销部门对它进行大量的调整。可能会有一堆混蛋抱怨&#34;隐私&#34;和&#34;所有权&#34;和那样的废话。所以你需要这个技术的好名字;该名称必须声音,就像人们想要的

我认为你应该称它为“值得信赖的计算机”#34; (自"trusted computing" is already taken)。或者也许是"secure computing"