# Co je vlastně SHA-256

> Cuadernos Lacre · Koncept · 19. května 2026
> https://solo2.net/cs/sesity/articulos/co-je-to-vlastne-sha-256.html

Matematický otisk, který se vejde do šedesáti čtyř znaků a který se celý změní, pokud se v původním textu pohne byť jen jediná čárka. Proč mu říkáme digitální pečetní vosk.

---

## Jednoduchá myšlenka za technickým názvem

Představte si, že existuje stroj s jednou štěrbinou a jednou obrazovkou. Štěrbinou vložíte text: slovo, větu, celý román. Na obrazovce se po chvíli objeví sekvence přesně šedesáti čtyř znaků. Této sekvenci my profesionálové říkáme *hash* nebo *kryptografický souhrn*; pro běžného čtenáře ji zatím můžeme nazývat matematickým otiskem textu, podobně jako je otisk prstu otiskem člověka.

Pokud vložíte stejný text dvakrát, stroj pokaždé ukáže stejný otisk. Pokud vložíte text jen mírně odlišný —jedna posunutá čárka, velké písmeno změněné na malé— stroj ukáže otisk zcela odlišný od toho prvního. Ne podobný, ale odlišný. Tyto dvě vlastnosti dohromady —determinismus a citlivost— tvoří onu jednoduchou myšlenku. Vše ostatní u SHA-256 je jen mechanismus, který zajišťuje jejich správné fungování.

Je dobré hned na začátku říci, co stroj nedělá. Nešifruje text. Neskrývá ho. Neukládá ho. Stroj se na text podívá, vypočítá otisk a text zapomene. Otisk neumožňuje rekonstruovat text, který jej vytvořil; umožňuje pouze u kandidátního textu ověřit, zda se shoduje s originálem či nikoli. Proto říkáme, že jde o *jednosměrný* souhrn: cesta vede tam, ale ne zpět.

## Hash není totéž co šifrování

Záměna je častá a je dobré ji vyjasnit: šifrování a hashování jsou odlišné operace. Šifrování spočívá v transformaci textu tak, aby jej pouze držitel klíče mohl vrátit do původní podoby. Hashování spočívá ve vytvoření otisku textu, ze kterého nelze původní text nikdy získat zpět, a to ani s klíčem, ani bez něj. První je z principu vratné; druhé je z principu nevratné.

Praktický důsledek je důležitý. Když aplikace říká „vaše heslo ukládáme šifrované“, existuje někdo, kdo má klíč k jeho dešifrování — v každém případě samotná aplikace. Když aplikace říká „vaše heslo ukládáme hashované“, samotná aplikace nemůže původní heslo přečíst, i kdyby chtěla; může pouze ověřit, zda to, co napíšete, znovu vytvoří stejný otisk. Druhý model, je-li proveden správně, je pro ukládání hesel mnohem vhodnější. Později uvidíme, proč „správně provedený“ vyžaduje víc než jen samotné SHA-256.

## Čtyři vlastnosti, díky kterým je kryptografický hash užitečný

Hashovací funkce, která si zaslouží přívlastek *kryptografická*, splňuje čtyři vlastnosti:

1. Determinismus. Stejný vstup vždy vytvoří stejný otisk.
2. Lavinový efekt. Malá změna na vstupu vytvoří zcela odlišný otisk bez viditelné podobnosti s předchozím.
3. Odolnost proti inverzi. Na základě otisku není výpočetně proveditelné najít text, který jej vytvořil.
4. Odolnost proti kolizím. Není výpočetně proveditelné najít dva různé texty, které by vytvořily stejný otisk.

„Není výpočetně proveditelné“ neznamená „je matematicky nemožné“. Znamená to, že náklady v čase, energii a penězích na dosažení cíle o řády převyšují součet veškeré rozumně dostupné výpočetní kapacity. U SHA-256 se tato hranice měří v tisících miliard let i pro ty nejoptimističtější scénáře se specializovaným hardwarem. Což je pro praktické účely čtenáře totéž jako „nelze“.

## Konkrétně SHA-256

Název mluví za vše. SHA je zkratka pro *Secure Hash Algorithm*: algoritmus pro bezpečný hash. Číslo 256 udává velikost otisku v bitech: dvě stě padesát šest bitů, tedy třicet dva bajtů, které zobrazeny v šestnáctkové soustavě tvoří oněch šedesát čtyři znaků, které čtenář již zná. Standard publikoval americký NIST, orgán, který tyto funkce normalizuje, v roce 2001 jako součást rodiny SHA-2; současná verze standardu, FIPS 180-4, je z roku 2015.

