Tor
et netværk der sender trafik gennem frivillige relæer
Hvad det er
Hvem der taler med hvem, er netop det, Tor skjuler for den, der holder øje med forbindelsen. Hver forbindelse sendes gennem en kæde af maskiner, og ingen af dem får at vide både, hvor trafikken begyndte, og hvor den ender. Kæden vælges af klienten, programmet tor, der kører på læserens egen computer, og den er som regel tre relæer lang: en guard, som klienten bliver ved med at bruge som indgang, et mellemrelæ og et exit-relæ, der åbner den sidste forbindelse til målet. Klienten bygger kredsløbet ét hop ad gangen, aftaler en særskilt nøgle med hvert relæ og pakker hver bid data ind i ét krypteringslag pr. hop. Hvert relæ fjerner sit eget lag og kender kun naboen før og naboen efter. Lagene er løget i titlen på designartiklen, The Second-Generation Onion Router. I daglig tale hedder relæerne samlet Tor-netværket, tor med lille t er programmet, og Tor Browser er den browser, der er pakket til at bruge det.
Data rejser i celler af fast størrelse, så et relæ ser en strøm af ensartede blokke i stedet for de oprindelige pakkers form. Mange TCP-forbindelser deler ét kredsløb: i omkring ti minutter sender klienten nye forbindelser over det samme kredsløb og bygger derefter et nyt, mens en enkelt lang forbindelse bliver, hvor den startede, så længe den varer. Programmer når klienten gennem en lokal SOCKS-proxy, og kun TCP kan komme den vej; designartiklen siger ligeud, at protokoller som UDP ikke tunneleres. Relæerne drives af frivillige. Hvert relæ offentliggør en beskrivelse med sine nøgler, sin adresse, sin båndbredde og sin exit-politik. En lille gruppe directory authorities stemmer om, hvilke relæer der kommer på listen, og underskriver resultatet som et konsensusdokument, som hver klient henter, før den vælger en sti.
Hvorfor det betyder noget
Den, der driver et offentligt website, møder først Tor som en kendsgerning om publikummet. En læser, der kommer via Tor, ser ud til at komme fra et exit-relæs adresse og ikke fra sin egen, og listen over relæer er offentlig med vilje, fordi hver klient skal bruge den for at vælge sin sti. Et site kan altså genkende Tor-trafik og behandle den anderledes, og Tor-projektet mener selv, at operatører har ret til at blokere den, selv om det håber, at de lader være. Tilbage står beslutningen om, hvad man gør med de læsere: betjener dem som alle andre, bremser dem, stiller en udfordring foran dem eller giver dem en indgang, der aldrig forlader Tor-netværket. Det sidste er præcis, hvad en onion-adresse gør.
Det kan betale sig at være nøjagtig med, hvad Tor lover, for designartiklen opregner selv, hvad den lader ligge. Den påstår ikke at kunne stå imod en modstander, der ser begge ender af en forbindelse og sammenligner timing og mængde, og projektets dokumentation tilføjer, at forskningen ikke kender noget praktisk design med lav latens, der pålideligt kan. Den forsøger heller ikke at skjule, at nogen bruger Tor, kun hvad de bruger det til. Og den sidste strækning krypterer Tor slet ikke. Exit-relæet sender det videre, som programmet afleverede det, så efter exit er trafikken kun så privat som den protokol, den blev sendt i.
Sammenlignet med en VPN er tilliden fordelt på en anden måde. En VPN-udbyder ser både brugeren og målet og bliver bedt om at se væk. På Tor ser intet enkelt relæ begge dele, og klienten nægter at sætte to relæer fra samme erklærede familie, eller fra samme /16 af IPv4-adresser, på én sti. Prisen er latens, fordi hver forespørgsel krydser tre frivilliges maskiner, og derfor tjener lette sider med få rundture Tor-læserne bedst. En onion-adresse koster én dæmon mere, én privat nøgle mere at passe på og ingen åben indgående port, og derfor kan den sagtens ligge på en lille infrastruktur.
Sådan ser det ud i praksis
Virksomhedens eget site kan læses over Tor. Kommandolinjesiden offentliggør
onion-adressen sammen med en curl-kommando, der henter Markdown-teksten gennem en lokal
tor-klient. Adressen er med vilje almindelig http://: en onion-adresse er tjenestens egen
offentlige nøgle, så kredsløbet er autentificeret og krypteret, før der overhovedet tales HTTP, og
et certifikat ville blot bevise igen, hvad adressen allerede har bevist.
Om virksomhedens ene produktionsvært overhovedet kunne bære onion-tjenesten, blev ikke afgjort på en mavefornemmelse. Værten har én kerne og omkring 464 MB brugbar hukommelse. I forvejen terminerer den TLS for syv domæner og kører en git-forge, to servere til alternative protokoller, krypterede backups og blokering af indtrængningsforsøg. Svaret kom fra en dags målinger på værten med 512 MB: oven i alt det havde værten hele dagen mindst omkring 310 MB af de 464 tilbage til en ny tjeneste, swap lå på 2,6 %, og processoren var 99,7 % inaktiv.
Privatlivssiden fastslår, hvad der følger af at åbne den dør. Gemini- og Gopher-kopierne af sitet har en daglig optælling af forespørgsler og intet andet. Over Tor tælles der slet intet, og der findes ingen indstilling, der kunne tillade det, for at vide, hvem der har læst en onion-adresse, er netop det, protokollen findes for at forhindre. Virksomheden vil hellere lade være med at vide det end kunne.
Hvor det går galt
Navnet slås op uden for Tor. Et program, der sender sine forbindelser til en SOCKS-proxy, kan
stadig selv slå værtsnavnet op først gennem den almindelige resolver, og det opslag fortæller det
lokale netværk og DNS-udbyderen, hvilket site der besøges. Forbindelsen går bagefter gennem Tor,
men målet er allerede sluppet ud. I curl er forskellen en enkelt option: med --socks5 slås
navnet op lokalt, med --socks5-hostname gives det videre til proxyen, og exit-relæet slår det
op.
# Slår navnet op lokalt og forbinder derefter gennem proxyen
curl -s --socks5 127.0.0.1:9050 https://example.org/
# Giver navnet videre til tor; exit-relæet slår det op
curl -s --socks5-hostname 127.0.0.1:9050 https://example.org/
Klartekst efter exit. Tor krypterer hoppene mellem relæerne, ikke det sidste. Exit-relæet åbner en almindelig TCP-forbindelse til målet og sender det, programmet gav det, så en loginformular, der sendes over almindelig HTTP, kan læses af den, der driver exit-relæet, og af alle på nettet bag det. Brug HTTPS til alt, der forlader Tor-netværket. En onion-tjeneste slipper for spørgsmålet, fordi dens trafik aldrig forlader det.
Én adresse dækker mange læsere. Hastighedsgrænser og blokeringer, der hænger på klientens adresse, behandler et exit-relæ som én besøgende, selv om mange mennesker bruger det samtidig. En grænse, der er afstemt efter én person, lukker alle ude, hvis kredsløb tilfældigvis ender der, og en blokering, som én misbruger har gjort sig fortjent til, rammer dem alle. Beslut med vilje, hvordan exit-adresser behandles, i stedet for at lade en generel regel pr. adresse gøre det.
Identiteten rejser med inde i kredsløbet. Tor skjuler netværksadressen og gør intet ved det, programmet siger. At logge ind på en personlig konto, en særpræget browseropsætning eller et dokument, der henter noget, når det åbnes, knytter sessionen til en person, uanset hvor mange relæer der står imellem. Projektets egen dokumentation påpeger, at programtrafikken stadig skal renses på brugerens side. Det er den opgave, Tor Browser påtager sig, og som en almindelig browser, der peges mod proxyen, lader ligge.
Et exit-relæ på en hjemmeforbindelse. Guard- og mellemrelæer får sjældent klager over misbrug. Exit-relæet er det sted, målene ser trafikken komme fra, så klager og en sjælden henvendelse fra myndighederne går til den, der driver det, og Tor-projektets relæguide siger, at man ikke skal køre et hjemmefra. En frivillig med én hjemmeadresse kan i stedet køre en bridge, et relæ uden for den offentlige liste, som samme guide anbefaler til netop den situation.
At forvente, at UDP virker. Taleopkald, mange spil og værktøjer, der sender deres egne DNS-forespørgsler, bygger på UDP, og Tor bærer kun TCP-strømme. De programmer virker ikke gennem Tor, og et program, der ikke er tvunget gennem proxyen, kan uden videre forbinde direkte uden om Tor uden at sige det.
Læs mere
- Tor Specifications — specifikationerne for protokollen, stivalget, directory-systemet og onion-tjenester samlet ét sted.
- Tor: The Second-Generation Onion Router — designartiklen: kredsløb, celler, exit-politikker og en udtrykkelig liste over det, designet ikke forsøger.
- Tor Path Specification — hvordan en klient vælger guard, mellemrelæ og exit, og hvilke relæer der ikke må dele en sti.
- Types of relays on the Tor network — guard-, mellem-, exit- og bridge-relæer og det juridiske ansvar, hvert af dem lægger på den, der driver det.
- HTTPS encryption and Tor — en interaktiv visning af, hvad en aflytter ser med Tor, med HTTPS, med begge dele og med ingen af dem.