Funzioni di hash sicure: MD5 e SHA-1

Documenti analoghi
FUNZIONI HASH ONE-WAY ITERATE

Funzioni Hash. Impronta Digitale. L impronta digitale viene utilizzata per

La crittografia asimmetrica è alla base della moderna crittografia ed è particolarmente utilizzata nei sistemi di protezione delle comunicazioni

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

!"### "$ " Applicazioni. Autenticità del messaggio M Integrità del messaggio M. Stelvio Cimato DTI Università di Milano, Polo di Crema

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

RETI DI CALCOLATORI. Crittografia. La crittografia

Schemi di Autenticazione per il Protocollo HTTP. a cura di Nicola Ferrante

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

schema di firma definizione formale

Applicazioni. Cosa si intende per sicurezza di uno schema di un MAC? Dobbiamo definire. Autenticità del messaggio M Integrità del messaggio M

SHA %&'(& lunghezza arbitraria. 160 bit

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

Crittografia e sicurezza delle reti

metodi crittografici maurizio pizzonia sicurezza dei sistemi informatici e delle reti

Introduzione alla FIRMA DIGITALE

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

idea della crittografia a chiave pubblica

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

Generatori di sequenze pseudocasuali. Manuela Aprile Maria Chiara Fumi

Crittografia a chiave pubblica

riferimento temporale

Corso di Informatica

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.

Firme digitali. Firma Digitale. Firma Digitale. Firma Digitale. Equivalente alla firma convenzionale. Equivalente alla firma convenzionale

Algoritmi di criptografia a chiave. Cifrari a blocchi

Unità Aritmetico-Logica

da chi proviene un messaggio?

Parte prima Cifrature asimmetriche 21

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

Random Number/Bit Generator

(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

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy

Stream cipher. Cifrari simmetrici. Stream cipher. Stream cipher. I cifrari simmetrici possono essere:! Cifrari a blocchi: !

Firme digitali. Firma Digitale. Firma Digitale. Corso di Sicurezza su Reti Lezione del 17 novembre Equivalente alla firma convenzionale

Reti di Calcolatori. Crittografia & Java Cryptographic Architecture (JCA) A.A. 2010/2011 Reti di Calcolatori 1 (Es. 6)

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

Il Ricevente comunica pubblicamente una chiave e. Il Mittente codifica il messaggio usando la funzione f(m, e) = C e

Sicurezza e Crittografia

La sicurezza nelle reti di calcolatori

Sicurezza: necessità. Roberto Cecchini Ottobre

Corso di Laurea in Informatica Modulo di Laboratorio di Programmazione I (a.a ) Docente: Prof. M. Nesi

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

Lezione2: Circuiti Logici

Corso di Crittografia Prof. Dario Catalano. Advanced Encryption Standard

Macchine di Turing: somma di due numeri

Firma digitale e Certificati uno strumento a servizio dell'amministrazione digitale

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

Confidenzialità e crittografia simmetrica. Contenuto. Scenario tipico. Corso di Sicurezza su Reti Uso della crittografia simmetrica

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

Indice generale. Nota dell editore... XIII. Prefazione alla prima edizione... XV. Ringraziamenti per la prima edizione...xviii

Esercitazione 6. Array

Unità Didattica N 9 : La parabola

Esercizi su alberi binari

Secure Hash Functions

Lezione 7 Sicurezza delle informazioni

Il concetto di calcolatore e di algoritmo

MECCANISMI DI BASE: Generatori di bit casuali

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

Distribuzione delle chiavi pubbliche. Gestione delle chiavi. Distribuzione delle chiavi pubbliche

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Linguaggi Regolari e Linguaggi Liberi

La "macchina" da calcolo

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

Transcript:

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