280 likes | 414 Views
Cap. 11 William Stallings. Autenticazione dei messaggi e funzioni hash. Autenticazione di un messaggio. L’autenticazione di messaggio comporta: Protezione dell’integrità di un messaggio Controllo dell’identità di colui che lo ha prodotto
E N D
Cap. 11 William Stallings Autenticazione dei messaggie funzioni hash
Autenticazione di un messaggio L’autenticazione di messaggio comporta: • Protezione dell’integrità di un messaggio • Controllo dell’identità di colui che lo ha prodotto • Assenza di ripudio (risoluzione delle controversie) Sono usate tre principali tecniche: • Cifratura di messaggio • Message authentication code (MAC) • Funzione hash
Requisiti di sicurezza Possono essere identificati vari attacchi: • Violazione (rilascio di dati a persone che non possiedono la chiave) • Analisi del traffico • Mascheramento (inserimento in rete di messaggi provenienti da una sorgente fasulla) • Modifica del contenuto • Variazione di sequenza ( inserimento, cancellazione, riordino) • Modifica del timing (ritardo o ripetizione dei messaggi) • Ripudio da parte del mittente • Ripudio da parte del destinatario
Cifratura di un messaggio La cifratura del messaggio fornisce una misura di autenticazione Se viene usata la cifratura simmetrica allora: Il receiver sa che il messaggio è stato creato dal preteso sender, perché solo lui ed il sender conoscono la chiave Il messaggio originale potrebbe essere sostituito da un opponent che non conosce la chiave. La funzione di decrittazione restituisce in tal caso una sequenza di bit priva di significato Per evitare tali attacchi lo spazio dei messaggi deve essere ristretto Non può essere alterato nemmeno se al messaggio si aggiunge un codice di rilevamento degli errori FCS (Frame Check Sequence) o checksum per rivelare qualsiasi cambiamento
Cifratura di un messaggio Se si facesse uso della encryption a chiave pubblica: • L’encryption non darebbe alcuna confidenza circa il sender perché potenzialmente chiunque conosce la chiave pubblica • Tuttavia se il sender firma il messaggio con la sua chiave privata e cifra il messaggio con la chiave pubblica del recipient si ottengono sia segretezza che autenticazione • Il bisogno di riconoscere i messaggi corrotti si riflette nel costo che comporta l’utilizzo di due sistemi a chiave pubblica sullo stesso messaggio
Controllo degli errori interno e esterno Controllo interno degli errori Controllo esterno degli errori
Un segmento TCP Un segmento TCP
Message Authentication Code (MAC) • Codice generato da un algoritmo che crea piccoli blocchi di lunghezza fissa dipendenti dal messaggio e da una chiave • A differenza dell’encryption deve essere non reversibile • Viene aggiunto al messaggio come una sorta di firma • Colui che riceve effettua sul messaggio lo stesso calcolo e controlla la conformità del MAC • MAC fornisce la certezza che il messaggio è inalterato e proviene da colui che lo ha firmato
Autenticazione e segretezza Autenticazione del testo in chiaro Autenticazione del testo cifrato
Message Authentication Code • Il MAC fornisce la confidenzialità • Possibile usare la encryption per la segretezza Generalmente si usano per ciascun compito chiavi separate Possibile calcolare il MAC prima o dopo la encryption Generalmente si ritiene preferibile farlo prima • Perché usare un MAC ? Talvolta serve soltanto la autenticazione Talvolta si richiede che l’autenticazione persista più a lungo della encryption (p.e. uso di archivio) • Nota: un MAC non è una firma digitale
Requisiti per i codici MAC • Il MAC è una checksum criptografica MAC = Ck(M) -Crea un condensato di un messaggio con lunghezza variabile -Utilizza una chiave segreta K -Ottiene un autenticatore di lunghezza fissa • È una funzione many-to-one -Potenzialmente molti messaggi hanno lo stesso MAC -Determinare un messaggio con dato MAC è estremamente difficile
Requirement per il MAC Tenendo presente i diversi tipi di attacchi il MAC deve avere le seguenti caratteristiche: 1. Conoscendo un messaggio ed il MAC corrispondente, è computazionalmente impossibile trovare un altro messaggio con lo stesso MAC 2. I MAC dovrebbero essere uniformemente distribuiti 3. I MAC dovrebbero dipendere in modo eguale da tutti i bit del messaggio
Requirement per il MAC Tenendo conto dei diversi tipi di attacco il MAC deve avere le seguenti prestazioni: • Conoscendo un messaggio ed il MAC, deve essere computazionalmente impossibile trovare un altro messaggio con lo stesso MAC • I MAC devono essere uniformemente distribuiti nel loro spazio • Il MAC deve dipendere egualmente da tutti i bit del messaggio
Uso dei cifrari simmetrici Si può usare qualsiasi sistema cifrario a blocco in chaining mode e prendere il blocco finale come MAC Il Data Authentication Algorithm (DAA) è un algoritmo basato sul DES-CBC che è stato largamente usato • Fa uso di un vettore di inizializzazione IV = 0 e padding con zeri sul blocco finale • Cifra il messaggio usando il DES in modo CBC(Cipher Block Chaining) • Invia come MAC il blocco finale • Oppure gli M bit più a sinistra (16 ≤ M ≤ 64) Oggi è però ritenuto troppo debole
Vari tipi di MAC -È sicuro per messaggi di qualsiasi lunghezza ed ha un’efficienza ottimizzata -NIST 800-38B Recommendation for Block Cipher Modes of Operation: -The CMAC Mode for Authentication -Per usare il CMAC, bisogna scegliere un block cipher E e una tag length t -CMAC is equivalent to OMAC1 -Sostanzialmente un modo di funzionamento di un block cipher
Hash Functions • Condensano un messaggio di lunghezza arbitraria in uno di lunghezza fissa h = H(M) • Usualmente si assume che la hash function sia pubblica e priva di chiave • A differenza del MAC non è dotato di chiave per rivelare i cambiamenti del messaggio • Può essere usata in vari modi con il messaggio • Usata molto spesso per creare una firma digitale
Requirements for Hash Functions 1. Può essere applicata a messaggi M di qualsiasi lunghezza 2. Produce un’uscita di lunghezza fissa h 3. È facile calcolare h = H(M) per qualsiasi messaggio M 4. Ad input uguali corrispondono sempre output uguali (coerenza) 5. Dato h è computazionalmente impossibile determinare un M tale che H(M) = h (proprietà one-way cioè non invertibile) 6. Per qualsiasi dato blocco x è computazionalmente impossibile trovare un y F x tale che H(y) = H(x) weak collision resistance 7. È computazionalemente impossibile trovare una coppia (x, y) tale che H(x) = H(y) (univocità) strong collision resistance 8. Output uniformemente distribuito (casualità)
Simple Hash Functions • Esistono diverse proposte per funzioni semplici basate sull XOR di blocchi di messaggio • Non risultano sicure perché è possibile manipolare qualsiasi messaggio non cambiando l’hash o anche cambiando pure l’hash • Servono delle funzioni criptografiche forti
Birthday Attacks L’opponent genera 2m/2 pure variazioni del messaggio fraudolento desiderato I due insiemi sono confrontati per trovare una coppia con lo stesso hash Supposto che lo user abbia firmato il messaggio valido, si provvede a sostituirlo con quello fraudolento con lo stesso valore di hash Conclusione: Bisogna usare un hash con una lunghezza m tale che non si possano calcolare 2m/2 hash in un tempo ragionevole
Block Ciphers as Hash Functions Potremmo pensare di usare i block cipher come hash function Usare un blocco iniziale e fare il padding H0 = 0 del blocco finale con 0 Calcolare ( ) Hi= E Mi,Hi-1 Usare il blocco finale come valore di hash Simile al CBC ma senza chiave L’hash che ne risulta è troppo piccolo Suscettibile al birthday attack Suscettibile al man-in-the-middle attack Anche altre varianti sono suscettibili di attacco
Hash Functions & MAC Security Come cifrari a blocco presentano: Possibilità di attacchi a forza bruta Un hash con strong collision resistance ha un costo 2m/2 Vi è una proposta per un cracker h/w per MD5 Gli hash con 128 bit appaiono vulnerabili; preferibile 160 bit MAC con coppie message-MAC note Possibile attaccare il keyspace (key search) o il MAC Per avere sicurezza servono MAC con almeno 128 bit
Hash Functions & MAC Security Attacchi criptanalitici sfruttano la struttura algoritmica Il termine di paragone delle hash functions è dato dai block ciphers Esiste una quantità di attacchi analitici sulle funzioni di hash iterate Gli attacchi sfruttano proprietà delle funzioni di round Come i block cipher sono spesso formati da rounds Tipicamente si punta a collisioni nella funzione di round