La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet

Pagina creata da Diego Cosentino
 
CONTINUA A LEGGERE
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
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]
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
Alla mia famiglia e a tutti
  coloro che mi sono stati
 vicini in questo percorso
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
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
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
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
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
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
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
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
La pratica del Domain Fronting negli strumenti di tutela della privacy su Internet
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