Mikko Kuivaniemi

Tor-verkon piilopalvelut

Johdanto

Tor-verkko pyrkii kätkemään käyttäjiensä sijainnin ja siten mahdollistaa anonyymin Internet-käytön. Tämän lisäksi Tor-verkossa on mahdollista tarjota piilopalveluita. Tor kätkee piilopalvelua pyörittävän palvelinkoneen sijainnin samaan tapaan kuin tavallisen Internet-selaajan päätelaitteen ja siten tarjoaa anonymiteettia myös servereille. Lisäksi Tor tarjoaa piilopalveluille suojaa palvelunestohyökkäyksiä vastaan. Tässä työssä selvitetään, mitä piilopalvelut ovat, mihin niiden toiminta perustuu ja miten niiden pystyttäminen tapahtuu. Lisäksi tutkitaan mitä vaaditaan piilopalvelun sijainnin selville saamiseksi ja millä keinoilla palvelu pystytään pitämään mahdollisimman hyvin piilotettuna.

Piilopalvelut

Piilopalvelu (hidden service) on tavallinen Internet-palvelin (esimerkiksi http-palvelin), joka on yhteydessä Tor-verkkoon. Näin ollen piilopalvelua ajavalta palvelinkoneelta tulee löytyä Tor asiakasohjelmisto. Piilopalveluun ei ole mahdollista muodostaa yhteyttä julkisesta Internetistä, joten piilopalvelun asiakkailta tulee myös löytyä Tor asiakasohjelmisto. Asiakkaan ja piilopalvelun välinen viestintä tapahtuu kokonaan Tor-verkossa, toisin kuin tavallisen Internet-palvelimen ja Tor-verkon käyttäjän välinen viestintä.

Piilopalvelut eivät voi mainostaa IP-osoitettaan, joten käyttäjien pitää pystyä luomaan yhteys palveluun jonkin muun osoitteen avulla. Tor-verkossa piilopalveluihin muodostetaankin yhteys erityisen .onion pseudoverkkotunnuksen avulla. Piilopalveluiden osoitteet ovat muodoltaan vaikeasti tulkittavia 16 merkkiä pitkiä merkkijonoja kuten esimerkiksi http://idnxcnkne4qt76tg.onion (Tor-projektin verkkosivut piilopalveluna). [1, 2]

Piilopalvelun pystyttäminen

Piilopalvelun pystyttäminen tapahtuu konfiguroimalla Tor asiakasohjelmisto siten, että se ohjaa tiettyyn virtuaaliporttiin tulevan liikenteen käyttäjän haluamalle palvelinohjelmistolle. Tämän jälkeen Tor luo piilopalvelua varten julkisen ja yksityisen salausavaimen parin. Lisäksi Tor luo piilopalvelun julkisen avaimen perusteella palvelulle .onion -päätteisen verkko-osoitteen, jonka avulla palvelu on saavutettavissa. Jotta kaikki osapuolet voivat varmistua siitä että ne kommunikoivat oikean piilopalvelun kanssa, muodostetaan piilopalvelun verkko-osoite ottamalla tiiviste piilopalvelun julkisesta avaimesta.

Piilopalvelua pystytettäessä on oleellista konfiguroida käytettävä palvelinohjelmisto siten, että se ei paljasta mitään palvelua yksilöiviä tietoja. Esimerkiksi http-palvelinohjelmistot ilmoittavat usein palvelinkoneen IP-osoitteen virheilmoitusten yhteydessä. Tällaiset palvelimeen liittyvät tiedot kuten palvelinohjelmiston nimi, versio ja käyttöjärjestelmä tulee poistaa. Palvelun tulee myös luonnollisesti olla saavutettavissa ainoastaan Tor-verkon kautta.

Jotta piilopalveluun olisi mahdollista muodostaa yhteys, sen tulee mainostaa olemassaoloaan Tor-verkossa. Tämän takia piilopalvelu muodostaa palvelua kuvaavan tietueen (hidden service descriptor), jonka avulla palvelu on saavutettavissa. Kyseinen tietue sisältää piilopalvelun julkisen avaimen ja listan erityisistä Tor-verkon esittelysolmuista (introduction point), joita tarvitaan yhteyden muodostamiseksi piilopalveluun. Kyseinen tietue allekirjoitetaan piilopalvelun yksityisellä avaimella ja julkaistaan hajautetussa tiivistetietokannassa (distributed hash table).

