Funzioni di hash sicure: MD5 e SHA-1

Похожие документы
Funzioni Hash. Impronta Digitale. L impronta digitale viene utilizzata per

La funzione Hash. Garanzia dell integrità dei dati e autenticazione dei messaggi

Integrità dei messaggi. Funzioni di Hash e codici MAC. Message digest. Message digest e funzioni di hash

RETI DI CALCOLATORI. Crittografia. La crittografia

Sicurezza nelle applicazioni multimediali: lezione 5, funzioni di hash. Funzioni crittografiche di hash

Identificazione, Autenticazione e Firma Digitale. Firma digitale...

Converte una chiave di al più 14 word a 32 bit (K-array) in un array di 18 sottochiavi a 32 bit (P-array) Genera 4 S-box, ognuna con 256 word a 32 bit

Funzioni hash crittografiche e paradosso del compleanno

Message Authentication Code

Crittografia avanzata Lezione del 21 Marzo 2011

BLOWFISH. Introduzione Algoritmo. Prestazioni Cryptanalysis of Vaundenay. Egizio Raffaele

Principi di crittografia Integrità dei messaggi Protocolli di autenticazione Sicurezza nella pila di protocolli di Internet: PGP, SSL, IPSec

metodi crittografici maurizio pizzonia sicurezza dei sistemi informatici e delle reti

Capitolo 8 La sicurezza nelle reti

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Funzioni Hash e Network Security

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione

LA FI RMA DI GI TALE. Materiale a cura di: L.Chium ient o,f. Orfei, F. Baiani, S. Sallam

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

Crittografia a chiave pubblica

riferimento temporale

1) Codici convoluzionali. 2) Circuito codificatore. 3) Diagramma a stati e a traliccio. 4) Distanza libera. 5) Algoritmo di Viterbi

Crittografia. Crittografia Definizione. Sicurezza e qualità dei servizi su internet Università degli Studi di Pavia, C.

Unità Aritmetico-Logica

Password. Password. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano Autenticazione utente

Ripasso. Public Key cryptograhy. Message Authentication Codes (MAC) Firma digitale

Altri cifrari a blocchi

Autenticazione dei messaggi e funzioni hash

Crittografia a chiave pubblica

Fondamenti di Informatica

(G, ) un gruppo moltiplicativo di ordine n l ordine di un elemento g G, o(g), è il minimo intero positivo m tale che g m = 1

Corso di Crittografia Prof. Dario Catalano. Firme Digitali

Il cifrario di Vigenère. Bizzoni Stefano De Persiis Angela Freddi Giordana

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

Codice Gray. (versione Marzo 2007)

Linguaggi Regolari e Linguaggi Liberi

Dalla tabella alla funzione canonica

Luigi Piroddi

Crittografia con Python

La sicurezza nelle reti di calcolatori

Sicurezza: necessità. Roberto Cecchini Ottobre

Firme digitali. Firma Digitale. Firma Digitale. Elementi di Crittografia Equivalente alla firma convenzionale

Lezione2: Circuiti Logici

Macchine di Turing: somma di due numeri

Problemi, algoritmi, calcolatore

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

POLITECNICO DI BARI CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Gennaio. SUAP On Line i pre-requsiti informatici: La firma digitale

Esercitazione 6. Array

Unità Didattica N 9 : La parabola

Esercizi su alberi binari

Lezione 7 Sicurezza delle informazioni

Il concetto di calcolatore e di algoritmo

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it

Elementi di Sicurezza e Privatezza Lezione 4 - Crittografia

Codifica di Huffman e Lempel-Ziv-Welch A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

FIRMA ELETTRONICA. Il sistema di garanzia è stato individuato nella crittografia in quanto è in grado di assicurare:

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR:

Sviluppo di programmi

Crittografia e OpenSource

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Linguaggi Regolari e Linguaggi Liberi

Introduzione alla programmazione Esercizi risolti

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

Lezione 3. I numeri relativi

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Triangolazione di Delaunay

Транскрипт:

POLITECNICO DI MILANO Funzioni di hash sicure: MD5 e SHA-1 CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/ Funzioni di hash Una funzione di hash (o message digest) è una funzione H che, dato un input M di dimensione qualsiasi, produce un output h (l hash) di dimensione fissa: h = H(M) Lo scopo di una funzione di hash è di creare un impronta (fingerprint) del messaggio. Dato che l output ha lunghezza fissa (in genere dell ordine di una o poche centinaia di bit), esisteranno necessariamente diversi messaggi che generano lo stesso hash... ma non è detto che si riesca a trovarli... - 2-1

