Základy kryptografie pro manažery: hashovací funkce

V tomto příspěvku se dozvíte, co jsou to hashovací funkce, k čemu se používají a jak fungují.

Hashovací funkce je jednosměrná/jednocestná/irreversibilní funkce, které můžeme jako parametr předat libovolně dlouhou zprávu a na jejím výstupu pak obdržíme tzv. hash nebo-li otisk o délce x-bitů. Důvod, proč se o této funkci hovoří jako o jednocestné, je ten, že z výstupu této funkce nejsme schopni zpětně vygenerovat vstup, který byl jejím parametrem. Jinými slovy, z hashe nelze odvodit původní zprávu.

Trocha teorie

Nejznámější a nejpoužívanější hashovací funkce jsou z rodiny SHA (Secure Hash Algorithm) a číslo za pomlčkou udává délku hashe, který tyto funkce generují, tzn. že algoritmus SHA-256 generuje hash o délce 256 bitů, SHA-384 o délce 384 bitů atd. Pro úplnost dodejme, že hashovací funkce SHA-0 a SHA-1 generují hash o délce 160 bitů a MD5 (Message-Digest algorithm 5) o délce 128 bitů. Ale dost již teorie, podívejme se raději na konkrétní příklad, kdy budeme chtít vytvořit otisk pro slovo „hash“ a „hesh“, které předáme jako parametr funkci MD5.

MD5(‘hash‘) = 0800FC577294C34E0B28AD2839435945
MD5(‘hesh‘) = AD8E9EC499F16542D9AC8873DDEF9AFE

Vidíme, že výsledkem výše uvedené funkce je hash, který je dlouhý přesně 32 znaky a pouhá změna jednoho písmene (v tomto případě záměna „a“ za „e“) způsobila vygenerování naprosto odlišného hashe. Všimněte si, že hash je reprezentován zápisem v hexadecimální (šestnáctkové soustavě), kdy nám na vyjádření jednoho znaku z množiny 0123456789ABCDEF stačí pouhé 4 bity (2^4=16). Vynásobíme-li počet znaků hashe (32) počtem bitů (4), dostaneme 128 bitů. Chtěl bych podotknout, že pokud známe délku hashe, můžeme pouze hádat, jaký algoritmus byl použit.

Praktické využití

V praxi se využívá obou vlastností hashovacích funkcí a to, že pro libovolně dlouhý text je možné vytvořit jedinečný a přitom poměrně krátký hash a dále, že z hashe nelze zjistit původní zprávu. Hashovací funkce tak lze využít pro kontrolu integrity dat a pro uložení hashů hesel. V prvním případě se pro příslušná data spočte hash a ten se uloží na bezpečné místo a v okamžiku, kdy potřebujeme ověřit, zda se daná data nezměnila, spočteme hash znovu. Pokud se hashe neshodují, je zřejmé, že integrita dat byla narušena. Ve druhém případě si uživatel zadá heslo, spočte se pro něj hash a ten je pak následně uložen v systému. Výhoda spočívá v tom, že z hashe není možné zjistit, jaké heslo si uživatel zadal.

Další případ, kdy se běžný uživatel může s otisky setkat, je např. v okamžiku, kdy stahuje nějaký SW ze serveru a ten vedle odkazu na stažení daného souboru uvádí i odpovídající hash. Pokud uživatel stahuje z nedůvěryhodného zdroje, byť by se jednalo o mirror, měl by se vždy snažit získat hash z oficiálních stránek výrobce a po stažení daného souboru ho pro daný soubor spočítat a hashe porovnat. Mohlo by se totiž stát, že ten kdo daný SW ke stažení poskytuje, do něj přidal malware (škodlivý kód) – častý to případ nejrůznějších cracknutých verzí drahých komerčních produktů v P2P sítích a internetových úložištích. (Zde navíc ani nemáte možnost hash proti čemu porovnat, protože poskytovaný soubor musí být už z principu jiný než originál.) Pokud budete kontrolu vámi vygenerovaného hashe provádět proti hashi, který jste našli na stejném serveru, ze kterého jste stahovali daný soubor nebo proti hashi, který byl uveden ve staženém archivu, je to naprosto zbytečné. Protože pokud útočník soubor pozměnil, vygeneroval k němu nejspíš i odpovídající hash.

Jiný případ je, že byste chtěli ověřit, zda nebyla pozměněna integrita souborů, které se již nachází na vašem počítači nebo serveru. Za tímto účelem se používají programy na kontrolu integrity, které on-line počítají hash pro jednotlivé soubory a porovnávají je proti již dříve vypočteným hodnotám získaných ihned po instalaci.

Poznámka: Je vhodné sledovat, které hashovací funkce se podařilo prolomit a ty již raději nepoužívat. V současné době by se již neměly používat např. algoritmy MD5 a SHA-1. Vzhledem k tomu, jak hashovací funkce fungují, může se stát, že dvě naprosto různé zprávy budou mít stejný hash. Nemělo by se to stát, ale může, a o této skutečnosti se pak hovoří jako o kolizi. Cílem autorů hashovacích funkcí tedy je, aby pravděpodobnost vzniku těchto kolizí byla co nejmenší. Pokud by bylo snadné vygenerovat dvě různé zprávy, které by měly stejný hash, mohlo by být této vlastnosti zneužito k nejrůznějším podvodům.

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: hashovací funkce” 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: