HMAC
HMAC (keyed-hash 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 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 (attualmente considerata poco sicura) e SHA-1.
Funzionamento[modifica | modifica wikitesto]
Il messaggio viene suddiviso in blocchi di lunghezza pari a j bit. Seleziono una chiave segreta K, se questa risulta essere più lunga di j bit a questa applico 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:
con M' = alla suddivisione in blocchi del messaggio M
Collegamenti esterni[modifica | modifica wikitesto]
- (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), csrc.nist.gov.
- (EN) HMAC Algorithm in Detail, cryptostuff.com.
- (EN) Python HMAC implementation, docs.python.org.