[go: up one dir, main page]

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.