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