• No results found

Tor och webbplatsorakel: Konstruktion och utvärdering av webbplatsorakel från DNS-tidtagning i Tor-nätverket.

N/A
N/A
Protected

Academic year: 2021

Share "Tor och webbplatsorakel: Konstruktion och utvärdering av webbplatsorakel från DNS-tidtagning i Tor-nätverket."

Copied!
76
0
0

Loading.... (view fulltext now)

Full text

(1)

Tor och webbplatsorakel

Konstruktion och utvärdering av webbplatsorakel från DNS-tidtagning

i Tor-nätverket.

Tor and website oracles

Creation and evaluation of website oracles from timing DNS in the Tor

network.

Oscar Andersson

Fakulteten för hälsa, natur-och teknikvetenskap Datavetenskap

C-uppsats 15hp

Handledare: Katarina Asplund Examinator: Johan Eklund Datum: 2021-01-13

(2)
(3)

Förord

Stort tack till;

• Tobias Pulls, Lektor inom datavetenskap på Karlstads Universitet, för att inte endast vara en bra föreläsare som ser och hör varje student i rummet utan också för att han har ett genuint intresse för datasäkerhet som lätt smittar av sig.

• Katarina Asplund, Universitetsadjunkt inom datavetenskap på Karlstads Univer-sitet, för att du alltid svarar på frågor efter dina föreläsningar och gör ditt allra yttersta för att dina studenter skall lyckas.

• Rasmus Dahlberg, Doktorand inom datavetenskap på Karlstads Universitet, för en utomordentligt väl genomförd rapport tillsammans med Tobias Pulls, arbete på vilket denna uppsats bygger på.

• Philipp Winter, The Tor Project, Underhållare av Exitmap, för det viktiga arbete du utfört för Tor samt den programvara använd under framtagning av resultat i denna uppsats.

• Mina föräldrar, ypperlig lärare, fackmannamässig industriarbetare och fantastiska förebilder, för att ni stöttat mig dessa år som student.

(4)
(5)

Sammanfattning

Den här uppsatsen diskuterar frågan: är ett webbplatsorakel från DNS-tidtagning i Tor en attack att oroa sig för? Uppsatsen bygger på tidigare forskning utförd av Rasmus Dahlberg och Tobias Pulls i rapporten Website Fingerprinting with Website Oracles. Ett webbplatsorakel är en sidokanalsattack som svarar på predikatet: är denna webbsida besökt av en specifik delmängd användare? Tor är ett anonymitetsnätverk för gemene man, en viktig teknik för ett utvecklande samhälle där den enskilde individens rätt över sin egen information på internet är under konstant hot. I uppsatsen förklaras vad ett webbplatsorakel är i detalj, hur webbplatsorakel fungerar i Tor-nätverket och hur detta konstrueras i detalj. Resultat presenteras och en diskussion förs med anknytning till dagens teknik och samhälle i stort. Resultaten tyder inte på någon större risk för enskilda användare av Tor men visar på en riskfylld utveckling av perceptionen av hur Tor uppfattas och hur dess rykte kan skadas om attacker likt den presenterad i uppsatsen kan vidareutvecklas.

(6)
(7)

Abstract

This paper discsusses the question: is website oracles in Tor from timing DNS somet-hing we have to worry about? This paper builds apon the findings done by Rasmus Dahlberg and Tobias Pulls in thier paper Website Fingerprinting with Website Oracles. A website oracle is a side channel attack that answers the predicate: has this website been visited before? The website oracle is constructed and test are carried out, with great outcome, resulting in that website oracles from timing DNS is not an attack that puts individuals using Tor at risk, but certanly challanges the idea of an anonymity network when such a lot of data can be derived from DNS.

(8)
(9)

Innehåll

Förord i Sammanfattning iii Abstract v Figurer xii 1 Introduktion 1 1.1 Uppdraget . . . 2 1.2 Mål & Syfte . . . 2 1.3 Metod . . . 2

1.4 Etik och Samhälle . . . 3

1.5 Resultat . . . 3

1.6 Disposition av uppsatsen . . . 3

2 Bakgrund 5 2.1 Domain Name System . . . 5

2.1.1 Tidtagning av DNS-cache . . . 6

2.2 Datasäkerhet . . . 6

2.2.1 Konfidentialitet . . . 6

2.2.2 Integritet . . . 7

(10)

2.2.3 Tillgänglighet . . . 7

2.2.4 Anonymitet . . . 7

2.3 Webbplatsorakel . . . 7

2.4 Tor . . . 8

2.4.1 Onion Routing . . . 8

2.4.2 Hur Tor fungerar . . . 8

2.4.2.1 Hur data skickas . . . 9

2.4.2.2 Hur data skyddas . . . 10

2.4.2.3 Slutrelä . . . 11

2.4.2.4 Onion-tjänster . . . 12

2.4.3 Tor som mjukvara i praktiken . . . 12

2.4.3.1 Tor Browser . . . 14

2.4.4 The Tor Project . . . 14

2.4.4.1 Volontärerna som gör Tor möjligt . . . 14

2.5 Statistik . . . 15

2.5.1 Korsvalidering . . . 15

2.5.1.1 K-Fold . . . 16

2.5.2 Sensitivitet och specificitet . . . 16

2.5.3 Receiver Operating Characteristics . . . 18

2.6 Verktyg . . . 18

2.6.1 Python . . . 18

2.6.2 Linux och UNIX . . . 19

2.6.2.1 Bash . . . 19

2.6.2.2 Cron . . . 19

2.6.3 Stem . . . 19

2.6.4 Exitmap . . . 20

(11)

INNEHÅLL ix

3 Design 23

3.1 Tidtagning av DNS i Tor . . . 24

3.2 Webbplatsorakel . . . 25

3.2.1 Konceptet webbplatsorakel från DNS-tidtagning i Tor . . . 25

3.2.1.1 Attackvektor . . . 25

3.2.1.2 Att beräkna tröskelvärdet . . . 26

3.2.2 Sammanfattning och realisering av webbplatsorakel . . . 28

3.3 Nätverkstopologi . . . 28 3.4 Exitmap . . . 28 3.4.1 Framtagning av data . . . 29 3.5 Datastruktur . . . 30 3.6 Aggregering . . . 31 3.7 Analys . . . 32 3.7.1 Beräkning av tröskelvärde . . . 32

3.7.2 Korsvalidering med K-Fold, ROC och olika metoder för trös-kelvärden . . . 33 3.7.2.1 K-Fold . . . 35 3.7.2.2 ROC-Konstant . . . 35 3.7.2.3 Korsvalidering . . . 35 3.7.2.4 Sammanställning av data . . . 36 3.7.3 Sammanfattning av analys . . . 36

3.7.4 Presentation med ROC . . . 37

4 Implementation 39 4.1 Utveckling med Exitmap . . . 40

4.1.1 Tidtagningsmodul . . . 40

4.2 Lagra och hantera data . . . 40

(12)

4.3.1 System . . . 41

4.3.2 Nätverksuppkoppling . . . 41

4.4 Automation av tidtagning . . . 42

4.5 Varierande data . . . 42

4.6 Antaganden . . . 43

4.7 Aggregering och korsvalidering programmatisk . . . 43

4.8 Grafritning . . . 43

5 Resultat 45 5.1 Konfigurationer . . . 46

5.2 Tolkning av resultat . . . 46

5.2.1 Optimal konfiguration . . . 49

5.3 Innebörden av dessa resultat . . . 50

6 Slutsats 53 6.1 Lönsamhet . . . 53

6.2 Försvar . . . 54

6.3 Vidare forskning . . . 55

6.3.1 Förbättringar av detta arbete. . . 55

6.3.2 Attack per slutrelä, riktad mot en specifik klient . . . 56

(13)

Figurer

2.1 Illustration över löken och dess lager med kryptering. . . 10

2.2 Illustration över hur en krets skapas och kopplas upp till en webbser-ver. Denna krets är en så kallad två-hoppskrets då den består av två reläer.[1]. . . 11

2.3 Datamängden delas upp i 4 lika stora delar. 3 av dessa delar används för att träna en algoritm, den resterande används för att testa den tränade algoritmen. . . 16

2.4 En så kallad confusion matrix, denna matris illustrerar de fyra möjliga utfallen då data med kända binära utfall valideras. . . 17

2.5 En illustration av en ROC-kurva. Den röda streckade linjen represen-terar effektiveten av en gissning, punkten märkt Perfect Classification representerar resultatet för en perfekt klassificerare. Illustrationen är skapad av Kai Walz och publicerad på Wikimedia Commons med licens GNU Free Documentation License, Version 1.2 [2]. . . . 21

3.1 Illustration över topologin för uppkopplingen mellan Alice och Bob. Bilden tillhör EFF och är licensierad under Creative Commons [3]. . . 24

3.2 Topologi för uppkoppling med klient, slutrelä och DNS-Server. . . 26

3.3 Den uppkoppling som används för tidtagning, denna designad för mini-mala felmarginaler. . . 29

(14)

3.4 Illustration över hur Exitmap verkar över alla slutreläer som att de vore en lista. . . 30 3.5 Denna illustration visar lägre (i bild Q1) och övre (i bild Q3) kvartil i en

