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.

Pokud vás tento článek zaujal, můžete odkaz na něj sdílet.

Štítky:


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.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: