Crittografia MITTENTE DESTINATARIO messaggio messaggio chiave-1 chiave-2 crittografia decrittografia messaggio cifrato 1 Crittografia a chiave privata 2 Crittoanalisi • Ciphertext only • algoritmo di crittografia • testo cifrato • Known plaintext • algoritmo di crittografia • testo cifrato • una o più coppie testo in chiaro / testo cifrato • Chosen plaintext • algoritmo di crittografia • testo cifrato • messaggi in chiaro scelti dal criptoanalista con i corrispondenti messaggi cifrati 3 Lunghezza delle chiavi private • se l’algoritmo è ben progettato l’unico attacco possibile è quello esaustivo – numero medio di tentativi richiesti: 2N-1 con N=lunghezza della chiave • tempo medio di attacco lungh. chiave (bit) tempo richiesto a 1 decr/s tempo richiesto a 106 decr/s 56 128 168 255 s = 1142 anni 2127 s ~ 1024 anni 2167 s ~ 1036 anni 10 ore ~ 1018 anni ~ 1030 anni 4 Cipher Block Chaining Mode • Produce un blocco di testo cifrato per ogni blocco di testo in chiaro in input • per evitare regolarità si fa in modo che il blocco cifrato di ogni blocco dati dipenda da tutto il testo in chiaro precedente 5 DES (Data Encryption Standard) • sviluppato alla IBM, adottato dal NIST nel 1977 come standard per le applicazioni governative e commerciali • chiave da 56 bit, blocco dati da 64 bit • efficiente in hardware (implementato in VLSI) • molto studiato, non sono note debolezze • violato nel 1998 con attacco esaustivo su macchina special-purpose in meno di 3 giorni 6 DES: schema complessivo 7 DES: schema dell'i-ma iterazione 8 Triplo DES • standardizzato per le applicazioni finanziarie nel 1985, dal 1999 incorporato nello standard DES • tre esecuzioni del DES secondo uno schema EDE • stessa resistenza del DES alla crittoanalisi • tre chiavi da 56 bit equivalenti a una da 168 bit 9 AES (Advanced Encryption Standard) • Call for proposal emessa dal NIST nel 1997 • specifiche: – sicurezza almeno pari a quella del Triplo DES – maggiore efficienza – blocco dati da 128 bit, chiavi da 128/192/256 bit • criteri di valutazione: – sicurezza, efficienza, uso di risorse, adattabilità hw e sw, flessibilità • standard finale pubblicato nel 2001 10 Altri algoritmi a chiave privata • IDEA (International Data Encryption Algorithm) – – – – – – sviluppato nel 1991 blocco dati da 64 bit, chiave da 128 bit operazioni: XOR, addizione e moltiplicazione a 16 bit efficiente in software finora appare altamente resistente alla crittoanalisi usato nel PGP e in molti prodotti commerciali • RC5 – – – – – – sviluppato da Ron Rivest (RC = Ron’s code) algoritmo proprietario di RSA Data Security Inc. adatto sia per hw che per sw veloce (word oriented) parametrizzabile (dimensione word, numero di round, lunghezza chiave) adatto a smart card e dispositivi con ridotta memoria 11 Distribuzione delle chiavi • OOB (Out Of Band) • key distribution center 12 Crittografia a chiave pubblica • proposta nel 1976 da Diffie e Hellman • usata per distribuire chiavi segrete e per la firma digitale Bob Alice 13 Requirements • deve essere computazionalmente semplice per un utente B generare una coppia di chiavi KUb, KRb • deve essere computazionalmente semplice per un mittente A ottenere il testo cifrato C = EKUb(M) • deve essere computazionalmente semplice per il ricevente B recuperare il testo originale M = DKRb(C) • deve essere computazionalmente complesso per un impostore determinare KRb da KUb • deve essere computazionalmente complesso per un impostore ricavare M da KUb e C • le chiavi KUb e KRb devono avere funzionalità reciproche 14 RSA (Rivest - Shamir - Adleman) • sviluppato nel 1977 da Rivest, Shamir, Adleman • algoritmo a chiave pubblica più diffuso Encryption Plaintext: M<n Ciphertext: C = Memodn Decryption Ciphertext: C Plaintext: M = Cdmodn Key Generation Select p, q p and q both prime Calculate n = p x q Calculate (n) = (p-1)(q-1) Select integer e gcd((n),e)=1; 1<e< (n) Calculate d de mod(n) = 1 Public key KU = [e, n] Private key KR = [d, n] 15 RSA: un esempio • • • • Si scelgono due numeri primi p=7, q=17 si calcola n = pq = 7 x 17 = 119 si calcola (n) = (p-1)(q-1) = 6x16 =96 si sceglie e < (n), relativamente primo con (n), e=5 • si determina d tale che de mod 96 = 1 e d<96, d = 77 (infatti 77x5 = 385 = 96x4+1) 16 Sicurezza di RSA • Possibile attacco esaustivo: nella scelta di e e d trade-off tra sicurezza e prestazioni • Crittoanalisi: fattorizzazione di n – 1977: sfida degli inventori su un testo criptato con una chiave pubblica n di 129 cifre decimali (circa 428 bit) – 1994: sfida vinta su Internet con 1600 calcolatori in otto mesi di lavoro – attualmente chiavi di 1024 bit sono considerate sufficientemente sicure 17 Diffie - Hellman • primo algoritmo a chiave pubblica proposto (’76) • tecnica per lo scambio di chiavi segrete • si basa sulla difficoltà di calcolare il log discreto q Global Public Elements prime number <q and primitive root of q User A Key Generation Generation of secret key by A Select private XA XA<q K = (YB)XAmodq Calculate public YA YA = XAmodq User B Key Generation Generation of secret key by B Select private XB XB<q K = (YA)XBmodq Calculate public YB YB = XBmodq Diffie - Hellman: un esempio • Si scelgono un numero primo q=71 e una sua radice primitiva =7 • A sceglie la chiave privata XA=5 e calcola la chiave pubblica YA = 75mod71 = 51 • B sceglie la chiave privata XB=12 e calcola la chiave pubblica YB = 712mod71 = 4 • A e B si scambiano le chiavi pubbliche • A calcola la chiave segreta K = 45mod71 = 30 • B calcola la chiave segreta K = 5112mod71 = 30 19 Diffie - Hellman: aspetti critici • non protegge da attacchi di tipo replay • possibile attacco man-in-the-middle A YA YM M YM B YB • richiede pre-autenticazione A YA, firma A(YA) B YB, firma B(YB) 20 Uso della crittografia a chiave pubblica per l'autenticazione Bob Alice 21 Firma digitale • Garantisce che: – il messaggio è autentico – il messaggio è integro – il mittente non può disconoscere il messaggio 22 Funzione di hash • Produce un'impronta del messaggio • Deve possedere le seguenti proprietà: – – – – – accetta un messaggio di dimensione variabile produce un digest di lunghezza fissa è veloce da calcolare è difficilmente invertibile è estremamente improbabile che messaggi diversi generino lo stesso digest 23 Esempi di funzioni di hash • MD5 (Message Digest 5) – sviluppata da Ron Rivest – digest da 128 bit – era la più usata, ora non più considerata sicura • SHA (Secure Hash Algorithm) – sviluppata dal NIST nel 1993, SHA-1 revised version nel 1995 – digest da 160 bit – ogni bit del digest è funzione di tutto l'input 24 Uso della crittografia a chiave pubblica per la distribuzione di chiavi segrete • Bob vuole comunicare con Alice in forma riservata • Bob prepara il messaggio • lo cripta usando la crittografia a chiave privata con una chiave di sessione • cripta la chiave di sessione usando la crittografia a chiave pubblica con la chiave pubblica di Alice • acclude al messaggio la chiave di sessione criptata e invia il messaggio 25