Ślepy Tor?

W protokole Tor ujawniono już kilka istotnych podatności, między innymi dotyczącą protokołu Diffiego-Hellmana. Nie jest to koniec problemów dla użytkowników serwisu, który ma zapewniać anonimowość.

Jak zablokować Tora?

Każdy dzisiejszy firewall wyposażony w technologię inspekcji pakietów (Deep Packet Inspection) z powodzeniem może analizować i zablokować ruch związany z Torem. Początkowo w polu Common Name występowała nazwa Tor, dzięki czemu do zablokowania wystarczyły dwie proste komendy linuksowej zapory iptables:

iptables -D INPUT -m string --algo bm --string Tor -j DROP

iptables -D INPUT -m string --algo bm --string Tor -j LOG

Zmiana nazwy Tor na losowo generowane wpisy sprawia, że ruch ten jest jeszcze bardziej podejrzany.

Tor jest narzędziem, które wykorzystuje się do zapewnienia prywatności połączenia. Dzięki przekazywaniu danych przez wiele serwerów, ustalenie adresu IP, który inicjuje połączenie, jest bardzo trudne. Ale nie jest niemożliwe.

Tor wykorzystuje szyfrowanie za pomocą protokołu SSL, który jest standardem w dziedzinie zabezpieczenia poufności połączenia. SSL zestawia bezpieczny tunel pomiędzy klientem a serwerem w sieci. Jest to sprawdzony standard, powszechnie wykorzystywany w bankowości elektronicznej, przy ochronie połączenia do serwerów poczty elektronicznej, a także do zabezpieczenia innych połączeń także VPN. Centralną częścią SSL są certyfikaty serwera, czyli certyfikaty X.509. Gdy klient ma otworzyć bezpieczny kanał (https), podczas negocjacji połączenia żąda właśnie certyfikatu serwera. Istotną uwagą jest to, że certyfikat ten nie jest szyfrowany, zatem jego metadane są czytelne dla zwykłego sniffera sieciowego.

Gdy na przykład otwieramy stronę Torproject.org, serwer przedstawia się certyfikatem, w którym pole Common Name zawiera wartość *.torproject.org - gdzie gwiazdka jest symbolem wieloznacznym, który zastępuje wszystkie poddomeny, sprawiając, że certyfikat ten działa we wszystkich poddomenach, takich jak blog.torproject.org. Zatem wystarczy podsłuchać połączenia sieciowe za pomocą narzędzi, takich jak ngrep (komenda: ngrep -d eth0 DigiCert, gdzie szukanym słowem jest: DigiCert, a wykorzystywanym interfejsem sieciowym jest eth0). Po uruchomieniu sniffera widać, że wychwycenie informacji o negocjacji połączenia SSL ze stroną korzystającą z certyfikatu konkretnego wystawcy jest bardzo proste.

Tor także wykorzystuje SSL do zabezpieczenia połączeń między węzłami routingu oraz klientami. Gdy klient zażąda połączenia z węzłem sieci Tor (wliczając także węzły - mosty), otrzymuje od serwera certyfikat. Problem polega na tym, że parametr Common Name jest wypełniany losowo, wskazując na nieistniejącą domenę. Gdyby spróbować rozwiązać nazwę domeny za pomocą DNS, narzędzie zwróci błąd NXDOMAIN.