La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Elementi di Crittografia MAC e FUNZIONI HASH

Presentazioni simili


Presentazione sul tema: "Elementi di Crittografia MAC e FUNZIONI HASH"— Transcript della presentazione:

1 Elementi di Crittografia MAC e FUNZIONI HASH
________________________________________ MAC e FUNZIONI HASH _______________________________ Alessandro Zeppi Roberto Mottola Fabio Felici Andrea Rosati Daniele Salvatori

2 Argomenti Trattati Segretezza/Autenticazione Codici MAC Funzioni Hash
Attacchi SHA Whirlpool

3 Due concetti importanti, ma distinti
La segretezza è garantita quando i contenuti di un messaggio sono intellegibili solo a quelle persone e/o quei processi che sono in possesso della chiave crittografica appropriata SEGRETEZZA L'autenticazione dei messaggi è una procedura che verifica che i messaggi ricevuti provengano dalla sorgente indicata e che non siano stati modificati AUTENTICAZIONE

4 Funzioni per l'autenticazione
I protocolli di autenticazione dei messaggi sfruttano l'esistenza di funzioni che producono autenticatori, che verranno utilizzati dal destinatario per verificare l'autenticità del messaggio. Queste funzioni sono raggruppabili in tre classi: Crittografia dei messaggi Codice MAC ( Message Authentication Code) Funzione Hash

5 Crittografia simmetrica e autenticazione
E(K,M) Messaggio E D Messaggio K K Il messaggio trasmesso dalla sorgente A alla destinazione B viene crittografato utilizzando una chiave segreta K condivisa da A e B. La crittografia simmetrica garantisce segretezza e autenticazione: Nessun altro conosce la chiave Un estraneo che non conoscesse K non saprebbe come modificare il messaggio

6 Problema della crittografia simmetrica
La destinazione accetterà qualsiasi messaggio Al destinatario potrebbe essere necessario un mezzo automatico per determinare se il testo ricevuto sia un testo legittimo e se provenga da A Altrimenti:

7 Crittografia a chiave pubblica e autenticazione
L'uso ordinario della crittografia a chiave pubblica garantisce la segretezza ma non l'autenticazione Chiunque potrebbe usare la chiave pubblica di Bob per crittografare un messaggio qualsiasi ed inviarlo a Bob sostenendo di essere Alice Vediamo una tecnica di autenticazione alternativa...

8 Codice MAC L'idea alla base dei codici MAC è quella che per garantire l'autenticazione dei messaggi sia necessario creare dell'informazione aggiuntiva all'interno della comunicazione. Questo checksum crittografico prende il nome di codice MAC e deve poter essere calcolato a partire da una chiave segreta K, condivisa da entrambe le parti (Alice & Bob) Funzione MAC MAC = C (K,M) Chiave segreta condivisa Messaggio di input

9 Contesto e requisiti È da sottolineare che il nostro obiettivo è consentire l'autenticazione dei messaggi Ora non siamo interessati alla segretezza, quindi i nostri messaggi stanno viaggiando in chiaro sul canale di comunicazione È importante perciò che Alice utilizzi una nuova chiave per ogni comunicazione In questo modo Eve non può inviare nuovamente un messaggio di Alice, in quanto Bob non lo accetterebbe (Replay Attack)

10 MAC: garantire la segretezza
Alice vuole inviare un messaggio privato a Bob e desidera che solo lui possa leggerlo. Inoltre vuole autenticare il messaggio La scelta migliore è quella di crittografare il messaggio M e poi aggiungere il MAC al testo cifrato In questo modo Bob può verificare il MAC prima di decrittare il messaggio: Se questo fosse diverso dal MAC calcolato da Bob, allora non si perderebbe tempo a decrittare il messaggio

11 Impiego del MAC

12 Data Authentication Algorithm
L'algoritmo può essere definito come una modalità CBC (Cipher Block Chaining) di DES con un vettore di inizializzazione 0 (zero) I dati (messaggi, record, file o programmi) da autenticare sono raggruppati in blocchi di 64 bit contigui: D1,D2,....,Dn Utilizzando il DES, E e una chiave segreta K, il codice di autenticazione DAC viene calcolato così: O1 = E(K, D1) O2 = E(K, D2O1) O3 = E(K, D3O2) On = E(K, DnOn-1)

13 Data Authentication Algorithm
Il codice DAC è costituito dall'intero blocco On o dai primi M bit del blocco, con 16 ≤ M ≤ 64

14 HASH

15 La funzione hash La funzione hash monodirezionale è una variante del codice di autenticazione del messaggio MAC La funzione hash accetta come input un messaggio M di lunghezza variabile e produce un output di lunghezza fissa chiamato codice hash H(M) Il codice hash non utilizza una chiave ma è funzione solo del messaggio di input Il codice hash è anche chiamato messagge digest.

