В приложении у меня есть сетевой сервер и клиенты.
Допустим, после рукопожатия клиент отправляет "userId sessionId SOME_COMMAND param param param"
.
Я уже идентифицировал клиента, и sessionId соответствующим образом проверяется на сервере, поэтому идентификация больше не является проблемой.
Но я бы хотел запретить хакеру модифицировать сообщение или создать ложное, например, отправив "userId sessionId SOME_COMMAND paramModified paramModified paramModified"
.
Я подумал об использовании пары закрытых / открытых ключей шифрования и отправил хеш сообщения в самом сообщении. Но так как это автоматизировано в клиентской программе, мне может потребоваться отправить открытый ключ во время рукопожатия Таким образом, хакер может просто получить его и сгенерировать правильный хеш.
Я также мог бы использовать сложные семена шифрования или алгоритмы, но мой опыт работы с хакерами показал мне, что они будут декомпилировать что угодно.
Итак, суть в том, что я могу скрыть все, что работает на сервере, но не могу ничего скрыть в клиентской программе. И я хотел бы запретить модифицировать сообщение, которое должна отправлять клиентская программа.
Я даже не знаю, возможно ли это. И я открыт для любых предложений. И, кстати, я использую Java, хотя это не должно быть очень актуально. Спасибо.