我正在构建一个连接到Web服务器并通过基于套接字的API进行通信的桌面应用程序。我想确保我只与我的应用程序通话,而不是任何第三方黑客。通信通过https进行加密。另外,私钥/公钥对用于认证。基本上,时间,私有密钥和公钥都被散列在一起,并使用当前时间和公钥发送到服务器。验证连接客户端是否正确应用
我担心如果其他人对应用程序进行逆向工程,他们会发现散列函数,连接url和私钥,因为通常字符串以明文形式存储在编译的应用程序中。
我有两个想法,以减轻这一点:
- 创建生成利用一系列的数学运算
- 创建一个复杂的(长)的秘密,然后采取一些模应用程序特定的私有密钥的功能将该秘密发送给服务器(如Diffie-Hellman密钥交换算法)。
我在正确的轨道上吗?我如何保密密钥?
可能重复的[如何隐藏二进制代码中的字符串?](http://stackoverflow.com/questions/1356896/how-to-hide-a-string-in-binary-code) –
如果客户端私钥遭到破坏,防止模仿的做法并不多。无论如何,你不应该信任客户的输入。 – imreal