Edellä mainitut esittelysolmut ovat tavallisia Tor-verkon solmuja (relay), joilla on vain oma erityistehtävänsä kun piilopalveluun yritetään muodostaa yhteys. Piilopalvelu valitsee nämä solmut satunnaisesti, muodostaa niihin yhteyden ja pyytää niitä toimimaan esittelysolmuina. Samalla piilopalvelu kertoo näille solmuille oman julkisen avaimensa. Piilopalvelu muodostaa yhteyden esittelysolmuihin normaalia Tor-verkon piiriä pitkin, jotta esittelysolmut eivät saa tietoonsa piilopalvelun sijaintia. [1, 2, 3]

Yhteyden muodostaminen piilopalveluun

Kun asiakas haluaa muodostaa yhteyden johonkin piilopalveluun, hänen on tiedettävä palvelun .onion -osoite. Tor ei sisällä mitään toteutusta näiden osoitteiden levittämiseksi, joten käyttäjän on selvitettävä palvelun osoite esimerkiksi jostain verkkopalvelusta. Piilopalvelun osoitteen perusteella asiakas voi ladata palvelua kuvaavan tietueen hajautetusta tiivistetietokannasta ja saa siten tietoonsa palvelun julkisen salausavaimen ja listan palvelun käyttämistä esittelysolmuista. Mikäli palvelua kuvaavaa tietuetta ei löydy, on palvelun osoite mahdollisesti virheellinen tai palvelu ei ole pystyssä sillä hetkellä.

Samaan aikaan asiakas valitsee jonkin Tor-verkon solmun satunnaisesti ja pyytää tätä toimimaan kohtaamissolmuna (rendezvous point). Yhteys kohtaamissolmuun muodostetaan normaalia Tor-piiriä pitkin, jotta kohtaamissolmu ei saa tietoonsa asiakkaan sijaintia. Asiakas kertoo kohtaamissolmulle kertakäyttöisen salaisuuden. Nyt asiakas voi luoda piilopalvelulle yhteydenmuodostusviestin (introduction message), joka sisältää asiakkaan valitseman kohtaamissolmun osoitteen ja solmulle kertomansa kertakäyttöisen salaisuuden. Asiakas salaa tämän viestin piilopalvelun julkisella avaimella, lähettää sen jollekin piilopalvelun esittelysolmuista ja pyytää, että viesti välitetään piilopalvelulle. Luonnollisesti asiakas muodostaa yhteyden piilopalvelun esittelysolmuun normaalia Tor-piiriä pitkin.

Piilopalvelu on aiemmin muodostanut yhteyden kaikkiin esittelysolmuihinsa, joten esittelysolmu pystyy välittämään yhteydenmuodostusviestin piilopalvelulle. Piilopalvelu purkaa yhteydenmuodostusviestin salauksen ja saa siten tietoonsa asiakkaan valitseman kohtaamissolmun ja kertakäyttöisen salaisuuden. Mikäli piilopalvelu haluaa muodostaa yhteyden asiakkaaseen, se luo kohtaamisviestin, joka sisältää kertakäyttöisen salasanan. Tämän jälkeen piilopalvelu muodostaa yhteyden kohtaamissolmuun ja lähettää tälle kohtaamisviestin. Piilopalvelu käyttää kohtaamissolmun kanssa asioimiseen normaalia Tor-piiriä, jotta kohtaamissolmu ei saa tietoonsa piilopalvelun sijaintia.

Nyt kohtaamissolmu pystyy kertakäyttöisen salaisuuden avulla yhdistämään piilopalvelun oikeaan asiakkaaseen ja ilmoittamaan asiakkaalle, että yhteys piilopalveluun on muodostettu. Tämän jälkeen kohtaamissolmu välittää piilopalvelun ja asiakkaan välillä päästä päähän salattuja viestejä ja näin ollen asiakas ja piilopalvelu voivat kommunikoida toistensa kanssa. Salatun yhteyden luominen perustuu Diffie-Hellman -avaimenvaihtoprotokollaan. Kumpikaan, piilopalvelu ja asiakas, ei missään vaiheessa saa tietoonsa toisen sijaintia. Kaiken kaikkiaan yhteys asiakkaan ja piilopalvelun välillä kulkee kuuden Tor-verkon solmun kautta. Näistä kolme (joista yksi on kohtaamissolmu) ovat asiakkaan valitsemia ja loput kolme piilopalvelun valitsemia. [1, 2, 4]

Piilopalvelun ja asiakkaan välinen yhteydenmuodostus