normalfördelad distribution. Illustrationen är skapad av Jhguch från ma-terial givet av Chen-Pan Liao och publicerad på Wikimedia Commons med licens Creative Commons Attribution-Share Alike 2.5 Generic lic [4]. . . 34

5.1 Pulls och Dahlbergs metod för att beräkna töskelvärde är benämnd fas-test non cached, den metod som anses vara bäst är benämnd median non cached. . . . 47 5.2 Pulls och Dahlbergs metod för att beräkna töskelvärde är benämnd

fas-test non cached, de metoder som anses vara bäst är benämnda median non cached och lower quartile non cached. . . . 48 5.3 Detta är ett urval av övre vänstra hörnet i figur 5.1. Två punkter är

markerade i illustrationen, punkt A och punkt B. Notera att färg och form inte identiska med de i figur 5.1, istället identifieras linjerna med text. . . 49

(15)

Kapitel 1

Introduktion

Internet är en stor del av våra liv och integritet på internet blir en allt större samhällsfrå-ga. När anonymitetsverktyg som Tor blir allt mer populära måste vi ställa oss frågan om denna anonymitet är något man kan ta för givet. Tor är ett snabbt och anonymt nätverk och kallas för andra generationens Onion Routing-nätverk, mer om detta senare. Att testa attacker mot Tor-nätverket är gynnsamt för utvecklarna som underhåller detta och för dess användare. I denna uppsats utvärderas gynnsamheten av webbplatsorakel på Tor-nätverket från en attackerares synpunkt. Ett webbplatsorakel är en allvetande ideal maskin som kan svara sanningsenlig på predikatet: Har en eller flera användare besökt denna specifika webbplats? Detta för en godtycklig mängd användare då webbplatsorak-let körs i Tor-nätverket. Då ett system i en dator aldrig kan vara idealt eller allvetande, kommer webbplatsoraklet aldrig uppnå sin teoretiska potential. Trots detta kan hög precision uppnås i webbplatsorakel då goda källor används. Detta webbplatsorakel kon-strueras av källor som härleds från hur domännamn hanteras i Tor. Uppsatsen presente-rar ett webbplatsorakel vars resultat analyseras och jämförs med vad Rasmus Dahlberg och Tobias Pulls presenterar i kapitel 4.1.2 av sin rapport om webbplatsorakel[5]. Tobias Pulls, lektor inom datavetenskap på Karlstads universitet har gett mig det här uppdraget att analysera och förhoppningsvis förbättra, de resultat som presenteras i föregående

(16)

rapport.

1.1

Uppdraget

Uppdraget är att skapa ett webbplatsorakel mot Tor-nätverket genom att analysera tid-tagning av DNS-förfrågningar. Resultaten givna av detta webbplatsorakel ska jämföras med de ur kapitel 4.1.2 i rapporten skriven av Pulls och Dahlberg [5]. Denna rapport kompletterar deras resultat och söker även efter nya tillvägagångsätt för att förbättra resultaten.

1.2

Mål & Syfte

Målet med denna rapport är att stärka Tor genom att granska effektiveten av webbplatso-rakel inom anonymitetsnätverket Tor samt att effektivisera och analysera det webb-platsorakel som producerats av Pulls och Dahlberg.

1.3

Metod

Webbplatsoraklet konstrueras utifrån traditionell kännedom kring webbplatsorakel ba-serade på DNS-förfrågningar. DNS-förfrågningarna implementeras med verktyget Ex-itmap och torsocks för att operera över Tor, mer om hur dessa verktyg fungerar i kapitel 2. Insamling av data och analys av denna data utförs med hög precision och skräddarsys till hur Tor fungerar. Utifrån utvärdering av resultaten i denna rapport framgår potentiell skadeverkan mot Tor och i vilken mån, om någon, resultaten presenterade av Pulls och Dahlberg kan förbättras. Utvärdering av resultat presenteras ingående i kapitel 5.

(17)

1.4. ETIK OCH SAMHÄLLE 3

1.4

Etik och Samhälle

Insamling och analys av data presenterade i denna rapport utförs enligt Karlstads univer-sitets förhållning till etik och moral samt de riktlinjer som rekommenderas av The Tor-projekt, den ideella organisation vars jobb är att underhålla Tor. Alla mätningar av DNS-förfrågningar görs med domännamn som jag kontrollerar eller har specifik godkännande av dess ägare att använda. Vid varje mätning gör jag min personliga e-postadress tydligt synlig för de administratörer som administrerar Tor. Vid eventuella klagomål är jag villig att exkludera en nod i Tor från min datainsamling eller förändra datainsamlingens struktur. Vid design av datainsamlingsmetoden är frågor om överbelastning av Tor-nätverket en betydande del. Funktionalitet redan tillgänglig i använda Exitmap används för att minimera belastningen på Tor, mer om Exitmap i kapitel 2. Kontinuerliga samtal med uppdragsgivare Tobias Pulls hålls angående frågor om etik och moral då han har kompetens kring forskning med Tor.

1.5

Resultat

De resultat som presenteras i denna uppsats tyder inte på en allvarlig risk för en enskild individs anonymitet, men motsätter Tor som koncept, utmanar dess psykologiska accep-tans, och i sin utsträckning kan möjligtvis sätta dess rykte i spel. Denna uppsats öppnar upp för vidare forskning då dess resultat enligt författaren är förvånande, rekommenda-tion för vidare forskning i detta område ges efter diskussionen av dessa resultat.

1.6

Disposition av uppsatsen

I denna uppsats är kapitel uppdelade enligt följande;

(18)

• Design, beskriver hur de tekniker beskrivna i bakgrund tillämpas av författaren för att besvara frågeställningen ställd i denna uppsats. I detta kapitel konstrueras den teoretiska design som krävs för att sedan implementera lösningen som besvarar frågeställningen.

• Implementation, design implementeras. Praktiska förhinder tas upp.

• Resultat, resultat presenteras, detta genererat av den design implementerad i före-gående kapitel. Resultat tolkas och sammanfattas.

• Slutsats, resultatens betydelse sätts i ett holistiskt perspektiv. Reflektioner kring påverkan på samhälle samt synpunkter på vidare forskning presenteras.

(19)

Kapitel 2

Bakgrund

I detta kapitel ges de förkunskaper som behövs för att läsa denna uppsats. De ämnen som tas upp är DNS, Datasäkerhet, Tor samt de kodbaser och verktyg som används i implementationen.

2.1

Domain Name System

Domain Name System, hädanefter DNS, är ett system för att namnge och förenkla adres-sering av enheter på nätverk. DNS är hierarkiskt och decentraliserat, vilket betyder att det i praktiken består av flera DNS-servrar (en dator som hanterar DNS-förfrågningar) som litar på varandra i en hierarkisk struktur. Ett domännamn (exempelvis www.kau.se) är ett alias för serverns IP-adress (exempelvis 193.10.220.34). DNS fungerar som en översättare mellan ett språk som användare förstår och ett språk som datorer förstår. Då en användare eller en annan DNS-server skickar en förfrågan angående ett domännamn till en DNS-server slår den mottagande servern upp detta i sitt register som är sparat lokalt i cache-minnet. Finns inte domännamnet lokalt frågar servern i sin tur en annan DNS-server som denne litar på. Man kan se serien av uppslag som rekursiva uppslag i en hierarkisk struktur. Ett domänuppslag mot en DNS-server sparas i cache när detta

(20)

hämtas till klienten, vilket görs för att snabba upp hastigheten nästa gång denna för-frågan görs. En DNS-cache på servern är inte oändlig och om den fylls tas de äldsta uppslaget bort för att ge utrymme åt nya uppslag [6].

2.1.1

Tidtagning av DNS-cache

Då en förfrågan skickas till en DNS-server skickas ett svar tillbaka direkt utan vidare uppslag om domänuppslaget existerar i DNS-serverns cache, om inte skickas ännu en DNS-förfrågan till ytterligare en DNS-server och så vidare. Detta kan övervakas av tredje part med tidtagning av DNS-förfrågningar. Då en tredje part mottar ett svar med en svarstid under ett visst tröskelvärde kan denna klient anta att en klient innan denna har besökt samma domän [7]. Detta illustreras och beskrivs mer i detalj i kapitel 4.

2.2

Datasäkerhet

Enligt Nweke är Datasäkerhet ett stort område som i synnerhet fokuserar på att upprätt-hålla konfidentialitet, integritet och tillgänglighet i datorsystem som lagrar information [8]. De tre ovannämna termerna beskrivs i CIA-triaden som tre huvudsakliga mål att sträva efter inom datasäkerhet; Confidentiality (konfidentialitet), Integrity (integritet) och Avaliability (tillgänglighet). Om dessa tre mål är uppfyllda är god säkerhet upp-nådd. Nedan beskrivs dessa mål i mer detalj. Termen anonymitet används flitigt inom datasäkerhet men är vanligtvis missförstådd, denna term förklaras även nedan.

2.2.1

Konfidentialitet

Konfidentialitet berör huruvida information får visas eller ej av specifika användare. Skickar A ett meddelande till B skall inte C få se detta meddelande. Information skall endast vara synlig för den användare denna information är avsedd för.

(21)

2.3. WEBBPLATSORAKEL 7

2.2.2

Integritet

