Mam odległe (2 lata temu) doświadczenie w hakowaniu, najtwardsze pakiety, jakie kiedykolwiek złamałem (i to, co sugeruję, że używasz), używa symetrycznej metody szyfrowania klucza, którą w skrócie opisał Jonathan Dickinson. Powinieneś używać TCP + TLS, jak również wspomniał. Powiedział jednak sekwencję przeciwną.
Wpadłem w czasy, kiedy programista „odporny na włamanie” system był łatwo sfałszowany, ponieważ mają wystarczająco dziwny system liczenia, że mógłbym go złamać bez wiedzy programistycznej i logiki algebraicznej z pierwszego roku. Tak długo, jak wybierzesz odpowiednią metodę sekwencyjną, twój cel powinien otrzymywać dane dokładnie zgodnie z oczekiwaniami, co oznacza również, że powinieneś używać TCP do najbezpieczniejszych operacji.
Wracając do „moich doświadczeń”, jeden system, który znalazłem, działa fantastycznie. Metoda sekwencyjna oparta na wysyłanym czasie i oczekiwanym czasie. Ponieważ pakiety muszą zawsze być odbierane w odpowiedniej kolejności, sfałszowanie pakietu było prawie niemożliwe, ponieważ nigdy nie mogłem przewidzieć, kiedy pakiet zostanie wysłany i kiedy jest oczekiwany (między jednym pakietem a drugim) bez uprzedniego włamania się do programu klienckiego.
Krótka odpowiedź
W skrócie: Każda struktura pakietu będzie miała także znacznik czasu, tak jak wtedy, gdy był wysyłany do milisekundy. To cholernie proste i bardzo łatwo jest sprawdzić, czy czas jest przed / po innym czasie. Powodem, dla którego ma to tak dobry sens, jest to, że serwer może nadal odbierać pakiety w celu sfałszowania, bez czasu na uwierzytelnienie.
To oczywiście nie jest jedyna metoda sekwencyjna ani nawet najlepsza z dowolnej metody. Odkryłem, że działa bardzo dobrze. W połączeniu z TCP + TLS nie powinieneś mieć zbyt wielu problemów.