Asiakkaan ja piilopalvelun välisen yhteydenmuodostuksen vaiheet tiivistettynä (ks. yllä oleva kuva):
  1. Piilopalvelu luo yhteyden esittelysolmuihin
  2. Piilopalvelu lisää palvelua kuvaavan tietueen tietokantaan
  3. Asiakas lataa piilopalvelua kuvaavan tietueen tietokannasta
  4. Asiakas valitsee kohtaamissolmun ja muodostaa tähän yhteyden
  5. Asiakas lähettää yhteydenmuodostusviestin jollekin piilopalvelun esittelysolmuista
  6. Piilopalvelu lähettää kohtaamisviestin kohtaamissolmulle. Asiakkaan ja piilopalvelun välinen yhteys on muodostettu.

Periaatteessa olisi mahdollista kommunikoida piilopalvelun kanssa suoraan esittelysolmun välityksellä, jolloin ei tarvittaisi kohtaamissolmua lainkaan. Näin ei kuitenkaan tehdä, jotta yksittäinen Tor-verkon solmu ei näyttäisi olevan vastuussa tietyn piilopalvelun kanssa kommunikoinnista. Käytettäessä erillistä kohtaamissolmua saavutetaan myös parempi palvelunestohyökkäyksien sietoisuus. Mikäli hyökkääjä kykenee palvelunestohyökkäyksen avulla lamauttamaan piilopalvelun esittelysolmut, palveluun jo entuudestaan muodostetut yhteydet eivät häiriinny. Lisäksi piilopalvelu voi korvata palvelunestohyökkäyksen seurauksena lamaantuneet esittelysolmut uusilla esittelysolmuilla, mikä tekee palvelunestohyökkäyksien toteuttamisesta hankalaa. [2]

Piilopalvelua vastaan hyökkääminen

Piilopalvelua vastaan hyökkäämisellä tarkoitetaan tässä tekstissä hyökkäystä, jonka tarkoituksena on selvittää piilopalvelun IP-osoite. Varsinaiseen ajettavaan sovellukseen mahdollisesti sisältyvät haavoittuvuudet sivuutetaan ja tarkastellaan hyökkäämistä Torin piilopalvelutoteutusta vastaan. Hyökkäystavat voidaan jakaa karkeasti kahteen: sellaisiin, joissa hyökkääjällä on hallussaan yksi tai useampi Tor-verkon solmu ja sellaisiin, joissa ei tarvitse hallita Tor-verkon solmuja.

Jälkimmäinen tapaus tulee kyseeseen lähinnä silloin, kun on syytä epäillä että piilopalvelua pyörittävä palvelin toimii myös Tor-verkon solmuna. Näin saatetaan tehdä, jotta piilopalvelun liikenne kätkeytyisi kaiken muun solmun läpi kulkevan Tor-liikenteen sekaan. Kyseisessä menettelytavassa on kuitenkin ongelmana se, että on mahdollista yhdistää piilopalvelu samalla palvelimella olevaan Tor-verkon solmuun vertaamalla piilopalvelun saatavuutta kaikkien Tor-verkon solmujen saatavuuteen. Tämä on mahdollista, sillä kaikkien Tor-verkon solmujen tiedot ovat saatavilla julkisesta tietokannasta. Mikäli korrelaatiohyökkäys onnistuu, piilopalvelun IP-osoite paljastuu.

Mikäli hyökkääjän hallussa oleva Tor-verkon solmu on suoraan yhteydessä piilopalveluun ja hyökkääjä tietää sen, paljastuu piilopalvelun IP-osoite. Hyökkääjä saa helposti haltuunsa Tor-verkon solmun, sillä kuka tahansa voi perustaa sellaisen. Ongelmana on vain saada piilopalvelu ottamaan yhteys hyökkääjän hallussa olevaan solmuun ja tunnistaa tällainen tilanne. Ajatellaan tilannetta, jossa hyökkääjä hallitsee kahta Tor-verkon solmua. Ensimmäinen solmuista toimikoon piilopalvelun asiakkaana ja lisäksi normaalina Tor-verkon solmuna. Toinen solmu toimikoon kohtaamissolmuna. Ajatellaan tilannetta, jossa hyökkääjä ottaa yhteyden piilopalveluun (ks. alla oleva kuva). Hyökkääjän asiakaskone on suoraan yhteydessä kohtaamissolmuun. Tämä on helppo toteuttaa, sillä asiakas valitsee kohtaamissolmun ja hyökkääjä voi Tor-asiakasohjelmistoa muuttamalla muodostaa kohtaamissolmuun suoran yhteyden. Kun piilopalvelu muodostaa yhteyden hyökkääjän hallussa olevaan kohtaamissolmuun, se valitsee satunnaisesti joukon Tor-verkon solmuja, joiden kautta yhteys kulkee. Mikäli piilopalvelu valitsee hyökkääjän hallussa olevan solmun ensimmäiseksi solmuksi, hyökkääjä saa piilopalvelun IP-osoitteen selville.