Integritet säkerställer att information inte kan modifieras av någon annan än avsändare och mottagare.

2.2.3

Tillgänglighet

En tjänst skall vara tillgänglig. En fiende till denna tjänst skall inte kunna stänga ner tjänsten för dess användare. Om en tjänst stängs ned kan information inte visas eller hanteras, vilket skapar problem för dess användare [8].

2.2.4

Anonymitet

Då relationen mellan två användare är gömd erhålls anonymitet. I korthet behandlar anonymitet relationen mellan två subjekt, inte vetskapen angående dess existens. [5]

2.3

Webbplatsorakel

Ett orakel kan i korthet förklaras som en allsmäktig ideal maskin som ger rätt svar på en given fråga [9]. Ett webbplatsorakel är ett idealt program som ger en attackerare svar på om en specifik webbplats är besökt. Notera skillnaden mellan webbplats och webbsida, en webbplats i denna uppsats innefattar alla webbsidor under samma domännamn. Det webbplatsorakel som presenteras i denna uppsats och bland annat vad som presenteras i Pulls och Dahlbergs uppsats bygger på tidtagning av DNS. Genom att utföra tester i en kontrollerad miljö kan tröskelvärden för tidtagning av DNS uppskattas och med dessa tröskelvärden kan ett webbplatsorakel konstrueras [5]. Hur webbplatsorakel implemen-teras presenimplemen-teras mer ingående i kaptel 4.

(22)

2.4

Tor

Tor är ett snabbt och anonymt nätverk designat för att anonymisera TCP-applikationer och kallas för andra generationens Onion Routing-nätverk (mer om detta i kapitel 2.4.5), då det lägger till funktionalitet ovanpå de traditionella onion routing-nätverket. Tor är också ett nätverk som opererar ovanpå ett existerande nätverk (ett så kallat overlay network). Tor i praktiken ger en relativt bra balans mellan anonymitet och användar-vänlighet, och verkar direkt ovanpå internet där ingen ytterligare konfiguration krävs av användaren. [1] I detta kapitel beskrivs Onion Routing som är grundteorin ovanpå vilket Tor är konstruerat, hur Tor fungerar i detalj och slutligen hur Tor som mjukvara brukas, utvecklas, organiseras och används rent praktiskt.

2.4.1

Onion Routing

Enligt Paul Syverson är Onion Routing en generell infrastruktur för att transportera information för privat kommunikation över publika nätverk. Onion routing-nätverk ger tvåvägskommunikation i realtid över säkra uppkopplingar. Ett Onion Routing-nätverk byggs upp av flera enheter som kallas för en mix. En mix tar emot data, processar datan och skickar denna vidare. Flera av dessa mixar skapar ett distribuerat feltolerant nätverk där en ensam enhet inte kan ta ner nätverket eller röja en användares integritet. Onion routing kan användas som en proxy av protokoll som stödjer detta och även av protokoll som inte gör det [10]. Numera kallas en mix vanligtvis för relä, router eller det generella namnet nod. Terminologin beskrivs mer i kapitel 2.4.3.

2.4.2

Hur Tor fungerar

En mix som presenteras i konceptet Onion Routing implementeras i Tor och kallas då för nod. Tor i sin enkelhet består av två typer av noder, noder som är klienter och noder som är reläer. Klienter (noder som är klienter) skapar kretsar mellan varandra och dessa

(23)

2.4. TOR 9 kretsar skapas över reläer (noder som är reläer). En krets är en virtuell uppkoppling skapat ovanpå internet (overlay network) med hjälp av reläer. I en krets kan en eller flera TCP-strömmar skapas mellan klienterna. Ur klientens synpunkt existerar inte kretsen eller reläerna som tillhandhåller denna. Egentligen skickas klienternas data mellan flera reläer (vanligtvis 3 stycken) innan den når slutet av den virtuella kretsen, mer om detta i kapitel 2.4.3.1. [1]

2.4.2.1 Hur data skickas

Då en klient initierar en krets skapas en så kallad lök (engelska onion, från teorin kring Onion Routing), vilket definierar en väg genom nätverket av reläer. En lök är en rekursiv datastruktur som innehåller krypterad data och information kring uppkopplingen för det relä den ska skickas till härnäst. Man kan tänka att en lök är en fildeskriptor eller en nätverks-socket där data du skickar till din onion hamnar hos den klient som kretsen är kopplad till. Till vilken klient kretsen leder till vet bara det relä som kan läsa det innersta lagret av data i den rekursiva strukturen. Varje relä som mottager en lök dekrypterar ett lager av information och skickar vidare det som återstår. För ett godtycklig relä på Tor-nätverket vet detta inte vart i processen av dekryptering av löken i helhet detta är. Varje relä innehar en uppsättning privata och publika nycklar. Då en klient skall skicka en lök använder den dessa publika nycklar för att kryptera hela löken ett flertal gånger (vanligtvis 3 gånger) med olika nycklar. Ett godtyckligt lager av kryptering kan endast dekrypteras av det relä som lagret är avsett för. Det är därför nödvändigt att skicka vidare löken till det relä som det yttersta lagret är avsett för [10] [11]. Se Figur 2.1 för en lök där data är krypterat bakom 3 lager kryptering. Figur 2.2 illustrerar en initiering av en lök bestående av två lager.

(24)

Figur 2.1: Illustration över löken och dess lager med kryptering.

2.4.2.2 Hur data skyddas

Reläer och klienter kommunicerar med varandra genom att använda TLS-uppkopplingar med kortvariga nycklar. Nycklar återanvänds sällan vilket ger god säkerhet om en nyckel röjs i framtiden (så kallad forward secrecy) [1]. Uppkopplingen mellan klienterna är säker i den aspekt att konfidentialitet och integritet av data upprätthålls [12]. Datatrafik paketeras i så kallade celler som transporteras i kretsar. En cell har en fast storlek på 512 bytes, för kontinuitet och för att inte öppna en sidokanalsattack (på engelska side channel attack) där en tredje part kan få vetskap om uppkopplingen genom att studera storleken på cellerna. En cell innehåller förutom dess data även en checksumma för integritetskontroll och en identifierare för den TCP-ström i kretsen cellen är avsedd för.[1]

(25)

2.4. TOR 11

Figur 2.2: Illustration över hur en krets skapas och kopplas upp till en webbserver. Denna krets är en så kallad två-hoppskrets då den består av två reläer.[1].

2.4.2.3 Slutrelä

Ett relä med en öppen exit-policy, ett så kallat slutrelä, är ett relä där data tillåts lämna det virtuella Tor-nätverket. Slutreläer är nödvändiga för att Tor ska fungera praktiskt. Utan dessa skulle endast klienter kunna kommunicera med andra klienter inom Tor-nätverket (mer om hur detta funkar i kapitel 2.4.3.5), vilket är långt ifrån hela internet. Den data som lämnar ett slutrelä lämnar anonymitetsnätverket i exakt samma skepnad som det kom in i nätverket. Detta betyder att om du som klient vill föra kommunikation med en icke-krypterad tjänst utanför anonymitetsnätverket men ändå vill skicka denna information genom anonymitetsnätverket kommer denna data inte att vara krypterad då den når den icke-krypterade tjänsten. Att glömma detta är ett ofta förekommande misstag hos användare av Tor. Slutreläer hanterar alla DNS-uppslag för klienterna då det annars skulle röja deras identitet. För att öka hastigheten för dessa DNS-uppslag hålls de senaste uppslagen i en cache i slutreläet. Denna cache kommer att utnyttjas i

(26)

denna uppsats för att skapa ett webbplatsorakel [1].

2.4.2.4 Onion-tjänster

Onion-tjänster, vilket ibland kallas för gömda tjänster [13], är tjänster som tillåter en användare av Tor att förmedla en TCP-tjänst utan att avslöja dess IP-adress. [1] Onion-tjänsters huvudsyfte är att tillåta yttrandefrihet på nätet oberoende av var du befinner dig i världen och oavsett vilka restriktioner du har på ditt internetanvändande [14]. För att kommunicera med en onion-tjänst krävs det inga slutreläer då klienten och servern båda befinner sig inom det virtuella Tor-nätverket [1].

2.4.3

Tor som mjukvara i praktiken

Målet med Tor är att hindra en attackerare från att associera två parter på nätverket med varandra eller att associera en part med flera andra parter. För att realisera detta mål måste några förutsättningar uppfyllas.

• Distribuerbarhet: För att Tor ska kunna användas praktiskt måste det vara möjligt för individer och företag att nyttja mjukvaran. Frågan kring huruvida designen stödjer distrubuerbarhet rör följande punkter;

– Kostnaden för att driva ett relä på Tor-nätverket: Tor fungerar endast då volontärer och Tor-projektet driver reläer på nätverket. Om det är för dyrt att driva ett relä kommer endast nationalstater och större företag kunna driva nätverket. Det blir inte längre decentraliserat.

– Låg grad av underförstått ansvarstagande hos användare: En ägare av ett relä skall ej stå juridisk ansvarig för den trafik som passerar detta relä. Detta beror på landets lagar kring datalagring och internetkommunikation. [1] I Sverige är det lätt att driva ett relä relativt med andra länder. Det händer dock

(27)