Unidirezionalità Una funzione di hash sicura deve essere unidirezionale (one-way), cioè: dato un qualsiasi M, deve essere computazionalmente semplice calcolare H(M); dato un qualsiasi h, deve essere computazionalmente impraticabile calcolare un M tale che h = H(M); L idea è che l hash di un messaggio sia in sostanza una corrispondenza pseudocasuale, per cui non è possibile prevedere in alcun modo il risultato se non calcolando l hash. Messaggi diversi, anche per un solo bit, devono generare hash non correlati. - 3 - Assenza di collisioni (1) Una funzione di hash sicura deve essere senza collisioni (collision-resistant): dato un qualsiasi M, deve essere computazionalmente impraticabile trovare un M M tale che H(M ) = H(M) (funzione debolmente senza collisioni); deve essere computazionalmente impraticabile trovare una coppia (M, M ), con M M, tale che H(M) = H(M ) (funzione fortemente senza collisioni). L idea è che, anche se necessariamente esistono messaggi diversi che producono lo stesso hash, non è praticabile trovarli. - 4-2

Assenza di collisioni (2) Le due proprietà sull assenza di collisioni (debole e forte), corrispondono a due diversi tipi di attacchi a forza bruta: attacco a forza bruta semplice : trovare un messaggio che produca un dato hash (cioè un hash uguale a quello di un messaggio dato); attacco del compleanno (birthday attack): trovare due messaggi che producano lo stesso hash, indipendentemente dal valore di questo hash. La complessità dei due attacchi è molto diversa! se l hash è lungo m bit, la complessità del primo è 2 m, quella del secondo è 2 m/2. - 5 - Che cosa NON è un hash Un hash non è né una firma né un MAC (Message Authentication Code), di per sè non garantisce autenticazione e/o integrità. Nel calcolo di un hash non si inserisce nessuna informazione segreta, per cui chiunque può generare l hash corretto di qualunque messaggio. Una funzione di hash non è un algoritmo di cifratura. Calcolare l hash di un messaggio non equivale a cifrarlo: il calcolo di un hash non include nessuna chiave, e soprattutto è un operazione non invertibile. - 6-3

MD5 e SHA-1 Le due funzioni di hash sicure attualmente più diffuse sono MD5 e SHA-1, che hanno una struttura simile. costante messaggio ( padding) hash hash 512 bit 512 bit hash 512 bit message digest - 7 - MD5 MD5 (Message Digest 5) è stato progettato da Ron Rivest, ed è definito in RFC 1321 (1992). Il messaggio viene elaborato a blocchi di 512 bit. L hash è di 128 bit 128 bit. Ad ogni iterazione si calcola una funzione che prende in ingresso il blocco corrente del messaggio e il valore dell hash all iterazione precedente. L hash finale è quello risultante dall ultima iterazione. Non è più considerato molto sicuro (128 bit di hash non sono molti). - 8-4

MD5: padding Prima di iniziare l elaborazione, si aggiunge al messaggio un padding in modo che la lunghezza totale risulti un multiplo di 512 bit: si aggiunge un bit a 1 e poi tanti bit a 0 quanto basta perché la lunghezza risulti di 64 bit minore rispetto a un multiplo di 512 bit (se la lunghezza originale è già corretta si aggiungono comunque 512 bit); si aggiungono 64 bit contenenti la lunghezza originale del messaggio (modulo 2 64 ). 1-512 bit 64 bit messaggio originale 1000...0 lunghezza multiplo di 512 bit - 9 - Elaborazione MD5 (1) Un iterazione MD5 (cioè l elaborazione su un blocco del messaggio) è composta da 4 passi. Indichiamo con: d i : i-esima parola (32 bit) del digest (i=0-3); m i : i-esima parola di un blocco di messaggio (i=0-15); T i = 2 32 sen i, (i=1-64); x: rotazione sinistra di x posizioni (su 32 bit); : somma modulo 2 32 ;,,, : rispettivamente AND, OR, NOT, XOR (calcolati bit a bit). - 10-5