16 La funzione hash Il codice hash è una funzione che considera tutti i bit del messaggio e fornisce una funzionalità di rilevamento degli errori: una variazione in uno o più bit del messaggio produce una variazione nel codice hash; La figura seguente illustra i vari modi in cui si può utilizzare un codice hash per garantire l'autenticazione del messaggio:

17

18 Le funzioni hash Un valore hash h viene generato da una funzione H con la seguente forma: h=H(M); Il valore hash viene aggiunto al messaggio alla sorgente nel momento in cui il messaggio viene considerato corretto; Alla ricezione si autentica tale messaggio ricalcolando il valore hash. Poichè la funzione hash non è segreta, è necessario un modo per proteggere il valore hash.

19 Proprietà delle funzioni hash
H può essere applicata a un blocco di dati di qualsiasi dimensione; H produce un output di lunghezza fissa; H(x) è relativamente facile da calcolare, consentendo un'implementazione sia HW che SW; Per un determinato valore h è computazionalmente impossibile trovare un valore x tale che H(x)=h. Questa proprietà è detta monodirezionalità;

20 Proprietà delle funzioni hash
Per un determinato blocco x è computazionalmente impossibile trovare un valore y diverso da x tale che H(y)=H(x). Questa proprietà è chiamata resistenza debole alle collisioni; E' computazionalmente impossibile trovare una coppia (x,y) tale che H(y)=H(x). Questa proprietà è chiamata resistenza forte alle collisioni.

21 Semplici funzioni hash
L'input viene considerato come una sequenza di blocchi di n bit. L'input viene elaborato un blocco alla volta in modo iterativo per produrre un valora hash di n bit. Una delle funzioni hash più semplici è l'operazione di OR esclusivo bit a bit applicata a ciascun blocco L'operazione può essere espressa così: Ci=bi1bi2 bim Questa operazione produce un semplice bit di parità per ciascuna posizione di bit. Questo codice è noto come controllo di ridondanza longitudinale. E' efficace come controllo di integrità dei dati per dati casuali. Ogni valore hash di n bit è ugualmente probabile. Pertanto la probabilità che un errore nei dati alteri il valore hash è pari a 2-n.

22 Semplici funzioni hash
Con dati strutturati in modo più prevedibile,la funzione è meno efficace! Un modo semplice per migliorare le cose consiste nell'applicare uno scorrimento circolare, ovvero una rotazione, sul valore hash dopo aver elaborato ciascun blocco; Questo ha l'effetto di “casualizzare“ l'input ovvero di eliminare ogni regolarità presente nell'input.

23 ATTACCHI

24 Paradosso del compleanno
La probabilità che in un gruppo di k persone ne esistano almeno due che sono nate lo stesso giorno aumenta velocemente con l’aumentare di k Con k=23 si ottiene una probabilità del 50%

25 Tipi di attacchi Gli attacchi possono essere divisi in due categorie:
forza bruta Si effettua una ricerca esaustiva dei possibili valori fino a trovare quello desiderato. L’attacco a compleanno rientra in questa categoria analisi crittografica Si sfruttano certe proprietà dell’algoritmo per svolgere attacchi diretti senza effettuare una ricerca esaustiva

26 Attacco a compleanno (1/2)
Esempio di un attacco basato sul paradosso del compleanno: Alice si prepara a “firmare” un messaggio m, aggiungendo il relativo codice hash (lungo n bit) crittografato con la propria chiave privata Eve genera varianti di m, tutte con lo stesso significato. Prepara inoltre un uguale numero di varianti del messaggio fraudolento da sostituire al vero messaggio Per il paradosso del compleanno Eve ha una probabilità del 50% di trovare una coppia di messaggi (variante vera, variante fraudolenta) con lo stesso codice hash Eve offre la variante valida ad Alice per la firma. Poiché le due varianti hanno lo stesso codice hash, produrranno la stessa firma; ciò permetterà ad Eve di sostituire il messaggio firmato da Alice con uno fraudolento senza dover conoscere la chiave segreta di Alice

27 Attacco a compleanno (2/2)

28 Concatenamento a blocchi
Tecnica di hash proposta da Rabin negli anni '70: si suddivide M in n blocchi di uguale lunghezza e si utilizza un algoritmo di cifratura simmetrico (es. DES) per calcolare H(M) H0 = Valore iniziale Hi = E(Mi,Hi-1) G = Hn Questa tecnica è sicura nella misura in cui è sicuro l'algoritmo di cifratura utilizzato Il messaggio funge da chiave per DES É vulnerabile inoltre all'attacco Meet-in-the-middle