2.4. TOR 13 att polisen beslagtar Tor-reläer med en öppen exit-policy i samband med brottsutredningar. [15] (Reläer med öppen exit-policy beskrivs mer senare.)

– Enkelt och billigt att påbörja användandet av Tor: Mjukvaran som driver Tor för klienten och reläer får ej kräva dyr hårdvara eller avancerad konfigura-tion såsom speciella serverkomponenter och förändringar i operativsyste-mets kärna (eng. kernel).

• Användarvänlighet: Ett svåranvänt system har färre användare. [1] Anonymite-ten hos enskilda användare på ett anonymitetnätverk är i direkt korrelation till diversifieringen av de användare som använder nätverket. Som det exempel Ro-ger Dingledine tog upp på DEF CON 25-konferensen i Las Vegas år 2017; ta ett hypotetiskt anonymitetsnätverk för cancerpatienter, kalla det för A. A kräver mjukvaran B istallerad på dator. Träffar du sedan på en person med mjukvaran B installerad på dess dator vet du då att denna person har cancer. [16] Ett verkligt exempel på detta är hur Tor uppkom; det utvecklades först av amerikanska flottan i mitten av 1990-talet, för användning av officerare. Då endast amerikanska office-rar kommuniceoffice-rar med Tor vet en fiende direkt vem personen med Tor installerad på sin dator är, nämligen en amerikan högt uppsatt inom amerikanska flottan. [17] Som användare är du endast så anonym som det urval ur populationen du väljer att begränsa dig inom. Ett verkligt anonymt nätverk innehåller inte ett urval av populationen, utan innehåller istället populationen eller ett slumpmässigt urval ur populationen. [16] 1975 skrev Saltzer and Schroeder en uppsättning design-principer för datorsäkerhet, där ett av dessa är psykologisk acceptans och syftar på att användare inte använder säkerhetsåtgärder korrekt om dessa åtgärder inte uppfattas som nödvändiga för användaren. Tor måste ha en psykologisk acceptans hos icke-tekniska användare och vara lättanvänt. [18]

(28)

nyttjas som en grund för kommande forskning inom anonymitet. Tor är både ett praktiskt system och en kodbas designad för vidareutveckling av anonoymitets-system [1].

• Enkel design: Tor förhåller sig till en simpel och universellt accepterad kodbas. De system som bygger upp Tor skall ej vara komplexa och instabila utan beprövade och förståeliga. [1]

2.4.3.1 Tor Browser

Tor är vanligvist använt av slutanvändare som en beståndsdel i annan mjukvara. OnionS-hare är mjukvara för anonym fildelning, detta program använder Tor för att upprätthålla anonymitet.[19] En modifierad variant av Mozilla Firefox paketeras med ett relä och ges ut som Tor Browser av The Tor Project. Tor Browser låter användare besöka webbplatser anonymt genom Tor-nätverket [5].

2.4.4

The Tor Project

År 2002 släpper The Tor Project sin första version av Tor. The Tor Project är icke-vinstdrivande och är den organisation som driver utvecklingen av Tor framåt. De som arbetar på utvecklingen av Tor är anställda eller volontärer. Målet med Tor är vilkorslös anonymitet och integritet för alla användare på internet.[20]

2.4.4.1 Volontärerna som gör Tor möjligt

Reläer är den infrastruktur som gör Tor-nätverket möjligt då klienter inte förmedlar data likt i ett peer-to-peer-nätverk utan endast reläer gör detta. Entusiastiska volontärer och betalda företag kör reläer och bryggor på dess hårdvara. En brygga tillåter använda-re vars initiala kontakt med Tor-nätverket är otillgängligt. Man säger att användaanvända-rens

(29)

2.5. STATISTIK 15 bootstrap är censurerad, vilket inte gör det möjligt för dem att koppla upp sig mot Tor-nätverket. En brygga kan då användas som en proxyserver för den initiala kontakten med Tor-nätverket [1].

2.5

Statistik

Statistiska algoritmer deriverar resultat från mätdata och illustrerar dessa resultat. Kor-svalidering är en teknik för att validera mätdata, K-Fold är en metod för att utföra korsvalidering. Receiver Operating Characteristics (ROC) utforskar resultat ur binära klassifikationstest, likt ur ett webbplatsorakel. Resultat representeras med statistiska mått som sensitivitet och specificitet. Ovanstående metoder beskrivs mer i detalj nedan.

2.5.1

Korsvalidering

Korsvalidering är en algoritm inom statistik och maskininlärning [21] som anses bätt-re än bätt-regbätt-ression och borttagning av bätt-resterande datapunkter [22], som är två vanligt förekommande algoritmer. Korsvalidering används vanligtvis för att utvärdera stora datamängder [23]. I konventionell utvärdering av maskininlärning och liknande förut-sägande mjukvara, likt ett webbplatsorakel, beräknas en stor datamängd vilket sedan tränar en algoritm. Denna algoritm används vanligtvis mot en främmande datamängd och försöker förutse resultat. Problemet med denna konventionella metod är att den tränade algoritmens resultat inte valideras av tidigare känd data. Med korsvalidering delas datamängden upp i N antal delar där en delmängd av datamängden används för träning av algoritmen och resterande delmängd används för validering av algoritmen. Se exempel i figur 2.3, där hela datamängder är indelad i 4 stycken lika stora delmängder. Den enklaste formen av korsvalidering är då datamängden delas in i två delar där algoritmen endast har kännedom om den ena delmängden och då tränas för att förutse den andra delmängden. [22]

(30)

Figur 2.3: Datamängden delas upp i 4 lika stora delar. 3 av dessa delar används för att träna en algoritm, den resterande används för att testa den tränade algoritmen.

2.5.1.1 K-Fold

Korsvalidering med K-Fold är en metod då data delas in i N antal delar och korsvalide-ring utförs N antal gånger där variabeln k representerar varje tal från 0 till N− 1 (då en listas index börjar på 0 och inte på 1). I figur 2.3 illustreras 4 stycken datamängder ifrån en större datamängd där den sista datamängden är vald som testdata, variablerna är då N = 4 och k = 3, K-Fold är just nu på sin sista korsvalidering då k har representerat 0,1,2 och nu slutligen 3 [24]. Fördelen med korsvalidering med K-Fold är att varje datamängd får vara testdata exakt en gång och vara träningsdata N− 1 gånger. Fördelen är att detta eliminerar potentiella fel då all data anses vara testdata åtminstone en gång, nackdelen är att korsvalidering måste utföras N antal gånger istället för en gång. [22].

2.5.2

Sensitivitet och specificitet

Sensitivitet och specificitet mäter tillförlitligheten hos binära klassifikationstest [25]. Med binära klassifikationstest menas sådana likt de resultat som ett orakel presenterar, om en fråga är sann eller falsk. Sensitivitet och specificitet representeras i sin enkelhet med P och N, som representerar antalet positiva och negativa resultat i en mängd data.

(31)

2.5. STATISTIK 17 En algoritm tränas och validerar sedan denna data och dessa resultat jämförs mot P och N. Denna algoritm är vad som undersöks, dess resultat jämförs, TP, FP, TN och FN producerat av validering, se figur 2.4 för härledning av dessa.

TP är då ett positivt resultat av en algoritm och detta är sanningsenligt med det egentliga värdet, därav TP = True Positive. För TN gäller att ett falskt resultat producerat av algoritmen, vilket stämmer överens med det egentliga värdet, därav TN = True Negative. FP och FN, False Positive respektive False Negative beskriver utfallet då algoritmen kommer fram till fel värde jämfört med det egentliga värdet. Dessa fel noteras i vissa fall som av typ 1 eller av typ 2 [26]. Av TP, FP, TN och FN härleds följande statistiska mått

Figur 2.4: En så kallad confusion matrix, denna matris illustrerar de fyra möjliga utfallen då data med kända binära utfall valideras.

TPR och FPR enligt följande T PR = T P/(T P + FN) och FPR = FP/(T P + FN). False Positive Rate (FPR) och True Positive Rate (TPR) representerar hurvida algoritmen är sanningsenlig eller ej [27]. Exempelvis: Händelser delas in med en binär klassificerare där de anses antingen positiva eller negativa. En algoritm med T PR = 0.2 och FPR = 0.5 visar att av 100 positiva händelser kommer denna algoritm att benämna 20 händelser som positiva, men också av 100 negativa händelsen kommer denna algoritm att benämna 50 händelser som positiva, vilket är fel. [28]. Koppla detta exempel till webbplatsorakel, då kan en positiv händelse antas vara en indikation på att en webbplats domännamn

(32)

existerar i DNS-cache. Ett övervägande mellan TPR och FPR kan behöva göras då en algoritm där T PR = 1 och FPR = 0 (vilket är optimalt) vanligtvis är svårt att konstruera.

2.5.3

Receiver Operating Characteristics

