Steganografia TCP, czyli jak ukryć przesył danych w Internecie

Steganografia TCP, czyli jak ukryć przesył danych w Internecie

Polscy badacze zaproponowali nowy sposób sieciowej steganografii, oparty na specyfice działania powszechnie używanego protokołu transportowego TCP. Autorzy pracy uważają, że ich schemat może być stosowany do przesyłania ukrytych wiadomości w krajach totalitarnych, które wprowadzają surową cenzurę internetową. Spróbujmy zrozumieć, na czym właściwie polega to innowacyjne podejście i jak bardzo jest ono rzeczywiście przydatne.

Na początku należy określić, czym jest steganografia. Otóż, steganografia to nauka o ukrytej transmisji wiadomości. Innymi słowy, korzystając z jej metod, strony starają się ukryć sam fakt transmisji. W tym właśnie tkwi różnica między tą nauką a kryptografią, która stara się uczyć, aby treść wiadomości była niedostępna do odczytu. Warto zauważyć, że profesjonalna społeczność kryptografów dość pogardliwie odnosi się do steganografii z uwagi na bliskość jej ideologii do zasady "Security through obscurity" (nie wiem, jak to dokładnie brzmi po polsku, coś w rodzaju "Bezpieczeństwo przez nieznajomość"). Tę zasadę stosuje na przykład firma Skype Inc. — kod źródłowy popularnej aplikacji do rozmów jest zamknięty, a nikt tak naprawdę nie wie, jak dokładnie odbywa się szyfrowanie danych. Niedawno, zresztą, o tym ubolewał w NSA znany specjalista Bruce Schneier napisał na swoim blogu.

Wracając do steganografii, odpowiedzmy na pytanie, po co jest ona w ogóle potrzebna, skoro mamy kryptografię. Rzeczywiście, można zaszyfrować wiadomość przy użyciu nowoczesnego algorytmu i odpowiednio długiego klucza, a nikt nie będzie mógł jej odczytać, jeśli tylko nie zechcecie. Niemniej jednak czasami może być bardziej korzystne ukryć sam fakt tajnej transmisji. Na przykład, jeśli odpowiednie służby przechwyciły waszą zaszyfrowaną wiadomość, nie potrafią jej odszyfrować, ale bardzo chcą, więc w końcu pojawiają się metody wywierania wpływu i zdobywania informacji, które nie wymagają komputerów. Brzmi to dystopijnie, ale chyba się zgodzicie, że jest to w zasadzie możliwe. Dlatego lepiej byłoby tak zorganizować, aby osoby nieuprawnione w ogóle nie wiedziały, że transmisja miała miejsce. Polscy badacze właśnie zaproponowali taką metodę. Co więcej, chcą to zrobić przy użyciu protokołu, którego każdy użytkownik internetu używa tysiąc razy dziennie.

Tut zbliżamy się do protokołu Transmission Control Protocol (TCP). Wyjaśnianie wszystkich jego szczegółów mija się z celem – jest długie, nudne, a ci, którzy potrzebują, już to wiedzą. W skrócie można powiedzieć, że TCP to protokół warstwy transportowej (tzn. działa „nad” IP i „pod” protokołami warstwy aplikacji, takimi jak HTTP, FTP czy SMTP), który zapewnia niezawodną dostawę danych od nadawcy do odbiorcy. Niezawodna dostawa oznacza, że jeśli jakiś pakiet zaginie lub dotrze z błędami, to TCP zatroszczy się o to, aby wysłać ten pakiet ponownie. Zauważmy, że przez zmiany w pakiecie nie mamy na myśli umyślnego zniekształcenia danych, lecz błędy w transmisji, które powstają na poziomie fizycznym. Na przykład, podczas przesyłania pakietu przez miedziane przewody, kilka bitów mogło zmienić swoje wartości na przeciwne lub po prostu zaginęły w hałasie (przy okazji dla Ethernet wartość Bit Error Rate zazwyczaj przyjmuje się na poziomie około 10-8). Utrata pakietów w drodze jest również stosunkowo częstym zjawiskiem w internecie. Może to być spowodowane na przykład przeciążeniem routerów, co prowadzi do przepełnienia buforów i w efekcie odrzutu wszystkich nowo przybyłych pakietów. Zazwyczaj odsetek utraconych pakietów wynosi około 0,1%, a przy dwóch procentach TCP przestaje działać poprawnie – dla użytkownika wszystko działa strasznie wolno.

Widzimy zatem, że retransmisja pakietów to zjawisko dość powszechne i w zasadzie potrzebne w TCP. Dlaczego więc nie wykorzystać go do celów steganografii, skoro TCP, jak już wspomniano, jest powszechnie używane (według różnych szacunków, obecnie udział TCP w internecie wynosi 80-95%)? Istota proponowanej metody polega na tym, aby w przesyłanej wiadomości wysyłać nie to, co znajdowało się w pierwotnym pakiecie, lecz dane, które próbujemy ukryć. Przykryć taką zamianę nie jest łatwo. Trzeba wiedzieć, gdzie szukać – liczba jednoczesnych połączeń TCP przechodzących przez dostawcę jest po prostu ogromna. Jeśli zna się przybliżony poziom retransmisji w sieci, można dostosować mechanizm steganograficznego przesyłania w taki sposób, że twoje połączenie nie będzie się różnić od innych.

Oczywiście, ta metoda nie jest wolna od niedociągnięć. Na przykład, z praktycznego punktu widzenia, jej wdrożenie nie będzie takie proste — będzie to wymagało zmiany stosu sieciowego w systemach operacyjnych, chociaż samo w sobie nie jest to szczególnie skomplikowane. Ponadto, przy wystarczającej ilości zasobów, można nadal wykryć „ukryte” pakiety, co wymaga przeglądania i analizowania każdego pakietu w sieci. Jednak w praktyce jest to zazwyczaj niemożliwe, dlatego zwykle szuka się pakietów i połączeń wyróżniających się w jakiś sposób, a zaproponowana metoda właśnie sprawia, że połączenie jest niczym szczególnym. Nikt też nie zabrania ci szyfrowania poufnych danych na wszelki wypadek. Przy tym samo połączenie może pozostać nieszyfrowane, aby wzbudzać mniej podejrzeń.

Autorzy pracy (notabene, dla zainteresowanych, oto ona) na poziomie symulacji wykazali, że zaproponowana metoda działa zgodnie z zamierzeniami. Być może w przyszłości ktoś zajmie się realizacją ich pomysłu w praktyce. I wtedy, miejmy nadzieję, w Internecie będzie nieco mniej cenzury.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster