在一個應用程序中,我有一個網絡服務器和客戶端。 握手後,讓我們說客戶發送"userId sessionId SOME_COMMAND param param param"
。幫助設計一個安全的網絡協議
我已經確定了客戶端,並且相應地在服務器上檢查了sessionId,因此身份不再是問題。
但我想阻止黑客修改郵件或創建一個錯誤的郵件,例如發送"userId sessionId SOME_COMMAND paramModified paramModified paramModified"
。
我想過使用一對私人/公共加密密鑰,並在消息本身發送消息的散列。但是由於它在客戶端程序中是自動的,我可能不得不在握手期間發送公鑰。所以黑客可以簡單地檢索它並生成正確的散列。
我也可以使用複雜的加密種子或算法,但是我對黑客的經驗告訴我他們會反編譯任何東西。
所以底線是:我可以隱藏在服務器上運行的所有東西,但是我無法在客戶端程序上隱藏任何東西。我想禁止修改客戶端程序應該發送的消息。
我甚至不知道它是否可能。我接受任何建議。順便說一下,我使用Java,但它不應該非常相關。謝謝。