Receiver Operating Characteristics, hädanefter kallat ROC är en graf som illustrerar verksamhetsgraden av en klassifikationsmodell vid flera klassifikationströsklar [27]. En klassifikationsmodell drar en enkel slutsats av observerad data, vilket kan vara exem-pelvis: är denna e-post spam eller inte? [29]. En klassifikationströskel är det värde som delar in en godtycklig datapunkt i klassifikationsmodellen. Data i sin ensamhet är meningslöst utan det är inte förrän denna data ställs mot en uppsättning regler den antar en större mening och beslut kan antas utifrån denna. ROC-kurvan används för att visualisera förluster vid olika klassifikationströsklar då en kvantitativ variabel styr valen i en algoritm. I en ROC-kurva ställs TPR på y-axel och FPR på x-axel för en grafisk representation av verkningsgraden av algoritmer på vid olika klassifikationströsklar [28] (se figur 2.5 för ett exempel av en ROC-kurva).

2.6

Verktyg

Här beskrivs de verktyg och kodbaser som används i implementationen.

2.6.1

Python

Python är ett interpreterat högnivåspråk skapad för generella problemlösningar. Språket används gärna i forskningssyfte då det är snabbt och enkelt att experimentera med. Dess karaktärsdrag passar denna uppgift och är det språk som används för implementationen av den attack som beskrivs i den här uppsatsen.[30] [31] Alternativ till Python skulle kunna vara programspråket Rust då detta används flitigt i Tor. [32] Om en mer långvarig

(33)

2.6. VERKTYG 19 version av detta program implementeras i ett senare skede bör Rust användas då det är ett hårdtypat språk jämfört med Python [33]. Ett hårdtypat språk hanterar datakonflikter till en större del i kompileringsstadiet istället för i runtime som Python gör. Detta gör det säkrare eftersom krascher är betydligt ovanligare.

2.6.2

Linux och UNIX

Linux är ett operativsystem och bygger på UNIX. UNIX är ett gammalt och en gång mycket populärt operativsystem som först som uppkom i tidigt 1970-tal. UNIX använ-des en gång i tiden bara på universitet och forskningslab men är idag en del av det moderna operativsystemet Linux som används i alla typer av datorer [34].

2.6.2.1 Bash

Bash är det primära programmeringsspråket för att påverka skalet (engelska; shell) i operativsystemet UNIX. Skalet är det yttersta lagret i ett typisk UNIX-baserat operativ-system vilket är det lager som en vanlig användare har åtkomst till. Mellan användare och skalet finns det gränssnitt, ett av dessa är bash vilket också är det vanligaste gräns-snittet i Linux [34]. Bash används som gränssnitt av författaren för att interagera med programvara.

2.6.2.2 Cron

Schemaläggaren för operativsystemet i UNIX och Linux kallas för cron. Syftet med cron är att exekvera ett eller flera program enligt ett förbestämt schema [35].

2.6.3

Stem

Stem är ett Tor-bibliotek för Python. Stem kommunicerar med kontroll-protokollet som är en intern kommunikationskanal i tor-processen. Valmöjligheten för att öppna

(34)

den-na kaden-nal via en port i processen görs i konfigurationsfilen för den specifika tor-processen. I skrivande stund är Stem i version 1.8. [36]

2.6.4

Exitmap

Exitmap är en snabb och modulär skannare för exit-reläer i Tor-nätverket, [37] dess utveckling organiseras av Philipp Winter. [38] Med skannare i detta fall menas ett verktyg som upptäcker enheter i ett nätverk (likt nmap). Med Exitmap kan en utvecklare skriva moduler som itererar en funktion över en delmängd eller över alla slutreläer i Tor-nätverket.

2.6.5

Torsocks

Torsocks är en applikation och ett kod-bibliotek som tillåter dess användare att skicka nätverkstrafik igenom Tor-nätverket. Torsocks abstraherar bort den konfiguration av Tor som krävs för att skicka trafik genom en SOCKS5-proxy, en SOCKS5-proxy är en teknik Tor använder för att skicka nätverkspaket till Tor-nätverket. Torsocks tillåter användare att använda de flesta applikationer (som stödjer SOCKS5) på ett säkert sätt genom att skicka trafiken genom Tor-nätverket till slutnoder. Torsocks uppnår detta genom att skriva om alla funktionsanrop i libc som berör nätverkskommunikation. [39] Exitmap använder en modifierad version av torsocks för att tillåta moduler att kommu-nicera över dess Tor-uppkopplingar med en mängd exit-reläer. [37]

(35)

2.6. VERKTYG 21

Figur 2.5: En illustration av en ROC-kurva. Den röda streckade linjen representerar effektiveten av en gissning, punkten märkt Perfect Classification representerar resultatet för en perfekt klassificerare. Illustrationen är skapad av Kai Walz och publicerad på Wikimedia Commons med licens GNU Free Documentation License, Version 1.2 [2].

(36)
(37)

Kapitel 3

Design

Detta kapitel beskriver den design författaren har konstruerat för att sedan implementera i kapitel 4. Designen bygger på den teknik presenterad i kapitel 2. Följande design specificerar det som krävs för att utföra mätningar och analys av dessa mätningar. Mätningar och analys vars syfte är att utvärdera gynnsameten av webbplatsorakel från DNS-tidtagning i Tor-nätverket. Designen går igenom följande punkter;

• Tidtagning av DNS i Tor: Källan till webbplatsoraklet kommer ifrån DNS-tidtagning i Tor.

• Webbplatsorakel: Hur behandlas tidtagning av DNS för att konstruera ett webb-platsorakel.

• Nätverkstopologi: Den optimala nätverkstopilogin för denna typ av undersökning. • Exitmap: Hur Exitmap nyttjas för att utföra DNS-tidtagning.

• Aggregering: Hur data genererad av Exitmap förbereds för korsvalidering. • Korsvalidering: Behandlad data processeras med K-Fold vilket resulterar i

pre-senterbara resultat.

(38)

3.1

Tidtagning av DNS i Tor

Hur DNS fungerar i Tor beskrivs med följande illustration. I figur 2.3 illustreras följande scenario; Bob är en godtycklig webbserver på internet, Alice är en klient i Tor-nätverket och skapar en uppkoppling genom reläerna (benämnt Tor node i diagrammet). Datorn längst ner till höger är ett slutrelä och tillåter data att lämna Tor-nätverket via detta relä. [40]. Då Alice gör ett uppslag för ett domännamn som exempelvis Bob eller Jane innehar kommer slutreläet få i uppgift att göra detta uppslag. Införs ännu en klient i exemplet, låt säga Eve, och Eve använder samma slutrelä som Alice kan problem poten-tiellt uppstå. Då Alice och Eve delar på slutreläets cache skapas en potentiell sidokanal som attackvektor. Denna cache i slutreläer utnyttjar författaren i denna design, med hjälp av mjukvara som beskrivs senare i designkapitlet utförs tidtagning på slutnoders cache.

Figur 3.1: Illustration över topologin för uppkopplingen mellan Alice och Bob. Bilden tillhör EFF och är licensierad under Creative Commons [3].

(39)

3.2. WEBBPLATSORAKEL 25

3.2

Webbplatsorakel

Detta kapitel beskriver hur ett webbplatsorakel utformas med DNS-tidtagning av Tor-nätverkets slutreläer som källa. Därefter beskrivs i detalj hur författaren realiserar detta webbplatsorakel.

3.2.1

Konceptet webbplatsorakel från DNS-tidtagning i Tor

Nedan ges ett beskrivande exempel i hur ett webbplatsorakel tar beslut om en webbplats är besökt eller ej, se figur 3.2 för referens. Webbplatsoraklet i denna uppsats riktar in sig på alla möjliga slutnoder i Tor-nätverket, men låt oss fokusera på en enda slutnod i detta exempel. Tid X är den tid det tar för klienten (benämnd Klient) att skicka data genom Tor-nätverket (benämnd Tor-nätverket) till ett godtyckligt slutrelä (benämnd Slutrelä) och sedan få tillbaka denna data. Tid Y är den tid det tar för detta specifika slutrelä att skicka ett domänuppslag till en godtycklig DNS-Server (benämnd DNS-Server) och sedan få tillbaka ett svar från denna DNS-Server. Då klienten skickar ett domänuppslag till slutreläet, som slutreläet ej innehar i sin cache kommer detta domänuppslag ta tid X + Y för klienten att få tillbaka. Om detta uppslag istället existerar i slutreläets cache kommer denna tid endast att vara X, och inte X +Y , då Y är den tid det tar för slutreläet att kontakta DNS-Servern (DNS-Servern kontaktas inte om domännamnet existerar i cache).

3.2.1.1 Attackvektor

Existerar ett domännamn i ett slutreläs cache har detta domännamn besökts av en an-vändare som brukar detta slutrelä. Att inneha vetskap angående vad som existerar i slutreläets cache, är att inneha vetskap om de webbplatser användarna av detta slutrelä besöker. Med tidigare exempel får vi ut tid X +Y från ett domänuppslag mot ett slutrelä, med omvänd logik kan man få ut information om domänuppslaget om man vet X och

(40)

Figur 3.2: Topologi för uppkoppling med klient, slutrelä och DNS-Server.

