L'anonimato in rete

43
18 luglio 2012 L’ANONIMATO IN RETE ANDREA BRASCHI Indice 1. Introduzione 3 Introduzione 3 1.1. Il problema dell’anonimato 3 1.2. Motivi per essere anonimi 4 1.3. Panoramica sui metodi per risalire all’identit`a 4 1.4. Il nostro modello teorico 5 2. Le informazioni che trasmettiamo involontariamente 6 Le informazioni che trasmettiamo involontariamente 6 2.1. Correlazione di pacchetti e identificazione di una comunicazione avvenuta tra due macchine 6 2.2. Informazioni scambiate negli headers del protocollo http 6 3. I dati che possono venirci richiesti dal Server 9 I dati che possono venirci richiesti dal Server 9 3.1. Operazioni di Fingerprinting 9 3.2. Cookies e sessions 9 3.3. history detection 10 3.4. Script per l’identificazione della macchina 11 3.5. “No Script”: Mozzilla e la disabilitazione dei JavaScript 12 3.6. Script per la geolocalizazzione (javascript e google API) 13 3.7. Alcune considerazioni 13 4. Risalire all’identit` a anagrafica 16 Risalire all’identit` a anagrafica 16 4.1. Simulazione vs pseudonimo 16 4.2. La “raccolta di bit” 16 5. La rete TOR 18 La rete TOR 18 5.1. Una overlay network 18 5.2. Elementi base del circuito 19 5.3. Elementi base della comunicazione 19 6. Instaurazione del circuito 20 6.1. Comunicazione 22 6.2. Privoxy 22 6.3. Analisi critica degli attacchi precedentemente illustrati 23 6.4. Possibili attacchi e controindicazioni 27 6.5. Timing-attack 27 7. Conclusioni 29 1

Transcript of L'anonimato in rete

18 luglio 2012

L’ANONIMATO IN RETE

ANDREA BRASCHI

Indice

1. Introduzione 3

Introduzione 3

1.1. Il problema dell’anonimato 3

1.2. Motivi per essere anonimi 4

1.3. Panoramica sui metodi per risalire all’identita 4

1.4. Il nostro modello teorico 5

2. Le informazioni che trasmettiamo involontariamente 6

Le informazioni che trasmettiamo involontariamente 6

2.1. Correlazione di pacchetti e identificazione di una comunicazione avvenuta tra

due macchine 6

2.2. Informazioni scambiate negli headers del protocollo http 6

3. I dati che possono venirci richiesti dal Server 9

I dati che possono venirci richiesti dal Server 9

3.1. Operazioni di Fingerprinting 9

3.2. Cookies e sessions 9

3.3. history detection 10

3.4. Script per l’identificazione della macchina 11

3.5. “No Script”: Mozzilla e la disabilitazione dei JavaScript 12

3.6. Script per la geolocalizazzione (javascript e google API) 13

3.7. Alcune considerazioni 13

4. Risalire all’identita anagrafica 16

Risalire all’identita anagrafica 16

4.1. Simulazione vs pseudonimo 16

4.2. La “raccolta di bit” 16

5. La rete TOR 18

La rete TOR 18

5.1. Una overlay network 18

5.2. Elementi base del circuito 19

5.3. Elementi base della comunicazione 19

6. Instaurazione del circuito 20

6.1. Comunicazione 22

6.2. Privoxy 22

6.3. Analisi critica degli attacchi precedentemente illustrati 23

6.4. Possibili attacchi e controindicazioni 27

6.5. Timing-attack 27

7. Conclusioni 291

2 ANDREA BRASCHI

Conclusioni 29

7.1. I rischi che si corrono in rete 29

8. Definizionie del modello sperimentale 32

Definizionie del modello sperimentale 32

8.1. Esperimenti 33

Riferimenti bibliografici 39

9. Appendici 40

Appendici 40

.1. Le macchine virtuali 40

.2. L’entropia nella teoria dell’informazione 43

L’ANONIMATO IN RETE 3

1. Introduzione

1.1. Il problema dell’anonimato. Esistono diversi motivi che spingono un utente della

rete a voler restare anonimo, cosı come esistono diversi modi per non essere identificabili;

per contro esistono diversi interessi a risalire all’identita di un utente di un certo servizio

o di una certa comunicazione e quindi anche diversi metodi per farlo.

Innanzi tutto a seconda del tipo di informazioni che si vogliono reperire si possono

distinguere quattro livelli di profondita nell’identificazione:

• stabilire che tra una determinata macchina e un determinato server e avvenuta o

sta avvenendo una comunicazione.

• riconoscere un’utente che ritorna al server e quindi correlare le sue vecchie navi-

gazioni a quelle precedenti, questa operazione a sua volta puo essere effettuata in

diversi modi:

- tramite l’utilizzo di cookies e sessions.

- risalire all’identita fisica della macchina (MAC, NIC e caratteristiche fisiche).

- riconoscendo le abitudini dell’utente( history detection, informazioni nella

cache etc.)

• geolocalizzare l’utente e la macchina client.

• risalire proprio all’identita anagrafica dell’utente della macchina client.

Figura 1. Schema riepilogativo dei livelli di identificazione

Risulta evidente che piu si scende nell’albero dei gradi di identificazione piu il riuscire

in tale intento risulta tecnologicamente complesso.

Obbiettivo di questa tesi e stata l’analisi di alcuni attacchi all’identita del client (nei

livelli di discrezione sopra citati) e dei principali metodi di identificazione. Successiva-

mente e stata analizzata ed introdotta una rete di anonimizzazione (TOR [3]) e gli stessi

metodi sono stati utilizzate per condurre un’analisi critica di tale rete, anche tramite la

realizzazione di uno di questi attacchi (timing-attack [7]).

4 ANDREA BRASCHI

1.2. Motivi per essere anonimi. Una persona che utilizza la rete puo essere interessata

a non rivelare la propria identita per non essere tracciata negli acquisti che compie su

internet e per non essere schedata nei propri interessi e quindi non essere sommersa da

pubblicita mirate dalle quali potrebbe essere piu facilmente raggirata.

In altri casi delle aziende possono essere interessate a non rendere facilmente rivelabili

le conversazioni con i propri operatori, per ragioni di brevetto, oppure studi medici o

legali devono garantire, per legge, che venga mantenuta la riservatezza delle informazioni

da loro trattate.

Ancora, la magistratura o le forze dell’ordine in alcuni casi debbono essere sicuri che

dalle loro conversazioni non si riesca a capire la posizione dei propri agenti e che quindi

un’osservatore esterno che intercetti le comunicazioni non riesca a risalire ai reali desti-

natari e/o ai contenuti. Lo stesso discorso puo esser valido per dissidenti, informatori,

giornalisti o chiunque possa essere messo in pericolo dalle informazioni che trasmette (o

dal semplice fatto di trasmetterle).

In altri casi non e sufficiente nascondere il contenuto, ma e importante che venga nasco-

sta l’avvenuta comunicazione tra due macchine (si pensi al caso di un sito con contenuti

illeciti, non interessano i contenuti passati basta saper che il tale utente ha cercato di

visualizzare una qualunque pagina del sito).

Piu semplicemente si puo pensare che un’utente della rete possa non voler essere traccia-

to e riconosciuto quando effettua delle ricerche perche spesso i motori di ricerca profilano

gli utenti per capire le aree dei loro interessi e quindi essere in grado di fornire risposte alle

loro ricerche molto piu mirate, questo pero spesso, alla lunga, porta alla visualizzazione

delle stesse pagine e soprattutto certe volte i risultati visualizzati ne tralasciano alcuni

importanti; quindi durante alcune ricerche puo essere utile connettersi allo stesso motore

di ricerca, ma senza farsi riconoscere come lo stesso utente di una navigazione precedente.

Il problema puo anche essere analizzato dal lato opposto, infatti puo essere interessante

cercare di capire quali sono dei metodi sicuri per risalire all’identita di chi usa la rete

per compiere determinate operazioni che possono essere collegate, direttamente o indi-

rettamente, a crimini e quindi fornire alle forze dell’ordine efficaci strumenti che possano

condurre all’identita di persone che si avvalgono della rete per compiere reati.

1.3. Panoramica sui metodi per risalire all’identita. In base, quindi, alle necessita

esistono diversi metodi per riconoscere l’utente alle spalle della conversazione.

Per accertare l’esistenza di una comunicazione tra due macchine e necessario inter-

cettare e analizzare il traffico di rete, oppure osservare il traffico in ingresso e in uscita

a determinate macchine ed eseguire correlazioni sul traffico. Una ulteriore possibilita e

quella di generare un determinato pattern di dati in uscita da un server che si controlla

e vedere se viene rilevato un traffico simile all’ingresso di qualche client per individuare

l’avvenuta comunicazione, analogamente usando script lato client si puo far emettere al

client stesso un particolare pattern. Questi tipi di attacchi sono detti timing-attack[7][9]

e talvolta riescono anche a danni di reti anonime a bassa latenza (TOR[3]).

Per riconoscere un returning-client, invece, puo essere sufficiente l’utilizzo di cookies o

sessions, ma in certi casi non e detto che basti e quindi bisogna ricorrere a metodi piu

artificiosi e all’utilizzo di appositi script lato server e lato client. Ad esempio si puo risalire

L’ANONIMATO IN RETE 5

all’identita della macchina, in quanto e un servizio fornito dalla gran parte dei linguaggi

di scripting web, perche puo essere anche semplicemente usato per fornire al client i

dati con impaginazione piu consona ad essere visualizzati sulla propria macchina. Inoltre

esistono piu sofisticate tecniche di scripting che si basano sull’analisi dei tempi impiegati

da una macchina per svolgere determinati algoritmi che rappresentano una caratteristica

fortemente correlata al modello di computer usato e alla sua configurazione[8][4]. E ancora

si possono usare tecniche di profilazione dell’utente come history detection etc.[6] etc.

Per risalire, invece, alla vera e propria identita anagrafica dell’utente che naviga in rete,

puo essere necessario far ricorso a piu informazioni e quindi ricorrere ad analisi incrociate

a partire dall IP e, ad esempio dagli access-point visti dalla NIC (metodo usato per

geolocalizzare un utente, anche con ottima precisione).

Obiettivo di questa tesi e stato anche capire quante informazioni si e in grado di re-

cuperare con i pacchetti in entrata/uscita dal server o dal client (analizzati dall’uno per

risalire all’altro).

Figura 2. schema logico della comunicazione in rete

1.4. Il nostro modello teorico. Scopo di questa tesi non e stato quello di analizzare

la mole di informazioni carpibili attraverso l’uso di exploit o bachi presenti all’interno del

sistema, ma quello di analizzare i dati reperibili in un’analisi entro le specifiche, quindi

ogni sistema qui presentato verra analizzato e utilizzato secondo le proprie specifiche senza

esser forzato a comportamenti inusuali.

Sorprendentemente si e dimostrato che nel web esistono una serie di comportamenti e

standard [6] che in realta rappresentano una minaccia per la privacy degli utenti della

rete e che, quindi, e utile correre ai ripari o per lo meno divenire piu consapevoli dei rischi

ai quali si va incontro muovendosi nel web.

6 ANDREA BRASCHI

2. Le informazioni che trasmettiamo involontariamente

E’ fondamentale in primo luogo capire quali sono i dati che noi stessi (il nostro browser)

forniamo inconsapevolmente ad un server presso il quale ci connettiamo, o ad un osser-

vatore esterno della nostra rete che tramite un packet-sniffer come WireShark cattura i

pacchetti che emettiamo.

2.1. Correlazione di pacchetti e identificazione di una comunicazione avvenuta

tra due macchine. Nel caso in cui una macchina client, normalmente, si sia connessa ad

un server usando un browser e trasferisca dei dati con un protocollo, come l’ http, senza

usare particolari proxy o reti di anonimizzazione, non risulta assolutamente difficile risalire

all’avvenuta comunicazione tra le due macchine. Infatti se la connessione e gia avvenuta

basta controllare i file di log del server, mentre se la connessione e in atto e sufficiente

con uno sniffer di rete porsi in mezzo al canale di comunicazione delle due macchine per

riuscire a capire se queste si stanno, o meno, scambiando informazioni a partire anche

solo dagli header dei pacchetti sniffati, come si mostra negli esempi.

Figura 3. un esempio di cattura con WireShark

2.2. Informazioni scambiate negli headers del protocollo http. Gli headers dei

pacchetti trasmessi sono facilmente accessibili a tutti (server ed osservatori della rete) a

qualsiasi livello. Dagli header del protocollo TCP e possibile ricavare mittente e destinata-

rio (indirizzo ip) del messaggio, ma ben piu importanti sono le informazioni che ci vengono

fornite dagli header http; essi infatti contengono informazioni sullo user-agent connesso

(un browser o un server?), la lingua accettata, e quindi, indirettamente, la nazionalita

di provenienza del messaggio; inoltre, nel caso in cui lo user-agent sia un server abbiamo

anche time-stamp e versione del server.

L’ANONIMATO IN RETE 7

Figura 4. un esempio di un file di log generato da Apache2 (/var/log/access1.log)

Figura 5. Header http catturato con WireShark in uscita dal client

8 ANDREA BRASCHI

Figura 6. Header http catturato con WireShark in uscita dal server

L’ANONIMATO IN RETE 9

3. I dati che possono venirci richiesti dal Server

In seconda istanza e importante capire quali sono le informazioni che ci possono venir

chieste da un server che cerchi, in modo attivo, di acquisire informazioni per risalire alla

nostra identita o per lo meno tracciarci nelle nostre navigazioni. Tale operazione e detta

fingerprinting in quanto l’attaccante cerca con tutti i mezzi a lui possibili di costruirsi

un’impronta, un segno univoco che possa distinguere il nostro device nelle richieste che

effettua al server e tracciare le navigazioni.

3.1. Operazioni di Fingerprinting. In questo capitolo vengono trattati in dettaglio i

piu comuni strumenti usati per riconoscere un returning client, partendo dai piu semplici

cookies e sessions, per concludere illustrando alcuni metodi piu complessi ma sorprenden-

temente piu efficaci e precisi.

Ogni utente e ogni macchina lascia dietro di se un’ impronta praticamente univoca

(e molto improbabile trovare due utenti con le stesse caratteristiche). Quest’impronta

e data dall’insieme delle caratteristiche fisiche della macchina: il tipo di browser e la

sua configurazione, il sistema operativo, l’architettura del processore, alcune caratteristi-

che dello schermo etc. A questi dati sono da aggiungersi informazioni riguardanti i siti

precedentemente visitati dall’utente della macchina e presenti nella history del browser.

E interessante poter analizzare quest’insieme di dati perche sono uno strumento potente

di identificazione dell’utente e da un lato agevolano la sicurezza dei sistemi informativi, in

quanto forniscono un metodo in piu da affiancare all’utilizzo delle credenziali per garantire

maggiore sicurezza, ma dall’altro sono un potente mezzo per tracciare gli utenti del web.

In seguito sono stati trattati alcuni dei principali metodi.

3.2. Cookies e sessions. Essendo il protocollo http stateless, fin da subito si e evi-

denziata la necessita di trovare un metodo che potesse servire per fornire un servizio di

riconoscimento degli utenti e che quindi sopperisse a questa mancanza dell’http. Per que-

sto si e ricorsi all’adozione dei cookies e piu recentemente delle sessions, che altro non sono

che file salvati sul client e contenenti identificatori univoci; tali file vengono ritrasmessi al

server all’atto del download di nuove pagine, permettendo cosı di riconoscere il client. Il

funzionamento dei cookies e delle sessions e analogo, cambiano solo le modalita di imple-

mentazione, ma analogamente corrispondono a delle variabili che possono essere salvate

dal server sul client ed essere richieste qualora si voglia dal server. In ogni cookie inoltre

puo essere impostato un tempo di vita, scaduto il quale il cookie non e piu considerato

valido, viene eliminato e deve essere rigenerato.

E’, quindi, evidente come l’uso dei cookies comporti un vantaggio proprio per l’utente

del web il quale non deve, in questo modo, autenticarsi in ogni pagina e puo piu como-

damente usufrire di informazioni e contenuti a lui riservati in maniera semplice, avendo

comunque le garanzie che le sue informazioni riservate rimangano tali. E pero facilmente

intuibile quali controindicazioni possa avere l’utilizzo di tali strumenti, infatti, non solo

all’interno dello stesso sito si puo tener traccia dei percorsi seguiti dall’utente e quindi

dei suoi gusti o preferenze, ma anche all’interno di piu siti, i quali semplicemente siano in

accordo sul formato (semplicemente i nomi delle variabili) del cookie e al limite abbiano

un database comune da cui si possa tracciare la navigazione di un utente in una rete di

10 ANDREA BRASCHI

contenuti piu vasta. Google gia fornisce un servizio del genere con opportune API sia per

generare pubblicita ad-hoc per l’utente sia per capire quali sono gli utilizzi che vengono

fatti di determinate piattaforme per poterne migliorare l’usabilita (in questo campo Google

Analytics rappresenta una potente dashboard [5]).Altro caso importante da evidenziare e

l’esistenza di mezzi come evercookie [10]( detti supercookies) che rappresentano l’essenza

della possibilita di un utilizzo malevolo di questi strumenti, infatti attraverso particolari

tecniche, analizzate in seguito, il suddetto supercookie viene salvato sul pc in modo che

sia veramente difficile elimanarlo.

3.2.1. evercookie never forget. Esiste, quindi, una categoria di cookies chiamata supercoo-

kies che non vengono salvati dal browser in maniera ordinaria, ma tramite API JavaScript

o Flash, le quali installano il cookies sul nostro computer in maniera piu persistente, tal-

volta nascosta e comunque sicuramente piu difficile da eliminare; un esempio di questo

tipo di supercookie e Evercookie[10], ma ne esistono veramente tanti e non e difficile

pensare a metodi alternativi per inventarne di ulteriori.

Evercookie [10] e un’ API JavaScript realizzata da Samy Kamkar, la quale ha come

obbiettivo quello di salvare sul client un cookie in maniera persistente. L’idea alla base di

evercookie e quella di salvare i dati usando tanti modi diversi messi a disposizione dall’

html, il JavaScript e Flash. Inoltre ad ogni rilettura Evercookie controlla anche che nessun

tipo di cookies usato per essere salvato sul pc sia stato cancellato dall’utente altrimenti lo

ricrea. I metodi che Evercookie usa sono i seguenti 13 ma l’autore nella documentazione

presente sul sito ne promette altri nelle successive release:

• Standard HTTP Cookies

• Local Shared Object(Flash Cookies)

• Silverlight Isolated Storage

• Salvare i cookies nei valori RGB di un’immagine PNG generata in automatico e

salvata forzatamente nella cache usando poi il tag Canvas di HTML5 per rileggere

i pixels (cookies)

• Salvare i cookies nella History del Browser

• Salvare i cookies negli ETags HTTP

• Salvare i cookies nella Cache

• window.name caching

• Internet Explorer userData storage

• HTML5 Session Storage

• HTML5 Local Storage

• HTML5 Global Storage

• HTML5 Database Storage via SQLite

3.3. history detection. Un attacco importante all’anonimato e alla privacy di un utente

del web e la history detection, che consiste nel tentare di risalire alla cronologia del

browser del client connesso. Tali informazioni sono molto piu discriminanti di quanto

possa sembrare, infatti possono sia dare molti indizi riguardo ai gusti dell’utente sia

possono, rapidamente e con bassi costi d’implementazione, rivelare che l’utente ha di

recente compilato form, frequentato social networks o letto feed rss di news site etc. etc.

L’ANONIMATO IN RETE 11

dei quali puo essere noto che lascino cookies o comunque informazioni in cache che possono

facilmente ricondurre addirittura all’identita anagrafica dell’utente.

In [6] gli autori hanno compiuto un’importante analisi di uno dei principali metodi di

hostory detection: il css-based history detection.

E esperienza comune dell’utente internet che se in una pagina web sono presenti dei

link ad altri siti e questi sono gia stati visitati dall’utente stesso appariranno di un colore

diverso da quelli ancora non visitati, questa e una caratteristica molto importante nella

creazione di siti e servizi sul web ed essa e caldamente consigliata da tutti gli esperti

di usabilita non che dalla W3C. A tale proposito, quindi, sono stati attrezzati linguaggi

come il JavaScript e il CSS per favorirne l’implementazione. L’attacco css-based history

detection a partire da questo fatto, tramite l’opportuno uso di JavaScript, genera in

una pagina HTML una serie di collegamenti (〈a〉) e valuta il colore con cui vengono

rappresentati e inoltra al server tali dati raccolti.

L’articolo [6] presenta uno studio sulla fattibilita di tale attacco dimostrando la rea-

lizzazione di un algoritmo in grado di analizzare ben 30,000 links al secondo. Inoltre

nell’articolo e stato dimostrato che ben il 76% degli utenti sotto posti a tale test sono

risultati vulnerabili a tale attacco e che, tramite una successiva analisi dei dati richiesti

da alcuni siti, e stato possibile risalire perfino allo zip code US (codice postale) del 9,2%

degli utenti. Lo scopo dello studio non era quello di risalire alle informazioni private de-

gli utenti, ma solo di dimostrarne la fattibilita, si presume quindi che uno studio mirato

alla ricerca di tali informazioni basandosi su tale attacco possa tranquilamente ottenere

risultati migliori.

E quindi dimostrato che tale vulnerabilita nella CSS sia una minaccia reale ma pur-

troppo ancora ne i grandi browser ne la W3C sono stati in grado di risolvere il problema

in quanto ormai grande parte del web si basa su questo standard e quindi la questione

non e di facile risoluzione.

3.4. Script per l’identificazione della macchina. I JavaScript forniscono un poten-

tissimo strumento per l’identificazione sia dell’utente che della macchina da egli utilizzata.

Infatti la tecnologia JavaScript e in continua evoluzione e non e implementata allo stesso

modo su tutti i browser, questo fa si che una macchina impieghi tempi diversi nell’esecu-

zione di determinate operazioni e grazie proprio allo studio di queste tempistiche e stato

dimostrato che e possibile classificare i diversi tipi di browser, inoltre, sebbene con minor

precisione, e possibile anche raccoglier informazioni riguardanti il sistema operativo e ad-

dirittura l’architettura del processore[8]. Tutte queste informazioni sono da aggiungere a

quelle che si possono naturalmente ricavare riguardo la dimensione dello schermo, la sua

risoluzione e i suoi colori, caratteristiche che JavaScript riesce a recuperare senza grossi

probelmi, in quanto necessarie per poter fornire all’utente una migliore impaginazione.

Tutti questi dati vanno cosı a costituire un’arma a doppio taglio: da un lato il server avra

a disposizione maggiori elementi per effettuare autenticazoni, (e veramente difficile che

una persona che sia riuscita ad entrare in possesso di credenziali di un utente riesca anche a

ricreare le stesse condizioni software/hardware dell’utente originario) e si pensa che questo

strumento un domani possa anche essere usato dalle banche, o comunque, da tutti quei

servizi online particolarmente riservati che usufruiscono di chip per la generazione di chiavi

12 ANDREA BRASCHI

(generalmente numeri pseudocasuali) che rappresentano una vera e propria scomodita,

nonche un rischio (perdita del chip), per l’utente. Dall’altro lato facilitano il compito ad

un attaccante che volesse tracciare la navigazione di un utente attraverso diversi siti,

anche se quest’ultimo sta usando una rete anonima come TOR, in quanto comunque la

sua macchina lascerebbe una vera e propria “impronta digitale” del proprio passaggio.

Nel loro studio K. Mowery et al.[8] per dimostrare la fattibilita di tale operazione di

fingerprinting tramite JavaScript, utilizzando benchmark come SunSpider e V8 hanno

messo a punto ben 39 test basati ad esempio su cicli innestati, generazione di numeri

casuali e operazioni aritmetiche. Eseguendo questi test su oltre un migliaio di macchine

con le opportune messe a punto per migliorare la varianza dei dati raccolti, han dimostrato

esser possibile classificare le caratteristiche delle macchine in base al risultato dei test. Di

fatto ogni macchina ha restituito un vettore a 39 dimensioni (i 39 tempi dell’esecuzione

dei test) e dopo aver costruito un idoneo training-set sono stati in grado di classificare

macchine sconosciute solo tramite l’analisi di tale vettore, usando la semplice distanza

euclidea (nel caso di identificazione di browser e OS) o il metodo del 1-nearest-neighbour

(nel caso dell’architettura del processore). Quest’analisi ha dimostrato che tramite questo

tipo di fingerprinting e possibile ottenere un informazione riguardo la macchina utilizzato

con ben 18 bit di effettiva entropia1 [8].

3.5. “No Script”: Mozzilla e la disabilitazione dei JavaScript. Intuitivamente si

puo pensare che una possibile soluzione a tale problema dovuto alla ingente quantita

di informazioni passate da i JavaScript sia quella di disattivarli. La questione risulta

comunque piu complicata di quanto uno si possa aspettare. Si consideri ad esempio la

possibilita di usare un’apposito plug-in del browser che adempia a tale obbiettivo, come

ad esempio il diffuso “No Script” per Mozila; in realta l’utilizzo di questo plug-in, come

analizzato in [8],puo far trapelare molte piu informazioni di quante si possa immaginare.

Si consideri, ad esempio, lo specifico caso di “No script”, il suo funzionamento prevede che

tutti gli script vengano bloccati, addirittura nella fase di fetching. Risulta pero scomodo

avere tutti gli script bloccati in quanto in molti casi questi sono fondamentali alla corretta

visualizzazione di pagine web o all’esecuzione di piccoli giochi. Quindi e implementata

una, cosı detta, white-list nella quale l’utente aggiunge esclusivamente i siti trusted che e

solito frequentare e dei quali quindi e disposto ad eseguire gli script. I problemi cominciano

quando un sito malevolo riuscisse per un qualsiasi motivo ad entrare in questa lista, usando

piu o meno sofisticati metodi dell’ingegneria sociale (per esempio se nella pagina ci fosse

un gioco l’utente sarebbe obbligato a permettere l’esecuzione degli script per eseguire il

gioco), ed eseguire un suo script. In[8], infatti, e stato dimostrato che e possibile creare

uno script che riesce ad analizzare la white-list e capire cosı i gusti dell’utente e avere un

modo efficace per riuscire a distinguerlo in maniera univoca.

La realizzazione di tale script e relativamente semplice. Per determinare se un dominio

appartiene o meno alla white-list basta cercare all’interno di una pagina del dominio un

file .js che venga importato e analizzare se nello script vi e qualche variabile che viene

settata, quindi basta importare lo script nella nostra pagina di test e con un ulteriore

script controllare o meno l’esistenza di tale variabile: se la variabile esiste il dominio e

1cfr Appendice .2

L’ANONIMATO IN RETE 13

nella white-list, altrimenti no. In [8]si e mostrato come sia possibile generare in maniera

automatica una sofisticata pagina che compia un gran numero di queste analisi utilizzando

un web-spider e un tool per analizzare un gran numero di domini (nella fattispecie circa

700) in tempi ragionevoli.

3.6. Script per la geolocalizazzione (javascript e google API). Un’informazione

che porta con se molti bit di informazione e la nostra posizione geografica, se il dispositivo

da cui ci connettiamo ne e provvisto e possibile risalire a tale dato tramite GPS, oppure

con meno accuratezza si puo risalire alla posizione geografica tramite l’indirizzo IP, inoltre

esiste anche un’altro metodo chiamato wifi router-based geolocation che riesce ad effettuare

rilevamenti con una precisione notevole.

Forse a molti non e noto che tra le informazioni raccolte dalla Google-car, vi sono anche

tutte le posizioni e i BSSID degli access-point wifi. Tali dati sono l’elemento base della

wifi router-based geolocation tale metodo consente di ottenere informazioni sulla posizione

geografica il piu delle volte con un errore dell’ordine dei 50 metri.

L’algoritmo e semplice e consiste nel farsi inviare dal client i BSSID degli access-point

visti dalla NIC con le relative potenze del segnale; dalle potenze del segnale e quindi pos-

sibile ricavare la distanza dall’emettitore e quindi di conseguenza conoscendo la posizione

di almeno tre di questi access-point e possibile risalire alle coordinate del client.

Per fortuna il sistema di Google per poter effettuare una tale analisi ha bisogno del

nostro consenso, di contro pero fornisce un’API che dato un BSSID ci restituisce le coor-

dinate dell’access-point, quindi un qualsiasi attaccante scrivendo un JavaScript che gli

fornisca i dati della scheda di rete e poi in grado di risalire alle coordinate di un client a

lui connesso senza che questi ne sia a conoscenza.

3.7. Alcune considerazioni. Dagli articoli analizzati e emerso che le caratteristiche

delle nostre macchine, sia quelle fisiche (microprocessore, RAM etc) che quelle software

come il sistema operativo, il tipo di browser usato con relative cache e history ma anche

con plug-in che possiamo avere installato e le loro specifiche configurazioni possono fornire

a tutti gli effetti un impronta inequivocabile ed univoca di quella che e la nostra identita

nel web rendendoci facilmente tracciabili.

A tale scopo la Electronic frontier foundation ha iniziato un progetto, Panopticlick,

per dimostrare la potenzialita di questo tipo di informazioni, proprio in termini di bit

di entropia2. Qualsiasi utente puo sottoporsi a questa analisi contribuendo a fornire da-

ti significativi per le ricerche del gruppo sperimentale, nonche verificando il grado di

tracciabilita del proprio browser.

L’algoritmo di fingerprinting usato da [4] raccoglie una serie di dati usando gli strumenti

forniti da JavaScript e Flash, in particolare si e rivelata molto importante l’analisi svolta

sui tipi di fonts installati, che derivano dai plugins installati. Si e visto come l’ordine con

cui tali fonts vengono riportati dipenda dalla struttura del file system e quindi, di fatto

dall’ordine con cui vengono installati, diventando un caratteristica molto particolare e,

quindi, portatrice di un’alta entropia. Ancora, si e visto come sia possibile e utile ottenere

l’elenco dei plugins e dei MIME installati, in questo modo non solo si aumenta in maniera

2cfr Appendice .2

14 ANDREA BRASCHI

Figura 7. Risultato del Test di Panopticlick

consistente l’entropia delle informazioni raccolte, ma si mostra come gli stessi pluggins

anti-tracking, col solo fatto di essere installati, forniscano un importante informazione

soprattutto se sono globalmente poco diffusi. Un altro inconveniente dovuto all’utilizzo di

pluggin anonimizzanti e il fatto che spesso rispondono occultando alcune caratteristiche

nell’enumerazione, oppure simulando header di differenti user-agent ma poi testati su

alcuni tempi di risposta si comportano diversamente dalle aspettative creando ancora

L’ANONIMATO IN RETE 15

una volta una combinazione di informazioni singolare e quindi con un’alta entropia.

Inoltre gli autori di [4] pongono un notevole dilemma sulla debuggability dei browser

o dei pluggin, infatti gli sviluppatori tendono a far sı che un server possa facilmente

ottenere informazioni riguardo alla versione (e micro versione) dei plugin per agevolare

la segnalazione di problemi e bug, queste informazioni pero ancora una volta sono una

combinazione ad alta entropia e permettono di ottenere dati fondamentali per tracciare

gli utenti del web. E quindi importante che gli sviluppatori giungano in fretta ad un buon

compromesso per poter garantire la debuggability e al contempo la non tracciabilita.

Un ultimo punto trattato dall’EFF e la questione dell’evoluzione tecnologica; si e visto

come, anche se gli strumenti che si interfacciano col web sono in continua evoluzione e,

quindi con essi mutano anche i fingerprint, le mutazioni non siano cosı radicali e in realta

possano essere benissimo seguite da un semplice algoritmo euristico permettendo cosı una

tracciabilita prolungata nel tempo.

3.7.1. code injection. E rilevante notare che tali informazioni non possono essere carpite

solamente da un server malevolo, ma e sufficiente che l’attaccante abbia anche solo l’acceso

alla rete del server, in modo da poter catturare il traffico entrante e uscente da tale nodo,

infatti tramite attacchi del tipo man in the middle (ad es l’arp poisoning) e possibile

contraffarre I pacchetti sniffati e aggiungervi il codice malevolo per ottenere le informazioni

desiderate. Nel codice in questione bastera poi aver la cura di trasmettere I dati di nostro

interesse nelle query delle pagine successive nella navigazione del nostro utente in modo

cosı di poterle recuperare o dai log del server o ancora una volta sniffando I pacchetti in

entrata senza assolutamente essere invasivi.

3.7.2. come fare per non essere tracciati. Un buon modo per non essere tracciati e rinco-

nosciuti risulta, quindi, quello di impedire al sever di memorizzare informazioni sul nostro

dispositivo, disabilitando ogni possibile cookie o session. Tale azione comporta, d’altro

canto, che non potremo usufrire di una rete a stati e di tutti i servizi relativi a tale funzio-

ne. Questa operazione e, poi, resa piu ardua dall’esistenza di innumerevoli supercookies,

quindi l’utente che non volesse farsi tracciare dovrebbe anche bene informarsi su tali stru-

menti e prevenirne la memorizzazione. Inoltre bisogna anche difendersi dagli altri possibili

modi che un server puo avere per tracciare un utente. A tali scopi e necessario impedire

l’esecuzione di qualsiasi programma lato client (JavaScript, Flash etc.), ancora una volta

a scapito dell’usabilita del web.

Ma anche rinunciando a tutto non si puo stare tranquilli, in quanto, proprio, questa

configurazione molto particolare del browser potrebbe fornire una nostra impronta univoca

e quindi renderci molto facilmente tracciabili.

Una possibile soluzione potrebbe consistere nell’uso di un proxy a livello di rete e a

livello applicativo e una volta identificati i dati che vengono richiesti come fingerprint

modificarli ad ogni richiesta cercando sempre di usare combinazioni differenti, di modo

da avere un’impronta diversa ad ogni pagina che si scarica, inoltre se si conoscono i

meccanismi di fingerprinting usati dal determinato server sul quale si vuole agire non

tracciati risulta facile automatizzare tale operazione, in questo caso come vedremo in

seguito puo anche essere efficace l’utilizzo di proxy rete come Privoxy e reti anonime

come TOR.

16 ANDREA BRASCHI

4. Risalire all’identita anagrafica

Figura 8. parte dello schema di comunicazione che interessa il passaggio

di informazioni personali rigurdanti l’utente

Come risulta dallo schema iniziale, l’ultimo step, nonche il piu difficoltoso e il riuscire

a risalire, tramite le informazioni della navigazione, all’identita anagrafica della persona

fisica che, in un determinato momento, sta usando la macchina.

Tale accuratezza, e difficilmente ottenibile senza il consenso dell’utente, il quale di sua

spontanea volonta ceda questi suoi dati personali.

Nell’ambito di questa tesi, come gia precedentemente detto nella definizione del modello

teorico, si e presupposto il perfetto rispetto delle regole da parte di tutti gli elementi e gli

individui in gioco; percio non sono stati trattati i casi in cui un utente sia stato interessato

a falsificare i propri dati personali ma, al limite, si e considerato il caso in cui tale individuo

abbia avuto l’interesse di non rivelarli. Allo stesso modo non si sono analizzati i casi in

cui il server, o un piu generico attaccante, abbiano cercato in maniera attiva di ottenere

dati personali e identificativi dell’utente attraverso forzature dei sistemi.

Si sono trattati, invece i casi, in cui tutte le operazioni si sono svolte in maniera legale;

quindi si sono brevemente introdotti i principali punti riguardanti la trattazione di dati

esposti in [2].

4.1. Simulazione vs pseudonimo. Per prima cosa e importante evidenziare come la

legge permetta ad una persona fisica utente del web di non rivelare la propria identita su

internet e quindi di poter usare un pseudonimo. Tale affermazione e vera entro certi limiti,

infatti tale operazione diventa reato di simulazione nel momento in cui chi la compie ne

riceve in ingiusto guadagno o e causa di un altrui danno.

4.2. La “raccolta di bit”. Secondo il decreto [2] una persona fisica, una persona giuridi-

ca, la pubblica amministrazione e qualsiasi altro ente, associazione od organismo possono

richiedere, per un determinato trattamento, i dati personali degli utenti dei loro servi-

zi, dovendo pero garantire agli utenti il rispetto di determinate regole e vincoli, i quali

ad esempio impongono che non vengano rivelati dati personali sensibili etc.(per una piu

dettagliata trattazione si rimanda proprio al decreto [2]).

Un server puo quindi o richiedere all’utente dei dati personali identificativi al fine di,

appunto, identificarlo, oppure puo raccogliere, tramite le suddette operazioni di finger-

printing, sufficienti dati da riuscire a definire inequivocabilmente e risalire all’identita

anagrafica dell’utente.

Sulla Terra ci sono, circa, 6 miliardi di persone; quindi come si puo ben vedere, par-

tendo dalle definizioni fornite precedentemente, una serie di informazioni con un entropia

L’ANONIMATO IN RETE 17

effettiva di 33 bit e in grado di definire in maniera univoca un essere umano. Quindi qua-

lora un sistema fosse in grado di ottenere tale numero di informazioni sarebbe in grado di

tracciare univocamente un utente del web, ma soprattutto potrebbe risalire alla persona

fisica che sta utilizzando la macchina client.E importante notare subito come tutte queste

informazioni, non debbano e non possano riferirsi soltanto alla macchina ma anche all’u-

tente, questione che rende ancora piu difficile la raccolta (soprattutto se l’utente non li

vuole fornire o li falsifica) di un’ingentissima quantita di dati. Quest’operazione utopica e,

pero, resa molto piu realizzabile di quanto si possa pensare, se si utilizzano informazioni

come la geolocalizzazione e dati relativi alle abitudini sul web (history detection).

18 ANDREA BRASCHI

5. La rete TOR

A questo punto risulta interessante introdurre uno dei piu diffusi metodi di anonimiz-

zazione e valutarne l’effetto sugli attacchi all’anonimato precedentemente illustrati, so-

prendentemente diverra evidente che ancora si riescono a reperire una notevole quantita

di informazioni.

Figura 9. schema logico del posizionamento della rete TOR all’interno

dello schema di comunicazione precedentemente visto

TOR( the onion router )[3] e un progetto open source, che si pone l’obbiettivo di offrire

una rete anonima. A differenza di altri precedenti servizi la rete TOR offre un servizio a

bassa latenza, per cui riesce a supportare la grande maggioranza dei servizi di maling e chat

del web, in quanto benche la comunicazione sia rallentata e pero di gran lunga piu veloce

di quella fornita da servizi ad alta latenza, per via dell’utilizzo di algoritmi di controllo

della congestione e una struttura a leaky pipe. Questa rete e circuit based per cui ogni

client TOR instaura periodicamente un circuito, negoziando con ogni singolo hop (nodo

della rete) una session key, per cui garantisce che la comunicazione avvenga in maniera

sicura, e soprattuto che nessun’osservatore analizzando il traffico in uscita e in entrata

da un nodo sia in grado di correlarlo e ricostruire effettivamente il percorso. A differenza

delle precedenti versioni, l’ultima release di TOR usa un’unico circuito per piu flussi

TCP, questo per garantire migliori prestazioni in quanto la creazione dei circuiti costa

molto tempo, comunque per garantire l’anonimato e necessario periodicamente cambiare

il circuito e quindi distruggere quello vecchio. Ogni nodo all’interno del circuito conosce

solo i nodi a lui adiacenti, ma non le loro chiavi che sono note solo all’Onion proxy che

sta usando rete per comunicare, al momento della distruzione del circuito tutti questi dati

vanno persi. Un nodo puo essere attraversato da piu circuiti e un circuito puo portare piu

stream di dati.

Per favorine l’usabilita i proxy TOR forniscono un’interfaccia di Proxy SOCKS per cui

e garantito il supporto alla stragrande maggioranza delle possibili applicazioni, al costo,

pero, di una maggiore lentezza dovuta al fatto di incapsulare il TCP sul TCP stesso.

In sintesi la rete TOR garantisce: una bassa latenza e quindi non viene alterato l’ordine

di invio e ricezione dei paccheti, una perfect forward secrecy cioe un’osservatore locale

non puo conoscere o alterare il contenuto dei pacchetti inviati quand’anche riuscisse a

catturarli (comunicazione tramite Transport Layer Security a chiavi effimere), ma non

garantisce anonimato e sicurezza nei confronti di un nemico globale, che quindi riesca a

osservare completamente la rete e monitorarne i volumi del traffico [9], come vedremo

queste caratteristiche sono alla base degli attachi che vengono effettuati ai danni della

rete TOR.

5.1. Una overlay network. TOR si definisce[3] una distributed overlay network, cio

significa che sopra la rete IP tramite nodi che comunicano, a livello applicativo, con un

protocollo TLS con chiavi effimere, si crea un’altra rete virtuale a livello di trasporto(

L’ANONIMATO IN RETE 19

TCP ). Come gia accennato tale soluzione comporta che la latenza sia maggiore, pero e

il concetto chiave alla base delle garanzie di anonimato della rete TOR.

5.2. Elementi base del circuito.

• Onion proxy(OP): Il proxy e quel programma, che installato sul client, si occupa

di instaurare i circuiti e controllare il flusso, contratta con ogni nodo del circuito le

chiavi per la comunicazione, chiavi che usa per comunicare con i nodi o trasferire

dati end-to-end.

• Onion router(OR): I router rappresentano i nodi della rete TOR; sono in grado

di ricevere e inviare celle, decrittarle o criptarle con la propria chiave, come gia

detto non hanno una conoscenza globale del circuito di cui fanno parte e possono

far parte di piu circuiti.

I nodi comunicano tra di loro tramite connessioni TLS con chiavi effimere, assicu-

rando cosı una perfetta segretezze nella trasmissione(perfect forward secrecy) dei dati e

autenticazione di contenuti ed interlocutori.

5.3. Elementi base della comunicazione. Le celle sono l’elemento base della comu-

nicazione nella rete TOR e sono pacchetti da 512 bytes suddivisi in intestazione e dati.

Esistono due tipi di celle.

• Control cell : Una control cell e una cella usata per inviare ai nodi dei dati non diret-

tamente coinvolti nella comunicazione end-to-end, ma bensı per svolgere operazioni

di controllo e gestione degli anelli. Possono essere di cinque tipi:

- Padding : non ancora utilizzate, servono a prevenire timing-attack.

- Create: usate per creare o estendere un circuito, contiene i dati necessari per

contrattare le chiavi per la comunicazione.

- Created : usate per confermare l’avvenuta creazione del ciruito e trasmettere

le chiavi.

- Destroy : usate per distruggere circuiti inutilizzati.

• Relay cell : Le relay cell sono le celle usate per trasmettere messaggi end-to-end,

oppure per inviare delle control cell a nodi successivi al primo dell’anello. Esistono

diversi tipi di relay cell, quelle per contenere dati, quelle per instaurare connessioni

con i server esterni alla rete TOR, controllare la congestione etc. Gli header di

queste celle, oltre a contenere i vari dati per gestirne l’instradamento (CIRCID

et similia) contengono anche un checksum per controllare l’integrita della cella

una volta giunta a destinazione. Header e payload delle celle sono criptati con un

cifrario AES a 128-bit in modalita counter per garantirne la segretezza.

Figura 10. struttura delle celle [3]

20 ANDREA BRASCHI

6. Instaurazione del circuito

• Creazione ed espansione del circuito: Al momento di instaurare un anello l’OP

invia al primo OR del percorso una cella con il comando CREATE e nella parte

dei dati il codice concernente la prima parte dell’handshake di un protocollo di

Diffie Hellman per iniziare a contrattare la session key e il CIRCID del circuito

che vuole creare, a questa cella l’OR risponde con una cella CREATED e la chiave

per la sessione. La comunicazione e quindi instaurata, per estendere il circuito ora

basta che l’OP mandi al primo OR una cella relay EXTEND con l’handshake di

Diffie Hellman e l’indirizzo dell’ OR a cui estendere il circuito( OR2), a questo

punto l’OR1 procede analogamente a quanto detto precedentemente e estende il

circuito all’OR2, il quale invia la session key che viene direttamente inoltrata a

OP in una cella relay EXTENDED. La prossima volta che dovra essere esteso il

circuito OP invia una relay cell che pero sara criptata con la chiave di OR2 e

quindi non potra essere letta da OR1.

Figura 11. esempio del’istaurazione di un circuito nella rete TOR [3]

• La struttura a leaky pipe: Attraverso la stratificazione della crittografia l’OP decide

il destinatario del messaggio semplicemente fermandosi alla costruzione del suo

strato di crittografia. In questo modo l’OP puo anche decidere di cambiare exit

node all’interno dell’anello (magari per problemi di exit polices).

Come gia detto l’OP contratta con ogni OR del circuito le chiavi con cui criptare i

messaggi; l’OP, quindi, prima di inviare una cella la cripta con le diverse chiavi dei nodi

nei quali passera, nell’ordine inverso a quello con cui la cella incontrera i nodi, cosı facendo

aggiunge attorno alla cella degli strati (come una cipolla!!) di crittografia che mano a mano

verranno rimossi dai vari nodi, il nodo che riceve il messaggio ed e in grado di decifrarlo lo

interpreta e non lo inoltra piu a nessuno. E’ evidente che cosı facendo la cella non viaggia

mai in chiaro all’interno della rete TOR e da ogni nodo esce con una crittografia diversa ed

e quindi estremamente difficile tracciarla. E pero vero che il contenuto della comunicazione

viaggia in chiaro nel tragitto dall’ exit node al server con cui si sta comunicando, e quindi

necessario, per mantenere una maggior, sicurezza comunicare tramite protocolli sicuri,

come HTTPS o SSH.

L’ANONIMATO IN RETE 21

Risulta ancora evidente che, quando, l’OP vorra comunicare con un nodo all’interno del

circuito diverso dall’exit node gli bastera, semplicemente, fermarsi alla costruzione dello

strato corrispondente al nodo con cui vuole comunicare, in questo modo puo cambiare exit

node, oppure decidere di troncare il circuito o modificarlo per controllare la congestione.

Analogamente, in ricezione, il circuito della rete TOR riceve, nel suo ultimo nodo, il

pacchetto dati che incapsula nelle celle alle quali aggiunge il suo strato di crittografia, e

le inoltra al nodo a lui precedente, la cella percorre il circuito a ritroso e ogni OR che

attraversa le aggiunge il suo strato di crittografia, alla fine giunge all’OP al quale non

resta altro compito che “sbucciare la cipolla” e passare la cella a livello applicativo.

Figura 12. schema della comunicazione attraverso la rete TOR

22 ANDREA BRASCHI

6.1. Comunicazione. Per iniziare una comunicazione l’OP decide con quale nodo del

circuito comunicare col server ( ad eccezione di casi particolari e l’ultimo), quindi gli invia

una relay cell begin, il nodo instaura la connessione e risponde con una relay cell connected.

Come gia detto ogni cella contiene un campo di checksum nell’header, tale campo

e un digest SHA1 del campo dati esso viene controllato per verificare l’integrita della

trasmissione e anche per capire se la cella e da inoltrare oppure e destinata al nodo che ne

e in possesso, infatti se l’OR che riceve la cella dopo averla decrittata, riesce a leggere il

digest, significa che il messaggio era diretto a lui altrimenti significa che la cella deve essere

inoltrata al nodo successivo, se una volta giunta a destinazione la cella arriva corrotta il

circuito viene distrutto e la comunicazione viene effettuata su un altro circuito nuovo.

Inoltre se il pacchetto giunge a destinazione e il checksum non e ritenuto valido( non

coincide con quello calcolato al momento della ricezione) il pacchetto viene rifiutato, il

circuito viene chiuso e se ne crea un’altro( end-to-end integrity check ).

Grazie al design incrementale la rete Tor garantisce che nessun nodo malevolo o fasullo

possa intromettersi, ad esempio fingendosi un altro nodo o obbligando gli altri nodi a

fornirgli i pacchetti a loro destinati decrittati. Inoltre, grazie ai controlli sul checksum

e alla possibilita di rilevare congestioni e/o nodi che interrompono la comunicazione e,

quindi, potendo decidere di cambiare il circuito, viene garantito che il pacchetto giunga

sempre a destinazione in tempi relativamente brevi( perfect forward secrecy & low-latency

).

Per ora la possibilita di introdurre padding cell( cioe celle riempitive per evitare timing

attack ), e prevista ma non ancora messa in atto perche non si ritengono una reale mi-

naccia alla sicurezza del sistema gli attacchi basati sull’analisi del traffico; pero, qualora

si verificasse che tali attacchi rappresentino una vera minaccia, il sistema e pronto per

correre ai ripari.

Figura 13. schema logico del posizionamento di Privoxy all’interno dello

schema di comunicazione precedentemente visto

6.2. Privoxy. Privoxy[1] e un non-caching web proxy, e un progetto open source e ha lo

scopo di proteggere la privacy degli utenti della rete. Il proprio Browser puo essere configu-

rato, in modo che usi Privoxy come proxy per le connessioni http e https, in questo modo

Privoxy agisce fitrando le pagine prima che vengano visualizzate dal browser eliminando

le pubblicita, i pop-up e controllando gli accessi. Spesso viene usato concatenato alla rete

Tor per aggirare la censura su internet. Gli stessi sviluppatori di Tor consigliano[3] l’uso

di Privoxy per migliorare la sicurezza e i servizzi di anonimizzazione offerti dalla loro rete.

L’ANONIMATO IN RETE 23

6.3. Analisi critica degli attacchi precedentemente illustrati. Spesso vengono so-

pravvalutate le potenzialita della rete TOR, essa infatti garantisce anonimizzazione solo a

livello di rete, come si puo vedere dagli screenshot di wireshark, gli headers dei pacchetti

intercettati3 non forniscono piu informazioni interessanti sugli indirizzi IP come nell’esem-

pio precedente, e in uscita al client troviamo solo pacchetti TLS criptati dai quali non e

possibile dedurre il contenuto.

Figura 14. header http di richiesta GET catturato in ingresso al server

ottenuto connettendosi attraverso la rete TOR

Figura 15. header http catturato in uscita dal server verso la rete TOR

Cio che non e garantito dalla rete TOR e la difesa da tutti quegli attacchi che tracciano

l’utente nelle sue navigazioni 4in quanto tutte queste operazioni sono svolte a livello appli-

cativo. Come si vede, infatti le componenti http del pacchetto sono intatte; in particolare

si puo notare come, nonstante l’IP sorgente del pacchetto GET sia differente da quello

vero, le informazioni sullo user-agent e in particolare sulla lingua accettata siano le stesse

dell’esperimento effettuato precedentemente senza la rete TOR.

3Riproducendo la stessa situazione della sezione 2.4cfr. Sezione 3.

24 ANDREA BRASCHI

Figura 16. Risultato del Test di Panopticlick cancellando i dati di navigazione

Si e dimostrato, inoltre, che connettendosi a panopticlick con lo stesso browser (avendo

rimosso history e cookies tra una connessione e l’altra), prima tramite l’usuale rete internet

e successivamente attraverso la rete TOR o Privoxy l’entropia delle informazioni e ridotta

solamente di uno o due bit su 20, e il calo e sempre riscontrato nelle informazioni dovute

ai plugin installati, visto che pero questi particolari sono a livello applicativo e quindi

in realta non vengono cambiati da TOR e Privoxy un tale risultato sembra piu essere

L’ANONIMATO IN RETE 25

Figura 17. Risultato del Test di Panopticlick cancellando i dati di

navigazione e usando la rete TOR

dovuto ad una imprecisione nel programma di fingerprinting che effettivamente all’utilizzo

dei sopracitati programmi di anonimizzazione. Si noti anche come rispetto alla prima

connessione l’entropia non sia sostanzialmente cambiata in quanto non viene effettuato

alcun tipo di history detection informazione che aumenterebbe drasticamente l’entropia.

26 ANDREA BRASCHI

Figura 18. Risultato del Test di Panopticlick cancellando i dati di

navigazione, usando la rete TOR e Privoxy

In aggiunta si consideri il fatto che, come constatato anche dall’autore di [4], il test-

set dell’esperimento e un gruppo di utenti che e interessato all’argomento e che quindi

spesso si connette al sito con strumenti come Privoxy e TOR per testarne l’efficacia (come

abbiamo fatto noi) e che quindi il valore dell’entropia delle informazioni usa TOR, usa

Privoxy e sicuramente sottovalutata in quanto e una caratteristica molto piu comune nel

L’ANONIMATO IN RETE 27

test-set di quanto lo sia nella realta.

Come gia detto la soluzione a questo tipo di problema (la tracciabilita) potrebbe essere

non tanto il non fornire informazioni su di se (che potrebbe risultare, paradossalmente,

una caratteristica unica e quindi in grado di identificarci) ma, bensı, fornire informazioni

realistiche ma sempre diverse (ad ogni richiesta http o pagina che si scarica).

6.4. Possibili attacchi e controindicazioni. Gli attacchi che possono avere un maggio-

re effetto per l’identificazione degli utenti della rete TOR, sono i cosı detti timing-attack,

i quali si basano sul correlare pacchetti catturati in uscita da alcuni client con quelli in

entrata su un determinato server, in alcuni casi possono essere inseriti all’interno dei dati

inviati dal server degli script appositi per emettere dati secondo determinati pattern di

volume e quindi riconoscere il client incriminato con maggiore facilita.

Un’altro problema notevole risiede nel fatto che spesso alcune applicazioni inviano pac-

chetti al loro DNS con l’indirizzo dell’host con cui stanno comunicando senza usare la rete

TOR e, quindi, di fatto emettono dei pacchetti con l’indirizzo del destinatario della comu-

nicazione in atto, facendo venir meno l’anonimato garantito da TOR. Al fine di evitare

un simile inconveniente e sempre buona cosa usare TOR concatenandolo con Privoxy.

6.5. Timing-attack. a rete TOR non garantisce anonimato nei confronti di un attac-

cante globale che, cioe, controlli e possa analizzare il traffico di tutta la rete, o per lo meno

di due end point. Tale situazione in realta e meno improbabile di quanto si possa pensare;

si immagini infatti, che in un ipotetico blog dell’Universita appaiano messaggi diffamatori

nei confronti di un individuo, mettiamo caso un docente, molto probabilmente il diffa-

matore stesso (che plausibilmente conosce la vittima e fa parte del suo ambiente) usa

la rete dell’Universita per connettersi alla rete TOR; in questo caso e evidente come nei

nodi di commutazione della rete interna dell’Ateneo saranno presenti dei dati dai quali e

possibile ricavare i volumi di traffico dei due end point della rete TOR e quindi correlando

il traffico in ingresso al suddetto blog con quello in uscita a uno dei nodi sospettati capire

chi stava effettivamente commettendo la diffamazione. Questo e quello che si chiama un

timing-attack; di seguito entreremo nel merito di un analisi piu formale per poi produrre

un’esperimento per dimostrarne l’effettiva fattibilita. E importante notare che questo tipo

di attacchi sono possibili per via della bassa latenza della rete, essa infatti fa in modo che

i volumi del traffico in realta non vengano molto cambiati dai nodi e che quindi sia facile

correlarli.

28 ANDREA BRASCHI

Figura 19. schema path rete a bassa latenza

6.5.1. Definizione formale. Il problema[7] si pone in questi termini: un client I comunica

con un server attraverso un path P I che e composto da un aserie di h nodi N I1 ,...,N I

h (nel

caso di TOR generalmente h vale o 2 o 3).

Nel nostro caso l’attaccante controlla il traffico in entrata a N I1 e quello in uscita a un

exit node NJ1 su due path P I e P J e ha l’obbiettivo di determinare se I = J .

Per fare questo l’attaccante puo semplicemente analizzare il traffico cosı com’e (attacco

passivo) oppure puo decidere di cancellare dei pacchetti per generare cosı dei ritardi che

facilitino la correlazione dei traffici (active dropping) ancora, se l’attaccante controlla il

server puo decidere di generare traffico secondo determinati pattern ed essere ancora una

volta facilitato nella correlazione.

Risulta evidente come in questo tipo di analisi il valore della correlazione della funzione

del volume dei pacchetti inviati nel tempo con quella del volume di pacchetti ricevuti dia

un indicazione di tipo probabilistico, cioe che probabilita c’e che i due nodi stiano effet-

tivamente comunicando, e che quindi e necessario considerare casi di falsi negativi e falsi

positivi e, ancora, riflettere sul fatto che, se la rete usa un traffico di copertura per rendere

omogeneo il volume in uscita da ogni nodo, e notevolmente incrementata la probabilita

di falsi positivi, mentre l’uso di tecniche come il defensive dropping [7] aumenta quella

dei falsi negativi; e ancora e utile considerare che nel caso di attacchi attivi tutte queste

probabilita sono decisamente decrementate. Per un’analisi piu rigorosa di tali fattori si

rimanda all’articolo [7] che tratta l’argomento in maniera dettagliata, precisa e formale.

Si nota inoltre che nell’articolo [9] e presentato un metodo che, mezzo alcune modifiche

ad un nodo TOR (tutte pero entro le specifiche), permette un’analisi dei volumi e un rico-

noscimento del path usato per la comunicazione, degradando TOR da rete anonimizzatrice

a semplice proxy, senza pero essere attaccanti globali.

Ai fini di dimostrarne la fattibilita, come ultimo esperimento si e realizzato un sempli-

ce timing-attack ai danni del sistema precedentemente analizzato (Privoxy+TOR), tale

esperimento e presentato e analizzato nel dettaglio alla fine della sezione 8. Da tale espe-

rimento e immediatamente emerso quanto sia piu facile trovare evidenti correlazioni, nei

volumi dei pacchetti relativi ai due end-point in questione, tanto piu sia ingente la quan-

tita di pacchetti trasmessa( e catturata).Infatti, trattandosi di analisi di segnali, risulta

chiaro che gli effetti del rumore sulla correlazione tra le due funzioni in questione siano

inversamente proporzionali all’ampiezza delle funzioni stesse.

In quanto l’argomento necessiterebbe di uno sviluppo eccessivo uscendo dai quelli che

sono gli obbiettivi di questa tesi, la trattazione di tale esperimento e stata svolta solo

in maniera qualitativa e non approfondita, l’esperimento mirava, infatti a dimostrare la

fattibilita di un simile attacco ai danni di un sistema cosı ben congegnato.

L’ANONIMATO IN RETE 29

7. Conclusioni

7.1. I rischi che si corrono in rete. Nel corso di questa tesi abbiamo introdotto la va-

rieta di attacchi alla privacy e all’identita che si possono incontrare in rete. Si e visto come

ne esistano veramente tanti tipi, e come spesso alcuni standard e abitudini degli utenti

della rete possano essere usate contro di loro per risalirne all’identita o per tracciarne le

navigazioni.

Partendo dai metodi piu semplici si e visto come sia gia di per se facile reperire infor-

mazioni utili dagli headers http e come sia semplice tracciare le navigazioni di un utente

tramite l’uso di cookies e sessions. Inoltre si e visto che esistono i supercookies che hanno

origini gia piu malevole e quindi di come grazie all’uso della tecnologia JavaScript e html5

si possano salvare su un pc dati che ne permettano il tracking in maniera che sia molto

piu difficile rimuoverli.

In seguito e stata effettuata un’analisi di alcuni dei principali metodi di fingerprintig,

cioe i metodi che permettono di ottenere delle informazioni sulle caratteristiche dell mac-

china connessa. E emerso come, grazie all’uso di JavaScript e Flash sia possibile ottenere

un gran numero di informazioni utili (oltre 20 bit di effettiva entropia). Analizzando vari

tipi di attacchi ci si e accorti di come alcuni standard siano una minaccia alla riservatezza

degli utenti della rete, in particolare la css-based history detection e proprio un esempio

di come uno standard, consigliato dalla W3C e da molte guide per l’usabilita dei siti,

abbia portato alla creazione di un potente strumento di fingerprinting degli utenti della

rete. In un altro caso nell’analisi dei risultati dell’esperimento di Panopticlick e emerso

come le informazioni precise sulle versioni dei plugins installati, utili per le operazioni di

debug, forniscano un’altra fonte ad alta entropia per tracciare gli utenti del web,e quindi

di come, con lo scopo di agevolare il lavoro degli sviluppatori, certe volte si vada incontro

a gravi rischi per la riservatezza degli utenti.

Lo studio di Panopticlick ha anche evidenziato come il fatto che l’elenco dei fonts non

venga riordinato nell’invio al server, ma dipenda fortemente dall’ordine con cui l’utente

ha installato i plugins, sia una, inutilmente gratuita, fonte di informazioni ad altissima

entropia. Quest’analisi dei dati derivanti dai plugins installati ha portato anche a conclu-

dere che in realta l’utilizzo di pluggins anti-traccking, se questi non sono sufficientemente

diffusi puo portare piu svantaggi che vantaggi.

A questo punto, nella tesi, sono stati introdotti i due principali metodi di anonimizza-

zione: la rete TOR e Privoxy, si e visto pero che entrambi lavorano a livello di rete e che

quindi di fatto difendono dalla diffusione di tutte quelle informazioni reperebili a livello

di rete ma che non possono nulla contro tutti i metodi di fingerprinting che lavorano a

livello applicativo.

Infine si sono analizzati i principali tipi di attacco alla rete TOR, in particolare i timing-

attacks, a dimostrazione del fatto che e vero che la rete TOR e sicura ma e altrettanto

vero che, in particolare nel caso di pochi sospettati, non e impossibile risalire, tramite

analisi dei volumi dei dati inviati, ai due end-point di una comunicazione tramite TOR.

7.1.1. Alcuni possibili modi per prevenirli. Nella tesi e percio emerso come, ai fini di una

miglior riservatezza sia necessario ma non sufficiente l’utilizzo congiunto di strumenti co-

me TOR e Privoxy; infatti essi sono uno strumento molto potente di difesa della propria

30 ANDREA BRASCHI

identita a livello di rete, ma non difendono affatto da tutte quelle informazioni che posso-

no venirci richieste a livello applicativo. A tale fine, come gia discusso precedentemente,

non e nemmeno necessario l’utilizzo di plugins-anti-tracking in quanto, paradossalmente,

il fatto stesso di non dare informazioni puo essere un’informazione, soprattutto se e una

pratica poco diffusa. Una possibile soluzione, come gia accennato, potrebbe essere quella

di, tramite l’utilizzo di proxy a livello applicativo, falsificare le informazioni che vengono

trasmesse e usate come fingerprint dando ad ogni richiesta di pagina dati diversi essendo

cosı difficilmente tracciabili. Emerge subito, pero, che tale operazione e poco standardiz-

zabile e difficile da realizzare in quanto ogni sito e ogni sistema puo utilizzare un suo

proprio metodo di fingerprinting, quindi la soluzione e differente a seconda dell’applica-

zione web dalla quale non si vuole essere tracciati. Altro fattore da tener da conto e che i

dati fasulli forniti devono essere al contempo molto differenti tra di loro (tra una richiesta

e l’altra), ma devono essere per lo piu realistici, altrimenti ancora una volta fornirebbero

informazioni ad altissimo contenuto di entropia (l’uso di informazioni spooffate eviden-

temente fasulle e poco realistiche sarebbe utile solo nel caso in cui questa diventi una

pratica diffusa).

Lo studio per la realizzazione di un Proxy a livello applicativo che possa generare infor-

mazioni false e sempre diverse esula dagli scopi di questa tesi in quanto argomento troppo

vasto, perche, come si e visto, esistono moltissimi modi per tracciare gli utenti del web e

non e difficile immaginarne molti altri, anche solo derivanti dalle combinazioni di quelli

fin ora visti. Risulta, pero, opportuno trarre alcune considerazioni sulla reallizzabilita di

tale impresa e sui vantaggi e svantaggi a cui andrebbe incontro un utente di tale siste-

ma. Prima di tutto sarebbe necessario uno studio accurato dei metodi di fingerprinting

effettivamente in uso sui principali siti, successivamente, sicuramente, un primo passo

nell’implementazione del nostro proxy dev’essere la cattura di un notevole campione di

fingerprint da poter usare e ricombinare inviandoli a server che li richiedano. Osservando

che le soluzioni fin ora proposte sono poco elastiche in quanto si dovrebbero rifare ad un

chiuso numero di siti dei si e analizzato il sistema di tracking, si propongono anche delle

soluzioni piu generali emerse proprio dall’analisi dei risultati dello studio dell’articolo [4],

in primo luogo il proxy dovrebbe randomizzare le microversioni dei plugin, i fonts installati

e il loro ordine di presentazione e informazioni sulle dimensioni dello schermo( risoluzione,

colori etc) e tutti questi tipi di dati che vengono inviati dai javascript (all’interno di file

Json o XML), ancora si potrebbero rendere casuali i dati contenuti negli header http.

Bisogna pero notare come chi si avvalga di un tale sistema debba pero rendersi disponi-

bile ad incontrare problemi di presentazione delle pagine richieste (lingua, impaginazione

etc.).

Concludiamo quindi mostrando lo schema logico di tale sistema, evidenziando come

la soluzione proposta non vada a sostituire elementi come TOR e Privoxy ma anzi si

inserisca nella catena integrando il servizio da loro fornito (TOR anonimizza a livello

di rete e rende non tracciabile il nostro ip, Privoxy ci protegge dal rivelare tutte quelle

informazioni, sempre a livello di rete, che TOR si lascia sfuggire, come i pacchetti DNS,

mentre il nostro sistema ci rende non tracciabili a livello applicativo).

In attesa, che qualche sviluppatore di buona volonta decida di implementare un proxy

simile a quello descritto precedentemente, citiamo l’esistenza di proxy a livello applicativo

L’ANONIMATO IN RETE 31

Figura 20. schema logico del posizionamento dell’ipotetico proxy a livello

applicativo all’interno dello schema di comunicazione precedentemente visto

come WebScarab della OWASP il quale gia ci consente di fare, sebbene manualmente, un

lavoro simile a quello sopra descritto.

32 ANDREA BRASCHI

8. Definizionie del modello sperimentale

Gli esperimenti, che sono stati svolti nel corso della tesi, si basano sul modello di rete

seguente: un client che, connesso ad una rete, comunica con un server.

Figura 21. schema logico della comunicazione in rete

E stata assunta l’ipotesi che sia il client che la rete si comportino secondo le specifiche e

che quindi non vi sia alcun tipo di software malevolo che operi sfruttando exploit o errori

all’interno del browser, e nella rete non vi siano nodi fasulli che disattendano le specifiche.

Si assume invece che il SERVER non sia trusted, ma che, comunque, lavori all’interno di

quelle che sono le specifiche e gli standard accettati, cercando cioe di carpire il maggior

numero di informazioni dagli utenti senza pero avvalersi di metodi illeciti e exploit ai

danni di client e rete. L’apparato sperimentale e quindi cosı costituito:

Figura 22. schema dell’impianto sperimentale

Il CLIENT e una macchina virtuale con sistema operativo Windows 7 professional che

accede al server tramite il browser Google Chrome. Nel corso di tutte le sperimentazioni

i dati in uscita dal browser sono stati analizzati a partire dai dati ottenuti dal monitor

di rete Wireshark. A seconda degli esperimenti la RETE potra essere la normale rete

internet oppure la rete TOR, infine nell’ultimo esperimento il CLIENT non si e connesso

direttamente alla rete TOR ma passando attraverso il proxy di rete Privoxy. Sia al mo-

mento dell’instradamento dal client nella rete, che al momento della ricezione lato server,

i pacchetti sono stati catturati e analizzati dal monitor di rete Wireshark.

Il SERVER e una macchina virtuale con sistema operativo Lubuntu 11.10 e server Apa-

che2 con php5, nel corso delle sperimentazioni abbiamo analizzato lo scambio di informa-

zioni server/client a livello applicativo tramite l’analisi dei log di Apache e dei pacchetti

catturati dal monitor di rete WhireShark.

Le macchine virtuali sono create e gestite dal programma VirtualBOX OSE e sono

ospitate su una macchina con sistema operativo Ubuntu 10.04. Entrambe le macchine

virtuali sono connesse alla rete tramite scheda bridge (ognuna ha il suo indirizzo locale

nella rete NAT domestica) e quindi al router verra specificato di trasferire al server tutte

le richieste sulla porta 80,mentre il client si e sempre connesso specificando l’indirizzo del

modem.

L’ANONIMATO IN RETE 33

8.1. Esperimenti.

8.1.1. Semplice connessione. Nel primo esperimento e stata effettuata una connessione

al SERVER tramite il browser del CLIENT e tramite lo sniffer di rete installato sulla

macchina host si sono catturati i pacchetti emessi dalle due macchine. Di particolare

interesse sono stati i due pacchetti del protocolo http, il primo dei quali era una richiesta

della pagina index.php da parte del CLIENT, quindi un header di tipo GET mentre il

secondo era la risposta del SERVER, come presumibile, un 200 OK contenente il codice

html della pagina richiesta; questi pacchetti sono megli analizzati e discussi nella sezione

2. Per iniziare la cattura si e avviato Wireshark con i permessi d’amministratore e si

avviata la cattura sull’interfaccia di rete wlan1(utilizzata dalle due macchine virtuali).

Figura 23. la pagina di prova sul SERVER

8.1.2. Connessione attraverso la rete TOR. Successivamente si e voluto ripetere l’esperi-

mento precedente, connettendosi al SERVER tramite la rete TOR. Dopo aver scaricato il

pacchetto di TOR boundle, si e configurato il browser e il sistema Windows per usare come

rete TOR tramite impostazioni e pannello di controllo, quindi si e avviata la rete tramite

l’interfaccia Vidalia, del pacchetto suddetto, si e avviato il browser e, per assicurarci di

essere connessi alla rete TOR, ci siamo connessi alla pagina http://check.toproject.org di

test per il corretto funzionamento della rete TOR. Quindi si e avviato lo sniffer per la

cattura dei pacchetti e si e avviata la connesione al SERVER per scaricare index.php. Da

subito si nota che l’IP visualizzato dalla pagina e cambiato rispetto al primo esempio, per

effetto della rete TOR, inoltre in uscita al CLIENT non ci sono piu pacchetti http ma

solo TLSv1 che quindi sono criptati, mentre in ingresso e uscita dal SERVER sono sempre

presenti i pacchetti http che sono stati trattati e discussi nella sezione 5.

lo stesso esperimento e stato eseguito anche usando Privoxy concatenato alla rete TOR

ma gli header http non sono sostanzialmente cambiati quindi tale esperimento non e stato

approfondito nel corso della tesi.

34 ANDREA BRASCHI

Figura 24. screen-shot della pagina ottenuta connettendosi a

http://check.toproject.org in caso di configurazione corretta della rete TOR

Figura 25. la pagina di prova sul SERVER scaricata tramite la rete TOR

8.1.3. I test di Panopticlick. Come anticipato nella sezione 3 (dove sono anche presenti gli

screen-shot), per testare la quantita di informazione lasciata dal nostro browser ci si e av-

valsi di della sistema online messo a disposizione dalla Electronic Frontier Foundation al si-

to [4]. Dapprima5 ci si e connessi con il browser senza particolari configurazioni e attraverso

la rete domestica, successivamente6 attraverso la rete TOR e poi ancora inserendo Privoxy

tra il CLIENT e la rete TOR. Dopo aver installato e avviato Privoxy sono state decommen-

tate le opportune righe del file config per poterlo concatenare alla rete TOR, indi si e pro-

ceduto modificando le proprieta dell’icona di lancio per google chrome per far sı che emetta

i suoi pacchetti su Privoxy e non direttamente su TOR, a tale fine nelle proprieta si e mo-

dificato la stringa di lancio del programma da “c : \Users\ v \Application\chrome.exe”

5Sezione 36Sezione 5

L’ANONIMATO IN RETE 35

a \c : \Users\ v \Application\chrome.exe − −proxy − server = ”127.0.0.1 : 8118””,

dove 8118 e il numero della porta sulla quale e in ascolto privoxy.

Figura 26. screen-shot della pagina ottenuta connettendosi a

http://config.privoxy.org in caso di configurazione corretta di Privoxy

8.1.4. Un timing-attack. Come anticipato nella sezione 5, in ultima istanza si e voluto

dimostrare la fattibilita di un timing-attack ai danni del sistema Privoxy+TOR realiz-

zandone e analizzandone, solamente a livello qualitativo, un semplice esempio. Per fare

cio si e caricato nella cartella “/var/www/” del SERVER un file film.zip (originariamente

film.avi rinominato per renderlo scaricabile, di circa 700MByte) in seguito connettendosi

con la macchina CLIENT, configurata come precedentemente descritto si e scaricato il file,

contemporaneamente, sulla macchina HOST, si e avviata, con WireShark, una sessione

di cattura di pacchetti su interfaccia wlan1.

Figura 27. scaricamento di film.zip

36 ANDREA BRASCHI

Successivamente si e prodotta la seguente serie di grafici ( funzione IO Graphs di Wi-

reShark), come evidenziato nelle regole della didascalia da prima si sono confrontati pac-

chetti tcp inviati dal CLIENT con il volume di pacchetti ricevuti dal SERVER (in questo

caso per lo piu ACK della ricezione dei frammenti del file in download), a segurie si sono

confrontati i pacchetti tcp in uscita dal SERVER con quelli in ingresso al CLIENT (in

quantita naturalmente maggiore in quanto costituenti il file in download), in seguito si

sono confrontati tutti i pacchetti contenenti l’ip del SERVER con quelli contenenti l’ip del

CLIENT quindi una somma delle due precedenti funzioni, da ultimo si sono confrontati

tutti i pacchetti in emessi o destinati al CLIENT con tutti quelli destinati o emessi dal

SERVER.

Dai primi tre grafici risulta evidente la presenza di una correlazione trai due volumi,

correlazione che aumenta di evidenza con l’aumentare delle quantita di dati in gioco,

mentre nell’ultimo grafico si puo vedere come aumenta il rumore dovuto ai dati inviati

tramite altri protocolli per la gestione della connessione (soprattutto verso la fine dell’invio

del messaggio). E invece notevole come le due comunicazioni inizino e finiscano pressoche

nello stesso istante, questa e gia di per se un’utilissima informazione.

Figura 28. grafico di confronto tra i volumi dei pacchetti tcp in uscita al

CLIENT7e quelli in ingresso al SERVER8

7192.168.1.1376192.168.1.135

L’ANONIMATO IN RETE 37

Figura 29. grafico di confronto tra i volumi dei pacchetti tcp in uscita al

SERVER e quelli in ingresso al CLIENT

Figura 30. grafico di confronto tra i volumi dei pacchetti tcp contenenti

l’ip del SERVER e quelli con l’ip del CLIENT

Figura 31. grafico di confronto tra i volumi dei pacchetti contenenti l’ip

del SERVER e quelli con l’ip del CLIENT

38 ANDREA BRASCHI

Di seguito alcuni dettagli del terzo grafico dove, evidentemente, stessi pattern di volumi

vengono ritrovati sui due segnali a meno di qualche ritardo o amplificazione.

Figura 32. dettagli dei grafici di correlazione dei volumi dei pacchetti

durante un timing-attack

L’ANONIMATO IN RETE 39

Riferimenti bibliografici

[1] Privoxy.

[2] Decreto legislativo 30 giugno 2003, n. 196, 2003.

[3] Roger Dingledine, Nick Mathewson, and Paul Syverson. Tor: The second-generation onion router.

In In Proceedings of the 13th USENIX Security Symposium, pages 303–320, 2004.

[4] Peter Eckersley. How unique is your web browser? Technical report, Electronig Frontier Foundation,

2009.

[5] Wei Fang. Using google analytics for improving library website content and design: A case study.

Library Philosophy and Practice 2007: Special Issue on Google and Libraries, 2007.

[6] Artur Janc and Lukasz Olejnik. Feasibility and real-world implications of web browser history

detection.

[7] Brian N. Levine, Michael K. Reiter, Chenxi Wang, and Matthew Wright. Timing attacks in low-

latency mix systems (extended abstract). In PROCEEDINGS OF THE 8TH INTERNATIONAL

FINANCIAL CRYPTOGRAPHY CONFERENCE (FC 2004), KEY WEST, FL, USA, FEBRUARY

2004, VOLUME 3110 OF LECTURE NOTES IN COMPUTER SCIENCE, pages 251–265. Springer,

2004.

[8] Keaton Mowery, Dillon Bogenreif, Scott Yilek, and Hovav Shacham. Fingerprinting information in

javascript implementations.

[9] Steven J. Murdoch and George Danezis. Low-cost traffic analysis of tor. In In Proceedings of the

2005 IEEE Symposium on Security and Privacy. IEEE CS, pages 183–195, 2005.

[10] samy kamkar samy kamkar. Evercookie never forget, 2010.

40 ANDREA BRASCHI

9. Appendici

Figura 33. screen-shot dei software usati per gli esperimenti

.1. Le macchine virtuali. Per la realizzazione delle macchine virtuali abbiamo usato il

programma di virtualizzazione VirtualBox OSE, col quale abbiamo creato due macchine

virtuali un client e un server.

.1.1. Client. Sulla macchina client sono installati Google Chrome, TOR, vidalia e Privoxy

ed e una macchina con le seguenti caratteristiche.

scheda CLIENT

Generale

Nome: Client

Sistema operativo: Windows 7

Sistema

Memoria di base: 1024 MB

Processore(i): 1

Ordine di avvio: Floppy, CD/DVD-ROM, Disco fisso

Schermo

Memoria video: 16 MB

Accelerazione 3D: Disabilitata

Accelerazione video 2D: Disabilitata

Archiviazione

Controller IDE

IDE master primario: Client.vdi (Normale, 20,00 GB)

IDE master secondario (CD/DVD): Lett. host OptiarcDVD RWAD-7561S(sr0)

Controller floppy

Dispositivo floppy 0: Vuoto

Audio

Driver del sistema host: PulseAudio

Controller: ICH AC97

Rete

Driver 1: Intel PRO/1000MT Desktop(bridge,wlan1)

Porte seriali

Disabilitate

Cartelle condivise: 1

L’ANONIMATO IN RETE 41

.1.2. Server. Sulla macchina server sono installati Apache2 e php5 ed e una macchina con

le seguenti caratteristiche.scheda SERVER

Generale

Nome: Server

Sistema operativo: Lubuntu 11.10

Sistema

Memoria di base: 1024 MB

Processore(i): 1

Ordine di avvio: Floppy,CD/DVD-ROM,Disco fisso

Schermo

Memoria video: 12 MB

Accelerazione 3D: Disabilitata

Accelerazione video 2D: Disabilitata

Archiviazione

Controller IDE

IDE master primario: Server.vdi (Normale, 8,00 GB)

IDE master secondario (CD/DVD): Vuoto

Controller floppy

Dispositivo floppy 0: Vuoto

Audio

Driver del sistema host: PulseAudio

Controller: ICH AC97

Rete

Driver 1: PCnet-FASTIII(Scheda con bridge, wlan1)

Porte seriali

Disabilitate

Cartelle condivise: 1

Sul server e presente la seguente pagina PHP (index.php) che semplicemente mostra al

client il suo IP.

<?php

$ip=$ SERVER [ ’REMOTE ADDR’ ] ;

echo ”<html><header><t i t l e >t e s t1−t e s i </ t i t l e ></header>” ;

echo ”<body>ip : $ ip ” ;

echo ”</body></html>” ;

?>

.1.3. La macchina host. La macchina host e un compaq presario CQ61 avente sistema

operativo Ubuntu 10.04 con installati WireShark e VirtualBox OSE.

42 ANDREA BRASCHI

Figura 34. WireShark in azione durante un timing-attack

.1.4. la rete e il modem. Tutto il sistema si interfaccia su un modem TISCALI con inter-

faccia di rete in modalita NAT e un virtual server configurato opportunamente di modo

da inoltrare a “Server” tutte le connessioni sulla porta 80.

L’ANONIMATO IN RETE 43

.2. L’entropia nella teoria dell’informazione. Nel 1948 Claude Shanon e il primo a

introdurre il concetto di entropia nella teoria dell’informazione nel suo lavoro “Una teoria

matematica della comunicazione”, come misura della quantita di informazione presente

in un segnale aleatorio.

L’entropia e definita come la media dell’autoinformazione di un segnale. Dato un se-

gnale x(t) aleatorio codificato con un alfabeto A = {A(1), A(2), ..., A(n)} quindi con n

caratteri e definendo come p(i) la probabilita di riscontrare il catattere A(i), si definisce

autoinformazione di A(i) il logaritmo in base 2 dell’inverso di p(i): I(xi) = log 1p(i)

. E,

quindi, evidente come un segnale piu probabile, di fatto, porti meno informazione (se p

tende a uno I tende a 0). Inoltre si consideri il caso della presenza di correlazioni tra x(t)

e x(t + 1), e evidente che se aumenta la probabilita p(x(t + 1) = A(j)|x(t) = A(i)) e

quindi l’informazione portata dalla combinazione A(i)A(j) e piu bassa rispetto ad altre

combinazioni meno probabili.

Concludendo l’entropia di un segnale e quindi definita come :

H(x) = E [I(x)] =∑n

i=1 p(i) ∗ log 1p(i)

si misura in bit e indica il minimo numero di bit con cui poter rappresentare le

informazioni del segnale in questione senza perdita di dati.

Nel corso della tesi e nelle analisi dei risultati esposti in [4] con bit di effettiva entropia

si intende quindi il logaritmo in base due del numero di campioni (di browser) nei quali il

fingerprinting trovato risulta essere unico (es.: 20 bit = il fingerprint risulta essere unico

in un set di 220 elementi).