Základy kryptografie pro manažery: HMAC
HMAC (Keyed-hash Message Authentication Code) je typ autentizačního kódu zprávy (Message Authentication Code, zkr. MAC) spočteného s použitím hashovací funkce a tajného šifrovacího klíče, který slouží k ověření integrity a autenticity zprávy. Funkce, která se pro výpočet tohoto kódu používá, očekává na svém vstupu sdílené tajemství (secret shared key) a text libovolné délky. Výstupem této funkce je pak kód, který má délku odpovídající použité hashovací funkci.
Na první pohled je zde patrná určitá podobnost s digitálním podpisem. Avšak oproti digitálnímu podpisu se zde pro vygenerování i ověření kódu používá stejný klíč (symetric key), který si musí odesílatel i příjemce předem dohodnout, a tudíž zde není zajištěna neodmítnutelnost (non-repudiation), neboť každý, kdo může kód ověřit, ho může i vygenerovat.
V běžné praxi se nejčastěji setkáme s využitím hashovací funkce MD5 nebo SHA-1, pak se hovoří o HMAC-MD5 resp. HMAC-SHA1) viz RFC 2104. Délka HMAC kódu je pak v prvním případě 128 bitů a ve druhém 160 bitů. Vzhledem k tomu, že kryptografická síla kódu HMAC přímo závisí na kvalitě klíče, síle hashovací funkce, a velikosti výstupu hashovací funkce v bitech, je otázka zda funkce MD5 a SHA1 vzhledem k jejich slabinám nadále používat. Dle RFC 6151 neexistuje až na zákaz používání MD5 pro digitální podpisy důvod, proč by se tyto funkce nemohly v HMAC používat.
Na druhou stranu, pokud vyvíjíte nové řešení, doporučuji použít raději hashovací funkci SHA256 a vyšší, které jsou použity např. v IPsec, viz RFC 4868. Vlastní výpočet HMAC kódu pak probíhá podle tohoto jednoduchého vzorce:
HMAC = H(K XOR opad, H(K XOR ipad, T))
Přičemž H je zvolená hashovací funkce, K je sdílené tajemství a T je text, pro nějž se má HMAC kód spočítat. Vzhledem k tomu, že SHA256 (stejně jako MD5 a SHA1) pracuje interně s bloky o velikosti 512 bitů, musíme v případě, že je K>512, klíč nejprve prohnat hashovací funkcí, a až jeho hash použít jako K. A naopak pokud je K<512, doplníme klíč nulami.
Budeme-li generovat HMAC kód pro zprávu „Jak se do lesa volá, tak se z lesa ozývá.“ a jako klíč použijeme oblíbený řetězec „P4$$W0RD“, tak HMAC kódem bude v tomto případě následujicí řetězec o délce 64 znaků:
b7cac58a3a5b4dab0aa795c642928923400a40c5666cc710c8f9c0baacfff3e6
Poznámka: Pokud jde o opad a ipad, tak vězte, že opad je naplněn 64x bytem o hodnotě 0x36 a ipad pak 64x bytem o hodnotě 0x5c. Tyto hodnoty nedoporučuji měnit, neboť příjemce zprávy by pak nebyl schopen si zprávu ověřit.
Štítky: kryptografie
K článku “Základy kryptografie pro manažery: HMAC” se zde nenachází žádný komentář - buďte první.
Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.