HMAC
HMAC (keyed-hash message authentication code o hash-based message authentication code) è una modalità per l'autenticazione di messaggi (message authentication code) basata su una funzione di hash, utilizzata in diverse applicazioni legate alla sicurezza informatica.
Tramite HMAC è infatti possibile garantire sia l'integrità, sia l'autenticità di un messaggio. HMAC non si occupa di crittografare il messaggio: il messaggio (crittografato o meno) deve essere trasmesso insieme al codice HMAC. I destinatari che hanno una copia della chiave segreta potranno applicare l'algoritmo al messaggio ricevuto, e se il messaggio è autentico, potranno verificare che il codice ricevuto e quello calcolato da se stessi è identico. HMAC utilizza infatti una combinazione del messaggio originale e una chiave segreta per la generazione del codice.
Una caratteristica peculiare di HMAC è il non essere legato a nessuna funzione di hash in particolare, questo per rendere possibile una sostituzione della funzione nel caso non fosse abbastanza sicura. Nonostante ciò le funzioni più utilizzate sono MD5 e SHA-1, entrambe attualmente considerate poco sicure.
Funzionamento
Il messaggio viene suddiviso in blocchi di lunghezza pari a j bit. Viene poi selezionata una chiave segreta K. Se questa risulta essere più lunga di j bit, a questa viene applicata la funzione H. Quello che si ottiene è detta K', la chiave di HMAC.
- K' = K se |K| = j bit
- K' = K + padding di zeri se |K| < j bit
- K' = H(K) se |K| > j bit
- ipad = 00110110 ripetuta j/8 volte
- opad = 01011100 ripetuta j/8 volte
Una volta definita K' l'eventuale padding della chiave originale la funzione HMAC calcolerà il valore nel seguente modo:
dove
- indica una semplice concatenazione posizionale
- la suddivisione in blocchi del messaggio .
Altri progetti
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file su HMAC
Collegamenti esterni
- (EN) Denis Howe, Keyed-Hashing Message Authentication, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- (EN) RFC 2104, HMAC: Keyed-Hashing for Message Authentication
- (EN) RFC 2202, HMAC-MD5 and HMAC-SHA1 Test Vectors, HMAC-SHA1 implementation in C
- (EN) FIPS PUB 198, The Keyed-Hash Message Authentication Code (PDF), su csrc.nist.gov.
- (EN) HMAC Algorithm in Detail, su cryptostuff.com. URL consultato il 22 aprile 2006 (archiviato dall'url originale il 26 aprile 2006).
- (EN) Python HMAC implementation, su docs.python.org.
V · D · M | |
---|---|
Funzioni di hash principali | MD5 · SHA-1 · SHA-2 · SHA-3 |
Altre funzioni | GOST · HAS-160 · HAVAL · LM hash · MDC-2 · MD2 · MD4 · N-Hash · RIPEMD · RadioGatún · Snefru · Tiger · Whirlpool |
Algoritmi di MAC | DAA · CBC-MAC · HMAC · OMAC/CMAC · PMAC · UMAC · Poly1305-AES |
Attacchi | Collisione hash · Attacco del compleanno · Attacco preimmagine · Tabella arcobaleno · Attacco del canale laterale · Attacco a forza bruta |
Varie | Effetto valanga · Costruzione di Merkle-Damgård · NESSIE · NIST hash function competition |
Portale Crittografia · Progetto Crittografia · Hash crittografici · MAC |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Ambox_padlock_green.svg/25px-Ambox_padlock_green.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Gnome-system-lock-screen.svg/25px-Gnome-system-lock-screen.svg.png)