Traffic Confirmation Attacks w Torze: jak analizować wzorce ruchu bez łamania szyfrowania
Traffic Confirmation Attacks w Torze: jak analizować wzorce ruchu bez łamania szyfrowania
Sieć Tor jest jednym z najbardziej znanych mechanizmów ochrony anonimowości w Internecie. Jej podstawowym zadaniem jest oddzielenie tożsamości użytkownika od celu komunikacji poprzez wielowarstwowe trasowanie ruchu.
Nie oznacza to jednak, że wszystkie informacje o komunikacji znikają.
Nawet jeśli przeciwnik nie zna treści przesyłanych danych, może próbować analizować metadane i charakterystykę ruchu:
- czas transmisji,
- rozmiar pakietów,
- kierunek komunikacji,
- częstotliwość pakietów,
- długość sesji,
- liczbę burstów,
- wzorce aktywności.
Właśnie na tym opierają się między innymi Traffic Confirmation Attacks oraz Website Fingerprinting.
To ważne zagadnienie, ponieważ pokazuje fundamentalne ograniczenie sieci anonimowych:
Szyfrowanie treści nie oznacza automatycznego ukrycia charakterystyki komunikacji.
W poprzednim artykule serii analizowaliśmy ataki Sybil w sieci Tor. Teraz przechodzimy do kolejnego poziomu: co się dzieje, gdy przeciwnik nie próbuje przejąć tożsamości użytkownika bezpośrednio, ale zaczyna porównywać wzorce ruchu obserwowane w różnych punktach sieci?
Tor ukrywa treść, ale ruch nadal ma swoją charakterystykę
Najprostszy model komunikacji wygląda tak:
Użytkownik
↓
Guard
↓
Middle
↓
Exit
↓
Serwer
Dane są wielowarstwowo szyfrowane, a poszczególne elementy infrastruktury nie powinny posiadać kompletnej informacji o komunikacji.
Jednak pakiety nadal muszą:
- zostać wysłane,
- dotrzeć do kolejnego węzła,
- zostać przekazane dalej,
- wrócić do użytkownika.
W konsekwencji powstaje pewien wzorzec czasowy i objętościowy.
Można go przedstawić bardzo uproszczonym modelem:
czas →
↑
│ ██
│ ██ ██ ███
│ ██ █ ██ ██ ███
└────────────────────→
To nie jest treść komunikacji.
To kształt ruchu.
I właśnie ten kształt może być przedmiotem analizy.
Netbe opisuje podobne zagadnienia w materiale Monitoring ruchu w sieci Tor.
Czym jest Traffic Confirmation Attack?
Traffic Confirmation Attack można w uproszczeniu opisać jako próbę potwierdzenia, że:
ruch A
oraz
ruch B
są częściami tej samej komunikacji.
Przeciwnik nie musi więc od razu wiedzieć:
„To jest Marek i odwiedza konkretną stronę”.
Może zacząć od znacznie bardziej ograniczonego pytania:
„Czy te dwa obserwowane strumienie ruchu prawdopodobnie pochodzą z tej samej sesji?”
Schemat:
Punkt obserwacyjny A
↓
Traffic Pattern
↓
??????
↑
Traffic Pattern
↑
Punkt obserwacyjny B
Jeżeli wzorce są wystarczająco charakterystyczne, przeciwnik może próbować je skorelować.
To nie jest odszyfrowanie
To rozróżnienie jest niezwykle ważne.
Załóżmy:
Packet #1 → 1480 bytes
Packet #2 → 1480 bytes
Packet #3 → 820 bytes
Packet #4 → 1480 bytes
Przeciwnik może nie wiedzieć, co znajduje się w środku.
Może jednak wiedzieć:
size
time
direction
sequence
duration
Czyli:
CONTENT = hidden
METADATA = partially observable
Dlatego można prowadzić analizę ruchu bez łamania szyfrowania.
Dlaczego timing jest tak istotny?
Wyobraźmy sobie dwa punkty obserwacyjne.
Pierwszy rejestruje:
10:00:01.12
10:00:01.17
10:00:01.31
10:00:01.35
10:00:01.92
Drugi:
10:00:01.29
10:00:01.34
10:00:01.48
10:00:01.52
10:00:02.09
W rzeczywistym Torze sytuacja jest oczywiście bardziej skomplikowana, ponieważ występują opóźnienia, kolejkowanie, padding, zmiany ścieżki i inne czynniki.
Ale sam mechanizm jest ważny:
INPUT
↓
pattern
↓
Tor
↓
OUTPUT
↓
similar pattern
Jeżeli wzorzec jest wystarczająco charakterystyczny, można próbować szukać korelacji.
Traffic Confirmation kontra Traffic Correlation
Terminy te bywają stosowane zamiennie, ale warto je rozdzielić koncepcyjnie.
Traffic correlation oznacza analizowanie podobieństwa dwóch strumieni.
Traffic confirmation idzie krok dalej:
przeciwnik posiada dodatkową hipotezę i próbuje ją potwierdzić za pomocą obserwowanego ruchu.
Przykładowo:
Hipoteza:
Użytkownik X ↔ Usługa Y
↓
Obserwacja ruchu
↓
Porównanie wzorców
↓
Confidence Score
Nie musi to oznaczać stuprocentowego dowodu.
Może oznaczać jedynie:
Probability ↑
A w analizie anonimowości właśnie to może mieć znaczenie.
Website Fingerprinting – cyfrowy „kształt” strony
Jeszcze ciekawszym problemem jest Website Fingerprinting.
Wyobraźmy sobie, że przeciwnik zna charakterystykę ruchu generowanego podczas odwiedzania określonych stron.
Może wcześniej zebrać dane:
Website A
→ pattern A
Website B
→ pattern B
Website C
→ pattern C
Następnie obserwuje anonimowego użytkownika:
Unknown User
→ pattern X
i próbuje odpowiedzieć:
X ≈ A ?
X ≈ B ?
X ≈ C ?
Nie musi więc odczytywać adresu URL bezpośrednio.
Może próbować wnioskować, dokąd użytkownik się udał.
Dlaczego strony mogą mieć różne fingerprinty?
Każda strona generuje inny zestaw zasobów:
- HTML,
- CSS,
- JavaScript,
- obrazy,
- fonty,
- API,
- reklamy,
- dodatkowe requesty,
- multimedia.
W rezultacie powstaje charakterystyczny ruch:
HTML
↓
CSS
↓
JS
↓
Image
↓
API
↓
Image
↓
Font
Inna strona może wygenerować:
HTML
↓
JS
↓
API
↓
API
W efekcie obie sesje mogą mieć różną charakterystykę.
Fingerprint nie musi zawierać adresu strony
To bardzo ważna różnica.
Przeciwnik może nie zobaczyć:
https://example.com/private-page
Może natomiast zobaczyć coś w rodzaju:
Packet sequence:
↑ ↓ ↑ ↑ ↓ ↓ ↑
Burst:
████████
Idle:
───
Burst:
████████████
I porównać ten wzorzec z wcześniej zgromadzonymi próbkami.
Closed-world i open-world
W badaniach Website Fingerprinting często rozróżnia się dwa modele.
Closed-world
Przeciwnik zna ograniczony zestaw możliwych stron:
A
B
C
D
E
i próbuje ustalić:
Unknown → A/B/C/D/E
To stosunkowo łatwiejszy problem.
Open-world
Rzeczywisty Internet zawiera ogromną liczbę możliwych celów.
Wtedy przeciwnik musi odpowiedzieć:
Czy ten fingerprint
pasuje do którejś
z obserwowanych stron?
To znacznie trudniejsze.
Dlaczego Darknet jest interesującym przypadkiem?
W przypadku usług .onion sytuacja jest szczególna.
Adres usługi nie działa jak klasyczna domena WWW.
Architektura Onion Services została zaprojektowana właśnie po to, aby ukrywać lokalizację serwera.
Netbe omawia ten mechanizm w artykule Jak działa mechanizm Onion Services – usługi .onion od strony technicznej.
Jednak również tutaj ruch może posiadać określone właściwości.
To oznacza:
Hidden IP
≠
Hidden traffic characteristics
To bardzo ważne rozróżnienie.
Czy można fingerprintować usługę .onion?
W sensie koncepcyjnym tak.
Jeżeli przeciwnik posiada odpowiednio dużo danych treningowych, może próbować rozpoznawać charakterystyczne wzorce aktywności.
Może interesować go:
request size
response size
timing
burst patterns
session length
direction changes
Nie oznacza to jednak automatycznie identyfikacji serwera.
Fingerprinting jest mechanizmem wnioskowania, a nie magicznym sposobem poznania ukrytego IP.
Sybil + Traffic Confirmation
Tutaj pojawia się bezpośrednie połączenie z poprzednim artykułem.
Sybil może zwiększać możliwość obserwowania określonych fragmentów infrastruktury.
Traffic Confirmation pozwala następnie próbować odpowiedzieć:
Czy ruch obserwowany tutaj
jest tym samym ruchem,
który widzę tam?
Model może wyglądać następująco:
Attacker
/ \
/ \
Observation A Observation B
\ /
\ /
Correlation
↓
Hypothesis
Właśnie dlatego te dwa zagadnienia powinny być analizowane razem.
Globalny przeciwnik to zupełnie inna klasa zagrożenia
Najbardziej wymagającym modelem jest przeciwnik posiadający możliwość obserwowania dużych fragmentów Internetu.
Przykładowo:
ISP
|
Internet Exchange
|
Backbone
|
Data Center
|
Tor infrastructure
Taki przeciwnik może mieć znacznie więcej danych niż operator pojedynczego relay’a.
Nie oznacza to automatycznie możliwości deanonymizacji każdego użytkownika.
Oznacza jednak większy potencjał analityczny.
Dlaczego Tor nie może po prostu „ukryć wszystkiego”?
Ponieważ sieć musi dostarczać dane.
Jeżeli użytkownik pobiera:
10 MB
serwer musi ostatecznie wysłać odpowiednią ilość informacji przez sieć.
Można próbować:
- dodawać padding,
- opóźniać pakiety,
- generować ruch pozorny,
- normalizować rozmiary,
- zmieniać sposób transmisji.
Ale wszystko to ma koszt.
More Privacy
↓
More Overhead
↓
Lower Efficiency
To jeden z podstawowych kompromisów projektowych sieci anonimowych.
Traffic Obfuscation jako odpowiedź
Jedną z metod ograniczania tego problemu jest Traffic Obfuscation.
Celem jest sprawienie, aby rzeczywisty ruch był mniej charakterystyczny.
Zamiast:
A:
██ ██ ███ █████ ██
można próbować uzyskać wzorzec bardziej zbliżony do:
A:
████ ███ ████ ███ ███
Tak, aby trudniej było powiedzieć:
Pattern A = Website X
Netbe analizuje ten temat w artykule Jak działa ukrywanie metadanych w ruchu sieciowym – Traffic Obfuscation.
Padding
Jednym z podstawowych mechanizmów jest padding.
Jeżeli prawdziwa wiadomość ma:
820 bytes
system może przesłać większą strukturę:
1500 bytes
zawierającą dodatkowe dane niewnoszące informacji dla odbiorcy.
Celem jest zmniejszenie ilości informacji wynikającej z rozmiaru transmisji.
Ale padding kosztuje:
Bandwidth ↑
Latency ↑
Processing ↑
Dlatego nie można bez końca zwiększać ilości sztucznego ruchu.
Burst patterns
Szczególnie interesujące są bursty, czyli krótkie okresy intensywnej transmisji.
Przykład:
Idle
↓
██████████
↓
Idle
↓
████
↓
Idle
↓
██████████████
Taki wzorzec może być charakterystyczny dla określonej aplikacji lub strony.
Dlatego analiza samych średnich wartości:
Average bandwidth
może być niewystarczająca.
Liczy się również:
temporal structure
czyli struktura ruchu w czasie.
Directionality
Kolejną cechą jest kierunek ruchu.
Przykład:
Client → Server
↑↑↑↑↑
Server → Client
↓↓↓↓↓↓↓↓↓↓
Strona może najpierw wysłać duży dokument, potem kilka odpowiedzi API, a następnie obrazy.
Powstaje określona sekwencja:
↑ ↑ ↓ ↓ ↓ ↑ ↓
Taki wzorzec może być wykorzystany jako jedna z cech fingerprintu.
Session length
Również czas trwania sesji może być interesujący.
Przykładowo:
Website A
≈ 2.4 s
Website B
≈ 17.8 s
Website C
≈ 63 s
Sam czas oczywiście nie wystarczy.
Ale w połączeniu z:
size
timing
direction
bursts
może tworzyć bardziej charakterystyczny profil.
Machine Learning zmienia skalę problemu
Klasyczne fingerprinting może wykorzystywać ręcznie zdefiniowane cechy.
Nowoczesne modele mogą natomiast analizować ogromne ilości próbek.
Schemat:
Thousands of sessions
↓
Feature extraction
↓
Training
↓
Classifier
↓
Unknown session
↓
Prediction
Model może wykorzystywać kombinację wielu cech zamiast pojedynczego parametru.
Ale model ML nie jest magiczny
Machine Learning ma również ograniczenia.
Jeżeli dane treningowe:
≠
real-world traffic
model może działać znacznie gorzej.
Problemem są między innymi:
- różne urządzenia,
- różne wersje przeglądarki,
- zmiany strony,
- CDN,
- reklamy,
- cache,
- dynamiczny JavaScript,
- zmiany sieci,
- packet loss,
- opóźnienia.
Fingerprint może więc z czasem przestać być stabilny.
Dynamiczne strony utrudniają fingerprinting
Załóżmy, że dzisiaj strona generuje:
Pattern A
a po aktualizacji:
Pattern B
Model uczony na Pattern A może mieć problem.
To prowadzi do kolejnego ważnego problemu:
fingerprinting musi być aktualizowany.
Przeciwnik potrzebuje więc nie tylko danych, ale również aktualnego modelu środowiska.
CDN i cache dodatkowo komplikują analizę
Nowoczesna strona internetowa może korzystać z:
CDN
+
Cache
+
API
+
Dynamic content
Dwóch użytkowników może więc uzyskać różne wzorce ruchu podczas odwiedzania tego samego adresu.
Przykład:
User A → Cache HIT
User B → Cache MISS
A to może oznaczać zupełnie inną sekwencję transmisji.
Czy Tor jest wobec tego bezbronny?
Nie.
Tor został zaprojektowany z uwzględnieniem tego, że anonimowość jest problemem wielowarstwowym.
Nie istnieje jednak jeden mechanizm, który rozwiązuje wszystkie możliwe modele przeciwnika.
Możemy przedstawić sytuację tak:
Tor
↓
reduces direct observability
↓
reduces identity linkage
↓
reduces path visibility
ale:
Tor
≠
perfect protection against every traffic analysis attack
To zasadnicza różnica.
Anonimowość jest właściwością całego systemu
Użytkownik może mieć:
Tor
+
VPN
+
Tails
a mimo to popełnić błąd:
login with personal account
Wtedy anonimowość może zostać osłabiona niezależnie od jakości routingu.
Dlatego Netbe słusznie rozdziela w materiałach temat technologii od OPSEC i zachowania użytkownika. Warto zobaczyć również Anonimowość w Darknecie – metody, narzędzia i ich skuteczność.
Traffic Isolation
Kolejnym ważnym mechanizmem jest izolacja aktywności.
Jeżeli różne działania są odpowiednio rozdzielone:
Activity A
↓
Circuit A
Activity B
↓
Circuit B
zmniejsza się ryzyko przypadkowego łączenia aktywności.
Traffic Isolation nie eliminuje jednak wszystkich problemów związanych z analizą ruchu.
To raczej kolejna warstwa ochronna.
Więcej informacji znajduje się w Jak działa separacja ruchu (Traffic Isolation) w sieciach anonimowych.
Tor Browser i standaryzacja fingerprintu
Istotnym elementem ochrony prywatności jest ograniczanie różnic pomiędzy użytkownikami.
Jeżeli każdy użytkownik posiadałby unikalny zestaw:
screen resolution
fonts
plugins
browser APIs
JavaScript behavior
powstałby bardzo silny fingerprint przeglądarki.
Tor Browser stara się więc ograniczać możliwość takiego indywidualnego rozpoznania.
To inny rodzaj fingerprintingu niż Website Fingerprinting, ale oba problemy mogą się wzajemnie uzupełniać.
Dwa różne fingerprinty
Warto je rozdzielić.
Browser Fingerprinting
Pytanie:
„Czy to ten sam użytkownik/urządzenie?”
Website Fingerprinting
Pytanie:
„Dokąd prawdopodobnie udał się użytkownik?”
Możemy więc mieć:
Browser Fingerprint
+
Traffic Fingerprint
↓
Stronger inference
To pokazuje, dlaczego anonimowość wymaga ochrony na wielu poziomach.

