HMAC

HMAC (z angl. keyed-hash message authentication code alibo hash-based message authentication code) je typ autentifikačného kódu správy (MAC) počítanej použitím kryptografickej hašovacej funkcie v kombinácii s tajným kľúčom. Tak ako každý MAC, môže byť aj HMAC použitý jednak na overenie dátovej integrity a jednak na autentifikáciu správy. Na výpočet je možné použiť ľubovoľnú iteratívnu kryptografickú hašovaciu funkciu ako napr. MD5 či SHA-1 (v takýchto prípadoch hovoríme o HMAC-MD5, resp. HMAC-SHA-1 kóde). Kryptografická sila kódu HMAC závisí priamo na sile hašovacej funkcie, na veľkosti a kvalite kľúča a veľkosti výstupu hašovacej funkcie v bitoch.

Iteratívna hašovacia funkcia delí správu do blokov pevnej dĺžky, na ktorých postupne počíta výstup (MD5 aj SHA-1 pracujú nad 512 bitovými blokmi). Veľkosť výstupu HMAC kódu je rovnaká ako veľkosť výstupu hašovacej funkcie (teda 128 alebo 160 bitov v prípade MD5 alebo SHA-1), aj keď je možné ho orezať, ak je treba. Takéto skrátenie však znižuje bezpečnosť kódu, ktorá je zhora ohraničená narodeninovým útokom.

HMAC je definovaný ako:

kde  je iteratívna hašovacia funkcia,  je tajný kľúč zarovnaný nulami na veľkosť základného bloku hašovacej funkcie,  je správa, nad ktorou sa kód počíta,  označuje zreťazenie,  označuje exkluzívne alebo a vonkajšie zarovnanie  a vnútorné zarovnanie  sú dve dlhé konštanty o veľkosti základného bloku.

Konštrukcia a analýza kódov HMAC bola po prvýkrát publikovaná v roku 1996 Mihirom Bellarom, Ranom Canetti a Hugom Krawczykom, ktorí tiež napísali príslušné RFC 2104. 
Varianty HMAC-SHA-1 a HMAC-MD5 sa používajú v protokoloch IPsec a SSL/TLS.

Počítačová bezpečnosť
Kryptografia
Kontrolné súčty