У меня есть давний (2 года назад) опыт взлома, самые сложные из когда-либо взломанных пакетов (и то, что я предлагаю вам использовать) - это использование метода шифрования с симметричным ключом, который Джонатан Дикинсон кратко описал. Вы должны использовать TCP + TLS, как он также упомянул. Однако он сказал встречную последовательность.
Я сталкивался со временами, когда программисты «взламывали» систему, которая была легко подделана, потому что у них была достаточно странная система подсчета, которую я мог взломать без знания программирования и алгебраической логики первого года. Пока вы выбираете правильный последовательный метод, ваша цель должна получать данные точно так, как ожидается, а также означает, что вы должны использовать TCP для наиболее безопасных операций.
Вернувшись на путь "в моем опыте", одна система, которую я нашел, работает фантастически. Последовательный метод, основанный на отправленном времени и ожидаемом времени. Поскольку пакеты всегда должны приниматься в правильном порядке, подделать пакет было практически невозможно, поскольку я никогда не мог предсказать, когда пакет будет отправлен и когда он ожидается (между одним пакетом и другим), без предварительного взлома клиентской программы.
Краткий ответ
Вкратце: каждая структура пакета также будет иметь метку времени, как при отправке до миллисекунды. Это чертовски просто, и действительно легко проверить, является ли время до / после другого времени. Причина, по которой это имеет смысл, заключается в том, что сервер все еще может принимать пакеты в порядке с подменой, без времени для аутентификации.
Это, очевидно, не единственный последовательный метод или даже лучший из всех методов. Я обнаружил, что это очень хорошо работает. В сочетании с TCP + TLS у вас не должно быть слишком много проблем.