Hašování je proces převodu vstupu z písmen a znaků bez pevné velikosti na výstup s pevnou velikostí. Tento proces se provádí pomocí matematických vzorců, jako jsou hashovací funkce (implementované jako hashovací algoritmy).

I když ne všechny hašovací funkce využívají kryptografii, jádrem kryptoměny jsou takzvané kryptografické hašovací funkce. Díky nim mohou blockchain a další distribuované systémy dosáhnout vysoké úrovně integrity a bezpečnosti dat.

Tradiční hašovací funkce i kryptografické hašovací funkce jsou deterministické. Determinismus znamená, že pokud vstup zůstává konstantní, hashovací algoritmus vždy poskytuje stejný výstup (také nazývaný reprezentace nebo hash).

Hašovací algoritmy pro kryptoměny jsou obvykle navrženy jako jednosměrné hašovací funkce, což znamená, že je nelze snadno převést zpět, aniž by spotřebovaly mnoho výpočetního času a zdrojů. Jinými slovy, je snadné vytvořit výstup ze vstupních dat, ale není možné transformovat opačným směrem (nacházet vstupní data pouze z výstupního výsledku). Obecně platí, že čím obtížnější je najít vstupní data, tím bezpečnější je hashovací algoritmus.


Jak funguje hashovací funkce?

Různé hashovací funkce budou produkovat různě velké výstupy, ale velikost výstupů, které lze získat, je vždy pevná. Například algoritmus SHA-256 může produkovat pouze 256bitové výstupy, zatímco algoritmus SHA-1 vždy vytvoří 160bitovou reprezentaci.

Pro ilustraci proveďte slova „Binance“ a „binance“ pomocí hashového algoritmu SHA-256 (algoritmus používaný v bitcoinu).

SHA-256

Vstup

Vstup (256 bitů)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Je vidět, že malá změna (velké první písmeno) má za následek úplně jinou hash hodnotu. Protože však používáme SHA-256, výstupy mají vždy pevnou velikost 256 bitů (nebo 64 znaků) – bez ohledu na velikost vstupních dat. Tyto dva výstupy zůstávají stejné bez ohledu na to, kolikrát tato dvě slova projdeme tímto algoritmem.

Naopak, když tyto vstupy spustíme pomocí hashovacího algoritmu SHA-1, dostaneme následující výsledky:

SHA-1

Vstup

Výstup (160 bitů)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


SHA je zkratka pro Secure Hash Algorithms. Jedná se o sadu kryptografických hašovacích funkcí, včetně hašovacích funkcí SHA-0, SHA-1 a skupin hašovacích funkcí SHA-2 a SHA-3. SHA-256 patří spolu s SHA-512 a dalšími hašovacími funkcemi do skupiny hašovacích funkcí SHA-2. V současné době jsou za zabezpečené skupiny hašovacích funkcí považovány pouze skupiny SHA-2 a SHA-3.


Jaký význam má hashovací funkce?

Tradiční hashovací funkce mají mnoho případů použití, včetně vyhledávání v databázi, analýzy velkých souborů a správy dat. Na druhé straně jsou kryptografické hašovací funkce také široce používány v aplikacích pro bezpečnost informací, jako je ověřování zpráv a digitální otisky prstů. Při použití v bitcoinech jsou kryptografické hašovací funkce nezbytnou součástí procesu těžby a také přispívají ke generování nových adres a klíčů.

Hašování je skutečně mocný nástroj, pokud jde o zpracování velkého množství informací. Můžeme například spustit velký soubor nebo sadu dat pomocí hashovací funkce a poté použít výstup z nich k rychlému ověření přesnosti a integrity dat. To je možné díky deterministické povaze hashovacích funkcí: vstup vždy povede ke stručnému, zjednodušenému výstupu (hash). Díky této technice již nebude potřeba ukládat a „pamatovat si“ velké množství informací.

Hašování je zvláště užitečný proces v technologii blockchain. Bitcoinový blockchain má řadu operací, které využívají proces hashování, z nichž většina probíhá během procesu těžby. Ve skutečnosti téměř všechny kryptoměnové protokoly spoléhají na hašování, které spojuje a redukuje skupiny transakcí do bloků a také vytváří kryptografické vazby mezi jednotlivými bloky, čímž efektivně vytváří jednorázový blockchain.


Kryptografické hašovací funkce

Opět, hashovací funkce, která implementuje kryptografické techniky, může být definována jako kryptografická hashovací funkce. Obecně platí, že prolomení kryptografické hašovací funkce vyžaduje úsilí hrubou silou. Aby někdo „obnovil“ kryptografickou hashovací funkci, musel by uhodnout, jaký byl vstup metodou pokusů a omylů, dokud nebude vytvořen odpovídající výstup. Je však také možné, že různé vstupy produkují stejný výstup, což je situace známá jako „kolize“.

Technicky musí mít kryptografická hashovací funkce následující tři vlastnosti, aby byla považována za bezpečnou. Tyto tři atributy jsou antikonfliktní, protiobrazový a protisekundový obraz.

Než budeme mluvit o jednotlivých atributech, shrňme si tyto atributy.

  • Ochrana proti kolizi: dva různé vstupy nemohou vytvořit stejný hash.

  • Anti-obrazové obrácení: hash nelze „obnovit“ (vstup nelze určit na základě výstupu).

  • Anti-second image inversion: Nelze najít druhý vstup, který by byl v konfliktu s daným vstupem.


