HMAC

In questo post abbiamo visto cosa si intende per MAC (Message Authentication Code) e come esso venga realizzato mediante alcune tecniche HASH.
Adesso ci soffermeremo sul progetto HMAC, il cui scopo è quello di consentire l'uso di un qualunque algoritmo di cifratura one-way per l'autenticazione dei messaggi.
Ma perchè utilizzare algoritmi HASH con scopi di autenticazione di messaggio? Perchè sono ottimizzati per la loro esecuzione a livello software e sono facilmente reperibili su Internet sottoforma di librerie.
Nonostante ciò, essi presentano una limitazione, ovvero non utilizzano una chiave segreta e quindi non possono essere direttamente utilizzati nell'ambito del MAC.
Ecco allora che proprio per sopperire a tale limitazione viene realizzato il progetto HMAC.
Esso, in sintesi, si prefigge 5 obiettivi, ovvero: 1) utilizzare, senza procedere con la loro modifica, le funzioni HASH già esistenti (soprattutto quelle caratterizzate da buone prestazioni software); 2) sostituire facilmente, in caso di necessità, la funzione HASH utilizzata con un'altra che prevede migliori prestazioni ed una maggiore robustezza; 3) preservare le prestazioni originarie HASH ; 4) gestire facilmente le chiavi segrete; 5) garantire un elevato livello di sicurezza, anche grazie alle caratteristiche intrinseche dell'algoritmo di cifratura one-way utilizzato.
I primi due punti sono garantiti dall'HMAC, poichè esso vede la funzione HASH come una scatola nera.
In questo modo, anche nel caso in cui la sicurezza della funzione di cifratura fosse compromessa, la si potrebbe sostituire facilmente.
Inoltre, il meccanismo HMAC può considerarsi sicuro nel momento in cui l'algoritmo di cifratura one-way è sicuro.
Vediamo adesso qual è il funzionamento complessivo di HMAC: dove: 1) il blocco "hash" rappresenta la funzione hash contenuta (ad esempio MD5); 2) M rappresenta il messaggio in ingresso ad HMAC; 3) L rappresenta il numero di blocchi in cui è stato suddiviso il messaggio M; 4) Yi rappresenta l'i-esimo blocco di M, con 0

Leggi tutto l'articolo