HMAC

z Wikipédie, slobodnej encyklopédie
Prejsť na: navigácia, hľadanie

Hašovaný autentifikačný kód správy alebo HMAC (z angl. keyed-hash 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:

\mathrm{HMAC}_K(m) = h\Bigg((K \oplus \mathrm{opad}) \| h\Big((K \oplus \mathrm{ipad}) \| m\Big)\Bigg),

kde h je iteratívna hašovacia funkcia, K je tajný kľúč zarovnaný nulami na veľkosť základného bloku hašovacej funkcie, m je správa, nad ktorou sa kód počíta, \| označuje zreťazenie, \oplus označuje exkluzívne alebo a vokajšie zarovnanie \mathrm{opad} = \texttt{0x5c5c5c\ldots5c5c} a vnútorné zarovnanie \mathrm{ipad} = \texttt{0x363636\ldots3636} 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.