Streszczenie:
Praca „Aplikacja do wymiany zaszyfrowanych wiadomości tekstowych” omawia temat dotyczący bezpieczeństwa wysyłanych wiadomości pomiędzy użytkownikami połączonymi za pomocą protokołu WebSocket. Od kliku lat możemy zaobserwować wzrostowy trend na zapewnienie większej poufności podczas wymiany informacji. Naturalnym argumentem, pojawiającym się podczas rozważań na ten temat jest chęć zapewnienia naszym informacjom odpowiedniego poziomu bezpieczeństwa przed nieautoryzowanym odczytem przez osoby trzecie. Dodatkowo coraz częściej publiczne instytucje wymagają od autorów aplikacji udzielenia takiej gwarancji użytkownikom korzystającym z ich usług poprzez różne regulacje prawne. Doskonałym przykładem jest uchwalone w 2018 roku rozporządzenie o ochronie danych osobowych (RODO), które obowiązuje w całej Europie. Celem poniższej pracy inżynierskiej było zaprojektowanie software’u do wymiany zaszyfrowanych komunikatów, zapewniając użytkownikom, biorącym udział w dyskusji ochronę przesyłanych informacji przed przeglądaniem ich przez inne nieupoważnione osoby. W pierwszej części pracy omawiane są ogólne kwestie techniczne dotyczące kryptografii, jej rodzajów oraz wykorzystywanych algorytmów do zapewnienia poufności danych. Znajdziemy tutaj opisy oraz diagramy przedstawiające sposób ich działania. W części drugiej znajduje się opis użytych technologii do wytworzenia oprogramowania. W rozdziale trzecim przedstawiony został sposób implementacji poszczególnych elementów mojego oprogramowania wytworzonego na potrzeby tej pracy. Na samym końcu umieszony został rozdział poświęcony podsumowaniu, w którym znajdziemy moje przemyślenia i odczucia towarzyszące mi podczas pisania. W ramach pracy zaimplementowane zostały dwie aplikacje. Pierwsza z nich została napisana w języku Java przy wykorzystaniu frameworku Spring Boot, zapewniając między innymi trwałość danych oraz podstawowe bezpieczeństwo aplikacji poprzez uwierzytelnienie i autoryzację użytkowników. Natomiast druga - wykorzystując bibliotekę React.js, dostarcza funkcjonalność szyfrowania oraz deszyfrowania przesyłanych komunikatów. Zapewnia ona również przejrzysty interfejs graficzny dla klientów końcowych.