Corso di Laurea in SCIENZE E TECNOLOGIE DELL’INFORMAZIONE
Intercettazioni web e privacy
Studente
Docente del corso
Stefano Lorenzi
Prof. Pierangela Samarati
Matr. 754752
Anno Accademico 2010/2011
Indice
1 Introduzione
2
2 Intercettazioni web
2.1 MITM attack . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Ricostruzione del traffico con Xplico . . . . . . . . . .
4
5
8
3 Navigazione anonima
3.1 Navigazione tramite proxy .
3.2 TOR . . . . . . . . . . . . .
3.2.1 Autenticazione TOR
3.2.2 Attacchi a TOR . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Crittografia e numeri pseudocasuali
4.1 Metodo della congruenza lineare . .
4.1.1 Attacco all’algoritmo . . . .
4.2 Ansi X9.17 . . . . . . . . . . . . . .
4.2.1 Attacco all’algoritmo . . . .
4.2.2 Input-Base attacks . . . . .
4.2.3 Crittoanalisi . . . . . . . . .
4.3 Blum Blum Shub . . . . . . . . . .
4.3.1 Attacco all’algoritmo . . . .
5 Conclusioni
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
12
13
14
.
.
.
.
.
.
.
.
16
18
20
21
21
22
22
22
23
24
1
Capitolo 1
Introduzione
In questo ultimo ventennio il mondo informatico ha vissuto una considerevole
espansione. Grazie anche all’avvento di Internet, le tecnologie informatiche
e il flusso di informazioni hanno potuto essere fruite da un numero crescente
di cittadini, modificando stili di vita e la società stessa. Il loro impiego è
ulteriormente aumentato in relazione alle possibilità che offrono e alla facilitazione di utilizzare servizi senza recarsi in loco, come accade nello shopping
on line, nell’eseguire bonifici o prenotazioni. Come in un circolo virtuoso, le
richieste di cittadini e istituzioni sono aumentate, stimolando la tecnologia a
sviluppare sempre nuove soluzioni; in questa realtà inevitabilmente le reti informatiche sono diventate sempre più complesse e nel futuro questa tendenza
sembra non rallentare. Anche la loro accessibilità e la loro interdipendenza è
in aumento, ed è proprio quest’ultima a determinare nuove criticità e rischi
tra i diversi sistemi, oggi fortemente integrati ed interdipendenti e basati su
piattaforme condivise.
Infine, non è superfluo ricordare che l’uso di queste tecnologie non avviene solo da parte del singolo cittadino, bensı̀ da organizzazioni e istituzioni
importanti a livello sia economico che politico. Questo argomento assume
ulteriormente importanza e attualità se pensiamo, ad esempio, che molte organizzazioni terroristiche comunicano via internet.
Da qui si deduce che molti fattori come la qualità della vita, la sicurezza
personale e pubblica, lo sviluppo di politiche ed economie dipendono ormai
fortemente dal funzionamento continuo e sempre più coordinato di un insieme di infrastrutture che, per la loro importanza e strategicità, sono definite
Infrastrutture Critiche, come ad esempio:
• le varie reti di comunicazione,
• le reti e le infrastrutture di trasporto persone e merci (aereo, navale,
ferroviario e stradale),
2
CAPITOLO 1. INTRODUZIONE
3
• il sistema elettrico ed energetico,
• le reti a supporto del Governo, delle Regioni ed enti locali,
• i circuiti economico finanziari.,
Le intercettazioni web sono cosı̀ diventate uno degli strumenti necessari per
la prevenzione di eventuali attacchi e per il controllo delle infrastrutture critiche. Esse non interessano solo gli stati, ma anche grandi organizzazioni
economiche ed industriali. Ad esempio, lo spionaggio industriale è un problema sempre esistito, ma mentre una volta richiedeva la presenza fisica di una
”spia” nella fabbrica, ormai essa non è più necessaria: la facilità e la quantità
di informazioni che una persona può ottenere tramite un attacco informatico (standosene comodamente a casa sua) è decisamente maggiore rispetto al
passato. Queste nuove possibilità hanno dato il nome ad una nuova realtà:
la cyber war.
Esistono differenti metodologie per tutelare i dati in transito e difendere la
propria privacy, come ad esempio la rete TOR e la crittografia. Purtroppo, le
stesse metodologie sono spesso utilizzate anche dagli attaccanti, come accade
per la rete TOR . Per quanto riguarda la crittografia vedremo che questa
scienza, pur essendo molto robusta e sicura, si basa su principi matematici
che devono essere applicati con particolare scrupolosità. Infatti, gli algoritmi
crittografici si basano spesso sulla generazione di numeri primi: operazione
complessa e difficile, in quanto il calcolatore deve generare numeri casuali.
Considerato questo limite, nell’informatica si parla sempre di numeri pseudocasuali.
Anche RSA, cifrario molto robusto e probabilmente il più usato in assoluto,
è vulnerabile all’attaco CRT (teorema del resto cinese) quando si generano
chiavi piccole, come dimostrato da [3] . Molti programmatori usano la funzione random offerta dai loro compilatori senza preoccuparsi di come tale
funzione generi i numeri. E’ad esempio il caso del compilatore Java con la
sua libreria java.util.Random poi sostituita con java.security.SecureRandom.
Infine, anche protocolli come https non sono da considerarsi sicuri al 100%.
Infatti, molti proxy ormai riescono a ricostruire questo tipo di traffico: stando nel mezzo tra client e server hanno, infatti, la possibilità di scambiarsi
certificati falsi.
In questo lavoro analizzeremo le reti TOR e la crittografia come strategie
di tutela e protezione dei dati, sottolineandone i punti di forza e i limiti.
Capitolo 2
Intercettazioni web
Le reti informatiche sono state implementate molti anni fa (il protocollo
TCP è del 1970), con l’obiettivo di far comunicare diversi computer tra loro.
Considerato il basso numero di computer dell’epoca, nessuno aveva preso in
considerazione il problema della sicurezza, tantomeno quello della privacy.
Ai giorni nostri, l’uso del computer e della rete si è notevolmente diffuso, ma
la rete si basa ancora sui vecchi protocolli.
Si potrebbe concludere che se dopo 40 anni e nonostante la dinamicità del
mondo informatico, quei protocolli sono ancora in uso, essi sono stati molto
ben progettati e quindi tutt’oggi efficaci nella loro funzione. Tuttavia, i loro
limiti iniziano ad emergere chiaramente. Uno dei più importanti consiste nel
fatto che la maggior parte dei dati non sono cifrati, permettendo cosı̀ una
maggiore facilità di intercettare i dati stessi da parte di estranei.
Ci sono diverse modalità per intercettare il traffico di rete; tra di essi i
principali solo due:
1. port monitoring/Span Port;
2. attacco man in the middle (MITM);
Il primo metodo è molto usato in ambito aziendale. Spesso gli amministratori di rete necessitano di dover verificare i dati che passano nelle loro
reti interne per poter verificare che le policies aziendali vengano rispettate.
Quindi, qualora si verificasse del traffico non desiderato (come P2P, chiamate voip ed altro), è possibile ricorrere ad allarmi tramite opportuni software
chiamati IDS (Intrusion Detection System). Questa modalità si basa sulla
dupplicazione del traffico che viaggia su una o più porte di uno switch, su cui
è possibile mettersi in ascolto. In questo modo l’IDS può elaborare il traffico
transitato ed analizzare se qualche regola non sia stata rispettata. La figura
successiva vuole riassumere questa modalità di intercettazione:
4
CAPITOLO 2. INTERCETTAZIONI WEB
5
Fig. 2.1: Span Port
La seconda modalità è spesso utilizzata per scopi decisamente fraudolenti.
Questo tipo di attacco permette all’attaccante di leggere, inserire o modificare a piacere messaggi tra le parti senza che nessuna delle due sia in grado
di accorgersi che il collegamento che li unisce reciprocamente sia stato effettivamente compromesso da una terza parte. La figura 2.2 vuole riassumere
questo tipo di attacco.
Fig. 2.2: Attacco man in the middle
A seconda della capacita’ di riuscire a monitorare solo uno o entrambi i versi
della connessione, l’attacco verra’ chiamato mitm half duplex o mitm full
duplex (l’esempio della figura 2.2 è di tipo half duplex). Tuttavia questa modalità di attacco, richiede alcune nozioni tecniche che vediamo nel dettaglio
nel paragrafo successivo.
2.1
MITM attack
Quando due host comunicano tra loro, devono ”parlare” lo stesso linguaggio, e
la struttura di questo linguaggio è descritta nel modello OSI, il quale descrive
CAPITOLO 2. INTERCETTAZIONI WEB
6
gli standard che consentono ad apparati hardware di parlare tra loro. Il
modello OSI è suddiviso in livelli, come visto nella figura 2.3
Fig. 2.3: modello OSI
Il modello OSI può essere visto come una matrioska, nella quale tutti i livelli
sono annidati. Ossia, il livello traporto è inglobato dentro il livello network,
il quale a sua volta è inglobato nel livello data link.
Come spiegato in dettaglio in [5] ci sono diverse modalità di attacchi
MITM, i principali sono:
• rete locale;
– ARP poisoning
– DNS spoofing
– STP mangling
• da rete locale a remoto
– ARP poisoning
– DNS spoofing
– DHCP spoofing
– ICMP redirection
– IRDP spoofing
– route mangling
• remoto
– DNS poisoning
– traffic tunneling
CAPITOLO 2. INTERCETTAZIONI WEB
7
– route mangling
Come detto in precedenza questo tipo di attacco serve per dirottare il traffico
tra due host verso una terza entità. Il caso base è l’arp poisoning all’interno
di una rete locale. Il protocollo ARP prevede che su un segmento di rete, il
router/switch abbia l’onere di tradurre l’indirizzo IP di una macchina nel corrispondente MAC Address (numero univoco per contraddistinguere le schede
di rete); il mac address è un numero di 48 bit, di cui i primi 24 indicano il
produttore mentre i rimanenti sono un numero sequenziale. Ogni qualvolta
un host vuole comunicare con un altro host, è necessario che prima traduca
l’ip della macchina in un mac address seguendo i seguenti passi
• il Computer A deve inviare un datagram al Computer B
• Computer A interroga il router attraverso il protocollo ARP chiedendo
quale MAC Address corrisponde all’indirizzo IP del Computer B
• riceve il MAC Address del Computer B
• compone il pacchetto incapsulato
La parte essenziale di un attacco MITM (tramite arp poisoning) è che l’attaccante dovrà creare un pacchetto falsificando l’accoppiata mac address (presente a livello data link) e l’ip (presente a livello Network). Questo viene
generalmente fatto attraverso lo spoofing (tecnica per la creazione di un pacchetto di rete costruito ad hoc). Inoltre, ci sono due particolari importanti
nell’implementazione del protocollo arp:
1. quando arriva una risposta ARP con un indirizzo IP già presente nella cache ARP, verrà sovrascritto il valore precedente (copia IP - mac
address) a meno che non sia esplicitamente segnato come permanente,
2. non esiste una cronologia del traffico ARP. Questo significa che i sistemi accetteranno una risposta ARP anche se non hanno fatto nessuna
richiesta.
La tecnica di spoofing, insieme a queste due dettagli di ARP, se usati in
maniera opportuna permettono di sniffare il traffico all’interno di una rete
commutata. Infatti, l’aggressore invierà risposte con l’indirizzo opportunamente modificato ad alcuni apparati (tipicamente un host e un router/swith)
e, in questo modo, gli apparati sovrascriveranno la loro cache arp. Questa
tecnica è generalmente chiamata come ”avvelenamento della cache arp”.
CAPITOLO 2. INTERCETTAZIONI WEB
8
L’unico problema è che la cache ha un suo TTL, quindi l’attacante dovrà
inoltrare queste risposte arp con un tempo inferiore al TTL
2.1.1
Ricostruzione del traffico con Xplico
Ora che è evidente come sia possibile eseguire un attacco MITM, risulta molto
semplice sniffare il proprio traffico di rete e ricostruire sessioni altrui. Xplico
è un tool open source, scritto in C e python, che attraverso l’uso di diversi
engine (uno per protocollo) dedicati al protocol dissector, sono in grado di
ricostruire molti protocolli di rete tra cui:
• HTTP: per la navigazione web;
• FTP: per lo scambio di file;
• SMTP: per la posta elettronica;
• MSN: chat di Microsoft;
• IRC: altra nota chat;
• Telnet: protocollo per il controllo remoto;
• Web Mail: Yahoo, AOL, LIVE;
CAPITOLO 2. INTERCETTAZIONI WEB
9
• molto altro...
Dall’immagine sotto riprodotta2.4, è visibile come il traffico sniffato, sia
stato ricostruito.
Fig. 2.4: Ricostruzione di una sessione HTTP
CAPITOLO 2. INTERCETTAZIONI WEB
Fig. 2.5: Ricostruzione Immagini
10
Capitolo 3
Navigazione anonima
Ci possono essere molti motivi per voler navigare in maniera anonima. Uno
è quello di mantere la propria privacy. Anche i metodi per ottenere questo
risultato sono numerosi. La logica alla base di questi comportamenti è quella
di nascondere il proprio IP, impedendone cosı̀ la successiva localizzazione, ed
usarne uno ”falso”.
3.1
Navigazione tramite proxy
Come visibile in figura 3.1, questa metodologia si basa sull’inserimento di un
apparato tra un client ed un server. Tale apparato, chiamato proxy, ha la
funzione di server nei confronti client (l’utente), e la funzione di client nei
confronti del server web. In questo modo, il server registrerà nei suoi log che
la pagina richiesta è stata consegnata al client con un determinato IP. Questo
indirizzo non sarà però quello del client ”reale”, bensı̀ quello del proxy. In
realtà l’uso del proxy non è relegato solo al conseguimento della condizione di
anonimato. Esso viene infatti anche utilizzato dalle aziende come cache delle
pagine web: in questo modo se la pagina viene richiesta da più dipendenti,
anzichè richiederla al server web, si utilizza quella della cache.
Fig. 3.1: Proxy
Sono disponibili anche siti internet, chiamati Anonymizer che si basano
su questo concetto. Essi in pratica fungono da proxy, ma non garantiscono
11
CAPITOLO 3. NAVIGAZIONE ANONIMA
12
l’anonimato in quanto il server che ospita il proxy potrebbe memorizzare i
nostri dati.
3.2
TOR
E’ un metodo molto usato per l’anonimato nel web (si stima da circa 250000
utenti) come descritto in [2]. Questa metodologia si basa sul fatto di non
creare più una connessione diretta tra il client ed il server web, ma di passare
su molti nodi TOR, in modo tale da complicare netevolmente eventuali analisi
del traffico di rete. La figura 3.2 è un esempio di come potrebbe essere una
chiamata all’interno della rete TOR tra Alice e Bob.
Fig. 3.2: Funzionamento di TOR
Una rete TOR ha almeno 3 nodi chiamati rispettavamente:
• entry node;
• middle node;
• exit node;
Ad ogni modo il traffico TOR può essere solo di tipo TCP.
CAPITOLO 3. NAVIGAZIONE ANONIMA
3.2.1
13
Autenticazione TOR
Al fine di proteggere la privacy degli utenti, Tor utilizza un numero di nodi (noto anche come ”onion router” o ”ORs”) situati in Internet. Il client
(un utente di internet che vuole essere anonimo, che chiameremo Alice, in
conformità della figura 3.2) si genera un circuito attraverso la rete come segue:
• Alice sceglie un nodo Tor, n1 , e stabilisce una comunicazione cifrata
con esso.
• Alice sceglie un secondo nodo Tor, n2 , e, attraverso il canale precedentemente stabilito, istruisce n1 per la connessione a n2 . Alice stabilisce
poi una comunicazione cifrata con n2 , all’interno del canale esistente a
n1 .
• Alice sceglie un terzo nodo Tor, n3 , e, attraverso il canale precedentemente stabilito, istruisce n2 per la connessione a n3 . Alice stabilisce
poi una comunicazione cifrata con n3 , all’interno del canale esistente
per n2 .
• Alice procede per un numero di step, come i precedenti, a suo piacimento.
Al fine di rafforzare l’anonimato, non solo la comunicazione tra un nodo e il
successivo è cifrata (ad eccezione dell’ultimo nodo con il destinario), ma ad
ogni passo, Alice
• stabilisce un segreto condiviso con un nodo,
• verifica l’identità del nodo, in modo che non possa essere sotto attacco
MITM. Si noti che l’identità di Alice non è mai autenticata, questo per
garantire il suo anonimato.
L’autenticazione dei nodi TOR avviene con lo scambio di chiavi usando l’algoritmo di Diffie-Hellman che si basa sul problema del logaritmo discreto, il
quale si basa a sua volta sui seguenti presupposti:
• Sia G un gruppo e g un generatore di G,
• Si consideri l’equazione y=g x ,
• il più piccolo intero x che soddisfa l’equazione è il logaritmo discreto di
y in base g (log discreto è l’inverso dell’esponenziazione).
CAPITOLO 3. NAVIGAZIONE ANONIMA
14
Il logaritmo discreto è considerato un problema matematico, in quanto risulta
semplice avere x → g x ma molto complesso ottenere g x → x. L’algoritmo di
Diffie-Hellman si basa su questo principio, seguendo i seguenti passi:
• dato un numero primo p (numero molto grande),
• un numero g nel gruppo moltiplicativo Zp∗ ,
• Alice sceglie a caso a in [1..p-1] e manda g a mod p a Bob,
• Bob sceglie a caso b in [1..p-1] e manda g b mod p a Alice,
– Alice e Bob calcolano g ab mod p,
– Bob conosce b e g a , calcola (g a )b = g ab ,
– Alice conosce a e g b , calcola (g b )a = g ab .
3.2.2
Attacchi a TOR
Seppur la rete TOR utilizza traffico cifrato, ed il traffico rimbalza in vari
nodi sella rete TOR, questo aumenta di molto la complessità dell’analisi del
traffico di rete. Come ampiamente discusso in [4] esistono diversi attacchi su
questa tipologia di rete. Ne vedremo alcuni di seguito.
Browser Attacks
La navigazione in Internet tramite Tor richiede all’utente di utilizzare un
proxy HTTP (generalmente è usato Privoxy), questo perchè il traffico sarà
deviato attraverso Tor piuttosto che inviato direttamente su Internet. Un
attacco basato su browser attacks punta sul fatto che un ipotetico attaccante
potrebbe usare un end point maligno (sfruttando il fatto che è l’unico che
vede il traffico in chiaro), il quale potrebbe modificare la pagina richiesta
dall’utente, inserendo un iframe invisibile (grande 1 px), il quale contiene ad
esempio applicazioni flash. In questo modo, quando l’utente esegue la pagina
nel suo browser (se ha abilitato l’esecuzione di flash o altro), l’applicazione
potrebbe contattare un secondo server web maligno senza passare dall’entry
point ed inviare le pagine web visitate dall’utente.
CAPITOLO 3. NAVIGAZIONE ANONIMA
15
Fig. 3.3: Compromissione del client TOR con un maligno end point
Il web server può, in questo modo, identificare quali pagine web che il client
visita quando l’exit node maligno è selezionato nella rete del client.
Una variante di questo attacco, permette di scoprire l’identità del client
basandosi sul fatto di avere anche un entry node maligno. L’attacco comporta
i seguenti passi:
• harware richiesto:
– due nodi TOR maligni (un entry point ed un end point);
– un server web per ricevere i log di Javascript
• l’end point si occuperà di fare injection delle richieste HTTP inserendo
un iframe per nascondere il codice Javascript che genererà un segnale
unico (ID) per ogni client TOR
• quando il browser esegue il codice Javascript, invierà l’ID al server
maligno
• ciclicamente il client cambierà percorso all’interno della rete TOR (tipicamente ogni 10 minuti), questo comporterà che prima o poi verrà
scelto l’entry point maligno.
• l’entry point si occuperà di confrontare tutti gli ID che riceve in ingresso
con quelli presenti sul server web maligno
Ovviamente non sono attacchi ”certi”. Infatti, il client selezionerà l’entry
point con probabilità n1e dove con ne si indica il numero di entry point.
Come abbiamo visto quest’ultimo attacco richiede anche la selezione l’end
point; questo comporta che il secondo attacco avrà una probailità di ne1nx di
andare a buon fine, dove nx indica il numero di exit node. Inoltre, richiede che
il browser del client sia opportunamente configurato per eseguire Javascript.
Capitolo 4
Crittografia e numeri
pseudocasuali
La crittografia è senza dubbio un metodo molto valido per la protezione
delle proprie informazioni, e come abbiamo visto nell’introduzione, spesso
richiede la generazione di numeri primi casuali. Tali numeri ricoprono un
ruolo importante nella crittografia, basti pensare agli schemi di autenticazione
reciproca e nello scambio delle chiavi, dove per prevenire attacchi a replay
dei pacchetti vengono utilizzati dei numeri ”nonce”. Un altro esempio di tale
importanza è la generazione della chiave pubblica nell’algoritmo RSA.
Un generatore di numeri casuali è uno strumento capace di fornire una
sequenza di numeri casuali, ovvero non deterministici. Questi numeri sono
idealmente infiniti e non sono influenzabili da alcun fattore esterno. Queste applicazioni danno origine a due requisiti distinti e non necessariamente
compatibili:
• casualità,
• imprevedibilità.
Casualità
Un elaboratore non ha la possibilità di generare una sequenza casuale: l’unico
modo è utilizzare opportuni algoritmi che generano numeri apparentemente casuali. Questi vengono quindi chiamati numeri pseudo-casuali, poiché
venendo a conoscenza dell’algoritmo e del seme (primo elemento) utilizzati
è possibile determinare la sequenza che verrà generata. Tali algoritmi per
essere considerati ”generatori casuali” in senso statistico devono avere due
caratteristiche:
• distribuzione uniforme: Generando una quantità elevata di numeri,
ognuno di essi deve apparire con una frequenza simile;
16
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
17
• indipendenza: non deve essere possibile determinare l’ennesimo numero, guardando gli n-1 numeri.
Se è semplice verificare se una sequenza segua o meno una distribuzione uniforme, non è altrettanto semplice dimostrarne l’indipendenza. Per definire
l’indipendenza è possibile eseguire diversi test che aiutano ad avere una certa
possibilità che i numeri generati siano indipendenti. Nell’ambito della crittografia, la progettazione di algoritmi di numeri che sembrano statisticamente
casuali ricopre un ruolo fondamentale: un esempio è la generazione di numeri
primi nella creazione della chiave pubblica in RSA. Per la generazione di tali
numeri, un approccio a forza bruta
√ prevede la divisione del numero N per
ogni interno dispari minore di N . Ma se N è un numero molto grande
(nell’ordine di 10150 ), i tempi richiesti sarebbero troppo alti, e questa è una
situazione piuttosto comune nella crittografia. Per risolvere tale problema
esistono algoritmi in grado di verificare se un numero è primo, ad esempio
producendo una sequenza di numeri casuali ed eseguendo semplici calcoli. Se
tale sequenza è sufficientemente lunga, sarà possibile determinare con una
buona sicurezza se un numero è primo.
Imprevedibilità
Se da una parte è importante generare numeri apparentemente casuali, dall’altra è fondamentale che, data una sequenza, sia impossibile determinare
i numeri successivi. Ossia, ogni numero generato è statisticamente indipendente dai precedenti. Prendiamo come esempio due serie di 1 e 0.
0, 1, 0, 1, 0, 1, 0, 1, 0, 1...
1, 1, 0, 1, 0, 1, 1, 0, 0, 1, ...
Apparentemente si è portati a definire la prima sequenza deterministica, poiché si riconosce una certa periodicità o un algoritmo capace di generarla; la
seconda sembra essere ”più casuale” e non si trova alcuna regola capace di
formarla. Per questo non è prevedibile.
Esistono diversi algoritmi per la generazione di numeri pseudo-casuali, che si
differenziano per il tipo di algoritmo usato. Alcuni si basano su calcoli matematici, altri su sistemi crittografici. Nella quasi totalità, essi producono una
sequenza di numeri interi uniformemente distribuiti tra 0 e un certo valore
massimo, oppure di numeri reali tra 0 e 1. Questi ultimi si possono sempre
ottenere dai primi semplicemente dividendo per il valore massimo, come ad
esempio alcune librerie dei linguaggi di programmazione. Prima di essere
usato, un generatore deve essere inizializzato assegnando un opportuno valore a un parametro numerico, o gruppo di parametri, che viene chiamato seme
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
18
(in inglese seed). Ogni volta che si usa lo stesso seme, si otterrà sempre la
stessa identica sequenza. Molti di questi algoritmi sono ampiamente discussi
in [1, 3].
4.1
Metodo della congruenza lineare
Tale metodo permette, dato un valore iniziale x0 detto seme, di ottenere una
sequenza di numeri pseudo-casuali mediante l’applicazione ripetuta della seguente formula:
xi+1 = (a ∗ xi + c) (mod m)
dove:
• a è un coefficiente intero positivo detto moltiplicatore,
• c è un coefficiente intero non negativo detto incremento,
• m è un coefficiente intero positivo detto modulo,
• xi è il generico numero della sequenza.
Il metodo prende il nome dalla seguente definizione: due numeri x e y si
dicono congrui modulo m, e scriveremo x ≡ y (mod m), se essi differiscono
per un multiplo intero di m, ossia se x (mod m) ≡ y (mod m). Il metodo
è detto moltiplicativo se c=0, misto se c 6= 0. Se a=1, il metodo è detto
additivo.
Facciamo degli esempi: partiamo attribuendo le seguenti assegnazioni:
a=3 c=5 m=11
Se X0 = 3, la sequenza che si ottiene applicando la formula della congruenza
modulare è [3, 3, 3, 3,], ossia una sequenza assolutamente non casuale.
Le cose cambiano se scegliamo X0 = 1; in questo caso, la sequenza ottenuta
è la seguente:
1, 8, 7, 4, 6, 1, 8, 7, 4, 6, 1, ...
Possiamo notare che i primi 5 numeri vengono riprodotti interamente.
Infine, se X0 = 2, si ottiene:
2, 0, 5, 9, 10, 2, 0, 5, 9, 10, 2, ...;
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
19
Anche in questo caso otteniamo una sequenza di 5 numeri ripetuti.
Se modifichiamo il valore di a assegnandogli il valore 12, e poniamo X0 = 1,
ottieniamo:
1, 6, 0, 5, 10, 4, 9, 3, 8, 2, 7, 1, 6, 0, 5, ...
Essa è una sequenza di periodo 11 e cioè pari a m, e senza ripetizione di
numeri. In questo ultimo esempio è interessante osservare che non solo generiamo 11 numeri tutti diversi e che copriamo l’intero periodo, ma la sequenza
si ripete. Questo ci permette di poter generare molti numeri con una distribuzione uniforme. Quindi possiamo sostenere che questo algoritmo ha le
seguenti proprietà:
1. l’algoritmo genera l’intero periodo di numeri, ossia prima di ripetersi
ha generato tutti i numeri compresi tra 0 e m;
2. la sequenza generata è apparentemente casuale;
3. i calcoli sono eseguiti facilmente da un calcolatore.
Come abbiamo potuto osservare, questo algoritmo funziona bene se sono
stati scelti dei parametri opportuni. Per quanto riguarda l’implementazione
di questo algoritmo su un elaboratore è importante impostare m al valore
del massimo intero rappresentabile da quel processore, in modo tale che la
sequenza generata abbia un periodo molto ampio, ricordando che il bit più
significativo rappresenta il segno. Per processori a 32 bit, un valore utile di
m è 231 − 1. Per rappresentare tutto il periodo occorre però fare attenzione
alla scelta di a e c. Si può dimostrare però che se m è primo e c = 0, allora
vengono generati m-1 valori con la sola assenza del valore 0 (231 − 1 è un
numero primo). Purtroppo degli oltre 2 miliardi di numeri a disposizione,
solo pochi possono essere scelti per il parametro a (un valore spesso utilizzato
per a è 75 = 16807)
Da tutto ciò si possono ricavare le seguenti osservazioni:
• la lunghezza massima raggiungibile dalla sequenza generata senza ripetizione vale m,
• particolari scelte di a e c possono ridurre notevolmente la lunghezza
utile della sequenza item,
• il valore di X0 (seme) può essere determinante dalla lunghezza della
sequenza,
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
20
• è fondamentale che il periodo sia il più ampio possibile per rendere
l’algoritmo più sicuro da eventuali attacchi.
E’ allora necessario individuare dei criteri per assegnare ad a, c, m e al
seme dei valori in modo che la sequenza riprodotta sia la più lunga possibile. Alcuni studiosi hanno approfondito tale aspetto e hanno individuato i
seguenti criteri necessari e sufficienti che garantiscono l’ottimalità del metodo:
1. i parametri c e m devono essere coprimi cioè MCD(c,m) = 1,
2. ogni divisore primo di m deve dividere (a-1),
3. se m è multiplo di 4, anche (a-1) lo deve essere.
Questi studiosi hanno individuato i seguenti valori nel rispetto dei suddetti
criteri:
KNUTH
GOODMAN e MILLER
GORDON
LEORMONT e LEWIS
4.1.1
m
m
m
m
=
=
=
=
231 ; a = int (π ∗ 108 ) ; c = 453806245
23 1 − 1; a = 75 ; c = 0
23 1; a = 51 3 ; c = 0
23 1; a = 21 6 + 3 ; c = 0
Attacco all’algoritmo
Se l’attaccante conosce il valore di m e 3 numeri consecutivi, allora si può
sferrare il seguente attacco:
• Xi+1 ≡ (aXi + c) mod m
• Xi+2 ≡ (aXi+1 + c) mod m
• Xi+2 − Xi+1 ≡ (aXi +1 + c − aXi − c) mod m ≡ a(Xi+1 − Xi ) mod m
Vediamo un esempio con i seguenti dati:
m=9, Xi = 3, Xi+1 = 7, Xi+2 = 0
(0 − 7) ≡ a(7 − 3)mod9 ↔ 4a ≡ 2 mod 9
Quindi il parametro a sarà 5.
5 ∗ 3 + c ≡ 15 + c mod 9 ≡ 6 + c mod 9 ≡ 7 mod 9
Il parametro c = 1.
Ora che siamo a conoscenza di tutti i parametri, sapremo che dopo i numeri
3, 7 e 0 ci sarà il numero 1, poi il 6, poi il 4.
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
4.2
21
Ansi X9.17
E’ uno dei generatori più forti dal punto di vista crittografico. Esso fa uso
del Triple-Des in modalità EDE (Encrypt-Decrypt-Encrypt); come input ha
un numero random e segreto (generalmente la data e ora dell’elaboratore)
di 64 bit. Infine, ha un valore intero m (random) come seme, e due chiavi
per il triple-des. La robustezza di questo algoritmo sta nel fatto che è usato
il triple-des per tre volte ed una chiave da 112 bit: questo equivale a nove
crittografie DES. Quindi, un ipotetico attaccante dovrebbe violare una grossa
quantità di dati. Tale algoritmo può essere rappresentato nel seguente modo:
R = E[E(T) XOR V]
V = E[E(T) XOR R]
dove:
• E() = è il TripleDes,
• DTi = Timestamp,
• Vi = Initialization Vector,
• Ri = random number to be generated.
Fig. 4.1: Ansi X9.17
4.2.1
Attacco all’algoritmo
Sono diversi i modi per attaccare questo algoritmo, ma tutti hanno una
complessità maggiore rispetto all’attacco visto nel paragrafo precedente.
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
4.2.2
22
Input-Base attacks
Un input-base attacks si verifica quando un utente malintenzionato è in grado di utilizzare la conoscenza o il controllo dell’input. Questa tipologia di
attacco può essere ulteriormente suddivisa known-input, replayed-input, e
chosen-input attacks. Un chosen-input attacks può essere pratico contro
smart-card e altri sistemi di crittografia hardware. Replayed-input attacks
sono simili ai precedenti, ma richiedono meno sofisticacazioni di controllo
da parte dell’attaccante. Known-input attacks può essere in ogni situazione
in cui alcuni degli elementi di input possono essere facilmente prevedibili,
ad esempio se viene usato il timestamp di un pc in rete, i cui orari sono
osservabili dall’attaccante.
4.2.3
Crittoanalisi
Seppur generalmente viene usato il triple-des in modalità EDE, l’algoritmo
di crittografia potrebbe anche essere diverso. Quindi, bisogna essere attenti
a quale algoritmo si sceglie e quali conoscenze di crittoanalisi ci sono su
quell’algoritmo.
4.3
Blum Blum Shub
Questo algoritmo, molto usato, è sostanzialmente un generatore di bit, ed ha
dato forse la più forte prova di potenza crittografica. Il funzionamento è il
seguente:
1. si generano due numeri p e q, numeri primi (molto grandi) diversi tra
loro e ciascuno congruente a 3 modulo 4 (ossia p e q divisi per 4 avranno
resto 3),
2. si imposta n come p*q,
3. si seleziona il seme,ossia un numero random s, tale che 1<=s<=n-1.
Inoltre s deve essere coprimo con n [ossia gcd(s,n)=1],
4. quindi x0 ← s2 mod n.
5. Xi = (Xi−1 )2 mod n
6. Bi = xi mod 2
7. Concatenando i bit ottenuti al punto precedente, si genera un numero
della dimensione desidarata.
CAPITOLO 4. CRITTOGRAFIA E NUMERI PSEUDOCASUALI
23
Come per l’algoritmo a congruenza lineare, questo algoritmo per essere sicuro
deve avere un valore di n molto grande, nell’ordine di 1024 bits.
4.3.1
Attacco all’algoritmo
E’ decisamente il più complesso da attaccare tra quelli visti, in particolare
perché bisogna fattorizzare n per trovare i valori di p e q. Come sappiamo,
la fattorizzazione è uno dei problemi non ancora risolti efficientemente dalla
matematica (come la soluzione del logaritmo discreto). Non a caso molti
sistemi di cifratura si basano su tali presupposti (RSA, El-Gamal). Questo
algoritmo però, è un generatore di bit e il numero random è la concatenazione dei bit generati precedentemente. Questo comporta che qualora n venga
fattorizzato, ciò non è sufficiente. Infatti, è necessario fattorizzare tante volte
n quanti sono il numero di bit del numero random generato.
E’ evidente che un’attenta analisi matematica è fondamentale per assicurare che i numeri generati abbiano le necessarie proprietà statistiche. Robert
R. Coveyou dell’Oak Ridge National Laboratory ha intitolato un articolo:
La generazione dei numeri casuali è troppo importante per essere lasciata al
caso.
Capitolo 5
Conclusioni
Con motivazioni e scopi opposti, le intercettazioni nel web saranno sempre
più frequenti nel prossimo futuro. E’ quindi naturale che cittadini, aziende
e istituzioni vorrano aumentare la loro privacy, mentre i malintenzionati il
loro anonimato. Si può ipotizzare che l’utilizzo delle reti TOR andrà quindi
aumentando. Nonostante risultino essere una protezione nei confronti di chi
volesse analizzare il traffico di quella rete, come abbiamo visto, esse non sono
totalmente sicure. Allo stesso modo, sistemi crittografici, affidabili e ampiamente analizzati negli anni, se utilizzati in maniera impropria potrebbero
rivelarsi anch’essi insicuri. Al termine dell’analisi delle strategie fino ad ora
disponibili per garantire privacy e sicurezza, possiamo concludere che non
esiste purtroppo la possibilità di raggiungere tale obiettivo nella sua totalità.
24
Bibliografia
[1] van Oorschot S. A. Vanstone A. Menezes, P.
Cryptography. CRC Press, 1996.
Handbook of Applied
[2] Ian Goldberg. On the Security of the Tor Authentication Protocol. David
R. Cheriton School of Computer Science, University of Waterloo.
[3] McGraw-Hill. Critttografia e sicurezza delle reti. William Stallings, 2007.
[4] Michael R. Lieberman Eric C. Price Timothy G. Abbott, Katherine J. Lai.
Browser-based attacks on tor.
[5] A. Ornaghi M. Valleri. Man in the middle attacks. Blackhats italia, 2002.
25