Elaborazione MD5 (2) Il valore del digest viene così inizializzato: d 0 = 0x67452301, d 1 = 0xEFCDAB89, d 2 = 0x98BADCFE, d 3 = 0x10325476. Ogni passo prende in ingresso il valore corrente del digest e il blocco corrente del messaggio, e modifica (fornendolo in uscita) il valore corrente del digest. Il valore del digest in uscita dal quarto passo viene poi sommato (indipendentemente per le 4 parole d 0, d 1, d 2, d 3 ) al valore di ingresso al primo passo dell iterazione corrente; il risultato è il valore di uscita dell iterazione. - 11 - Elaborazione MD5 (3) Ogni passo è composto da 16 operazioni 16 operazioni. La i-esima (i=0-15) operazione ha la forma: d (-i) mod 4 = d (1-i) mod 4 (d (-i) mod 4 f p (d (1-i) mod 4, d (2-i) mod 4, d (3-i) mod 4 ) m j T k ) S p (i mod 4) ogni operazione: aggiorna uno dei 4 blocchi del digest (in ogni passo ogni blocco del digest viene aggiornato 4 volte); utilizza uno dei 16 blocchi del messaggio m j (in ogni passo ogni blocco viene usato una volta); utilizza una delle 64 costanti T k ; utilizza una funzione f p diversa per ogni passo; effettua una rotazione il cui valore è determinato da una funzione S p diversa per ogni passo; - 12-6

Elaborazione MD5 (4) A (e.g. d 0 ) B (e.g. d 1 ) C (e.g. d 2 ) D (e.g. d 3 ) m j f p schema di una operazione MD5 T k S p (i mod 4) A (e.g. d 3 ) B (e.g. d 0 ) C (e.g. d 1 ) D (e.g. d 2 ) - 13 - Elaborazione MD5: passo 1 Definiamo F(x,y,z) = (x y) ( x z). Per i=0-15 si esegue: d (-i) mod 4 = d (1-i) mod 4 (d (-i) mod 4 F(d (1-i) mod 4, d (2-i) mod 4, d (3-i) mod 4 ) m i T i1 ) S 1 (i mod 4) dove S 1 (0) = 7, S 1 (1) = 12, S 1 (2) = 17, S 1 (3) = 22. Le prime 5 di 16 operazioni sono quindi: d 0 = d 1 (d 0 F(d 1, d 2, d 3 ) m 0 T 1 ) 7 (i=0) d 3 = d 0 (d 3 F(d 0, d 1, d 2 ) m 1 T 2 ) 12 (i=1) d 2 = d 3 (d 2 F(d 3, d 0, d 1 ) m 2 T 3 ) 17 (i=2) d 1 = d 2 (d 1 F(d 2, d 3, d 0 ) m 3 T 4 ) 22 (i=3) d 0 = d 1 (d 0 F(d 1, d 2, d 3 ) m 4 T 5 ) 7 (i=4) - 14-7

Elaborazione MD5: passo 2 Definiamo G(x,y,z) = (x z) (y z). Per i=0-15 si esegue: d (-i) mod 4 = d (1-i) mod 4 (d (-i) mod 4 G(d (1-i) mod 4, d (2-i) mod 4, d (3-i) mod 4 ) m (5i1) mod 16 T i17 ) S 2 (i mod 4) dove S 2 (0) = 5, S 2 (1) = 9, S 2 (2) = 14, S 2 (3) = 20. Le prime 5 di 16 operazioni sono quindi: d 0 = d 1 (d 0 G(d 1, d 2, d 3 ) m 1 T 17 ) 5 (i=0) d 3 = d 0 (d 3 G(d 0, d 1, d 2 ) m 6 T 18 ) 9 (i=1) d 2 = d 3 (d 2 G(d 3, d 0, d 1 ) m 11 T 19 ) 14 (i=2) d 1 = d 2 (d 1 G(d 2, d 3, d 0 ) m 0 T 20 ) 20 (i=3) d 0 = d 1 (d 0 G(d 1, d 2, d 3 ) m 5 T 21 ) 5 (i=4) - 15 - Elaborazione MD5: passo 3 Definiamo H(x,y,z) = x y z. Per i=0-15 si esegue: d (-i) mod 4 = d (1-i) mod 4 (d (-i) mod 4 H(d (1-i) mod 4, d (2-i) mod 4, d (3-i) mod 4 ) m (3i5) mod 16 T i33 ) S 3 (i mod 4) dove S 3 (0) = 4, S 3 (1) = 11, S 3 (2) = 16, S 3 (3) = 23. Le prime 5 di 16 operazioni sono quindi: d 0 = d 1 (d 0 H(d 1, d 2, d 3 ) m 5 T 33 ) 4 (i=0) d 3 = d 0 (d 3 H(d 0, d 1, d 2 ) m 8 T 34 ) 11 (i=1) d 2 = d 3 (d 2 H(d 3, d 0, d 1 ) m 11 T 35 ) 16 (i=2) d 1 = d 2 (d 1 H(d 2, d 3, d 0 ) m 14 T 36 ) 23 (i=3) d 0 = d 1 (d 0 H(d 1, d 2, d 3 ) m 1 T 37 ) 4 (i=4) - 16-8