Y. Om man som attackerare innehar informationen tid X och tid Y samt tiden för ett godtyckligt uppslag av exempelvis kau.se, ett uppslag som tar tid Z, kan man avgöra om domännamn kau.se existerar i detta specifika slutreläs cache. Sammanfattat kan man säga att; om Z = X + Y är sant existerar inte domännamnet kau.se i slutreläets cache, är istället Z = X sant så existerar kau.se i slutreläets cache, i sådant fall är kau.se besökt av detta slutrelä sedan tidigare. Problematiken här är att situationerna Z = X + Y och Z = X uppstår mycket sällan, då fördröjningar vanligtvis uppkommer. Ett tröskelvärde för när Z anses befinna sig i något av dessa två stadier krävs, detta tröskelvärde benämns T. Författarens arbete bygger på att finna ett tröskelvärde T där tid Z anses vara antingen X eller X + Y , tröskelvärdet T beräknas från tid X och X + Y . Baserat på den logiken konstrueras konceptet för webbplatsorakel från DNS-tidtagning. Problemet är att vetskap om tid Z (och om predikatet: kau.se existerar i cache) vet vi endast då tröskelvärde T är känt, detta behandlas i nästa kapitel.

3.2.1.2 Att beräkna tröskelvärdet

För att beräkna X och Y behövs en större mängd tester av kända utfall utföras, för detta krävs ett flertal domännamn. Konstruktion av domännamn beskrivs nedan, därefter beskrivs hur de löser ut X och Y. Författaren skapar en stor uppsättning domännamn

(41)

3.2. WEBBPLATSORAKEL 27 som antas vara oanvända sedan tidigare, dessa domännamn används för tidtagning av slutreläets cache. Domännamnet pulls.name vilket är konfigurerat till att acceptera alla subdomän konkateneras med en slumpmässigt vald subdomän (resulterar exempelvis i bai6eihoo1oogheipohleezae3sheech.pulls.name). Det är viktigt att kombinationen är konstruerad på ett sådant sätt att ingen tidigare användare har anledning att besöka dessa. För ett godtyckligt domännamn benämnt D0 som följer denna struktur anses detta inte existera i slutreläets cache. Då författaren besöker D0 och tar tid A för detta vet författaren att A = X + Y , då det är omöjligt att D0 existerar i cache. Besöker sedan författaren domän D0 på nytt inom kort tid är det säkert att denna domän existerar i cache och tid B anses då vara B = X . Med tid A vet författaren tiden det tar klienten att kontakta slutreläet och sedan DNS-Servern, med tid B erhålls vetskap om kontakt direkt till slutreälet. I en perfekt värld är tid A = X + Y och tid B = X , sådant är dock inte fallet utan författaren skall utföra en större mängd tidtagningar av A och B skall sedan konstruera en algoritm för att beräkna Z.

Sammanfattningsvis behövs F, där F är en funktion som mottager två mängder i form av T = F(R, S) där;

• T är det sökta tröskelvärdet.

• R är en mängd bestående av element i form av A där domänuppslaget inte existerar i cache och tid A skall då närma sig tid (X + Y).

• S är en mängd bestående av element i form av B där domänuppslaget existerar i cache och tid B skall närma sig X.

Funktion F behandlas tillsammans med korsvalidering (kapitel 3.6) då endast obehand-lad data i form av R och S framtas av denna tidtagning. Mängderna R och S ges av upprepade domänuppslag av A och B, för ett specifikt slutrelä, vilket förklaras i nästa kapitel.

(42)

3.2.2

Sammanfattning och realisering av webbplatsorakel

Tidtagning av X + Y vilket vi kallar för A och tidtagning av X vilket vi kallar för B fås genom en upprepade uppslag av slumpgenererade domännamn (se figur 3.2), med dessa tider kan korsvalidering utföras där funktion F nyttjas. För detta skapar författaren slumpgenererade domännamn för att göra ett större antal uppslag mot alla möjliga slutreläer i Tor-nätverket, hur detta utförs med Exitmap beskrivs i kapitel 3.4. Denna process resulterar i de två mängderna R och S för varje slutrelä i Tor-nätverket. Utifrån R och S beräknas tröskelvärdet T, en potentiell attackerare kan sedan göra domänuppslag mot Tor-nätverket, jämföra detta med T och därav veta om detta domännamn är besökt av en tidigare användare.

3.3

Nätverkstopologi

En minimal uppkoppling skapas av författaren med verktyget Exitmap, denna uppkopp-ling går endast genom två reläer (som den illustrerad i figur 2.2). En mycket vanligare uppkoppling går mellan tre reläer, denna simplare uppkoppling valdes då detta minime-rar felmarginaler i tid X (se figur 3.2). Uppkopplingen illustreras i figur 3.3. Det första reläet i uppkopplingen tillhör Karlstads Universitet, det andra reläet i uppkopplingen är ett godtyckligt slutrelä, DNS-Servern är okänd då val av denna är upp till ägaren av slutreläet.

3.4

Exitmap

Den teknik som tas fram i kapitel 3.2 där mängderna R och S tas fram för varje slutrelä kan ses som funktion (R, S) = W (...). Exitmap fungerar som map-funktionen känd från flera programspråk där en funktion exekveras enskild på varje element i en lista. Se denna lista som alla möjliga slutnoder och funktionen som W. Författaren konstruerar

(43)

3.4. EXITMAP 29

Figur 3.3: Den uppkoppling som används för tidtagning, denna designad för minimala felmarginaler.

funktion W, i form av en modul till Exitmap. Figur 3.4 illustrerar hur Exitmap på författarens labbdator kommunicerar med ett relä på Karlstads Universitet som i sin tur kopplar upp sig till alla möjliga slutreläer på Tor-nätverket. Användning av reläet för detta ändamål är tillåtet av personal på Karlstads Universitet, denna personal underhåller detta relä.

3.4.1

Framtagning av data

Körningar av Exitmap med modulen som realiserar funktion W körs med en period bestämd enligt konfiguration (konfiguration presenteras med resultat i kapitel 5). En full körning är då Exitmap exekverat W över alla möjliga slutnoder, tid en full körning tar är varierande då slutnoder stängs ned eller blockeras av slutreläens operatör eller av författaren (om operatören önskar detta). Från en körning genereras R och S en gång för varje slutnod. Författaren automatiserar dessa körningar enligt implementation beskrivet i kapitel 4.4.

(44)

Figur 3.4: Illustration över hur Exitmap verkar över alla slutreläer som att de vore en lista.

3.5

Datastruktur

I diskussion kring Exitmap och webbplatsorakel fungerar abstraktionen R och S per slutrelä, men för aggregering och korsvalidering av denna data krävs modeller på en noggrannare nivå. R och S realiseras som en enda mängd med följande attribut;

• Körning, bestående av en identifierare för varje körning av Exitmap som genererar följande element. Denna identifierare underlättar felsökning och används för att dela upp data i delmängder för multiproccessering i ett senare skede.

• Slutrelä, slutreläet som berörs av detta element representeras av slutreläets unika index (i Tor benämnt fingerprint).

(45)

3.6. AGGREGERING 31 • Domännamn, det slumpgenererade domännamnet som domänuppslaget utförs med. • Responstid, tiden det tar för klienten att skicka ett domänuppslag till detta återfås

från slutreläet.

• Tidpunkt, tidpunkten då domänuppslaget utfördes.

I denna mängd domänuppslag existerar alla typer av domänuppslag oavsett vad dem är till för. Om exempelvis en precision på tröskelvärdet T av 5 domänuppslag önskas måste 5∗ 3 + 1 domänuppslag göras; 5 stycken domän som inte existerar i cache, 5 stycken ytterligare som inte existerar i cache och sedan de föregående 5 domännamn åter igen då de utan tvivel denna gång existerar i cache. Ett domänuppslag där författarens kontaktuppgifter satt som domännamn, skickas även till varje slutrelä i enlighet till de etiska regler beskrivet i kapitel 1.4. Sammanfattningvis, författaren utför E∗ 3 + 1 stycken domänuppslag per slutrelä med hjälp av Exitmap då E är önskad precision av tröskelvärde T.

3.6

Aggregering

Data framtagen av Webbplatsorakel (kapitel 3.2) med Exitmap enligt datastruktur (kapi-tel 3.5) behöver behandlas innan korsvalidering kan utföras. Behandling av data lägger till attributet Cache i mängden, detta attribut markerar hurvida domännamnet i elementet är sparat i cache hos slutreläet sedan innan, detta beräknas från hela mängden. Om alla följande punkter är sanna markeras domänuppslaget som Cache = True, det vill säga sparat i slutreläets cache;

• Domännamnet är ej unikt för detta slutrelä, enligt attribut Domännamn.

• Av de element med samma domännamn är detta element det utfört sist, enligt attribut Tidpunkt.

(46)

Om följande påstående är sant, markeras domänuppslaget som Cache = False, det vill säga ej sparat i slutreläets cache; Domännamnet är unikt för detta slutrelä, enligt attribut Domännamn. Domänuppslag i mängden vars attribut Responstid ej är större än 0 är mar-kerade korrupta av funktionen W och raderas ur mängden. Domänuppslag i mängden vars attribut Cache ej är bestämt raderas då de endast är till för att fylla cache i slutreläer och ej är menade för tidtagning. Domänuppslag vars attribut Domännamn är lika med författarens kontaktuppgifter raderas då dessa inte är menade för tidtagning. Denna aggregering konstrueras av författaren enligt denna design, implementation beskrivs i kapitel 4.7.

3.7

Analys

