La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Tesi di Laurea in Reti di Calcolatori La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet Elaborato finale in [Inserire qui la materia dell’elaborato finale eliminando le pa quadre] Anno Accademico 2017-2018 [Inserire qui il titolo dell’elaborato finale eliminando le parentesi quadre] Anno Accademico [Inserire l’anno accademico eliminando le parentesi quadre] Candidato Daniele Capone Matr. N46002732 Candidato: [Inserire il nome ed il cognome del candidato eliminando le parentesi quadre] matr. [Inserire la matricola del candidato eliminando le parentesi quadre]
Indice Indice III Introduzione 4 Capitolo 1 Censura di Internet 5 1.1 La censura su DNS . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.1.1 DNS hijacking . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1.2 DNS injection . . . . . . . . . . . . . . . . . . . . . . . . 8 1.1.3 DNS-Sec Dos . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 La censura su HTTP . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.1 HTTP tampering . . . . . . . . . . . . . . . . . . . . . . 10 1.2.2 HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Capitolo 2 Domain Fronting 12 2.1 Servizi web con funzionalitá di fronting . . . . . . . . . . . . . . 13 2.2 Utilizzatori del domain fronting . . . . . . . . . . . . . . . . . . 14 2.2.1 Distribuzione su Tor . . . . . . . . . . . . . . . . . . . . 15 2.2.2 Distribuzione su Lantern . . . . . . . . . . . . . . . . . . 15 2.2.3 Distribuzione su Psiphon . . . . . . . . . . . . . . . . . . 16 2.3 Recenti sviluppi . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Capitolo 3 ESNI 18 3.1 Crittografia SNI . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 Comportamento del Client e Server . . . . . . . . . . . . . . . . 20 Conclusioni 22 Bibliografia 23 III
Introduzione Il presente lavoro si pone l’obiettivo di analizzare le problematiche relative al "domain fronting", tecnica utilizzata per aggirare la censura di Internet. La tematica è particolarmente rilevante perché negli ultimi mesi due dei maggiori provider di servizi cloud (Google e Amazon) hanno deciso di bloccare il domain fronting. Nonostante Internet sia stato progettato come un sistema aperto e distribuito, per motivi politici, etici o sociali l’accesso e la pubblicazione di alcuni contenuti vengono spesso controllati o bloccati. La tecnica del domain fronting permette l’elusione della censura nascondendo il vero endpoint di una connessione. L’idea chiave è quella di utilizzare diversi nomi di dominio nei differenti livelli di comunicazione, in modo che per bloccare un singolo sito, si dovrebbero bloccare anche domini "legittimi" che nulla hanno a che fare con quello censurato. Il censore, non potendo identificare i pacchetti verso la destinazione proibita, è costretto ad arrestare l’intero traffico diretto verso le destinazioni consentite. Il seguente lavoro vuole quindi esaminare la tecnica del domain fronting, analizzare come funziona e, poiché in gran parte impraticabile, presentare un’alternativa ad essa. Il lavoro è articolato in tre capitoli. Il primo capitolo fornisce una spiegazione su come funziona la censura di Internet ed in particolare analizza le forme che può assumere e le tecniche utilizzate sui protocolli DNS e HTTPS. Il secondo capitolo è incentrato sulla tecnina del domain fronting, di cui vengono descritti il funzionamento, i servizi Web con funzionalità di fronting e gli utilizzatori. Vengono analizzate inoltre alcune tecniche che ricorrono al domain fronting come ad esempio il "trasporto mite" utilizzato da Tor. Il terzo capitolo, infine, analizza un’alternativa al domain fronting: il protocollo ESNI. Attualmente è ancora in fase sperimentale ed ha lo scopo di risolvere alcuni dei problemi fondamentali che permettono la censura. 4
Capitolo 1 Censura di Internet Censura di Internet Con l’espressione "censura di Internet" si intende il controllo o il blocco della pubblicazione di contenuti o dell’accesso di essi nella rete. La censura può assumere molte forme: si può limitare l’accesso ad alcuni siti Web, consentire l’accesso solo a determinati contenuti o a contenuti modificati, rifiutare l’utilizzo di alcune parole chiave nelle ricerche nei motori di ricerca, ecc. [1, p.188]. Il bloccaggio ed il filtraggio delle informarzioni si possono basare su blacklist, ovvero liste utilizzate per controllare gli accessi a una certa risorsa. Ci sono diversi motivi per cui filtrare i contenuti Internet: politica e potere, norme morali e sociali, questioni di sicurezza. Anche se essa viene adottata per scopi legittimi e accettabili, la censura richiede la manipolazione di diversi componenti di Internet, come ad esempio l’interferenza (o l’interruzione) con i protocolli di rete standard. I principi di progettazione di Internet come un sistema aperto e distribuito vanno in contrasto con i controlli richiesti dalla censura. Per questo motivo le opinioni sul tema della censura sono variegate essendoci argomenti sia a favore che contro di essa. Una prima classificazione delle tecniche utilizzate per la censura può essere fatta considerando le componenti del sistema di comunicazione [2]: • Client-based Censorship : blocco dell’accesso ai contenuti online tramite applicazioni eseguite sullo stesso sistema dell’applicazione di rete del client. • Server-based Censorship : la censura viene applicata sul nodo finale del percorso di comunicazione; il censore rimuove selettivamente, nasconde o compromette l’accesso a contenuti specifici direttamente nel server. • Network-based Censorship : viene applicata tra l’host che esegue il client dell’applicazione e l’host che esegue la rispettiva parte del server. Fornisce al censore una copertura molto più ampia della rete e con maggiore efficienza, consentendo il controllo di un elevato numero di comunicazioni attraverso la gestione di un numero relativamente ridotto di gateway o hub. Esistono diversi metodi per applicare la censura network-based; in particolare analizziamo nel dettaglio come funziona la censura su DNS e HTTP. 5
Censura di Internet 1.1 La censura su DNS Il DNS (Domain Name System) è un database distribuito implementa- to in una gerarchia di DNS server e un protocollo a livello di applicazione. Il protocollo DNS utilizza UDP e la porta 53 ed ha il compito di trasforma- Powered by TCPDF (www.tcpdf.org) re l’indirizzo simbolico (ad esempio www.google.com) in un indirizzo IP (ad esempio 216.58.205.132). Il DNS utilizza un grande numero di server organiz- zati in maniera gerarchica. Ci sono tre classi di DNS server : i root server, i top-level domain (TLD) server e i server autoritativi. Essi sono organizzati nella seguente gerarchia [3, p.127]: Figura 1.1: Gerarchia parziale di server DNS.[3, fig. 2.19] Esiste anche un altro tipo di DNS, detto DNS server locale, che non appartiene strettamente alla gerarchia di server ma è comunque centrale nel- l’archittetura DNS. In generale abbiamo il seguente schema per una richiesta DNS: Figura 1.2: Query DNS ricorsiva. Rielaborazione basata su [3, fig. 2.22] 6
Censura di Internet 1. il client chiede al server locale l’indirizzo del dominio; 2. il server locale delega la richiesta al root server; Powered by TCPDF (www.tcpdf.org) 3. il root server delega la richiesta al TLD server; 4. il TLD server interroga il server autoritativo per il dominio; 5. il server autoritativo rimanda il record al TLD server. Viene passato a tutti i server coinvolti fino al server locale; 6. il server locale restituisce l’indirizzo al client, che raggiunge la destina- zione. Quando un client inoltra una query DNS ad un server ricorsivo, si aspetta di ottenere la risposta "corretta", ovvero il valore del record DNS richiesto oppure un messaggio di errore se il nome richiesto non esiste (NXDOMAIN ). Si parla di "DNS tampering" (letteralmente "manomissione DNS") per descrivere gli effetti delle tecniche di censura. Ci sono diverse varianti coinvolte in questo processo: DNS hijacking, DNS injection e DNS-Sec Dos.1 1.1.1 DNS hijacking Il DNS hijacking ("dirottamento DNS") è la pratica per sovvertire la risoluzione delle query DNS : avere il controllo amministrativo su un server DNS permette di alterarne il comportamento deviandolo dallo standard. Si possono, ad esempio, avere le seguenti risposte al posto del record atteso: 1. NXDOMAIN : risposta di errore del tipo "no such domain" (il nome di dominio a cui si fa riferimento nella query non esiste). 2. Record di risorsa falso : un record di risorsa di tipo A, classe IN con un indirizzo IP che cade in uno dei seguenti casi: • Block Page : ritorna un indirizzo IP che ospita un webserver la cui pagina ci dice che l’host richiesto è stato deliberatamente bloccato; • Error Page : ritorna un indirizzo IP che ospita un webserver la cui pagina ci dice che l’host richiesto è inesistente o errato; 1 Il contenuto dei paragrafi 1.1.1, 1.1.2 e 1.1.3 è una rielaborazione basata su: [2] 7
Censura di Internet • Failing IP : indirizzi non instradabili su Internet come spazio di indirizzi privato o spazio di indirizzi condiviso (indirizzo IP non correlato alla risorsa richiesta); Powered by TCPDF (www.tcpdf.org) • Surveillance IP : ritorna un indirizzo IP che viene assegnato a un dispositivo di sorveglianza che ispeziona i protocolli di livello superiore. Solo nel caso della Block Page la censura viene notificata chiaramente. Nel caso della Error Page vengono forniti dei suggerimenti all’utente sull’operazione non riuscita. Se ci troviamo nel caso di Failing IP abbiamo due situazioni differenti: o viene restituito all’utente un errore di tipo "rete/host non raggiungibile" oppure viene assegnato un indirizzo IP di un host raggiungibile dall’utente in cui nella maggior parte dei casi verrà restituito un messaggio di errore HTTP (ad esempio 404 not found). Il caso di Surveillance IP è utilizzato per tecniche di censura a due stadi, in cui il DNS viene utilizzato per deviare il traffico selezionato verso un dispositivo di sorveglianza che ispezionerà e probabilmente causerà la censura. Il trigger, considerato come l’elemento che fa sì che il sistema di censura agisca, è un pacchetto UDP di porta 53 diretto all’indirizzo IP del risolutore ricorsivo DNS anomalo e contenente una query DNS di tipo A che include il nome host appartenente alla blacklist. Per attuare la censura con questa tecnica non è necessario disporre di un dispositivo di sorveglianza sul percorso di rete tra il client e il target, in quanto il client invierà una richiesta diretta al risolutore ricorsivo (che funge da dispositivo di censura). Questo d’altra parte rende semplice l’elusione di questa tecnica di censura: la modifica del risolutore ricorsivo predefinito eviterà il dispositivo di censura e quindi lascerà libero l’accesso a Internet. 1.1.2 DNS injection Una tecnica più sofisticata del DNS hijacking è l’inezione di pacchetti falsi che imitano la risposta legittima del server DNS interrogato ma che fornisce dati falsi. Un iniettore DNS è un dispositivo posizionato strategicamente all’interno della rete per acquisire richieste DNS. Ogni volta che l’iniettore vede una richiesta DNS che corrisponde a un dominio bloccato, invia una risposta DNS falsa contenente informazioni non valide. Questa tecnica è più 8
Censura di Internet efficace del DNS hijacking perché il pacchetto UDP con porta di destinazione 53 non deve necessariamente avere l’indirizzo IP del risolutore ricorsivo DNS predefinito; ciò rende inefficace la tecnica di elusione precedente perché anche le query indirizzate a risolutori di terze parti verranno intercettate e replicate Powered by TCPDF (www.tcpdf.org) con dati manomessi. 1.1.3 DNS-Sec Dos DNS-Sec (Domain Name System Security Extensions) rappresenta una serie di estensioni del DNS che permettono ai client DNS di autenticare l’effet- tiva origine dei dati DNS, l’integrità dei dati ricevuti (ma non la disponibilità o la riservatezza) e le asserzioni di non esistenza. Questo impedisce la possibi- lità di iniettare una risposta falsa che potrebbe essere accettata come valida. DNS-Sec combatte il fenomeno dell’hijacking o dell’injection ma non proteg- ge dagli attacchi DoS (Denial Of Service). L’utilizzo del DNS-Sec costringe il censore a gestire un dispositivo di censura sul percorso che deve eliminare la richiesta DNS o la risposta DNS non completata. 1.2 La censura su HTTP 2 L’HTTP (HyperText Transfer Protocol) è un protocollo a livello appli- cativo usato come principale sistema per la trasmissione d’informazioni sul web definito in [RFC 1945] e in [RFC 2616]. In generale i messaggi HTTP so- no costituiti da due parti : l’intestazione e il corpo. Una parte fondamentale dell’intestazione dei messaggi di risposta è il codice di stato. L’azione di cen- sura sul protocollo HTTP (HTTP tampering) consiste proprio nell’invio di un messaggio di risposta HTTP con codici di stato appartenenti alle seguenti categorie : • codici di reindirizzamento 30x : il client deve eseguire ulteriori azioni per soddisfare la richiesta, ad esempio 301 Moved Permanently (l’oggetto richiesto è stato trasferito in modo permanente); • codice 404 Not Found : il percorso dell’URL richiesto non corrisponde ad un risorsa nota. L’utente visualizzerà un apposito messaggio di errore fornito dal browser che descrive il problema; 2 Il contenuto della sezione 1.2 è una rielaborazione basata su: [2] 9
Censura di Internet • codice 403 Forbidden : la richiesta è legittima ma il server si rifiuta di soddisfarla. Anche il questo caso l’utente visualizzerà un messaggio di errore; Powered by TCPDF (www.tcpdf.org) • codice 200 No Error : richiesta HTTP andata a buon fine; il browser analizzerà il contenuto. 1.2.1 HTTP tampering La procedura più comune consiste nell’utilizzare un’applicazione per richie- dere una risorsa tramite il protocollo HTTP; il trigger viene messo nell’header della richiesta HTTP, in particolare nella query della richiesta GET o nel campo host dell’header. Nel primo caso viene interpretato come un percorso di una risorsa sul server; nel secondo caso viene interpretato come nome host e utilizzato per identificare un sito Web specifico se molti di essi sono ospitati nello stesso indirizzo IP ("hosting virtuale"). La principale fonte di variazio- ne è lo specifico strumento adottato per generare un messaggio di richiesta HTTP (metodo GET). 1.2.2 HTTPS L’HTTPS (HyperText Transfer Protocol over Secure Socket Layer) è un protocollo per la comunicazione sicura attraverso una rete di computer utilizzato su Internet. La porta generalmente utilizzata è la 443. HTTPS consiste nella comunicazione tramite il protocollo HTTP all’interno di una connessione criptata dal TLS (Transport Layer Security). Il principio che sta alla base di HTTPS è quello di avere un’autenticazione del sito web visitato, protezione della privacy e l’integrità dei dati scambiati tra le parti comunicanti. Il funzionamento del protocollo TLS può essere suddiviso in tre fasi principali : 1. Negoziazione fra le parti dell’algoritmo da utlizzare; 2. Scambio delle chiavi e autenticazione; 3. Cifratura simmetrica e autenticazione dei messaggi. 10
Censura di Internet Le chiavi (in forma di certificati SSL) vengono verificate per mezzo di una terza parte attendibile, l’Autorità certificativa (CA). Una tecnica di TLS tampering utilizzata dai censori è quella di fornire un certificato SSL per il sito che attesti una falsa identificazione, ma che risulta valido dato che è Powered by TCPDF (www.tcpdf.org) firmato da una CA attendibile (ma in realtà non funzionante). Il trigger di questa tecnica è una richiesta HTTPS con un nome host per il quale una CA ha generato un certificato falso (ma valido). In questo modo si avranno dei contenuti manomessi senza che il protocollo TLS sia in grado di avvisarlo. Un’altra tecnica (TLS failure) consiste in una richiesta HTTPS con un nome host per il quale il censore non fornisce un certificato valido. A questo punto l’utente visualizzerà un errore che se viene ignorato dà accesso al censore alla comunicazione. 11
Capitolo 2 Domain Fronting Domain Fronting Il "Domain Fronting (DF)" è una tecnica che aggira la censura di Internet nascondendo il vero endpoint di una connessione. Lavorando a livello di applicazione, il domain fronting consente ad un utente di connettersi ad un servizio bloccato su HTTPS, mentre sembra comunicare con un sito completamente diverso. L’idea chiave è quella di utilizzare diversi nomi di dominio nei differenti livelli di comunicazione. In una richiesta HTTPS il nome del dominio di destinazione apppare in tre posizioni: nella query DNS, nell’estensione SNI e nell’intestazione HTTP. Normalmente abbiamo lo stesso nome di dominio in tutti e tre i luoghi. Con il domain fronting, nella richiesta DNS e nell’estensione SNI troveremo lo stesso nome di dominio (dominio anteriore) di una destinazione consentita, mentre nell’ intestazione HTTP avremo un nome di dominio di un server di una destinazione proibita [4]. Figura 2.1: Nomi di dominio diversi nei differenti livelli di comunicazione.[4, fig.1] Si crea, dunque, la seguente situazione: viene utilizzato il nome di dominio di un sito innocuo per inizializzare la connessione e questo nome di dominio è esposto alla censura come parte della richiesta DNS e dell’indicazione del nome del server TLS. Il nome di dominio dell’host reale bloccato viene comunicato solo dopo la creazione di una connessione HTTPS crittografata (nell’intestazione del messaggio di richiesta HTTP) rendendolo invisibile ai censori. Questa tecnica funziona con i nodi CDN perché un server su una CDN, quando riceve una richiesta per una risorsa non memorizzata già nella cache, la inoltra al dominio presente nell’intestazione. Il domain fronting, dunque, può essere utilizzato se i siti bloccati e innocui sono entrambi ospitati dallo stesso provider. L’applicazione invierà i suoi pacchetti al dominio di una CDN; a questo punto il pacchetto viene decodificato e viene rilevato il dominio 12
Domain Fronting reale. In questo modo i censori non possono identificare i pacchetti che vanno al dominio reale. Essi hanno una sola scelta, ovvero quella di bloccare tutto il traffico che passa attraverso il dominio anteriore. Ciò significa che se un’applicazione utilizza ad esempio Google App Engine per la gestione dei Powered by TCPDF (www.tcpdf.org) domini, per vietare la comunicazione attraverso quest’applicazione è necessario bloccare tutto il traffico su google.com [5]. 2.1 Servizi web con funzionalitá di fronting 1 In questa sezione analizziamo dei servizi Web che supportano il domain fronting. Google App Engine è una piattaforma di cloud computing per lo sviluppo e l’hosting di applicazioni web gestite dai Google Data Center. Esso per- mette agli utenti di caricare un’applicazione Web; ogni applicazione riceve un sottodominio specificato dall’utente di appspot.com, per il quale quasi tutti i domini di Google possono fungere da front (ad esempio google.com, gmail.com, googleapis.com e molti altri). Può eseguire solo applicazioni Web che offrono richieste di breve durata, per questo è necessario un’app riflettore che inoltra le richieste in entrata a un proxy a lunga durata. Nel caso in cui la censura blocchi appspot.com ci sarà almeno un altro dominio Google rag- giungibile. Amazon CloudFront è un servizio di content distribution offerto da Ama- zon.com. Una distribuzione CloudFront associa un sottodominio generato automaticamente di cloudfront.net con un server di origine. Il dominio ante- riore può essere qualsiasi sottodominio cloudfront.net (che supporta HTTPS) o qualsiasi alias DNS per essi. Microsoft Azure è la piattaforma cloud pubblica di Microsoft che offre servizi di cloud computing. Azure assegna sottodomini generati automaticamente di vo.msecnd.net ognuno dei quali può fare da fronte per qualsiasi altro. A dif- ferenza di Cloud Front, la CDN di Azure inoltra solo ai domini affiliati ad Azure. Come per App Engine è necessario eseguire un’app riflettore che inol- tra le richieste a qualche proxy esterno. Akamai è un’ azienda che fornisce una piattaforma per la distribuzione di contenuti via Internet (è una grande CDN). Il dominio HTTPS utilizzato è 1 Il contenuto della sezione 2.1 è una rielaborazione basata su: [4] 13
Domain Fronting a248.e.akamai.net o altri alias DNS configurati dal cliente. Fastly è una CDN che convalida SNI: se SNI e l’host non corrispondono, il server periferico restituisce l’errore con codice di stato 400 (Bad Request). Tuttavia, se il messaggio ClientHello TLS omette SNI, l’host potrebbe essere Powered by TCPDF (www.tcpdf.org) essere qualsiasi dominio Fastly. Esso richiede lo stile del fronting "senza do- minio". CloudFare è una CDN commercializzata anche come protezione dagli at- tacchi DoS (Denial of Service). Come Fastly, CloudFare controlla che SNI corrisponde all’intestazione Host e quindi richiede l’invio senza SNI. 2.2 Utilizzatori del domain fronting Il domain fronting è una tecnica che viene utilizzata dalle società che ren- dono i loro servizi disponibili anche nei paesi in cui sono vietati. Tuttavia, esso può anche essere utilizzato per eseguire attacchi di phishing attirando gli utenti verso siti Web dannosi [5]. Applicazioni di messaggistica che si sono servite del domain fronting sono ad esempio Signal e Telegram. L’accesso di- retto a Signal è stato censurato in Egitto, Oman, Qatar,Emirati Arabi Uniti e Iran. Questi paesi hanno vietato l’accesso diretto all’applicazione bloccando le connessioni ai server di Signal di tutti gli ISP (Internet Service Provider). Signal inizialmente ha implementato il domain fronting tramite Google App Engine ma dopo la chiusura dei servizi di fronting da parte di Google (vedi sezione 2.3), ha utilizzato CloudFront. Tuttavia anche Amazon ha seguito Google nel vietare l’utilizzo del domain fronting [6]. Una situazione analo- ga si prensenta con Telegram che ricorre a tecniche di fronting per evitare la censura in Russia [7]. Tor (The Onion Router) è un sistema di comunicazione anonima per Internet. Tor Browser protegge da tracciamento, sorveglianza e censura ma in alcuni paesi è vietato connettersi. Per permettere a tutti l’accesso alla rete Tor, so- no stati sviluppati dei trasporti collegabili per aggirare la censura, ricorrendo a tecniche di domain fronting. Un esempio di questo è il trasporto "meek " (mite) [8]. 14
Domain Fronting 2.2.1 Distribuzione su Tor 2 Il trasporto meek combina il domain fronting con un proxy tunnelling (server proxy che trasmette richieste e risposte senza modificarle) basato su HTTP. Il domain fronting consente l’accesso al proxy; quest’ultimo trasforma Powered by TCPDF (www.tcpdf.org) una sequenza di richieste HTTP in un flusso di dati Tor. Figura 2.2: Architettura del meek. [4, fig. 2] Il client invia una richiesta HTTP al bridge Tor tramite un servizio web intermedio (ad esempio una CDN) e protegge il nome di dominio del bridge dal censore ponendo un altro nome nell’estensione SNI. Il server Web intermedio decritta il livello TLS e inoltra la richiesta al bridge in base all’intestazione host. Il bridge invia i dati al client nella risposta HTTP. Meek-client e meek-server rapprensentano l’interfaccia tra Tor e il trasporto collegabile. Il flusso da server a client viene restituito nei corpi delle risposte HTTP. Questo sistema risulta essere vulnerabile al blocco tramite "l’ impronta digitale" TLS. TLS infatti presenta un handshake che è in gran parte in chiaro. Per mascherare la sua impronta digitale TLS, meek-client delega tutte le sue richieste HTTPS ad un vero browser web. Dunque il processo Tor del client avvia sia il meek-client che il browser e poi configura il meek-client per delegare le sue richieste attraverso il browser. 2.2.2 Distribuzione su Lantern Lantern è uno strumento gratuito e open-source per l’elusione della censura di Internet che viene utilizzato per la navigazione web casuale. Esso non fornisce l’anonimato come Tor ma permette di aggirare le attività di censura 2 Il contenuto dei paragrafi 2.2.1, 2.2.2 e 2.2.3 è una rielaborazione basata su: [4] 15
Domain Fronting richieste da alcuni stati [9]. Lantern comprende una rete di server proxy HTTPS condivisi e un client software che permette agli utenti censurati di trovare e usare questi server proxy con i loro browser. Il client Lantern consente inoltre agli utenti non censurati di ospitare server proxy (server Powered by TCPDF (www.tcpdf.org) "peer-host") per l’utilizzo da parte di altri ed assegna casualmente gli utenti ai server proxy ospitati da Lantern. Presenta un’infrastruttura centralizzata per l’autenticazione di utenti e l’assegnazione dei proxy. Il domain fronting di Lantern è fornito da un’applicazione chiamata flashlight, che usa due librerie: enproxy e fronted. Enproxy fornisce un’interfaccia di connessione di rete astratta che codifica le letture e le scritture come una sequenza di richieste HTTP e consente a flashlight di indirizzare il traffico orientato allo streaming come TCP. A differenza dell’implementazione di Tor (trasporto meek), enproxy supporta il trasferimento bidirezionale dei dati. Fronted usa il domain fronting per trasmettere le richieste HTTP di enproxy. Le richieste vengono distribuite dalla CDN ai server in modalità round-robin. 2.2.3 Distribuzione su Psiphon Psiphon è un software gratuito ed open source ideato per aggirare la censura delle istituzioni statali su Internet. Il suo sistema di elusione è una rete gestita centralmente e geograficamente diversificata composta da migliaia di server proxy. Gran parte della sua infrastruttura è ospitata da fornitori di servizi cloud. Il protocollo alla base di Psiphon è SSH (Secure SHell) che fornisce un livello di crittografia per la comunicazione tra il client e il server Psiphon. Lo scopo principale di questo protocollo è quello di aggirare la DPI (Deep Packet Inspection), cioè quella tecnica di filtraggio dei pacchetti che non si limita a controllare l’intestazione dei pacchetti ma ne esamina il loro contenuto. Il suo funzionamento prevede che alcuni utenti ricoprono il ruolo di server ai quali gli utenti censurati si collegano tramite richieste HTTPS. Il primo passo è che un utente residente in un paese in cui Internet non è censurato installi il software sul proprio computer, diventando così un provider Psiphon. Questo utente fa pervenire le informazioni per connettersi al proprio nodo Psiphon a utenti residenti in un paese in cui la rete è censurata. Questi ultimi per visualizzare dei contenuti bloccati si collegano con un nome utente ed una password al nodo-provider Psiphon, che li collega all’informazione 16
Domain Fronting richiesta. La transazione è crittografata e il processo rimane privato e per questo è difficile per le autorità bloccare i nodi Psiphon [10]. Quando un utente avvia un client Psiphon, quest’ultimo crea fino a dieci connessioni contemporaneamente, in modo da ridurre al minimo il tempo di attesa nel Powered by TCPDF (www.tcpdf.org) caso in cui alcuni protocolli o alcuni server siano bloccati. Questo processo tende anche a scegliere il data center più vicino e quello con il costo più basso, in quanto tende a scegliere connessioni dirette a latenza più bassa. 2.3 Recenti sviluppi Negli ultimi mesi due dei maggiori provider di servizi cloud (Google e Ama- zon) hanno bloccato il domain fronting. Il 13 aprile gli sviluppatori di Tor si sono resi conto che Google App Engine aveva smesso di funzionare constatan- do che tutte le richieste verso .appspot.com non venivano più accettate [11]. Qualche settimana dopo (il 28 aprile) anche Amazon ha proibito il domain fronting annunciando dei miglioramenti della protezione ad Amazon Cloud- Front [12]. Pochi giorni dopo Signal ha pubblicato una lettera di Amazon in cui quest’ultima minacciava di espellere l’app dai suoi server se continuava ad utilizzare il domain fronting [6]. Come annunciato dagli sviluppatori di Signal, questa tecninca di elusione della censura è ormai in gran parte impra- ticabile. Attualmente Microsoft Azure consente ancora il domain fronting ma non è chiaro per quanto tempo ancora lo permetterà. Un’alternativa al domain fronting è rappresentata dall’ESNI, che consiste nel crittografare la richiesta nell’estensione SNI. 17
Capitolo 3 ESNI ESNI ESNI (Encrypted Server Name Indication) è un nuovo protocollo che estende su TLS 1.3 (versione più recente del Transport Layer Security) imple- mentato in maniera preliminare dagli ingegneri di Apple, Cloudfare, Fastly e Mozilla. Questo protocollo è orientato alla privacy ed ha lo scopo di risolvere alcuni dei problemi fondamentali che consentono la censura. SNI (Server Na- me Indication) è un’estensione del protocollo TLS con cui un client indica il nome dell’host a cui sta tentando di connettersi all’inizio del processo di handshake. Ciò consente ad un server di presentare più certificati sullo stesso indirizzo IP e dunque di supportare più domini virtuali con un singolo indiriz- zo IP. SNI, tuttavia, non nasconde il nome host richiesto che dunque è visibile al censore. ESNI è una versione migliorata dell’estensione SNI che risolve que- sto problema poichè il nome del server nel messaggio ClientHello(messaggio di avvio di una nuova connessione da parte del client) viene crittografato [13]. I dati, quindi, sono crittografati e disponibili solo per il server e il client. At- tualmente l’espansione del supporto ESNI è stata implementata nelle librerie BoringSSL,NSS e picoTLS. Figura 3.1: Comunicazione tramite ESNI. [14] Per la trattazione della crittografia vengono distinte due topologie differenti[15]: • Modalità condivisa, in cui il provider è il server di origine per tutti i domini ed i client creano una connessione TLS direttamente con quel provider, che ha accesso al testo in chiaro della connessione; 18
ESNI • Modalità split,in cui il provider non è il server di origine per i domini privati ma i record DNS vengono reindirizzati al vero server di origine. Il fornitore non ha accesso al testo in chiaro della connessione. Powered by TCPDF (www.tcpdf.org) (a) Modalità condivisa. [16, p.11] (b) Modalità spilt. [16, p.10] 3.1 Crittografia SNI 1 Per prima cosa, il provider condivide una chiave pubblica che viene usata per la crittografia SNI di tutti i domini che serve direttamente (modalità condivisa) o indirettamente (modalità split). Quando un utente desidera creare una connessione TLS con un dominio qualsiasi servito da un provider che supporta ESNI, sostituisce nell’estensione SNI del messaggio "ClientHello" il nome del server con quello crittografato per mezzo della chiave pubblica del provider. Il provider può quindi decodificare l’estensione e terminare la connessione (in modalità condivisa) o inoltrarla al server di origine (in modalità split). Le chiavi di crittografia SNI possono essere pubblicate nel DNS utilizzando la struttura ESNIKeys definita di seguito : Figura 3.2: Struttura delle ESNIKeys. [16, p.12] SNI crittografato viene trasportato in un’estensione encrypted_server_name, che contiene una struttura EncryptedSNI : 1 Il contenuto della sezione 3.1 è una rielaborazione basata su: [15] 19
ESNI Powered by TCPDF (www.tcpdf.org) Figura 3.3: Struttura EncryptedSNI. [16, p.13] La struttura è composta da tre campi : • suite : algoritmo usato per crittografare SNI; • record_digest : l’hash del record ESNIKeys; • encrypted_sni : crittografia della struttura ServerKeysList originale. 3.2 Comportamento del Client e Server 2 Per inviare un SNI crittografato il client deve prima selezionare uno dei valori ESNIKeyShareEntry del server e generare una condivisione ECDHE (schema utilizzato per la crittografia) nel gruppo corrispondente. Questa condivisione viene quindi utilizzata per l’estensione "key_share" del client e verrà utilizzata per derivare sia la chiave di crittografia SNI sia il segreto condiviso ECDHE utilizzato nella pianificazione della chiave TLS. Questo ha due importanti implicazioni: 1. il client deve fornire solo un KeyShareEntry; 2. il server si impegna a supportare ogni gruppo nell’elenco ESNIKeys. La chiave di crittografia verrà calcolata secondo l’algoritmo DH (Diffie- Hellman) e successivamente viene calcolato il valore da mettere nell’estensione encrypted_server_name. Dopo aver ricevuto un’estensione "encrypted_server_name" il "client-facing" server deve prima eseguire i seguenti controlli : • se non è in grado di trattare TLS 1.3 deve interrompere l’operazione di connessione con un avviso "handshake failure"; 2 Il contenuto della sezione 3.2 è una rielaborazione basata su: [15] 20
ESNI • se il valore EncryptedSNI.record_digest non corrisponde ad un hash crittografico di una qualsiasi struttura ESNIKeys deve abortire la con- nessione con un avviso "illegal parameter". Stessa cosa se è stato fornito Powered by TCPDF (www.tcpdf.org) più di un KeyShareEntry o se il gruppo di condivisione non corrisponde a quello per la chiave di crittografia SNI; • se la lunghezza dell’estensione "encrypted_server_name" é incoeren- te con la lunghezza prefissata interrompe la connessione con "illegal parameter". Se questi controlli hanno esito positivo, allora il server decodifica il valore "ServerName"; in caso di fallimento restituisce un avviso "decrypt error". Dopo aver determinato il vero SNI, il "client-facing" server serve la connessione direttamente (nel caso di modalità condivisa) o inoltra la connessione al server originale (nel caso di modalità split). 21
Conclusioni La censura di Internet è in forte crescita negli ultimi anni a causa di molteplici motivi: politici, religiosi, sociali, morali, ecc.. In tale scenario assumono particolare rilevanza le tecniche di elusione, come ad esempio il domain fronting. Il presente lavoro ha analizzato gli aspetti tecnici del domain fronting, il suo funzionamento e le principali applicazioni che si sono servite di questa tecnica. Sono state affrontate le problematiche dovute ai recenti sviluppi: Google e Amazon hanno proibito l’utilizzo del domain fronting e si teme che tutti gli altri servizi cloud si aggreghino a questa decisione. Per questo motivo gli utilizzatori del domain fronting stanno ricercando nuove soluzioni per aggirare la censura e permettere a tutti di usufruire dei loro servizi. Un’ alternativa studiata dagli ingegneri di Apple, Cloudfare, Mozilla e Fastly è l’utilizzo di ESNI, un nuovo protocollo che estende TLS 1.3. Esso rappresenta una versione migliorata dell’estensione SNI, in quanto crittografa il nome del server presente nel messaggio ClientHello, ponendosi l’obiettivo di risolvere alcuni dei problemi fondamentali che consentono la censura. ESNI è ancora in fase sperimentale e presenta delle problematiche: ad esempio se la crittografia SNI è utilizzata solo da servizi sensibili o privati, rapprensenta un segnale che un client sta accedendo a tale servizio. Per questo motivo la ricerca si sta concentrando su come occultare che SNI sia protetto. Il presente lavoro può essere approfondito eseguendo delle ricerche su altre tecniche utilizzate per la censura di Internet, spiegando nel dettaglio il nuovo protocollo TLS 1.3 che ha introdotto delle novità rispetto alla sua versione precendente e seguendo gli sviluppi su ESNI che ci saranno nei prossimi mesi. 22
Bibliografia [1] George W. Reynolds. Ethics in information technology. Cengage Learning, fifth edition, 2012. [2] G. Aceto and A. Pescapè. Internet censorship detection: a survey. Computer Networks, 2015. [3] James F. Kurose and Keith W. Ross. Computer Networking : a top-down approach. Pearson, sixth edition, 2013. [4] David Fifield, Chang Lan, Rod Hynes, Percy Wegmann, and Vern Paxson. Blocking-resistant communication through domain fronting. Proceedings on Privacy Enhancing Technologies, 2015. [5] What is domain fronting? https:// web.archive.org/ web/ 20180920084840/ https:// bdtechtalks.com/ 2018/ 06/ 19/ domain-fronting-signal-telegram-censorship/ , 2018. [6] Amazon threatens to suspend signal’s aws account over censorship circumvention. https:// web.archive.org/ web/ 20180920143155/ https: // signal.org/ blog/ looking-back-on-the-front/ , 2018. [7] Russian censor gets help from amazon and google. https:// www.bloomberg.com/ view/ articles/ 2018-05-03/ telegram-block-gets-help-from-google-and-amazon, 2018. [8] Domain fronting is critical to the open web. https:// web. archive.org/ web/ 20180922151343/ https:// blog.torproject.org/ domain-fronting-critical-open-web, 2018. [9] Here’s an anti-internet censorship program for ac- tivists by activists. https:// web.archive.org/ web/ 20181002162402/ https:// pando.com/ 2013/ 10/ 22/ heres-an-anti-internet-censorship-program-for-activists-by-activists/ , 2013. [10] La censura web in forte crescita. https:// web.archive.org/ web/ 20181003100645/ http:// www.repubblica.it/ 2007/ 08/ sezioni/ scienza_ e_tecnologia/ cina-internet/ osservatorio-censura/ osservatorio-censura. html , 2007. [11] Domain fronting to app engine stopped working. https: // web.archive.org/ web/ 20180922151418/ https:// trac.torproject. org/ projects/ tor/ ticket/ 25804 , 2018. [12] Enhanced domain protections for amazon clou- dfront requests. https:// web.archive.org/ web/ 20180922151459/ https:// aws.amazon.com/ it/ blogs/ security/ enhanced-domain-protections-for-amazon-cloudfront-requests/ , 2018. [13] Don’t panic about domain fronting, an sni fix is getting hac- ked out. https:// web.archive.org/ web/ 20180922151534/ https:// www. theregister.co.uk/ 2018/ 07/ 17/ encrypted_server_names/ , 17/07/2018.
[14] Apple, cloudflare, fastly, and mozilla devise solution to encrypting sni. https:// web.archive.org/ web/ 20181005173103/ https:// appuals.com/ apple-cloudflare-fastly-and-mozilla-devise-solution-to-encrypting-sni/ , 2018. [15] Encrypted server name indication for tls 1.3. https:// web. archive.org/ web/ 20180922151615/ https:// tools.ietf.org/ html/ draft-rescorla-tls-esni-00 , 2018. [16] Encrypted sni ietf 102. https:// web.archive.org/ web/ 20181005172322/ https:// datatracker.ietf.org/ meeting/ 102/ materials/ slides-102-tls-encrypted-sni-01 , 2018.
Puoi anche leggere