náhled|upright=1.5|Generování SHA1-HMAC HMAC (z angl. ) je typ autentizačního kódu zprávy (, MAC) počítané s použitím kryptografické hašovací funkce v kombinaci s tajným šifrovacím klíčem. Tak jako každý MAC, může být i HMAC použit jednak na ověření datové integrity a jednak na autentizaci zprávy. Na výpočet je možné použít libovolnou iterativní kryptografickou hašovací funkci jako např. MD5 či SHA-1 (v takových případech hovoříme o HMAC-MD5, resp. HMAC-SHA-1 kódu). Kryptografická síla kódu HMAC přímo závisí na síle hašovací funkce, velikosti a kvalitě klíče a velikosti výstupu hašovací funkce v bitech.

Iterativní hašovací funkce rozdělí zprávu do bloků pevné délky, na kterých postupně počítá výstup (MD5 i SHA-1 pracují nad 512bitovými bloky). Velikost výstupu HMAC kódu je stejná jako velikost výstupu hašovací funkce (tedy 128 nebo 160 bitů v případě MD5 nebo SHA-1), i když je možné ho ořezat, pokud je třeba. Takovéto zkrácení však snižuje bezpečnost kódu, která je shora ohraničena tzv. narozeninovým útokem.

HMAC je definovaný jako:

kde: je iterativní hašovací funkce, je tajný klíč zarovnaný nulami na velikost základního bloku hašovací funkce, je zpráva, nad kterou se kód počítá, označuje zřetězení, označuje exkluzivní součet vnější zarovnání (outer padding) vnitřní zarovnání (inner padding)

opad a ipad jsou dvě dlouhé konstanty o velikosti základního bloku.

Konstrukce a analýza kódů HMAC byla po poprvé publikována v roce 1996 Mihirem Bellarem, Ranem Canettim a Hugem Krawczykem, kteří též napsali příslušné RFC 2104. Varianty HMAC-SHA-1 a HMAC-MD5 se používají v protokolech IPsec a SSL/TLS.

Příklady Zde jsou některé hodnoty HMAC za předpokladu 8bitového kódování ASCII: HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 80070713463e7749b90c2dc24911e275

HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8

HMAC_SHA512("key", "The quick brown fox jumps over the lazy dog") = b42af09057bac1e2d41708e48a902e09b5ff7f12ab428a4fe86653c73dd248fb82f948a549f7b791a5b41915ee4d1ec3935357e4e2317250d0372afa2ebeeb3a

Související články MD5 SHA-1 Challenge-response Message authentication code

Reference

Externí odkazy Znění RFC 2104 Bezpečné přihlašování uživatelů (pro PHP), Jakub Vrána

Kategorie:Počítačová bezpečnost Kategorie:Kryptografické algoritmy Kategorie:Anglické zkratky