Steganografia TCP, czyli jak ukryć transmisję danych w Internecie

Steganografia TCP, czyli jak ukryć transmisję danych w Internecie

Polscy badacze zaproponowali nową metodę steganografii sieci, opartą na cechach operacyjnych szeroko stosowanego protokołu warstwy transportowej TCP. Autorzy pracy uważają, że ich schemat można wykorzystać np. do wysyłania ukrytych wiadomości w krajach totalitarnych, które narzucają ścisłą cenzurę Internetu. Spróbujmy dowiedzieć się, czym właściwie jest ta innowacja i jak naprawdę jest użyteczna.

Na początek należy zdefiniować, czym jest steganografia. Zatem steganografia jest nauką o przekazywaniu ukrytych wiadomości. Oznacza to, że korzystając z jej metod, strony próbują się ukryć sam fakt przeniesienia. Na tym polega różnica między tą nauką a kryptografią, której próbuje sprawić, że treść wiadomości będzie nieczytelna. Warto zauważyć, że środowisko zawodowe kryptografów dość pogardliwie podchodzi do steganografii ze względu na bliskość swojej ideologii z zasadą „Bezpieczeństwo przez ciemność” (nie wiem, jak to poprawnie brzmi po rosyjsku, coś w stylu „Bezpieczeństwo przez ignorancję” ”). Zasadę tę stosuje na przykład firma Skype Inc. — kod źródłowy popularnego dialera jest zamknięty i nikt tak naprawdę nie wie, w jaki sposób dane są szyfrowane. Nawiasem mówiąc, ostatnio NSA skarżyła się na to, jak zauważył słynny specjalista Bruce Schneier napisał na moim blogu.

Wracając do steganografii, odpowiemy na pytanie: po co w ogóle jest ona potrzebna, skoro istnieje kryptografia? Rzeczywiście, możesz zaszyfrować wiadomość za pomocą jakiegoś nowoczesnego algorytmu i jeśli użyjesz wystarczająco długiego klucza, nikt nie będzie mógł odczytać tej wiadomości, chyba że będziesz tego chciał. Czasami jednak bardziej przydatne jest ukrycie samego faktu tajnego przelewu. Na przykład, jeśli odpowiednie władze przechwyciły Twoją zaszyfrowaną wiadomość i nie mogą jej odszyfrować, ale naprawdę chcą, to przecież istnieją inne niż komputerowe metody wpływania i uzyskiwania informacji. Brzmi to dystopijnie, ale, jak widać, jest to w zasadzie możliwe. Dlatego lepiej byłoby upewnić się, że ci, którzy nie powinni w ogóle wiedzieć, że doszło do przeniesienia. Polscy badacze zaproponowali właśnie taką metodę. Co więcej, proponują to zrobić za pomocą protokołu, z którego każdy użytkownik Internetu korzysta tysiąc razy dziennie.

Tutaj zbliżamy się do protokołu kontroli transmisji (TCP). Wyjaśnianie wszystkich jego szczegółów oczywiście nie ma sensu - jest długie, nudne, a ci, którzy tego potrzebują, już to wiedzą. W skrócie można powiedzieć, że TCP jest protokołem warstwy transportowej (tzn. działa „nad” IP i „pod” protokołami warstwy aplikacji, takimi jak HTTP, FTP czy SMTP), który zapewnia niezawodne dostarczanie danych od nadawcy do odbiorca. Niezawodne dostarczanie oznacza, że ​​jeśli pakiet zostanie zgubiony lub otrzyma zmodyfikowany, protokół TCP zajmie się jego przesłaniem dalej. Należy pamiętać, że zmiany w pakiecie nie oznaczają tutaj celowego zniekształcenia danych, ale błędy transmisji występujące na poziomie fizycznym. Na przykład, gdy pakiet płynął miedzianymi przewodami, kilka bitów zmieniło swoją wartość na przeciwną lub zostało całkowicie zagubionych w szumie (nawiasem mówiąc, dla Ethernetu wartość Bit Error Rate zwykle przyjmuje się na poziomie około 10-8 ). Utrata pakietów podczas przesyłania jest również stosunkowo częstym zjawiskiem w Internecie. Może do tego dojść na przykład na skutek obciążenia routerów, co prowadzi do przepełnienia bufora i w efekcie odrzucania wszystkich nowo przychodzących pakietów. Zazwyczaj odsetek utraconych pakietów wynosi około 0.1%, a przy wartości kilku procent TCP przestaje normalnie działać - dla użytkownika wszystko będzie strasznie powolne.

Widzimy zatem, że przekazywanie (retransmisja) pakietów jest częstym zjawiskiem w przypadku protokołu TCP i ogólnie konieczne. Dlaczego więc nie wykorzystać go na potrzeby steganografii, biorąc pod uwagę, że TCP, jak wspomniano powyżej, jest używany wszędzie (według różnych szacunków, dziś udział TCP w Internecie sięga 80-95%). Istotą proponowanej metody jest przesłanie w przesyłanym komunikacie nie tego, co znajdowało się w pakiecie pierwotnym, ale tych danych, które staramy się ukryć. Jednak wykrycie takiej podstawienia nie jest takie proste. W końcu musisz wiedzieć, gdzie szukać - liczba jednoczesnych połączeń TCP przechodzących przez dostawcę jest po prostu ogromna. Jeśli znasz przybliżony poziom retransmisji w sieci, możesz dostosować mechanizm przekazywania steganograficznego tak, aby Twoje połączenie nie różniło się od innych.

Oczywiście metoda ta nie jest wolna od wad. Na przykład z praktycznego punktu widzenia wdrożenie tego nie będzie takie proste - będzie wymagało zmiany stosu sieciowego w systemach operacyjnych, choć nie ma w tym nic przesadnie trudnego. Ponadto, jeśli masz wystarczające zasoby, nadal możliwe jest wykrycie „tajnych” pakietów poprzez przeglądanie i analizowanie każdego pakietu w sieci. Ale z reguły jest to praktycznie niemożliwe, dlatego zazwyczaj szukają pakietów i połączeń, które w jakiś sposób się wyróżniają, a proponowana metoda właśnie sprawia, że ​​​​twoje połączenie nie wyróżnia się niczym. I nikt nie zabrania Ci szyfrowania tajnych danych, na wszelki wypadek. Jednocześnie samo połączenie może pozostać niezaszyfrowane, aby wzbudzić mniejsze podejrzenia.

Autorzy pracy (swoją drogą, dla zainteresowanych, tutaj ona) wykazała na poziomie symulacji, że proponowana metoda działa zgodnie z zamierzeniami. Być może w przyszłości ktoś wdroży swój pomysł w praktyce. A wtedy, miejmy nadzieję, w Internecie będzie trochę mniej cenzury.

Źródło: www.habr.com

Dodaj komentarz