Co je hash a proč je všude v technologiích?
Pravděpodobně jste viděli řetězce jako tento:
e3b0c44298fc1c149afbf4c8996fb924
27ae41e4649b934ca495991b7852b855
Objevují se u stahování softwaru („ověřte hash SHA-256"), v diskuzích o blockchainu, v diskuzích o bezpečnosti hesel a v nesčetných vývojářských nástrojích. Ale co vlastně hash je a proč je tak zásadní pro moderní technologie?
Koncept srozumitelně
Hašovací funkce vezme libovolný vstup — slovo, větu, celý soubor — a produkuje výstup pevné délky nazývaný hodnota hashe (také digest, kontrolní součet nebo otisk). Klíčové vlastnosti jsou:
- Deterministická. Stejný vstup vždy produkuje stejný výstup.
- Pevná délka. Bez ohledu na velikost vstupu je výstup vždy stejně velký.
- Jednosměrná. Z výstupu hashe nelze rekonstruovat původní vstup.
- Lavinový efekt. Malá změna vstupu produkuje zcela jiný hash.
Přemýšlejte o tom jako o otisku prstu pro data. Stejně jako váš otisk prstu vás jedinečně identifikuje, ale nelze z něj rekonstruovat váš obličej, hash jedinečně identifikuje část dat, ale nelze z něj rekonstruovat originál.
Jednoduchý příklad
Zde je, co hašovací funkce SHA-256 udělá se dvěma velmi podobnými vstupy:
| Vstup | Hash SHA-256 (prvních 16 znaků) |
|---|---|
| „Hello" | 185f8db32271fe25... |
| „hello" | 2cf24dba5fb0a30e... |
| „hello!" | ce06092fb948d9ff... |
Změna jediného znaku (velké H na malé h) nebo přidání vykřičníku produkuje zcela jiný hash. Neexistuje žádný vzor, žádný předvídatelný vztah. To je lavinový efekt v akci.
Věděli jste? Hash SHA-256 prázdného vstupu (doslova nic) je e3b0c44298fc1c14.... Jde o dobře známou konstantu. Každá implementace SHA-256 na světě produkuje pro prázdný vstup přesně tento výstup.
Běžné hašovací algoritmy
MD5
- Výstup: 128 bitů (32 hexadecimálních znaků)
- Stav: Pro bezpečnostní účely prolomen. Kolize (různé vstupy produkující stejný hash) lze generovat během sekund.
- Stále se používá pro: Kontroly integrity souborů, kde bezpečnost není problémem (např. ověření, že stahování nebylo poškozeno).
SHA-1
- Výstup: 160 bitů (40 hexadecimálních znaků)
- Stav: Pro bezpečnost zastaralý. Kolize byly prokázány.
- Stále se používá pro: Starší systémy, identifikátory commitů v Gitu.
SHA-256
- Výstup: 256 bitů (64 hexadecimálních znaků)
- Stav: Aktuální standard. Žádné známé praktické útoky.
- Používá se pro: Ukládání hesel, digitální podpisy, blockchain, ověřování souborů, certifikáty TLS.
SHA-512
- Výstup: 512 bitů (128 hexadecimálních znaků)
- Stav: Aktuální standard. Ještě větší bezpečnostní rezerva než SHA-256.
- Používá se pro: Vysoce bezpečné aplikace, některé schémata hašování hesel.
Varování MD5 a SHA-1 by nikdy neměly být používány pro bezpečnostní účely (hesla, digitální podpisy, certifikáty). Jsou kryptograficky prolomeny. Pro cokoli bezpečnostně relevantního používejte SHA-256 nebo SHA-512.
Kde se hashe používají
Ukládání hesel
Když si vytvoříte účet, web neukládá (nebo by neměl ukládat) vaše skutečné heslo. Místo toho ukládá hash vašeho hesla. Při přihlášení systém zahashuje heslo, které zadáte, a porovná ho s uloženým hashem. Pokud se shodují, jste vpuštěni.
To znamená, že i kdyby byla databáze prolomena, útočníci získají hashe, ne hesla. Nemohou hash obrátit a zjistit vaše heslo (i když mohou zkusit hádat hašováním běžných hesel a porovnáváním).
Moderní hašování hesel jde dále pomocí algoritmů jako bcrypt, scrypt a Argon2, které přidávají sůl (náhodná data) a jsou záměrně pomalé, aby bylo brute-force hádání nepraktické.
Ověřování souborů
Když stahujete software, web často poskytuje hash SHA-256 souboru. Po stažení zahashujete soubor sami a porovnáte. Pokud se hashe shodují, soubor je přesně to, co vydavatel zamýšlel. Pokud se liší, soubor byl při stahování poškozen nebo s ním bylo manipulováno.
Očekávaný: a1b2c3d4e5f6...
Váš soubor: a1b2c3d4e5f6... ✓ Shoda — soubor je autentický
Blockchain a kryptoměny
Každý blok v blockchainu obsahuje hash předchozího bloku, čímž vytváří nezlomitelný řetězec. Pokud se někdo pokusí změnit minulou transakci, hash tohoto bloku se změní, což přeruší řetězec od tohoto bodu vpřed, čímž je manipulace okamžitě detekovatelná.
Těžba Bitcoinu je v podstatě soutěž o nalezení vstupu, který produkuje hash SHA-256 začínající určitým počtem nul.
Digitální podpisy
Když digitálně podepíšete dokument, ve skutečnosti nešifrujete celý dokument svým soukromým klíčem. Místo toho je dokument zahashován a hash je šifrován. To je mnohem rychlejší a produkuje kompaktní podpis.
Deduplikace dat
Cloudové úložiště používá hashe k detekci duplicitních souborů. Pokud dva uživatelé nahrají stejný soubor, má stejný hash a služba potřebuje ukládat pouze jednu kopii.
Verzovací systém Git
Každý commit, soubor a strom v Gitu je identifikován svým hashem SHA-1. Takto Git ví, zda se soubor změnil, a jak sleduje celou historii projektu.
Věděli jste? Git postupně migruje ze SHA-1 na SHA-256. Přechod byl zahájen, protože kolize SHA-1 byly prokázány v roce 2017, teoreticky umožňující vytvoření dvou různých commitů se stejným identifikátorem.
Problém nevratnosti (a proč na tom záleží)
Jednosměrná povaha hashů je zároveň jejich největší silou i častým zdrojem zmatení.
Hash nelze „dešifrovat." Hash není šifrování. Šifrování je obousměrné: šifrovat klíčem, dešifrovat klíčem. Hašování je jednosměrné: lze vypočítat hash ze vstupu, ale nelze vypočítat vstup z hashe.
Jediný způsob, jak hash „obrátit," je hádat původní vstup, zahashovat svůj odhad a zkontrolovat, zda se shoduje. Pro krátké, jednoduché vstupy (jako běžná hesla) je to proveditelné. Pro dlouhé, náhodné vstupy je to výpočetně nemožné.
Proto je délka hesla tak důležitá. Hash „heslo123" lze najít zkoušením běžných hesel. Hash „j8#kL9$mN2@pQ5&" by trvalo déle než stáří vesmíru hádat.
Vyzkoušejte sami
Nejlepší způsob, jak pochopit hashe, je experimentovat. Zahashujte slovo, pak změňte jeden znak a sledujte, jak se výstup úplně změní. Zahashujte soubor před a po úpravě a sledujte rozdíl.
Tip Generujte a ověřujte hashe libovolného textu nebo souboru: Jak generovat a ověřovat hashe. Vyzkoušejte SHA-256, MD5, SHA-512 a další — okamžitě, zdarma, v prohlížeči.
Prozkoumejte hashe na vlastní kůži:
Zdarma, okamžitě a bez nutnosti registrace.