Approfondimento III: Autenticazione con HMAC e MD5.

I codici di autenticazione di messaggi (MAC) vengono utilizzati tra due parti che condividono una chiave segreta al fine di autenticare informazioni trasmesse fra le due parti stesse. Il meccanismo del MAC che fa uso di funzioni hash è conosciuto come HMAC. Esaminiamo l’HMAC-MD5 che fa uso della funzione hash MD5. In genere un HMAC prescinde dall’utilizzo di una determinata funzione hash ma generalmente le più utilizzate sono MD5 e SHA-1. Recentemente si è visto che MD5 risulta vulnerabile ad alcuni attacchi per la ricerca di collisioni ma può essere comunque usata perché non influisce sull’intero meccanismo di autenticazione.

Chiavi

La chiave è utilizzata come componente segreta tra due parti comunicanti. Non si tratta di una chiave crittografica bensì di una chiave che viene inclusa nel processo di hashing dei dati che devono essere trasmessi ed assicura che una parte che interviene dall’esterno non possa duplicare le informazioni sull’autenticazione (in quanto non è a conoscenza della chiave).

Dobbiamo considerare che l’algoritmo e la maggior parte dei dati usati per produrre l’output sono noti. La forza del processo di trasformazione sta nella mappatura della chiave (che deve essere forte) e del datagramma IP (che è conosciuto) nei dati di autenticazione. Perciò le implementazioni dovrebbero, il più frequentemente possibile, cambiare la chiave. Le chiavi sono scelte a caso o generate usando un generatore di numeri pseudo-casuali crittograficamente forte. Tutte le implementazioni devono supportare chiavi di lunghezza fino a 128 bit e dovrebbero anche supportare chiavi di lunghezza maggiore. È consigliabile usare una chiave di lunghezza pari alla lunghezza dell’output (128 bit per MD5). MD5 genera un valore di 128 bit che viene utilizzato come authentication data. È  naturalmente allineato a 64 bit e quindi non c’è bisogno di padding per macchine che lavorano su parole doppie.

 

Considerazioni sulla sicurezza

La sicurezza fornita da questa tecnica è basata sulla forza dell’MD5, sulla correttezza dell’implementazione dell’algoritmo, sulla sicurezza del meccanismo di gestione delle chiavi e sulla correttezza delle implementazioni su tutti i sistemi partecipanti.

Il più forte attacco conosciuto contro HMAC si basa sulla frequenza delle collisioni per la funzione hash utilizzata (attacco del compleanno). Se consideriamo la funzione MD5 dove la lunghezza dell’output è di 128 bit il nemico dovrebbe acquisire informazioni sull’autenticazione del messaggio (authentication data) studiando circa 264 testi in chiaro (con la stessa chiave K!). Questo significherebbe computare almeno 264 blocchi con la funzione hash, compito attualmente impossibile.