Zabezpieczanie połączenia UDP

Dla osobistego projektu gry MMO wdrażam w java niezawodny protokół oparty na UDP. Biorąc pod uwagę moją obecną konfigurację, wierzę, że porywacz może stosunkowo łatwo przejąć sesję, więc aby temu zapobiec, wykorzystuję okazję, aby nauczyć się trochę kryptologii. To bardzo interesujące.

Mogę pomyślnie utworzyć współdzielony tajny klucz między klientem a serwerem za pomocą aWymiana kluczy Diffie-Hellmana (bardzo sprytna koncepcja), ale teraz muszę to wykorzystać, aby zagwarantować autentyczność pakietów. Jak dotąd moje wstępne testy pokazały, że kilka różnych szyfrów, które próbowałem, trochę zwiększyło ilość danych, ale chciałbym zachować wszystko tak małe i szybkie, jak to możliwe.

Biorąc pod uwagę, że próbuję tylko uwierzytelnić pakiet i nie ukrywać całego ładunku, mam pomysł, że mogę umieścić 8-bajtowy identyfikator sesji wygenerowany z tajnego klucza w nagłówku pakietu, zaszyfrować cały pakiet i ponownie go skrócić do 8 bajtów. Biorę niezaszyfrowany pakiet i umieszczam 8-bajtowy skrót w miejscu identyfikatora sesji, a następnie wysyłam go.

Czy byłoby to bezpieczne? Trochę nieeleganckie jest szyfrowanie całego pakietu tylko po to, aby wysłać go w postaci niezaszyfrowanej - czy istnieje lepszy / szybszy sposób na osiągnięcie mojego celu? Proszę zauważyć, że chciałbym to zrobić sam, ponieważ jest to dobre doświadczenie, więc nie interesują mnie biblioteki innych firm ani inne opcje protokołów.

questionAnswers(1)

yourAnswerToTheQuestion