Anonym Uživatelská dokumentace ˇ Peter Hlísta, Filip Repka, Daniel Sipták, Antonín Steinhauser Supervisor: Leo Galamboš http://anonym.cekuj.net/ March 21, 2013
Chapter 1 Úvod 1.1
Úˇcel dokumentu
Tento dokument si klade za cíl seznámení s aplikací Anonym, její funkcionalitou, vlastnostmi a požadavky nutnými k použití.
1.2
Cílová skupina a doporuˇcení k cˇ etbˇe dokumentu
Tento dokument je vhodným materiálem pro všechny, jež budou mít zájem o pochopení úˇcelu, specifik a ovládání aplikace Anonym. Sekce "Celkový popis" (2) obsahuje základní seznámení s projektem. Jsou zde také definovány základní pojmy pro popis práce programu, proto je prostudování této sekce doporuˇceno všem skupinám cˇ tenáˇru˚ . Sekce "Instalaˇcní informace" (3) obsahuje návod k instalaci aplikace, pˇríklad instalace a popis soubor˚u bˇehem ní generovaných. Doporuˇcuje se proto všem druh˚um uživatel˚u aplikace. Sekce "Uživatelské rozhraní" (4) popisuje rozhraní pro práci s programem a také jeho možná nastavení a je proto vhodná jak pro uživatele využívající anonymizaˇcní schopnosti aplikace, tak i pro uživatele na stranˇe provozovatele anonymizaˇcní sítˇe. Sekce "Funkce aplikace" (5) obsahuje detailnˇejší popis funkcí aplikace. Tuto sekci lze doporuˇcit také všem druh˚um uživatel˚u. Sekce "Použití programu" (6) obsahuje osvˇetlení prvotních nastavení programu a úkol˚u nutných pˇri prvotním pˇripojení do sítˇe nebo jejího vytvoˇrení. Tuto sekci lze doporuˇcit jak uživatel˚um využívajícím anonymizaˇcní schopnosti aplikace, tak i uživatel˚um provozujícím anonymizaˇcní sít’.
1
1.3
Úvod do problematiky
V dnešní dobˇe se cˇ lovˇek pohybující se na internetu stále cˇ astˇeji setkává s webovými stránkami a jinými službami, jež pˇrekraˇcují únosnou mez zásahu do soukromí. Sbírají informace o uživateli, ukládají si je a cˇ asto nabízejí nevyžádané funkce, jež na tˇechto informacích staví. Proto se jeví jako pˇrirozená a legitimní snaha uživatele nebýt pˇri práci na internetu poznán a neposkytovat o sobˇe víc informací, než je potˇreba. Bohužel žádný z aktuálnˇe existujících anonymizér˚u (ToR, JonDonym) neuspokojuje požadavky znaˇcné cˇ ásti zájemc˚u o anonymizaci a to z mnoha d˚uvod˚u. Prvním d˚uvodem je nedostateˇcná transparentnost stávajících systém˚u (anonymizují pouze TCP spojení, nikoliv UDP a ICMP pakety), druhým problémem je velmi omezená distributivita, která se projevuje bud’ centrálním katalogem proxy server˚u nebo centrální certifikaˇcní autoritou. Dalším nedostatkem je nemožnost dostateˇcnˇe silného ˇrízení toku (volby rychlosti a latence uzl˚u a pˇredevším volby koncového uzlu, jehož IP adresou bude klient v˚ucˇ i druhé stranˇe spojení vystupovat), a chybˇející podpora pro IPv6 protokol. Poslední významnˇejší slabina stávajících systém˚u spoˇcívá v anonymizaci na vyšších IP vrstvách, bez možnosti ovlivnˇení podoby paket˚u vystupujících z anonymizaˇcní sítˇe. Všechny výše zmínˇené nedostatky si klade tento projekt za cíl odstranit a nabídnout tak produkt, který nebude svou univerzálností mít na trhu obdoby.
2
Chapter 2 Celkový popis 2.1
Popis aplikace
Aplikace Anonym slouží k anonymizaci libovolné komunikace program˚u podporujících protokoly HTTP/HTTPS, SOCKS nebo rozhraní TAP. Jedná se o sít’ stanic fungujících zp˚usobem klient-klient (P2P) a nemající tudíž žádný centrální bod. Komunikace v této síti splˇnuje požadavky Perfect forward secrecy díky navazování spoj˚u pomocí Diffie-Hellmanovy výmˇeny klíˇcu˚ . Z pohledu klientského poˇcítaˇce využívajícího aplikaci k anonymizaci (dále jen klient) je jeho komunikace vedena skrz sít’ server˚u (dále jen brány) a z této sítˇe vychází na k tomu úˇcelu urˇceném výstupním serveru (dále jen výstupní brána), který komunikaci prezentuje jako svoji vlastní efektivnˇe tak anonymizujíc klienta. Na klientu i všech ostatních branách pochopitelnˇe musí být spuštˇena instance aplikace Anonym. Posloupnost bran (zakonˇcená výstupní bránou), skrz kterou komunikace prochází, nazýváme cesta. Jediným specifickým nastavením klienta je pˇresmˇerování komunikace anonymizovaného programu/webového prohlížeˇce na port aplikace Anonym (nastavení proxy serveru na daný poˇcítaˇc se zmínˇeným portem). Aplikace na daném portu naslouchá a pˇríchozí data po zašifrování pˇreposílá dále (viz 2.1). Na konci cesty sítí pak výstupní brána po rozšifrování odesílá data do internetu. Stejnou cestu pak nazpˇet proudí pˇríchozí data. Pokud se klient rozhodne použít TAP plugin, nejsou ani tato opatˇrení nutná, protože anonymizér cˇ te veškeré packety urˇcené k poslání výchozí bránˇe, ale povstávají jiné nevýhody jako je potˇreba administrátorských privilegií, podpora virtuálních sít’ových rozhraní nebo snížený poˇcet podporovaných platforem. Klient se funkcí nijak neliší od ostatních bran vyjma faktu, že ke komunikaci využívá tzv. klientské pluginy. Pluginy jsou dvojího typu, klientské a výstupní. Pokud je na klientu použit urˇcitý plugin, pak cesta anonymizaˇcní sítí m˚uže konˇcit pouze ve výstupní bránˇe, která má (spuštˇený) odpovídající výstupní plugin. Program v souˇcasné dobˇe plnˇe podporuje tˇri typy plugin˚u HTTP/HTTPS, SOCKS a TAP. HTTP/HTTPS plugin lze použít pro anonymizaci webového prohlížeˇce (obecnˇe programu, který podporuje HTTP/HTTPS), SOCKS pro anonymizaci libovolného programu podporujícího tento protokol a TAP pro anonymizaci veškerého sít’ového
3
provozu linuxové stanice. V pˇrípadˇe, že byl klient spuštˇen s parametrem aktivujícím kontrolní rozhraní, lze skrze nˇej zjišt’ovat dodateˇcné informace a mˇenit nastavení aplikace.
Figure 2.1: first architecture of Anonym
2.2
Základní popis funkcí
Aplikace umožˇnuje nastavit, který poˇcítaˇc má být použit jako první brána, která bude sloužit pro získání informací o síti, do které je plánováno pˇripojení. Umožˇnuje také manuální výbˇer port˚u, které mají být použity pro komunikaci s anonymizaˇcní sítí. V neposlední ˇradˇe je zde možnost nastavení certifikaˇcních politik jednotlivých bran, cˇ ímž lze docílit vytvoˇrení sítˇe pˇresnˇe podle požadavk˚u uživatele. Uživateli je tímto umožnˇeno specifikovat, jak se má jeho sít’ chovat v˚ucˇ i ostatním sítím a jaké funkce mají zastávat jednotlivé brány v jeho síti. Pomocí kontrolního rozhraní lze zadávat rozsah délky cesty, která sítí povede. Umožˇnuje také zadání minimálního pr˚utoku a maximální latence, jež musí výsledná cesta splˇnovat, aby mohla být použita pro anonymizaci. Dále lze pomocí kontrolního rozhraní konkrétnˇe specifikovat nejen výstupní brána, ale i celá cesta sítí (jednotlivé brány). Poskytuje i možnost zjištˇení informací o branách a metrikách a také je zde možno zapínat a vypínat jednotlivé pluginy. 4
2.3
Prostˇredí pro bˇeh aplikace
Aplikace není vázána na žádnou konkrétní procesorovou architekturu (bylo testováno na x86, AMD64, SPARC, PowerPC a ARM). Aplikace je schopna bˇehu pod systémy *nix (konkrétnˇe bylo testováno pro Linux, Mac OS X, Solaris, OpenSolaris, OpenBSD, NetBSD, FreeBSD a DragoFly BSD) ale také pod systémy Interix a Cygwin. Klientský TAP plugin je podporován pouze na systému Linux a výstupní TAP plugin funguje na systémech Linux, FreeBSD a OpenBSD. Aplikace ke svému bˇehu nevyžaduje uživatele s administrátorskými právy vyjma použití pluginu TAP. Aplikace vyžaduje ke svému zprovoznˇení a následnému bˇehu následující software: • CMake verze 2.6 nebo vyšší (http://www.cmake.org/) • OpenSSL verze 0.9.7 nebo vyšší (http://www.openssl.org/) Pro vygenerování automatické dokumentace je zapotˇrebí: • Doxygen verze 1.7.1 nebo vyšší (http://www.doxygen.org/)
2.4
Nároky na anonymizované programy
Co se týˇce program˚u, jejichž komunikace má být anonymizována, nejsou na nˇe kladeny žádné specifické požadavky vyjma potˇreby stanovit daný poˇcítaˇc a výchozí port (daného pluginu) aplikace jako proxy server, pˇres který bude probíhat komunikace s okolním svˇetem. Program pak pˇredává data aplikaci, poslouchající na výchozím portu a ta informace šifruje a pˇredává dále do anonymizaˇcní sítˇe. Aplikace pak pˇrijímá pˇríchozí odpovˇedi z anonymizaˇcní sítˇe a po rozšifrování pˇredává zpˇet programu. Tímto zp˚usobem lze šifrovat komunikaci jak webového prohlížeˇce (a program˚u podporujících protokol HTTP/HTTPS), tak i program˚u podporujících protokol SOCKS (Aplikace implementuje všechny metody, verze i adresní formáty protokolu SOCKS). Výše zmínˇená nastavení nejsou pochopitelnˇe zapotˇrebí v pˇrípadˇe použití pluginu TAP.
2.5
Lokalizace
Uživatelská dokumentace je k dispozici v cˇ eském jazyce, systémová dokumentace v jazyce anglickém. Výpisy aplikace a ovládání pˇres kontrolní port jsou taktéž v anglickém jazyce.
5
Chapter 3 Instalaˇcní informace 3.1
Popis instalace pˇrekladem
Nejprve je nutné v uživatelem vybrané složce zavolat program Cmake a pˇredat mu jako parametr cestu do adresáˇre obsahujícího zdrojové kódy. Cmake vygeneruje do stávajícího umístˇení soubory nutné k pˇrekladu zdrojových kód˚u. Následnˇe je potˇreba pomocí zavolání utility "make" ve stávajícím umístˇení pˇreložit zdrojové kódy a vygenerovat tak spustitelné soubory.
3.1.1
Typický pˇríklad instalace
Adresáˇr "anonym" obsahuje zdrojové kódy. Následné pˇríkazy jsou spouštˇeny ve složce "anonym/build/". cmake .. Spustí program Cmake a zadává cestu o adresáˇr výše, tedy "anonym". make Spustí utilitu make na soubory vygenerované pomocí programu Cmake.
3.2
Popis instalace z balíˇcku
Pokud na cílovém poˇcítaˇci není nainstalován program Cmake nebo knihovna OpenSSL-devel, je vhodné využít instalaˇcní balíˇcek. Ten je možné vyrobit pˇríkazem make package Jeho instalace se na cílovém poˇcítaˇci provádí pomocí pˇríkazu ./anonym.1.0.sh který po schválení licence nakopíruje soubory anonymd a generator do urˇcené složky. 6
3.3
Spustitelné soubory
Následuje seznam spustitelných soubor˚u vygenerovaných postupem popsaným v sekci "Popis instalace" 3.1. anonymd Jedná se o vlastní binární soubor aplikace. Popis jeho spuštˇení a parametr˚u je umístˇen v sekci Uživatelské rozhraní 4. generator Tato utilita slouží ke generování certifikát˚u (viz. následující sekce), které jsou povinným parametrem pˇri spuštˇení aplikace. Popis funkcí této utility je umístˇen v sekci "Popis utility generator" 4.3.
3.4 3.4.1
Popis práce s certifikáty Seznam vygenerovaných souboru˚
anonym.crt - veˇrejný certifikát brány, který je pro každou bránu unikátní; je používán k šifrování veškerých akceptovaných spoj˚u; jedná se o tzv. self-signed certifikát anonym.key - soukromý klíˇc k hlavnímu certifikátu brány; není pochopitelnˇe veˇrejný authority.crt - veˇrejný certifikát autority; slouží k definici certifikaˇcních politik (viz. 5.6) a k ovˇeˇrování podpis˚u cizích certifikát˚u; generuje se pˇri vytváˇrení první brány dané autority; dalším vytváˇreným branám dané autority je poté nutné jej pˇredat, aby jej mohly použít pˇri generování vlastních certifikát˚u authority.key - soukromý klíˇc autority; generuje se pˇri vytváˇrení první brány dané autority; dalším vytváˇreným branám dané autority je poté nutné jej pˇredat, aby jej mohly použít pˇri generování vlastních certifikát˚u; samotná aplikace jej ke své funkci nepotˇrebuje authority.srl - pomocný soubor potˇrebný pˇri generování každé další brány dané autority; ukládají se do nˇej sériová cˇ ísla certifikát˚u podepsaných urˇcitou autoritou; je vygenerován pˇri vytváˇrení první brány dané autority a dalším branám je pak nutné jej pˇredat, aby jej mohly použít pˇri generování vlastních certifikát˚u; samotná aplikace jej ke své funkci nepotˇrebuje signed.crt - signatura (certifikát brány podepsaný certifikátem urˇcité autority); pˇridává pˇríznaky každé cizí bránˇe, která má alespoˇn jednu tuto signaturu podepsanou klíˇcem autority, které byl takový pˇríznak v certifikaˇcní politice pˇriˇrazen; seznam signatur je veˇrejný
7
client.crt - klientský certifikát; není veˇrejný; jedná se o nadstavbu základní funkcionality aplikace; ta jej ke své funkci nepotˇrebuje; brána jej m˚uže použít ke zvýšení své anonymity nebo získání možností, které nemá žádná z jejích signatur client.key - klientský soukromý klíˇc; není veˇrejný; jedná se o nadstavbu základní funkcionality aplikace; ta jej ke své funkci nepotˇrebuje
3.4.2
Práce s certifikáty
Certifikáty umožˇnují anonymizaˇcní sítˇe efektivnˇe rozdˇelovat do menších celk˚u a vymezovat jejich chování v˚ucˇ i sobˇe navzájem. K vytvoˇrení jedné samostatné jednotky (autority) slouží certifikát autority. Tento certifikát musí být poskytnut každé bránˇe z dané autority pˇri jejím spuštˇení. V parametrech pˇri spuštˇení brány lze pak stanovit její "vztah" v˚ucˇ i dané autoritˇe (zdali povoluje pˇrepojování spoj˚u apod., viz. 5.6). Aplikace je schopna pracovat s více autoritami a pˇriˇrazovat tˇemto autoritám r˚uzné množiny pˇríznak˚u. Tato možnost je zvláštˇe aktuální v pˇrípadˇe spojování dvou nebo více sítí spravovaných r˚uznými administrátory. Pochopitelná je v tomto pˇrípadˇe snaha správce sítˇe pˇriˇradit cizím klient˚um nižší práva než klient˚um vlastním (napˇríklad "Klientskou" politiku pˇriˇradí všem, ale "Výstupní" politiku jen vlastním branám). "Administraˇcní" politika bude obvykle pˇríˇrazena pouze autoritˇe, kterou používá administrátorova instance. Kromˇe explicitnˇe zadaných autorit existuje na každé bránˇe automaticky výchozí autorita "DEFAULT", ohlednˇe níž platí abstrakce, že podepisuje každý certifikát. Pˇridˇelováním jednotlivých oprávnˇení této autoritˇe se umožní používání dané brány i naprosto neautorizované veˇrejnosti. Stejnˇe jako více autorit m˚uže mít brána i více signatur. Všechny signatury musí mít ovšem stejný veˇrejný klíˇc jako její hlavní certifikát. Podle principu Web of trust se její oprávnˇení získaná podle jednotlivých signatur sˇcítají - k získání urˇcitého oprávnˇení tedy zdrojové bránˇe staˇcí, aby cílová brána pˇriˇradila dané oprávnˇení alespoˇn jedné z autorit, které podepsaly veˇrejný klíˇc zdrojové brány. Kromˇe signatur lze bránˇe pˇriˇradit volitelnˇe i klientské certifikáty, které mají podobný význam jako signatury, ale nemusí mít stejný veˇrejný klíˇc jako hlavní certifikát aplikace a nejsou veˇrejné.
8
Chapter 4 Uživatelské rozhraní 4.1
Popis rozhraní
Aplikace funguje v konzolovém režimu. Program pˇri spuštˇení obdrží všechny potˇrebné a popˇr. nˇekteré volitelné parametry a za bˇehu již nevyžaduje zadání dalších. V pˇrípadˇe, že je aktivován kontrolní pˇrístup, lze i za bˇehu aplikace provádˇet další nastavení a získávat dodateˇcné informace o síti 4.4. Pr˚ubˇežný stav aplikace je vypisován taktéž do konzole.
4.2
Popis parametru˚ programu
Následuje základní orientaˇcní popis d˚uležitých parametr˚u aplikace. Pro podrobnˇejší informace o dalších zp˚usobech zadání parametr˚u apod. je doporuˇceno prostudování nápovˇedy aplikace pˇrístupné konzolovým voláním (viz. níže).
Volání programu anonymd [OPTIONS]...
9
Parametry -h, –help vypíše na konzoli nápovˇedu programu -V, –version vypíše aktuální verzi programu
Možnosti nastavení certifikátu˚ a klíˇcu˚ signatur -c, –cert-file=filename zadání hlavního certifikátu brány ve formátu ASN1 (výchozím hodnotou je ’anonym.crt’) -k, –key-file=filename zadání soukromého klíˇce k hlavnímu certifikátu brány ve formátu ASN1 (výchozí hodnotou je ’anonym.key’) -s, –signature=filename možnost nastavení signatury pro bránu; m˚uže být použito opakovanˇe k pˇridání více signatur
Možnosti zmˇeny výchozích cˇ ísel portu˚ a adres –IPv4Only aplikace bude používat pouze adresy protokolu IPv4 –IPv4Pref aplikace bude upˇrednostˇnovat adresy protokolu IPv4 –IPv6Only aplikace bude používat pouze adresy protokolu IPv6 –IPv6Pref aplikace bude upˇrednostˇnovat adresy protokolu IPv6 –first-neighbour-ipv4=ipaddress nastaví adresu, která bude použita ke kontaktu existující anonymizacˇ ní sítˇe, na zadanou hodnotu protokolu IPv4 –first-neighbour-ipv6=ipaddress nastaví adresu, která bude použita ke kontaktu existující anonymizacˇ ní sítˇe, na zadanou hodnotu protokolu IPv4 –first-neighbour-signature=filename specifikuje certifikát, který má být použit jako první signatura pˇri pˇripojování na první bránu sítˇe. -p, –auth-port=portnumber specifikace lokálního portu, který má být použit pro pˇrijímání autorizovaných spojení -f, –flow-port=portnumber specifikace lokálního portu, který má být použit pro pˇrijímání spojení pro mˇeˇrení pr˚utoku mezi bránami -l, –latency-port=portnumber specifikace lokálního portu, který má být použit pro pˇrijímání spojení pro mˇeˇrení latence mezi bránami
10
Synchronizaˇcní možnosti –sync-hello=timesec zadání periody pro mˇeˇrení mezi bránami –sync-dead=timesec zadání cˇ asového limitu pro zachování záznamu o nedosažitelných branách –sync-update=timesec zadání cˇ asového limitu pro synchronizaci mezi bránami –sync-rand=timesec zadání maximální velikosti intervalu pro synchronizaci –sync-min-delay=timesec zadání minimálního cˇ asového limitu pro synchronizaci mez bránami –sync-max-delay=timesec zadání maximálního cˇ asového limitu pro synchronizaci mez bránami –sync-default-delay=timesec zadání výchozí hodnoty cˇ asového limitu pro synchronizaci –sync-count=timesec zadání maximálního poˇctu ukládaných namˇeˇrených hodnot metrik
Možnosti certifikaˇcních politik –policy POLICY_FLAGS:authority_filename zadání politik pro urˇcitou autoritu, m˚uže být použito opakovanˇe pro více autorit –default-policy POLICY_FLAGS zadání politik pro výchozí autoritu - tj. pro veˇrejnost [POLICY_FLAGS]:certificate definice certifikaˇcní politiky vzhledem k zadané autoritˇe (reprezentované certifikátem)
Pˇríznaky specifikující zadanou politiku vuˇ ˚ ci dané autoritˇe ’a’ certifikaˇcní politika "Aktivnˇe akceptovaný" ’p’ certifikaˇcní politika "Pasivnˇe akceptovaný" ’n’ certifikaˇcní politika "Sousední" ’c’ certifikaˇcní politika "Klientský" ’o’ certifikaˇcní politika "Výstupní" Více informací o certifikaˇcních politikách obsahuje sekce "Nastavení certifikaˇcních politik" 5.6.
11
Možnosti kontrolního rozhraní –control-port=port specifikace portu pro pˇrístup k bránˇe pˇres kontrolní rozhraní –password-file=file zadání cesty k souboru hesel, který bude použit pro autentizaci uživatel˚u a zjištˇení jejich režimu použití kontrolního rozhraní; tato možnost pochopitelnˇe postrádá význam v pˇrípadˇe, že nebyl použit pˇredchozí parametr specifikující port pro pˇrístup ke kontrolnímu rozhraní
4.3
Popis utility "generator"
Utilita "generator" slouží ke zjednodušení vytváˇrení certifikát˚u a signatur bran a autorit. Její použití je velmi jednoduché. Podrobnˇejší informace o certifikátech touto utilitou vytvoˇrených lze nalézt v sekci "Popis práce s certifikáty" 3.4. Utilita má pouze dva d˚uležité parametry. Jeden je použit v pˇrípadˇe generování první brány dané autority a druhý je pak použit pˇri generování dalších bran dané autority, pˇriˇcemž jsou použity nˇekteré soubory vygenerované prvním postupem (viz. níže).
Použití utility Generování certifikát˚u první brány nové autority ./generator basic-gateway Do aktuálního umístˇení vygeneruje všechny soubory popsané v sekci "Seznam vygenerovaných soubor˚u" 3.4.1. Za zmínku stojí soubory authority.*, které obsahují certifikát a klíˇc novˇe vytvoˇrené autority. Tyto soubory jsou potˇreba pˇri generování dalších bran dané autority. Generování certifikát˚u brány pro existující autoritu ./generator basic-regen Do aktuálního umístˇení vygeneruje soubory popsané v sekci "Seznam vygenerovaných soubor˚u" 3.4.1 s výjimkou tˇech souvisejících s autoritou. Soubory tvaru authority.* naopak potˇrebuje pˇri tomto volání mít k dispozici v aktuálním umístˇení utility. Na jejich základˇe napˇr. podepíše certifikát nové brány apod.
4.4
Popis kontrolního rozhraní
Pokud bylo pomocí parametru aktivováno kontrolní rozhraní 4.2 lze aplikaci mˇenit nˇekterá výchozí nastavení a lze také získávat dodateˇcné informace o branách a metrikách sítˇe. Pˇrístup do tohoto rozhraní je možný na portu zadaném v parametru pˇri startu aplikace. Po napojení na zadaný port (napˇr. protokolem telnet) lze aplikaci zadávat pˇríkazy ukonˇcené klávesou <Enter>.
12
Existují dva režimy ovládání brány skrz kontrolní rozhraní - administrátorský a uživatelský. Uživatelský pˇrístup má oproti administrátorskému omezenˇejší pravomoci a s tím spojenou redukovanou množinu pˇríkaz˚u. Pokud byl pˇri startu brány použit pouze parametr specifikující cˇ íslo portu pro kontrolní rozhraní, pˇristupuje se k dané bránˇe v "uživatelském" režimu. V tomto pˇrípadˇe brána nijak nefiltruje uživatele, kteˇrí takto ke kontrolnímu rozhraní pˇristoupí. Pokud ale byl pˇri startu brány specifikován i soubor obsahující definici uživatel a jejich hesel (dále jen soubor hesel), pˇrístup k bránˇe je omezen pouze na uživatele uvedené v tomto souboru. Tito uživatelé mohou po zadání odpovídajícího hesla pˇristoupit k bránˇe v režimu, který je specifikován u jejich uživatelského jména v souboru hesel (spolu s jejich heslem). Hodnota režimu "0" znamená režim uživatelský, "1" pak režim administrátorský. Jako soubor hesel je v souˇcasné verzi oˇcekáván soubor prostého textu (plaintext) obsahující ˇrádky typu "jmeno_uzivatele rezim heslo". Jméno uživatele i heslo je v souˇcasné verzi oˇcekáváno pouze jako ˇretˇezec písmen a cˇ ísel bez speciálních znak˚u. Režim pak m˚uže nabývat již výše zmínˇených hodnot 0 a 1. Soubor m˚uže kupˇríkladu vypadat takto: uzivatel1 0 heslouzivatele1 administrator 1 hesloadministratora
Pˇríkazy pˇrístupné v uživatelském režimu pˇrístupu na danou bránu ? Zobrazí výˇcet všech dostupných pˇríkaz˚u. V souˇcasné dobˇe není implementován kompletní výˇcet takto zobrazitelných pˇríkaz˚u, následují nejd˚uležitˇejší funkˇcní pˇríkazy. GET gateways vypíše informace o všech branách vˇcetnˇe sebe samé (pˇríznak "ME" na prvním ˇrádku popisu brány), s kterými je souˇcasná brána synchronizovaná; nejd˚uležitˇejší položkou u každé brány je její otisk (ˇretˇezec následující za klíˇcovým slovem "FINGERPRINT" v prvním ˇrádku popisu brány), který lze použít jako definici koncové brány cesty sítí nebo pˇri konkrétní definici celé cesty. GET metrics vypíše seznam metrik namˇerˇených mezi bránami; pˇríkaz má význam hlavnˇe v pˇrípadˇe manuálního plánování cesty v síti CLOSE uzavˇre kontrolní spojení s danou bránou; tímto nedojde k ukonˇcení této brány, pouze se ukonˇcí kontrolní spojení PLUGIN NAMES vypíše seznam všech plugin˚u dostupných na dané bránˇe PLUGIN START plugin_name nastartuje plugin s nazvem "plugin_name", pokud již na dané bránˇe nebˇeží; názvy pluginu lze získat pˇredchozím pˇríkazem PLUGIN STOP plugin_name zastaví cˇ innost pluginu s nazvem "plugin_name", pokud na dané bránˇe tento plugin již bˇeží; názvy plugin˚u lze získat výše zmínˇeným pˇríkazem
13
Následující pˇríkazy jsou pˇrístupné pouze administrátorum ˚ dané brány CONNECT fingerprint1 fingerprint2 ... vynutí na dané bránˇe používání zadané cesty (posloupnosti bran se zadanými otisky) - za pˇredpokladu, že se jedná o legitimní cestu a jednotlivé po sobˇe jdoucí brány spolu sousedí CONNECT DISABLE zakáže použití dˇríve vynucené cesty a navrátí plánování cesty plnˇe pod kontrolu dané brány DESTINATION fingerprint vynutí použití cesty konˇcící zadanou výstupní branou - relevantní za pˇredpokladu, že brána se zadaným otiskem je výstupní a má výstupní plugin odpovídající použitému klientskému pluginu na stávající bránˇe DESTINATION DISABLE zakáže použití dˇríve vynucené výstupní brány a ponechá výbˇer cesty opˇet na stávající bránˇe SHUTDOWN ukonˇcí cˇ innost spravované brány
14
Chapter 5 Funkce aplikace 5.1
Šifrování komunikace
K šifrování veškeré komunikace v anonymizaˇcní síti se používá RSA implementované knihovnou OpenSSL. Tyto spoje se navazují pomocí Diffie-Hellman handshake.
5.2
Náležitosti použití pluginu˚
HTTP/HTTPS - použití pluginu vyžaduje od anonymizovaného programu (napˇr. webového prohlížeˇce) pˇresmˇerování komunikace na port 8080, na kterém plugin naslouchá a komunikuje s programem SOCKS - použití pluginu vyžaduje pˇresmˇerování komunikace na port 9050, na kterém plugin naslouchá a komunikuje s programem TAP - použití pluginu neklade žádné nároky na anonymizované programy, ale operaˇcní systém klienta musí být schopen vytváˇret virtuální sít’ová rozhraní TUN/TAP
5.3
Nastavení délky cesty anonymizaˇcní sítí
Aplikace umožˇnuje zadání minimální a maximální délky cesty anonymizaˇcní sítí. V pˇrípadˇe potˇreby pˇresnˇe dané délky cesty lze zadat v obou pˇrípadech stejnou hodnotu, je však nutné brát v potaz fakt, že se snižujícím se rozsahem intervalu délky cesty (a se zvyšující se délkou zadávané cesty) se zvyšuje nároˇcnost jejího nalezení. V rozsahem vˇetší síti to m˚uže znamenat, že žádná cesta nebude nalezena. Hledání cesty sítí je totiž z d˚uvodu uživatelské pˇrívˇetivosti omezeno i cˇ asovˇe (delší dobu nereagující aplikace není d˚uvˇeryhodná), a tak pokud se jedná o hustˇeji propojenou sít’ vˇetšího množství bran, nemusí v cˇ asovém limitu být nalezena ani existující cesta daných vlastností. 15
Stejnˇe tak je potˇreba vzít v potaz množství výstupních bran v síti. Pokud je jejich poˇcet velice nízký a sít’ spíše hustˇejší, m˚uže výpoˇcet opˇet skonˇcit vyˇcerpáním cˇ asového limitu. Doporuˇcením je v tomto pˇrípadˇe dobré uvážení všech tˇechto hledisek pˇred manuálním zadáním omezení na délku cesty. Nejedná se zde ovšem o snahu odradit od experimentování s hodnotami mezí. Naopak jej lze doporuˇcit, uživatel však musí poˇcítat s možností neúspˇechu.
5.4
Nastavení maximální latence a minimálního prutoku ˚ cesty
Toto nastavení je vhodné v pˇrípadˇe, že je uživatel nˇejakým zp˚usobem limitován jednou z výše uvedených metrik nebo jednoduše vyžaduje cestu urˇcitých minimálních kvalit. Podobnˇe jako u pˇredchozího nastavení m˚uže být zvolení nevhodných hodnot pro hledání cesty velice limitující. Dané nastavení je proto doporuˇceno pˇrednostnˇe uživatel˚um, kteˇrí mají urˇcitou úroveˇn znalosti sítˇe, v níž je plánována cesta. Tyto informace se dají získat napˇríklad pomocí kontrolního rozhraní 5.8.
5.5
Ruˇcní nastavení portu˚ pro komunikaci s anonymizaˇcní sítí
Aplikace umožˇnuje ruˇcní nastavení port˚u pro komunikaci se sítí. Jednotlivé porty se zadávají jako parametry programu pˇri jeho spuštˇení (viz. 4.2). Jedná se o port pro autorizovaná spojení, port pro mˇeˇrení latence a port pro mˇeˇrení pr˚utoku sítˇe. Aplikace dokonce dovoluje zadání stejného portu pro všechny tyto pˇrípady. V pˇrípadˇe, že cˇ ísla port˚u nebyla zadána ruˇcnˇe, si aplikace vybere vhodné porty sama a informaci o tomto výbˇeru pˇredá ostatním branám pˇri první synchronizaci. Z pochopitelných d˚uvod˚u je potˇreba minimálnˇe v pˇrípadˇe první brány zadat port pro autorizovaná spojení (ten je použit mimo jiné k synchronizacím), a následnˇe vytváˇreným branám musí být pˇri pˇripojení na danou bránu tento port pˇredán, aby mˇely informace o tom, na kterém portu se dozvˇedí o cˇ íslech ostatních port˚u a oznámí svá vlastní.
5.6
Nastavení certifikaˇcních politik
Následující politiky se vztahují k autoritám, u kterých jsou uvedeny. AA "Aktivnˇe akceptovaný" - povoluje synchronizaci s bránami z dané autority PA "Pasivnˇe akceptovaný" - povoluje branám z dané autority šíˇrit synchronizaˇcní informace o stávající bránˇe AN "Sousední" - prohlašuje brány z dané autority za potenciální sousedy a tím povoluje mˇeˇrit s nimi metriky CL "Klientský" - povoluje branám z dané autority navazovat pˇres stávající bránu spoje 16
OG "Výstupní" - povoluje branám z dané autority vystupovat na stávající bránˇe ven z anonymizacˇ ní sítˇe; stávající brána musí mít alespoˇn jeden výstupní plugin, aby mˇela tato politika smysl AC "Sledovací" - povoluje branám z dané autority view-only pˇrístup do administraˇcního rozhraní dané brány AM "Administraˇcní" - povoluje branám z dané autority plnou administraci dané brány
5.7
Nastavení parametru˚ cesty sítí pomocí kontrolního rozhraní
Parametry cesty se dají nastavovat pomocí kontrolního rozhraní a to konkrétnˇe pomocí pˇríkaz˚u CONNECT a DESTINATION. Pomocí CONNECT lze specifikovat cestu tzv. bránu po bránˇe. DESTINATION pak nastavuje výchozí bránu dle zadání uživatele. Podrobnˇejší informace obsahuje sekce "Popis kontrolního rozhraní" 4.4.
5.8
Získání informací o síti pomocí kontrolního rozhraní
Informace o síti lze získat pomocí kontrolního rozhraní a konkrétnˇe pomocí pˇríkazu GET. Lze tímto zp˚usobem získat hodnoty metrik namˇeˇrených mezi bránami a také specifické informace o branách v síti. Podrobnˇejší informace obsahuje sekce "Popis kontrolního rozhraní" 4.4.
5.9
Správa pluginu˚ pomocí kontrolního rozhraní
Pomocí kontrolního rozhraní lze spravovat pluginy dané brány. Je možno pluginy zapínat, vypínat nebo si nechat vylistovat všechny pluginy dostupné na dané bránˇe. Výše uvedené se provádí pomocí pˇríkazu PLUGIN. Podrobnˇejší informace obsahuje sekce "Popis kontrolního rozhraní" 4.4.
17
Chapter 6 Použití programu 6.1
Spuštˇení první brány dané autority
Nejprve nagenerujeme certifikáty první brány a nové autority ./generator basic-gateway Následnˇe m˚užeme spustit první bránu a popˇr. poskytnout získaný certifikát nové autority dalším branám, které do ní budeme pˇridávat. ./anonymd --policy apnco:authority.crt -s signed.crt -p 2000 Nyní m˚užeme vytváˇret nové brány a pˇripojovat je k první bˇežící bránˇe na port 2000.
6.2
Pˇripojení brány/klienta k anonymizaˇcní síti
Nejprve vygenerujeme certifikáty nové brány. K tomu úˇcelu budeme potˇrebovat certifikát autority, k níž chceme novou bránu pˇripojit. Pˇredpokládáme tedy, že v aktuálním umístˇení se již nachází pˇríslušné soubory authority.crt, authority.key a authority.srl. ./generator basic-regen Následnˇe m˚užeme novou bránu spustit a tím ji pˇripojit k dané autoritˇe ./anonymd --policy apnco:authority.crt -s signed.crt --first-neighbour-ipv4=192.168.1.2:2000 Tímto jsme pˇripojili bránu k dané autoritˇe. Brána kontaktovala první bˇežící bránu na adrese 192.168.1.2 a na portu 2000.
18
6.3
Vzory využití politik
Následující výˇcet kombinací certifikaˇcních politik je snahou o popsání nejˇcastˇejších pˇrípad˚u jejich použití. Typický klient "–policy an:" Potˇrebuje se synchronizovat s ostatními bránami, nechce, aby ostatní brány šíˇrily jeho synchronizaˇcní informace, povoluje mˇeˇrit metriky s ostatními a nechce, aby se pˇres nˇej navazovaly spoje nebo skrz nˇej vystupovaly cesty ze sítˇe. Typická pˇreposílací brána "–policy apnc:" Potˇrebuje se synchronizovat s ostatními bránami, povoluje ostatním branám šíˇrit její synchronizaˇcní informace, povoluje mˇeˇrit metriky s ostatními, povoluje pˇres ní navazovat spoje, ale nepovoluje skrz ní vystupovat ven ze sítˇe. Typická výstupní brána "–policy apno:" Potˇrebuje se synchronizovat s ostatními bránami, povoluje ostatním branám šíˇrit její synchronizaˇcní informace, povoluje mˇeˇrit metriky s ostatními, ovšem nepovoluje pˇres ní navazovat spoje, ale pochopitelnˇe povoluje skrz ní vystupovat ven ze sítˇe. Typická univerzální brána "–policy apnco:" Potˇrebuje se synchronizovat s ostatními bránami, povoluje ostatním branám šíˇrit její synchronizaˇcní informace, povoluje mˇeˇrit metriky s ostatními, povoluje pˇres ní navazovat spoje a povoluje také skrz ní vystupovat ven ze sítˇe.
19