Hašování se týká procesu vytváření výstupu s pevnou velikostí ze vstupu s proměnnou velikostí. To se provádí pomocí matematických vzorců známých jako hashovací funkce (implementované jako hashovací algoritmy).

Ačkoli ne všechny hashovací funkce využívají kryptografii, jádrem digitálních měn jsou takzvané kryptografické hashovací funkce. Díky nim jsou blockchain a další distribuované systémy schopny dosáhnout významné úrovně integrity a bezpečnosti dat.

Tradiční i kryptografické hashovací funkce jsou deterministické. Význam toho, že je deterministický, je, že pokud se vstup(y) nezmění, bude hashovací algoritmus vždy produkovat stejný výstup (také známý jako Digest nebo Hash).

Algoritmy hašování kryptoměn jsou obvykle navrženy jako jednosměrné funkce, což znamená, že je nelze snadno vrátit zpět bez značného množství času a výpočetních zdrojů. Jinými slovy, je velmi snadné získat výstupy ze vstupů, ale relativně obtížné udělat opak (získat vstupy pouze z výstupů). Obecně platí, že čím obtížnější je najít vstup, tím bezpečnější je hashovací algoritmus.


Jak fungují hashovací funkce?

Různé hashovací funkce produkují výstupy různých velikostí, ale možné výstupní velikosti pro každý hashovací algoritmus jsou vždy pevné. Například SHA-256 může vytvořit výstup pouze 256 bitů, zatímco SHA-1 vždy generuje 160bitový výtah.

Pro ilustraci proveďte slova „Binance“ a „binance“ pomocí hashovacího algoritmu SHA-256 (který se používá v bitcoinech).

SHA-256

Vstup

Výstup (256 bitů)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Všimněte si, že malá změna (ve formě prvního písmene) měla za následek úplně jinou hodnotu hash. Ale protože používáme SHA-256, výstup bude mít vždy pevnou velikost 256 bitů (nebo 64 znaků) bez ohledu na velikost vstupu. Nezáleží také na tom, kolikrát projdeme tato dvě slova algoritmem, protože dva výstupy zůstanou konstantní.

Naopak, pokud spustíme stejný vstup pomocí algoritmu hash SHA-1, dostaneme následující výsledky:

SHA-1

Vstup

Výstup (160 bitů)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Stojí za zmínku, že slovo SHA je zkratka pro Secure Hash Algorithms. Odkazuje na sadu kryptografických hašovacích funkcí, která zahrnuje algoritmy SHA-0 a SHA-1 spolu s kombinacemi SHA-2 a SHA-3. SHA-256 je součástí sady SHA-2 spolu s SHA-512 a dalšími variantami. V současné době jsou za bezpečné považovány pouze bloky SHA-2 a SHA-3.


Proč je to důležité?

Tradiční hashovací funkce mají širokou škálu případů použití, včetně prohledávání databáze, analýzy velkých souborů a správy dat. Na druhé straně kryptografické hašovací funkce jsou široce používány v aplikacích informační bezpečnosti, jako je ověřování zpráv a digitální otisky prstů. Pro bitcoiny jsou kryptografické hashe nezbytnou součástí procesu těžby a hrají také roli při generování nových adres a klíčů.

Skutečná síla segmentace přichází při práci s obrovským množstvím informací. Například velký soubor nebo datovou sadu lze spustit pomocí hašovací funkce a poté použít její výstup k rychlému ověření přesnosti a integrity dat. To je možné díky deterministické povaze hašovacích funkcí: vstupy vždy vedou ke zjednodušeným, zhuštěným (hashovacím) výstupům. Tato technologie eliminuje potřebu ukládat a pamatovat si velké množství dat.

Hašování je užitečné zejména v souvislosti s technologií blockchain. Bitcoinový blockchain obsahuje mnoho operací, které zahrnují hašování, z nichž většina je v procesu těžby. Ve skutečnosti téměř všechny kryptoměnové protokoly spoléhají na hašování, které propojuje sady transakcí a zhušťuje je do bloků. A také k vytvoření kryptografických vazeb mezi každým blokem, čímž se efektivně vytvoří blockchain.


Kryptografické hašovací funkce

Opět, hashovací funkce, která používá kryptografické techniky, může být definována jako kryptografická hashovací funkce. Hacknutí kryptografické hašovací funkce vyžaduje bezpočet útoků hrubou silou. Aby byla hašovací funkce invertována, musí hádat, jaký byl vstup metodou pokusů a omylů, dokud není vytvořen odpovídající výstup. Ale je také možné, aby různé vstupy produkovaly stejný výstup, v takovém případě dojde ke „kolizi“.

Technicky musí mít kryptografická hashovací funkce tři vlastnosti, aby byla považována za efektivně bezpečnou. Tyto vlastnosti můžeme popsat jako: odolnost proti kolizi, odolnost proti předobrazu a odolnost proti druhému předobrazu.

Než budeme diskutovat o každé vlastnosti, shrňme jejich úvahy do tří krátkých vět.

  • Odolnost proti kolizi: Není možné najít žádné dva různé vstupy, které produkují stejný hash jako výstup.

  • Odpor předobrazu: Hašovací funkci nelze „invertovat“ (najít vstupy z daných výstupů).

  • Odpor druhého předobrazu: Nebyl nalezen žádný druhý vstup, který by kolidoval s jiným specifikovaným vstupem.


