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 příspěvek zaujal, sdílejte ho!
Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page

Š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: