Studio e Sviluppo di Algoritmi per il Calcolo della Trasformata di Fourier Discreta nel Dominio Cifrato Tesi Teorico-Sperimentale di Pierluigi Failla Relatore: Prof. Mauro Barni Anno Accademico: 2006-2007 Negli ultimi anni con l’introduzione dei nuovi sistemi crittografici, ovvero con l’inizio di quella che viene definita come crittografia moderna, l’interesse che prima era strettamente e quasi unicamente correlato al concetto di sicurezza dei dati o dell’informazione, ha iniziato a evolversi in una nuova direzione. Le nuove tecnologie e la fortissima diffusione dei sistemi per le telecomunicazioni hanno iniziato a far sorgere la necessità di sistemi crittografici molto più elastici e con proprietà matematiche spiccatamente direzionate ad ottenere qualcosa di più interessante della semplice cifratura dell’informazione. Già nel 1978 Rivest e altri [RAD78], si erano accorti delle potenzialità che i nuovi sistemi crittografici potevano offrire ed è da quegli anni che si inizia a parlare di crittografia omomorfa. In algebra con il termine omomorfismo1 si intende una corrispondenza univoca tra strutture rispetto ad una determinata operazione, più precisamente: data una struttura algebrica S su cui è definita un’operazione ◦ e una seconda struttura 0 0 algebrica S su cui è definita un’operazione •, si dice che esiste un omomorfismo tra S e S se dati a, b ∈ S e 0 0 0 0 0 0 a , b ∈ S all’elemento c = a ◦ b corrisponde l’elemento c = a • b . Se la corrispondenza è biunivoca allora non si parla di omomorfismo, ma di isomorfismo2 . Figure 1: Omomorfismo tra strutture algebriche Con la dicitura crittografia omomorfa si intende un sistema crittografico attraverso il quale è possibile realizzare alcune semplici operazioni algebriche sull’informazione non crittata elaborando l’informazione crittata. Dal punto di vista matematico vale la medesima definizione che è stata data poche righe sopra, con l’accortezza di definire come strutture algebriche, lo spazio dei messaggi in chiaro e lo spazio dei messaggi crittati. La crittografia omomorfa è uno strumento importante, ma fino a qualche tempo fa utilizzato solo come un possibile punto di debolezza di un sistema crittografico, infatti le proprietà di omomorfia permettono di modificare l’informazione contenuta nel messaggio cifrato e permettono così ad un ipotetico attaccante di modificare l’informazione nascosta magari rendendola non più intellegibile. Questo problema è noto in letteratura come il problema della malleability [Wik07] dei crittosistemi. Anche se attacchi basati sull’omomorfia rimangono sempre attuabili, si sta iniziando a guardare queste proprietà con un ottica diversa che, anche se in modo limitato, consentono l’elaborazione dell’informazione crittata garantendone comunque la sicurezza. 1 Dal 2 Dal greco omo e morphosis: di forma simile. greco iso e morphosis: di forma uguale. 1 Generalmente esistono tre tipologie principali di sistemi crittografici omomorfi: additivi: si dice che un sistema è additivamente omomorfo o omomorfo rispetto all’addizione, se esiste un’operazione ◦ tale che applicata a due elementi crittati ritorna la somma dei due elementi in chiaro quando si decritta moltiplicativi: si dice che un sistema è moltiplicativamente omomorfo o omomorfo rispetto alla moltiplicazione, se esiste un’operazione ◦ tale che applicata a due elementi crittati ritorna il prodotto dei due elementi in chiaro quando si decritta algebrici: si dice che un sistema è algebricamente omomorfo o omomorfo rispetto alla somma e al prodotto se esistono due operazioni tali che il sistema risulta contemporaneamente additivamente e moltiplicativamente omomorfo Tutti i crittosistemi moderni più noti e usati3 hanno qualche proprietà di omomorfia come ad esempio RSA[RSA78] che risulta essere moltiplicativamente omomorfo, per cui moltiplicare due messaggi crittati equivale a moltiplicare i due messaggi in chiaro, oppure il crittosistema di Paillier [Pai99] che è additivamente omomorfo. Per quanto riguarda sistemi algebricamente omomorfi ancora non è possibile dire neanche se esistano o meno [FM91]. Il miglior risultato conosciuto, in questa direzione, al momento è il crittosistema di Boneh-Goh-Nissim [BGN05] che è additivamente omomorfo ed inoltre consente un’unica moltiplicazione. Nel contesto della crittografia omomorfa è possibile definire protocolli, fino ad arrivare anche a veri e propri algoritmi, che consentono la modifica, quindi l’elaborazione, di dati ignoti per chi li elabora, ma che acquistano un senso nel momento in cui il legittimo proprietario li decritta. Gli strumenti forniti da questo particolare aspetto della crittografia permettono, ad esempio, di realizzare sistemi sicuri per le votazioni elettroniche oppure protocolli per il recupero dell’informazione senza che chi la gestisce sappia cosa è stato cercato e recuperato (privacy preserving information retrivial). Non solo, è possibile sviluppare strumenti per multi-party computation, dove più soggetti, senza rivelare niente delle proprie informazioni private, riescono a computare insieme funzioni che dipendono dai dati di tutti (Problema del Milionario) [Yao82]. La possibilità di calcolare funzioni crittate, permette la realizzazione di Mobile Agent sicuri ovvero lo sviluppo di software autonomo che migrando da un host all’altro liberamente, su una rete come Internet, è in grado di effettuare la ricerca di informazioni in basi di dati e servizi, cosa che fino a qualche tempo non era possibile, proprio per via di questioni legate alla sicurezza del Mobile Agent [LAFH04]. Non è difficile immaginare contesti più complessi dove la crittografia omomorfa può trovare un impiego di sostanziale importanza, come lo streaming delle informazioni. In un servizio di streaming, è possibile immaginare che chi offre un servizio voglia che questo sia decifrabile solo da chi ne è autorizzato, ma allo stesso tempo ha la necessità di trasmetterlo su una rete eterogenea come Internet, all’interno della quale la trasmissione non può essere sempre garantita ad un bit-rate stabilito, per cui sarebbe gradito che, senza rivelare l’informazione, i nodi intermedi della rete potessero ad esempio abbassare il bit-rate per garantire una certa velocità. Problemi come questi possono essere risolti attraverso la crittografia omomorfa. Realizzare protocolli e algoritmi per la crittografia omomorfa implica l’uso di strutture numeriche che non sono quelle comunemente usate nei calcolatori che abitualmente vengono usati, ma che sono molto più vicine, se non le stesse, di quelle usate per la crittografia. Normalmente nei calcolatori è possibile lavorare con numeri in virgola mobile o interi, di dimensione stabilita dalla struttura della macchina (32 o 64 bit), la crittografia, invece può lavorare solo con numeri interi e con dimensioni molto superiori (800 bit e oltre) e questo richiede strutture dati costruite ad hoc. Ci sono sostanziali differenze tra un algoritmo che lavora su dati in chiaro e lo stesso che lavora su dati cifrati. Il primo ostacolo che si incontra è proprio la struttura algebrica del nuovo dominio in cui si lavora, quindi ad esempio l’impossibiltà di lavorare direttamente con numeri in virgola mobile, ma essere costretti a lavorare su anelli di lunghezza finita con numeri interi che sono tali per via del fatto che generalmente i crittosistemi lavorano su classi di residui modulo n. Questo problema porta in primo piano la questione della quantizzazione dell’informazione. Si desidera costruire delle rappresentazioni dei numeri che siano controllabili rispetto all’errore che si compie quantizzando l’informazione. I dati, che in generale possono essere numeri reali e quindi rappresentabili in virgola mobile, devono essere mappati, 3 Perfino il DES risulta essere omomorfo rispetto alla negazione del dato cifrato. 2 tramite quantizzazione su numeri interi. Questo che può sembrare un problema da poco, in realtà, sta alla base della definizione di un algoritmo che elabora dati cifrati: se non è possibile definire una corrispondenza tra le rappresentazioni dei due domini, non è possibile effettuare nessun tipo di computazione, inoltre se non è possibile controllare l’errore compiuto tramite la quantizzazione non è possibile garantire che il risultato che si ottiene si significativo dal punto di vista della rappresentazione numerica. Inoltre la quantizzazione potrebbe richiedere di dover modificare il parametro di sicurezza del crittosistema (la lunghezza in bit del modulo), in modo da poter garantire un errore minore di un certo valore desiderato. Quindi la realizzazione di un’aritmetica finita e la definizione di una idonea quantizzazione, è il primo passo per la definizione di un algoritmo che sfrutta la crittografia omomorfa. Infine è necessario valutare come cambia la complessità computazionale di un dato algoritmo quando questo viene riprogettato per lavorare con l’informazione crittata poiché, come nel caso che verrà esaminato in questa tesi, l’omomorfismo può mappare le operazioni del dominio in chiaro in operazioni diverse nel dominio cifrato, le quali possono avere complessità diverse. Oggetto di questa tesi sarà lo studio e lo sviluppo degli algoritmi cifrati per la DFT e la FFT che sfruttano le proprietà di omomorfia per realizzare la trasformata di Fourier discreta di un dato vettore di informazioni crittate. L’intento finale sarà quello di valutare se la eFFT (encrypted FFT) è computazionalmente migliore della eDFT (encrypted DFT) come accade nel dominio dei dati in chiaro, lo studio sarà sia teorico che sperimentale e verrà valutato a parità di precisione. Per questo fine verrano mostrate le caratteristiche dei crittosistemi omomorfi e specialmente del crittosistema di Paillier che è lo schema additivamente omomorfo che verrà usato per l’implementazione degli algoritmi (Capitolo 2). Verranno esaminate in dettaglio le versioni quantizzate degli algoritmi per il calcolo della trasformata di Fourier DFT e FFT, con particolare attenzione al calcolo dell’errore finale sui coefficienti trasformati. I risultati ottenuti per la valutazione dell’errore saranno poi utilizzati per definire i valori dei quantizzatori per i dati. Una volta definiti i quantizzatori sarà possibile esaminare come deve cambiare la grandezza dell’anello Zn affinchè si possa garantire una predeterminata precisione dei coefficienti. La parte finale del (Capitolo 3) verrà, infine, dedicata a determinare le complessità computazionali degli algoritimi cifrati. Il (Capitolo 4) sarà completamente dedicato alla parte implementativa in linguaggio C++, quindi alla definizioni delle classi e strutture utili per lo sviluppo degli algoritmi ed alla c 4 per la gestione dei grandi numeri. Infine nel (Capitolo 5), saranno mostrati i risultati libreria MIRACL° di alcuni test usati per valutare se le complessità teoriche calcolate nel Capitolo 3, rispecchiano quelle reali. References [BGN05] D. Boneh, E.J. Goh, and K. Nissim. Evaluating 2-DNF formulas on ciphertexts. Proceedings of Theory of Cryptography Conference, pages 325–342, 2005. [FM91] J. Feigenbaum and M. Merritt. Open questions, talk abstracts, and summary of discussion. DIMACS Series in Discrete Mathematics and Theoretical Computer Science, 2:1–45, 1991. [LAFH04] H. Lee, J. Alves-Foos, and S. Harrison. The use of encrypted functions for mobile agent security. In Hawaii International Conference on System Sciences, 2004. [Pai99] P. Paillier. Public-key cryptosystems based on composite degree residuosity classes. In Proceedings of EUROCRYPT 1999, pages 223–238, 1999. [RAD78] R. Rivest, L. Adelman, and M. Dertouzos. On data banks and privacy homomorphism. Foundation of Secure Computation, pages 169–177, 1978. [RSA78] R. Rivest, A. Shamir, and L. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21(2):120–126, 1978. [Wik07] Wikipedia. Malleability (cryptography) — wikipedia, http://en.wikipedia.org/wiki/Malleability(cryptography). [Yao82] A. C. Yao. Protocols for secure computations. In IEEE Symp. on Foundation of Computer Science, pages 160–164, 1982. 4 Multiprecision the Integer and Rational Arithmetic C/C++ Library by Shamus Software Ltd. 3 free encyclopedia, 2007.