Introduzione alla Crittografia Presente e futuro Bruno Martino - Fabio Guglietta Cosa faremo oggi ? • Crittografia asimmetrica • Algoritmo RSA • Applicazioni di RSA • Simmetrico o asimmetrico? • … ci porti fuori signor Sùlù … Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Cifratura simmetrica • Nelle tecniche di cifratura simmetriche, decifrare significa applicare al contrario il procedimento di cifratura; la cifratura DES, per quanto complessa, e` simmetrica • I 16 passaggi che consentono di cifrare un messaggio, se effettuati al contrario lo decriptano • In un sistema asimmetrico, la chiave usata per criptare non coincide con la chiave usata per decriptare. Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia One Way function • La nozione di one-way function è fondamentale per la crittografia; le one-way function sono relativamente facili da calcolare, ma molto più difficili da invertire • In questo contesto “difficile” ha più ho meno questo significato: è mooolto complesso calcolare x nota f(x). • La rottura di un piatto ne è un buon esempio: è facile frantumare un piatto, ma non altrettanto rimetterlo insieme. Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Diffie ed Hellman • Diffie ed Hellman concepirono un sistema asimmetrico, basato su l’uso di due chiavi in modo che fosse impossibile ricavarne una dall’altra; le due chiavi vengono chiamate pubblica e privata; la prima serve per cifrare e la seconda per decifrare. • La chiave pubblica può essere tranquillamente distribuita perché consente solo di cifrare il messaggio, in questo modo si aggira il problema dello scambio della chiave simmetrica Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia RSA • La prima applicazione pratica basata sulle tecniche di crittografia a doppia chiave fu sviluppata nel 1978 da Ronald Rivest, Adi Shamir e Leonard Adleman, che prenderà il nome di “algoritmo RSA”, dalle iniziali dei suoi inventori. • RSA si basa su numeri primi e funzioni difficilmente invertibili. Dati due numeri primi, è facile stabilire il loro prodotto, ma più difficile determinare quali numeri primi lo hanno prodotto Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia RSA passo 1 • Alice genera due numeri primi distinti p e q e li moltiplica tra di loro ottenendo il numero N che viene reso pubblico, mentre p e q devono restare segreti. Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia RSA passo 2 • Alice calcola b come funzione di Eulero di N (deve rimanere segreto): b = Φ(n) = (p-1) (q-1) Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia RSA passo 3 • Alice calcola il primo intero e che sia primo con b (ovvero che non abbia divisori in comune: MCD(e, b) = 1) Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia RSA passo 4 • Alice calcola il numero d inverso di e nell'aritmetica finita di ordine b, che è il più piccolo numero per cui: (exd) mod b = 1 Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Come lo scompongo? • Per trasmettere un messaggio ad Alice, Bob lo scompone inizialmente in una sequenza di numeri (in precedenza ci si è accordati riguardo alla modalità di "traduzione"; potrebbero essere p.es. i codici ASCII dei singoli caratteri ma così il cifrario degenererebbe in un banale cifrario monoalfabetico Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Mi senti? Bob legge le chiavi pubbliche di Alice N ed e quindi trasmette i numeri m uno alla volta cifrandoli con la formula: c=me mod N Esempio: per trasmettere il numero 7, Bob calcola: c = 73 mod 55 = 343 mod 55 = 13 ll numero da trasmettere è quindi 13 Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Forte e chiaro! Alice usa per elaborare il messaggio la chiave di decifrazione d (segreta) che permette di recuperare m grazie alla formula: m = cd mod N Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Impicciamoci … In un esperimento del 1994, coordinato da Arjen Lenstra dei laboratori Bellcore, per violare una chiave RSA di 129 cifre, sono stati necessari 8 mesi di lavoro coordinato effettuato da 600 gruppi di ricerca sparsi in 25 paesi, che hanno messo a disposizione 1600 macchine da calcolo, facendole lavorare in parallelo collegate tra loro attraverso Internet Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia SSH 1 • Quando ci si deve connettere frequentemente ad un server (o a molti server) tramite SSH, può essere tedioso dover inserire ogni volta la password • Un modo sicuro per aggirare questo problema è basato sull'autenticazione tramite una coppia di chiavi (privata e pubblica) • Per poter gestire questo processo di autenticazione è necessario generare una coppia di chiavi (pubblica e privata). Il comando è: ssh-keygen Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia SSH 2 La chiave RSA così generata deve essere inserita dentro il file: .ssh/authorized_keys • I dati circolanti tra il client e il server sono codificati, garantendo la loro confidenzialità • Il client e il server si autentificano reciprocamente assicurando che i due terminali in comunicazione sono effettivamente quelli che ogni parte crede che siano Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Secure Sockets • SSL (Secure Sockets Layers) è una procedura di sicurizzazione delle transazioni effettuate via Internet. Lo standard SSL è stato elaborato da Netscape , in collaborazione con Mastercard, Bank of America, MCI e Silicon Graphics. Si basa su un processo di crittografia a chiave pubblica • Il sistema SSL è indipendente dal protocollo usato Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Uso di SSL In un primo tempo, il client si connette al sito commerciale sicuro via SSL e richiede l'autenticazione. Il client invia anche la lista dei crittosistemi che supporta, in ordine decrescente secondo la lunghezza delle chiavi Alla ricezione della richiesta il server invia un certificato al client, contenente la chiave pubblica del server, firmata da un'autorità di certificazione (CA), nonché il nome del crittosistema in cima alla lista con il quale è compatibile Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Qualcosa non torna • Molti si chiederanno a cosa è servito parlare ancora di metodi simmetrici (come il DES) se poi l’introduzione dei metodi a chiave pubblica come RSA ha risolto brillantemente il problema dello scambio della chiave • Le funzioni matematiche che generano il codice cifrato e quelle inverse fanno si che questo tipo di crittografia sia molto lento • Per questo motivo sono nati sistemi di crittografia misti, che combinano le due tecniche in modo da fonderne i rispettivi vantaggi. Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Sistemi misti Nei sistemi misti si utilizza la tecnologia a chiave pubblica solo per comunicare una chiave di sessione Se due entità A e B devono comunicare in modo sicuro e veloce: • A usa la chiave pubblica di B per inviare la chiave di sessione • B decifra la chiave di sessione con la propria chiave privata • A e B possono comunicare usando la chiave di sessione Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia AES (Rijndael) • AES fu annunciato dal NIST (National Institute of Standards and Technology) come standard nel 2002, dopo molte discussioni e in seguito ad una competizione, vinta dall’algoritmo Rijndael • Gli autori di Rijndael sono i belgi Joan Daemen e Vincent Rijmen • AES esiste in tre versioni differenziate dalla lunghezza della chiave: AES-128, AES-192 e AES-256 • La cifratura avviene sempre con blocchi di 128 bits • AES usa una “substitution permutation network” invece di una “Feistel network” http://csrc.nist.gov/archive/aes/rijndael/misc/nissc2.pdf Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Entangle Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Meccanica quantistica • La crittografia quantistica si basa su idee che hanno origine dalla fisica quantistica che è in grado di descrivere fenomeni microscopici; è una teoria scientifica molto accurata • Nel 1993 un gruppo di scienziati, Bennett, Brassard, Crépeau, Josza, Peres e Wooters, propongono di usare l'entanglement per 'teletrasportare' lo stato di una particella, per esempio lo stato di polarizzazione di un fotone • Questo algoritmo utilizza coppie di fotoni entangled, cioè fotoni con particolari caratteristiche di correlazione Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Crittografia quantistica • Sperimentalmente, diversi gruppi di fisici sono riusciti a teletrasportare stati di fotoni, come il gruppo di Zeilinger a Vienna dove il teletrasporto è avvenuto da una sponda all'altra del Danubio • Questi processi permettono scambiare, tramite un canale quantistico, una stringa di bit in modo perfettamente sicuro. Infatti, chiunque provi a intercettare e misurare qualcuno dei fotoni trasmessi introdurrà certamente un errore Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia Se ascolto perturbo Bruno MARTINO, Fabio GUGLIETTA – Introduzione alla crittografia