Tor (verkko)
Toimintaperiaate

Tor-verkon toiminta perustuu liikennettä välityspalvelimina siirtävien Tor-solmujen (tai -reitittimien) vapaaehtoiseen ylläpitoon ympäri maailmaa ja näiden välillä tapahtuvaan sipulireititykseen. Esim. suomalainen ihmisten sähköisiä oikeuksia puolustava Electronic Frontier Finland ry ylläpitää exit-solmua.
Tor-verkkoon liittyessään käyttäjän kone pyytää listan saatavilla olevien solmujen tiedoista satunnaisesti valitulta directory authority eli DA-palvelimelta. Nämä toimivat eräänlaisina DNS-nimipalvelimina tai jatkuvasti päivittyvinä puhelinluetteloina solmuille. DA-palvelimet antavat julkisella avaimellaan allekirjoitetut tiedot solmujen IP-osoitteista, julkisen salauksen tunnisteista ja muista tärkeistä tiedoista. DA-palvelimia on 10 kirjoitushetkellä (2018) ja näiden IP-osoitteet ovat pysyvästi Tor-ohjelmistoon koodattuina. Tämän yhteydenoton vuoksi internet-palveluntajoajan (ISP) on mahdollista tietää käyttäjän käyttävän Tor-verkkoa. Siksi on myös olemassa silta-solmuja (bridge). Nämä ovat julkisesti listaamattomia välityspalvelimia, joiden keskeisiä yhteystietoja on mahdollista saada rajoitetusti selville. Tor-verkon käyttöä rajoittavissa maissa (mm. Iran ja Kiina) asuvat voivat tuntemansa silta-solmun kautta päästä käyttämään Tor-verkkoa. DA-palvelimet eivät kerro käyttäjälle siltojen yhteystietoja, sillä ne eivät tiedä niitä.
Solmutyyppejä on 3: guard, middle ja exit. Yksinkertaisimmassa tilanteessa Tor-verkkoa käyttävän koneelta lähtee kerroksittain salattua TCP-liikennettä, jonka kerroksista johtuen reititystä kutsutaan sipulireititykseksi (vrt. sipuliin, jossa on kerroksia). UDP:tä ei voi käyttää. Lähetetty liikenne on aina jaettu 512 tavun IP-paketteihin, jotta sen tulkitseminen olisi ulkopuolisille tahoille vaikeampaa; vaihtelevan kokoisista paketeista voisi ehkä tulkita liikenteen sisältöä. Käyttäjä valitsee saamastaan listasta satunnaisesti sopivat solmut. Näiden kautta käyttäjän kolminkertaisesti salaama liikenne kulkee. Kukin solmu voi purkaa vain yhden sille tarkoitetun salauskerroksen. Sitten solmu välittää kerroksen alta löytämiensä ohjeiden mukaan liikenteen eteenpäin seuraavalle solmulle. Aluksi verkkoliikenne, kuten pyyntö päästä verkkosivulle, siirtyy käyttäjältä guardille, guardilta middlelle ja lopuksi middleltä exitille. Tor-verkko päättyy exitiin, joka purkaa viimeisen salauksen.
Exitiltä liikenne lähtee tavallisena liikenteenä eteenpäin käyttäjän pyytämää verkkosivua ylläpitävälle palvelimelle. Sivusta riippuen tämä liikenne voi olla salaamatonta HTTP-liikennettä, jonka sisällön exit voi kokonaan nähdä, tai salattua HTTPS-liikennettä, jota exit ei pysty lukemaan. Sivua tarjoavalle palvelimelle liikenne näyttää tulevan vain exitin IP-osoitteesta. HTTPS-liikenteenkin kohdalla exit näkee silti rajatusti minkä sivun käyttäjä haluaa nähdä: esim. https://sivu.com, mutta ei https://sivu.com/sisalto. Katso vertailu HTTPS ja/tai Tor käytöstä: linkki.
Anonyymiydelle haitallisesti monet ohjelmat tekevät DNS-haut suoraan nimipalvelimilta sen sijaan että ne kulkisivat Tor-verkon kautta. Ohjelma, joka käyttää SOCKS5-yhteyksiä, voi kuitenkin ohjata DNS-haut Tor-verkon lävitse. Tailsin kaltaisissa käyttöjärjestelmissä lähes kaikki ohjelmat pakotettu käyttämään automaattisesti vain Tor-verkkoa.
Salausjärjestys toimii liikenteen tullessa palvelimelta toisin päin: palvelin välittää käyttäjän pyytämän sivun sisällön exitille. Exit salaa liikenteen salausavaimellaan ja siirtää sen middlelle, middle salaa liikenteen ja siirtää sen guardille. Guard salaa liikenteen ja siirtää sen käyttäjälle. Käyttäjä purkaa kaikki salauskerrokset ja on näin saanut pyytämänsä sivun sisällön.
Guard tietää liikenteen lähteen ja menosuunnan, eli "tuntee" käyttäjän ja middlen (IP-osoitteet), mutta ei tunne exitiä ja sivua tarjoavaa palvelinta. Guard periaatteessa voi tietää käyttäjän olevan Tor-verkon loppukäyttäjä, eikä osallistuja. Tämä ei kuitenkaan haittaa, sillä guard ja middle eivät näe liikenteen sisällöstä mitään. Middle taas tuntee guardin ja exitin, mutta ei tunne käyttäjää ja palvelinta; exit tuntee middlen ja palvelimen, mutta ei tunne käyttäjää ja guardia. Tähän käyttäjän anonyymiys Tor-verkossa perustuu.
Tor-ohjelmisto vaihtaa solmuja säännöllisesti. Siten vältytään tilanteelta, jossa esim. exit ja middle ovat saman tahon ylläpitämiä, jolloin ne tuntevat toisensa. Jos tämä henkilö olisi pahantahtoinen, voisi hän selvittää kuka käyttäjä on mikäli hän hallinnoisi myös guardia. Tor-verkko tarkkailee guard-oikeudet saaneita solmuja esim. middlejä tarkemmin, jollaiseksi periaatteessa kuka tahansa internet yhteydessä olevan tietokoneen omistaja voi ryhtyä. Guardiksi pääseminen vaatii koneelta aktiivista ja normaalilta vaikuttavaa osallistumista Tor-verkon ylläpitoon. Tämän vuoksi muiden Tor-verkon solmujen korkean luottamuksen omaavaa guardia kutsutaan nimellä guard (eng. vartija). Tor-vekkoon liitetty ohjelma muuttaa guard-solmua paljon harvemmin kuin middleä ja exitiä. Ohjelmiston uudelleenkäynnistyksessä kaikki solmut voivat kuitenkin vaihtua. Guardin vähäinen vaihto vähentää käyttäjän todennäköisyyttä päätyä tilanteeseen, jossa middle ja exit ovat saman henkilön hallinnassa. On mahdollista, että sama taho hallinnoi kaikkia käyttäjän valitsemia solmuja, mutta tämä on Tor-verkon nykyisessä kokoluokassa tilastollisesti epätodennäköistä.