Rozměry si zaslouží chvilku pozornosti. Dvě stě padesát šest bitů umožňuje dvě na dvě stě padesátou šestou různých hodnot: číslo se sedmdesáti osmi desítkovými ciframi, o několik řádů větší než odhadovaný počet atomů v pozorovatelném vesmíru. Každý text na světě —každá kniha, každý e-mail, každá zpráva— připadne na jednu z těchto hodnot. Pravděpodobnost, že by se dva různé texty shodovaly náhodou, je pro praktické účely nerozeznatelná od nuly.

## Jak to vypadá v kódu

## Proč mu říkáme pečetní vosk

V evropské korespondenci patnáctého až devatenáctého století listinu uzavíral pečetní vosk. Kapka roztaveného vosku, na ni přitisknuté pečetidlo a dopis byl označen neopakovatelným způsobem. Nechránilo to obsah před odhodlaným slídilem —papír se dal přečíst proti světlu, vosk se dal rozlomit— ale dalo to zásah jasně najevo. Jakákoli změna uzávěru byla pro příjemce viditelná ještě před otevřením listu. Vosk nezabránil poškození; dával ho najevo.

SHA-256 těla každého Cuaderno plní v digitální verzi stejnou funkci. Pokud by se v článku změnilo jediné slovo mezi okamžikem publikace a okamžikem, kdy jej čtete, šestnáctková pečeť na konci textu by již nesouhlasila s SHA-256 textu, který máte před sebou. Každý čtenář s pěti řádky kódu by si to mohl ověřit. Publikace nemůže přepsat svou historii, aniž by ji pečeť prozradila. Nechrání před poškozením; činí jej ověřitelným.

## Co hash není

Od SHA-256 jsou někdy vyžadována čtyři použití, která mu nepřísluší:

1. Šifrování. Hash shrnuje; neskrývá. Pokud chcete, aby text nebyl čitelný, musíte jej zašifrovat, nikoli zahashovat.
2. Autentizace autora. Hash neříká, kdo text napsal, pouze jaký text byl zahashován. K přiřazení autorství je potřeba kryptografický podpis nad hashem, nikoli samotný hash.
3. Ukládání hesel. Zde je past, kterou je dobré pochopit. SHA-256 je navržen tak, aby byl velmi rychlý —což je pro mnoho věcí dobré, ale pro tuto špatné. Útočník se specializovaným hardwarem může proti hashi SHA-256 vyzkoušet miliardy hesel za sekundu, dokud nenajde to vaše. Pro ukládání hesel je třeba používat záměrně pomalé funkce pro derivaci klíče jako Argon2, scrypt nebo bcrypt v kombinaci se *solí* (náhodný údaj unikátní pro každého uživatele, který zabrání tomu, aby dva lidé se stejným heslem měli stejný hash).
4. Čtení hashe jako identifikátoru autora. Tím není. Hash identifikuje obsah. Pokud dva lidé zahashují slovo *ahoj* pomocí SHA-256, oba získají stejný souhrn — a to je ústřední vlastnost, nikoli vada: pokud by souhrny byly různé, nemohli bychom ověřit shodu mezi publikovaným a přijatým.

## Kde se SHA-256 objevuje ve vašem každodenním životě

I když to nevidíte, SHA-256 zajišťuje velkou část toho, co na internetu denně používáte. Blockchain Bitcoinu je postaven na řetězení SHA-256 každého bloku k následujícímu; změna minulého bloku vyžaduje přepočítání celého následného řetězce. Git, systém, ve kterém se verzuje kód poloviny světa, identifikuje každé potvrzení (commit) pomocí SHA-256 (v novějších verzích) nebo jeho předchůdce SHA-1 (ve starších verzích) jeho kompletního obsahu. Certifikáty HTTPS, které ověřují identitu webu při vstupu, mají přidružený otisk SHA-256. Stažené programy jsou často doprovázeny hashem SHA-256 publikovaným vývojářem, abyste si mohli ověřit, že soubor nebyl cestou změněn. A jak jsme řekli, na konci každého Cuadernos Lacre.

## Pro profesionálního čtenáře

