•Stelvio Cimato •23/03/2015 Cifratura simmetrica DES Stelvio Cimato Dipartimento di Informatica Università degli studi di Milano Stelvio.cimato@unimi.it http://www.di.unimi.it/cimato Cifrari a blocchi testo in chiaro N bit cifrario testo cifrato N bit chiave Cifrari a chiave simmetrica Il testo in chiaro è diviso in blocchi di lunghezza fissa Viene cifrato un blocco alla volta Data Encryption Standard (DES) DES triplo Advanced Encryption Standard (AES) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 1 •1 •Stelvio Cimato •23/03/2015 Cifratura di flussi Esegue la crittografia di un flusso digitale di dati un bit o un byte per volta. Esiste un flusso di chiavi Esempi classici: Vigenere Vernam Utilizzando alcune modalità di funzionamento si può utilizzare la cifratura a blocchi per cifrare flussi. Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 2 Cifrari a blocchi Opera su blocchi di n bit di input per produrre blocchi di n bit di output Con blocchi n bit di testo in chiaro ho possibili input. 2n Trasformazione reversibile o non singolare: Ogni blocco di testo in chiaro deve produrre un blocco cifrato univoco Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 3 •2 •Stelvio Cimato •23/03/2015 Mappaggi Testo chiaro 00 01 10 11 cifrato 11 10 00 01 Testo chiaro 00 01 10 11 cifrato 11 10 01 01 n=2 Per mappaggi reversibili il numero di trasformazioni possibili è 2n! Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 4 Cifratura generale n=4 bit di testo in chiaro implicano 16 possibili stati di input mappati in 16 possibili output = 4 bit di testo cifrato Decoder 4-16 0 1 2 3 4 5 6 7 8 9 1 0 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 1 0 11 12 13 14 15 Encoder 4-16 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 5 •3 •Stelvio Cimato •23/03/2015 Cifrario per n=4 Crittografia 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1110 0100 1101 0001 0010 1111 1011 1000 0011 1010 0110 1100 0101 1001 0000 0111 Decrittografia 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1110 0011 0100 1000 0001 1100 1010 1111 0111 1101 1001 0110 1011 0010 0000 0101 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 6 Cifratura a blocchi Per blocchi di piccola dimensione equivalente a cifratura a sostituzione !! vulnerabile alla analisi statistica Per blocchi grandi Si mascherano le caratteristiche statistiche ma… Problemi pratici per la dimensione della chiave In generale per n bit, la dimensione della chiave è n*2n Es. n=4 la chiave è la seconda colonna della tabella Per n=64, la chiave 64*264=270 circa 1021 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia bit 7 •4 •Stelvio Cimato •23/03/2015 Cifratura di Feistel Molti dei cifrari a blocchi in uso si basano sulla proposta di Feistel del 1973 approssimazione al sistema ideale di cifratura Idea: uso di cifrature in sequenza Per ottenere cifrature più complesse di ogni singola componente Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 8 Principi di Shannon Feistel alterna permutazioni e sostituzioni Esse applicano i principi di Shannon per contrastare l’analisi statistica Diffusione: espansione della struttura statistica del testo. Ogni cifra del testo cifrato è prodotta da più cifre del testo in chiaro Σ Yn= m n+i (mod 26) i=1,..,k Per blocchi binari si utilizza la trasposizione Confusione: complicazione delle relazioni statistiche fra testo cifrato e valore della chiave Si utilizza un meccanismo di sostituzione complesso (non lineare) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 9 •5 •Stelvio Cimato •23/03/2015 Cifrari di Feistel: Caratteristiche Dimensioni del blocco Blocchi grandi migliorano la sicurezza ma riducono la velocità Dimensioni della chiave Chiavi grandi migliorano la sicurezza ma riducono la velocità Numero di fasi Tutte le fasi hanno la stessa struttura Algoritmo di schedulazione della chiave A partire dalla chiave iniziale vengono prodotte tante sottochiavi quanti sono i round Funzione round Più è complessa più resiste alla crittoanalisi Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 10 Strutture di Feistel Li-1 Ri-1 Blocco di testo sottochiave f Li Ri ki Blocco di testo Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 11 •6 •Stelvio Cimato •23/03/2015 Proprietà della funzione F Li-1 Ri-1 sottochiave f Li Ri ki Indipentemente da f, la funzione è invertibile Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 12 Cifrari di Feistel Cifratura: Basta implementare un solo round Lo stesso codice può essere usato per ogni round Decifratura Usa lo stesso algoritmo per la cifratura Usa le sottochiavi in ordine inverso Esempi di cifrari di Feistel DES Blowfish Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 13 •7 •Stelvio Cimato •23/03/2015 Data Encryption Standard (DES) 15 maggio 1973: richiesta pubblica per uno standard della NBS, oggi NIST 27 agosto 1974: seconda richiesta 1975: Modifica di Lucifer, sviluppato da IBM nel ‘71 (chiave da 128 a 56 bit) 1976: due workshop Standard pubblicato 15 gennaio 1977 Riaffermato per successivi 5 anni nel 1983, 1987, 1992 Nel 1999, nuova versione triple-DES Advanced Encryption Standard (AES) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 14 Data Encryption Standard testo in chiaro 64 bit DES testo cifrato 64 bit 56 bit chiave Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 15 •8 •Stelvio Cimato •23/03/2015 Lunghezza della Chiave Nello standard DES la chiave è lunga 64 bit 8 byte di cui l’ottavo bit è di parità 1 2 3 4 5 6 7 8 ... 57 58 59 60 61 62 63 64 Precedenti 7 bit precedenti 7 bit bit di parità è lo xor dei precedenti 7 bit Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 16 Struttura del DES testo in chiaro chiave IP 56 bit 48 bit iterazione 1 ... iterazione 16 48 bit schedulazione chiave scambio IP -1 testo cifrato Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 17 •9 •Stelvio Cimato •23/03/2015 Permutazione Iniziale IP 58 60 62 64 57 59 61 63 50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 34 36 38 40 33 35 37 39 26 28 30 32 25 27 29 31 18 20 22 24 17 19 21 23 10 12 14 16 9 11 13 15 2 4 6 8 1 3 5 7 50 58 bit iniziali bit permutati ... 1 2 64 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 18 Permutazione Inversa IP-1 40 39 38 37 36 35 34 33 8 7 6 5 4 3 2 1 48 47 46 45 44 43 42 41 16 15 14 13 12 11 10 9 56 55 54 53 52 51 50 49 24 23 22 21 20 19 18 17 64 63 62 61 60 59 58 57 32 31 30 29 28 27 26 25 40 8 bit iniziali bit permutati 1 2 ... Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 64 19 •10 •Stelvio Cimato •23/03/2015 Singola Iterazione parte sinistra parte destra 32 bit 32 bit Li-1 Ri-1 sottochiave 48 bit f Li ki Ri Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 20 La funzione f A 32 bit E E(A) J 48 bit 48 bit B1 B2 B3 B4 B5 B6 B7 B8 S1 S2 S3 S4 S5 S6 S7 S8 C1 C2 C3 C4 C5 C6 C7 C8 P 32 bit f(A,J) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 21 •11 •Stelvio Cimato •23/03/2015 Espansione E 32 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31 4 8 12 16 20 24 28 32 5 9 13 17 21 25 29 1 16 bit sono duplicati 32 12 bit iniziali bit dopo espansione 1 2 3 ... Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 48 22 S-box 00 01 10 11 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 0110 0111 1111 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 7 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 10 2 4 9 1 7 5 11 3 14 10 0 6 13 Box S1 6 bit in input specificano un elemento della tabella la cui conversione binaria dà i 4 bit output Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 23 •12 •Stelvio Cimato •23/03/2015 Funzionamento delle S-box primo ed ultimo bit input 101110 10 00 01 10 11 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 0110 0111 1111 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 7 8 13 6 2 15 12 9 7 3 10 5 0 11 15 12 10 2 4 9 1 7 5 11 3 14 10 0 6 13 Box S1 output 11 in binario = 1011 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 24 Proprietà delle S-box [NBS, 1976] Ogni riga è una permutazione degli interi 0,..,15 Nessuna S-box è una funzione affine o lineare dei suoi input Cambiando un solo bit di input ad una S-box variano almeno due bit nell'output Per ogni S-box S e per ogni input x a 6 bit: S(x) e S(x⊕001100) differiscono in almeno due bit Per ogni S-box, per ogni input x e per ogni bit d,g, S(x) ≠ S(x⊕11dg00) Per ogni S-box, il numero degli input per i quali il bit di output è 0 è circa uguale al numero degli input per i quali tale bit è 1 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 25 •13 •Stelvio Cimato •23/03/2015 Schedulazione delle chiavi chiave k PC1 48 bit k1 .. . 48 bit k16 PC2 PC2 C0 D0 LS1 LS1 56 bit C1 .. . 56 bit .. . D1 LS16 LS16 C16 D16 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 26 Permutazione PC-1 57 49 41 33 25 10 2 59 51 43 63 55 47 39 31 14 6 61 53 45 17 9 1 35 27 19 23 15 7 37 29 21 58 50 42 34 26 18 11 3 60 52 44 36 62 54 46 38 30 22 13 5 28 20 12 4 i bit in posizione 8, 16, 24, 32, 40, 48, 56, 64 sono di parità e non compaiono 1 57 64 bit iniziali bit dopo permutazione 1 2 3 ... Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 56 27 •14 •Stelvio Cimato •23/03/2015 Compressione-permutazione PC-2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 26 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 8 bit soppressi in posizione 9, 18, 22, 25, 35, 38, 43 e 54 1 14 56 bit iniziali bit dopo compressione 1 2 3 ... Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 48 28 Schedulazione shift a sinistra iterazione shift 1 1 2 1 3 2 4 2 5 2 6 2 7 2 8 2 9 10 11 12 13 14 15 16 1 2 2 2 2 2 2 1 Totale shift nelle 16 iterazioni = 28 posizioni Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 29 •15 •Stelvio Cimato •23/03/2015 Decifratura DES testo cifrato chiave IP iterazione 1 k16 schedulazione chiave ... iterazione 16 scambio IP k1 stesso algoritmo sottochiavi in ordine inverso -1 StelvioinCimato DI – Università degli studi di Milano, testo chiaro 30 Sede di Crema Decifratura DES Consideriamo l’ultima operazione di cifratura (a meno della permutazione IP-1) L15 R15 R16 = L15⊕f(R15, K16) f k16 L16 =R15 R15 =L16 L16 R16 L15 = R16⊕f(L16, K16) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 31 •16 •Stelvio Cimato •23/03/2015 Decifratura DES Il primo round dell’operazione di decifratura: R16 L16 f k16 R15 =L16 R15 L15 L15 = R16⊕f(L16, K16) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 32 Prestazioni Hardware: chip della Digital, 1 Gbit/secondo Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 33 •17 •Stelvio Cimato •23/03/2015 Chiavi deboli k è una chiave debole se per ogni x x x DES DES k Le sottochiavi schedulate sono tutte uguali (sempre la stessa, usata 16 volte) k Ci sono 4 chiavi deboli chiave debole Rappresentazione esadecimale 0101 FEFE 1F1F E0E0 0101 0101 FEFE FEFE 1F1F OEOE E0E0 F1F1 0101 FEFE OEOE F1F1 C0 D0 28 028 128 128 028 0 128 028 128 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 34 Chiavi semideboli k,k´ è una coppia di chiavi semideboli se per ogni x x DES x DES k k´ Ci sono 6 coppie di chiavi semideboli C0 D0 {01}14 {01}14 {01}14 {01}14 028 128 {01}14 {10}14 028 128 {01}14 {01}14 k 01FE 1FE0 01E0 1FFE 011F E0FE 01FE 1FE0 01E0 1FFE 011F E0FE 01FE 0EF1 01F1 0EFE 010E F1FE k' 01FE 0EF1 01F1 0EFE 010E F1FE FE01 E01F E001 FE1F 1F01 FEE0 FE01 E01F E001 FE1F 1F01 FEE0 FE01 F10E F101 FE0E OE01 FEF1 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia FE01 F10E F101 FE0E 0E01 FEF1 Le sottochiavi schedulate sono solo due, ognuna usata 8 volte C0 D0 {10}14 {10}14 {10}14 {10}14 028 128 {10}14 {01}14 028 128 {10}14 {10}14 35 •18 •Stelvio Cimato •23/03/2015 Proprietà del complemento x Se y DES k allora x DES · è il complemento bit per bit y k con un attacco chosen plaintext si esaminano 255 chiavi invece che 256 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 36 Ricerca esaustiva Numero chiavi DES = 256 ≈ 7,2056 ·1016 Considerando un computer che svolge: 1 crittografia DES al microsecondo ci vogliono circa 1142 anni per provare la metà dello spazio delle chiavi 255 ≈ 3,6 ·1016 chiavi Ma se considero 1 milione di crittografie DES al microsecondo ci vogliono solo circa 10,01 ore. Altre stime: con un computer a 500 Mhz che testa una chiave per ciclo di clock ci vogliono 144.115.188 secondi ≈ 834 giorni ≈ 2 anni e 3 mesi Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 37 •19 •Stelvio Cimato •23/03/2015 DES challenges 10.000 dollari al primo che rompe la challenge se rotta entro il 25% del miglior tempo precedente Giugno 1997: 39 giorni, testato 24% delle 256 chiavi, DESCHALL Rocke Verser scrisse e distribuì un client di ricerca, 70.000 computer, trovata da Michael K. Sanders (Pentium 90 MHz, 16M) messaggio: Strong cryptography makes the world a safer place Luglio 1998: 56 ore, Deep Crack, EFF, 250.000 dollari Gennaio 1999: 22 ore 15 minuti testando 245 miliardi di chiavi al secondo, Distributed.Net 100.000 computer e EFF Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 38 Deep Crack: Unità di ricerca chiave blocco DES -1 chiave ← chiave+1 no Interessante? si Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia Invia al software 39 •20 •Stelvio Cimato •23/03/2015 Deep Crack: Unità di ricerca Clock di 40Mhz Una decifratura in 16 cicli di clock Numero chiavi provate al secondo 40.000.000 = 2.500.000 16 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 40 Chip 24 unità di ricerca Prova 24 ⋅ 2.500.000 = 60.000.000 chiavi al sec. Prova tutte le chiavi in 13.900 giorni (≈38 anni) Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 41 •21 •Stelvio Cimato •23/03/2015 Board 64 processori 32 per faccia 40 cm X 40 cm Prova 64⋅60.000.000 = 3.840.000.000 chiavi al sec. Prova tutte le chiavi in ≈218 giorni Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 42 Chassis 12 schede Prova 12 ⋅ 3.840.000.000 = 46.080.000.000 chiavi al sec. Prova tutte le chiavi in ≈18 giorni Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 43 •22 •Stelvio Cimato •23/03/2015 EFF DES Cracker 1998: ricavata la chiave in sole 56 ore costo: $ 250000 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 44 Caratteristiche di DES Effetto valanga Due testi che differiscono di un solo bit, cifrati con la stessa chiave differiscono per 34 bit Due testi uguali cifrati con chiavi diverse per un solo bit differiscono per 35 bit Criteri progettuali per la F e le S-Box: Strict Avalanche Per ogni bit input i invertito, il bit j di output cambia con p=1/2 Bit Independence Due bit j e k di output cambiano indipendentemente se cambia il bit di input i Guaranteed Avalanche Se cambia un bit di input, almeno g bit output cambiano, 1<g<6 Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 45 •23 •Stelvio Cimato •23/03/2015 Critiche al DES Utilizzo di chiavi a 56 bit Voluta dalla NSA per controllare la sicurezza? S-Box Esistenza di trapdoor? Numero di fasi Con 8 iterazioni DES realizza funzione random Conoscenza della crittoanalisi differenziale? Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema 46 Attacchi sofisticati al DES Crittoanalisi differenziale Biham e Shamir, 1990 Recupera la chiave a partire da 247 coppie (plaintext, ciphertext) di testi scelti Solo teorico, come trovare 247 testi scelti? Crittoanalisi lineare Matsui, 1993 Recupera la chiave a partire da 243 coppie (plaintext, ciphertext) testi in chiaro noti Stelvio Cimato DI – Università degli studi di Milano, Sede di Crema •Corso di Crittografia 47 •24