Elementi di Crittografia MAC e FUNZIONI HASH

Slides:



Advertisements
Presentazioni simili
Gestione della memoria centrale
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Microsoft Visual Basic MVP
La sicurezza nelle Griglie
Sicurezza II Prof. Dario Catalano Errori di Implementazione.
Sicurezza II Prof. Dario Catalano
Sicurezza II Prof. Dario Catalano Strong Password Protocols.
Lez. 131 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Rappresentazione.
Lez. 13a1 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Funzioni Hash.
Autenticazione dei messaggi e funzioni hash
Dipartimento di Ingegneria dell’Informazione
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Realizzazione del file system
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Sistemi e Tecnologie della Comunicazione
Per crittografia si intende la protezione
La rete del futuro nell’autonomia scolastica
Sistemi di elaborazione delle informazioni
Iterazione enumerativa (for)
Politecnico di Milano Algoritmi e Architetture per la Protezione dellInformazione Multichannel Adaptive Information Systems Paolo Maistri Dipartimento.
Reti di Calcolatori Crittografia
Testo consigliato Crittografia, P. Ferragina e F. Luccio, Ed. Bollati Boringhieri, € 16.
Secure Shell Giulia Carboni
Ricerca della Legge di Controllo
CODICI Si ringrazia il prof. Di Santo per aver gentilmente messo a disposizione il proprio materiale per la preparazione di alcune delle slides presenti.
Tabelle hash.
SSL (Secure Socket Layer)
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Breaking DES Corso di Sicurezza Reti Dott. Giovanni Ciraolo Anno Accademico
Unità Didattica 1 Algoritmi
Prof. Zambetti -Majorana © 2008
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Firma Digitale.
RAPPRESENTAZIONE DELL'INFORMAZIONE
LA CRITTOGRAFIA QUANTISTICA
Metodo della moltiplicazione
“ Firma Digitale “ Informatica e Teleradiologia
CORSO DI CRITTOGRAFIA Quinto incontro PROGETTO LAUREE SCIENTIFICHE
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Passo 3: calcolo del costo minimo
Un modem, una scheda di rete, o comunque una unità di comunicazione tra calcolatori elettronici, trasmettendo uninformazione, a causa di disturbi esterni,
CRITTOGRAFIA E FIRMA DIGITALE
Introduzione al controllo derrore. Introduzione Quando dei dati vengono scambiati tra due host, può accadere che il segnale venga alterato. Il controllo.
Il processo per generare una Firma Digitale
Cenni di Crittografia Il procedimento di crittografia consiste nel rendere illeggibile un testo in chiaro mediante l’uso di un determinato algoritmo e.
Capitolo 8 La sicurezza nelle reti
RSA e questioni relative
PROPAGAZIONE DEGLI ERRORI:
Crittografia MITTENTE DESTINATARIO messaggio messaggio chiave-1
La sicurezza dei sistemi informatici. Il sistema deve soddisfare i seguenti requisiti di sicurezza (CIANA)  Confidenzialità (Riservatezza)  Integrità.
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
UNIVERSITÀ DEGLI STUDI DI PAVIA Anno accademico 2009/2010 Sicurezza e frodi informatiche in Internet: la Firma Digitale come garanzia di autenticità e.
Sicurezza informatica
27 marzo 2008 Dott. Ernesto Batteta.  Le minacce nello scambio dei documenti  Crittografia  Firma digitale.
Sicurezza delle comunicazioni1 Introduzione Consistente sviluppo delle applicazioni telematiche dovuto a: –Evoluzione tecnologica delle trasmissioni –potenze.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Elgamal Corso di Sicurezza – A.A. 2006/07 Angeli Fabio29/05/2007.
Prof. ing. Paolo Bidello AA 2005/2006 Laboratorio Informatico Promemoria degli argomenti: Reti locali (LAN)
1 Certificati a chiave pubblica strutture dati che legano una chiave pubblica ad alcuni attributi di una persona sono firmati elettronicamente dall’ente.
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Agenda – Parte II La creazione del documento informatico e la firma digitale La classificazione del documento e il protocollo informatico La trasmissione.
Crittografia/ Steganografia
La firma digitale. Che cosa é la firma digitale? La firma digitale è una informazione aggiunta ad un documento informatico al fine di garantirne integrità.
Crittografia. Introduzione  La rete può essere utilizzata per diversi scopi: informazione, scambio dati, scambio messaggi, trasferimento denaro.  Nel.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
Un sistema di sicurezza dei dati.  La crittografia, il cui termine indica "nascosto", è la branca della crittologia che tratta delle "scritture nascoste",
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Crittografia e crittoanalisi Crittografia: tecnica che consente di rendere visibili o utilizzabili le informazioni solo alle persone a cui sono destinate.
Sicurezza dei Sistemi Informatici L.S. in Ingegneria Informatica Docente: Prof. Giuseppe Mastronardi CRITTOGRAFIA E CRITTOANALISI ATTACCHI AI SISTEMI DI.
Steganografia in un file di testo Corso di Sicurezza dei sistemi informatici Prof. Giuseppe Mastronardi Anno Accademico 2006/07.
Transcript della presentazione:

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

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

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

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

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

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:

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...

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

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)

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

Impiego del MAC

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)

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

HASH

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.

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:

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.

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à;

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.

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.

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.

ATTACCHI

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%

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

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

Attacco a compleanno (2/2)

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

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

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

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

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

SHA

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

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

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

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”

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

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)

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

Passo 4: elaborazione del messaggio in blocchi di 1024 bit

Passo 4: elaborazione del messaggio in blocchi di 1024 bit

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

Passo 4: elaborazione del messaggio in blocchi di 1024 bit

Passo 4: elaborazione del messaggio in blocchi di 1024 bit

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

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

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!

WHIRLPOOL

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

La cifratura a blocchi

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

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

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

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

La logica di Whirlpool

Algoritmo di cifratura a blocchi

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

Substitute Byte Tabella di lookup

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

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

Mix Rows

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

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

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

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

Grazie per l'attenzione!