Analys av data utförs med korsvalidering med K-Fold och ROC. Korsvalidering är teknik som uppvisar hurvida den data genererad av webbplatsoraklet i kapitel 3.2 tyder på ett fungerande webbplatsorakel genom DNS-tidtagning i Tor. Korsvalidering utförs enligt K-Fold med ett antal metoder för att beräkna tröskelvärdet T. Analys med korsva-lidering och metoder för tröskelvärde konstrueras av författaren enligt följande design, implementation beskrivs i kapitel 4.7.

3.7.1

Beräkning av tröskelvärde

Tröskelvärde T beräknas med ett antal olika metoder, detta för att utforska möjliga tillvägagångsätt då optimal metod inte är känd. Metoder för att beräkna tröskelvärden är enligt följande;

• Snabbast möjliga. Responstiden för den datapunkt som ej är sparad i cache med lägst responstid väljs som tröskelvärde. Denna metod för att beräkna tröskelvär-det är den metod som användes av Pulls och Dahlberg [5] då de skapade deras webbplatsorakel.

(47)

3.7. ANALYS 33 • Medianen av alla datapunkters responstid som en är sparade i cache vals som

tröskelvärde.

• Medelvärdet av alla datapunkters responstid som en är sparade i cache vals som tröskelvärde.

• Av alla datapunkter som är sparade i cache väljs på måfå en utav dessa. Denna datapunks responstid väljs som tröskelvärde. Denna metod anses vara referens till de andra metoderna i det slutgiltiga resultaten. Då de andra metoderna beräknar tröskelvärden från datapunkter sparade i cache, ger denna metod svar på frågan; är denna en slumpvist vald datapunkt sparad i cache ett bättre val än en statistisk beräkning?

• Lägre kvartil av responstiden av alla datapunkter sparade i cache. Lägre kvartil anser de värden i spannet lägsta värde till Q1 i figur 3.5.

• Övre kvartil av responstiden av alla datapunkter sparade i cache. Likt lägre kvartil då spannet sätts från Q3 till högsta värdet i figur 3.5 [41].

3.7.2

Korsvalidering med K-Fold, ROC och olika metoder för

trös-kelvärden

Korsvalidering är en simpel operation där data från aggregering delas upp i två delar, en del data används för att beräkna ett tröskelvärde T med en metod, den andra delen data validerar detta tröskelvärde. Detta är möjligt då svaret på predikatet som webbplatso-raklet ställer redan är känt. Svaret till predikatet är domännamn exempel.pulls.name) besökt?, finns i attributet Cache i den data som ges av aggregering. Nedan beskrivs hur denna korsvalidering kombineras med K-Fold och ROC för att generera de resultat presenterade i kapitel 5. Data givet av aggregering delas upp per slutrelä, K-Fold utförs på all data tillhörande varje slutrelä, alltså K-Fold utförs en gång per slutrelä.

(48)

Figur 3.5: Denna illustration visar lägre (i bild Q1) och övre (i bild Q3) kvartil i en normalfördelad distribution. Illustrationen är skapad av Jhguch från material givet av Chen-Pan Liao och publicerad på Wikimedia Commons med licens Creative Commons Attribution-Share Alike 2.5 Generic lic [4].

(49)

3.7. ANALYS 35 3.7.2.1 K-Fold

I K-Fold utförs korsvalidering N antal gånger där all data agerar valideringsdata en gång och all data agerar träningsdata N− 1 antal gånger. Detta leder till resultat där felmarginaler i valideringsdata minimaliseras. För att initiera K-Fold bestäms N = 10, data från aggregering delas upp i 10 delmängder, benämn dessa delmängder D1, D2, D3, ... , D10. Variabeln k representerar alla värden mellan 1 och N (10), värdet på k markerar vilken delmängd data som används som valideringsdata, för varje utförd korsvalidering ökas k med 1 tills k = N är sant. Korsvalidering beskrivs i kapitel 3.7.2.3.

3.7.2.2 ROC-Konstant

Data från korsvalidering presenteras enligt ROC, i ROC förskjuts tröskelvärdet T med konstanten C enligt T = T + T /C. Konstanten C antar varje heltal i spannet Cmin till Cmax, Cmin och Cmax bestäms innan körning av korsvalidering och presenteras i kapitel 5. För varje metod av beräkning av tröskelvärde T och för varje heltal av C körs korsvalidering och resultatet markeras som en punkt i en graf. Antal operationer och antal punkter som markeras är antal C-värden (Cmax−Cmin) multiplicerat med antal metoder för tröskelvärden, i denna design utförs 6 stycken metoder för att beräkna tröskelvärdet. Se figur 2.5 för exempel på en graf enligt ROC. I nästa kapitel beskrivs den korsvalidering som presenteras med ROC.

3.7.2.3 Korsvalidering

Korsvalidering som tidigare nämnt utförs N antal gånger då K-Fold använts. I denna design är den optimala algoritmen för att beräkna tröskelvärden inte känd och flera försök utförs, därav utförs korsvalidering flera gånger för samma värde av k. Tröskel-värden beräknas från träningsdata med 6 stycken olika metoder presenterade i kapitel 3.7.1, dessa tröskelvärden förskjuts enligt ROC-konstanten C beskriven i kapitel 3.7.2.2. Detta resulterar i att korsvalidering för ett värde på k körs lika många gånger som

(50)

antal metoder för att beräkna tröskelvärden (6 stycken) multiplicerat med antalet värden ROC-konstanten C kan anta, lika många resultat returneras till K-Fold operationen. Mängden resultat som returneras består av attributen;

• Slutrelä, för vilket slutrelä är korsvalideringen ansedd för. • Metod, vilken metod användes för att beräknas tröskelvärdet. • C, vilket värde hade ROC-konstanten C under korsvalideringen. • TPR, vad resulterade korsvalideringen i för värde på TPR. • FPR, vad resulterade korsvalideringen i för värde på FPR. 3.7.2.4 Sammanställning av data

K-Fold har exekverats en gång per slutrelä, korsvalidering har utförts N antal gång-er, korsvalideringen i sig utför 6 stycken metoder för beräkning av tröskelvärde som förskjuts med ROC-konstanten C, C antar flera värden. Detta är mycket data. Data skall endast presenteras per Metod och per värde på C, då detta visar webbplatsoraklets prestanda överlag och inte för enskilda slutreläer. Av en mängd med attributen Slutre-lä, Metod, C, TPR, FPR raderas attributet Slutrelä och medelvärdet av TPR och FPR beräknas för alla element i mängden vars attribut Metod och C är lika. Efter denna operation har vi en mängd av TPR, FPR för varje unikt Metod och C, dessa resultat går att presentera med ROC i en graf.

3.7.3

Sammanfattning av analys

Från korsvalidering med K-Fold beräknas tröskelvärden av ett flertal olika metoder, dessa tröskelvärden förskjuts med en så kallad ROC-Konstant. Denna konstant nyttjas då det är denna metod som används för ROC, konstanten ger en överblick över en klassificeringsmetod, i detta fall de olika metoderna för beräkning av tröskelvärden.

(51)

3.7. ANALYS 37 En stor mängd resultat i form av TPR (True Positive Rate) och FPR (False Positive Rate) ges av flera iterationer korsvalidering, de två attributens medelvärden beräknas per unika kombinationer av Metod samt C. TPR och FPR är de gynnsamma värden som presenteras i grafen enligt ROC, på så sätt får vi en representation i ROC per metod av beräkning för tröskelvärde förskjutet med ROC-konstanten. Metodik för korsvalidering, K-Fold och ROC är väl studerat, det författaren har gjort är att applicera dessa metoder på ett sådant sätt att de beräknar resultat för den specifika frågeställning som ställs i denna uppsats. Iterationer av variabler såsom N och C behandlas av analysen så att implementation av denna design med multiprocessering underlättas (beskrivs i kapitel 4).

3.7.4

Presentation med ROC

Resultaten TPR och FPR presenteras enligt ROC i en graf, en kurva konstruerad av C per Metod. Dessa grafer presenterar resultaten givna av denna design, dessa grafer illustreras i kapitel 5.

(52)
(53)

Kapitel 4

Implementation

I detta kapitel beskrivs implementation av den design som presenterades i kapitel 3. Nedan bearbetas implementation angående följande punkter;

• Exitmap, hur utveckling utförs med Exitmap som grund. • Hantera data, hur data lagras.

• Miljö, för vilken hårdvara designen är implementerat och vilka resurser imple-mentationen har tillgång till under körning.

• Automation, hur körning av Exitmap automatiseras. • Varierande data, konfigurationer och yttre faktorer.

• Antaganden, i designen operarar webbplatsoraklet i en ideell miljö, i praktiken måste antaganden göras då verkligheten inte alltid är perfekt.

• Analys av data, aggregering, analys enligt design med tillhörande extrafunktiona-litet.

• Grafritning, hur resultat presenteras programmatiskt enligt ROC. 39

(54)

4.1

Utveckling med Exitmap

En modul är ett fristående program, s.k. skript (eng. script) [42] skrivet i Python som får åtkomst till den krets som skapas av Exitmap till slutreläerna. I figur 3.4 illustreras den labbmiljö som användes i implementationen av designen som presenterades i kapitel 3. Som illustrerat i figur 3.4 används ett specifikt relä som första relä i kretsar av Exitmap. Detta relä ägs och underhålls av Karlstads Universitet och författaren har givits tillåtelse att bruka detta. Det första relä Exitmap använder i sin uppkoppling går att konfigurera.