29 Attacco Meet-in-the-middle (1/2)
Si suppone che Eve abbia intercettato un messaggio in chiaro con relativo hash crittografato (sono noti M e E(K,H(M)) Usando l'algoritmo visto in precedenza si calcola il codice hash non crittografato G lungo m bit 2. Si costruisce il messaggio contraffatto Q1,Q2,...,Qn-2 3.Si calcola Hi = E(Qi,Hi-1) per 1 ≤ i ≤ n-2

30 Attacco Meet-in-the-middle (2/2)
Si suppone che Eve abbia intercettato un messaggio in chiaro con relativo hash crittografato (sono noti M e E(K,H(M)) 4. Si generano 2m/2 blocchi casuali, per ogni blocco X calcolo E(X,Hn-2). Si generano ulteriori 2m/2 blocchi casuali, per ogni blocco Y calcolo D(Y,G), dove D è la funzione inversa di E 5. Per il paradosso del compleanno ho una probabilità del 50% di trovare un X e un Y per cui E(X,Hn-2) = D(Y,G) 6. Si costruisce infine M' = Q1,Q2,...,Qn-2,X,Y e si ottiene H(M') = H(M) = G

31 Funzioni hash sicure (1/2)
La maggior parte delle funzioni hash crittografiche adottano la struttura iterata proposta da Merkle e Damgard all'inizio degli anni '80

32 Funzioni hash sicure (2/2)
Merkle e Damgard hanno dimostrato che se la funzione di compressione f è resistente alle collisioni allora lo è anche H (non vale il contrario) Il problema della progettazione di funzioni hash sicure si è quindi ridotto alla progettazione di funzioni di compressione resistenti alle collisioni che operano su un input di dimensioni fisse L'analisi crittografica studia il funzionamento della funzione f per cercare di ottenere collisioni con un'unica esecuzione di f La tecnica più utilizzata è l'analisi differenziale che cerca di individuare come le modifiche sul messaggio influiscano sul codice hash

33 SHA

34 Un po' di storia L'algoritmo SHA (Secure Hash Algorithm) è stato sviluppato dal NIST (National Institute of Standards and Technology) e pubblicato nel 1993 come standard. (SHA-0) Nel 1995 è stata emessa una versione aggiornata, chiamata normalmente SHA-1 SHA-1 viene considerato poco sicuro e nel 2002 NIST ha emesso una versione aggiornata dello standard; SHA-2 SHA-224, SHA-256, SHA-384, SHA-512

35 Confronto dei parametri SHA
Lunghezza del codice digest 160 224 256 384 512 Lunghezza del messaggio <264 <2128 Dimensioni del blocco 1024 Lunghezza della parola 32 64 Numero di passi 80 Sicurezza 112 128 192

36 La logica di funzionamento di SHA-512
Passo 1: aggiunta dei bit di riempimento Passo 2: aggiunta della lunghezza Passo 3: inizializzazione del buffer hash Passo 4: elaborazione del messaggio in blocchi di 1024 bit Passo 5: output

37 Passo 1: aggiunta dei bit di riempimento
Il messaggio viene esteso in modo che la sua lunghezza sia congruente a 896 modulo 1024 Questi bit vengono sempre aggiunti, anche se il messaggio è della lunghezza desiderata Il numero di bit di riempimento sarà sempre compreso fra 1 e 1024 I bit di riempimento sono costituiti da un bit a “1” seguito da una sequenza di bit a “0”

38 Passo 2: aggiunta della lunghezza
Al messaggio viene aggiunto un blocco di 128 bit che rappresenta la lunghezza del messaggio originario (prima dell'operazione di riempimento) Il risultato dei primi due passi consiste in un messaggio di lunghezza multipla di 1024 bit

39 Passo 3: inizializzazione del buffer hash
Per contenere i risultati intermedi e finale della funzione hash viene utilizzato un buffer di 512 bit Il buffer viene rappresentato come un insieme di otto registri da 64 bit (A,B,C,D,E,F,G,H)

40 Passo 3: inizializzazione del buffer hash
I registri vegono inizializzati con i seguenti valori (notazione esadecimale): A = 6A09E667F3BCC908 B = BB67AE8584CAA73B C = 3CEF372FE94F82B D = A54FF53A5F1D36F1 E = 510E527FADE682D1 F = 9B05688C2B3E6C1F G = 1F83D9ABFB41BD6B H = 5BE0CD19137E2179

41 Passo 4: elaborazione del messaggio in blocchi di 1024 bit

42 Passo 4: elaborazione del messaggio in blocchi di 1024 bit

43 Passo 4: elaborazione del messaggio in blocchi di 1024 bit
Il cuore dell'algoritmo è costituito da 80 fasi Ogni fase prende come input il valore ABCDEFGH del buffer a 512 bit e aggiorna il contenuto Ogni fase t utilizza il valore Wt di 64 bit derivato dal blocco di 1024 bit in elaborazione (Mi) Ogni fase utilizza una costante additiva Kt (0t L'output dell'ultima fase viene aggiunto all'input della prima fase (Hi-1) per produrre Hi

44 Passo 4: elaborazione del messaggio in blocchi di 1024 bit

45 Passo 4: elaborazione del messaggio in blocchi di 1024 bit

46 Passo 5: output Dopo che sono stati elaborati tutti gli N blocchi da 1024 bit, l'output dello stadio N-esimo è il codice digest di 512 bit

47 Hash di esempio Questo è un esempio di digest generato dallo SHA-1:
“Cantami o diva del pelide Achille l'ira funesta” → 1F8A690B7366A2323E2D5B045120DA7E9 3896F47 Anche una minima variazione del messaggio genera un hash completamente differente a causa di una reazione a catena nota come effetto valanga “Contami o diva del pelide Achille l'ira funesta” → E5F08D98BF18385E2F26B904CAD23C734 D530FFB

48 Sha-3 (in sviluppo) Nel 2007 il NIST ha aperto un concorso per scegliere quello che diventerà SHA-3 e prenderà il posto di SHA-* Tutti i gruppi partecipanti hanno presentato la loro ricerca entro il 31 Ottobre 2008 e in questi mesi sono stati annunciati i 5 algoritmi finalisti Per avere un vincitore dovremo attendere fino al 2012 Sono aperte le scommesse!

49 WHIRLPOOL

50 Whirlpool Funzione hash
Cifratura a blocchi come funzione di compressione Codice hash di 512 bit La cifratura a blocchi può essere implementata sia in software che con hardware

51 La cifratura a blocchi

52 La logica di Whirlpool Aggiunta dei bit di riempimento
Accodamento della lunghezza Inizializzazione della matrice hash Elaborazione del messaggio in blocchi di 512 bit

53 Aggiunta dei bit di riempimento
Il messaggio viene esteso in modo che la sua lunghezza sia un multiplo dispari di 256 Operazione effettuata anche nel caso in cui il messaggio sia della lunghezza desiderata Un singolo bit di valore 1 seguito dal numero necessario di bit 0

54 Accodamento della lunghezza
Viene aggiunto in coda al messaggio un blocco di 256 bit Intero senza segno di 256 bit Indica la lunghezza in bit del messaggio originale

55 Inizializzazione della matrice hash
Per memorizzare i risultati intermedi e finale della funzione hash viene utilizzata una matrice 8 x 8 byte, inizializzata con valori nulli

56 La logica di Whirlpool

57 Algoritmo di cifratura a blocchi

58 Rappresentazione dei blocchi
L’ordinamento dei byte nella matrice è per riga

59 Substitute Byte Tabella di lookup

60 Shift Columns Rotazione circolare verso il basso di ciascuna colonna
La prima colonna non viene ruotata Ogni byte viene spostato da una riga a un’altra distante un multiplo di 8 byte Gli 8 byte di ogni riga vengono dispersi in 8 righe differenti

61 Mix Rows Permette di ottenere la diffusione separatamente in ciascuna riga Ogni byte di una riga viene mappato in un nuovo valore che è funzione di tutti gli 8 byte della medesima riga La trasformazione è definita tramite moltiplicazione tra matrici: B=AC

62 Mix Rows

63 Add Key Calcola lo XOR bit-a-bit fra i 512 bit di CState e i 512 bit della chiave di fase

64 Espansione della chiave
Ottenuta utilizzando la cifratura a blocchi stessa Usa una costante di fase che agisce da chiave di fase per l’espansione La costante per la fase r è una matrice RC[r] in cui solo la prima riga non è nulla Ogni elemento della prima riga è un mapping che utilizza la S-box

65 Prestazioni di Whirlpool
Usa gli stessi blocchi funzionali di AES ed ha la medesima struttura Prestazioni e caratteristiche di occupazione di memoria simili ad AES Rispetto a SHA-512 richiede più risorse hardware ma raggiunge prestazioni notevolmente superiori

66 Riferimenti W. Stallings. Crittografia e Sicurezza delle
Reti. McGraw-Hill, 2004.

67 Grazie per l'attenzione!


Scaricare ppt "Elementi di Crittografia MAC e FUNZIONI HASH"

Presentazioni simili


Annunci Google