Elaborazione MD5: passo 4 Definiamo I(x,y,z) = y (x z). Per i=0-15 si esegue: d (-i) mod 4 = d (1-i) mod 4 (d (-i) mod 4 I(d (1-i) mod 4, d (2-i) mod 4, d (3-i) mod 4 ) m (7i) mod 16 T i49 ) S 4 (i mod 4) dove S 4 (0) = 6, S 4 (1) = 10, S 4 (2) = 15, S 4 (3) = 21. Le prime 5 di 16 operazioni sono quindi: d 0 = d 1 (d 0 I(d 1, d 2, d 3 ) m 0 T 49 ) 6 (i=0) d 3 = d 0 (d 3 I(d 0, d 1, d 2 ) m 7 T 50 ) 10 (i=1) d 2 = d 3 (d 2 I(d 3, d 0, d 1 ) m 14 T 51 ) 15 (i=2) d 1 = d 2 (d 1 I(d 2, d 3, d 0 ) m 5 T 52 ) 21 (i=3) d 0 = d 1 (d 0 I(d 1, d 2, d 3 ) m 12 T 53 ) 6 (i=4) - 17 - SHA-1 SHA-1 (Secure Hash Algorithm 1) è stato progettato dal NIST (l algoritmo SHA originale è stato sostituito con SHA-1 dal NIST stesso per via di una vulnerabilità non pubblicata). Il messaggio (che deve essere di lunghezza inferiore a 2 64 bit) viene elaborato a blocchi di 512 bit. L hash è di 160 bit 160 bit. Ad ogni iterazione si calcola una funzione che dipende dal blocco corrente del messaggio e dal valore dell hash all iterazione precedente; il risultato viene sommato (per singola parola) al valore dell iterazione precedente. - 18-9

SHA-1: inizializzazione Al messaggio viene aggiunto un padding (uguale a quello di MD5) Le 5 parole di 32 bit del digest (A, B, C, D, E) vengono inizializzate con: A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476, E = 0xC3D2E1F0. Ogni iterazione calcola dei valori di A, B, C, D, E che vengono sommati ai precedenti prima di passare all iterazione successiva. Alla fine, la concatenazione di A, B, C, D, E costituisce il digest del messaggio. - 19 - SHA-1: schema iterazione (1) Il blocco corrente di messaggio (512 bit) viene utilizzato per costruire una stringa di 5 x 512 bit (80 parole di 32 bit). Le prime 16 parole coincidono con il blocco del messaggio, le successive sono calcolate così: W i = (W i-3 W i-8 W i-14 W i-16 ) 1 (i=16-79) la rotazione di un bit è stata aggiunta in SHA-1 (è l unica differenza tra SHA e SHA-1). Si scorre la stringa di 80 parole una parola alla volta (80 operazioni), calcolando i nuovi valori A, B, C, D, E. Alla fine, i nuovi valori verranno aggiunti agli A, B, C, D, E precedenti. - 20-10

SHA-1: schema iterazione (2) Ogni iterazione è composta da 80 operazioni. Per i=0-79: B, C, D, E sono calcolati così: B = A C = B 30 D = C E = D A viene calcolato così: A = E (A 5) W i K i f i (B, C, D) dove K i vale: 30 30 2 2 ( i = 0 19) 2 3 ( i = 20 39) 30 30 2 5 i = 40 59 2 10 i = 60 79 e f i (B, C, D) vale: B C ~ B D ( ) ( ) ( ) ( i = 0 19) B C D ( i = 20 39, i = 60 79) ( B C) ( B D) ( C D) ( i = 40 59) ( ) - 21 - SHA-1: schema operazione A B C D E f i schema di una operazione SHA-1 5 30 W i K i A B C D E - 22-11

MD5 vs. SHA-1 lunghezza hash lunghezza massima messaggio dimensione blocco messsaggio numero operazioni numero costanti additive numero funzioni primitive MD5 128 bit illimitata 512 bit 64 64 4 SHA-1 160 bit 2 64-1 bit 512 bit 80 4 4 (di cui 2 uguali) - 23-12