Antikonfliktní

Jak bylo popsáno, ke kolizím dochází, když různé vstupy vytvářejí stejný hash kód. Proto je hašovací funkce považována za odolnou proti kolizi, dokud někdo kolizi nenajde. Všimněte si, že kolize budou vždy existovat v jakékoli hashovací funkci, protože vstupy jsou nekonečné, zatímco možné výstupy jsou konečné.

Jinými slovy, hashovací funkce je považována za odolnou proti kolizi, když je pravděpodobnost nalezení kolize velmi nízká a nalezení kolize může trvat miliony let výpočtů. Přestože tedy žádná hašovací funkce není zcela bezkolizní, některé funkce jsou dostatečně silné, aby byly považovány za odolné proti kolizi (například SHA-256).

Mezi mnoha algoritmy SHA již nejsou skupiny SHA-0 a SHA-1 bezpečné, protože v této skupině byly nalezeny konflikty. V současné době jsou skupiny SHA-2 a SHA-3 považovány za odolné proti konfliktům.


Zabraňte manipulaci s obrázky

Antiobrazová vlastnost souvisí s konceptem jednorozměrných funkcí. Hašovací funkce je považována za antireverzní, když je pravděpodobnost nalezení vstupních dat z určitého výstupu velmi nízká.

Tento atribut se liší od prvního atributu, útočník se pomocí tohoto atributu pokusí uhodnout vstupní data na základě známého výstupního výsledku. Mezitím dojde ke kolizi, když jsou nalezena dvě různá vstupní data, která vytvářejí stejný výstup, ale nezáleží na tom, která vstupní data byla použita.

Vlastnost anti-image je důležitá pro ochranu dat, protože k prokázání její pravosti je zapotřebí pouze hash zprávy, aniž by došlo k odhalení informace. Ve skutečnosti mnoho webových aplikací a poskytovatelů služeb ukládá a používá hesla jako hash spíše než prostý text.


Anti-inverze druhého obrázku

Jednoduše řečeno, druhý antiobraz se nachází mezi prvními dvěma atributy. K druhému útoku inverze obrazu dochází, když někdo najde konkrétní vstup, který produkuje výstup, který je identický s výstupem jiného vstupu, který již zná.

Jinými slovy, druhý útok s předobrazem je o nalezení kolize, ale místo hledání dvou náhodných vstupů, které produkují stejný hash, hledají jeden vstup, který produkuje stejný hash s hashem vstupu, který již znají.

Proto jakákoli hašovací funkce, která zabraňuje kolizím, také zabraňuje útokům druhé inverze obrazu, protože druhá inverze obrazu také znamená, že ke kolizi dojde. Stále je však možné provést inverzní útok na funkci proti obrazu, protože to znamená najít jedinečný vstup na základě jedinečného výstupu.


Kopat

V bitcoinu existuje mnoho kroků, které využívají hašovací funkce pro těžbu, jako je kontrola zůstatků, propojení transakčních vstupů a výstupů a hašování transakcí v bloku za účelem vytvoření Merkleho stromu. Jedním z důvodů, proč je bitcoinový blockchain bezpečný blockchain, je to, že těžaři musí vytvářet nespočet hashů, aby nakonec našli platné řešení pro další blok.

Konkrétně musí těžař při generování hashe pro svůj potenciální blok vyzkoušet několik různých vstupů. V podstatě mohou těžaři ověřit svůj blok pouze tehdy, pokud vygenerují výstupní hash, který začíná několika nulami. Počet nul určuje obtížnost těžby a obtížnost. To se liší podle rychlosti hašování sítě.

V tomto případě hash rate představuje množství výpočetního výkonu použitého k těžbě bitcoinů. Pokud se hash rate sítě zvýší, bitcoinový protokol automaticky upraví obtížnost těžby tak, aby průměrná doba potřebná k vytěžení bloku zůstala na 10 minutách. Naopak, pokud někteří těžaři přestanou těžit, což způsobí výrazné snížení hash rate, pak se obtížnost těžby upraví, čímž se těžba usnadní (až průměrná doba těžby jednoho bloku zpět na 10 minut).

Všimněte si, že těžaři nepotřebují najít kolize, protože existuje mnoho hashů, které mohou vytvořit jako platné výstupy (počínaje určitým počtem nul). Existuje tedy několik řešení, jak těžit konkrétní blok, a těžaři stačí najít jedno z nich – podle prahu určeného obtížností těžby.

Protože těžba bitcoinů je nákladný úkol, těžaři nemají důvod systém podvádět, protože by to vedlo k významným finančním ztrátám. Čím více těžařů se připojí k blockchainu, tím silnější se blockchain stane.


Uzavřít

Lze potvrdit, že hashovací funkce jsou základními nástroji v informatice, zejména při práci s obrovskými objemy dat. V kombinaci s kryptografií lze hashovací algoritmy flexibilně používat a poskytovat zabezpečení a ověřování různými způsoby. Z tohoto důvodu jsou kryptografické hashovací funkce pro většinu kryptoměnových sítí nezbytné, takže pochopení jejich vlastností a pracovních mechanismů bude pro zájemce o technologii blockchain jistě přínosem.