我正在構建一個連接到Web服務器並通過基於套接字的API進行通信的桌面應用程序。我想確保我只與我的應用程序通話,而不是任何第三方黑客。通信通過https進行加密。另外,私鑰/公鑰對用於認證。基本上,時間,私有密鑰和公鑰都被散列在一起,並使用當前時間和公鑰發送到服務器。驗證連接客戶端是否正確應用
我擔心如果其他人對應用程序進行逆向工程,他們會發現散列函數,連接url和私鑰,因爲通常字符串以明文形式存儲在編譯的應用程序中。
我有兩個想法,以減輕這一點:
- 創建生成利用一系列的數學運算
- 創建一個複雜的(長)的祕密,然後採取一些模應用程序特定的私有密鑰的功能將該祕密發送給服務器(如Diffie-Hellman密鑰交換算法)。
我在正確的軌道上嗎?我如何保密密鑰?
可能重複的[如何隱藏二進制代碼中的字符串?](http://stackoverflow.com/questions/1356896/how-to-hide-a-string-in-binary-code) –
如果客戶端私鑰遭到破壞,防止模仿的做法並不多。無論如何,你不應該信任客戶的輸入。 – imreal