ZAVOD ZA ELEKTRONIKU, MIKROELEKTRONIKU, RAČUNALNE I INTELIGENTNE SUSTAVE FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SVEUČILIŠTE U ZAGREBU DIPLOMSKI RAD br. 1871 SIMULATOR PROTOKOLA TOR Ivan Šipka Zagreb, listopad 2010. Posveta Elizabeti i Marii. Domagoju, jer jest. Zahvala Mami i tati, inače, a i zato jer su platili tri stotine tisuća kuna kako bi ovaj rad mogao ugledati svjetlo dana. Mentorima na podršci i razumijevanju. Najboljoj studentskoj službi. Sažetak U ovom radu dan je kratak pregled anonimnih računalnih mreža, njihove strukture i povijesti. Osim toga, opisan je protokol Tor te ostvarenje skrivenih usluga u protokolu i njihova nepostavljena poboljšanja. U praktičnom dijelu rada opisan je automat stanja protokola te je podskup protokola ostvaren nad INET okvirom OMNeT++ simulacijskog okruženja. Abstract This work gives a short overview of anonymous computer networks, their structure and history. Besides that, Tor protocol is described alongside with its hidden service implementation and their undeployed improvements. The practical part of this work presents Tor protocol as state machine diagrams, and implements the protocol subset upon INET framework of OMNet++ simulation environment. Sadržaj 1. Uvod...................................................................................................................................1 2. Anonimnost na Internetu....................................................................................................2 2.1. Struktura anonimnih mreža...................................................................................................5 2.2. Ograničenja anonimnosti na Internetu..................................................................................9 2.3. Povijest anonimnih mreža...................................................................................................10 2.3.1. Mreže s visokim kašnjenjem....................................................................................................... 10 2.3.2. Mreže s niskim kašnjenjem......................................................................................................... 11 3. Protokol Tor.....................................................................................................................14 3.1. Virtualni kanali i kriptiranje ukupnog informacijskog toka....................................................17 3.2. Poslužitelji registri mreže ...................................................................................................21 3.3. Algoritam za odabir puta.....................................................................................................24 3.4. Upravljanje zakrčenjem i tokom..........................................................................................26 3.5. Skrivene usluge.................................................................................................................. 28 3.5.1. Čvorovi susreta i čvorovi uvoda.................................................................................................. 29 3.5.2. Lociranje skrivenih usluga........................................................................................................... 30 3.5.3. Čvorovi stražari........................................................................................................................... 31 3.5.4. Čvorovi sluge.............................................................................................................................. 32 3.5.5. Povezivanje s korisničkim programima.......................................................................................33 4. Automati stanja simulacijskih elemenata.........................................................................35 4.1. Tor posrednik...................................................................................................................... 36 4.1.1. Upravljačka komponenta............................................................................................................ 36 4.1.2. Virtualni kanal............................................................................................................................. 38 4.1.3. Tok.............................................................................................................................................. 40 4.2. Tor usmjernik ..................................................................................................................... 41 4.2.1. Upravljačka komponenta............................................................................................................ 41 4.2.2. Virtualni kanal............................................................................................................................. 43 4.2.3. Tok.............................................................................................................................................. 45 4.3. Promet dokumentima stanja...............................................................................................45 5. Praktični rad.....................................................................................................................47 5.1. OMNeT++ INET ................................................................................................................. 48 5.2. Ostvarenje protokola Tor ...................................................................................................51 5.2.1. TCP ljuska.................................................................................................................................. 52 5.2.2. TLS sloj....................................................................................................................................... 55 5.2.3. Tor sloj........................................................................................................................................ 56 5.2.4. Korisnička aplikacija.................................................................................................................... 60 5.3. Simulacija........................................................................................................................... 61 6. Zaključak..........................................................................................................................68 7. Popis kratica.....................................................................................................................69 8. Literatura..........................................................................................................................71 Dodatak A: Gramatike dokumenata stanja..........................................................................73 Dodatak B: Protokolne podatkovne jedinice........................................................................75 Dodatak C: Metrike anonimnosti..........................................................................................78 Dodatak D: Analiza anonimnosti virtualnog kanala ............................................................79 Dodatak E: Definicije i opaske.............................................................................................80 1. Uvod Javno dostupna anonimna komunikacijska usluga po definiciji dozvoljava zlouporabu, no s druge strane osnovna motivacija za projektiranje tog sustava grubo je kršenje osnovnih ljudskih prava, odnosno slobode govora. Neki od poznatijih primjera su Veliki kineski vatrozid, Burma gdje se samo spajanje na Internet smatra disidentskim činom, Egipat gdje spajanje na Internet nije moguće bez identifikacijskog broja građana ili velike količine drugih osobnih podataka. U Iranu, Turkmenistanu, Uzbekistanu, Vijetnamu, Kubi, Siriji i Tunisu zatvaraju se korisnici koji posjećuju nepoćudne stranice sa "mogućim težim posljedicama", dok u Sjevernoj Koreji vlada apsolutna cenzura te država koristi internet za propagandu iako mu samo 4% stanovništva ima pristup. Osim ovih ekstremnih slučajeva, gotovo u svim demokratskim zemljama zlouporabljuje se dostupnost dnevnika mrežnog prometa građanstva, od prodaje podataka privatnim tvrtkama za komercijalne svrhe do perfidnijih varijanti poput osvete institucija/organizacija ljudima koji iznose nepoćudne informacije [37]. Poznati su projekti Carnivore i Echelon iz SAD-a, koji pod krinkom nacionalne sigurnosti prisluškuju i obrađuju promet na Internetu. Njemačka također krši slobodu govora zabranjivanjem pristupa određenim stranicama. Europska unija u trenutku pisanja ovog rada želi pokrenuti praćenje svih "ekstremnih" grupa, no to je formulirano tako da sve što odstupa od "normalnog"može biti tumačeno kao "ekstremno". Ovakva definicija ekstremizma vrlo je opasna za slobodu upravo zbog fleksibilnosti, pogotovo kada se doda podatak kako je također predloženo registriranje svih blogera na području Unije. Socijalne mreže omogućile su pristup podacima koje je prije bilo nezamislivo pribaviti u takvom obimu, a trošak nabave ne postoji – obzirom da korisnici sami postavljaju podatke. Jedan benigan primjer jest da je stanovita tvrtka posluživala stranice s lažnim nižim cijenama kada bi se detektiralo da su posjetitelji iz konkurentske tvrtke [19]. Zlouporaba, iako olakšana postojanjem anonimne mreže, ne bi nestala ukidanjem takve usluge, ali bi obični ljudi time izgubili mogućnost sigurnog korištenja Interneta. Najbolji dokaz jest da su Reporteri bez granica i EFF objavili detaljne upute kako koristiti Tor1 odmah po uključivanju skrivenih usluga2 u protokol u proljeće 2004. god. Razlog tome dijelom leži u činjenici da godišnje na zadatku pogine i do nekoliko stotina novinara [47]. Tor je postavljen u radno stanje u listopadu 2003. godine. Projekt je objavljen je pod GPL kompatibilnom MIT licencom, što znači da je izvorni tekst projekta javno dostupan. Tor projekt između ostalog financiraju nevladine udruge i privatni korisnici te američka vlada koja ga koristi za slanje elektroničke pošte. Iako je objavljen dizajn za anonimiziranje telefonskih sustava kao što je ISDN, a donekle i GSM, ovaj rad baviti će se ožičenim anonimnim računalnim mrežama, tj. Tor mrežom. Zahtjevi anonimne komunikacije u suprotnosti su s osnovnim zadatkom mrežnog i prijenosnog sloja OSI modela. Mrežni sloj zadužen je za logičko adresiranje čvorova mreže, dok je prijenosni sloj između ostalog zadužen za što veću brzinu prijenosa podataka, iz čega je jasno kako je konkretno ostvarenje vrlo izazovan zadatak. Predmet ovog rada je simulacijski model Tor mreže. U prvom dijelu rada daje se kratak pregled anonimnih računalnih mreža, potom slijedi opis protokola te simulacijski model i dodatak. 1 Tor je akronim za engl. "The Onion Routing", u prijevodu: slojevito usmjeravanje. Tor protokol ostvaruje anonimnu komunikacijsku uslugu sa niskim kašnjenjem, temeljenu na virtualnim kanalima. Tor mreža je raspodijeljena prekrivajuća partnerska mreža dizajnirana kako bi se omogućilo anonimno korištenje aplikacija koje koriste TCP, poput pretraživanja Interneta, korištenja sigurne ljuske te raznih programa za video, audio i tekstualnu komunikaciju. Koristi TCP odnosno TLS protokol. 2 Skrivene usluge (engl. location hidden services) omogućuju postavljanje mrežne usluge, poput Web stranice, bez da klijenti vide IP adresu usluge. 1 2. Anonimnost na Internetu Anonimnost dolazi od grčke riječi anonymia što u doslovnom prijevodu znači "bezimeno" [5]. U kolokvijalnoj upotrebi označava nemogućnost određivanja identiteta nekog entiteta, npr. kratak poziv s telefonske govornice bez predstavljanja, djelo nepoznatog autora i sl.. Dakle, nemogućnost imenovanja osobe. "Anoniman poziv" u kontekstu ovog rada može značiti nemogućnost lociranja telefonske govornice s koje je obavljen poziv. U nekom drugom scenariju "anoniman poziv" mogao bi značiti nemogućnost prisluškivanja prometa na kanalu. Osnovno je pitanje prema kome se želi biti anoniman, odnosno što je prema čemu anonimno. Pri komunikaciji računalnom mrežom moguće je da je dostupna logička adresa korisnika na mreži, koja može biti povezana s geografskom lokacijom ili pokretom te može biti povezana i sa stvarnim identitetom korisnika [28]. Na slici 2.1 prikazana je globalna računalna mreža Internet kao skup međusobno povezanih autonomnih sustava koji koriste BGP za usmjeravanje. Autonomni sustav je skup međusobno povezanih TCP/IP čvorova sa jasno definiranom politikom usmjeravanja. Obično su to pružatelji mrežnih usluga (ISP), ali mogu biti i privatne organizacije. Slika 2.1: Internet kao skup međusobno povezanih autonomnih sustava. Klijenti se na Internet povezuju preko različitih tipova mreža koristeći različite protokole o čemu izravno ovisi njihova anonimnost. Primjerice, korisnik koji se spaja na Internet preko kućnog računala koristeći priključak javne telefonske mreže nije anoniman u odnosu na lokalni autonomni sustav. Pružatelju mrežne usluge dostupan je dnevnik koji povezuje logičku odnosno IP adresu korisnika s telefonskim priključkom, odnosno adresom i identitetom vlasnika priključka. S druge strane, korisniku koji se s pomoću prijenosnog računala povezuje na javnu gradsku bežičnu mrežu moguće je odrediti samo logičku odnosno MAC adresu. Korisnike bežičnih mreža moguće je locirati uz dodatno uložen trud koji ovisi o konkretnoj mreži preko koje je korisnik povezan. Ukoliko mrežni resurs koji korisnik zatraži nije dostupan unutar lokalnog autonomnog sustava promet se preusmjerava prema definiranoj politici usmjeravanja vanjskim autonomnim sustavima (A i B na slici 2.1). Vanjskom autonomnom sustavu logička IP adresa ne otkriva identitet korisnika, ali je ipak moguće narušiti anonimnost korisnika. Krajnji korisnici nemaju stalne IP adrese pa je puno upotrebljiviji, tj. trajniji, identifikator HTTP kolačić (engl. cookie) koji sadrži razne informacije, a u pravilu služi za autentifikaciju klijenta na poslužitelju. Osim toga, moguće je doći i do stvarnog identiteta ukoliko korisnik primjerice provjerava elektronsku poštu ili koristi socijalne mreže upotrebljavajući pri tom pravo ime. Na taj način 2 2. Anonimnost na Internetu moguće je stvarati dnevnike mrežnog prometa građanstva. Svaki autonomni sustav u potpunosti može promatrati i mijenjati promet koji opslužuje. Neke državne i međudržavne organzacije (vlade, policije, Interpol i sl.) u pravilu mogu doći do dnevnika mrežnog prometa pravnim putem. Očito je da anonimnost krajnjih korisnika Interneta može biti ugrožena bez njihova znanja. Kako bi se moglo sustavno govoriti o anonimnosti potrebno je prvo definirati stupanj njene ugroženosti. Napadač se definira kao entitet koji želi djelomično ili potpuno deanonimizirati sustav. Može to učiniti tako da poveže primatelja i pošiljatelja, identificira primatelja ili pošiljatelja konkretne poruke te onemogući sam sustav. Napadač po snazi napada može biti aktivan odnosno unutarnji ili pasivan odnosno vanjski. Aktivni ili unutarnji napadač može kompromitirati čvorove, tj. upravlja dijelom čvorova sustava, a može mijenjati poruke. Vanjski ili pasivni napadač može kompromitirati veze, tj. nema kontrolu nad nijednim čvorom, ali može prisluškivati promet među njima. Napadač po opsegu može biti lokalan ili globalan. Globalni napadač je sveprisutan i ima pristup cijeloj mreži odnosno svim vezama i čvorovima. Lokalni napadač je ograničeno sveprisutan i ima pristup dijelu mreže odnosno dijelu veza i čvorova. Napadač po prilagodljivosti može biti statički ili dinamički. Dinamčki napadač prikuplja sve raspoložive podatke s kompromitiranih veza i čvorova kako bi otkrio tko je poslao ili primio koju poruku, tj. koristi apriorno i aposteriorono znanje. Statički napadač koristi samo apriorno znanje. Najčešće je napadač dinamički [28]. Metode kvantifikacije anonimnosti su mnogobrojne pa će se ovdje spomenuti samo najjednostavnija i najstarija metoda, kvantifikacija pomoću kardinalnog broja skupa [29]. Vrlo kratak pregled preostalih metrika anonimnosti dan je u dodatku C. Na slici 2.2 prikazani su najveći mogući skupovi anonimnosti pošiljatelja i primatelja u odnosu na globalnog aktivnog napadača [20]. Skup anonimnosti korisnika sustava u odnosu na napadača skup je svih korisnika sustava, kao na slici 2.2. Skup anonimosti primatelja za zadanog pošiljatelja u odnosu na napadača skup je svih pošiljatelja za koje napadač zna da su mogli poslati poruku primatelju kao na slici 2.4. Anonimnost je razmjerna kardinalnom broju skupa anonimnosti. Ovaj koncept široko je usvojen i koristi se za kvantifikaciju svojstava anonimnosti. Slika 2.2: Anonimni komunikacijski sustav, korisnici i napadač. Temeljna svojstva anonimnosti podrazumijevaju nemogućnost identificiranja (engl. unidentifiability) i nepovezivost (engl. unlinkability) [20] [28] [32]. Nemogućnost identificiranja podrazumijeva anonimnost pošiljatelja (engl. sender anonimity), anonimnost primatelja (engl. reciever anonimity), uzajamnu anonimnost (engl. mutual anonimity) te lokacijsku anonimnost (engl. location anonimity) i grupnu anonimnost (engl. group anonimity). Anonimnost primatelja znači da identitet primatelja ostaje skriven pri primanju poruke. Drugim riječima, napadač ne može povezati konkretnu poruku s konkretnim primateljem, već sa skupom 3 2. Anonimnost na Internetu anonimnosti primatelja. Anonimnost pošiljatelja znači da identitet pošiljatelja ostaje skriven pri slanju poruke. Drugim riječima, napadač ne može povezati konkretnu poruku s konkretnim pošiljateljem, već sa skupom anonimnosti pošiljatelja. Uzajamna anonimnost znači da identitet primatelja ostaje skriven od identiteta pošiljatelja i obrnuto. Lokacijska anonimnost znači da napadač ne može povezati nijednu konkretnu poruku s mjestom, gibanjem, rutom ili topološkim informacijama. Grupna anonimnost znači da identitet grupe kojoj je poruka poslana ostaje skriven. Drugim riječima, napadač ne može povezati nijednu konkretnu poruku s grupom ili konkretnom grupom korisnika. Nijedan poznati sustav ne ispunjava grupnu anonimnost. Predmet interesa (engl. item of interest) predstavlja bilo koji entitet koji može biti interesantan u smislu narušavanja anonimnosti: idenitifikator – ime, pseudonim ili digitalni pseudonim; slanje ili primanje poruke, poruka sama, pravna ili stvarna osoba, čvor pošiljatelj ili primatelj, vanjski ili unutarnji čvor, naručitelj ili izvršitelj neke akcije u sustavu [20]. Nepovezivost znači da napadač ne može povezati predmete interesa, tj. da apriorno znanje ostaje jednako aposteriornom znanju – znanju dobivenom nakon napada. Nepovezivost podrazumijeva komunikacijsku anonimnost (engl. communication/relationship anonimitiy) [18] [28] i grupnu komunikacijsku anonimnost (engl. group communication anonimity) [28]. Komunikacijska anonimnost znači da napadač ne može konkretnu poruku povezati s bilo kojim parom pošiljateljprimatelj odnosno da ne može povezati bilo koju poruku s konkretnim parom pošiljatelj-primatelj. Grupna komunikacijska anonimnost analogna je komunikacijskoj anonimnosti samo što se umjesto para pošiljatelj - primatelj uzima par grupa pošiljatelja – grupa primatelja. Pseudonim je identifikator entiteta koji ne sadrži njegov pravi identitet [20]. U doslovnom prijevodu s grčkog znači "lažno nazvan" [5]. Korištenje pseudonima jedan je od kritičnih mehanizama za postizanje anonimnosti. Definicije identiteta i neuočljivosti dane su u dodatku E. Anonimnost je moguće promatrati u ovisnosti o obliku komunikacije koja se odvija između pošiljatelja i primatelja [32]. Većina komunikacije odvija se pomoću TCP-a – koji se temelji na vezama što je analogno komutaciji kanala – ali se dobar dio komunikacije u višim slojevima, primjerice elektronska pošta, temelji na porukama što je analogno komutaciji paketa. Anonimnost sustava temeljenog na porukama jednostavniji je problem od anonimnosti sustava temeljenog na vezama, jer su veze znatno trajniji entiteti od poruka. Slika 2.3: Anonimizirajući OSI model. 4 2. Anonimnost na Internetu Općenito govoreći, komunikacijski protokoli pretpostavljaju identifikaciju čvorova u normalnom radu te je takve identifikatore potrebno odstraniti, odnosno zamijeniti pseudonimima. Globalna računalna mreža čije će čvorove osiguravati dobrovoljci mora biti lako postavljiva u radno stanje. Stoga se anonimiziranje računalnih mreža vrši iznad prijenosnog odnosno prezentacijskog sloja OSI modela, jer bi u suprotnom bile potrebne preinake mrežnog stoga operacijskih sustava čvorova domaćina. Uz takva ograničenja i krajnji korisnik anonimne mreže mora biti svjestan da mora koristiti anonimnu mrežu na anoniman način. Anonimne mreže razvile su se u dvije osnovne kategorije – mreže s visokim i niskim kašnjenjem. Mreže s visokim kašnjenjem nisu prikladne za interaktivne zadaće kao što su: surfanje Internetom, video, audio ili tekstualnu komunikaciju te SSH promet. Međutim, sigurnije su od mreža s niskim kašnjenjem. Uglavnom se koriste za slanje elektronske pošte. Mreže s visokim kašnjenjem temeljene su na porukama, dok su mreže s niskim kašnjenjem temeljene na vezama. 2.1. Struktura anonimnih mreža U ovom potpoglavlju dan je pregled metoda za postizanje anonimnosti. Anonimnost primatelja može se postići kombiniranom upotrebom difuzije i implicitnih adresa. Osnovna ideja prikazana je na slici 2.4. Umjesto da se poruka šalje jednom primatelju, šalje se skupu primatelja. Kako bi primatelj mogao znati da je poruka namijenjena njemu, ista mora sadržavati informaciju po kojoj se može prepoznati da je poruka namijenjena točno tom primatelju i nikome drugome. Ta informacija je implicitna adresa i može biti ostvarena upotrebom asimetričnog kriptosustava. Slika 2.4: Anonimnost primatelja upotrebom difuzije i implicitnih adresa. Na slici 2.4 također je prikazana i slabost ove metode: Ukoliko napadač kontrolira sve primatelje osim pravog u skupu anonimnosti primatelja, pravi primatelj je kompromitiran. Osim što pošiljatelj nije anoniman, ova metoda ne može se dovoljno dobro skalirati da bi bila od praktične vrijednosti. Metoda za postizanje anonimnosti pošiljatelja i primatelja temelji se na poznatom Chaumovom problemu kriptografa na večeri koji je prikazan na slici 2.5. Troje kriptografa nakon večere u restoranu bivaju obaviješteni da je večera plaćena. Mogao ju je platiti bilo tko od njih ili njihov poslodavac (NSA). Ne žele saznati tko je od njih platio večeru, ali žele saznati ako je večeru platio poslodavac. Slika 2.5: problem tri kriptografa Stoga postupaju po sljedećem protokolu: svaki kriptograf baca novčić tako da ishod bacanja vidi samo njegov lijevi susjed. Ako su oba bacanja različita svaki od njih izjavljuje "različito", inače izjavljuje "isto". Međutim, ako je neki kriptograf platio večeru on izjavljuje suporotno od stvarnog 5 2. Anonimnost na Internetu ishoda. Ako je broj odgovora "isto" paran, poslodavac je platio večeru - na slici 2.5 lijevo, inače je netko od kriptografa platio večeru - na slici 2.5 desno. Izjavljujući samo jesu li oba bacanja ista ili različita gubi se dio informacije o ishodima bacanja što jamči anonimnost kriptografu koji je platio večeru. Na ovom načelu temelje se DC mreže. Svi partneri spojeni su tako da tvore potpuno povezani graf te svaki sa svakim dijeli zajednički ključ. Svaki partner računa modulo dva sumu svih ključeva koje posjeduje – što je analogno bacanju novčića – te je šalje svim ostalim partnerima - što je analogno izjavljivanju ishoda. Potom svaki partner računa modulo dva sumu svih primljenih suma. Ako je svaki partner poslao korektnu sumu tada modulo dva suma svih primljenih suma iznosi nula, jer se svaki ključ zbraja sam sa sobom dva puta – svaki par partnera dijeli ključ. To znači da nijedan partner nije poslao poruku, što je analogno tome da je poslodavac platio večeru. Inače, ako partner želi poslati poruku prije slanja komplementira sumu pa je modulo dva suma svih suma jedan – što je analogno tome da je netko od kriptografa platio večeru [33]. Ukoliko više partnera istovremeno šalje poruku dolazi do kolizije. Obzirom da su DC mreže i u teoriji slabo obrađene neće se dalje razmatrati. DC mreže nisu praktično upotrebljive jer prepostavljaju uspostavljanje zatvorenog skupa anonimnosti tj. infrastrukture ključeva prije slanja poruka, imaju veliki višak prometa te je potrebna i logika za detektiranje kolizije [32]. Usmjernik mješač je osnovni gradivni element za anonimne pošiljaoce elektroničke pošte. Prvi mješač, mješač s pragom (engl. threshold mix) uveo je David Chaum u teoretskoj mreži MIX-Net [29]. To je usmjernik koji prima poruke, a prosljeđuje ih tek kada je primio zadani broj (prag) poruka. Mješač s bazenom (engl. pool mix) prima poruke te nakon što prođe zadani interval vremena, slučajnim redoslijedom prosljeđuje neke od njih. Kontinuirani ili stani-kreni mješač (engl. continuous/stop-and-go mix) svaku poruku zadržava određeno vrijeme koje je nasumce zadano po eksponencijalnoj razdiobi. Mješači se mogu slagati u prospojne mreže (engl. cascades) odnosno nizove usmjernika otežavajući tako dodatno analizu prometa. Zato su i sve poruke iste duljine. Poruka se prije slanja kriptira javnim ključem svakog MIX čvora na putu što osigurava tajnost i integritet prometa. Na slici 2.6 poruke su označene velikim slovima, a svaki krug predstavlja sloj enkripcije. Svaki čvor na putu dekriptira poruku i prosljeđuje ju sljedećem. Slika 2.6: MIX-Net: lukovo usmjeravanje kroz prospojnu mrežu mješača s pragom. Slika 2.7: MIX-Net: slojevito usmjeravanje kroz prospojnu mrežu mješača s pragom. 6 2. Anonimnost na Internetu MIX čvorovi odabiru se po uniformnoj razdiobi, a svaki čvor na putu zna samo za svog prethodnika i sljedbenika. Ni prvi čvor na putu ne zna prima li poruke od korisnika ili drugog čvora. Time je osigurana anonimnost pošiljatelja. Kako je MIX-Net namijenjen za jednosmjernu komunikaciju ne postoji anonimnost primatelja. Time je ispunjena i uzajamna anonimnost. Lokacijska anonimnost, koja je definirana kao pojam tek 2009. godine [28], pretpostavlja se kroz uvjet da čvorovi nisu kompromitirani. Nepovezivost se postiže kašnjenjem prometa na putu što je detaljnije objašnjeno u sljedećem potpoglavlju. Dakle, anonimnost je zajamčena. Ova metoda poznata je kao slojevito usmjeravanje prve generacije (engl. onion routing). Ako je potrebna dvosmjerna komunikacija, moguće ju je osigurati upotrebom pseudonima. Svaki enkripcijski sloj uz poruku sadrži i identifikatore prethodnika i sljedbenika. Obzirom da čvorovi na putu posreduju za pošiljatelja, a ni prvi čvor ne zna da je njegov prethodnik upravo pošiljatelj, može se reći kako su identifikatori čvorova na putu pseudonimi pošiljatelja. Kada se radi o interaktivnoj dvosmjernoj komunikaciji nužno je uspostavljanje i održavanje trajnije veze između izvorišta i odredišta, kao i nisko kašnjenje prometa kroz sustav što narušava nepovezivost. Što vrijeme dulje prolazi opasnost od kompromitacije je veća, odnosno anonimnost veza obrnuto je razmjerna njihovu trajanju. Stoga je bitno da se nakon isteka zadanog intervala vremena izgradi nova veza. Slojevito usmjeravanje sa spajanjem poruka (engl. garlic routing) varijanta je slojevitog usmjeravanja kod kojeg različite poruke prolaze po etapama puta proizvoljno spojene kako bi se otežao napad analizom prometa. Slika 2.8: slojevito usmjeravanje sa spajanjem poruka u I2P-u, slanje višestruko kriptirane poruke B kroz jednosmjerni kanal sastavljen od izlaznog tunela izvorišta i ulaznog tunela odredišta Za ostvarenje anonimne mrežne usluge, tj. tzv. skrivene usluge, potrebno je osigurati stalnu dostupnost odredišta upotrebom pseudonima, kao i da izvorište i odredište ne komuniciraju izravno kako bi zahtjev anonimne komunikacije ostao zadovoljen. Izvorište i odredište povezuju se na čvor susreta koji je prethodno definiran pseudonimom usluge te preko njega ostvaruju komunikaciju. Radi postizanja zadovoljavajuće anonimnosti povezivanje se u pravilu vrši preko više posrednika. Koncept skrivenih usluga prvi puta je iznesen u sustavima za ISDN telefoniju. Rješenja koja su se kasnije pojavila koristila su točke susreta kao metodu skrivanja lokacije mobilnih telefona. Prva upotreba u komunikacijskim sustavima na Internetu predložena je u ranim radovima vezanim za slojevito usmjeravanje, ali je prvi upotrebljivi dizajn objavio Ian Goldberg u disertaciji “PIP Pseudonymous Internet”. Anonimne mreže može se podijeliti na ožičene i bežične. Bežične mreže izlaze iz okvira ovog rada, dok se ožičene mogu dalje podijeliti prema topologiji na partnerske mreže te kaskadne sustave i 7 2. Anonimnost na Internetu sustave sa slobodnim odabirom puta. Daljnja podjela moguća je prema strategiji usmjeravanja, s time da kaskadni sustavi i sustavi sa slobodnim odabirom puta koriste isključivo jednoodredišno usmjeravanje, dok partnerske mreže uz spomenutu strategiju koriste difuziju, difuziju u grupi i difuziju u proizvoljnoj grupi (engl. anycast) – od svih poslanih poruka samo jedno odredište dobiva poruku. Posljednji kriterij je isporučena anonimnost. Ova podjela grafički je prikazana na slici 2.8, a zove se kubična taksonomija anonimnih mreža [28]. Slika 2.9: Kubična taksonomija anonimnih mreža. 2.2. Ograničenja anonimnosti na Internetu Anonimne mreže moraju jamčiti potrebnu razinu anonimnosti korisnicima. Mjera za kvalitetu naziva se stupanj anonimnosti i predstavlja otpornost sustava na napadača. Iz perspektive sustava modelira se napadač. Model vanjskog pasivnog napadača neovisan je o ostvarenju sustava, dok je model aktivnog unutarnjeg napadača ovisan o konkretnom ostvarenju. Odabiranje odredišta od strane korisnika dvojake je prirode: u osnovi je slučajno, ali ipak slijedi neke pravilnosti – vjerojatno je da će se korisnici vraćati na neke stranice te je manje vjerojatno da će svi korisnici posjećivati sve stranice. To znači da je promatranjem ulaza i izlaza sustava promet na njima moguće vrednovati metodama stohastičke analize, ponajprije teorije vjerojatnosti. U tom smjeru, shvati li se anonimni korisnik kao onaj o kojem napadač ne zna dovoljno da bi ga mogao identificirati, može se reći kako taj korisnik ima dovoljno visoku informacijsku entropiju. Nasuprot tome, želi li se u potpunosti kompromitirati sustav, osnovni problem postaje sparivanje ulaza i izlaza sustava što je poznat problem iz teorije grafova. Napadač može promatrati i promet na kanalu, tj. brojati ga i bilježiti u vremenu pa se sparivanje može provesti korelacijskim metodama. Želi li se dati globalna ocjena sustava potreban je matrični račun, a i problem savršenih sparivanja ekvivalentan je problemu računanja permanenta matrice. Kada bi korisnici potpuno nasumično odabirali odredišta, tj. kada bi raspodjela korisnika po odredištima bila uniformna za svakog korisnika, jedina metoda razlikovanja informacijskih tokova kroz sustav bila bi korelacija prometa u vremenskoj domeni. Kada bi korisnici bili stalno spojeni na sustav i stalno slali podatke, jedini način koji bi preostao napadaču bio bi da selektivno blokira ulaze sustava te promatra koji su informacijski tokovi na izlazima nestali [18]. Potonje pretpostavlja aktivnog napadača. 8 2. Anonimnost na Internetu Dakle, idealan, odnosno anonimni komunikacijski sustav je onaj čije ulaze i izlaze ne može blokirati napadač dok korisnici ostaju stalno spojeni na sustav povezujući se neprestano na potpuno nasumična odredišta. Očito, ovakav je zahtjev gotovo nemoguće zadovoljiti u okviru postojeće komunikacijske infrastrukture, ali je otvoreno pitanje koliko mu se može približiti. Globalni pasivni napadač koji poznaje ponašanje korisnika, tj. poznaje dovoljno točnu raspodjelu odredišta po korisniku, identificirati će korisnika u prihvatljivom vremenu. U [26] naveden je napad statističkim razotkrivanjem, odnosno osnovno ograničenje anonimnog komunikacijskog sustava na globalnog pasivnog napadača. Pretpostavlja se da je sustav idealno neranjiv na sve osim na globalnog pasivnog vanjskog napadača. Ova analiza može se tumačiti i kao prospojna mreža mješača u kojoj su svi čvorovi, osim jednog, kompromitirani [27]. Oba rada dolaze do istog rezultata, ali je napad iz [26] učinkovitiji, jer se temelji na zakonu velikih brojeva, dok prethodni tumači problem u formi problema zadovoljenja ograničenja (engl. constraint satisfaction problem). Kritična komponenta anonimnosti je kašnjenje prometa kroz sustav – količina prometa potrebnog za deanonimiziranje pošiljatelja raste eksponencijalno s povećanjem vrijednosti praga mješača. Čim se dulje promet zadržava u sustavu, tim je teže zadovoljavajuće korelirati ulaze s izlazima sustava. Povećanje broja primatelja, odnosno kardinalnog broja skupa anonimnosti primatelja za zadanog pošiljatelja također uzrokuje eksponencijalni rast količine potrebnog prometa. S druge strane, količina potrebnog prometa logaritamski opada s povećanjem ukupnog broja korisnika sustava, odnosno s povećanjem kardinalnog broja skupa anonimnosti pošiljatelja i primatelja. Čim je više korisnika na sustavu tim je vjerojatnije da su skupovi anonimnosti primatelja za pojedine pošiljatelje disjunktni. Za mreže s visokim kašnjenjem moguće je povećati kašnjenje povećanjem vrijednosti praga mješača, međutim to znači da mreže s niskim kašnjenjem ostaju ranjive na napad s-kraja-na-kraj tj. analizu prometa i to je osnovno ograničenje mreža s niskim kašnjenjem na Internetu. Može se zaključiti kako anonimnost sustava eksplicitno ovisi o kašnjenju prometa kroz sustav, količini i konfiguraciji aktivnih veza u sustavu te modelu napadača. Količina veza ovisi o broju korisnika sustava, koji implicitno ovisi o društvenoj reputaciji sustava. 2.3. Povijest anonimnih mreža 2.3.1. Mreže s visokim kašnjenjem Prvu anonimnu mrežu MIX-Net dizajnirao je 1981. god. David Chaum. Bila je predviđena za anonimno slanje elektroničke pošte. Poruka se prije slanja kriptira u slojevima koristeći asimetričnu kriptografiju. Poruka prolazi kroz prospojnu mrežu mješača s pragom. Dodatno, svaki mješač na putu dekriptira vanjski sloj, zadržava poruke određeno vrijeme te im mijenja redoslijed [29]. Prvi anonimni pošiljatelj pošte anon.penet.fi postavio je u radno stanje Finac Johan "Julf" Helsingius 1993. godine. Radilo se o jednom poslužitelju koji se od običnog poslužitelja elektronske pošte razlikovao samo po tome što je vezao stvarne adrese elektronske pošte na pseudonime (engl. nym server). Pri slanju pošte, korisnikova poruka bi na odredište stigla s izvorišnom pseudonimnom adresom, a eventualni primljeni odgovor - poslan na pseudonimnu adresu - bi poslužitelj pomoću spomenute tablice prosljedio stvarnom primatelju. To je tip 0 (engl. type 0) anonimnih pošiljaoca elektroničke pošte. Obzirom da između pošiljatelja i primatelja postoji samo jedan posrednik, ovakav je dizajn vrlo nesiguran. Ovaj pošiljatelj značajan je jer je ukazao na pravni model prijetnje te je ujedno pokazao koliko je društvena reputacija sustava bitan parametar anonimnosti. Prvi medijski napad bile su nepotvđene 9 2. Anonimnost na Internetu šture informacije o kompromitaciji poslužitelja na DEFCON konferencijama u ljeto 1994. godine. Prvi pravni napad izvršila je Scijentološka crkva u veljači 1995. godine tvrdeći da je ukradena datoteka s njihovog poslužitelja poslana upravo preko sustava u krađi podataka. Kontaktirali su Interpol, koji je kontaktirao finsku policiju, a Helsingius je uspio postići kompromis tako da oda samo traženog korisnika. Taj korisnik bio je sistem-administrator Scijentološke crkve i njegova je sudbina nepoznata nakon što je kompromitiran. Drugi medijski napad izvršio je Observer objavivši članak koji je zbog što veće čitanosti lažno tvrdio kako 75% do 90% svjetskog prometa dječjom pornografijom prolazi kroz sustav, iako su ostvarene protumjere poput ograničavanja veličine poruke na 16 KB. Finska policija nije pronašla nikakve dokaze da je i jedna takva slika prošla kroz sustav. Scijentološka crkva ugasila je sustav drugim pravnim napadom u kolovozu 1996. godine, tvrdeći da je poslana datoteka kroz sustav čime su narušena njihova autorska prava. Ironija je u tome što je naknadna istraga pokazala da je korisnik koji je zlouporabio sustav koristio drugi anonimni pošiljaoc pošte tipa 0 alpha.c2.org , koji nije mapirao prave i pseudonimne adrese te stoga krivac nikad nije pronađen. Taj poslužitelj ugašen je 27. svibnja 1996. godine zbog "masovne zlouporabe" [34]. Presuda da administrator mora odati dnevnike poslužitelja bila je protivna finskom ustavu, ali svejedno je izvršena i anon.penet.fi morao je stati s radom, obzirom da više nije mogao jamčiti anonimnost korisnicima [38]. Cypherpunk je ostvaren 2000. godine i koristi slojevitu asimetričnu PGP enkripciju, ali ne miješa poruke iako ih šalje kroz slijed čvorova. Unatoč tome može osiguravati dobru anonimnost u smislu nepovezivosti obzirom da ne koristi pseudonime – nema mogućnosti odgovora na poslanu poruku. Ipak, ako su poruke premalene globalni napadač može kompromitrati sustav analizom prometa. To je anonimni pošiljatelj pošte tipa I (engl. type I). Mixmaster je ostvaren 2001. godine. Prednost u odnosu na tip I jest što koristi ispunu poruka i miješanje poruka u čvorovima na putu kako bi otežao napad analizom prometa. Svaka poruka ima vlastiti identifikator i vremenski pečat kako bi se onemogućio napad ponavljanjem. Također ne postoji mogućnost odgovora na poruku. Osim nepovezivosti, jamči i anonimnost pošiljatelja. To je anonimni pošiljaoc pošte tipa II (engl. type II). Mixminion je najmoderni anonimni pošiljaoc pošte, pošiljaoc tipa III (engl. type III). Ostvaren je 2003. godine. Omogućava odgovor na poruku te koristi lažni promet kako bi se onemogućila analiza prometa. Poruke se razdvajaju u pakete koji se ispunjuju do fiksne veličine te kriptiraju javnim ključem svakog poslužitelja na putu. Svaki od njih dekriptira pakete, mijenja im redoslijed te ih prosljeđuje sljedećem čvoru na putu. U samoj poruci šalje se informacija o pošiljatelju koju tek primatelj poruke može ispravno protumačiti. Koristi unaprijednu anonimnost (svaki čvor na putu zna samo svog prethodnika i sljedbenika) i slobodni odabir puta. Također koristi TLS protokol. Po svemu navedenom sličan je drugoj generaciji slojevitog usmjeravanja. Onemogućuje napad ponavljanjem kao što je navedeno za tip II, a obzirom da posrednici na putu ne mogu razlikovati poslane poruke od odgovora, skup anonimnosti pošiljatelja i primatelja u ovom je slučaju njihova unija, što jamči maksimalnu moguću anonimnost u smislu skupa anonimnosti. Osim toga, jamči nepovezivost te anonimnost pošiljatelja i primatelja. 2.3.2. Mreže s niskim kašnjenjem Najjednostavniji predstavnik mreža s niskim kašnjenjem je Anonymizer. Ostvaren je 1997. godine, a više nije u upotrebi. Sav promet ide kroz jedan poslužitelj koji je komponenta od povjerenja. U osnovi, to je netransparentni HTTP posrednik koji uklanja sve identifikacijske podatke iz HTTP zaglavlja, kao i adrese pošiljatelja. Prednosti ovog sustava su što ima izuzetno nisko kašnjenje te je 10 2. Anonimnost na Internetu jednostavan za korištenje. Anonimizira HTTP za pošiljatelja. Postoji samo jedan čvor na putu, ne koristi enkripciju, a i dnevnici se čuvaju pa je anonimnost gotovo zanemariva. Osim toga, ranjiv je na (D)DoS napad te potpuno neotporan na analizu prometa. Onion Routing, odnosno slojevito usmjeravanje prve generacije ostvareno je 1998. godine. Namijenjeno je anonimnom surfanju, interaktivnoj tekstualnoj komunikaciji (IRC) kao i korištenju SSH ljuske. Koristi TCP odnosno TLS protokol, komutaciju kanala i asimetričnu slojevitu enkripciju kako bi osiguralo anonimnost. Koristi i lažni promet kako bi otežalo napad analizom prometa. Anonimni pošiljaoc pošte tipa I u biti je prospojna mreža čvorova s predefiniranim odabirom puta fiksiranim na duljinu od pet čvorova. Pozitivna strana ovog pristupa je što spajanjem nezavisnih aplikacijskih tokova u jedan kriptirani tok uvelike otežava napad analizom prometa, ali je s druge strane ranjiv na napadača koji istovremeno motri dijelove mreže. Jamči anonimnost pošiljatelja i nepovezivost. Dizajn Crowds mreže objavljen je 1998. godine, namijenjen je surfanju i nadogradnja je Anonymizer protokola. Pretpostavlja se da napadač ne može nikako promatrati promet pošiljatelja te stoga ne koristi nikakvu enkripciju, već samo HTTP. Korisnikov promet prolazi kroz slijed nasumce odabranih čvorova (engl. jondo). Dozvoljavaju se ciklusi na putu. Svaki čvor na putu nasumce odabire nasumični broj sljedećih čvorova koji će tvoriti put. Time se jamči se anonimnost pošiljatelja, a dok god pošiljatelj ne pošalje identifikacijske podatke jamči se nepovezivost. Slabost ovog pristupa jest što zadnji čvor na putu zna tko je primatelj pa nema anonimnosti primatelja. Freedom Network sličan je slojevitom usmjervanju, ali koristi mrežni sloj. Ostvarena je 2000. godine, a namijenjena je surfanju, korištenju Telneta, SSH i slanju pošte. Također koristi slobodni odabir puta na način da se odabire kaskada nasumične duljine. Učinkovita je i relativno sigurna od (D)DoS napada. Slabost joj je ovisnost o aplikacijama i ranjivost na analizu prometa. Osigurava anonimnost pošiljatelja. Hordes je nadogradnja Crowdsa i ostvarena je 2002. godine. Čvorovi su UDP posrednici, a koristi se difuzija u grupi čime je postignuta anonimnost pošiljatelja. Dozvoljava cikluse i, kao kod Crowdsa, anonimnost primatelja ne postoji, ali zbog korištenja difuzije u grupi jamči se i nepovezivost. Dizajn za P5 je objavljen 2002. godine. Korisnici su organizirani u grupe i pomoću difuzije šalju poruke po hijerarhijskoj stablastoj strukturi, što jamči anonimnost primatelja, Kako bi se osigurala anonimnost primatelja i nepovezivost čvorovi konstantno šalju uniformno raspodijeljen šum. Iako je skalabilan ima najveći višak zaštitnih bitova u odnosu na korisnu bitove od svih anonimnih mreža. Tarzan je partnerska prekrivajuća mreža koja liježe na mrežni sloj, a dizajn je objavljen 2002. godine te također koristi slojevitu enkripciju i slobodan odabir (duljine) puta. Koristi i lažni promet, a jamči anonimnost pošiljatelja, anonimnost primatelja i nepovezivost. Ponovno uspostavljanje veze je skupo. Dizajn za Herbivore objavljen je 2003. godine. Koristi se za surfanje i razne druge aplikacije. Rješava problem DC mreža na način da umjesto difuzije korisi zvjezdastu topologiju, a prijeko potrebno uspotavljanje zatvorenog skupa anonimnosti (razmjene zajedničke tajne informacije) prije slanja poruka dijeli u tri koraka. Time postiže dobru anonimnost, ali je nedostatak što abnormalni odlazak čvora s mreže jako narušava anonimnost. Java Anon Proxy ili WebMIX dizajniran je prvenstveno za anonimno surfanje i ostvaren je 2004. godine. Osnovna ideja je da se korisniku daje izbor preko koje predefinirane kaskade želi prosljeđivati promet. Svi korisnici dijele istu adresu (ulaze preko istog čvora) stoga se jamči 11 2. Anonimnost na Internetu anonimnost pošiljatelja i nepovezivost. Koristi enkripciju i lažni promet te tako, uz navedeno, otežava analizu prometa. The onion routing ili slojevito usmjeravanje druge generacije ostvareno je 2004. godine. Tor ne koristi lažni promet i stoga je izuzetno ranjiv na analizu prometa globanog napadača. Trenutno je najveća anonimna mreža u radnom stanju od gotovo dvije tisuće čvorova. Obzirom da koristi slobodni odabir puta, može jamčiti anonimnost pošiljatelja, anonimnost primatelja te nepovezivost. Dizajn za WonGoo je objavljen 2004. godine, a nadogradnja je Crowds-a te je skalabilan i otporan na prisluškivanje i analizu prometa. Koristi slojevitu enkripciju i nasumično usmjeravanje što jamči anonimnost pošiljatelja. Dizajn za Cashmere objavljen je 2005. godine i preusmjerava promet kroz kaskade grupa čvorova. Čvor koji primi poruku difuzijom u proizvoljnoj grupi šalje sljedećoj grupi poruku i difuzijom šalje svima u svojoj grupi istu poruku. Jamči anonimnost pošiljatelja kao i nepovezivost a može se nadograditi da jamči i anonimnost primatelja. Upravljanje ključevima nije zadovoljavajuće riješeno. Dizajn za MAM je objavljen 2006. godine. To je samoorganizirajući raspodjeljeni protokol koji koristi jednoodredišno slanje i difuziju u grupi a namijen je video konferencijama, učenju na daljinu i nadogradnjama softvera. Dizajniran je da jamči anonimnost primatelja i pošiljatelja te nepovezivost i neprimjetljivost. Najbolje radi na manjim mrežama. I2P je u potpunosti raspodijeljena anonimna mreža temeljena na porukama, iako pruža osnovnu mogućnost kontrole toka prometa. Ostvarena je 2009. godine. Otpornija je na analizu prometa od Tor-a jer svaki čvor na putu može spojiti više poruka (režnjeva) namijenjenih različitim odredištima, i poslati je dijelom puta kao jednu. Za razliku od Tor mreže koristi UDP, s time da je ostvarena rudimentarna kontrola toka. Phantom je mreža koja još nije postavljena ni ostvarena, međutim vrlo je interesantna jer pokreće pitanje standarda za anonimne sustave. Treba biti potpuno decentralizirana, maksimalno otporna na (D)DoS napad te potpuno izolirana od Interneta. Predviđena je i teoretski sigurna anonimnost, kao i teoretski sigurna enkripcija s-kraja-na-kraj te zaštita od identificiranja protokola. 12 3. Protokol Tor U ovom poglavlju dan je detaljan opis protokola. U samom uvodu ugrubo je opisan rad protokola, a potom se po poglavljima detaljno opisuju komponente sustava. Na slici 3.1 prikazana je Tor mreža. Kako bi mogao koristiti mrežu, korisnik (izvorište) mora na svom računalu instalirati Tor posrednik (engl. onion proxy). Tor posrednik je aplikacija koja se izvršava kao korisnički proces bez posebnih prava. Prije no što može početi koristiti mrežu posrednik mora znati kako doći do Tor usmjernika, stoga se povezuje na poslužitelj registar (engl. directory server) koji posjeduje popis svih usmjernika (engl. onion router), tj. čvorova mreže (1). Popis čvorova mreže naziva se konsenzus stanja mreže (engl. network status consensus) te osim identifikatora usmjernika sadrži i sažetke opisnika usmjernika. Slika 3.1: Načelo rada Tor mreže. Nakon što je dohvatio konsenzus stanja mreže, posrednik nasumce odabire jedan čvor iz konsenzusa i otvara Tor vezu prema njemu (2). Potom prvom usmjerniku naređuje da otvori Tor vezu prema sljedećem usmjerniku (3). Na jednak način drugi usmjernik otvara Tor vezu prema posljednjem usmjerniku (4). Svaki usmjernik na putu zna samo za svog prethodnika i sljedbenika, a nijedan čvor osim posrednika ne poznaje sve čvorove na putu. Također, posrednik ugovara poseban ključ veze sa svakim čvorom na putu i time osigurava da nijedan čvor, izuzev onog kojem je poruka namijenjena ne može prisluškivati promet. Sve TCP veze između posrednika su zaštićene TLS protokolom. Virtualni kanal (engl. virtual circuit) je skup svih čvorova i veza počevši od posrednika do posljednjeg čvora na putu. Tor veza je virtualni kanal jedinične duljine. Kada je kanal kroz Tor mrežu uspostavljen (4), posrednik može tražiti od posljednjeg čvora na putu da se spoji na odredište (5). Ako je posljednji čvor konfiguriran tako da dozvoljava povezivanje na vanjsko odredište sa zadanom IP adresom, onda vrši spajanje. Raspon IP adresa dozvoljenih za spajanje naziva se izlazna politika, a takvi čvorovi nazivaju se izlaznim čvorovima/usmjernicima. Ukoliko spajanje nije dozvoljeno, zahtjev se odbija i posrednik mora narediti srednjem usmjerniku da zatvori vezu prema ovom i otvori vezu prema drugom izlaznom usmjerniku. Ove operacije zovu se rezanje i širenje virtualnih kanala. Tor koristi komutaciju virtualnih kanala kao jedan od kritičnih mehanizama za postizanje anonimnosti. Tor podržava isključivo povezivanje preko TCP-a. Mogu ga koristi sve aplikacije koje koriste sučelje za Socks protokol, dakle mora postojati lokalno instaliran Web posrednik aktivan na nekim pristupnim vratima. Ako korisnička aplikacija ne koristi ovo sučelje, nego primjerice sama vrši DNS razrješavanje time odaje IP adresu računala domaćina. Ovo se naziva DNS curenje. Ako korisnička aplikacija uvijek koristi Web posrednik u radu, tada Tor anonimizira TCP tunele klijentskih aplikacija, ali ne djeluje iznad sjedničkog sloja OSI modela. Efektivno, ukoliko 13 3. Protokol Tor tunelirajući promet kroz virtualni kanal sadrži IP adresu i ona stigne na odredište, izvorište je kompromitirano. Pomoću raznih (vrlo često korištenih!) mrežnih tehnogija može se doći do IP adrese klijenta: JavaScript, Java appleti, Flash i Adobe dodaci za preglednik samo su neki. Kolačići (engl. cookie) su također ozbiljan sigurnosni rizik. Ovaj problem može se riješiti na nekoliko načina. Osim standardnog preglednika, preporuča se instalacija još jednog preglednika za anonimni promet. "Službeni" preglednik je Firefox s Torbutton dodatkom kojim je moguće isključiti sve poznate opcije koje mogu odati IP adresu. Također, postoji još niz drugih preglednika prilagođenih anonimnom prometu Tor mrežom. Postoji i varijanta gdje se preglednik može postaviti na USB medij, koristiti bez instalacije te se svi generirani (privremeni) podaci zapisuju na USB medij. Nadalje postoje i anonimizirane LiveCD distribucije Linux operacijskih sustava (Amnesia, Incognito, Tork, JanusVM) u kojima su svi servisi pročišćeni na način da ne odaju osjetljive informacije. Moguće je i posrednik i preglednik pokretati iz virtualnog računala. Odabir metode ovisi o razini zahtijevane anonimnosti, a najsigurnija (i najskuplja) varijanta svakako je učitavanje anonimiziranog operacijskog sustava u stvarno ili virtualno računalo. Vrlo nedavno izdan je i Silvertunnel preglednik pisan u Java programskom jeziku. Enkapsulira posrednika bez funkcije usmjernika te ne zahtijeva instalaciju Tor posrednika na računalo domaćina. Postoji međutim jedan nedostatak: potrebno je instalirati JRE na računalo domaćina, ali zbog rasprostranjenosti Java virtualnog stroja to ne bi trebalo predstavljati problem. Ukoliko je JRE instaliran, Silvertunnel pokreće se jednim klikom pomoću JNLP tehnologije. Po pokretanju, odmah se povezuje na Tor mrežu. Kroz prizmu korisničkog doživljaja, nesumnjivo je riječ o najuporabljivijem klijentu za Tor mrežu. U Tor protokolu postoje dvije vrste čvorova: • • onion proxy – klijent, Tor posrednik onion router – Tor usmjernik, čvor Svaki usmjernik može obavljati jednu ili više od sljedećih osam fukcija: • • • • • • • • directory authority – usmjernik koji je ujedno i poslužitelj registar, odnosno poslužuje konsenzuse stanja mreže directory cache – predposlužitelj registara mreže, usmjernik koji ujedno rasterećuje poslužitelje registara preuzimajući u potpunosti distribuciju opisnika usmjernika bridge router – usmjernik koji služi isključivo prijenosu Tor prometa te se ne nalazi u konsenzsusu stanja mreže, već u posebnim listama koje se održavaju i preuzimaju ručno. Postoje kako bi se Tor mreži moglo pristupati ukoliko korisnikov ISP blokira Tor promet exit router – usmjernik koji dopušta spajanje na mrežna odredišta izvan Tor mreže hidden service – posrednik ili usmjernik koji je ujedno i poslužitelj skrivene usluge hidden service directory – usmjernik koji je ujedno i poslužitelj registra skrivenih usluga introduction point - usmjernik koji ujedno služi kao čvor uvoda skrivene usluge, odnosno posrednik u procesu povezivanju rendezvous point – usmjernik preko kojeg komuniciraju skrivena usluga i klijent Kako bi posrednik mogao konstruirati put za virtualni kanal mora znati kakva je izlazna politika posljednjeg čvora na putu te mora također znati verziju protokola svakog usmjernika na putu. Ovi podaci navedeni su u opisniku usmjernika. Usmjernici prijavljuju značajniju promjenu stanja svim poslužiteljima registara mreže za koje znaju slanjem opisnika potpisanog svojim tajnim ključem. Poslužitelji registara stanja mreže smatraju se komponentama od povjerenja i stvaraju konsenzus stanja mreže glasanjem. Konsenzusi stanja mreže uvijek se preuzimaju od poslužitelja registara, dok 14 3. Protokol Tor se opisnici usmjernika uvijek preuzimaju od predposlužitelja registara (engl. directory cache), koji ih prethodno preuzimaju od poslužitelja registara. Opisnici usmjernika indeksirani su na predposlužiteljima registarima njihovim sažetkom te ih posrednici i usmjernici preuzimaju putem sažetka. Time je onemogućen napad predposlužitelja na način da se distribucijom lažnih opisnika odvoji usmjernik ili posrednik od ostatka mreže, budući da se integritet opisnika jednostavno provjerava usporedbom poslanog sažetka i izračunatog sažetka upravo preuzetog opisnika. Osim anonimnog spajanja na mrežna odredišta, moguće je postaviti anonimnu mrežnu uslugu preko Tor mreže što znači da je moguće pristupati sadržaju bez poznavanja IP adrese same usluge. Ovaj koncept poznat je kao skrivene usluge (engl. location hidden services) i opisan je u poglavlju 3.5. Integritet i autentičnost informacijskog toka kroz Tor mrežu osigurani su, osim činjenicom da koristi TLS protokol i upotrebom vlastite simetrične i asimetrične kriptografije, Diffie-Hellmanovg protokola te funkcije sažetka: • • • • simetrična kriptografija - 128-bitni AES algoritam u brojačkom načinu (engl. counter mode) asimetrična kriptografija – 1024-bitni RSA algoritam s fiksnim javnim eksponentom za koji je odabran treći Fermatov prost broj F4 = 65537 protokol Diffie-Hellman – koristi se generator 2 i modulo koji je siguran prost broj iz druge Oakleyeve grupe funkcija sažetka – SHA-1 algoritam Čvorovi koriste sljedeće ključeve za enkripciju veze: • • Asimetrični ključ veze usmjernika – služi za (de)kriptiranje TLS kanala. Trajanje: reda veličine dana. (PKTLS , SKTLS ) Simetrični ključ za enkripciju prometa AES algoritmom na virtualnom kanalu dogovoren protokolom Diffie-Hellman (KOP-OR) Također koriste asimetrične ključeve za autentifikaciju veze: • Lukov ključ usmjernika – služi za (de)kriptiranje zahtjeva za otvaranjem virtualnih kanala . Trajanje: reda veličine tjedan dana. (PKON , SKON ) Kako bi se osigurao integritet konsenzusa i opisnika, koriste se sljedeći asimetrični ključevi: • • • Ključ identiteta poslužitelja registara – služi za potpisivanje certifikata koji jamči vjerodostojnost ključa za potpisivanje konsenzusa stanja mreže. Trajanje: od tri do dvanaest mjeseci. (PKDA , SKDA ) Ključ za potpisivanje glasova (trenutnih registara stanja pojedinog poslužitelja) i konsenzusa stanja mreže– Trajanje: nije specificirano,vjerojatno do mjesec dana. (PKsgnDA , SKsgnDA ) Ključ identiteta usmjernika – služi za potpisivanje TLS certifikata i opisnika usmjernika. Trajanje: do mjesec dana. (PKID , SKID ) Radi preglednosti nisu navedeni ključevi za skrivene usluge. Predposlužitelji i poslužitelji registara mreže sudjeluju u radu mreže i kao obični usmjernici te tada koriste obične ključeve, a kada obavljaju funkciju poslužitelja registara mreže koriste se ključevima poslužitelja registara. U svrhu povećanja ukupne anonimnosti sustava svaki posrednik može istovremeno obavljati i funkciju usmjernika. Obrat vrijedi, ali tada se povećava anonimnost čvora u funkciji posrednika, jer se virtualni kanali posrednika skrivaju među ostalim virtualnim kanalima koji prolaze kroz taj čvor u funkciji usmjernika. 15 3. Protokol Tor 3.1. Virtualni kanali i kriptiranje ukupnog informacijskog toka U ovom potpoglavlju detaljno je razmotreno stvaranje virtualnog kanala, prvo s proceduralnog aspekta a potom sa sigurnosnog. Pretpostavlja se scenarij da se preko Tor-a želi učitati neku Web stranicu. Na slici 3.2 prikazan je dijagram slijeda za otvaranje virtualnog kanala od tri usmjernika. Definira se višestruko kriptiranje AES M , Kc ; a=AES AES AES M , Kc , Kb , Ka . Nakon što je odabrao put, posrednik otvara TLS vezu prema prvom usmjerniku koji se naziva čvor stražar (EG). Pri uspostavi TLS veze moguće su tri metode razmjene TLS certifikata. Ovisno o tome koja je metoda ugovorena poznato je koja je verzija spojnog protokola. U svakom slučaju, obje strane u konačnici razmjene lanac od dva certifikata: prvi je certifikat s ključem veze usmjernika, dok je posljednji samopotpisan ključem identiteta usmjernika. O verziji spojnog protokola ovisi prvi par protokolnih podatkovnih jedinica koje se moraju razmijeniti na virtualnom kanalu a to su VERSIONS ili NETINFO ćelije. Nakon te razmjene usmjernici mogu početi s izgradnjom virtualnog kanala. Virtualne kanale moguće je multipleksirati po TLS vezama. Posrednik nasumce odabire identifikator virtualnog kanala (na slici 3.2 "a") te šalje CREATE(_FAST) ćeliju čvoru stražaru, koja je u biti naredba za otvaranje novog Slika 3.2: Slijedni dijagram otvaranja virtualnog kanala pomoću CREATE_FAST ćelije. virtualnog kanala. Čvor stražar zauzima potrebne resurse i odgovara CREATED(_FAST) ćelijom. Po primitku CREATED(_FAST) ćelije otvoren je virtualni kanal te posrednik šalje RELAY_EXTEND ćeliju s identifikatorom sljedećeg usmjernika – prijenosnog čvora- niz kanal prema čvoru stražaru. Po primitku RELAY_EXTEND ćelije čvor stražar ju dekriptira i otvara TLS vezu te odabire novi identifikator virtualnog kanala (na slici 3.2 "b") i šalje CREATE ćeliju prema prijenosnom čvoru. Po primitku CREATED ćelije od prijenosnog čvora, čvor stražar kriptira i šalje RELAY_EXTENDED ćeliju uz kanal prema posredniku s identifikatorom virtualnog kanala "a". Sada je virtualni kanal proširen i posrednik šalje dvostruko kriptiranu RELAY_EXTEND ćeliju s identifikatorom izlaznog čvora niz kanal. Čvor stražar prima ćeliju na virtualnom kanalu "a", dekriptira ju i prosljeđuje na virtualnom kanalu "b" prijenosnom čvoru koji na već opisan način otvara virtualni kanal s identifikatorom "c" prema izlaznom čvoru. 16 3. Protokol Tor Po primitku CREATED ćelije prijenosni čvor kriptira i šalje RELAY_EXTENDED ćeliju uz kanal prema čvoru stražaru. Čvor stražar ju kriptira i prosljeđuje uz kanal posredniku. Posrednik je sada uspješno otvorio virtualni kanal. Ako je TLS veza prema prvom čvoru stražaru već otvorena, posrednik, obzirom da su identiteti obiju strana poznati, može poslati CREATE_FAST ćeliju, koja ne koristi vremenski skupu operaciju RSA enkripcije, već odmah šalje svoj dio ključa. Starije verzije protokola ne podržavaju ovu mogućnost. Na slici 3.2 prikazana je varijanta s CREATE_FAST ćelijom. Ukoliko usmjernik primi CREATE_FAST ćeliju, zna da je prvi čvor u virtualnom kanalu (kanali se mogu širiti isključivo pomoću CREATE ćelije) i trebao bi odbiti zahtjeve za povezivanjem na vanjska mrežna odredišta. Povezivanje s vanjskim odredištem i prijenos podataka obavlja izlazni usmjernik prema uputama posrednika. Bitno je napomenuti da put od izlaznog usmjernika do vanjskog odredišta ne koristi TLS protokol, već TCP, što znači kako je taj dio puta potpuno nezaštićen. Stoga se, ako je moguće, za tunelirajući protokol uvijek preporuča korištenje nekog protokola s enkripcijom kanala i autentifikacijom veze. Na slici 3.4 prikazan je dijagram slijeda za dohvaćanje mrežne stranice kroz virtualni kanal. Nakon uspostave virtualnog kanala posrednik šalje RELAY_BEGIN ćeliju u kojoj je URL vanjskog odredišta prema izlaznom usmjerniku. Ako mu politika doušta, izlazni usmjernik vrši spajanje na zadano odredište te ako je uspio odgovara s RELAY_CONNECTED ćelijom. Time je otvoren virtualni tok (engl. virtual stream) koji predstavlja jednu anonimiziranu korisničku TCP vezu. Po jednom virtualnom kanalu može se multipleksirati više virtualnih tokova. Ukoliko mu izlazna politika ne dopušta spajanje ili ono nije uspjelo, šalje RELAY_END ćeliju uz kanal s postavljenim razlogom neuspjeha. Prijenos podataka vrši se RELAY_DATA ćelijama, koje se na putu od izvorišta do odredišta sustavno dekriptiraju, dok se u suprotnom smjeru sustavno kriptiraju; tj. svaki usmjernik na putu dodaje ili skida svoj sloj zaštite, što je zorna analogija sa slojevitom strukturom glavice luka. Slika 3.3: Slijedni dijagram dohvaćanja mrežne stranice kroz otvoreni virtualni kanal u normalnim uvjetima. Jednom kada je virtualni kanal stvoren, posrednik može uništiti dio kanala i izgraditi ga preko nekih drugih usmjernika. Posrednik odabire usmjernik koji će odrezati kanal i šalje mu RELAY_TRUNCATE ćeliju s postavljenim razlogom REASON_REQUESTED. 17 3. Protokol Tor Slika 3.4: Slijedni dijagram mijenjanja topologije kanala od strane posrednika. Odabrani usmjernik sljedećem usmjerniku u kanalu prosljeđuje ćeliju DESTROY s postavljenim razlogom zatvaranja. Sljedeći usmjernik ponavlja postupak dok se virtualni kanal ne zatvori do posljednjeg čvora. Usmjernik koji primi DESTROY ćeliju oslobađa sve resurse za virtualni kanal na koji je ćelija adresirana. Neovisno o posredniku, između dva susjedna usmjernika u virtualnom kanalu je moguća situacija u kojoj je potrebno prekinuti TLS vezu, ili je veza slučajno prekinuta. U tom slučaju, usmjernik bliži posredniku šalje RELAY_TRUNCATE ćeliju s postavljenim odgovarajućim razlogom, a usmjernik s druge strane oslobađa resurse vezane za taj kanal i prosljeđuje DESTROY ćeliju s odgovarajućim postavljenim razlogom niz kanal. Ova metoda poznata je kao topologija probušene cijevi (engl. leaky pipe topology). Pregled protokolnih podatkovnih jedinica dan je u dodatku B. Pri otvaranju TLS veze partneri razmijene ključeve identiteta. Sažetak dobivenog ključa identiteta i stvarna IP adresa partnera provjeravaju se prema konsenzsu stanja mreže. Ukoliko ne odgovaraju veza se prekida. Razmjena CREATE ćelija u biti je Diffie-Hellmanovo rukovanje za dogovaranje simetričnog ključa za kriptiranje prometa na virtualnom kanalu. Prva polovica ključa kriptira se javnim lukovim ključem partnera i enkapsulira u CREATE ćeliju. Partner na to odgovora s drugom polovicom ključa i sažetkom ugovorenog ključa enkapsuliranim u CREATED ćeliju. Začetnik veze uspoređuje sažetak izračunatog ključa s primljenim sažetkom - ako nisu identični kanal se prekida. Na taj način osigurana je tajnost veze među partnerskim čvorovima. Ako čvorovi i nisu susjedni čovjek-u-sredini ne može kompromitirati kanal. Na slici 3.5 prikazan je virtualni kanal. Kada čvor Slika 3.5: Shema virtualnog kanala, jednosmjerna autentifikacija entiteta i ključeva, slojevito usmjeravanje druge generacije u Tor-u. stražar primi RELAY_EXTEND ćeliju može krivotvoriti CREATE ćeliju kojom će otvoriti virtualni kanal prema prijenosnom čvoru, međutim ne može saznati prvu polovicu ključa i zato će pasti na provjeri sažetaka na strani posrednika. Bitno je primijetiti kako je u ovakvoj komunikaciji ostvarena jednosmjerna autentifikacija entiteta - posrednik zna za svaki usmjernik na svom putu i ne 18 3. Protokol Tor koristi privatni ključ temeljem kojeg bi ga se moglo identificirati, dok usmjerniku nije bitno tko otvara virtualni kanal niti zna išta o putu izuzev neposrednog sljedbenika i prethodnika pa čak ni da li je njegov neposredni prethodnik posrednik ili usmjernik, osim u slučaju da je virtualni kanal s prethodnikom stvoren pomoću CREATE_FAST protokolne podatkovne jedinice. Vanjsko odredište vidi samo izlazni čvor. Raspodjela znanja o putu prikazana je u gornjem dijelu slike 3.5. Također, ostvarena je jednosmjerna autentifikacija ključeva – ključ za komunikaciju između posrednika i nekog usmjernika znaju samo posrednik i taj usmjernik. Posrednik jedini vidi čitav promet, dok svaki drugi čvor na putu vidi samo promet namijenjen njemu. Ako tunelirajući protokol nema enkripciju, tada izlazni čvor može vidjeti i promet namijenjen odredištu. Na taj način osigurana je anonimnost pošiljatelja, a obzirom da anonimnost primatelja nije bitna i uzajamna anonimnost. Zbog niskog kašnjenja nepovezivost nije ispunjena za globalnog vanjskog napadača, a samim time ni lokacijska anonimnost. Analiza anonimnosti virtualnog kanala pod modelom napadača koji kompromitira jedan ili dva čvora, dana je u dodatku D. Slika 3.6: Dijagram stanja virtualnog kanala. Virtualni kanali moraju se rotirati tokom vremena. Ako korisnik stalno upotrebljava isti kanal, puno ga je lakše identificirati analizom prometa, stoga je vrijeme života kanala osjetljiv parametar sustava. Na slici 3.6 prikazan je dijagram stanja virtualnog kanala. Dok se kanal se gradi ne može biti upotrijebljen za korisnički promet. Kada je kanal izgrađen, ali nije iskorišten za promet, čist je. Čim se iskoristi za korisnički promet postaje prljav. Prije isteka vremena života postaje star - u specifikacijama nije navedeno, ali bilo bi logično da se u tom trenutku počinje s izgradnjom novog kanala. Nakon što mu istekne vrijeme života korisnički tokovi prebacuju se na drugi kanal, a ovaj se zatvara. Provjera integriteta podataka vrši se samo na krajevima toka zato jer bilo koji čvor na putu može postati krajnji čvor. Kada posrednik, šireći virtualni kanal dogovara novi ključ s odabranim usmjernikom, oba izračunavaju SHA-1 sažetak izvedenice ugovorenog ključa. Tom sažetku dodaju se sažeci sadržaja svih RELAY ćelija koje stvore oba čvora, uključujući u svaku od njih prva četiri okteta odgovarajućeg sažetka. Također, oba čvora čuvaju posljednji sažetak, kako bi mogli provjeriti integritet podataka. Kako bi uklonio ili izmjenio samo jednu protokolnu podatkovnu jedinicu, napadač mora točno odrediti prva četiri okteta trenutnog sažetka. On ovisi o cjelokupnom prometu između krajnja dva čvora, počevši od izvedenice ugovorenog ključa koji znaju samo ta dva čvora. Napad u kojem protivnik pokušava simulirati ovaj postupak ne može biti uspješan budući da je svaka prijenosna 19 3. Protokol Tor protokolna podatkovna jedinica, u kojoj se nalazi i sažetak, iznova kriptirana sa svakom sljedećom etapom. U RELAY ćeliju se uključuju samo prva četiri okteta sažetka kako bi ostalo više mjesta za teret. Vjerojatnost da će napadač pogoditi ispravnu vrijednost dijela sažetka prihvatljivo je mala, budući da čvor, ukoliko ustanovi kako je neka prijenosna protokolna podatkovna jedinica neovlašteno mijenjana, raskida odgovarajući virtualni kanal. Vrijeme potrebno za izračunavanje sažetaka minimalno je u usporedbi s vremenom koje je utrošeno za kriptiranje AES algoritmom. 3.2. Poslužitelji registri mreže Postoji mali skup poslužitelja registara mreže koji se smatraju komponentama od potpunog povjerenja. Njihova je primarna zadaća izglasavati konsenzus stanja mreže iz vlastitih registara stanja, tj. svih pohranjenih opisnika. Svaki poslužitelj stanja izdaje i certifikate važećih ključeva. Osim toga služe kao arhiva opisnika usmjernika, kao i dokumenata s dodatnim informacijama koji sadrže topološke informacije i povijest prometa usmjernika. U dodatku A priložene su gramatike svih navedenih dokumenata. U trećoj verziji protokola za posluživanje registara stanja svaki poslužitelj održava vlastiti registar stanja te ga na početku novog intervala glasanja potpisuje i HTTP POST zahtjevom objavljuje svim ostalim poslužiteljima. Svaki poslužitelj istim algoritmom računa konsenzus svih registara stanja mreže te pretpostavljajući potpunu povezanost dolazi do istog konsenzusa, stoga se provjera vrši samo slanjem sažetaka konsenzusa svim poslužiteljima. Slika 3.7: Vremenski slijed glasanja. Konsenzus registara stanja mreže ima vrijeme nakon kojeg postaje važeći (VA), vrijeme do kojeg je "svjež" (FU) i vrijeme nakon kojeg prestaje biti važeći (VU). U svakom trenutku trebalo bi biti najmanje tri važeća konsenzusa: u trenutku VA svi poslužitelji imaju višestruko potpisani konsenzus stanja mreže, do FU vremena predposlužitelji preuzimaju konsenzuse stanja, nakon čega do VU trenutka klijenti preuzimanju konsenzuse. Poslužitelji registara stanja moraju osigurati da im satovi ne griješe više od nekoliko sekundi, stoga se preporuča korištenje NTP-a čija točnost može biti puno veća - preko Interneta ~ 10ms. 20 3. Protokol Tor Kada ključ za potpisivanje glasova i konsenzusa istekne poslužitelj mora objaviti novi certifikat potpisan svojim ključem identiteta, koji je najosjetljiviji dio cijelog sustava i čuva se tako da nije spojen na mrežu. Konsenzus stanja mreže sastoji se od dijela za vremensku kontrolu (ispis 3.1.), dijela za kontrolu integriteta i autentičnosti (ispis 3.2.) te popisa usmjernika (ispis 3.3.). Ispis 3.1: Preambula konsenzusa ili registra stanja mreže. network-status-version 3 vote-status consensus consensus-method 9 valid-after 2010-06-01 00:00:00 fresh-until 2010-06-01 01:00:00 valid-until 2010-06-01 03:00:00 voting-delay 300 300 client-versions 0.2.0.35,0.2.1.19,0.2.1.20,0.2.1.21,0.2.1.22,0.2.1.23,0.2.1.24,0.2.1.25,0.2.1.26,0.2.2.1alpha,0.2.2.2-alpha,0.2.2.3-alpha,0.2.2.4-alpha,0.2.2.5-alpha,0.2.2.6-alpha,0.2.2.7-alpha,0.2.2.8alpha,0.2.2.9-alpha,0.2.2.10-alpha,0.2.2.11-alpha,0.2.2.12-alpha,0.2.2.13-alpha server-versions 0.2.0.35,0.2.1.19,0.2.1.20,0.2.1.21,0.2.1.22,0.2.1.25,0.2.1.26,0.2.2.1alpha,0.2.2.2-alpha,0.2.2.3-alpha,0.2.2.4-alpha,0.2.2.5-alpha,0.2.2.6-alpha,0.2.2.7-alpha,0.2.2.8alpha,0.2.2.10-alpha,0.2.2.11-alpha,0.2.2.12-alpha,0.2.2.13-alpha known-flags Authority BadExit Exit Fast Guard HSDir Named Running Stable Unnamed V2Dir Valid params CircuitPriorityHalflife=30000 circwindow=1000 Nakon preambule koja osigurava kontrolu glasanja u vremenskoj domeni, slijedi identitet autora dokumenta stanja mreže te ako je riječ o konsenzusu popis svih glasača odnosno sažetaka njihovih javnih ključeva kao i njihovih digitalnih potpisa konsenzusa. Potom slijedi popis svih prijavljenih i vrednovanih usmjernika te digitalni potpis čitavog dokumenta. Ispis 3.2: Kontrola integriteta i autentičnosti konsenzusa stanja mreže. // informacija o poslužitelju registru dir-source dannenberg 585769C78764D58426B8B52B6651A5A71137189A dannenberg.ccc.de 193.23.244.244 80 443 contact J. Random Hacker <[email protected]> vote-digest 0F71A357B29FBA842646921713F5BA93DB5FE20A // opisnici usmjernika directory-signature 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 D2C42303C3DC3C65AEA79052779A133528016BB3 // potpis jednog glasača -----BEGIN SIGNATURE----mzgP1m7JvERZM1RB8VLBNQCljIfhi+Mo6bhpnanvCXv9o77LLyv3UgbuMXvCbRsk 8vMnAD/IlqdVJZDBXWj2p341gnGpcyAUEDrcCaLPT/3TwZOqVI4TiDyMfz7zvUo+ euJqTSxZiEmfeCBYcWiUv7+33MS0g/ZwOYQS8uHm+90= -----END SIGNATURE----- U konsenzus su uključeni sažeci opisnika svih usmjernika koji nisu sumnjivi i nisu istekli, a potvrdilo ih je više od polovice glasača. Informacija o usmjerniku u konsenzusu stanja sastoji se od nadimka (alfanumerički tip), sažetka javnog ključa identiteta usmjernika po kojem je i uzlazno sortiran cijeli popis usmjernika, sažetka najsvježijeg opisnika, vremena objave opisnika te pristupnih vratiju za tunelirajući promet i pristupnih vratiju za promet dokumentima stanja mreže. Usmjernik je u konsenzusu stanja mreže definiran svojim nadimkom (alfanumerički identifikator), sažetkom javnog ključa identiteta i opisnika, datumom objave najsvježijeg opisnika, IP adresom te pristupnim vratima za promet dokumentima stanja i Tor promet. Ispis 3.3: Informacija o usmjerniku u konsenzusu stanja mreže. r s v w p mela R3CkyWALMPMeOCu8qZDZv6Nnv84 JQaW0m8zN73/0FEiIyN36LDoJ9Y 2010-05-31 15:52:54 124.217.230.88 9001 0 Fast Guard HSDir Named Running Stable Valid Tor 0.2.2.13-alpha Bandwidth=50 accept 110,1533,1863,5050,5190,5222,6667-6669 Potom slijede značajke ("Flags") usmjernika bitne za odabir puta virtualnog kanala: • • "Authority" – usmjernik je ujedno i poslužitelj registara stanja "BadExit" – iako se oglašava usmjernik je beskoristan kao izlazni čvor, restriktivnog posrednika ili sigurnosne stijene ili iz nekog sličnog razloga 21 jer je iza 3. Protokol Tor • • • • • • • "Exit" – usmjernik je koristan kao izlazni čvor, tj. njegova izlazna politika dopušta povezivanje na mrežna odredišta izvan Tor mreže "Fast" - usmjernik je trenutno dostupan i u prvih 7/8 trenutno dostupnih usmjernika ili ima brzinu od najmanje100 KB/s. Podatak o iznosu širine pojasa ne mora biti točan obzirom da ga poslužitelji registara stanja ne provjeravaju "Guard" – usmjernik se smatra pogodnim za čvora stražara, tj. njegova propusnost veća je od 250 KB/s ili je najmanje medijan svih propusnosti i njegovo je ukupno vrijeme na mreži po danu (pomnoženo težinskom funkcijom tako da više doprinose iznosi po mlađim danima) najmanje medijan svih "poznatih" usmjernika. Usmjernik se smatra "poznatim" ukoliko je aktivan na mreži dulje od 7/8 svih aktivnih usmjernika ili njegovo ukupno vrijeme provedeno na mreži iznosi nekoliko tjedana. "HSDir" - usmjernik se smatra registrom skrivenih usluga "Stable" – usmjernik je pogodan za dugoživuće kanale, odnosno trenutno je dostupan i njegov MTBF je najmanje medijan MTBF vremena svih trenutno dostupnih usmjernika "Running" – usmjernik se smatra trenutno dostupnim, tj. poslužitelj registara stanja uspješno se spojio na ovaj usmjernik u proteklih 30 min. "Valid" – usmjernik je ispravan, tj. ne koristi pokvarene verzije Tora i nije na crnoj listi Usmjernik generira novi opisnik svaki puta kada se ispuni jedan od sljedećih uvjeta: • • • • prošao je period vremena (uobičajeno 18 h) od slanja posljednjeg opisnika promijenila se vrijednost polja u opisniku koja nije vrijednost širine pojasa ("Bandwidth") ili ukupno vrijeme na Tor mreži bez prekida ("Uptime"): podaci o identitetu, izlaznoj politici usmjernika, je li usmjernik u stanju hibernacije vrijednost širine pojasa se povećala za faktor od najmanje 2 resetiranje računala - zastavica "Uptime" postaje 0' Ispis 3.4: Opisnik usmjernika. router Unnamed 188.16.195.214 443 0 0 platform Tor 0.2.1.26 on Windows "Longhorn" Service Pack 1 [workstation] {terminal services, single user} opt protocols Link 1 2 Circuit 1 published 2010-06-07 10:51:21 opt fingerprint FFCF D08C 49D5 1BBE 9CE2 0F3F 0C36 4C42 6374 7F2B uptime 7 bandwidth 5242880 10485760 84200 opt extra-info-digest 535764479AEDA173577D958CAC94E9B7CA7B2E75 onion-key -----BEGIN RSA PUBLIC KEY----MIGJAoGBAKyu2VRHzWIfsPINkr3+EPtTrPiG57da0pRgiKO/A6zpwsuzz9ihzgNFOOEuYlAN8Xdh1gL8LseB+9nvl8gY6aVjXUe+RMV2XDBfGWjT TBKNmJCn49h7X1vd3BDyBcu9gX+L7FwSWwbPPVpsGYq22ukHQXOtlvkcFPjP/DsyEZdtAgMBAAE= -----END RSA PUBLIC KEY----signing-key -----BEGIN RSA PUBLIC KEY----MIGJAoGBANRJ9k/MG9/P0fdcWWwrIMVasovzXsgdd1LEp4blVQ9xwCis52IPpamXlzyJN6POcZe/55dnqjq1WPA3JTaYEHYcuH5DuG/2X5YZm4Dt 6ABM4use1hstguvgPChDsDmGodp80MlQbeeBJwh6iWV3ggSmxtctimaiGm0nMMMlGSOTAgMBAAE= -----END RSA PUBLIC KEY----opt hidden-service-dir reject 0.0.0.0/8:* reject 169.254.0.0/16:* reject 127.0.0.0/8:* reject 192.168.0.0/16:* reject 10.0.0.0/8:* reject 172.16.0.0/12:* reject 188.16.195.214:* reject *:25 reject *:119 reject *:135-139 reject *:445 reject *:563 reject *:1214 reject *:4661-4666 reject *:6346-6429 reject *:6699 reject *:6881-6999 accept *:* router-signature // potpis opisnika U dokumentima s dodatnim informacijama o usmjernicima zabilježena je povijest prometa, odnosno broj pročitanih i zapisanih okteta s Tor mreže. 22 3. Protokol Tor U verziji 2 registarskog protokola ovi su podaci bili u opisniku, a te vrijednosti ne koriste ni usmjernici ni posrednici za normalan rad. Stoga su premješteni u zasebne dokumente te se time uštedilo 60% vremena za promet opisnicima. Također, konsenzus stanja mreže računao je svaki klijent za sebe, što je u određenim situacijama moglo dovesti do particioniranja korisnika od ostatka mreže, odnosno smanjivala se njegova i ukupna anonimnost sustava. Ispis 3.5: Dokument s dodatnim informacijama. extra-info Unnamed 74FF3EB011DAC6B9BAC7FF888784EA7998CF89A3 published 2010-06-06 10:57:23 write-history 2010-06-06 10:57:03 (900 s) 4831232,5374976,6244352,18341888,4025344,5084160,1106944,1612800,7693312,8462336,1783808,3622912,7252992,6411264 ,3883008,3879936,645120,667648,1309696,120832,52224,88064,2861056,0,0,0,0,0,0,247808,730112,696320,384000,376832 0,2441216,0,91136,20480,44032,16384,54272,139264,966656,145408,74752,284672,146432,4401152,708608,1036288,385536 0,1825792,715776,72704,66560,5650432,18294784,13934592,19218432,3089408,8567808,6378496,3734528,7433216,116736,4 02432,7473152,9399296,9335808,4482048,1611776,2974720,4717568,13668352,12758016,7845888,2936832,2464768,3325952, 9674752,5763072,3019776,9356288,3075072,6538240,6801408,3917824,478208,947200,197632,3635200,483328,1067008,9728 00,4681728,3488768 read-history 2010-06-06 10:57:03 (900 s) 4748288,5372928,5962752,18318336,4011008,5019648,865280,1973248,7527424,8179712,1580032,3896320,7111680,6084608, 3684352,4135936,540672,756736,1250304,532480,30720,198656,2742272,0,0,0,0,0,0,307200,706560,556032,267264,404582 4,2255872,0,76800,7168,40960,4096,40960,83968,1123328,83968,514048,407552,115712,4736000,868352,976896,3710976,2 201600,646144,40960,181248,5978112,18085888,13613056,18805760,3385344,8377344,6124544,3540992,7676928,189440,351 232,7325696,9613312,9259008,4408320,1685504,3164160,4460544,13367296,12350464,8035328,2809856,2362368,3302400,98 56000,5686272,2900992,9139200,3354624,6446080,6568960,3695616,735232,859136,370688,3492864,865280,934912,797696, 4586496,3878912 router-signature -----BEGIN SIGNATURE----Kx7TmKhdKWH+NGYuGy+850AEafq1bjEyfbH2iYoHL2HBQ6EsoQ4bVXB1ZVzKoN2r sX9kkad6nFZVxMmY6IcDx/la7gxdTTaITsYLKkHHEKkAV/CdQWgA1Cy0FF1miITc VN/zUgNEKoVPn2c7qInhp7kcAQSYyKprHQsShFL8Pio= -----END SIGNATURE----- Također, nije postojao ključ poslužitelja registara stanja mreže za potpisivanje, već se potpisivanje obavljalo izravno ključem identiteta poslužitelja registara stanja mreže, što znači da je taj izuzetno osjetljiv ključ bio u memoriji u čistom, nekriptiranom obliku. U posljednjoj, opisanoj verziji čuva se lokalno i nije spojen na Tor mrežu. Nadalje, bitno je napomenuti kako poslužitelji registara stanja ne provjeravaju vrijednosti značajki usmjernika u njihovim opisnicima od kojih su najbitnije "Bandwidth" i "Uptime". O ovim zastavicama ovisi dobivanje zastavica "Stable", "Fast" i "Guard" u konsenzusu stanja mreže, što je značajan sigurnosni rizik jer upravo pomoću ovih zastavica usmjernici bivaju birani za virtualne kanale klijenata. Ako svi usmjernici koji tvore virtualni kanal imaju neko svojstvo (zastavicu), tada i virtualni kanal ima to svojstvo. 3.3. Algoritam za odabir puta Posrednik ne gradi kanale dok nema barem ¼ svih važećih opisnika. Potom nasumično odabire čvorove puta uz uvjet da odabire izlazni čvor koji može, ili se pretpostavlja da može, izvršiti spajanje na zadano odredište. Obzirom da se često dobivaju zahtjevi u obliku URL identifikatora ne može se uvijek znati IP adresa odredišta pa time ni dozvoljava li izlazni čvor spajanje na zadano odredište. Svi usmjernici na putu trebali bi biti topološki različiti i nijedan par usmjernika na putu ne bi trebao biti iz mreže s mrežnom maskom /16. Klijenti bi trebali koristiti samo usmjernike navedene u konsenzusu mreže te ne bi trebali koristiti usmjernike koji nemaju postavljene zastavice "Valid" i "Running" ili su na crnoj listi. Za virtualne kanale za koje se očekuje kako će se dugo koristiti trebali bi se koristiti usmjernici sa zastavicom "Stable". Vrijeme trajanja virtualnih kanala predviđa se pomoću liste pristupnih vrata koja se popunjava svim vratima koja je korisnika zatražio u proteklih sat vremena. Obično su to: 21-FTP upravljanje, 22-SSH, 706-SILC, 1863-MSNP, 5050-"Yahoo! messenger", 5190-"ICQ,AOL 23 3. Protokol Tor instant messenger", 5222-XMPP, 5223-SXMPP, 6667-IRC, 6697-SIRC, 8300-aplikacije za tekstualnu komunikaciju. Algoritam odabira puta bitan je za anonimnost sustava, stoga će biti pobliže razmotren. U osnovi, čvorovi se uvijek odabiru slučajno iz podskupa skupa svih usmjernika R po uniformnoj razdiobi, osim ako je riječ o čvorovima sa zastavicom "Fast". Oni se također odabiru slučajno, ali i proporcionalno oglašavanoj propusnosti prema algoritmu na slici 3.8. Promatra se skup svih usmjernika R i njihovih svojstava u kontekstu relacijske algebre, gdje su i operacije selekcije i projekcije, respektivno. skup F = STABLE , RUNNING ,VALID , EXIT R∖ BADEXIT R ; osigurač = true ; radi { ako osigurač osigurač = false ; inače F = F ∖{r }; ako FAST usmjernik r = random F , F B ADV F ; inače r = randomF , uniform ; } dok ! spajanjeDozvoljenor ; Slika 3.8: Odabir izlaznog čvora. Navedena su standardna svojstva za skup prihvatljivih usmjernika za odabir na poziciji izlaznog čvora, međutim ne moraju biti zadovoljena sva navedena ograničenja što ovisi o postavkama u konfiguracijskoj datoteci, ulaznim argumentima procesa Tor posrednika ili potrebama kanala. funkcija B ADV : BANDWIDTH.AVERAGE , BANDWIDTH.OBSERVED R ⊂ ℝ×ℝ ℝ funkcija rez :ℝ ℝ rez propusnost=min propusnost ,10 MB/ s B ADV r = min rez propusnost.prosjek , rez propusnost.primjećeno ; B ADV R:{R}ℝ B ADV R = ∑ B ADV r ; r∈ R Slika 3.9: Priprema podataka o širini pojasa iz opisnika usmjernika za odabir usmjernika za neku poziciju na putu. Ako se ne traži kanal sa svojstvom "Fast", slučajno se odabire usmjernik po uniformnoj razdiobi. Inače se odabire usmjernik po razdiobi propocionalnoj odrezanoj razdiobi minimalne oglašavane širine pojasa po usmjernicima iz F (slika 3.9). Ako izlazna politika odabranog čvora zadovoljava zahtjev, a adresa odredišta zadana je u obliku IP adrese, tada kanal podržava zahtjev ("supports"). Ako je adresa u obliku DNS adrese, a izlazna politika dopušta spajanja na pristupna vrata iz zahtjeva tada kanal možda podržava zahtjev ("might support"). U specifikacijama je navedeno da se odabire čvor čija izlazna politika "zadovoljava najviše tekućih zahtjeva klijenata" iako se ne specificira kako. Osim toga, nije navedeno ni kako se razrješavaju kanali koji možda podržavaju zahtjev. Najlogičniji nastavak algoritma jest da posljednji čvor na putu vrši DNS razrješavanje. 24 3. Protokol Tor F = STABLE , RUNNING R; osigurač = true ; E = EXIT R G = GUARD R funkcija Tbw = ∑ B ADV r Ebw = ∑ B ADV e Gbw = ∑ B ADV g r∈R e∈E g ∈G Tbw Ebw−Tbw ADV ako Ebw B ADV E := B E ; inače F = F ∖ EXIT R; 3 3Ebw Gbw−Tbw Gbw−Tbw ADV ADV ako 0 B G:= B G; inače F = F ∖ GUARD R ; 3Gbw 3Gbw radi { ako osigurač osigurač = false ; inače F = F ∖ {r }; ako FAST r = random F , F B ADV F ; inače r = randomF , uniform ; ako!topološkiRazličiti continue ; inače preostali−−; } dok preostali0; Slika 3.10: Odabir prijenosnih čvorova. Ako sustav nema dovoljno izlaznih čvorova – tada je njihova ukupna širina pojasa manja od trećine ukupne širine pojasa u sustavu- i/ili čvorova čuvara – tada svi čvorovi u sustavu moraju biti stražari – ti se čvorovi ne razmatraju za odabir na poziciji prijenosnog čvora. Inače, širina pojasa odgovarajućih čvorova ponderira se konstantnim faktorom što osigurava jednoliku raspodijeljenost širine pojasa po kanalima duljine od tri čvora. Time se podiže kvaliteta usluge kanala. Ako je korisnički postavljena upotreba čvorova stražara - u tom slučaju prijenosnih čvorova ima za dva manje od ukupne duljine puta - tada se kao prvi čvor u putu odabire čvor čuvar na jednak način kao i izlazni čvor samo što se projekcija umjesto po svojstvu "Exit" vrši po svojstvu "Guard", dok je uvjet kraja petlje topološka različitost svih čvorova na putu. (slika 3.10.) Budući da je algoritam odabira čvorova slučajan, čak i pri odabiru proporcionalnom razdiobi širine pojasa svi čvorovi bivaju birani iz istog podskupa, može se reći da je algoritam odabira puta anoniman u okviru realnih zahtjeva. Algoritam nije maksimalno anoniman jer se oslanja na prijavljenu širinu pojasa od strane usmjernika, što otvara prostor za maliciozno ponašanje - lažnim oglašavanjem visokih vrijednosti širine pojasa povećava se vjerojatnost bivanja odabranim za neku poziciju u kanalu. 3.4. Upravljanje zakrčenjem i tokom Dobrovoljci su pokreću programe kojima mogu ograničiti dodijeljenu propusnost. Stoga Tor poslužitelji koriste algoritam kabla sa znakovima [2], kako bi osigurali konstantan prosječan broj dolazećih okteta u dužem periodu, istovremeno dozvoljavajući kratkotrajna prekoračenja iznad dozvoljene propusnosti. Budući da je broj okteta koji uđu u Tor mrežu otprilike jednak broju okteta koji iz nje izađu, u praksi je dovoljno ograničiti samo broj ulaznih okteta. Kod TCP tokova broj ulaznih i izlaznih okteta nije jednak: moguća je situacija gdje je za prijenos samo jednog okteta potrebna čitava prijenosna protokolna podatkovna jedinica veličine 512 okteta. Pristup poput Nagleovog algoritma ovdje nije moguć, budući da taj oktet može biti namijenjen nekoj interaktivnoj aplikaciji. Stoga se taj slučaj tretira kao da je prijenosna protokolna podatkovna jedinica u potpunosti popunjena. 25 3. Protokol Tor Rubni čvorovi mogu heuristički razlikovati interaktivne tokove od običnih tokova uspoređujući frekvencije prosljeđivanja protokolnih podatkovnih jedinica. Dajući prednost interaktivnim tokovima osigurava im se prihvatljivo kašnjenje, pri čemu obični tokovi i dalje imaju dobru sveukupnu propusnost. Budući da izlazi mreže nisu uniformni, ovakav pristup je ranjiv na napad skraja-na-kraj, međutim napadač koji promatra oba krajnja čvora toka može saznati ovu informaciju analizom prometa. Čak i uz ograničenje vrijednosti širine pojasa zakrčenje, bilo namjerno ili slučajno, je realna opasnost. Ukoliko dovoljan broj korisnika odabere istu granu Tor mreže kao dio svojih virtualnih kanala, ona može postati zasićena. Pretpostavimo sljedeću situaciju: napadač kroz Tor mrežu pošalje veliku datoteku Web poslužitelju koji je pod njegovom kontrolom te potom, na strani Web poslužitelja, odbija čitati pristigle oktete. Bez mehanizma upravljanja zakrčenjem ovakva se uska grla šire natrag kroz čitavu mrežu. Upravljanje zakrčenjem uzima u obzir samo RELAY_DATA ćelije. Slika 3.11: Smještaj Tor protokola u OSI modelu, primjer multipleksiranja kanala i tokova. Kako bi mogao upravljati stvarnom potrošnjom propusnosti virtualnog kanala svaki usmjernik koristi dva prozora. Vrijednost prozora pakiranja govori koliko prijenosnih protokolnih podatkovnih jedinica iz ulaznih TCP tokova odredište/usmjernik smije pakirati, tj. poslati natrag posredniku/izvorištu. Vrijednost prozora isporuke govori koliko prijenosnih protokolnih podatkovnih jedinica, koje dolaze od korisničkog posrednika, usmjernik može isporučiti TCP tokovima na odredišteizvan mreže. Početna vrijednost svakog prozora postavlja se na 1000. Svaka isporuka ili pakiranje smanjuje vrijednost odgovarajućeg prozora za jedan. Kada usmjernik primi dovoljan broj prijenosnih protokolnih podatkovnih jedinica - u trenutnom ostvarenju ovaj parametar iznosi 100 - šalje RELAY_SENDME ćeliju kojoj identifikator toka nije postavljen u smjeru korisničkog posrednika. Po primitku RELAY_SENDME naredbe čvor povećava vrijednost prozora pakiranja za 100. Analogna situacija u suprotnom smjeru povećava vrijednost prozora isporuke. Po svakoj se TLS vezi između dva čvora Tor mreže može multipleksirati više virtualnih kanala (C i), a po svakom se virtualnom kanalu može multipleksirati više podatkovnih tokova ("TCP" tokovi aplikacija, Tici). Ukoliko vrijednost prozora pakiranja dosegne 0, usmjernik prestaje čitati podatke sa svih TCP veza pridruženih tokovima na odgovarajućem virtualnom kanalu te ne šalje ni jednu prijenosnu protokolnu podatkovnu jedinicu dok ne primi RELAY_SENDME ćeliju. 26 3. Protokol Tor Slika 3.12: Slijedni dijagram upravljanja zakrčenjem. Korisnički posrednik ponaša se jednako kao usmjernik, osim što čuva po jedan prozor pakiranja i prozor isporuke za svaki usmjernik u svom virtualnom kanalu. Također, ukoliko vrijednost prozora pakiranja dosegne 0, prestaje čitati podatke s tokova pridruženih odgovarajućem usmjerniku. Upravljanje tokom slično je upravljanju zakrčenjem. Čvorovi koriste RELAY_SENDME ćelije s postavljenim identifikatorom toka kako bi ostvarili kontrolu tijeka podataka za svaki pojedinačni podatkovni tok na virtualnom krugu. Slika 3.13: Slijedni dijagram upravljanja tokom. Za svaki se tok početno postavlja vrijednost prozora pakiranja na 500 te ju, po primitku RELAY_SENDME ćelije, povećava za fiksnu vrijednost - u trenutnom ostvarenju ovaj parametar iznosi 50. Prije no što pošalje RELAY_SENDME ćeliju, mehanizam kontrole toka mora provjeriti je li primio dovoljan broj prijenosnih protokolnih podatkovnih jedinica te da li je broj okteta koji nisu pogurani u odgovarajući TCP tok ispod određene vrijednosti, koja u trenutnom ostvarenju iznosi 10 veličina ćelije. 3.5. Skrivene usluge U ovom potpoglavlju detaljno su opisane skrivene usluge (engl. location hidden services). Korisnik može ponuditi TCP uslugu, npr. Web poslužitelj, bez otkrivanja svoje IP adrese. Osim što ovakva vrsta anonimnosti uvelike oslabljuje mogućnost (D)DoS napada - budući da ne zna IP adresu usluge, napadač je prisiljen napasti čitavu Tor mrežu; bjelodan je pokazatelj svrhe Tor protokola korisnik može objaviti materijal nepoćudan široj zajednici ili napadačima bez bojazni da će biti onemogućen u toj nakani, što mu na nezaštićenoj mreži ne bi uspjelo. Pomoću registara prijavljenih skrivenih usluga moguće je pretraživati njihov sadržaj. Za pretraživanje skrivenih usluga postoji tražilica Torgle koja je također postavljena kao skrivena 27 3. Protokol Tor usluga. Postavljač ne mora oglasiti skrivenu uslugu u registru skrivenih usluga, što znači da korisnici moraju znati javni ključ usluge te koji su čvorovi uvoda, kako bi joj mogli pristupiti. 3.5.1. Čvorovi susreta i čvorovi uvoda Čvorovi susreta omogućavaju pružanje usluga bez potrebe za otkrivanjem mjesta usluge tj. IP adrese u Tor mreži. Klijent odabire čvor susreta, otvara virtualni kanal prema njemu te obavještava čvor uvoda skrivene usluge o tome. Skrivena usluga odlučuje želi li prihvatiti klijentov zahtjev te gradi virtualni kanal prema čvoru susreta čime je efektivno uspostavljen virtualni kanal između skrivene usluge i klijenta bez da znaju jedno za drugo, već samo za čvor susreta. Slika 3.14: povezivanje klijenta na skrivenu uslugu preko čvora susreta Ukoliko se virtualni kanal prekine zbog vanjskog uzroka, pogođena strana gradi ponovo virtualni kanal prema čvoru susreta. Osim što se podaci prenose neizravno, ovakav pristup omogućava pružatelju usluge da odabere svoje klijente.Korisnik koji želi uspostaviti skrivenu uslugu mora odabrati privatni i javni ključ kako bi ju mogao identificirati. Odabire nekoliko čvorova uvoda (1), koje oglašava na razrješavaču potpisane javnim ključem usluge (2). Svaki čvor uvoda posjeduje javni ključ odgovarajuće usluge što onemogućava lažno predstavljanje. Potom uspostavlja virtualne kanale od čvora skrivene usluge do čvorova uvoda i čeka na zahtjeve klijenata. Ako pitani čvorovi odbiju biti čvorovi uvoda, ponavlja postupak. Kako bi klijent mogao pristupiti skrivenoj usluzi mora znati sažetak javnog ključa usluge (3). Ostale podatke potrebne za uspostavu veze dobiva od razrješavača upravo pomoću tog sažetka. Odabire jedan čvor mreže kao čvor susreta (virtualni kanal OP-RP) snabdijevajući ju nasumično odabranim kolačićem susreta kako bi prepoznala davatelja usluge kada se poveže na nju (4). Ako čvor odbije biti čvor susreta, ponavlja upit drugom čvoru. Potom stvara virtualni krug prema jednom od čvorova uvoda i šalje mu poruku kriptiranu javnim ključem usluge koja sadrži: identitet klijenta, lokaciju točke susreta, kolačić susreta te prvu polovicu Diffie-Hellmanovog rukovanja. Čvor uvoda prosljeđuje poruku skrivenoj usluzi (5). 28 3. Protokol Tor Ako pružatelj usluge smatra da klijent smije pristupiti usluzi (6), uspostavlja virtualni kanal prema čvoru susreta (virtualni kanal OPHS-RP) te mu šalje: kolačić susreta, drugu polovicu DiffieHellmanovog rukovanja i sažetak zajedničkog sjedničkog ključa (7). Čvor susreta spaja virtualne krugove OPHS-RP i OP-RP u jedan, a klijent šalje RELAY_BEGIN podatkovnu protokolnu jedinicu čime je uspostavljen anonimni tok te se daljnja komunikacija odvija uobičajeno (8). Kao što je već razjašnjeno, čvor susreta ne zna ništa o sudionicima komunikacije ni o prometu koji teče preko nje. Poruka koju klijent šalje čvoru uvoda može sadržavati i početnu autorizacijsku značku dobivenu od pružatelja usluge, koja može služiti za identifikaciju klijenata, ali i ograničenje pristupa samo odabranim klijentima. U normalnim uvjetima usluga može biti dostupna preko zrcalnih stranica na nezaštićenoj mreži. Ukoliko su zrcalne stranice napadnute i srušene klijenti s autorizacijskom značkom uvijek mogu pristupiti usluzi preko Tor mreže. Ovakvim pristupom, čvorovi uvoda postaju meta (D)DoS napada. Pružatelj usluge može odabranim korisnicima poslati listu trenutnih ili budućih neoglašenih točaka uvoda, što se pokazalo vrlo praktičnim rješenjem u slučaju da postoji stabilna i velika čvorova uvoda. Također može izdavati tajne javne ključeve za upite razrješavaču, ili jednostavno povećati broj točaka uvoda. Ovi pristupi ograničavaju izloženost usluge, čak i ako su neki korisnici s autorizacijskom značkom sudionici napada. 3.5.2. Lociranje skrivenih usluga U konceptu skrivenih usluga postoji inherentna slabost: usmjernik koji je u virtualnom kanalu prvi do skrivene usluge zna njenu IP adresu, međutim ne zna da ona pripada upravo poslužitelju skrivene usluge. Ako usmjernik zna da je prvi susjed skrivene usluge u virtualnom kanalu, skrivena usluga je kompromitirana. Na ovom principu i činjenici da Tor mreža ima konačan i dovoljno malen broj (~2000) čvorova temelji se napad lociranja skrivene usluge pomoću samo jednog zlonamjernog usmjernika. Slika 3.15: unutarnji aktivni napadač u mat poziciji Napadač oglašava svoj usmjernik s visokim vrijednostima poželjnih značajki ("Bandwidth" i "Uptime") te koristeći usmjernik istovremeno kao klijent, neprestano otvara i prekida virtualni kanal prema skrivenoj usluzi primoravajući ju tako na rotaciju čvorova koji čine dio virtualnog kanala OPHS-RP. Obzirom da je odabir čvorova na putu u osnovi slučajan, izgledno je da će nakon doglednog vremena zlonamjerni usmjernik postati prvi susjed skrivene usluge. Sa svakim novostvorenim virtualnim kanalom u kojem se zlonamjerni usmjernik ne nalazi, povećava se vjerojatnost da će nalaziti u sljedećem virtualnom kanalu. Napadač može detektirati da je dio virtualnog kanala OP HS-RP analizom prometa, tj. koreliranjem oblika prometnih tokova u vremenu. Točnije, pretražuje oblike prometnih tokova svih virtualnih kanala u kojima je na poziciji prijenosnog (srednjeg) čvora na uzorak prometa poslanog u virtualni kanal prema skrivenoj usluzi. Preostaje samo odrediti na kojoj je poziciji u virtualnom kanalu OP HS-RP napadačev usmjernik. Ukoliko IP adresa jednog od susjednih čvorova napadačevog usmjernika nije u konsenzusu stanja 29 3. Protokol Tor mreže, a budući da se virtualni kanali grade od usmjernika koji su navedeni u konsenzusu, znači da je skrivena usluga iza posrednika te da je upravo ta IP adresa adresa skrivene usluge. Ovo vrijedi pod uvjetom da nije mijenjana standardna logika odabira puta. Dakako, nije za očekivati da će postavljač skrivene usluge mijenjati logiku odabira puta na način da koristi neoglašene usmjernike, osim ukoliko su pod njegovom kontrolom. I u tom slučaju to predstavlja sigurnosni rizik, obzirom da ga odvaja od ostatka mreže narušavajući time anonimnost skrivene usluge. Ukoliko je skrivena usluga iza usmjernika, situacija je malo kompleksnija te se u tom slučaju pozicija napadačevog usmjernika u virtualnom kanalu OPHS-RP određuje prethodnikovim napadom ili napadom mjerenjem udaljenosti - metrika udaljenosti temelji se na RTT vremenu i pokazala se pouzdanom neovisno o geografskoj lokaciji usmjernika [13]. U scenariju kada je skrivena usluga iza posrednika IP adresa skrivene usluge može se odrediti u vremenu od svega nekoliko minuta do pola sata. U scenariju u kojem je skrivena usluga iza usmjernika potrebno je i do nekoliko sati. Ukoliko napadač kontrolira i čvor susreta (što ne predstavlja problem obzirom da klijent odabire čvor susreta) vrijeme lociranja skrivene usluge i u ovom scenariju pada na svega nekoliko minuta. U [13] obrađen je napad lociranja skrivene usluge s referencama na spomenute napade. Interesantno je napomenuti kako su autori po prvi puta u praksi, bar koliko je poznato, izveli prethodnikov napad koji je varijanta napada presijecanjem te da se do sada, u teoriji i simulacijama, pokazao razarajućim za anonimne komunikacijske sustave općenito. Napad presijecanjem vrijedi općenito za anonimne komunikacijske sustave obzirom da ih tretira kao crnu kutiju. Empirijski rezultati potvrdili su snagu prethodnikovog napada. 3.5.3. Čvorovi stražari Navedena slabost skrivenih usluga počiva na činjenici što napadač može prisiliti skrivenu uslugu da stvaranjem novih virtualnih kanala njegov usmjernik dođe na željenu poziciju. Ovo je ujedno i slaba točka napada. U [13] referencirana je metoda očuvanja anonimnosti kanala pomoću čvorova pomagača. Ideja je da prvi čvor virtualnog kanala uvijek bude isti čvor, čvor pomagač. Kako bi se bolje sakrio primatelj, posljednji čvor u virtualnom kanalu također je čvor pomagač. Ako je čvor pomagač kompromitiran, tada je i cijeli kanal kompromitiran. Međutim, ako je čvor pomagač korektan, tada napadač nikada neće doći na rubnu poziciju u virtualnom kanalu i neće moći locirati sudionike komunikacije. Očito, ovi čvorovi moraju biti komponente visokog povjerenja. Ako napadač kontrolira C od N usmjernika tada vjerojatnost da kontrolira naš ulazni i izlazni čvor C 2 iznosi - pod pretpostavkom da gradimo običan, ne-brzi kanal. Međutim, kako se kanali N rotiraju, ova vjerojatnost teži prema jedan. Primjenimo li spomenutu metodu, vjerojatnost da smo C N −C odabrali kompromitirani ulaz je , a da smo odabrali dobar ulaz , ali ne mijenja se s N N vremenom. Ova metoda koristi se i u Tor mreži s preciznijim nazivom: čvorovi stražari. Korištenje čvorova čuvara moguće je u konfiguracijskoj datoteci odrediti kao preferenciju ili zahtjev pri izgradnji svih virtualnih kanala, dakle i onih koji se ne koriste za skrivene usluge. Odabir čvorova čuvara vrše poslužitelji registara stanja mreže na temelju visokih vrijednosti značajki (zastavica) "Uptime" i "Bandwidth" (iz opisnika) dodjeljujući mu zastavicu "Guard" (u 30 3. Protokol Tor konsenzusu stanja mreže). Još jednom se pokazuje ozbiljan sigurnosni rizik sustava, obzirom da vrijednosti spomenutih zastavica mogu biti lažno prijavljene te ih sustav nikada ne provjerava, iako se ručno vode crne liste usmjernika. Ukoliko je odabir čvorova čuvara nasumičan, uz zahtjeve na mrežne performase usmjernika, tada skup svih čvorova čuvara mora biti dovoljno velik, kako bi vjerojatnost odabira zlonamjernog čvora čuvara bila dovoljno mala. Uz mali skup svih čvorova čuvara, vjerojatnost da je jedan od njih zlonamjeran znatno je manja, međutim, osim što time postaju meta napadača, ujedno se i particioniraju od ostatka mreže smanjujući svoju anonimnost. Naravno, čvorove čuvare moguće je odabrati temeljem povjerenja u dobre namjere administratora usmjernika, međutim to ne znači da taj usmjernik može biti kompromitiran od strane napadača zbog nesposobnosti/nemogućnosti administratora usmjernika. Ovaj problem na Tor mreži rješava se primarnim i pričuvnim listama "pouzdanih" čvorova čuvara. Izvršen je napad na skrivenu uslugu s jednim čvorom čuvarom. Kao i u prethodnim napadima, u roku nekoliko sati identificiran je čvor čuvar na poziciji prvog čvora do skrivene usluge. Sama skrivena usluga ostala je sigurna, iako njen čvor čuvar sada može biti izložen (D)DoS napadu. Upotrebom čvorova čuvara uvelike je smanjena opasnost lociranja skrivenih usluga, iako nije potpuno otklonjena. Za lociranje skrivene usluge sa samo jednim čvorom čuvarom, osim jednog do dva zlonamjerna usmjernika, potrebni su i resursi za onemogućavanje svih čvorova čuvara skrivene usluge. Onemogućeni su napadači s "malim" resursima, a napadačima s dostatnim resursima otežan je napad. Za sljedeće verzije protokola razmatra se mogućnost slojevitog slaganja čvorova čuvara, na način da se na poziciju prvog čvora do skrivene usluge biraju čvorovi iz jednog sloja (skupa), a za svaki čvor tog sloja postoji drugi sloj čvorova čuvara iz kojih se biraju čvorovi za poziciju drugog čvora do skrivene usluge. 3.5.4. Čvorovi sluge Skrivena usluga postavljena iza Tor usmjernika s uslojenom obranom čvorova stražara može dovoljno dobro jamčiti anonimnost. Ako nije moguće locirati skrivenu uslugu, može ju se barem onemogućiti (D)DoS napadom na sve čvorove uvoda. Čvorovi sluge služe kao posrednici kako bi klijenti mogli komunicirati sa čvorovima uvoda bez da znaju identitet čvora uvoda. Slika 3.16: Pristupanje čvoru uvoda skrivene usluge preko čvora sluge. Podcrtani brojevi predstavljaju nepromijenjene dijelove protokola. 31 3. Protokol Tor U osnovi, čvor sluga obavlja istu fukciju za čvor uvoda kao čvor susreta za samu skrivenu uslugu. Svaki čvor sluga ima svoju značku (VT) u kojoj je njegov identifikator (VI) i identifikator čvora uvoda kojeg poslužuje (IDIP). Svako posluživanje, tj. par čvor sluga – čvor uvoda, identificirano je parom ključeva (SKSRV, PKSRV) i identifikatorom (IDSKSRV). Ovaj trojac generira poslužitelj registar, a tajni ključ posluživanja zajedno s identifikatorom posluživanja prosljeđuje skrivena usluga čvoru uvoda u prvom koraku. U prethodnoj varijanti popis čvorova uvoda za neku skrivenu uslugu bio je indeksiran na poslužitelju registru javnim ključem usluge. Umjesto da klijent dohvati popis čvorova uvoda, dohvaća kartice za kontakt koje sadrže popis svih čvorova sluga za tu uslugu. Svaka kartica ima svoj identifikator i trajanje, a informacija o čvoru sluzi njegov identifikator, vrijeme trajanja, značku i javni ključ posluživanja. Klijent odabire jednog čvora slugu iz kartice za kontakt, povezuje se na njega i prosljeđuje mu značku i teret CREATE ćelije kriptirane javnim ključem posluživanja (ETM) (3). Čvor sluga, dekriptira značku svojim tajnim ključem i prosljeđuje (4) identifikator iz značke zajedno s teretom CREATE ćelije čvoru uvoda koji je naveden u znački. Identifikator čvora sluge sastoji se od identifikatora posluživanja, identifikatora čvora sluge i vremena isticanja posluživanja, potpisan tajnim ključem posluživanja te kriptiran javnim ključem čvora uvoda još od strane poslužitelja registra. Čvor uvoda provjerava identitet čvora sluge i pomoću tereta CREATE ćelije otvara virtualni kanal prema klijentu. Protokol se dalje odvija kako je navedeno. Na ovaj način autentificirani su međusobno čvor uvoda i klijent bez da znaju jedno za drugo putem ključa posluživanja. Time je ujedno i onemogućen napad čovjekom-u-sredini od strane čvora sluge. Isto tako svako posluživanje identificirano je od strane skrivene usluge, što joj omogućava da izgradi reputacijski sustav za korisnike i time poboljša svoju autorizacijsku strategiju. Čvorovi sluge trebali bi zadovoljavati uvjete stabilnosti i neke minimalne širine pojasa. Jedini način za onemogućavanje skrivene usluge sada je preuzimanje dovoljno čvorova sluga u mreži kako bi mogli locirati čvorove uvoda. U [14] navedena je, uz mrežu od pet stotina čvorova, sljedeća ocjena: za upotrebu samo jednog kompromitiranog čvora sluge potrebno je nešto manje od četiri stotine kompromitiranih čvorova u mreži da bi vjerojatnost lociranja svih točaka uvoda bila oko pola, dok je uz upotrebu deset kompromitiranih čvorova sluga potrebno nešto više od pedeset kompromitiranih čvorova u mreži za istu vjerojatnost. U istom slučaju za gotovo sigurno prepoznavanje (>0.9) potrebno je nešto manje od stotinu i pedeset kompromitiranih čvorova u mreži. Ovakav poboljšani protokol može jamčiti zadovoljavajuću razinu anonimnosti i dostupnosti pružateljima skrivenih usluga. 3.5.5. Povezivanje s korisničkim programima Pružatelj usluge snabdijeva svoj korisnički posrednik lokalnom IP adresom i pristupnim vratima usluge, strategijom za autorizaciju klijenata te javnim ključem usluge. Korisnički posrednik anonimno objavljuje zapis potpisan privatnim ključem na razrješavaču koji se sastoji od: javnog ključa usluge, vremena isteka zapisa, te liste točaka uvoda. Zapisi na razrješavaču indeksirani su sažetkom javnog ključa. Web poslužitelj pružatelja usluge ostaje nepromijenjen te ne zna ni da je skriven iza Tor mreže niti je li iza posrednika ili usmjernika. Posrednik također ostaje nepromijenjen – klijentsko sučelje i dalje je SOCKS posredničko sučelje. Sve potrebne informacije kodirane su u FQDN imenu koje klijent koristi pri uspostavi veze. Skrivene usluge koriste virtualnu vršnu domenu .onion: alfanumerička imena računala domaćina poprimaju oblik x.y.onion, gdje je x autorizacijski kolačić, a y sažetak javnog ključa usluge. 32 3. Protokol Tor Posrednički program klijenta pregledava upisane adrese, ukoliko su namijenjene skrivenom poslužitelju dekodira ključ i počinje postupak spajanja kao što je opisano. 33 4. Automati stanja simulacijskih elemenata U ovom poglavlju opisani su automati stanja za protokol Tor. Svrha modela je da bude platforma za daljnji razvoj protokola, tj. projektiranje reputacijskog sustava. Stoga se u prvoj iteraciji modelira isključivo funkcionalnost potrebna za ostvarivanje anonimizirane veze. Funkcionalnost skrivenih usluga u potpunosti je zanemarena. Ćelija RELAY_DROP ne koristi se u modelu, kao ni sve ćelije za skrivene usluge. Funkcionalnost poslužitelja registara modelirana je djelomično, tj. promet dokumentima stanja iz perspektive klijenta poštuje se u potpunosti. Svaki Tor usmjernik može ujedno biti i izlazni čvor, odnosno spojiti se na vanjska mrežna odredišta. U modelu postoje četiri simulacijska elementa: Tor posrednik, Tor usmjernik, predposlužitelj registar te poslužitelj registar. Sve sheme podliježu UML 2.2 specifikaciji. Slika 4.1: Dijagram stanja simulacijskog elementa. Simulacijski element sastoji se od upravljačke komponente, komponenti koje modeliraju virtualne kanale te komponenti koje predstavljaju tokove. Za svaki simulacijski element definirana je količina paralelnih TLS kanala te broj virtualnih kanala. Na slici 4.1 prikazana je načelna shema simulacijskog elementa. Upravljačka komponenta ("control") prima ulaze ("input") te ukoliko je potrebno, prosljeđuje ih na obradu komponentama koje upravljaju kanalima ("circuits") ili tokovima ("streams"), a one vrše izlaze te obavještavaju upravljačku komponentu o ishodu zatražene operacije. Model podržava i događaje stohastičke prirode kao što su prekid TLS kanala, prisutnost i odsutnost čvora na mreži te generiranje korisničkog (izvorišnog) i odredišnog prometa. Kriptografske operacije u potpunosti su zanemarene, iako se uzima u obzir vrijeme potrebno za njihovo izvršenje. U opisima stanja, rečenice u kurzivu predstavljaju postupke koje stvarne komponente vrše, ali su u modelu zanemarene. 34 4. Automati stanja simulacijskih elemenata 4.1. Tor posrednik or posrednik prima zahtjeve za vezom klijentskih aplikacija te gradi odgovarajuće virtualne kanale. Obzirom da je promet kroz Tor mrežu osjetno spor, posrednik gradi dodatne kanale kako bi što brže mogao ispuniti zahtjeve klijenata. Dodatno, vodi se statistika zahtjeva klijenata prema kojoj se grade tzv. predustrožni virtualni kanali. 4.1.1. Upravljačka komponenta Na slici 4.2 prikazana je upravljačka komponenta Tor posrednika koja poslužuje zahtjeve klijenata, prosljeđuje pristigli promet natrag klijentima i održava konsenzus stanja mreže. Slika 4.2: Dijagram stanja upravljačke komponente Tor posrednika. START: Tor posrednik je isključen. BOOTSTRAP: Tor posrednik je uključen. Kako bi mogao graditi virtualne kanale mora posjedovati važeći konsenzus stanja mreže te opisnike Tor usmjernika. Svaki posrednik dolazi s lokalnom kopijom popisa poslužitelja registara stanja. Pretpostavlja se da posrednik ne posjeduje nikakve dokumente stanja, izuzev liste poslužitelja registara stanja. Nasumice odabire jedan poslužitelj registara stanja s liste, otvara virtualni kanal prema njemu te otvara tok za promet dokumentima stanja. Dohvaća sve certifikate ključeva za potpisivanje poslužitelja registara stanja HTTP-om. Potom dohvaća konsenzus stanja mreže s adrese provjerava autentičnost. Zatvara kanal prema poslužitelju registara stanja. Ukoliko je konsenzus autentičan slijedi dohvaćanje opisnika Tor usmjernika s predposlužitelja registara stanja. Odabiru se najmanje tri predposlužitelja, osim ako bi to značilo da je potrebno više od jednog zahtjeva za manje od četiri opisnika, inače ih se odabire što manje. Ne dohvaća se više od stotinu dvadeset i osam opisnika po predposlužitelju. Raspodjela zahtjeva za dohvaćanjem po predposlužiteljima je nasumična. Svi dohvaćeni opisnici koji nisu zatraženi odbacuju se, a ostalim se opisnicima provjerava autentičnost. 35 4. Automati stanja simulacijskih elemenata Ukoliko je poslužitelj registara stanja nedostupan, ili konsenzus nije autentičan, postupak se ponavlja za novi poslužitelj stanja. Tor posrednik ne gradi kanale dok nema važeći konsenzus stanja mreže i najmanje jednu četvrtinu svih opisnika za koje vjeruje da rade. LISTEN: Tor posrednik ima dovoljno svježih informacija o stanju mreže i može početi graditi virtualne kanale. Posrednik pokušava imati uvijek otvoren jedan čisti brzi kanal koji dozvoljava spajanje na vanjsko odredište s pristupnim vratima za HTTP te najmanje dva čista unutarnja, brza i stabilna kanala za slučaj da se pojavi (R)DNS zahtjev ili zahtjev prema skrivenoj usluzi. Ukoliko je postavljena skrivena usluga, grade se najmanje tri ovakva kanala. Za svaki dolazni zahtjev provjerava se jesu li tražena pristupna vrata na listi dugoživućih pristupnih vrata. Ukoliko jesu, pokušava se održati dva brza izlazna kanala koji dozvoljavaju takvo spajanje. Ako je prošlo više od sat vremena od posljednjeg zahtjeva, kanali za ta pristupna vrata se zatvaraju. Ako ni jedan postojeći kanal (izgrađen ili u izgradnji) ne zadovoljava dolazni zahtjev gradi se novi kanal, inače se na odgovarajućem kanalu otvara tok za taj zahtjev. Ukoliko se zahtijeva pristup skrivenoj usluzi ili pristup određenom izlaznom čvoru (putem .exit notacije u URL-u odredišta), a postoji čisti kanal, tada se reže na posljednjem čvoru i širi na traženi čvor. Ako se kanal ne uspije dovršiti, postojeći dio kanala se zatvara. Ako se kanal ne uspije izgraditi N puta u X sekundi, ponovna izgradnja počinje tek nakon X sekundi. Tor posrednik nasumce odabire identifikator virtualnog kanala. Ukoliko zahtjev za otvaranjem tok ne uspije s razlogom EXITPOLICY, posrednik tog čvora ne smatra više izlaznim dok ne dohvati novi opisnik za njega. Ako se klijentski zahtjev ne posluži u vremenu SocksTimeout (standardno iznosi 2 min) posrednik dojavljuje grešku klijentu zatvarajući SOCKS vezu. Ukoliko je nekom virtualnom kanalu isteklo vrijeme trajanja, potrebno ga je rotirati, odnosno prebaciti sve tokove na novi virtualni kanal. Specifikacije protokola ne opisuju kako je to izvedeno, ali uzevši u obzir navedeno, logično je za pretpostaviti kako se s izgradnjom novog kanala započinje Y sekundi prije isteka vremena trajanja. Sve dolazne poruke prosljeđuju se odgovarajućem kanalu odnosno toku, a ukoliko poruka nije naslovljena ni na jedan postojeći kanal odbacuje se. DIRECTORY: Svi dokumenti stanja mreže imaju trajanje u kojem su važeći i kada god ono istekne dohvaća se svježi dokument na način kao što je već opisano, osim za opisnike usmjernika. Klijent uvijek pokušava imati najbolji opisnik za neki usmjernik i to provjerava svakih deset sekundi. Opisnik je najbolji ako je objavljen prije najmanje deset minuta, posrednik ga ne posjeduje niti ga pokušava trenutno dohvatiti te smatra da odgovarajući usmjernik ima postavljene zastavice "Running" i "Valid". Također, posrednik ne preuzima opisnik ako bi ga odbacio odmah po dohvaćanju. Ako je potrebno dohvatiti opisnike za najmanje šesnaest poznatih usmjernika, ili je prošao interval od deset minuta klijent dohvaća opisnike. Ako dohvaćanje nije uspjelo, klijent to bilježi i ne dohvaća opisnike dok nije prošao određeni interval vremena – nakon prvog neuspjeha pokušava odmah ponovo, a potom čeka minutu, pet pa deset minuta, četvrti put pokušava nakon cijelog dana. Svakih sat vremena, brojač se poništava tako da se, efektivno, četvrti pokušaj vrši nakon proteklih sat vremena, a ne jednog dana. Klijent zadržava opisnik najviše dva dana ili dok se ne pojavi bolji opisnik. 36 4. Automati stanja simulacijskih elemenata 4.1.2. Virtualni kanal Na slici 4.3 prikazan je dijagram stanja virtualnog kanala iz perspektive Tor posrednika. Slika 4.3: Dijagram stanja virtualnog kanala iz perspektive Tor posrednika. START: Upravljačka komponenta predaje put i zahtijeva izgradnju novog virtualnog kanala. Ukoliko je TLS kanal prema čvoru stražaru već otvoren odmah se prelazi u izgradnju prve etape virtualnog kanala, inače se otvara TLS kanal prema čvoru stražaru. CONNECTING, CONNECTED: Otvoren je TLS kanal prema čvoru stražaru te se šalje NET_INFO ćelija niz kanal. Slijedi primanje NET_INFO ćelije pa je TLS kanal spreman za otvaranje virtualnog kanala te se šalje CREATE ili CREATE_FAST ćelija. OPENING, PENDING: Nakon što je primljena CREATED(_FAST) ćelija otvoren je virtualni kanal prema stražaru. Ukoliko je duljina puta jedan, virtualni kanal je otvoren. Prije izračunavanja simetričnog ključa za enkripciju podatkovnog toka na kanalu, provjerava se nisu li obje polovice Diffie37 4. Automati stanja simulacijskih elemenata Hellmanovog rukovanja degenerirane, tj. da su strogo veće od jedan i strogo manje od modulusa umanjenog za jedan. Ćelijama RELAY_EXTEND proširuje se virtualni kanal kako je zadano putem. Nakon primanja RELAY_EXTENDED ćelije od izlaznog čvora kanal je otvoren. OPENED: Virtualni kanal je otvoren i spreman za korištenje. Ukoliko je stigao (R)DNS zahtjev od strane klijentske aplikacije šalje se RELAY_RESOLVE ćelija niz kanal. Na PADDING ćeliju odgovara se istom te se brojač vremena neaktivnosti TLS kanala postavlja na nulu. Ako je generirano dovoljno prometa (veličine tereta stotinu ćelija) posrednik šalje RELAY_SENDME ćeliju svim usmjernicima koji tvore kanal. Ukoliko je ista ćelija primljena povećava se vrijednost prozora pakiranja za stotinu. RESOLVING: Ako je zahtjev uspješno izvršen iz kanala dolazi ćelija RELAY_RESOLVED, inače stiže ćelija RELAY_END s razlogom neuspjeha i opcionalnim dodatnim podacima. PADDING: Ako brojač vremena neaktivnosti TLS kanala istekne šalje se PADDING ćelija i čeka na odgovor istom od čvora stražara. NORMAL END: Normalni razlozi za gašenje kanala su: zbog nedostupnosti usmjernika (HIBERNATING, RESOURCELIMIT, INTERNAL), zbog isteka trajanja (FINISHED), zbog prekida (OR_CONN_CLOSED) ili nemogućnosti uspostave (CONNECTFAILED, TIMEOUT, DESTROYED) TLS kanala, zbog nepostojanja zatražene skrivene usluge (NOSUCHSERVICE) te NONE (potreban zbog kompatibilnosti unatrag). ABNORMAL END: Abnormalni razlozi za gašenje kanala su: zbog prekršenja protokola (PROTOCOL) te zbog lažnog predstavljanja (OR_IDENTITY). Logika oporavka temeljna na razlozima prekida nije navedena u specifikacijama protokola. Abnormalnim razlozima smatraju se samo oni koji mogu biti benigni isključivo ukoliko je razlog za takvo ponašanje greška u službenom kodu. Naravno, razni uzorci prometa s ostalim ćelijama mogu ukazivati na maliciozne namjere odredišnog Tor usmjernika, ali za detekciju istih potrebna je kompleksnija logika koja izlazi iz okvira bilo kojeg protokola prijenosnog sloja. 38 4. Automati stanja simulacijskih elemenata 4.1.3. Tok Na slici 4.3 prikazan je dijagram stanja virtualnog toka iz perspektive Tor posrednika. Slika 4.4: Dijagram stanja toka iz perspektive Tor posrednika. START: Upravljačka komponenta zahtijeva otvaranje novog toka i predaje URL traženog vanjskog odredišta. Šalje se RELAY_BEGIN ćelija niz kanal. PENDING: Ako je primljena RELAY_CONNECTED ćelija tok je otvoren, inače tok abnormalno završava. Ukoliko je razlog kraja izlazna politika posljednjeg čvora označava se ne-izlaznim do dohvaćanja njegovog svježeg opisnika. STREAMING: Ako klijentska aplikacija pošalje podatke oni se pakiraju u RELAY_DATA ćelije i šalju niz tok. Ukoliko iz toka stignu RELAY_DATA ćelije, provjerava se sažetak te, ako je valjan, prosljeđuje se klijentskoj aplikaciji, inače se tok zatvara. Ako je u spremnik za slanje toka preostalo manje od deset tereta ćelija ili je vrijednost prozora pakiranja manja od četiri stotine i pedeset, posrednik šalje RELAY_SENDME ćeliju niz tok. Ukoliko je ista ćelija primljena povećava se vrijednost prozora isporuke za pedeset. NORMAL END: Uz gorenavedene, normalni razlozi za gašenje kanala su: nemogućnost uspješnog (R)DNS razrješenja (REASON_RESOLVEFAILED), pokušaj otvaranja toka za promet dokumentima stanja prema usmjerniku koji nije (pred)poslužitelj registara stanja (REASON_NOTDIRECTORY), vanjsko odredište odbija spajanje (REASON_CONNECTREFUSED), veza prema vanjskom odredištu neočekivano je prekinuta (REASON_CONNRESET), anonimizirani TCP tok se zatvara (REASON_DONE) te svi ostali ralozi (REASON_MISC). 39 4. Automati stanja simulacijskih elemenata ABNORMAL END: Isti kao gorenavedeni. 4.2. Tor usmjernik Tor usmjernik je gradivni element Tor mreže te prema zahtjevima klijenata gradi virtualne kanale. Ukoliko mu to dozvoljava izlazna politika, može vršiti spajanja na vanjska odredišta te razrješavati (R)DNS upite. Klijenti mogu biti Tor posrednici izravno, ili preko drugih Tor usmjernika. 4.2.1. Upravljačka komponenta Na slici 4.5 prikazana je upravljačka komponenta Tor usmjernika koja poslužuje zahtjeve klijenata i održava konsenzus stanja mreže. Slika 4.5: Dijagram stanja upravljačke komponente Tor usmjernika. START: Tor usmjernik je isključen. BOOTSTRAP: Tor usmjernik je uključen. Kako bi mogao sudjelovati u gradnji virtualnih kanala mora posjedovati važeći konsenzus stanja mreže te opisnike Tor usmjernika. Postupak je identičan gorenavedenom. LISTEN: Tor usmjernik ima dovoljno svježih informacija o stanju mreže i može sudjelovati u gradnji virtualnih kanala. Usmjernik prvo ispituje dohvatljivost svojih pristupnih vratiju za podatkovni promet gradeći brzi virtualni kanal sa sobom kao posljednjim čvorom. Ako je uspješan odlučuje objaviti svoj opisnik. Potom gradi NUM_PARALLEL_TESTING_CIRC (4) virtualna kanala prema sebi te mjeri raspoloživu širinu pojasa. Ukoliko je usmjernik ujedno (pred)poslužitelj stanja ispituje dohvatljivost svojih pristupnih vratiju za promet dokumentima stanja gradeći kanal sa sobom kao posljednjim čvorom i otvarajući tok za promet dokumentima stanja. Sve dolazne poruke prosljeđuju se odgovarajućem kanalu odnosno toku, a ukoliko poruka nije naslovljena ni na jedan postojeći kanal odbacuje se. Ukoliko se promijeni IP adresa, ponovo se ispituje dohvatljivost. 40 4. Automati stanja simulacijskih elemenata Ako je nekom virtualnom kanalu isteklo vrijeme trajanja, potrebno ga je rotirati, odnosno prebaciti sve tokove na novi virtualni kanal. Usmjernik objavljuje novi opisnik svaki puta kada se ispuni jedan od sljedećih uvjeta: prošao je period vremena -koji uobičajeno iznosi 18 h od slanja posljednjeg opisnika, promijenila se vrijednost polja u opisniku koja nije vrijednost širine pojasa ("Bandwidth") ili ukupno vrijeme na Tor mreži bez prekida ("Uptime") te ako su se promijenili podaci o identitetu, izlaznoj politici usmjernika: Usmjernik je prešao u stanje hibernacije, vrijednost širine pojasa se povećala za najmanje dvostruko te se računalo domaćin se resetiralo (zastavica "Uptime" postaje 0). DIRECTORY: Svi dokumenti stanja mreže imaju trajanje u kojem su važeći i kada god ono istekne dohvaća se svježi dokument na način kao što je već opisano. 41 4. Automati stanja simulacijskih elemenata 4.2.2. Virtualni kanal Na slici 4.6. prikazan je dijagram stanja virtualnog kanala iz perspektive Tor usmjernika. Slika 4.6: Dijagram stanja virtualnog kanala iz perspektive Tor usmjernika. START: Upravljačka komponenta uspostavila je TLS kanal s izvorištem ili je predala već postojeći TLS kanal što znači da odmah prelazi u izgradnju prve etape virtualnog kanala. 42 4. Automati stanja simulacijskih elemenata CONNECTED, OPENING: Razmjenjuje se par NET_INFO ćelija, kako bi se spriječio napad čovjekom-u-sredini. Nakon razmjene CREATE(_FAST) ćelija projerava se degeneracija polovica ključa. Ako je primljena CREATE_FAST naredba usmjernik zna da je duljina kanala jedan i TREBAO BI odbiti sve zahtjeve za otvaranjem toka. Identitet drugog partnera provjerava se iz konsenzusa stanja mreže. OPENED: Virtualni kanal s klijentom sada je otvoren i može prihvaćati (R)DNS upite, širiti, rezati ili gasiti kanal te obavljati kućanske poslove u istom smislu kao što je to opisano za posrednika. Ako usmjernik nije posljednji na putu može primiti RELAY_TRUNCATED ćeliju te ju vraća niz kanal prema izvorištu. RESOLVING: Kada stigne (R)DNS zahtjev od klijenta, a njegova izlazna politika to dopušta, usmjernik razrješava upit i vraća rezultat izvorištu u RELAY_RESOLVED ćeliji. U suprotnom, vraća se RELAY_END ćelija s postavljenim REASON_EXITPOLICY razlogom. EXTENDING: Ako je usmjernik posljednji na putu uspostavlja novi virtualni kanal s traženim usmjernikom pomoću tereta RELAY_EXTEND ćelije. Identitet drugog partnera provjerava se iz tereta ćelije. Inače, prosljeđuje zahtjev niz kanal i čeka na odgovor. TRUNCATING: Ako je usmjernik posljednji na novom putu niz kanal šalje DESTROY ćeliju s postavljenim REQUESTED razlogom, inače prosljeđuje zahtjev niz kanal. PADDING: Ako brojač vremena neaktivnosti TLS kanala istekne, šalje se PADDING ćelija i čeka na odgovor istom od klijenta. NORMAL END: Uz gorenavedene moguć je još razlog kada se uništava kanal na zahtjev izvorišta (REQUESTED). ABNORMAL END: Isti kao gorenavedeni. 43 4. Automati stanja simulacijskih elemenata 4.2.3. Tok Na slici 4.7 prikazan je dijagram stanja virtualnog toka iz perspektive Tor usmjernika. Slika 4.7: Dijagram stanja toka iz perspektive Tor usmjernika. START: Prima se RELAY_BEGIN ćelija te se u izlaznom politikom Tor usmjernika vrši spajanje na vanjsko odredište. Ako URL vanjskog odredišta sadrži DNS domenu, razrješavanje vrši usmjernik. PENDING: Ako je spajanje uspjelo tok je otvoren te se šalje RELAY_CONNECTED ćelija posredniku. Inače, tok abnormalno završava, što se dojavljuje RELAY_END ćelijom s postavljenim odgovarajućim razlogom i mogućim dodatnim odgovorom vanjskog odredišta. STREAMING: Ako stignu RELAY_DATA ćelije provjerava im se sažetak te, ako je valjan, njihov se teret prosljeđuje vanjskom odredištu. Ukoliko od vanjskog odredišta stigne promet, pakira se u RELAY_DATA ćelije i šalje niz kanal prema posredniku. Kontrola toka obavlja se kao što je opisano. NORMAL END, ABNORMAL END: Isti kao gorenavedeni. 4.3. Promet dokumentima stanja Ako usmjernik primi RELAY_BEGIN_DIR ćeliju, tretira ju kao da je otvoren običan tok prema njemu, samo na pristupna vrata za promet dokumentima stanja. Dokumenti stanja dohvaćaju se i objavljuju HTTP-om. Slijedi popis URL-ova dokumenata stanja: • certifikati svih poslužitelja registara stanja http://<DA>/tor/keys/all.z 44 4. Automati stanja simulacijskih elemenata • konsenzus stanja mreže http://<DA>/tor/status-vote/current/consensus.z • opisnik Tor usmjernika http://<OR ili DA>/tor/server/<D>.z 45 5. Praktični rad Za ostvarenje modela odabran je OMNeT++ diskretni simulator ostvaren u programskom jeziku C++ [30]. Za neprofitne svrhe objavljen je pod ekvivalentom GPL licence, dok je komercijalnu upotrebu potrebno platiti. Kao praktični dio rada, ostvaren je simulator Tor mreže s osnovnom funkcionalnošću uspostavljanja anonimizirane TCP veze, odnosno: otvaranje i zatvaranje virtualnog kanala i toka te prosljeđivanje korisničkog prometa. Ova funkcionalnost ostvarena je nad INET okvirom, koji služi za simulaciju mrežnog prometa s uobičajenim protokolima. Za simulaciju je potrebno pripremiti sljedeće datoteke: • inicijalizacijska .ini datoteka u kojoj se nalaze svi parametri simulacije. • .ned datoteke (engl. NEtwork Definition) koja definira topologiju simuliranog sustava • .ned datoteka (engl. NEtwork Definition) svih modula koji se koriste. U ovoj datoteci definira se struktura modula (ulazi, izlazi i parametri) • C++ razredi u kojima je definirano ponašanje modula Jednostavni modul definiran je s tri datoteke s istim imenom, ali s različitom ekstenzijom: .ned, .h i .cc. Složeni modul sastoji se od više jednostavnih modula, a definiran je jednom .ned datotekom. Sve datoteke koje definiraju simulaciju prevode se u konačnici gcc prevodiocem u jednu izvršnu datoteku koja se potom izvodi u komandno-linijskom (CMDENV) ili grafičkom (TKENV) sučelju. Slika 5.1: Arhitektura OMNeT++ simulatora. Jezgra simulatora je programska knjižnica. U knjižnici simulacijskih modela nalaze se C++ ostvarenja svih modula. U izvršnom simulacijskom modelu nalaze se instance svih potrebnih modula. U simulacijskom okruženju (koje je također programska knjižnica) nalazi se ulazna točka (main funkcija) te glavna simulacijska petlja u kojoj se određuje sljedeći događaj. Simulacijsko okruženje je središnja komponenta simulatora. Ono određuje koji se moduli s kakvim vrijednostima parametara moraju instancirati, a te informacije prosljeđuje jezgri koja obavlja zadano. Također, zaduženo je za upravljanje pogreškama. U jezgri se izvršavaju trenutni i zakazuju budući događaji. Jezgra i izvršni model povezani su s korisničkim sučeljem pomoću jedinstvenog sučelja (objekt ev) koji pripada simulacijskom okruženju. Modularna arhitektura simulatora omogućava ponovnu iskoristivost pojedinih komponenti kao i visoku prilagodljivost simulatora. Npr. moguće je ostvariti vlastito korisničko sučelje umjesto jednog od dva standardna, kao i iskoristiti jezgru, ili jezgru i okruženje kao poseban modul za neku drugu namjenu. Nad OMNeT++ simulacijskim okruženjem napisano je nekoliko okvira za simuliranje različitih sustava. 46 5. Praktični rad 5.1. OMNeT++ INET INET je okvir u kojem se nalaze razni protokoli Interneta: UDP, TCP, SCTP, IP, IPv6, Ethernet, PPP, 802.11, MPLS, OSPF... U pravilu, čvorovi mreže su složeni moduli sastavljeni od jednostavnih modula. Svaki jednostavni modul ostvaruje funkcionalnost pojedinog protokola. Kao čvor domaćin odabran je nodes.inet.StandardHost složeni modul, uz minimalne preinake. Slika 5.2: Grafički prikaz datoteke StandardHost.ned. Modul notificationBoard, kao što mu i ime kaže, služi za intermodularnu komunikaciju. Modul interfaceTable ostvaruje funkcionalnost sličnu ifconfig naredbi. Modul namTrace služi za komunikaciju s jezgrom simulatora. Slika 5.3: respektivno s lijeva na desno, grafički prikaz složenih modula: NetworkLayer.ned, PPPInterface.ned te EthernetInterface.ned Iz ove definicije odstranjeni su udp i sctp modul, kao i odgovarajući App moduli, obzirom da Tor koristi isključivo TCP. NED jezik podržava parametrizirane tipove modula kao i vektorske ulaze odnosno izlaze. Primjer parametriziranog modula jest tcpApp modul. Parametar tcpAppType tipa string zadaje se u omnetpp.ini datoteci odgovarajuće simulacije, a u biti je ime razreda 47 5. Praktični rad koji ostvaruje TCP aplikaciju kao što su primjerice TCPEchoApp, TCPSessionApp, TCPBasicClientApp. // package <path> // import <path> module <name> { parameters: gates: submodules: TCPSpoofApp, int numTcpApps = default(0); string tcpAppType = default("n/a"); inout pppg[] @labels (PPPFrame-conn); inout ethg[] @labels (EtherFrame-conn); <instance_name>: <module_name> { parameters: } tcpApp[numTcpApps]: <tcpAppType> like ITCPApp { parameters: @display ("p=186,54"); } tcp: <tcpType> like ITCP { parameters: @display ("p=186,141"); } connections allowunconnected: for i=0..numTcpApps-1 { tcpApp[i].tcpOut --> appIn++; tcpApp[i].tcpIn <-- appOut++; } tcp.ipOut --> networkLayer.tcpIn; tcp.ipIn <-- networkLayer.tcpOut; Slika 5.4: Djelomični tekstualni prikaz datoteke StandardHost.ned. Kako bi se koristili parametrizirani moduli potrebno je definirati sučelje modula (like TCPApp). Sučelje definira isključivo ulaze i izlaze modula. Vektorski ulaz, kao što mu i samo ime kaže, omogućava da se više modula spaja na jedan modul. Potrebno je definirati dimenziju vektora u omnetpp.ini datoteci. Razred koji definira ponašanje modula mora naslijeđivati razred cSimpleModule kako bi ga simulator prepoznao kao simulacijski modul. Osim članskih funkcija initialize() i finish() koje služe za učitavanje vrijednosti parametara tj. zapisivanje rezultata simulacije u datoteku s rezultatima bitne su još i send(cMessage *msg,const char* gatename, int gateIndex = -1)funkcija za slanje poruka drugima modulima te scheduleAt(simtime_t t,cMessage *msg) funkcija koja služi za ostvarenje brojila. Naravno, moduli moraju biti povezani (<--, -->, <-->) u NED definiciji modula kako bi mogli komunicirati porukama. Članska funkcija koja definira ponašanje modula može biti prekrivena activity() ili handleMessage(cMessage *msg) funkcija. U dokumentaciji je preporučeno izbjegavanje prve funkcije "gdje god je to moguće". Razlog tome leži u činjenici što se potonja funkcija poziva kada se na ulaznim vratima modula pojavi poruka te završava po obradi primljene. Funkcija activity() se poziva nakon inicijalizacije te se pretpostavlja da završava kada završava i simulacija – ovisno o ostvarenoj logici, što u velikoj većini slučajeva znači da je "stalno živa". Neka funkcija zauzima 32 KB radne memorije na stogu i neka samo jedan jednostavni modul po čvoru ima njome definirano ponašanje. Ako se simulira mreža od 10000 čvorova gruba procjena daje konstantno zauzeće radne memorije od 320 MB samo za tu funkciju [30]. Uz upotrebu vektorskih modula i parametriziranih tipova modula korisniku je, nakon detaljnog upoznavanja s odgovarajućim dijelovima INET-a, omogućena relativno bezbolna promjena ponašanja u simulaciji jednostavnom promjenom parametara u omnetpp.ini datoteci. Prema navedenom prirodno se nameće dizajn modela: napisati modul koji ostvaruje ITCP.ned sučelje, a predstavlja jednu stranu TLS kanala te se vektorskim ulazom spaja na TCP modul. Nad tim modulom bio bi Tor modul s "donjim" vektorskim vratima za TLS module i "gornjim" 48 5. Praktični rad vektorskim vratima za korisničke aplikacije. Gornja vrata Tor modula mogu ostvariti ITCP.ned sučelje kako bi Tor bio transparentan za korisničke aplikacije. S TCP.ned modulom moguće je komunicirati izravno, odnosno slati mu poruke koje predstavljaju TCP protokolne podatkovne jedinice, ili korištenjem razreda Socket, koji enkapsulira logiku TCP-a. Radi jednostavnosti, odabrana je potonja varijanta. Iako Tor čvorovi slušaju na dvama pristupnim vratima, za potrebe simulacije dovoljna su jedna vrata obzirom da se RELAY_BEGIN_DIR ćelija tretira kao da je primljena RELAY_BEGIN ćelija na pristupnim vratima za promet dokumentima stanja [6]. Svaki bi Tor čvor imao jedan TLS modul za poslužiteljske veze - po spajanju se interno otvara nova utičnica kako bi poslužitelj mogao nastaviti slušati na istim vratima - te bi dinamički generirao TLS module za klijentske zahtjeve. Dinamičko generiranje modula vremenski je skupa operacija: nalaženje tipa modula - gdje je tip modula zadan kao string, generiranje modula, podešavanje parametara i povezivanje vratiju modula, poziv funkcije za generiranje podmodula te inicijalizacija modula. [30] Jedina konkretna brojka koja se u ovom trenutku može procijeniti jest broj kanala u sustavu. Realna Tor mreža ima ~250000 korisnika [18] i ~2000 čvorova [31] . Svaki posrednik, osim aktivnih korisničkih veza pokušava u svakom trenutku imati otvorenim barem deset neiskorištenih virtualnih kanala. Ako stotinu anonimizirajućih TCP kanala stane na jedan TLS kanal, odnosno deset virtualnih kanala na jedan TLS kanal i uz tri posredna čvora te za samo jedan anonimizirani TCP 250000 10 × ×4≈10 4 TLS modula. kanal po posredniku to je 100 10 Uz deset puta zahtjevnije korisnike i deset puta revnije posrednike potrebno je generirati milijun TLS modula. Smanji li se broj anonimiziranih TCP kanala po TLS kanalu na deset, a virtualnih kanala po TLS kanalu na tri, procjene rastu za dva reda veličine do 108 za najgori slučaj. Ako TLS modul zauzima 200 okteta - konačno TLS ostvarenje kao i TCP ostvarenje iznose upravo toliko - ukupno zauzeće radne memorije kreće se od 2 MB preko 200 MB do 20 GB samo za TLS module. Ovakav način razmišljanja navodi na štedljiviji pristup pri dizajnu modula. Eliminacijom vektorskih ulaza umjesto n1 modula postoji samo jedan TLS modul po čvoru, što znači da se njegova veličina smanjila za n veličina objekta cSimpleModule (128 okteta) te 4n veličina cGate objekta (24 okteta). Ušteda radne memorije iznosi 224n okteta po čvoru, što za deset veza po čvoru i četvrt milijuna posrednika iznosi 86 MB te za dvije tisuće usmjernika uštedu od 448n KB, odnosno uz deset TLS kanala po usmjerniku ~2.5 MB. Minimalna ukupna ušteda iznosi ~90 MB radne memorije – jer je ovo razmatranje provedeno samo za dva navedena razreda. Sve veličine objekata navedene su za 32-bitnu arhitekturu. Ušteda memorijskog prostora i procesorskog vremena je neupitna, međutim pitanje je koliko je značajna i je li uopće značajna, odnosno je li zanemariva. Drugim riječima, pri kojoj veličini problema ušteda dolazi do izražaja. Za točnu ocjenu trebalo bi napisati oba složena modula (uz dodatak mjerenja vremena izvršavanja koda pri izvođenju) te pokretati simulacije raznih veličina i potom usporediti dobivene rezultate. 49 5. Praktični rad 5.2. Ostvarenje protokola Tor Na slici 5.5 prikazana je definicija Tor posrednika, dok je definicija Tor usmjernika identična samo što ne postoji User modul. Dijagrami razreda prikazani su u nekorektnoj UML 2.2 notaciji - bez međusobnih relacija naslijeđivanja radi ograničenog prostora. Slika 5.5: Grafički prikaz datoteke OPHost.ned. Ponašanje modula tcpShell ostvareno je razredom TCPSrvCliApp, a modula TLS razredom TLSLayer. Ako je riječ o usmjerniku (ORHost.ned) ponašanje modula Tor ostvareno je razredom OR, a ako je riječ o posredniku (OPHost.ned) Tor modul ostvaren je razredom OP. Ponašanje modula User definirano je razredom UserApp. 50 5. Praktični rad 5.2.1. TCP ljuska Radi lakšeg razvijanja i preglednosti koda posrednik ne barata izravno "utičnicama" odnosno vezama, već je ta funkcionalnost izdvojena u nadogradnju TCP modula – TCP ljusku. Osnovna TCP aplikacija predstavljena je razredom TCPSrvCliApp koji se ponaša kao što mu ime kaže: ima jednu poslužiteljsku utičnicu na kojoj može posluživati proizvoljan broj veza te može upravljati proizvoljnim brojem klijentskih veza. Po spajanju klijenta na poslužiteljsku utičnicu, ili po primljenoj naredbi za otvaranje klijentske veze, ovaj razred stvara novu utičnicu, bilježi je u podrazred TCPSocketMap razreda map te stvara novu "dretvu" koja poslužuje tu vezu. Slika 5.6: Dijagram razreda TCPSrvCliApp koji javno naslijeđuje razred cSimpleModule. Razred TCPThread naslijeđuje razred baseThread kako bi putem članske varijable hostmod mogao gornjem sloju proslijediti primljene podatke ili dojaviti nasilan prekid veze. Razred također ostvaruje TCPSocket::CallbackInterface sučelje čije odgovarajuće javne članske funkcije poziva TCP modul po primitku odgovarajućeg događaja. Slika 5.7: Dijagram razreda TCPThread koji naslijeđuje razred baseThread. 51 5. Praktični rad Evidencija aktivnih kanala efektivno je određena objektom TCPSocketMap koji je mapa TCPSocket objekata indeksiranih po identifikatoru utičnice connID tipa int koji je ujedno i privatna članska varijabla razreda TCPSocket. Uvedena je redundantna evidencija iz tri razloga, a svako daljnje spominjanje identifikatora veze ili connID varijable odnositi će se na redundantnu evidenciju (TCPSrvCliApp::appCIDsForSockCID, TCPSrvCliApp::connIDs) osim ako nije drugačije napomenuto. Obzirom da su identifikatori utičnica (najvjerojatnije) slučajno generirani (veliki) brojevi, udobnije je i lakše razvijati aplikaciju na način da se identifikatori veza generiraju kao mali brojevi uvijek istim algoritmom, kako bi se što brže i lakše utvrdila ispravnost izvođenja simulacije. Osim toga, postoji načelna razlika između klijentskih i poslužiteljskih veza: pri otvaranju poslužiteljske veze informacija se propagira od TCP modula prema višim slojevima, dok se naredba za otvaranje klijentske veze šalje iz viših slojeva prema TCP modulu. U svakom slučaju Tor modul mora voditi vlastitu evidenciju aktivnih TCP veza, na način da postoji bijektivno preslikavanje između identifikatora i opisnika veze. Pri otvaranju poslužiteljske veze, prirodno je generirati identifikator veze u prvom sloju iznad TCP modula, kao što je pri otvaranju klijentske veze prirodno generirati identifikator veze u najvišem, odnosno sloju koji je i zatražio otvaranje veze. Obzirom da slojevi međusobno komuniciraju porukama potreban je algoritam koji će osigurati da ne dođe do kolizije identifikatora, ili voditi odvojene evidencije za klijentske i poslužiteljske konekcije. Potonje će se pokušati izbjeći jer narušava čitkost koda. Moguće je poslati poruku u kojoj se zahtijeva otvaranje klijentske veze te opisnik veze privremeno pohraniti u zasebnu strukturu da čeka na odgovor donjeg sloja koji će porukom javiti da je povezivanje uspjelo zajedno s identifikatorom veze. Tek je tada moguće pohraniti opisnik pod pravim identifikatorom. Ova varijanta sigurno nije najjednostavnije rješenje, pogotovo kada se uzme u obzir situacija u kojoj više klijentskih veza čeka spajanje pa je po primitku poruke o spajanju potrebno odrediti kojem je opisniku namijenjena. Određivanje se mora vršiti pomoću dodatnih identifikatora, primjerice, privremenih identifikatora ili utičnice, u smislu IP adrese i pristupnih vrata, za koju je stigla poruka. Ni ova varijanta ne čini kod čitkijim. Međutim, generira li se identifikator veze u sloju u kojem je to prirodno, izbjegava se sav dodatni posao i ne narušava se jednostavnost koda. Potreban je dakle algoritam generiranja identifikatora koji su uvijek jedinstveni bez intermodularne komunikacije. To je moguće učiniti tako da gornji sloj posjeduje inkrementalni statički brojač klijentskih veza te svakoj novoj vezi dodijeli netom odbačenu vrijednost brojača. Donji sloj održava dekrementalni statički brojač (TCPSrvCliApp::srvConnCnt) te se jednako ponaša. Tako klijentske veze imaju identifikatore koji rastu počevši od nule, dok poslužiteljske veze imaju identifikatore koji opadaju počevši od minus jedan. Obzirom da je u svakom sloju iznad TCP-a identifikator veze uvijek isti, svaki sloj može, ukoliko je potrebno, jednostavnim testiranjem vrijednosti identifikatora ustanoviti prirodu veze. TCPSrvCliApp::openSockets je mapa u kojoj su indeksirani statusi utičnica (otvorena / zatvorena) po identifikatoru utičnice. Razlog ovoj redundanciji jest greška u TCP modulu koji netom nakon što pošalje poruku da je utičnica zatvorena šalje poruku da je partner prekinuo vezu. Dakako da je takvo ponašanje nekorektno i prema protokolu i prema dokumentaciji, a rezultiralo je relativno benigno – nezatvaranjem veze. Stoga se prije pozivanja članske funkcije processMessage(cMessage *msg) odgovarajućeg TCPSocket objekta provjerava status 52 5. Praktični rad utičnice prema TCPSrvCliApp::openSockets te ukoliko je detektirana spomenuta situacija, problematična se poruka ignorira. Pri razvijanju aplikacije bilo je potrebno testirati funkcionalnost modula TCPSrvCliApp te je stoga napisan modul TCPConnectionManager. Taj modul vodi evidenciju veza pomoću Slika 5.8: Dijagram razreda TCPShellCommander koji javno naslijeđuje razred Commander i TCPConnectionManager koji javno naslijeđuje razred cSimpleModule. članske varijable TCPConnectionManager::connIDs te se u njemu nalazi i inkrementalni statički brojač TCPConnectionManager::cliConnCtr. TCPConnectionManager prima naredbe od TCPShellCommander razreda koji naslijeđuje razred Commander. Slika 5.9: Dijagram razreda Commander koji je nadklasa klasi TCPShellCommander. TCPConnectionManager modul prima sljedeće naredbe kao vrijednost string parametra cmdSh, a moraju biti zadane točno kako je napisano inače neće biti prepoznate: • povezivanje na zadano odredište "<IP>:<PORT>;" • slanje podatka <payload> po vezi <connID> "SEND <connID> <payload>;" • zatvaranje veze <connID> "CLOSE <connID>;" 53 5. Praktični rad 5.2.2. TLS sloj Modul TLSLayer u osnovi je isti kao i TCPConnectionManager modul, s tom razlikom što ne prima naredbe iz parametra pa tako nema ni TCPShellCommander razreda, već prima naredbe kao poruke (dijete razreda cMessage) s ulaznih vratiju cmdIn, odnosno od Tor modula. Slika 5.10: Dijagram razreda TLSLayer koji javno naslijeđuje razred cSimpleModule. TLS protokol ostvaren je na način da se nakon otvaranja TCP kanala razmjenjuju dvije poruke koje predstavljaju TLS certifikate, a u kojima se nalaze ključevi identiteta usmjernika. Osim toga nema potrebe za vođenjem evidencije kanala obzirom da to čini Tor modul. Slika 5.11: Dijagram razreda TCPLinkDesc. TCPLinkDesc je razred koji ostvaruje opisnik TCP odnosno TLS kanala. Koriste ga TCPConnectionManager te OR i OP moduli. 54 5. Praktični rad 5.2.3. Tor sloj Modul TorNode naslijeđuje cSimpleModule modul, sadržava sve identifikacijske podatke o čvoru, kao i paramtere poput vrijednosti prozora za kontrolu zakrčenja, vrijeme života kanala te vrijeme isteka za slanje PADDING ćelije. Također, tu se nalazi i konsenzus mreže kao statički vektor ORDescriptor razreda koji ostvaruju opisnike usmjernika. Ovaj razred brine se za kontrolu zakrčenja te se sve poruke, koje se šalju nižim slojevima iz modula OP ili OR, šalju funkcijom TorNode::sendCell(...). Sučelje IConsensus služi za dohvaćanje IP adrese, pristupnih vratiju za podatkovni promet te nadimka Tor čvora. Ostvaruju ga oba Tor modula. Slika 5.12: Dijagram modula TorNode javno naslijeđuje cSimpleModule, a nadrazred je modulima OP i OR. Na slici 5.13 nalazi se dijagram razreda modula OP::proccesVirtualCircuitClientSide(...) te OP::proccesVirtualStreamClientSide(...). 55 OP. Najvažnije funkcije su 5. Praktični rad Slika 5.13: Dijagram modula OP koji naslijeđuje cSimpleModule. Na slici 5.14 nalazi se dijagram razreda modula OR. Najvažnije funkcije su OR::proccesVirtualCircuitServerSide(..), OR::proccesVirtualCircuitClientSide(..) te OR::proccesVirtualStreamServerSide(...). OR preuzima ulogu klijenta u slučaju da mora proširiti virtualni kanal odnosno obraditi NET_INFO i CREATED ćeliju. Sučelje IORContext definira sve operacije koje su potrebne strojevima stanja za obradu virtualnih tokova i kanala. Slika 5.14: Dijagram modula OR koji naslijeđuje cSimpleModule. 56 5. Praktični rad Razred CellFactory po uzorku tvornice služi za generiranje svih ćelija potrebnih bilo kojem Tor čvoru. Slika 5.15: Dijagram razreda CellFactory. Na slici 5.16 prikazan je razred OPVirtualCircuitDescriptor koji ostvarujeopisnik virtualnog kanala za Tor posrednik - sastoji se od: puta definiranog slijedom ključeva identiteta usmjernika te identifikatora TLS i virtualnog kanala. Slika 5.16: Dijagram razreda OPVirtualCircuitDescriptor. Na slici 5.17 prikazan je razred ORVirtualCircuitDescriptor koji ostvaruje opisnik virtualnog kanala za Tor usmjernik, a sadrži identifikatore ulaznih i izlaznih TLS i virtualnih kanala. Slika 5.17: Dijagram razreda ORVirtualCircuitDescriptor. 57 5. Praktični rad Na slici 5.18 nalazi se razred OPVirtualStreamDescriptor koji ostvaruje opisnik virtualnog toka za posrednika . Ovaj opisnik sadrži identifikatore TLS i virtualnog kanala, virtualnog toka te identifikator korisničkog zahtjeva. Slika 5.18: Dijagram razreda OPVirtualStreamDescriptor. Na slici 5.19 nalazi se razred ORVirtualStreamDescriptor koji ostvaruje opisnik virtualnog toka . Ovaj opisnik sadrži identifikatore ulaznih i izlaznih TLS i virtualnih kanala te identifikator virtualnog toka. Slika 5.19: Dijagram razreda ORVirtualStreamDescriptor. Na slici 5.20 nalazi se razred ORDescriptor koji ostvaruje opisnik usmjernika. Ovaj opisnik sadrži sve potrebne podatke o usmjerniku. Slika 5.20: Dijagram razreda ORDescriptor. Na slici 5.21 nalazi se razred UserRequestDescriptor koji ostvaruje opisnik korisničkog zahtjeva. Taj opisnik sadrži identifikatore: TLS i virtualnog kanala, virtualnog toka, adresu odredišta odabrani put te identifikator samog zahtjeva. Idenitifikator zahtjeva ima analognu funkciju za OP modul kao idenitifikator veze za TCPSrvCliApp. 58 5. Praktični rad Slika 5.21: Dijagram razreda UserRequestDescriptor. 5.2.4. Korisnička aplikacija Modul UserApp prima naredbe od razreda TorCommander na sličan način kao što TCPSrvCliApp prima naredbe od razreda TCPShellCommander. Naredbe su: • otvaranje anonimiziranog TCP kanala: "<IP>:<port>;" • slanje podataka: "BULKSEND <reqID> <size> <u>;" <u> ∈{B , KB , MB} • zatvaranje virtualnog toka "KILL <reqID>;" Slika 5.22: Dijagram modula UserApp koji nasljeđuje razred cSimpleModule. Po slanju naredbe za otvaranje anonimiziranog TCP kanala, naredbe za slanje podataka blokiraju se do otvaranja anonimizirane veze. Interno se pamti status anonimizirane veze (UserApp::reqStatus) te količina podataka koje je potrebno poslati 59 5. Praktični rad (UserApp::usrTrafficData). Po otvaranju anonimne veze guraju se korisnički podaci OP modulu dok se međuspremik ne popuni. 5.3. Simulacija Simulira se otvaranje virtualnog kanala i otvaranje anonimizirane TCP veze prema odredištu, prijenos podataka te zatvaranje anonimizirane TCP veze i virtualnog kanala na lokalnoj mreži od pet Tor usmjernika, jednog Tor posrednika i jednog vanjskog odredišta. Svi čvorovi povezani su PPP vezom izuzev Tor posrednika i odredišta. Propusnost PPP veze iznosi jedan Mbps s kašnjenjem od desetine mikrosekunde, što je uz topologiju sustava definirano datotekom TorSimple.ned koja je prikazana u grafičkom obliku na slici 5.24. Slika 5.23: Simulirana mreža sa pet Tor usmjernika (grčka božanstva), jednim Tor posrednikom (client) i jednim vanjskim odredištem (destination). U inicijalizacijskoj datoteci omnetpp.ini datoteci definiraju se parametri korištenih modula. Postavlja se mrežna adresa i maska za čvor FlatNetworkConfigurator za automatsko usmjeravanje. Postavlja se veličina međuspremnika za pakete na PPP mrežnim sučeljima. Postavlja se način rada tcp modula da prosljeđuje stvaran promet, a ne samo količinu prometa. Odredištu se postavljaju pristupna vrata za promet. Za svaki Tor čvor (TorNode) definiraju se pristupna vrata za promet, nadimak i ključ identiteta usmjernika. Korisničkom posredniku definira se niz znakova s naredbama ("192.168.1.2:1000;BULKSEND 0 3 KB;KILL 0;") i duljina puta (3). Po pokretanju simulacije svi čvorovi osim posrednika otvaraju poslužiteljske utičnice. ** Event #7 T=0 TorSimple.Posejdon.tcp (TCP, id=79), on `PassiveOPEN' (cMessage, id=26) TCP connection created for (cMessage)PassiveOPEN Connection <unspec>:-1 to <unspec>:-1 on app[0],connId=2 in INIT (ptr=0x0xa9e9288) App command: OPEN_PASSIVE Starting to listen on: 192.168.1.3:443 Transition: INIT --> LISTEN (event was: OPEN_PASSIVE) Slika 5.24: Otvaranje poslužiteljskih utičnica. Tor posrednik odabire put, prelazi u stanje CONNECTING. ** Event #22 T=10 TorSimple.client.User (UserApp, id=10), on selfmsg `{1st command}' (cMessage, id=0) client.User URL = 192.168.1.2:1000 request id = -1 data size B = -1 payload string = payload code = 0 client.User connecting @ 192.168.1.2:1000 client.User: there is no usr traffic pending client.User: there are 0 user data streams pending and 1 requests: client.User: request reqID = 0 status = 1 ** Event #23 T=10 TorSimple.client.Tor (OP, id=11), on `CONNECT' (TorShellMessage, id=138) client.Tor code = 0 reqId =0 request id = client.Tor.control: LISTEN client.Tor: Posejdon 22222 Slika 5.25: Odabir puta na strani Tor posrednika. 60 5. Praktični rad client.Tor: Zeus 3333 client.Tor: Had 4444 client.Tor: Atena 5555 client.Tor: Hera 6666 client.Tor: user connecting @ 192.168.1.2:1000 client.Tor selecting path: Hera 192.168.1.7:443 Had 192.168.1.5:443 Posejdon 192.168.1.3:443 Prvi korak je otvaranje TLS veze prema čvoru stražaru Heri, koja prelazi u stanje CONNECTED. ** Event #81 T=10.0015763 TorSimple.Hera.Tor (OR, id=208), on `{TLS connected}' (TCPShellMsg, id=200) Hera.Tor.control: opening TLS link -1 as server from client(1111) HeraTor.VCFSM: TLS_CONNECTED INIT --> CONNECTED HeraTor.VCFSM: CONNECTING - TLS OPENING -1 waiting NET_INFO there are 1 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPENING Hera.Tor: there are no virtual circuits Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links Slika 5.26: Otvaranje TLS veze na strani Tor usmjernika. Nakon što je TLS veza uspostavljena, posrednikov automat za virtualni kanal prelazi u stanje CONNECTED i šalje NET_INFO ćeliju, tj. otvara Tor vezu. Korisnički zahtjev 0 trenutno čeka na otvaranje virtualnog kanala koji će ga opsluživati (PENDING_VC). ** Event #105 T=10.0023364 TorSimple.client.Tor (OP, id=11), on `{TLS connected}' (TCPShellMsg, id=214) client.Tor.control: opening TLS link 0 towards Hera(6666) clientTor.VCFSM: TLS_CONNECTED CONNECTING --> CONNECTED clientTorVCFSM: CONNECTING - OPENING TLS 0 sending NET_INFO client.Tor.control: attaching request 0 to TLS 0 towards Hera there are 1 TLS links: TLS connID = 0 peer name = Hera peerID = 6666 state = OPENING client.Tor: there are no virtual circuits client.Tor: there are no virtual streams client.Tor: there are 1 user requests: client.Tor: reqID = 0 adress = 192.168.1.2@1000 state = PENDING_VC connID = 0 circID = 0 streamID = -1 path = Hera Had Posejdon current = 1 Slika 5.27: Otvaranje Tor veze na strani posrednika. Hera odgovara s NET_INFO ćelijom, tj. otvara Tor vezu prelazeći u stanje OPENING. ** Event #131 T=10.0071925 TorSimple.Hera.Tor (OR, id=208), on `NET_INFO' (TCPShellMsg, id=230) Hera.Tor: Tor cell recieved, cmd = 108 connID = -1 circID = 0 from client (26255836) on TLS -1 Hera.Tor.control: processing TLS link -1 as server from client(1111) HeraTor.VCFSM: CONNECTED --> OPENING recieved NET_INFO HeraTor.VCFSM: CONNECTED - TLS OPENED -1 sending NET_INFO there are 1 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN Hera.Tor: there are no virtual circuits Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links Slika 5.28: Otvaranje Tor veze na strani usmjernika. Sada posrednik započinje Diffie-Hellmanovo rukovanje slanjem CREATE ćelije, prelazeći u stanje OPENING. Stvoren je opisnik za virtualni kanal, koji je na strani posrednika u stanju PENDING. Opisniku korisničkog zahtjeva 0 dodijeljen je virtualni kanal 4194450 u izgradnji pa korisnik čeka na otvaranje virtualnog toka (PENDING_VS). ** Event #157 T=10.0120486 TorSimple.client.Tor (OP, id=11), on `NET_INFO' (TCPShellMsg, id=249) client.Tor.control: Tor cell recieved, cmd = 108 circID = 0 from on TLS 0 client.Tor.control: processing TLS link 0 with Hera(6666) clientTor.VCFSM: NET_INFO recieved, CONNECTED NET_INFO clientTorVCFSM: CONNECTED - TLS OPENED 0 sending CREATE clientTorVCFSM: new circID = 4194450 on TLS 0 in STATE = PENDING client.Tor.control: attaching request 0 to VC 4194450 towards Hera there are 1 TLS links: TLS connID = 0 peer name = Hera peerID = 6666 state = OPEN client.Tor: there are 1 virtual circuits: client.Tor: VC circID = 4194450 connID = 0 state = OPENING client.Tor: there are no virtual streams client.Tor: there are 1 user requests: client.Tor: reqID = 0 adress = 192.168.1.2@1000 state = PENDING_VS connID = 0 circID = 4194450 streamID = -1 Slika 5.29: Diffie-Hellmanovo rukovanje na strani posrednika. 61 5. Praktični rad path = Hera Had Posejdon current = 1 Hera prelazi u stanje OPENED i odgovara CREATED ćelijom čime je otvorena Tor veza odnosno virtualni kanal 4194450 između nje i posrednika. ** Event #183 T=10.0169047 TorSimple.Hera.Tor (OR, id=208), on `CREATE' (TCPShellMsg, id=269) Hera.Tor: Tor cell recieved, cmd = 101 connID = -1 circID = 4194450 from client (26255836) on TLS -1 Hera.Tor.control: processing virtual circuit 4194450 on TLS -1 as server from client(1111) HeraTor.VCFSM: recieved CREATE on TLS -1 HeraTor.VCFSM: OPENED opened VC circID = 4194450 on TLS -1 there are 1 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN Hera.Tor: there are 1 virtual circuits: Hera.Tor: VC INcircID = 4194450 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links Slika 5.30: Diffie-Hellmanovo rukovanje na strani usmjernika. Posrednik prelazi u stanje PENDING, pristupa širenju virtualnog kanala prema Hadu i osvježava opisnike. ** Event #209 T=10.0217608 TorSimple.client.Tor (OP, id=11), on `CREATED' (TCPShellMsg, id=290) client.Tor.control: Tor cell recieved, cmd = 102 circID = 4194450 from on TLS 0 client.Tor.control: processing virtual circuit 4194450 with Hera(6666) clientTor.VCFSM: CREATED recieved, OPENED VC 4194450 client.Tor.control: path not built client.Tor.control: next node is 4444 client.Tor.control: next node position in path is 1 for connID = 0 circID = 4194450 clientTor.VCFSM: PENDING - CREATED recieved, VC 4194450 opened ENTRY GUARD Hera sending RELAY_EXTEND towards Had there are 1 TLS links: TLS connID = 0 peer name = Hera peerID = 6666 state = OPEN client.Tor: there are 1 virtual circuits: client.Tor: VC circID = 4194450 connID = 0 state = PENDING client.Tor: there are no virtual streams client.Tor: there are 1 user requests: client.Tor: reqID = 0 adress = 192.168.1.2@1000 state = PENDING_VS connID = 0 circID = 4194450 streamID = -1 path = Hera Had Posejdon current = 2 Slika 5.31: Širenje virtualnog kanala na strani posrednika. Hera pristupa otvaranju Tor veze prema Hadu i prelazi u stanje EXTENDING. ** Event #235 T=10.0266169 TorSimple.Hera.Tor (OR, id=208), on `R_EXTEND' (TCPShellMsg, id=316) Hera.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 4194450 streamID = 0 from client (26255836)on TLS -1 HeraTor.VCFSM: EXTENDING to Had Hera.Tor.control: processing virtual circuit 4194450 on TLS -1 as server from client(1111) there are 1 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN Hera.Tor: there are 1 virtual circuits: Hera.Tor: VC INcircID = 4194450 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = EXTENDING Hera.Tor: there are 1 pending virtual circuits: Hera.Tor: peerID = 4444 VC INcircID = 4194450 INconnID = -1 OUTcircID = 17 OUTconnID = 1852401184 state = EXTENDING Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links Slika 5.32: Širenje virtualnog kanala prema prijenosnom čvoru Hadu na strani čvora stražara Here.. Nakon opisane razmjene ćelija, virtualni kanal je proširen do Hada, a s Herom dijeli identifikator virtualnog kanala 17. Oba usmjernika su u stanju OPENED. ** Event #400 T=10.0435056 TorSimple.Had.Tor (OR, id=140), on `CREATE' (TCPShellMsg, id=450) Had.Tor: Tor cell recieved, cmd = 101 connID = -1 circID = 17 from client (26255836) on TLS -1 Had.Tor.control: processing virtual circuit 17 on TLS -1 as server from Hera(6666) HadTor.VCFSM: recieved CREATE on TLS -1 HadTor.VCFSM: OPENED opened VC circID = 17 on TLS -1 there are 1 TLS links: TLS connID = -1 peer name = Hera peerID = 6666 state = OPEN Had.Tor: there are 1 virtual circuits: Had.Tor: VC INcircID = 17 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Had.Tor: there are no pending virtual circuits Had.Tor: there are no virtual streams Had.Tor: there are no pending virtual streams Had.Tor: there are no exit TCP links ** Event #400 T=10.0435056 TorSimple.Had.Tor (OR, id=140), on `CREATE' (TCPShellMsg, id=450) Had.Tor: Tor cell recieved, cmd = 101 connID = -1 circID = 17 from client (26255836) on TLS -1 Had.Tor.control: processing virtual circuit 17 on TLS -1 as server from Hera(6666) HadTor.VCFSM: recieved CREATE on TLS -1 Slika 5.33: Virtualni kanal je proširen do prijenosnog čvora Hada. 62 5. Praktični rad HadTor.VCFSM: OPENED opened VC circID = 17 on TLS -1 there are 1 TLS links: TLS connID = -1 peer name = Hera peerID = 6666 state = OPEN Had.Tor: there are 1 virtual circuits: Had.Tor: VC INcircID = 17 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Had.Tor: there are no pending virtual circuits Had.Tor: there are no virtual streams Had.Tor: there are no pending virtual streams Had.Tor: there are no exit TCP links ** Event #426 T=10.0483617 TorSimple.Hera.Tor (OR, id=208), on `CREATED' (TCPShellMsg, id=470) Hera.Tor: Tor cell recieved, cmd = 102 connID = 0 circID = 17 from client (26255836) on TLS 0 Hera.Tor.control: processing virtual circuit 17 on TLS 0 as client on behalf Had(4444) HeraTor.VCFSM: unforeseen TLS link state 2 HeraTor.VSFSM: CREATED recieved, OPENED VC CREATED HeraTor.VCFSM: EXTENDING - CREATED recieved, VC 17 opened, sending RELAY_EXTENDED backward to Had there are 2 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN TLS connID = 0 peer name = Had peerID = 4444 state = OPEN Hera.Tor: there are 2 virtual circuits: Hera.Tor: VC INcircID = 4194450 INconnID = -1 OUTcircID = 17 OUTconnID = 0 state = OPENED Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links Posrednik ostaje u stanju PENDING i širi virtualni kanal prema izlaznom čvoru Posjedonu tako što prosljeđuje RELAY_EXTEND ćeliju niz kanal. ** Event #452 T=10.0528418 TorSimple.client.Tor (OP, id=11), on `R_EXTENDED' (TCPShellMsg, id=493) client.Tor.control: Tor cell recieved, cmd = 103 circID = 4194450 from on TLS 0 client.Tor.control: processing virtual circuit 4194450 with Hera(6666) client.Tor.control: path not built client.Tor.control: path built to EG client.Tor.control: next node is 22222 client.Tor.control: next node position in path is 2 for connID = 0 circID = 4194450 clientTor.VCFSM: PENDING - RELAY_EXTENDED recieved, VC 4194450 opened to MIDDLE-MAN Had sending RELAY_EXTEND towards Posejdon there are 1 TLS links: TLS connID = 0 peer name = Hera peerID = 6666 state = OPEN client.Tor: there are 1 virtual circuits: client.Tor: VC circID = 4194450 connID = 0 state = PENDING client.Tor: there are no virtual streams client.Tor: there are 1 user requests: client.Tor: reqID = 0 adress = 192.168.1.2@1000 state = PENDING_VS connID = 0 circID = 4194450 streamID = -1 path = Hera Had Posejdon current = 3 Slika 5.34: Širenje virtualnog kanala prema izlaznom čvoru Posejdonu na strani posrednika. Nakon što je virtualni kanal proširen do izlaznog čvora, posrednik prelazi u stanje OPENED i može pristupiti otvaranju virtualnog toka slanjem RELAY_BEGIN ćelije niz kanal. ** Event #747 T=10.092883 TorSimple.client.Tor (OP, id=11), on `R_EXTENDED' (TCPShellMsg, id=735) client.Tor.control: Tor cell recieved, cmd = 103 circID = 4194450 from on TLS 0 client.Tor.control: processing virtual circuit 4194450 with Hera(6666) client.Tor.control: path built clientTor.VCFSM: opened VC 4194450 opened to EXIT NODE Posejdon opening pending streams client.Tor.control: destination 192.168.1.2:1000 for connID = 0 circID = 4194450 clientTor.VCFSM: opening VS 1591784480 on VC 4194450 towards 192.168.1.2:1000 sending RELAY_BEGIN there are 1 TLS links: TLS connID = 0 peer name = Hera peerID = 6666 state = OPEN client.Tor: there are 1 virtual circuits: client.Tor: VC circID = 4194450 connID = 0 state = OPENED client.Tor: there are 1 virtual streams: client.Tor: VS streamID = 1591784480 circID = 4194450 state = PENDING client.Tor: there are 1 user requests: client.Tor: reqID = 0 adress = 192.168.1.2@1000 state = PENDING_VS connID = 0 circID = 4194450 streamID = -1 path = Hera Had Posejdon current = 3 Slika 5.35: Otvaranje virtualnog toka na strani posrednika. Nakon što je izlazni čvor Posejdon primio RELAY_BEGIN ćeliju otvara TCP vezu prema vanjskom odredištu. Po uspostavljanju veze obavještava posrednika slanjem RELAY_CONNECTED ćelije niz kanal. ** Event #825 T=10.1066993 TorSimple.Posejdon.Tor (OR, id=72), on `R_BEGIN' (TCPShellMsg, id=797) Posejdon.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 17 streamID = 1591784480 on TLS -1 PosejdonTor.VCFSM: recieved R_BEGIN connecting to 192.168.1.2:1000 PosejdonTor.VCFSM: OPENED opening TCP exit connection connID = 0 for VS streamID = 1591784480 on IN TLS = -1 circID = 17 Posejdon.Tor.control: processing virtual circuit 17 on TLS -1 as server from Had(4444) there are 1 TLS links: TLS connID = -1 peer name = Had peerID = 4444 state = OPEN Posejdon.Tor: there are 1 virtual circuits: Posejdon.Tor: VC INcircID = 17 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Slika 5.36: Otvaranje virtualnog toka na strani izlaznog čvora. 63 5. Praktični rad Posejdon.Tor: there are no pending virtual circuits Posejdon.Tor: there are no virtual streams Posejdon.Tor: there are 1 pending virtual streams: Posejdon.Tor: VS streamID = 1591784480 INcircID = 123 OUTconnID = 1701344105 state = PENDING Posejdon.Tor: there are 1 exit TCP links: Posejdon.Tor: connID = 0 state = OPENING ** Event #862 T=10.1075155 TorSimple.Posejdon.Tor (OR, id=72), on `established' (TCPShellMsg, id=839) Posejdon.Tor: tor nodes = 5 Posejdon.Tor: TCP shell msg recieved 1 on 0 Posejdon.Tor.control:: LISTEN PosejdonTor.VSFSM: sending RELAY_CONNECTED there are 1 TLS links: TLS connID = -1 peer name = Had peerID = 4444 state = OPEN Posejdon.Tor: there are 1 virtual circuits: Posejdon.Tor: VC INcircID = 17 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Posejdon.Tor: there are no pending virtual circuits Posejdon.Tor: there are 1 virtual streams: Posejdon.Tor: VS streamID = 1591784480 INcircID = 123 OUTconnID = 0 state = STREAMING Posejdon.Tor: there are no pending virtual streams Posejdon.Tor: there are 1 exit TCP links: Posejdon.Tor: connID = 0 state = OPEN ** Event #879 T=10.1078916 TorSimple.destination.connMgr (TCPConnectionManager, id=42), on `{peer connected}' (TCPShellMsg, id=857) destination.connMgr:-1 peer connected destination.connMgr: active connections are: 192.168.1.2:1000 <-- 192.168.1.3:1025 -1 => OPEN Kada posrednik primi RELAY_CONNECTED ćeliju počinje posluživati korisnički promet. ** Event #941 T=10.1209558 TorSimple.client.Tor (OP, id=11), on `R_CONNECTED' (TCPShellMsg, id=899) client.Tor.control: Tor cell recieved, cmd = 103 circID = 4194450 from on TLS 0 clientTor.VSFSM: recieved RELAY_CONNECTED for stream streamID = 1591784480 on circuit = 4194450 on TLS 0 client.Tor.control: attaching request 0 to VC 4194450 towards Hera there are 1 TLS links: TLS connID = 0 peer name = Hera peerID = 6666 state = OPEN client.Tor: there are 1 virtual circuits: client.Tor: VC circID = 4194450 connID = 0 state = OPENED client.Tor: there are 1 virtual streams: client.Tor: VS streamID = 1591784480 circID = 4194450 state = STREAMING client.Tor: there are 1 user requests: client.Tor: reqID = 0 adress = 192.168.1.2@1000 state = CONNECTED connID = 0 circID = 4194450 streamID = 1591784480 path = Hera Had Posejdon current = 1 ** Event #946 T=10.1209558 TorSimple.client.Tor (OP, id=11), on `SEND' (TorShellMessage, id=908) client.Tor code = 1 reqId = 0 client.Tor.control: sending RELAY_DATA on VS = 1591784480 VC = 4194450 TLS = 0 onions = 3 Slika 5.37: Virtualni tok je otvoren pa se poslužuje korisnički zahtjev. Prikazano je slanje RELAY_DATA ćelije kroz virtualni kanal. Masnim slovima označeno je simuliranje enkripcije (onions = x). ** Event #1010 T=10.1258119 TorSimple.Hera.Tor (OR, id=208), on `R_DATA' (TCPShellMsg, id=996) Hera.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 4194450 streamID = 1591784480 from client (26255836) on TLS -1 HeraTor.VCFSM: OPENED sending forward R_DATA circID = 4194450 on TLS -1 onions = 2 Hera.Tor.control: processing virtual circuit 4194450 on TLS -1 as server from client(1111) there are 2 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN TLS connID = 0 peer name = Had peerID = 4444 state = OPEN Hera.Tor: there are 2 virtual circuits: Hera.Tor: VC INcircID = 4194450 INconnID = -1 OUTcircID = 17 OUTconnID = 0 state = OPENED Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links ** Event #1058 T=10.130292 TorSimple.Had.Tor (OR, id=140), on `R_DATA' (TCPShellMsg, id=1035) Had.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 17 streamID = 1591784480 on TLS -1 HadTor.VCFSM: OPENED sending forward R_DATA circID = 17 on TLS -1 onions = 1 Had.Tor.control: processing virtual circuit 17 on TLS -1 as server from Hera(6666) there are 2 TLS links: TLS connID = -1 peer name = Hera peerID = 6666 state = OPEN TLS connID = 0 peer name = Posejdon peerID = 22222 state = OPEN Had.Tor: there are 1 virtual circuits: Had.Tor: VC INcircID = 17 INconnID = -1 OUTcircID = 123 OUTconnID = 0 state = OPENED Had.Tor: there are no pending virtual circuits Had.Tor: there are no virtual streams Had.Tor: there are no pending virtual streams Had.Tor: there are no exit TCP links ** Event #1132 T=10.1347721 TorSimple.Posejdon.Tor (OR, id=72), on `R_DATA' (TCPShellMsg, id=1093) Posejdon.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 17 streamID = 1591784480 on TLS -1 PosejdonTor.VSFSM: received RELAY_DATA forwarding DUMMY with size of 509 closing exit connection 0 Posejdon.Tor.control: processing virtual stream 1591784480 on circuit = 17 on TLS -1 as server from Had(4444) there are 1 TLS links: TLS connID = -1 peer name = Had peerID = 4444 state = OPEN Posejdon.Tor: there are 1 virtual circuits: Posejdon.Tor: VC INcircID = 123 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Posejdon.Tor: there are no pending virtual circuits Posejdon.Tor: there are 1 virtual streams: Slika 5.38: Slanje korisničkog prometa kroz virtualni kanal. 64 5. Praktični rad Posejdon.Tor: Posejdon.Tor: Posejdon.Tor: Posejdon.Tor: VS streamID = 1591784480 INcircID = 123 OUTconnID = 0 state = STREAMING there are no pending virtual streams there are 1 exit TCP links: connID = 0 state = OPEN U nastavku je prikazano prosljeđivanje tereta RELAY_DATA ćelije vanjskom odredištu kroz niže slojeve. ** Event #1525 T=10.1571721 TorSimple.Posejdon.tcpdump (TCPDump, id=88), on `ACK' (IPDatagram, id=1360) [10.157] 192.168.1.7.1025 < 192.168.1.3.443: A ack 2520161 win 7504 # ** Event #1526 T=10.1571721 TorSimple.Posejdon.TLS (TLSLayer, id=73), on `DUMMY' (TCPShellMsg, id=1364) Posejdon.TLS: cmd send DUMMY on 0 Posejdon.TLS: arrived on :cmdIn sent from Tor: DUMMY ** Event #1527 T=10.1571721 TorSimple.Posejdon.ppp[5].queue (DropTailQueue, id=104), on `ACK' (IPDatagram, id=1360) ** Event #1528 T=10.1571721 TorSimple.Posejdon.tcpApp (TCPSrvCliApp, id=74), on `{TCP shell: sending}' (TCPShellMsg, id=1366) Posejdon.tcpApp: sent DUMMY on 0 ** Event #1529 T=10.1571721 TorSimple.Posejdon.ppp[5].ppp (PPP, id=105), on `ACK' (IPDatagram, id=1360) Received (IPDatagram)ACK for transmission Starting transmission of (PPPFrame)ACK ** Event #1530 T=10.1571721 TorSimple.Posejdon.tcp (TCP, id=79), on `DUMMY' (cPacket, id=1368) Connection 192.168.1.3:1025 to 192.168.1.2:1000 on app[0],connId=57 in ESTABLISHED (ptr=0x0xc6ed170) App command: SEND 966 bytes in queue, plus 510 bytes unacknowledged Nagle is enabled and there's unacked data: only full segments will be sent Will send 456 bytes (effectiveWindow 2170, in buffer 456 bytes) receiveQ: receiveQLength=0 maxRcvBuffer=7504 usedRcvBuffer=0 freeRcvBuffer=7504 Sending: .1025 > .1000: [2529225..2529681) (l=456) ack 2526777 win 7504 Starting rtt measurement on seq=2529225 Staying in state: ESTABLISHED (event was: SEND) ** Event #1531 T=10.1571721 TorSimple.Posejdon.networkLayer.ip (IP, id=89), on `DUMMY(l=456,1msg)' (TCPSegment, id=1370) Routing datagram `DUMMY(l=456,1msg)' with dest=192.168.1.2: output interface is ppp1, next-hop address: <unspec> ** Event #1532 T=10.1571721 TorSimple.Posejdon.networkLayer.arp (ARP, id=90), on `DUMMY(l=456,1msg)' (IPDatagram, id=1372) Packet (IPDatagram)DUMMY(l=456,1msg) arrived from higher layer, output interface ppp1 is not broadcast, skipping ARP ** Event #1533 T=10.1571721 TorSimple.Posejdon.tcpdump (TCPDump, id=88), on `DUMMY(l=456,1msg)' (IPDatagram, id=1372) [10.157] 192.168.1.2.1000 < 192.168.1.3.1025: A 2529225:2529681(456) ack 2526777 win 7504 # ** Event #1534 T=10.1571721 TorSimple.Posejdon.ppp[1].queue (DropTailQueue, id=96), on `DUMMY(l=456,1msg)' (IPDatagram, id=1372) ** Event #1535 T=10.1574283 TorSimple.Posejdon.ppp[1].ppp (PPP, id=97), on selfmsg `pppEndTxEvent' (cMessage, id=29) Transmission finished. ** Event #1536 T=10.1574283 TorSimple.Posejdon.ppp[1].ppp (PPP, id=97), on `DUMMY(l=456,1msg)' (IPDatagram, id=1372) Received (IPDatagram)DUMMY(l=456,1msg) for transmission Starting transmission of (PPPFrame)DUMMY(l=456,1msg) ** Event #1537 T=10.1574284 TorSimple.destination.ppp[0].ppp (PPP, id=63), on `DUMMY(l=510,1msg)' (PPPFrame, id=1346) ** Event #1538 T=10.1574284 TorSimple.destination.tcpdump (TCPDump, id=56), on `DUMMY(l=510,1msg)' (IPDatagram, id=1345) [10.157] 192.168.1.2.1000 < 192.168.1.3.1025: A 2528715:2529225(510) ack 2526777 win 7504 # ** Event #1539 T=10.1574284 TorSimple.destination.networkLayer.ip (IP, id=57), on `DUMMY(l=510,1msg)' (IPDatagram, id=1345) Routing datagram `DUMMY(l=510,1msg)' with dest=192.168.1.2: local delivery ** Event #1540 T=10.1574284 TorSimple.destination.tcp (TCP, id=48), on `DUMMY(l=510,1msg)' (TCPSegment, id=1343) Connection 192.168.1.2:1000 to 192.168.1.3:1025 on app[0],connId=58 in ESTABLISHED (ptr=0x0xab79470) Seg arrived: .1025 > .1000: [2528715..2529225) (l=510) ack 2526777 win 7504 TCB: snd_una=2526777 snd_nxt=2526777 snd_max=2526777 snd_wnd=7504 rcv_nxt=2528715 rcv_wnd=7504 snd_cwnd=1072 rto=3 ssthresh=65535 receiveQ: receiveQLength=0 maxRcvBuffer=7504 usedRcvBuffer=0 freeRcvBuffer=7504 rcv_nxt changed to 2529225, sending ACK now (delayed ACKs are disabled) receiveQ: receiveQLength=0 maxRcvBuffer=7504 usedRcvBuffer=0 freeRcvBuffer=7504 Sending: .1000 > .1025: ack 2529225 win 7504 Staying in state: ESTABLISHED (no FSM event) ** Event #1541 T=10.1574284 TorSimple.destination.tcpApp (TCPSrvCliApp, id=43), on `DUMMY' (cPacket, id=1344) destination.tcpApp: msg full name= DUMMYmsg kind =1 socket regarded as open destination.tcpApp: msg full name=DUMMY, socket 58 open, processing msg in socket destination:DUMMY.thread: recieved destination.tcpApp: socket connection id = 58 socket state = 4 ** Event #1542 T=10.1574284 TorSimple.destination.networkLayer.ip (IP, id=57), on `ACK' (TCPSegment, id=1374) Routing datagram `ACK' with dest=192.168.1.3: output interface is ppp0, next-hop address: <unspec> ** Event #1543 T=10.1574284 TorSimple.destination.connMgr (TCPConnectionManager, id=42), on `DUMMY' (TCPShellMsg, id=1376) destination.connMgr:recieved DUMMY(509 B ) on -1 destination.connMgr: active connections are: 192.168.1.2:1000 <-- 192.168.1.3:1025 -1 => OPEN Slika 5.39: Slanje korisničkog prometa prema vanjskom odredištu. Naposljetku, posrednik zatvara virtualni tok i kanal tako što šalje RELAY_END i DESTROY ćelije 65 5. Praktični rad niz kanal. Svi opisnici se uništavaju, a sve veze se zatvaraju. ** Event #1576 T=110 TorSimple.client.Tor (OP, id=11), on `CLOSE' (TorShellMessage, id=146) client.Tor code = 2 reqId = 0 client.Tor.control: closing stream 1876958201 on circuit = 4194450 on TLS 0 ** Event #1602 T=110.0044801 TorSimple.Had.Tor (OR, id=140), on `R_END' (TCPShellMsg, id=1415) Hera.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 4194450 streamID = 1591784480 from client (1111) TLS -1 Hera.Tor.VCFSM: OPENED sending forward R_END circID = 4194450 on TLS -1 onions = 2 Hera.Tor.control: processing virtual circuit 4194450 on TLS -1 as server from client(1111) there are 2 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN TLS connID = 0 peer name = Hera peerID = 4444 state = OPEN Hera.Tor: there are 2 virtual circuits: Hera.Tor: VC INcircID = 4194450 INconnID = -1 OUTcircID = 17 OUTconnID = 0 state = OPENED Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links ** Event #1628 T=110.0089601 TorSimple.Had.Tor (OR, id=140), on `DESTROY' (TCPShellMsg, id=1434) Hera.Tor: Tor cell recieved, cmd = 104 connID = -1 circID = 4194450 from client (1111) on TLS -1 Hera.Tor.control: processing virtual circuit 4194450 on TLS -1 as server from client(1111) there are 2 TLS links: TLS connID = -1 peer name = client peerID = 1111 state = OPEN TLS connID = 0 peer name = Had peerID = 4444 state = OPEN Hera.Tor: there are no virtual circuits Hera.Tor: there are no pending virtual circuits Hera.Tor: there are no virtual streams Hera.Tor: there are no pending virtual streams Hera.Tor: there are no exit TCP links on Slika 5.40: Zatvaranje virtualnog toka i virtualnog kanala sa strane posrednika. ** Event #1701 T=110.0134403 TorSimple.Posejdon.Tor (OR, id=72), on `R_END' (TCPShellMsg, id=1487) Posejdon.Tor: Tor cell recieved, cmd = 103 connID = -1 circID = 123 streamID = 1591784480 from client (25534940) on TLS -1 PosejdonTor.VSFSM: received RELAY_END closing exit connection 0 Posejdon.Tor.control: processing virtual stream 1591784480 on circuit = 123 on TLS -1 as server from Hera(6666) there are 1 TLS links: TLS connID = -1 peer name = Hera peerID = 6666 state = OPEN Posejdon.Tor: there are 1 virtual circuits: Posejdon.Tor: VC INcircID = 123 INconnID = -1 OUTcircID = 1701344105 OUTconnID = 1852401184 state = OPENED Posejdon.Tor: there are no pending virtual circuits Posejdon.Tor: there are no virtual streams Posejdon.Tor: there are no pending virtual streams Posejdon.Tor: there are no exit TCP links ** Event #1730 T=110.0138164 TorSimple.destination.connMgr (TCPConnectionManager, id=42), on `{TCPShellMsg peer closed}' (TCPShellMsg, id=1506) destination.connMgr:-1 broke destination.connMgr: active connections are: 192.168.1.2:1000 <-- 192.168.1.3:1025 -1 => OPEN ** Event #1773 T=110.0179203 TorSimple.Posejdon.Tor (OR, id=72), on `DESTROY' (TCPShellMsg, id=1523) Posejdon.Tor: tor nodes = 5 Posejdon.Tor: Tor cell recieved, cmd = 104 connID = -1 circID = 123 from client (25534940) on TLS -1 Posejdon.Tor.control:: LISTEN Posejdon.Tor.control: processing virtual circuit 1527154887 on TLS -1 as server from Hera(6666) there are 1 TLS links: TLS connID = -1 peer name = Hera peerID = 6666 state = OPEN Posejdon.Tor: there are no virtual circuits Posejdon.Tor: there are no pending virtual circuits Posejdon.Tor: there are no virtual streams Posejdon.Tor: there are no pending virtual streams Posejdon.Tor: there are no exit TCP links Slika 5.41: Zatvaranje virtualnog toka i virtualnog kanala sa strane odredišta. 66 6. Zaključak Anonimna komunikacija vrlo je mlado područje čiji se početak računa od 1981. godine [29]. Prva anonimna mreža s visokim kašnjenjem postavljena sredinom devedesetih, dok je prva anonimna mreža s niskim kašnjenjem postavljena početkom 21. stoljeća, stoga još uvijek postoje mnoga otvorena pitanja. Svrha praktičnog dijela rada jest da bude razvojna platforma za projektiranje reputacijskog sustava kojim bi se otežala zlouporaba Tor mreže. Simulacije moraju biti realistične da bi bile upotrebljive u istraživanjima [44], a takav simulator još nije napisan [43]. Da bi se simulator ponašao dovoljno slično kao stvarni sustav potrebno je najprije ostvariti svu (dokumentiranu) funkcionalnost protokola koja utječe na generiranje tj. oblik prometa. Tada će se izvršiti mjerenje kašnjenja simulacijskih elemenata po slojevima na stvarnom sustavu te s tim vrijednostima pokrenuti simulaciju i izmjeriti odstupanja. Proces se iterira sve dok se ne postigne zadovoljavajuća točnost. Projekt se radi u suradnji sa Tor zajednicom [43], a predviđeno vrijeme trajanja je godina dana. U uvodu su navedeni okvirni pokazatelji koji jasno ukazuju na pokušaje kontrole nad Mrežom, što može rezultirati teškim narušavanjem slobode govora (slobode izražavanja, informacijske slobode). U praksi se pokazalo kako je najgori slučaj zlouporabe anonimne mreže distribucija pedofilskih materijala. Isto tako se, međutim, pokazalo da pružatelji mrežnih usluga dobrim dijelom samovoljno cenzuriraju nepoćudna mrežna odredišta lažno se opravdavajući upravo onemogućavanjem distribucije pedofilskih materijala. Još je Inkvizicija pokazala koliko je taktika "lova na vještice" učinkovita, stoga se ovaj argument uporno (i dijelom opravdano) koristi pri diskreditaciji bilo kojeg anonimnog sustava počevši i od prvog anonimnog pošiljaoca pošte [38]. Kategorički službeni stav Tor projekta je kako se u protokol neće ugrađivati nikakve mjere koje ograničavaju informacijsku slobodu. Drugim riječima, Tor ostvaruje informacijsku slobodu. Bitno je primjetiti kako sloboda, kao što znači slobodu zlouporabe, jednako tako znači i slobodu borbe protiv zlouporabe. Najbolji dokaz za to je skrivena usluga torpedo.org koja unatoč imenu nema nikakve veze sa Tor projektom. Usluga je Web aplikacija koja slijedno pretražuje registar skrivenih usluga (engl. crawler) te ih prikazuje korisnicima koji ih klasificiraju kao (ne)pedofilski materijal. Označene slike pregledavaju administratori stranice te ih prijavljuju administratorima mreže koji potom poduzimaju odgovarajuće korake. Ovo rješava samo dio problema distribucije pedofilskih materijala. Opaske o anonimnosti u virtualnom društvenom kontekstu, anonimnosti u (virtualnom) društvenopolitičkom kontekstu te pravnom modelu prijetnje dane su u dodatku E. 67 7. Popis kratica • politika, birokracija i organizacije EFF – engl. Electronic frontier foundation GPL – engl. general public license GSOSRH - Glavni stožer obrambenih snaga Republike Hrvatske IRS – engl. Internal revenue service ISTAR – engl. intelligence, surveillance, target acquisition, and reconnaissance MIT – engl. Massachusetts institute of technology MPAA – engl. Motion picture association of America NSA – engl. National security agency RIAA – engl. Recording industry association of America SAD - Sjedinjene američke države SEI – Središnjica elektroničkog izviđanja • protokoli, aplikacije i algoritmi AES – engl. advanced encryption standard AOL – engl. America Online BGP – engl. border gateway protocol DC – engl. dining cryptographers (D)DoS – engl. (distributed) denial of service DNS – engl. domain name system FTP – engl. file transfer protocol FQDN – engl. fully qualified domain name GSM – engl. global system for mobile communications, fr. groupe spécial mobile HTTP – engl. hyper text transfer protocol ICQ – engl. I seek you IP – engl. Internet protocol ISDN – engl.integrated services digital network ISP – engl. Internet service provider MAC – engl. media access control MAN – engl. metropolitan area network MBTF – engl. mean time before failure MSNP – engl. microsoft notification protocol a.k.a mobile status notification protocol NTP – engl. network time protocol NYM – engl. pseudonym OSI – engl. open systems interconnection RSA – engl. Rivest, Shamir and Adelman RTT – engl. round-trip time SHA – engl. secure hash algorithm SILC – engl. secure Internet live video conferencing (S)IRC – engl. (secure) Internet relay chat 68 7. Popis kratica SSH – engl. secure shell (S)XMPP – engl. (secure) extensible messaging and presence protocol TCP – engl. transmission control protocol TLS – engl. transport layer security Tor – engl. the onion routing UDP – engl. user datagram protocol UML – engl. unified modelling language URL – engl. uniform resource locator WAN – engl. wide area network (W)LAN – engl. (wireless) local area network • Tor protokol CDW – engl. circuit delivery window CPW – engl. circuit packaging window DA – engl. directory authority DS – engl. directory service EG – engl. entry guard EN – engl. exit node HS – engl. hidden service ID – engl. identity IP – engl. introduction point ON – engl. onion OP – engl. onion proxy OR – engl. onion router PK – engl. public key RN – engl. relay node RP – engl. rendezvous point SDW – engl. stream delivery window sgn – engl. signed SK – engl. secret key SPW – engl. stream packaging window VN – engl. valet node 69 8. Literatura 1. W. R. Stevens: UNIX network programming, Prentice Hall, Englewood Cliffs, NJ 07632, 1990. 2. A. S. Tanenbaum: Računarske mreže, Mikro knjiga, prevod 4. izdanja (Smiljanić, D.), Beograd 2005. 3. I. N. Bronštejn i suradnici: Matematički priručnik, Golden marketing – Tehnička knjiga, Zagreb, 2004. 4. M. Kiš: Informatički rječnik, Naklada Ljevak, Zagreb, 2000. 5. B. A. Klaić: Rječnik stranih riječi, Nakladni zavod Matice hrvatske, Zagreb 1982. 6. Tor projekt, Tor protocol specification, http://gitweb.torproject.org/tor.git? a=blob_plain;hb=HEAD;f=doc/spec/tor-spec.txt, 2/5/2010 7. Tor projekt, Tor directory protocol specification, http://gitweb.torproject.org/tor.git? a=blob_plain;hb=HEAD;f=doc/spec/dir-spec.txt, 2/5/2010 8. Tor projekt, Tor Rendezvous Specification, http://gitweb.torproject.org/tor.git? a=blob_plain;hb=HEAD;f=doc/spec/rend-spec.txt, 2/5/2010 9. Tor projekt, Tor Path Specification, http://gitweb.torproject.org/tor.git? a=blob_plain;hb=HEAD;f=doc/spec/path-spec.txt, 2/5/2010 10. Tor projekt, Special Hostnames in Tor, http://gitweb.torproject.org/tor.git? a=blob_plain;hb=HEAD;f=doc/spec/address-spec.txt, 2/5/2010 11. Tor projekt, Tor control protocol specification, http://gitweb.torproject.org/tor.git? a=blob_plain;hb=HEAD;f=doc/spec/control-spec.txt, 2/5/2010 12. Dingledine, R., Mathewson N., Syverson P., Tor: The second generation onion router, In the Proceedings of the 13th USENIX Security Symposium, August 2004. 13. Øverlier, L., Syverson, P., Locating hidden servers, In the Proceedings of the 2006 IEEE Symposium on Security and Privacy, May 2006. 14. Øverlier, L., Syverson, P., Valet Services: improving hidden servers with a personal touch, in the proceedings of the sixth workshop on privacy enhancing technologies (PET 2006), Cambridge, UK, June 2006, pages 223-244. 15. O'Gorman, G., Blott, S., Large scale simulation of Tor: Modelling a global passive adversary, In the Proceedings of the 13th conference on USENIX Security Symposium - Volume 13, San Diego, CA pages: 21 - 23 16. Goldberg, I., On the security of the Tor authentication protocol, In the Proceedings of the Sixth Workshop on Privacy Enhancing Technologies (PET 2006), Cambridge, UK, June 2006, pages 316-331. 17. Ngan, T., Dingledine, R., Wallach, D.,S., Building Incentives into Tor, In the Proceedings of Financial Cryptography (FC '10), January 2010. 18. Feigenbaum, J., Johnson, A., Syverson, P., Probabilistic analisys of onion routing in a black box model, WPES'07: Proceedings of the 2007 ACM Workshop on Privacy in Electronic Society, ACM Press, October 2007, pages: 1-10. 19. Danezis, G., Diaz, C., Syverson, P., Systems for anonymous communications, In CRC Handbook of Financial Cryptography and Security, CRC Cryptography and Network Security Series, B. Rosenberg, and D. Stinson (Eds.), Chapman & Hall, 61 pages, 2010 20. Pfitzmann, A., Hansen, M., A terminology for talking about privacy by data minimization: anonymity, unlinkability, undetectability, unobservability, pseudonymity, and identity management, http://dud.inf.tu-dresden.de/Anon_Terminology.shtml, 2/4/2010. 21. Edman, M., Sivrikaya, F., Yener, B., A combinatorial approach to measuring anonimity, In Intelligence and Security Informatics, IEEE, May 2007, pages 356-363. 70 8. Literatura 22. Diaz, C., Seys, S., Claessens, J., Preneel, B., Towards measuring anonimity, In the Proceedings of Privacy Enhancing Technologies Workshop (PET 2002), April 2002. 23. Serjantov, A., Danezis, G., Towards an information theoretic metric for anonimity, In the Proceedings of Privacy Enhancing Technologies Workshop (PET 2002), April 2002. 24. Newman, R., E., Moskowitz, I., S., Syveron, P., Serjantov, A., Metrics for traffic analisys prevention, n the Proceedings of Privacy Enhancing Technologies workshop (PET 2003), March 2003, pages 48-65. 25. Borisov, N., Waddle, J., Anonimity in structured peer-to-peer networks, Ph.D. Qualifying Exam Proposal, 2004., gnunet.org/papers/borisov_waddle.pdf, 20/4/2010 26. Danezis, G., Statistical disclosure attacks: traffic confirmation in open environments, In the Proceedings of Security and Privacy in the Age of Uncertainty, (SEC2003), Athens, May 2003, pages 421-426. 27. Kedogan, D., Agrawal, D., Penz, S., Limits of anonymity in open environments, In the Proceedings of Information Hiding Workshop (IH 2002), October 2002. 28. Kelly, D.: A taxonomy for and analysis of anonymous communication networks, dissertation, Air force institute of technology, Wright-Patterson Air Force Base, Ohio, March 2009. 29. Chaum D., L., Untraceable electronic mail, return addresses, and digital pseudonyms, In Communications of the ACM 24(2), February 1981. 30. OMNeT++, korisnički priručnik, http://www.omnetpp.org/doc/omnetpp33/manual/usman.html 31. Status Tor mreže, http://torstatus.blutmagie.de/, http://torstatus.cyberphunk.org/, http://all.de ... 32. Wright, J., Stepney, S., Clark, J.A., Jacob J., Designing Anonymity: A Formal Basis for Identity Hiding, unpublished dissertation, University of York. February, 2005. 33. Chaum D., L., The dining cryptographers problem: Unconditional sender and recipient untraceability, http://www.cs.cornell.edu/People/egs/herbivore/dcnets.html 34. alpha.c2.org, anonimni pošiljaoc pošte tipa 0, http://www.iusmentis.com/technology/remailers/index-alpha.html 35. Analiza prometa, http://en.wikipedia.org/wiki/Traffic_analysis 36. OSRH SEI, http://hr.wikipedia.org/wiki/Središnjica_elektroničkog_izviđanja 37. Cenzura na Internetu, http://en.wikipedia.org/wiki/Internet_censorship 38. anon.penet.fi, anonimni pošiljaoc pošte tipa 0, http://en.wikipedia.org/wiki/Penet_remailer 39. operacija Payback, http://www.bbc.co.uk/news/technology-11371315 40. Hacktivismo, http://en.wikipedia.org/wiki/Hacktivismo 41. Kriptoanarhizam, http://en.wikipedia.org/wiki/Crypto-anarchism 42. Legija anonimnih, http://en.wikipedia.org/wiki/Anonymous_(group) , http://www.youtube.com/watch?v=AmzHXxeNwU4 43. razvoj Tor protokola, http://www.torproject.org/volunteer.html.en 44. prepiska elektronskom poštom, Mathewson N. 45. Tor, http://en.wikipedia.org/wiki/Tor_(anonymity_network) 46. IRS i Scijentološka crkva, http://www.lisamcpherson.org/irs/jeff-irs.htm 47. Reporteri bez granica, http://en.rsf.org/ 71 Dodatak A: Gramatike dokumenata stanja Svaki dokument stanja definiran je gramatikom kao na slici 5.1. Slika 5.1: BNF gramatika dokumenta stanja. NL - ASCII LF (0x0a, 10) Document ::= (Item | NL)+ Item ::= KeywordLine Object* KeywordLine ::= Keyword NL | Keyword WS ArgumentChar+ NL Keyword = KeywordChar+ KeywordChar ::= 'A'...'Z' | 'a'...'z' | '0'...'9' | '-' ArgumentChar ::= bilo koji ASCII znak koji se može ispisati osim NL WS = (SP | TAB)+ Object ::= BeginLine Base-64-kodirani-podaci EndLine BeginLine ::= "-----BEGIN " Keyword "-----" NL EndLine ::= "-----END " Keyword "-----" NL //za BeginLine i EndLine Keyword mora biti isti Konsenzus ili registar stanja mreže definiran je gramatikom na slici 5.2. Slika 5.2: Gramatika konsenzusa ili registra stanja mreže. "network-status-version" SP version NL {1} "vote-status" SP {"vote","consensus"} NL {1} "consensus-methods" SP IntegerList NL {"consensus" – 0, "vote" -1} "consensus-method" SP Integer NL {"vote" -0,"consensus" – 1} "published" SP YYYY-MM-DD SP HH:MM:SS NL {"consensus" – 0, "vote" -1} "valid-after" SP YYYY-MM-DD SP HH:MM:SS NL {1} "fresh-until" SP YYYY-MM-DD SP HH:MM:SS NL {1} "valid-until" SP YYYY-MM-DD SP HH:MM:SS NL {1} "voting-delay" SP VoteSeconds SP DistSeconds NL {1} "client-versions" SP VersionList NL {0,1} "server-versions" SP VersionList NL {0,1} "known-flags" SP FlagList NL {1} "params" SP [Parameters] NL {0,1} //opcionalno, parovi ključ vrijednost "dir-source" SP nickname SP identity SP address SP IP SP dirport SP orport NL {1} "contact" SP string NL {0,1} "legacy-key" SP FINGERPRINT NL {0,1} //otisak netom isteklog ključa //ako je riječ o konsenzusu slijedi popis glasača, a dolje je opis jednog glasa "dir-source" SP nickname SP identity SP address SP IP SP dirport SP orport NL {1} "contact" SP string NL {0,1} "vote-digest" SP digest NL {1} ... // informacije o usmjernicima // potpis čitavog dokumenta "directory-signature" SP identity SP signing-key-digest NL Signature {1} Usmjernik u konsenzusu stanja mreže definiran je gramatikom na slici 5.3 i opisnikom na slici 5.4. Slika 5.3: Informacija o usmjerniku u konsenzusu stanja mreže. "r" SP nickname SP id SP digest SP publication SP IP SP ORPort SP DirPort NL "s" SP Flags NL {0,1} "v" SP version NL {0,1} {1} Slika 5.4: Gramatika opisnika usmjernika "router" nickname address ORPort SOCKSPort DirPort NL {1} "bandwidth" bandwidth-avg bandwidth-burst bandwidth-observed NL {1} "platform" string NL {0,1} "published" YYYY-MM-DD HH:MM:SS NL [{1} "fingerprint" fingerprint NL {0,1} // sažetak javnog ključa identiteta "hibernating" bool NL {0,1} "uptime" number NL {0,1} "onion-key" NL javni ključ u PEM formatu {1} "signing-key" NL javni ključ u PEM formatu {1} "reject" exitpattern NL {0,1} "accept" exitpattern NL {0,1} "router-signature" NL Signature NL {1} "contact" info NL {0,1} "family" names NL {0,1} "read-history" YYYY-MM-DD HH:MM:SS (NSEC s) NUM,NUM,NUM,NUM,NUM... NL {0,1} "write-history" YYYY-MM-DD HH:MM:SS (NSEC s) NUM,NUM,NUM,NUM,NUM... NL {0,1} "eventdns" bool NL {0,1} "caches-extra-info" NL {0,1} "extra-info-digest" digest NL {0,1} "hidden-service-dir" *(SP VersionNum) NL {0,1} "protocols" SP "Link" SP LINK-VER-LIST SP "Circuit" SP CIRC-VERSION-LIST NL {0,1} "allow-single-hop-exits" {0,1} Na slici 5.5. prikazana je gramatika koja definira dokument s dodatnim informacijama. 72 Dodatak A: Gramatike dokumenata stanja Slika 5.5.: Dokument s dodatnim informacijama "extra-info" Nickname Fingerprint NL {1} "published" {1} "read-history" YYYY-MM-DD HH:MM:SS (NSEC s) NUM,NUM,NUM,NUM,NUM... NL "write-history" YYYY-MM-DD HH:MM:SS (NSEC s) NUM,NUM,NUM,NUM,NUM... NL // ovaj dio bi TREBALI generirati isključivo usmjernici mostovi "geoip-start" YYYY-MM-DD HH:MM:SS NL "geoip-client-origins" CC=N,CC=N,... NL "router-signature" NL Signature NL {1} 73 {0,1} {0,1} Dodatak B: Protokolne podatkovne jedinice Protokolne podatkovne jedinice u Tor-u nazivaju se ćelijama. Veličina ćelija je kod anonimnih sustava fiksna, kako bi se otežala analiza prometa. Veličina ćelije je 512 okteta. Svaka se ćelija sastoji od identifikatora virtualnog kanala, naredbe i tereta. Slika 1: format protokolne podatkovne jedinice, tj. ćelije Sve ćelije protokola su iste veličine, osim VERSIONS ćelije. Slika 2: format VERSIONS ćelije, duljina je cijeli broj u big-endian notaciji Obzirom na oktet koji definira naredbu, ćelije možemo prirodnije podijeliti na upravljačke i prijenosne. Tablica 1: upravljačke ćelije oktet naredba opis teret 0 PADDING Održavanje veze na životu - 1 CREATE Zahtjev za stvaranjem kanala 2 CREATED Potvrda stvorenog kanala DiffieHellmanovo rukovanje za simetrični ključ kriptiranja podatkovnog toka veze 3 RELAY Prijenos podataka Prijenosni teret 4 DESTROY Zatvaranje kanala Oktet koji definira razlog zatvaranja uz opcionalne dodatne podatke 5 CREATE_FAST Zahtjev za brzim stvaranjem kanala 6 CREATED_FAST Potvrda brzo stvorenog kanala Dijelovi simetričnog ključa za kriptiranje podatkovnog toka veze 7 VERSIONS Odabir zajedničke verzije protokola Popis svih podržanih verzija protokola izvorišta 8 NET_INFO Topološke informacije IP adresa izvorišta i primjećene IP adrese odredišta Ćelija PADDING služi za ostvaruje održavanja veze na životu, međutim može se koristiti i za ispunu veze kako bi se otežala analiza prometa globalnom pasivnom napadaču. Međutim, još uvijek ne postoji učinkovita strategija ispune veze. Pomoću topoloških podataka u teretu NET_INFO ćelije onemogućava se varijanta čovjek-u-sredini napada. Upravljačke ćelije služe za stvaranje i zatvaranje duljine jednog čvora te razmjenu metainformacija potrebnih za (siguran) rad. Ćelije PADDING, DESTROY, RELAY, VERSIONS i NET_INFO su dvosmjerne, dok se ćelije CREATE(_FAST) šalju isključivo prema odredištu, a CREATED(_FAST) isključivo prema izvorištu. 74 Dodatak B: Protokolne podatkovne jedinice Virtualni kanal može biti uništen ili srezan na zahtjev Tor posrednika, ili može biti uništen ili srezan zbog događaja na vezama koje ga tvore. Ovaj razlog propagira se u oba smjera ako je to moguće, u teretu ćelije DESTROY i/ili RELAY_TRUNCATED. Tablica 2: razlozi za prekid virtualnog kanala oktet razlog opis 0 NONE Starije verzije protokola nisu koristile razloge 1 PROTOCOL prekršenje protkola 2 INTERNAL Unutarnja greška 3 REQUESTED Klijent zahtijeva rezanje ili zatvaranje kanala 4 HIBERNATING Tor usmjernik je u stanju hibernacije 5 RESOURCELIMIT Premašeni su resursi (memorija,utičnice,identifikatori virtualnih kanala) 6 CONNECTFAILED Nemoguće je dobiti odgovor od poslužitelja 7 OR_IDENTITY Veza je uspješno uspostavljena, međutim identitet Tor usmjernika ne odgovara očekivanom 8 OR_CONN_CLOSED TLS kanal koji je nosio ovaj virtualni kanal je zatvoren 9 FINISHED Virtualni kanal se zatvara jer je star ili preopterećen 10 TIMEOUT Stvaranje virtualnog kanala traje predugo 11 DESTROYED Kanal se reže ili uništava zbog greške na vezi na putu 12 NOSUCHSERVICE Nepostojeća skrivena usluga Upravljačka ćelija RELAY u svom teretu zasebnim oktetom definira nove upravljačke i prijenosne vrste ćelija. Upravljačke ćelije služe za širenje i rezanje virtualnih kanala te upravljanje zakrčenjem. Prijenosne ćelije služe za otvaranje i zatvaranje anonimiziranih veza (u terminologiji Tor mreže tokova), prijenos korisničkih podataka te (R)DNS razrješavanje. Tablica 3: prijenosne ćelije,O-prema odredištu, I-prema izvorištu, U-upravljanje, svaka naredba ima prefiks RELAY_ oktet naredba smjer opis teret 1 BEGIN O Zahtjev za otvaranjem toka, odnosno URL vanjskog odredišta uspostavljanjem anonimiziranog TCP kanala 13 BEGIN_DIR O Zahtjev za otvaranjem toka dokumentima stanja mreže 4 CONNECTED I Tok je uspješno otvoren IP adresa odredišta 3 END OI Tok je zatvoren Razlog zatvaranja 2 DATA OI Prijenos podataka na anonimiziranom TCP Korisnički promet kanalu 11 RESOLVE O Zahtjev za (R)DNS razrješavanjem DNS domena ili 12 RESOLVED I Uspješno (R)DNS razrješavanje IP adresa 6 EXTEND O,U Zahtjev za širenjem virtualnog kanala Identifikator čvora i RSA kriptirana CREATE ćelija 7 EXTENDED I,U Kanal je uspješno proširen Identifikator čvora i RSA kriptirana CREATED ćelija 8 TRUNCATE O,U Zahtjev za rezanjem kanala Identifikator čvora i razlog rezanja 75 za promet URL dokumenta Dodatak B: Protokolne podatkovne jedinice 9 TRUNCATED 5 SENDME 10 DROP Kanal je srezan Identifikator čvora i razlog rezanja OI,U Upravljanje zakrčenjem - OI,U Ispuna veze (nije ostvareno) - I,U 32..40 Koriste se za skrivene usluge koje su obrađene u posebnom poglavlju Ćelija RELAY_BEGIN_DIR tretira se kao da je primljena ćelija RELAY_BEGIN s odredištem koje je IP adresa odredišnog Tor usmjernika i pristupnih vratiju za promet dokumentima stanja. Slika 3: prijenosni teret, odnosno teret upravljačke RELAY ćelije Upravljačke ćelije imaju nultu vrijednost identifikatora toka, jer utječu na cijeli virtualni kanal. Jedina iznimka su RELAY_SENDME ćelije – kada imaju postavljen identifikator toka služe za kontrolu zakrčenja toka, a inače virtualnog kanala. Sažetak služi za očuvanje integriteta podatkovnog toka. Prepoznato se uvijek postavlja na nulu kako bi se moglo prepoznati kada je ćelija dekriptirana. Duljina označava duljinu korisničkog tereta, dok se ostatak nadopunjuje nulama. Ako je moguće, uvijek se prije zatvaranja virtualnih kanala zatvaraju svi tokovi na njemu. Razlog zatvaranja toka šalje se u teretu RELAY_END ćelije uz opcionalne dodatne podatke. Tablica 4: razlozi za prekid toka, svaki razlog ima prefiks REASON_ oktet razlog opis 1 MISC svi nenavedeni razlozi 2 RESOLVEFAILED nije moguće razriješiti adresu ili domenu 3 CONNECTREFUSED vanjsko odredište odbilo se povezati 4 EXITPOLICY izlazna politika Tor usmjernika na poziciji izlaznog čvora ne dopušta spajanje na traženo vanjsko odredište 5 DESTROY Virtualni kanal se zatvara 6 DONE anonimizirana TCP veza je zatvorena 7 TIMEOUT Stvaranje virtualnog kanala traje predugo, ili je veza predugo bez prometa 9 HIBERNATING Tor usmjernik prelazi u stanje hibernacije 10 INTERNAL Unutarnja greška 11 RESOURCELIMIT premašeni su resursi odredišnog Tor usmjernika 12 CONNRESET Veza je neočekivano prekinuta pa uspostavljena 13 TORPROTOCOL prekršenje protkola 14 NOTDIRECTORY Odredišni Tor usmjernika nije (pred)poslužitelja registara Vrijednost osam okteta za definiranje razloga za za zatvaranje toka mora ostati nealocirana dok neke starije verzije (do verzije 0095) ne izađu iz upotrebe. U tablici su označeni razlozi za zatvaranje toka koji su ujedno i razlozi za zatvaranje virtualnog kanala. 76 Dodatak C: Metrike anonimnosti Iako postoje razne formalizacije, a pitanje vrednovanja anonimnosti je otvoren i o domeni jako ovisan problem, osnovna definicija anonimnosti krajnje je intuitivna. Ako se pretpostavi da moramo identificirati neki element skupa od pet članova, jednostavnim slijednim pretraživanjem brzo obavljamo zadatak. S druge strane, ako taj skup broji pet milijuna elemenata, zadatak ćemo puno sporije i teže obaviti. Anonimnost (pojedinog elementa) skupa ovisi o njegovom kardinalnom broju – što je više elemenata u skupu to je lakše sakriti nekog od njih među svim ostalima, odnosno teže je identificirati jednog od njih među svima. Anonimost pojedinog elementa skupa, osim o kardinalnom broju skupa, ovisi i o razlici značajki tog elementa prema značajkama ostalih elemenata skupa, tj. o jednolikosti elemenata skupa, stoga je jasno da gornji pristup ne zadovoljava u potpunosti, kao i da formalne interpretacije anonimnosti mogu biti vrlo šarolike. Naravno, kvantifikacija anonimnosti ovisi i o modelu napadača. Formalizacija anonimnosti podrazumijeva zadani model sustava i napadača te metrike anonimnosti. Na taj način pruža se ocjena kvalitete usluge sustava. Anonimnost se također može tumačiti u širem kontekstu kao skrivanje informacija. Prva ocjena sustava temeljena je na kardinalnoj metrici d ∝ ∣S∣ [19]. Ovo je gruba ocjena i nije dovoljna. Drugi tip metrike anonimnosti temelji se na entropiji d ∝ −∑ p log p . Ovakav s ∈S pristup mjeri anonimnost u odnosu na zadani entitet: ako je p vjerojatnost da je pošiljatelj s poslao poruku, tada je d stupanj anonimnosti primatelja [23] [24]. Treći tip metrike anonimnosti također se temelji na entropiji, ali koristi i matrice prometa kako bi mogla procijeniti otpornost cijelog sustava na napad analizom prometa. Daje osnovnu ocjenu prometne politike u smislu otpornosti na analizu prometa te najbolju prometnu politiku po toj metrici [22]. Četvrti tip metrike anonimnosti temelji se na kombinatorici i također mjeri anonimnost cijelog sustava [21]. Promet kroz sustav predstavlja se bipartitnim grafom, čiji su čvorovi ulazna i izlazna vremena poruka. Graf je predstavljen matricom susjedstva A . Određivanjem bridova, odnosno odnosa između ulaza i izlaza definiran je promet. Ovaj problem u teoriji grafova poznat je kao savršena slaganja, a njihov broj za zadani skup čvorova ekvivalentan je izračunavanju permanenta i=n matrice susjedstva grafa perm A=∑ ∏ Ai , i . Sumacija se vrši po svim permutacijama i=1 log perm A , n1 . Ako logn! postoje samo dva čvora, tj. samo jedno savršeno slaganje sustav nije anoniman ( n=1, d A=0 ) dok je za maksimalnu anonimnost ( d A=1 ) odgovarajući graf sustava potpuni bipartitni graf. Zbog velike računalne snage potrebne za njeno izračunavanje, ovako izražena, ova metrika nije praktična. Upotrebom modificirane Monte Carlo metode, najbolje poznato asimptotsko vrijeme izvođenja je polinomijalno O n7 log 4 n . Za velike sustave to ipak nije dovoljno dobro. parova čvorova. Stupanj anonimnosti definiran je kao: d A= Navedene metrike su stohastičkog karaktera, a između ostalih, postoje i metrike temeljene na modalnoj, epistemičkoj i temporalnoj logici te višeagentskim sustavima, kao i kombinacije logičkog i stohastičkog okvira rasuđivanja [28]. 77 Dodatak D: Analiza anonimnosti virtualnog kanala Kako bi se pobliže ispitala hijerarhija anonimnosti virtualnog kanala, odnosno funkcionalna zavisnost anonimnosti o duljini virtualnog kanala tj. puta, uvode se događaji odabiranja odnosno napada na jedan ili dva čvora: deanonimiziranje kanala kompromitacijom jednog čvora CONN , 1 EDGE polovično deanonimiziranje kanala kompromitacijom jednog čvora 1 , kompromitranje posrednog čvora 1 , deanonimiziranje kanala kompromitacijom dva čvora CONN te 2 EDGE polovično deanonimiziranje kanala kompromitacijom dva čvora 2 . Odabiri jednog i dvaju čvorova tvore zasebne, potpune skupove elementarnih događaja. Napadač je lokalan, jer se promatra se samo kanal, unutarnji odnosno aktivni jer kompromitira čvorove i dinamički, jer koristi dobiveno znanje za deanonimiziranje korisnika. Tablica 1: hijerarhija anonimnosti puta u ovisnosti o količini posrednih čvorova i snazi napada logička duljina puta 2 3 4 5 6 7 8 9 10 11 i+2 snaga napada p(wi) 0 1 2 3 4 5 6 7 8 9 broj posrednika ( i ) na putu 0 0 0 0 CONN x 1 0 0 0 0 0 EDGE x 0 1 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 , i1 i p 1 x 0 0 1 3 2 4 3 5 4 6 5 7 6 8 7 9 i−2 ,i1 i p CONN 2 x x 1 1 3 1 6 1 10 1 15 1 21 1 28 1 36 i , i2 2 p EDGE 2 x x 0 2 3 4 6 6 10 8 15 10 21 12 28 14 36 2 i−2 i ,i2 2 p 2 x x 0 0 1 6 3 10 6 15 10 21 12 28 14 36 1− p 2 − p 2 i2 p 1 p 1 −1 −1 C E Što je više čvorova u kanalu tim je vjerojatnije da je više čvorova potrebno kompromitirati kako bi se kanal deanonimizirao. Udaljenost prijenosnog čvora od najbližeg krajnjeg čvora vrednuje njegovo neznanje o identitetima krajnjih čvorova. Duljina kanala implicira dodatnu semantiku odnosno kvalitetu isporučene anonimnosti puta, obzirom na raspodjelu znanja o sudionicima komunikacije, a koju izravno uvjetuje upravo duljina puta. Tek od kanala sa sedam posrednih čvorova broj povoljnih i nepovoljnih odabira čvorova postaje približno jednak. U praksi dodavanje čvorova znači dodatno kašnjenje. U Toru, brzi kanali za surfanje standardno imaju tri čvora (dovoljno je da postoji jedan čvor koji ne zna za krajnje čvorove) dok spori kanali za skrivene usluge standardno imaju sedam čvorova. Kod skrivenih /anonimnih mrežnih usluga, kao što im i samo ime kaže, bitna je visoka anonimnost primatelja. 78 Dodatak E: Definicije i opaske U ovom potpoglavlju razmotrit će se pojmovi identiteta, neuočljivosti i anonimnosti te njihove komponente i međusobni odnosi, nakon čega slijede opaske. Osim toga izložit će se i povijesni razvoj definicija anonimnosti, odnosno klasične i kubične definicije [28]. Uvode se kratice za prethodno definirane pojmove: anonimnost – ANON, nepovezivost – UNLN, nemogućnost identificiranja – UNID, anonimnost primatelja – RA, anonimnost pošiljatelja – SA, uzajmna anonimnost – MA, lokacijska anonimnost – LA, grupna anonimnost – GA, komunikacijska anonimnost – CA, grupna komunikacijska anonimnost - GCA. Neuočljivost (engl. UNOBservability) znači da napadač ne može uopće uočiti predmete interesa umjesto odrediti identitete čvorova ili odnose među njima, kao inače. To znači da ili uopće ne može utvditi postoji li predmet interesa ili je anonimnost ostalih čvorova u odnosu na predmet interesa ista – npr. svi čvorovi šalju poruku iste veličine istovremeno. Neuočljivost implicira anonimnost, a obrat vrijedi ako se uz anonimnost osigura i lažan (engl. dummy), odnosno promet koji se ne može razlikovati (engl. indistinguishable) [20]: UNOB ANON ANON ∧DUMMY UNOB Neuočljivost podrazumijeva: neoučljivost primatelja, neoučljivost pošiljatelja i komunikacijsku neuočljivost. Neuočljivost pošiljatelja (engl. sender unobservability) znači da nije moguće razlikovati konkretnu poruku među svim poslanim porukama, ili uočiti ju među svim porukama. Drugim riječima, nije jasno koji pošiljatelj iz skupa neuočljivosti pošiljatelja šalje. Neuočljivost primatelja (engl. reciever unobservability) znači da nije moguće razlikovati konkretnu poruku među svim poslanim porukama, ili uočiti ju među svim porukama. Drugim riječima, nije jasno koji primatelj iz skupa neuočljivosti primatelja prima. Poruka ostaje skrivena. Komunikacijska neuočljivost (engl. communications unobservability) znači da nije moguće otkriti je li i jedan mogući par pošiljatelj-primatelj iz skupa neuočljivosti povezan s konkretnom porukom. Skriva se konkretan par primatelj-pošiljatelj. Komunikacijska anonimnost slabije je svojstvo od anonimnosti primatelja/pošiljatelja, jer dok nije jasno da je konkretan par pošiljatelj-primatelj povezan s konkretnom porukom, može biti očito da je taj par ipak povezan s nekim porukama. Ako takvu povezanost nije moguće ustanoviti ispunjena je komunikacijska neuočljivost. Neuočljivost sustava može naći svoju primjenu u vojnim komunikacijama. Služba prikupljanja informacija (Signals Intelligence prema ISTAR modelu, kod nas GSOSRH – SEI i Vojnoobavještajna bojna) [36] presretanjem signala tj. tzv. elektroničkim izviđanjem dolazi do korisnih informacija. Već jednostavnim potvrđivanjem postojanja komunikacije može se doći do vrijednih operativno-taktičkih informacija [35]: • • • • • • • česta komunikacija može značiti planiranje brza kratka komunikacija može značiti pregovore nedostatak komunikacije može značiti neaktivnost ili završetak planiranja česta komunikacija između centralne stanice i nekih određenih stanica može ukazati na zapovjedni lanac tko priča s kime može otkriti koja je područje odgovorosti osoblja iz stanice, što s dodatnim informacijama može implicirati još neka zaduženja praćenog osoblja tko se kada premješta iz postaje u postaju može značiti strah od prisluškivanja subjekta tko kada priča može povezivati stanice s događajima što, ovisno o kontekstu, može svašta implicirati Ostvarenjem komunikacijske infrastrukture koja jamči neuočljivost izbacila bi se iz stroja, ili uvelike otežala, mogućnost protivničkog elektroničkog izviđanja. 79 Dodatak E: Definicije i opaske Slijedi popis definicija komponenata anonimnosti u klasičnom i kubičnom smislu. Klasična anonimnost dovoljno je dobra definicija za praktične potrebe dok definicija proširene anonimnosti uvodi finiji okvir za vrednovanje kvalitete isporučene anonimnosti. SA∧RA classicUNID classicUNID∧LA∧MA∧GA cubicUNID CA classicUNLN classicUNLN ∧GCA cubicUNLN SA∧RA∧CA≡classicUNID ∧classicUNLN classicANON LA∧ MA∧GA∧GCA expandedANON cubicUNID∧cubicUNLN ≡classicANON ∧expandedANON cubicANON Uloga (engl. social role) je u sociologiji definirana kao očekivano ponašanje u zadanom društvenom kontekstu, odnosno kao skup povezanih akcija koje stvaraju sudionici društvene situacije. Drugim riječima, to su ulančani "kontekstno zavisni atributi identiteta" [20] odnosno predmeti interesa. Kontekstom i ulogom ujedno je definirano i postojanje povezanosti atributa odnosno predmeta interesa. Potpuni identitet pojedinca može se sastojati od više djelomičnih identiteta od kojih svaki predstavlja osobu u konkretnom kontekstu ili ulozi. Djelomični identitet je pravi podskup skupa svih vrijednosti atributa koji čine potpuni identitet, koji je unija svih atributa svih identiteta osobe. Potpuni identitet definiran je u idealnom smislu i služi za lakše shvaćanje pojma djelomičnog identiteta. Na tehničkoj razini, ti atributi su podaci. Atributi ili njihove vrijednosti ne moraju biti postojani tokom vremena te se pretpostavlja da vrijedi domenski integritet atributa. Svaki razuman napadač uzimati će u obzir pretraživanje poruka po kompozitnom ključu koji povezuje vrijeme i lokaciju poruka. Osim toga, kao što identitet povezuje pojedinca i grupu tako i parcijalni identitet može povezivati korisnika s grupom korisnika sustava koja može pripadati i nekoj organizaciji [20]. Grupna (komunikacijska) anonimnost nije osigurana ni jednom postavljenom anonimnom mrežom, a može biti interesantna u smislu vrednovanja anonimnosti obzirom da povezuje korisnika sa skupom odnosno definira kardinalnu metriku. Ako je i ispunjen uvjet anonimne komunikacije u klasičnom smislu, dugotrajnim narušavanjem proširene anonimnosti moguće je doći do dodatnog znanja o ponašanju korisnika/korisniku koje može i ne mora biti kritično u smislu deanonimiziranja. Slojevito usmjeravanje (engl. onion routing) prevedeno je tako stoga što je zorna analogija prometa po protokolu slojevitog usmjeravanja s pokretnom trakom glavica luka kojima se slojevi vraćaju ili skidaju. Slojevito usmjeravanje sa spajanjem poruka (engl. garlic routing) razlikuje se od slojevitog usmjeravanja po tome što poruke proizvoljno spaja po dijelovima puta kako bi otežalo napad analizom prometa. U tom smislu poruke po dijelovima puta analogne su glavicama češnjaka dok su pojedine poruke analogne režnjevima. U oba slučaja vrijedi analogija između (slojeva) povrća na pokretnoj traci i postignute anonimnosti kao rezultata protokola. Usmjernik mješač (engl. mix router) također je općeprihvaćen kao pojam i preveden doslovno, jer je upravo kašnjenje prometa, odnosno miješanje prometnih tokova poruka u vremenskoj domeni kritičan mehanizam za postizanje anonimnosti kroz nepovezivost. 80 Dodatak E: Definicije i opaske Predposlužitelj (engl. cache server) rasterećuje poslužitelja preuzimanjem (dijela) njegovog sadržaja. Priručna memorija (engl. cache memory) služi kako bi preuzela dio podataka namijenjen obradi unutar centralne upravljačke jedinice kako bi se ubrzala obrada podataka. Prevodi se i kao predmemorija [4]. U oba slučaja prefix cache označava preuzimanje sadržaja za obradu, a prvi prijevod zauzima manje mjesta brojem znakova i tvori samo jednu riječ. Jamstvo anonimnosti, odnosno odsutstvo identiteta, oslobađa pojedinca odgovornosti za svoje postupke te tako, u virtualnoj komunikaciji, inače skrivena ljudska priroda izlazi na vidjelo. Ovo je moguće provjeriti na Core onion anonimnom forumu [45], na kojem, za početak, nema moderatora; ili na 4chan.org Web stranici. Osim toga, anonimna komunikacija je sama po sebi vrlo zanimljiva jer je uobičajeno da su sudionici komunikacije identificirani. Internet je oduvijek bio (i biti će) mjesto na kojem su informacije slobodne. Za to će se pobrinuti pokreti kao što su kriptoanarhizam [41], haktivizam [40] i Legija anonimnih [42]. Filozofija kriptoanarhizma je individualna sloboda i zaštita privatnosti, a filozofija haktivizma je ostvarenje slobode govora na Internetu. Ovi pokreti nastali su kao odgovor na represiju sustava, a najpoznatija je svakako Legija anonimnih koja je jedini entitet koji se uspješno suprotstavio Scijentološkoj crkvi. Pri tom je bitno napomenuti, kako je Scijentološka crkva jedina organizacija ikad koja je prisilila čak i američku poreznu upravu (IRS) na kompromis tako što je podigla nekoliko tisuća mahom besmislenih tužbi [46]. Metoda Legije anonimnih zanimljiva je jer prije svega još jednom upotrebljava Mrežu kao alat borbe protiv represije, a potom i zato jer je nova primjena načela gerilske borbe uz vrlo učinkovitu organiziranost. Legija anonimnih je "kolektiv pojedinaca koji zajedno djeluju u postizanju zajedničkog cilja. Nemaju vođa ni sljedbenika, a pojedinac nikad ne predstavlja Legiju". Međusobno anonimno komuniciraju, uglavnom putem 4chan.org Web stranice te dogovaraju djelovanje i djeluju, a javnost obavještavaju anonimno putem Interneta i to su jedine "službene" poruke Legije. Poznat je problem zaštite autorskih prava na Internetu, koji je uostalom i razlog nastajanja partnerskih mreža, a opet kao odgovor virtualne zajednice na represiju sustava. Nedavno su MPAA i RIAA unajmile indijsku tvrtku Aiplex da izvrše DDoS napad na PirateBay.org (najotporniji indekser BitTorrent datoteka na planetu), obzirom da pravnim putem nisu mogle ishoditi gašenje stranice. Na stranici 4chan.org najavljeni su, a nedugo potom i izvršeni, osvetnički DDoS napadi na Web stranice svih tvrtki povezanih s ovim incidentom od strane "aktivista za piratstvo". Dakako da je drugi napad bio puno učinkovitiji od prvog [39]. Ovaj uzorak, osim što je već nazvan cyber-prosvjedovanjem, ukazuje na rješenje pravnog modela prijetnje. Anonimna organizacija onemogućuje pravni napad na načelnoj razini – pravni mehanizmi pretpostavljaju identifikaciju i fizičko privođenje subjekta da bi se uopće mogli početi ostvarivati. Ovakav je pristup sasvim zadovoljavajuć za cyber-aktivizam, međutim za anonimne računalne mreže gubi smisao jer takav sustav mora djelovati unutar legalnog okvira. Svaki anonimni protokol napisan je tako da administrator čvora ne može utjecati na rad protokola van uskih tehničkih parametara. Efektivno, administrator čvora nije odgovoran za promet svog čvora već aplikacija koja izvršava protokol. Na taj se način opet onemogućuju pravni mehanizmi na načelnoj razini obzirom da ni računala ni aplikacije po definiciji nisu entiteti koji mogu biti odgovorni za neko djelo. 81
© Copyright 2024 Paperzz