4.1.1

Tidtagningsmodul

Då Exitmap startar modulen för tidtagning behövs följande information; vilken slutnod som påverkas, vilken körning som representerar dessa resultat, hur många uppslag som krävs för god mätdata och hur många gånger modulen är tillåten att återuppta en fallerad uppkoppling. Slutnoden är given av Exitmap. Körning, vilket mätdatan representerar, genereras av aktuellt klockslag. Antalet uppslag samt antalet gånger en fallerad upp-koppling får återkopplas läses ur konfigurationsfil.

4.2

Lagra och hantera data

Data sparas i formatet CSV. CSV är ett format för att lagra tabulerad data. [43]. Avväg-ningen mellan att spara data enligt CSV mot binärt är utvecklarvänlighet då CSV är en filtyp som enkelt hanteras med ett flertal fristående programvaror.

4.3

Labb-miljö

De kvaliteter som eftersträvas i en labb-miljö är främst stabilitet. Martin F. Krafft pre-senterar tre definitioner av termen stabilitet i sin bok Debian System Concepts and

(55)

4.3. LABB-MILJÖ 41 Techniques [44]. Dessa definitioner är;

• Stabilitet under körning, att program inte krashar.

• Stabila funktioner, att användare har en förutsägbar och riklig uppsättning av funktioner och av verktyg.

• Stabilitet ur arkiveringsyfte, att ett mjukvarusystem inte förändras drastiskt över tid.

I denna miljö värderas främst Kraffts första definition. Tester i labb-miljö körs endast under en begränsad tid och använder mycket få funktioner, därav är arkivering och funk-tionstabilitet inte kvaliteter som är väsentliga. Systemet kör Exitmap och analysprogram under flera dagars tid där avbrott inte får ske då mätdata och beräknade resultat kan gå förlorade.

4.3.1

System

Distributionen Debian version 10 av Linux körs på en 8-kärnig Intel-processor med 12 GB fysiskt arbetsminne och lika mycket virtuellt arbetsminne från disk (även benämnt: swap). Mycket resurser i relation till vad arbetet kräver kombinerat med en stabil distri-bution av Linux skapar en robust labb-miljö. Systemets resurser överträffar alltså de krav som ställs av implementationen vilket leder till en nära ideal miljö där oförutsägbara slumpfel och fördröjningar inte är ett problem.

4.3.2

Nätverksuppkoppling

Nätverket, är i denna miljö en lika viktigt resurs som arbetsminnet, Exitmap brukar hela tiden nätverket. För en stabil LAN-uppkoppling brukas ett dedikerat nätverkskort kopplat med ethernetkabel av typ cat6 till en internetuppkopplad router. Uppkopplingen mot internet har en teoretisk högsta hastighet på 1000 Mb/s upp och ner. Nätverkets

(56)

hastighet är i dessa hastigheter inte en felmarginal värd att poängtera, stabiliteten är dock viktigare. Är resultaten från Exitmap konsekventa är dess hastighet oväsentlig, därför är en stabil uppkoppling nödvändigt, något som uppnås i detta fall.

4.4

Automation av tidtagning

Tidtagning med Exitmap-modulen beskriven i kapitel 4.1.1 är en simpel process som hanterar fel på egen hand. Därför kan Exitmap köras av operativsystemet och helt utan tillsyn. Ett vanligt förekommande problem är att kretsar i Tor-processen över-belastas och tvingas stängas ned, men Tor-processen skapar då en ny krets. Under en kort period existerar det ingen krets för trafik från Exitmap att ta till en slutnod. Modulen skickar då domänuppslagen som misslyckas på nytt, i hopp om att en ny krets finns redo i Tor-processen. Antalet försök innan domänuppslaget överges utan ytterligare återförsök är konfigurerbart. I skrivande stund hittar Exitmap mellan 1200 och 1400 stycken slutreläer. Med den labbmiljö beskriven i kapitel 4.3 har modulen för tidtagning exekverats en gång på alla slutreläer efter 30 till 45 minuter. Automation är då konfigurerad att exekvera Exitmap en gång per timme. Cron används för att schemanlägga dessa exekveringar av Exitmap.

4.5

Varierande data

Varierande data är sådant som författaren kan hantera (s.k. variabler) och icke-kontrollerbara yttre faktorer. Variabler innefattar period mellan körning av Exitmap, antal domänupp-slag per slutnod, längd av sub-domännamn på domänuppdomänupp-slagen, val av nod mellan klient och slutnod samt ROC-kurvans konstanter. Dessa variabler presenteras tillsam-mans med de resultat som presenteras i kapitel 5. Yttre faktorer innefattar störningar i Tor-nätverket, blockeringar av relä-operatörer och attacker för att motverka mätningar.

(57)

4.6. ANTAGANDEN 43 Alla dessa yttre faktorer förutom blockeringar av nod-operatörer avvisas då det anses vara utanför omfattningen av denna uppsats. Blockeringar från operatörer av slutreläer uppmanas och respekteras då denna uppsats följer de etiska värderingar beskrivna i kapitel 1.4.

4.6

Antaganden

Då inget webbplatsorakel kan vara helt perfekt och en utvecklares tid är ändlig, görs följande antaganden.

• Alla domännamn är unika. Ett slumpmässigt genererat domännamn ägnat för ett domänuppslag anses vara unikt i datamängden från första körning till sista körning av Exitmap. Därav påverkas inte cache i en slutnod av tidigare körningar.

• De slumpmässiga domännamnen besöks inte av någon annan än författarens mjuk-vara. Därav påverkas inte cache i en slutnod av andra användare än författaren.

• Biblioteket time i Python visar korrekt tid. Kommandot time.time() har inga fel-marginaler.

4.7

Aggregering och korsvalidering programmatisk

Korsvalidering utförs enligt design med Python. Programmet utvecklades för att operera parallellt över flera processorer, detta för att minska tiden för korsvalidering då K-Fold tar längre tid än simpel korsvalidering.

4.8

Grafritning

Matplotlib är ett kodbibliotek för Python för att visualisera data [45]. Matplotlib används för att rita ut punkter på en graf och sedan dra linjer mellan dessa punkter. En linjär kurva

(58)

mellan (0,0) och (1,1) samt en punkt i (0,1) målas ut för referens enligt ROC för att likna den illustrerad i figur 2.5.

(59)

Kapitel 5

Resultat

I detta kapitel presenteras resultat givet av webbplatsoraklet som har genomgått kor-svalidering, dessa resultat presenteras enligt ROC i figur 5.1 och i figur 5.2. Dessa två resultat är från två olika konfigurationer av de varierande faktorerna i designen. Lika för de båda konfigurationerna är att data är framtaget med samma 6 stycken metoder för beräkning av tröskelvärde. Utav dessa metoder för tröskelvärden används en som också användes av Pulls och Dahlberg i deras uppsats [5], denna kallad fastest non cached. För varje beräknat tröskelvärde förskjuts dessa med med ROC-konstanten C, C antar alla heltal från -8 till och med 7, detta är lika för båda konfigurationerna. Utöver de producerade resultaten är även två referenser markerade i graferna, dessa referenser är en svart rak kurva från origo till (1, 1), denna linje den referens som presenteras i figur 2.5, där benämnd Random guess, här benämnd Random Classifier. Den andra referensen är en svart punkt i (0, 1) benämnd Perfect Classifier, i figur 2.5 är denna punkt benämnd Perfect Classification. I figur 5.1 och i figur 5.2 presenteras grafer i form av ROC där data från dessa konfigurationer presenteras. I graferna nedan prickas relationen mellan TPR och FPR ut för olika värden på Metod och C (då Metod är den metod som används för att beräkna tröskelvärde), linjerna dragna mellan dessa punkter är endast för att illustrera påverkan värdet av C har på samma Metod.

References

Related documents

Jag valde denna utbildning efter att arbetat som golvläggare i 3 år och eftersom jag alltid haft ett intresse för säkerhet och tekniska detaljer kändes detta som ett bra sätt

Bakomliggande orsaker till dagens konflikt mellan minoriteten tutsi och majoriteten hutu får enligt många historiker sökas i den för- koloniala eran.. Då växte det produktions-

Hela det amerikanska livet har också bidragit att skapa denna kvinna, så olika alla andra kvinnor. Livskampen — den brådskande, nervösa — har givit henne en djupt

En negativ aspekt av enpatientrum är att personalen inte får samma överblick över patienternas status där varje observation kräver att personalen går in till varje enskild

censorship circumvention system meek used to use Google’s cloud infrastructure to tunnel the traffic of censored users up until May 2016 [17]. While the system was

Han lyfter till slut upp sin hammare och beger sig tillbaka till de andra för att försöka stoppa Loke.. Även Hulken överlever sitt fall, han stannar också upp en sekund och

Även i regnskogar och i öknen använde sig Tor-Erik av insamlings- metoder som sållning, kläckning och insamling- ar på udda biotoper med okonventionella meto- der som gav ett

di vero funt sot virga 6c pedum: 6c quibus eminus pugnant, arcus, fa- gitta, fundae, lapides.