Odolnost proti kolizi

Jak již bylo zmíněno, ke kolizi dochází, když různé vstupy vytvářejí přesně stejný hash. Hašovací funkce je tedy odolná proti kolizi až do okamžiku, kdy někdo kolizi najde. Všimněte si, že kolize budou vždy existovat pro jakoukoli hašovací funkci, protože možné vstupy jsou nekonečné, zatímco možné výstupy jsou konečné.

Jinými slovy, hashovací funkce je odolná proti kolizi, když je pravděpodobnost nalezení kolize tak nízká, že by to vyžadovalo miliony let výpočtu. Přestože tedy neexistují žádné hašovací funkce bez kolizí, některé jsou dostatečně silné, aby byly považovány za odolné (např. SHA-256).

Mezi různými algoritmy SHA kombinace SHA-0 a SHA-1 již nejsou bezpečné kvůli kolizím. Bloky SHA-2 a SHA-3 jsou v současnosti považovány za odolné proti kolizi.


Odolnost předobrazu

Vlastnost odporu předobrazu souvisí s konceptem jednosměrných funkcí. Hašovací funkce je považována za rezistentní vůči předobrazu, když je velmi nízká pravděpodobnost, že někdo najde vstup, který vytváří konkrétní výstup.

Mějte na paměti, že tato funkce se liší od předchozí, protože útočník se pokusí uhodnout, jaký byl vstup tím, že se podívá na určité výstupy. Na druhou stranu ke kolizi dochází, když někdo najde různé vstupy, které generují stejný výstup, ale nezáleží na tom, který vstup byl použit.

Odolnost předobrazu je cenná v ochraně dat, protože jednoduchý hash zprávy může prokázat její pravost, aniž by bylo nutné odhalit jakékoli informace. V praxi mnoho poskytovatelů služeb a webových aplikací ukládá a používá hashe generované z hesel spíše než hesel v prostém textu.


Odolnost proti druhému předobrazu

Pro zjednodušení můžeme říci, že odolnost druhého předobrazu spadá někde mezi ostatní předchozí vlastnosti. K útoku druhého předobrazu dochází, když někdo najde konkrétní vstup, který generuje stejný výstup jako jiný vstup, který již zná.

Jinými slovy, útok druhého předobrazu zahrnuje nalezení kolize, ale místo hledání dvou náhodných vstupů, které generují stejný hash jako výstup, hledají vstup, který generuje stejný hash, který byl vygenerován jiným specifickým vstupem.

Proto každá hašovací funkce, která je odolná proti kolizi, je také odolná vůči útokům druhého předobrazu, protože ty budou vždy znamenat kolizi. Útočníci však stále mohou provést časný útok na funkci odolnou proti kolizi, protože to zahrnuje nalezení jednoho vstupu z jednoho výstupu.


Hornictví

V procesu těžby bitcoinů existuje několik kroků, které obsahují hašovací funkce, jako je ověřování zůstatků, propojení vstupů a výstupů s transakcemi a hašování transakcí v rámci bloku za účelem vytvoření Merkleho stromu. Ale jedním z hlavních důvodů, proč je bitcoinový blockchain bezpečný, je skutečnost, že těžaři potřebují nespočet hashů, aby našli platné řešení pro další blok.

Konkrétně musí těžař vyzkoušet několik různých vstupů při generování hodnoty hash pro svůj kandidátský blok. V podstatě budou moci ověřit svůj blok pouze tehdy, pokud vygenerují výsledný hash, který začíná určitým počtem nul. Počet nul určuje obtížnost těžby a mění se podle hash rate přiděleného síti.

V tomto případě hash rate představuje množství výpočetního výkonu, který je investován do těžby bitcoinů. Pokud se hash rate sítě zvýší, bitcoinový protokol automaticky upraví obtížnost těžby tak, aby průměrná doba těžby bloku zůstala blízko 10 minutám. Na druhou stranu, pokud se mnoho těžařů rozhodne těžbu ukončit, což povede k výraznému poklesu hash rate, upraví se obtížnost těžby, což usnadní proces těžby (dokud se průměrná doba těžby bloku nevrátí na 10 minut).

Všimněte si, že těžaři nemusí najít kolize, protože existuje pouze tolik hashů, které mohou generovat jako platné výstupy (počínaje určitým počtem nul). Možných řešení pro daný blok je tedy mnoho a těžaři nemusí najít jedno z nich podle začátku určeného obtížností těžby.

Vzhledem k tomu, že těžba bitcoinů je velmi drahá, těžaři nemají důvod systém podvádět, protože to povede k významným finančním ztrátám. Čím více těžařů se k blockchainu připojí, tím silnější se stane.


Závěrečné myšlenky

Není pochyb o tom, že hashovací funkce jsou základními nástroji v informatice, zejména při práci s velkým množstvím dat. Hashovací algoritmy mohou být všestranné v kombinaci s kryptografií, poskytující bezpečnost a ověřování mnoha různými způsoby. Jako takové jsou kryptografické hašovací funkce extrémně důležité pro téměř všechny sítě kryptoměn. Pochopení jeho vlastností a pracovních mechanismů je proto rozhodně užitečné pro každého, kdo se o technologii blockchain zajímá.