Čtyři provozní připomínky pro ty, kteří rozhodují o systémech nebo je auditují:

1. Hash není šifrování. Pokud dodavatel ve své technické dokumentaci zaměňuje tyto dva termíny, je dobré se zeptat, co přesně tím myslí.
2. K ukládání hesel by se nikdy nemělo používat samotné SHA-256. SHA-256 je pro tento úkol příliš rychlé (viz bod 3 sekce *Co hash není*). Současným standardem je Argon2id: pomalý z principu, konfigurovatelný podle kapacity serveru, v kombinaci s různou náhodnou *solí* pro každého uživatele.
3. Pro integritu dokumentů —smluv, spisů, souborů— zůstává SHA-256 referenčním standardem. Používají jej kvalifikovaní poskytovatelé služeb vytváření časových razítek v EU.
4. Pro dlouhodobé uchovávání (desetiletí) je vhodné vypočítat a archivovat také SHA-3 nebo SHA-512 společně s SHA-256; kryptografická obezřetnost doporučuje nespoléhat se při stoleté archivaci na jedinou funkci.

Představte si, že jste sestavili nejpropracovanější domino dráhu na světě: tisíce kostek, desítky odboček, mechanické mosty a rampy křižující celou místnost, pečlivě umístěné kostku po kostce.

Pokud cvrnknete do první kostky, řetězec padá v přesném a opakovatelném pořadí. Stejná sestava, stejný počáteční impuls → identický výsledný vzor spadlých kostek, znovu a znovu.

Tady je to zajímavé: posuňte jedinou kostku o půl centimetru stranou, než začnete, a znovu cvrnkněte. Rampa, která se měla aktivovat, zůstane nehybná, most nespadne, spustí se úplně jiná odbočka. Výsledný vzor kostek na zemi je ve srovnání s tím prvním naprosto k nerozeznání.

SHA-256 je matematicky tato dráha. Text, který napíšete, je počáteční poloha kostek. Algoritmus je impuls, který uvolní kaskádu. A konečný výsledek — to, čemu říkáme *hash* — je statický snímek podlahy, když se vše zastavilo. Změňte jedinou čárku v původním textu a snímek bude radikálně odlišný. Tak jednoduché a tak drastické.

---

*Pokud se vrátíte na konec tohoto článku, uvidíte šedesátičtyřmístnou šestnáctkovou pečeť. Je to SHA-256 textu, který jste právě dočetli, v tomto jazyce. Pokud bychom článek přeložili, pečeť by byla jiná; pokud by se v české verzi změnilo jediné slovo, česká pečeť by se změnila. Pečeť nechrání obsah —k tomu slouží jiné nástroje— ale jednoznačně jej identifikuje. A to, jakkoli skromně to zní, stačí k tomu, aby žádný krok v redakčním řetězci nemohl změnit řečené, aniž by si toho někdo všiml. Vše ostatní —šifrování, podepisování, identifikace— se staví na této jednoduché myšlence.*

## Zdroje a další čtení

- NIST — *FIPS PUB 180-4: Secure Hash Standard (SHS)*, srpen 2015. Oficiální specifikace rodiny SHA-2, včetně SHA-256.
- RFC 6234 — *US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)*, IETF, květen 2011. Normativní verze pro implementátory.
- Ferguson, N.; Schneier, B.; Kohno, T. — *Cryptography Engineering: Design Principles and Practical Applications* (Wiley, 2010). Kapitoly 5 a 6 se zabývají hashovacími funkcemi a jejich legitimním a nelegitimním použitím.
- Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktický příklad použití SHA-256 k řetězení bloků v neměnné struktuře.
- Nařízení (EU) 910/2014 (eIDAS) — rámec pro kvalifikovaná časová razítka. SHA-256 je referenční funkcí pro kvalifikované elektronické podpisy a pečetě vydávané v EU.
- Referenční implementace v jazyce Zig: std.crypto.hash.sha2.Sha256 v oficiálním repozitáři jazyka (*github.com/ziglang/zig* → lib/std/crypto/sha2.zig). Jde o optimalizovanou a auditovanou verzi, kterou Solo2 skutečně používá. Užitečné pro srovnání s didaktickou implementací v dodatku.

---

*Cuadernos Lacre · Publikace Menzuri Gestión S.L. · napsal R.Eugenio · rediguje tým Solo2.*
*https://solo2.net/cs/sesity/*