Onion Services i brak klasycznego Exit Node
W przypadku usług .onion nie występuje klasyczny Exit Node prowadzący do publicznego Internetu.
To ogranicza niektóre klasy obserwacji.
Jednocześnie pojawia się bardziej złożona topologia komunikacji.
W uproszczeniu:
Client
↓
Tor circuit
↓
Rendezvous
↑
Tor circuit
↑
Onion Service
To kolejny powód, dla którego analiza ruchu w Onion Services jest ciekawym zagadnieniem badawczym.
Alternatywy dla Tora
Traffic analysis nie jest problemem wyłącznie Tora.
Dotyczy również innych sieci anonimowych.
Netbe analizuje m.in. alternatywne sieci anonimowe – I2P, Freenet i inne rozwiązania.
Każdy system musi odpowiedzieć na podobne pytania:
Co ukrywamy?
Przed kim?
Jak długo?
Jakim kosztem?
Różne architektury podejmują inne kompromisy pomiędzy:
privacy
performance
latency
scalability
Najbardziej interesujące jest połączenie kilku technik
Zaawansowany przeciwnik może teoretycznie łączyć:
Sybil infrastructure
+
Relay observation
+
Traffic fingerprinting
+
Timing analysis
+
External network telemetry
+
OSINT
Każdy element osobno może być niewystarczający.
Razem mogą jednak zwiększać confidence określonej hipotezy.
To jest bardzo ważna zasada współczesnej analizy bezpieczeństwa:
Nie zawsze trzeba znaleźć jeden dowód. Czasami wystarczy połączyć wiele słabych sygnałów.
Czy użytkownik może całkowicie wyeliminować ten problem?
Nie.
Może natomiast ograniczać ilość informacji, którą generuje.
Najważniejsze zasady to:
- korzystać z aktualnego Tor Browser,
- nie modyfikować go bez potrzeby,
- nie instalować dodatkowych rozszerzeń,
- nie mieszać anonimowych i osobistych aktywności,
- unikać logowania do kont związanych z prawdziwą tożsamością,
- pamiętać, że VPN nie jest magiczną warstwą anonimowości,
- rozumieć ograniczenia Tor względem globalnego przeciwnika,
- stosować izolację aktywności,
- traktować pobierane pliki jako potencjalne źródło deanonymizacji,
- pamiętać, że anonimowość jest kombinacją technologii i OPSEC.
Dodatkowe praktyczne informacje można znaleźć w Jak uzyskać dostęp do Darknetu w sposób bezpieczny?.
Najważniejszy wniosek
Traffic Confirmation Attack pokazuje, że bezpieczeństwo sieci anonimowych nie kończy się na pytaniu:
„Czy ktoś może odszyfrować mój ruch?”
Znacznie ciekawsze pytanie brzmi:
„Czy ktoś może wywnioskować, co robię, obserwując charakterystykę mojego ruchu?”
To dwie zupełnie różne klasy problemów.
Możemy mieć:
Content
████████████████
ENCRYPTED
ale jednocześnie:
Timing
████████████████
Size
████████████████
Direction
████████████████
Bursts
████████████████
Jeżeli przeciwnik posiada odpowiednią widoczność, te informacje mogą zostać wykorzystane do budowania hipotez.
Nie oznacza to, że Tor przestaje działać.
Oznacza to, że anonimowość jest probabilistyczną właściwością całego systemu, a nie prostym skutkiem zastosowania szyfrowania.
Podsumowanie
Traffic Confirmation Attacks i Website Fingerprinting to jedne z najciekawszych zagadnień w analizie bezpieczeństwa sieci Tor.
Najważniejsze punkty:
- szyfrowanie nie ukrywa automatycznie wszystkich metadanych,
- czas i rozmiar transmisji mogą tworzyć charakterystyczne wzorce,
- Traffic Correlation próbuje znaleźć podobieństwo pomiędzy obserwowanymi strumieniami,
- Traffic Confirmation służy do wzmacniania określonej hipotezy,
- Website Fingerprinting może próbować rozpoznać cel komunikacji na podstawie charakterystyki ruchu,
- Sybil może zwiększać możliwości obserwacyjne przeciwnika,
- padding i traffic obfuscation mogą utrudniać analizę,
- większa ochrona prywatności zwykle oznacza dodatkowy koszt wydajności,
- Machine Learning może automatyzować klasyfikację wzorców,
- dynamiczny charakter współczesnego Webu utrudnia stabilny fingerprinting,
- Onion Services mają inną topologię niż klasyczny dostęp przez Exit Node,
- OPSEC użytkownika pozostaje równie ważny jak sama technologia.
Najważniejsza lekcja jest prosta:
Tor ma ukrywać relację pomiędzy użytkownikiem a celem komunikacji, ale nie należy zakładać, że każdy aspekt ruchu sieciowego staje się niewidoczny.
Właśnie na tej granicy pomiędzy szyfrowaniem, anonimowością i analizą metadanych zaczyna się najbardziej interesująca część badań nad Darknetem.
Powiązane materiały Netbe
- Monitoring ruchu w sieci Tor
- Ryzyka deanonymizacji w sieci Tor
- Jak działa Traffic Obfuscation
- Jak działa Traffic Isolation
- Anonimowość w Darknecie
- Jak działa Onion Services
- Alternatywne sieci anonimowe – I2P, Freenet i inne
- Bezpieczny dostęp do Darknetu
- Jak działa Darknet?






