Autenticazione dei messaggi e funzioni hash 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 Assenza di ripudio (risoluzione delle controversie) Sono usate tre principali tecniche: Cifratura di messaggio Message authentication code (MAC) Funzione hash Up till now, have been concerned with protecting message content (ie secrecy) by encrypting the message. Will now consider how to protect message integrity (ie protection from modification), as well as confirming the identity of the sender. Generically this is the problem of message authentication, and in eCommerce applications is arguably more important than secrecy.
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 The first two requirements belong in the realm of message confidentiality, and are handled using the encryption techniques already discussed. The remaining requirements belong in the realm of message authentication. At its core this addresses the issue of ensuring that a message comes from the alleged source and has not been altered. It may also address sequencing and timeliness. The use of a digital signature can also address issues of repudiation.
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
Impieghi della crittografia dei messaggi
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
Message Authentication Code
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 Can also use block cipher chaining modes to create a separate authenticator, by just sending the last block. However this suffers from being a bit too small for acceptable use today.
Data Authentication Algorithm Can also use block cipher chaining modes to create a separate authenticator, by just sending the last block. However this suffers from being a bit too small for acceptable use today.
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
Hash Functions & Digital Signatures
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à) These are the specifications for good hash functions. Essentially it must be extremely difficult to find 2 messages with the same hash, and the hash should not be related to the message in any obvious way (ie it should be a complex non-linear function of the message). There are quite a few similarities in the evolution of hash functions & block ciphers, and in the evolution of the design requirements on both.
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 The Birthday Attack exploits the birthday paradox – the chance that in a group of people two will share the same birthday – only 23 people are needed for a Pr>0.5 of this. Can generalize the problem to one wanting a matching pair from any two sets, and show need 2m/2 in each to get a matching m-bit hash. Note that creating many message variants is relatively easy, either by rewording or just varying the amount of white-space in the message.
Birthday Attacks The Birthday Attack exploits the birthday paradox – the chance that in a group of people two will share the same birthday – only 23 people are needed for a Pr>0.5 of this. Can generalize the problem to one wanting a matching pair from any two sets, and show need 2m/2 in each to get a matching m-bit hash. Note that creating many message variants is relatively easy, either by rewording or just varying the amount of white-space in the message.
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 The Birthday Attack exploits the birthday paradox – the chance that in a group of people two will share the same birthday – only 23 people are needed for a Pr>0.5 of this. Can generalize the problem to one wanting a matching pair from any two sets, and show need 2m/2 in each to get a matching m-bit hash. Note that creating many message variants is relatively easy, either by rewording or just varying the amount of white-space in the message.
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