Kiedy weźmiesz do ręki cebulę i zdejmiesz z niej jedną warstwę, pod spodem będzie kolejna warstwa, a pod nią kolejna. Co prawda każda kolejna warstwa prawdziwej cebuli jest coraz mniejsza i mniejsza, ale ta cebula, o której opowiemy w tym odcinku jest inna. Każda kolejna warstwa wygląda identycznie i jest takich samych rozmiarów, a w środku, pod tymi wszystkimi warstwami, które zdejmie jedynie specjalny klucz, znajduje się wiadomość. Ile warstw muszę zdjąć, żeby odczytać wiadomość? To wie tylko autor wiadomości.
Trasowanie cebulowe zostało po raz pierwszy zaimplementowane w latach 90-tych ubiegłego stulecia w Laboratorium Badawczym Marynarki Wojennej Stanów Zjednoczonych. Jego autorzy Paul Syverson, Michael G. Reed oraz David Goldschlag mieli na celu opracowanie protokołu sieciowego, który zapewni silną ochronę komunikacji wywiadu USA. Projekt był dalej rozwijany przez Defense Advanced Research Projects Agency (w skrócie DARPA) i w 1998 roku protokół został opatentowany przez Marynarkę Wojenną Stanów Zjednoczonych. W 2002 roku informatycy Roger Dingledine i Nick Mathewson dołączyli do Paula Syversona i na podstawie istniejącej technologii stworzyli najbardziej znaną implementację trasowania cebulowego, zwaną najpierw projektem Onion Routing a następnie Tor. Laboratorium Badawcze Marynarki Wojennej po pewnym czasie udostępniło kod źródłowy Tor na wolnej licencji, po czym w 2006 roku Dingledine i Mathewson, wraz z pięcioma innymi osobami, założyli organizację non-profit The Tor Project. Dzisiaj protokół Tor (czyli w skrócie The Onion Router) jest dostępny za darmo wraz ze swoim kodem źródłowym. Jest również dostępna przeglądarka internetowa Tor Browser, która wykorzystuje protokół Tor, oraz zapewnia pewne dodatkowe funkcjonalności jeszcze bardziej utrudniające śledzenie użytkownika w Internecie.
Tor nie jest jedynym protokołem trasowania cebulowego, jednakże jest najpopularniejszym. Opowiadając o trasowaniu cebulowym w tym odcinku “IT Prostymi Słowami” ograniczę się tylko do Tora. Temat jest równie ciekawy ze względów technicznych, jak kontrowersyjny ze względów na to, jak można Tora używać. Jest to bowiem potężne narządzie, które w niepowołanych rękach może wyrządzić pewne szkody. Wrócę do tego tematu w drugiej części tego odcinka.
Załóżmy, że chcę się połączyć ze stroną google.com. W normalnych warunkach taka komunikacja będzie zachodziła przez różne urządzenia, ale obie jej strony będą wiedzieć całkiem sporo o tej drugiej stronie. Google będzie wiedzieć kto jest moim dostawcą Internetu, mój dostawca Internetu będzie wiedział, że korzystam z usług Google. Dostawca co prawda raczej nie dowie się w jaki sposób korzystam z tych usług. Cały proces łączenia ze stroną google.com będzie szybki, będzie zachodził najkrótszą drogą i będzie zabezpieczony szyfrowaniem dzięki certyfikatowi, który dostanę ze strony google.com. Jeśli jednak postanowię do tego procesu użyć protokołu Tor, będzie to wyglądać inaczej. Ani mój dostawca Internetu nie będzie wiedział, że używam google.com, ani korporacja Google nie będzie wiedzieć kim jestem, ani kto jest moim dostawcą Internetu jeśli nie dokonam jawnego logowania do ich usług. Dodatkowo nawet jeśli gdzieś na drodze komunikacji pomiędzy moim laptopem a google.com znajdzie się jakiś wścibski administrator albo haker, jedyne co będzie wiedział to to, że w tym konkretnym połączeniu ktoś używa Tor. Brzmi niewiarygodnie? Wyjaśnijmy mechanizm, który za tym stoi.
Tor to nie tylko sam protokół, ale i rozbudowana społeczność. Każdy może stać się częścią tej społeczności i udostępnić swoje łącze. Tak się też dzieje. Użytkownicy z całego świata wydzielają kawałek swoich zasobów, żeby rozbudować sieć Tor. W ten sposób ich komputery stają się tzw. “węzłami” sieci. Rozproszone po całym świecie węzły są w dużej mierze siłą Tora, ponieważ komunikacja przechodząca przez te węzły może być praktycznie co chwilę kompletnie różna co bardzo utrudnia namierzanie użytkowników tej sieci. Czasem próbując się połączyć z google.com połączenie przejdzie przez Włochy, Stany Zjednoczone i jeszcze RPA, żeby dopiero potem zostać skierowanym do serwerowni korporacji Google. Jednakże mogę postanowić, żeby utworzyć nowe połączenie i tym razem pośredniczyć będą w tym węzły powiedzmy w Niemczech, Kanadzie, USA, żeby ostatecznie skierować połączenie do google.com. Takie połączenie, w którym wykorzystujemy dodatkowe węzły nazywamy w terminologii Tora “obwodem” albo “łańcuchem”. Ponadto, węzły w obwodzie nie działają jak zwykłe routery, które jedynie przekazują pakiety do kolejnego adresu. Kiedy dokonuję nowego połączenia z siecią Tor, automatycznie zostają wygenerowane klucze kryptograficzne, za pomocą których dokonuję szyfrowania. Domyślnie Tor wymaga 3 pośredniczących węzłów, więc załóżmy, że tak też jest i w moim przypadku. Skoro wiem, że w połączeniu udział wezmą 3 węzły pośredniczące, używam trzech kluczy i trzy razy szyfruję wiadomość do google.com za ich pomocą, jednego po drugim. Wysyłam moją wiadomość do pierwszego węzła. Węzeł ten zna tylko jeden z moich kluczy, więc jest w stanie odszyfrować wiadomość. Możemy żargonowo powiedzieć, że zdejmuje pierwszą warstwę szyfru. Czyta tę wiadomość i zauważa, że nic nie jest w stanie z nią zrobić, bo jest nadal zaszyfrowana. Może ją jednak skierować do kolejnego węzła. Następny węzeł dokonuje ponownie tej samej operacji. Skoro zna klucz do drugiej warstwy, zdejmuje ją i znowu widzi, że nie ma dla niego żadnego sensu, bo wiadomość nadal jest zaszyfrowana. Kieruje zatem znowu wiadomość do kolejnego węzła. Trzeci już z kolei węzeł otrzymuje wiadomość, odszyfrowuje ją trzecim kluczem. Tym razem wiadomość jest już zrozumiałą i brzmi “połącz mnie z google.com”. Węzeł dokonuje połączenia i kiedy otrzyma odpowiedź, ponownie szyfruje ją swoim kluczem i przekazuje do węzła Tor, od którego wiadomość dostał wcześniej. Następny węzeł szyfruje wiadomość swoim kluczem i ogólnie cały proces zachodzi po prostu na odwrót. Ostatecznie, kiedy ja dostanę odpowiedź i będzie ona zaszyfrowana trzema kluczami, będę w stanie ją odczytać, ponieważ tylko ja posiadam je wszystkie. W całym tym procesie każdy węzeł zna tylko część obwodu. Czyli pierwszy węzeł wie tylko kim ja jestem i do kogo ma skierować wiadomość ode mnie płynącą, ale nie ma pojęcia o tym, co się znajduje w wiadomości. Nawet jeśli ją odszyfruje kluczem, który posiada, nadal pozostały dwie warstwy szyfru. Ostatni węzeł, czyli ten, który już skieruje połączenie do google.com faktycznie wie jaka strona jest odwiedzana, ale nie wie przez kogo. Wie tylko z którego węzła sam dostał takie żądanie. Ze względu na takie wielokrotne szyfrowanie oraz tworzenie obwodów nieraz przechodzących przez cały świat wytropienie konkretnego użytkownika w Internecie jest niezwykle trudnym zadaniem. Można oczywiście próbować podsłuchać ruch bezpośrednio na wyjściu z mojego laptopa i bezpośrednio między węzłem koncowym i google.com. Byłoby to dość karkołomne zadanie, gdyż węzły zawsze są dobierane losowo, ale rzeczywiście teoretycznie istnieje możliwość skorelowania tych dwóch połączeń i powiązania ich ze sobą. Trzeba jednak pamiętać, że węzły Tor nie obsługują tylko nas. Zachodzi między nimi dość duży ruch sieciowy i każdy kto taki ruch obserwuje jedyne co widzi to zaszyfrowane wiadomości. Ciężko jest powiedzieć który pakiet pochodzi od nas, ponieważ ginie w natłoku milionów pakietów na sekundę. Na dodatek nigdy nie wiadomo na jakim etapie jest dana wiadomość. Może być zaszyfrowana jeszcze tylko jedną warstwą a może być zaszyfrowana nawet kilkunastoma, jeśli użytkownik sobie tego życzy. W praktyce wytropienie kogoś korzystającego z Tora jest możliwe, ale karkołomnie trudne. Cała ta anonimowość nie jest jednak całkowicie za darmo. Ze względu na wielokrotne przekierowywanie połączeń do losowych węzłów Tor, szybkość takiego połączenia jest znacznie mniejsza i spada wraz ze wzrostem liczby węzłów w obwodzie.
Jest jednak też pewna mroczna strona trasowania cebulowego, obok której trudno przejść obojętnie. Protokół Tor pozwala nie tylko na uzyskanie anonimowości dla zwykłych użytkowników, ale także dla serwerów. Ponieważ każdy, kto pojawia się w sieci Tor łączy się za pomocą kilku węzłów pośredniczących, pozostaje nieznany. Z podobnego mechanizmu może skorzystać serwer i tak jak ja łącząc się z google.com doprowadziłem do sytuacji, w której korporacja Google nie wie kim jestem, to Tor może także sprawić, że będę mógł się połączyć z pewnym serwerem, którego ani ja, ani korporacja Google nie będzie w stanie zlokalizować. Co więcej, nawet jeśli się z tym serwerem połączę to i ten serwer nie będzie wiedział kim ja jestem. Mowa tutaj o tak zwanym Dark Web. Jednakże prawidłowa nazwa jest inna. Serwis, który jest dostępny tylko w sieci Tor powinniśmy nazywać po prostu “ukrytym serwisem” lub “ukrytą usługą”. W takich ukrytych serwisach właśnie umieszcza się treści nielegalne, handluje nielegalnymi towarami i tak dalej. Samo używanie ukrytych serwisów nie jest jednak niezgodne z prawem. Każdy może postanowić udostępnić swój własny serwer HTTP jako ukryty serwis.
Proces łączenia z ukrytym serwisem jest dość skomplikowany i jego szczegóły wykraczają daleko poza zakres tego podcastu. Ograniczmy się zatem do dwóch najistotniejszych faktów dotyczących takiego połączenia. Pierwszy fakt jest taki, że aby skorzystać z takiego ukrytego serwisu, potrzebujemy pewnego szczególnego adresu, który wpiszemy w pasek URL. Tak samo jak zawsze w pasek ten wpisujemy adresy z końcówką “com”, “pl” czy inną, tak ukryte serwisy korzystają z adresów z końcówką “onion”. Adresy takie różnią się zazwyczaj od normalnych adresów dostępnych przez DNS, ponieważ są to ciągi znaków, będące pochodnymi kluczy publicznych ukrytych serwisów. Jeśli adres z końcówką “onion” wpiszemy w pasek URL zwykłej przeglądarki, zobaczymy błąd, ponieważ DNS nie zna takiej domeny najwyższego rzędu. Tylko przeglądarka Tor Browser będzie w stanie dokonać prawidłowego połączenia. Takie adresy nie są nigdzie publikowane i nie są też dostępne w wyszukiwarkach internetowych. Drugi fakt dotyczący połączenia z ukrytą usługą jest taki, że kiedy już obwód zostaje zestawiony, pomiędzy nami a serwerem znajduje się przynajmniej 6 węzłów Tora. Wynika to z implementacji protokołu. Zarówno klient jak i serwer ukrywają się za przynajmniej trzema węzłami, odpowiedzialnymi za kolejne warstwy szyfrowania. W przypadku połączenia z ukrytą usługą mamy sumę tych węzłów, dzięki czemu ani serwer, ani klient nie wiedzą nic o drugiej stronie.
Jak widać trasowanie cebulowe jest dość kontrowersyjne. Z jednej strony technologia ta pozwala chronić prywatność użytkowników Internetu, z drugiej jednak stwarza duże pole do nadużyć. Co jakiś czas słyszymy doniesienia medialne o tym, że CIA zamknęło jakąś stronę, na której handlowano narkotykami, bronią czy prowadzono inną nielegalną działalność. Prawie za każdym razem wywołuje to poruszenie i powrót debaty o tym czy Tor nie powinien zostać zdelegalizowany. Każdy ma prawo do własnego zdania na ten temat, ja jednak przytoczę słowa jednego z twórców Tora. W 2017 roku wspomniany wcześniej Roger Dingledine wystąpił na konferencji w Berlinie. Temat konferencji brzmiał “Czy wolność przetrwa cyfrową erę”. Roger opowiadał między innymi o ukrytych usługach Tora, sparafrazuję fragment jego wypowiedzi:
“Niedawno próbowaliśmy zweryfikować jaki udział procentowy w ruchu przez Tor jest faktycznie związany z ukrytymi usługami. Okazało się, że wynosi 2-3%, czyli około 98% użytkowników korzysta z Tora po to, żeby odwiedzić zwykłe strony, takie jak Twitter, Google, Facebook a tylko kilka procent odwiedza ukryte usługi. Więc następnym razem, kiedy zobaczycie rysunek góry lodowej w artykule BBC, w którym straszą was, że znacie tylko 4% Internetu a pozostałe 96% to Dark web, zastanówcie się jaki był tego cel”.