2010-07-26 18 views

risposta

16

Le implicazioni di sicurezza di HMAC sono descritte in dettaglio nella sezione di sicurezza di the RFC. In breve, è necessario un attacco molto forte prima che la sicurezza dell'HMAC sia minacciata; gli attacchi di collisione esistenti su SHA-1 non sono certamente tali. HMAC è specificamente progettato per rendere gli attacchi difficile, e attacchi di collisione ordinari non sarà generalmente sufficiente:

La sicurezza del meccanismo di autenticazione del messaggio presentato qui dipende crittografici proprietà della funzione hash H: la resistenza a collisione trovare (limitatamente al caso in cui il valore iniziale è segreto e casuali, e dove l'uscita della funzione non è esplicitamente a disposizione l'attaccante), e la proprietà di autenticazione del messaggio la funzione di compressione 012.di H quando applicata a singoli blocchi (in HMAC questi blocchi sono parzialmente sconosciuta a un utente malintenzionato quanto contengono il risultato del calcolo interno H e, in particolare, non possono essere pienamente scelti dal malintenzionato).

Consiglio di leggere l'intera sezione; va più nel dettaglio su esattamente quali attacchi sarebbe sufficiente per rompere un HMAC, e solo quanto sarebbe stato richiesto.

+0

Grazie per la tua risposta veloce :) –

0

L'attacco più forte nota contro HMAC è basato sulla frequenza delle collisioni per la funzione di hash H ("attacco di compleanno") [PV, BCK2], e è del tutto impraticabile per le funzioni di hash minimamente ragionevoli.

Ad esempio, se consideriamo una funzione hash come MD5 cui la lunghezza uscita è pari L = 16 byte (128 bit) l'attaccante deve acquisire i tag di autenticazione di messaggio corretto calcolato (con lo stesso segreto tasto K!) su circa 2 64 note in chiaro. Ciò richiederebbe l'elaborazione di almeno 2 64 blocchi sotto H, un'attività impossibile in qualsiasi scenario realistico (per una lunghezza di blocco di 64 byte ci vorranno 250.000 anni in un collegamento continuo da 1Gbps e senza cambiare il segreto chiave K durante tutto questo tempo). Questo attacco potrebbe diventare realistico solo se vengono rilevati gravi errori nel comportamento della collisione della funzione H (ad esempio, collisioni trovate dopo 2 ** 30 messaggi). Tale scoperta determinerebbe l'immediata sostituzione di della funzione H (gli effetti di tale errore sarebbero molto più gravi per gli usi tradizionali di H nel contesto di firme digitali, certificati di chiave pubblica, ecc.).

Nota: questo attacco ha bisogno di essere fortemente in contrasto con regolari attacchi collisione sulle funzioni di hash crittografico in cui nessuno chiave segreta è coinvolto e in cui 2 64 off-line parallelizzabile operazioni sufficienti a trovare collisioni (!).L'ultimo attacco si sta avvicinando alla fattibilità di [ [VW] *** mentre l'attacco di compleanno su HMAC è totalmente poco pratico. (Negli esempi precedenti, se si utilizza una funzione hash con, diciamo, 160 bit di uscita quindi 2 64 dovrebbe essere sostituito da 2 80.) *

Una corretta attuazione della costruzione sopra, la scelta di chiavi casuali (o crittograficamente pseudocasuali), un meccanismo di scambio della chiave protetta , frequenti aggiornamenti delle chiavi e buona segretezza protezione delle chiavi sono tutti ingredienti essenziali per la sicurezza dello meccanismo di verifica dell'integrità fornito da HMAC.

+14

Se hai intenzione di citare ampiamente da RFC2104, la cosa onesta da fare sarebbe ammetterlo tanto. –

2

Vedere this question per una discussione sullo stesso tema. In poche parole: gli attacchi di collisione non danneggiano direttamente HMAC. Ma l'esistenza di attacchi di collisione implica che la funzione di compressione su cui è costruita la funzione di hash non è un "oracolo casuale", e questo invalida la prova di sicurezza HMAC.