Havainnekuva piilopalvelua vastaan hyökkäämisestä

Hyökkääjän tulee selvittää onko hänen hallussaan oleva solmu ensimmäinen solmu (ks. yllä oleva kuva). Tämä on helppoa, sillä mikäli hyökkääjän hallussa oleva solmu on toinen solmu, hyökkääjän solmu ja kohtaamissolmu ovat yhteydessä samaan tuntemattomaan solmuun. Mikäli taas hyökkääjän hallussa oleva solmu on kolmas solmu, se on yhteydessä kohtaamissolmuun. Nämä tilanteet pystytään siis tunnistamaan helposti. Kun hyökkääjä muodostaa jatkuvasti uusia yhteyksiä piilopalveluun, on todennäköistä että jossain vaiheessa piilopalvelu valitsee hyökkääjän hallussa olevan solmun ensimmäiseksi solmuksi. Suorittamalla liikenneanalyysiä hyökkääjä pystyy tunnistamaan mitä muodostuneista yhteyksistä käytetään piilopalvelun kanssa asioimiseen (hyökkääjään hallussa oleva solmu on julkinen, joten sen läpi kulkee muitakin yhteyksiä) ja saa siten selville piilopalvelun IP-osoitteen.

Edellä kuvattu hyökkäysmenetelmä on osoitettu käytännössä toimivaksi. Se nojaa kuitenkin siihen, että hyökkääjä saa "pakotettua" piilopalvelun luomaan uusia yhteyksiä kunnes piilopalvelu valitsee hyökkääjän hallussa olevan solmun ensimmäiseksi solmuksi. Hyökkäykseltä voidaan suojautua valitsemalla aina sama solmu ensimmäiseksi solmuksi tai valitsemalla ensimmäinen solmu jostain pienestä joukosta solmuja. Kyseisestä menetelmästä käytetään nimitystä Entry Guard -menettely ja se on otettu nykyään käyttöön Tor-verkossa. Mikäli etukäteen ei tiedetä mitkä solmut ovat luotettavia, Entry Guard -solmut valitaan satunnaisesti. Tällöin on mahdollista, että hyökkääjän hallitsema solmu tulee valituksi, mutta se on melko epätodennäköistä ja tekee onnistuneen hyökkäyksen toteuttamisesta hankalaa. [5, 6]

Yhteenveto

Tor-verkon piilopalveluiden sijainti kätketään samaan tapaan kuin normaalin Tor-verkon asiakkaan sijainti. Piilopalveluiden toiminta perustuu erityiseen kohtaamissolmuun, joka yhdistää piilopalvelun ja asiakkaan luomat anonyymit yhteydet. Yhteydenmuodostuksen jälkeen piilopalvelun ja asiakkaan välillä on mahdollista suorittaa päästä päähän salattua viestinvaihtoa ilman, että piilopalvelu tai asiakas saa tietoonsa toisensa sijainnin. Piilopalvelun sijainti on ollut aikaisemmin mahdollista selvittää tehokkaasti "pakottamalla" piilopalvelu luomaan yhteys hyökkääjän hallinnoimaan solmuun. Nykyään on vastatoimena otettu käyttöön ns. Entry Guard -menettely, joka tekee piilopalvelun sijainnin selvittämisestä erittäin hankalaa.

Lähteet

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmis
Tyyppi Ydin
Luokitus Verkko
Mitä Yksityisyys
Miltä Useita
Missä Järjestelmä
Kuka Titu-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Topic attachments
I Attachment Action Size Date Who Comment
tor-hyokkaus.pngpng tor-hyokkaus.png manage 27.3 K 15 Nov 2012 - 17:47 UnknownUser Havainnekuva hyökkäyksestä piilopalvelua vastaan
tor-yhteydenmuodostus.pngpng tor-yhteydenmuodostus.png manage 57.2 K 15 Nov 2012 - 16:08 UnknownUser Piilopalvelun ja asiakkaan välinen yhteydenmuodostus
Print version |  PDF  | History: r14 < r13 < r12 < r11 | 
Topic revision: r14 - 07 Dec 2012 - 12:26:29 - MikkoKuivaniemi?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback