Zpracování hash se týká procesu generování výstupu s pevnou velikostí ze vstupu různé velikosti. To se provádí pomocí matematického vzorce známého jako hašovací funkce (implementovaná jako hašovací algoritmus).
I když ne všechny hašovací funkce souvisejí s používáním kryptografie, ty známé jako kryptografické hašovací funkce jsou jádrem kryptoměn. Díky tomu jsou blockchain a další distribuované systémy schopny dosáhnout významné úrovně integrity a zabezpečení dat.
Konvenční hashovací funkce a kryptografické hashe jsou stejné: deterministické. Být deterministický znamená, že dokud se vstup nezmění, bude hashovací algoritmus vždy produkovat stejný výstup (jinak známý jako výtah nebo hash).
Zejména hashovací algoritmus kryptoměn je navržen jako jednosměrná funkce, což znamená, že jej nelze snadno zvrátit bez enormního výpočetního času a zdrojů. Jinými slovy, je velmi snadné vyrobit výstup ze vstupu, ale relativně obtížné udělat opak (generovat vstup pouze z výstupu). Obecně platí, že čím obtížnější je najít vstup, tím bezpečnější bude hashovací algoritmus.
Jak funguje hashovací funkce?
Různé hašovací funkce vytvoří výstupy různých velikostí, ale možná velikost výstupu každého hašovacího algoritmu je vždy konstantní. Například algoritmus SHA-256 vytvoří pouze 256bitový výstup, zatímco algoritmus SHA-1 vždy vytvoří 160bitový výtah.
Abychom to ilustrovali, proveďte slova „Binance“ a „binance“ pomocí hashovacího algoritmu SHA-256 (který se používá v bitcoinech).
Všimněte si, že malé změny (velikost prvního písmene) vedou k velmi odlišným hodnotám 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. Také, bez ohledu na to, kolikrát tato dvě slova projdeme algoritmem, oba výstupy budou vždy konstantní.
Na druhou stranu, pokud spustíme vstupy přes algoritmus hash SHA-1, budeme mít výsledky níže:
Konkrétně zkratka SHA znamená Secure Hash Algorithms. Odkazuje na sadu kryptografických hašovacích funkcí, které zahrnují algoritmy SHA-0 a SHA-1 spolu se skupinami SHA-2 a SHA-3. SHA-256 je součástí skupiny SHA-2 spolu s SHA-512 a dalšími variantami. V současnosti jsou za bezpečné považovány pouze skupiny SHA-2 a SHA-3.
Proč je toto důležité?
Konvenční hashovací funkce mají širokou škálu případů použití, včetně vyhledávání v databázi, analýzy velkých dat a správy dat. Na druhé straně jsou kryptografické hašovací funkce široce používány v aplikacích pro bezpečnost informací, jako je ověřování zpráv a digitální otisky prstů. Pokud jde o bitcoiny, kryptografické hašovací funkce jsou důležitou součástí procesu těžby a přispívají ke generování nových adres a klíčů.
Skutečná hashovací síla je vidět při práci s velmi velkým množstvím informací. Například lze spustit velký soubor nebo sadu dat pomocí hašovací funkce a poté použít výstup k rychlému ověření přesnosti a integrity dat. To je možné díky deterministické povaze hašovacích funkcí: vstup vždy produkuje jednoduchý a výstižný výstup (hash). Techniky, jako je tato, eliminují potřebu ukládat a „pamatovat si“ velmi velké množství dat.
Zejména hashování je velmi užitečné v technologii blockchain. Bitcoinový blockchain má několik procesů zahrnujících 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é spojuje kompaktní skupiny transakcí do bloků a také generuje kryptografické vazby mezi jednotlivými bloky, čímž efektivně vytváří blockchain.
Kryptografické hašovací funkce
Opět, hashovací funkce, která využívá kryptografické techniky, může být definována jako kryptografická hashovací funkce. Obecně platí, že prolomení kryptografické hašovací funkce vyžaduje spoustu úsilí hrubou silou. Pokud chce někdo „obrátit“ kryptografickou hašovací funkci, musí uhodnout, jaký je vstup metodou pokusu a omylu, dokud není vytvořen příslušný výstup. Je však také možné, že různé vstupy produkují přesně stejný výstup, takže v tomto případě dojde ke „kolizi“.
Technicky musí kryptografická hašovací funkce splňovat tři vlastnosti, aby byla považována za bezpečnou a efektivní. Můžeme je popsat jako odolnost proti kolizi, odolnost proti předobrazu a odolnost proti sekundárnímu předobrazu.
Než budeme diskutovat o každé vlastnosti, shrňme tuto logiku do tří krátkých vět.
Odolnost proti kolizi: Není snadné najít dva různé vstupy, které produkují stejný hash jako výstup.
Odolnost předobrazu: Není snadné „invertovat“ hašovací funkci (najít vstup z dostupného výstupu).
Odpor druhého předobrazu: Není snadné najít druhý vstup, který je v rozporu se zadaným vstupem.
Odolnost proti kolizi
Jak bylo zmíněno, ke kolizi dochází, když různé vstupy produkují stejný hash. Hašovací funkce je tedy považována za odolnou proti kolizi, dokud nenarazíte na kolizi. Vezměte prosím na vědomí, že tyto kolize budou vždy existovat u jakékoli hašovací funkce, protože možné vstupy jsou nekonečné, zatímco možné výstupy jsou omezené.
Jinými slovy, o hašovací funkci se říká, že je odolná proti kolizi, když je pravděpodobnost nalezení kolize velmi malá, protože vyžaduje miliony let výpočtu. Takže navzdory skutečnosti, že neexistují žádné hašovací funkce bez kolizí, některé z nich jsou velmi silné a lze je považovat za robustní (příklad: SHA-256).
Mezi různými algoritmy SHA již nejsou skupiny SHA-0 a SHA-1 bezpečné, protože byly objeveny kolize. V současné době jsou skupiny SHA-2 a SHA-3 považovány za odolné proti nárazu.
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 preimage, když pravděpodobnost, že někdo najde vstup, který je výsledkem určitého výstupu, je velmi malá.
Vezměte prosím na vědomí, že tato vlastnost je odlišná od předchozí, protože útočník se pokusí uhodnout, jaký je vstup tím, že se podívá na dostupný výstup. Na druhou stranu ke kolizi dochází, když někdo narazí na dva různé vstupy, které produkují stejný výstup, ale nezáleží na tom, který vstup je použit.
Vlastnost odolnosti předobrazu je velmi užitečná pro ochranu dat, protože jednoduchý hash zprávy může prokázat autenticitu, aniž by bylo nutné odhalit informace. V praxi mnoho poskytovatelů služeb a webových aplikací ukládá a používá výsledné hash hesel spíše než hesla v prostém textu.
Náhled druhého odporu
Jednoduše řečeno, můžeme říci, že tento druhý odpor předobrazu je mezi dvěma vlastnostmi diskutovanými dříve. K druhému útoku předobrazu dochází, když je někdo schopen najít konkrétní vstup, který produkuje stejný výstup jako jiný výstup z jiného vstupu, který je již znám.
Jinými slovy, druhý preimage útok má najít kolize, ale místo hledání dvou náhodných vstupů, které produkují stejný hash, hledají vstupy, které produkují stejný hash vytvořený jiným specifickým vstupem.
Proto je jakákoli hašovací funkce odolná proti kolizi také odolná proti útoku druhého předobrazu. Stále však lze provést předobrazový útok na funkci odolnou proti kolizi, protože to také znamená nalezení jediného vstupu z jediného výstupu.
Hornictví
V těžbě bitcoinů existuje mnoho kroků, které zahrnují hashovací funkce, jako je kontrola zůstatků, propojení vstupních a výstupních transakcí a hašování transakcí v bloku za účelem vytvoření Merkle Tree. Ale jedním z hlavních důvodů, proč je bitcoinový blockchain bezpečný, je skutečnost, že těžaři musí provádět velké množství hashovacích operací, aby nakonec našli správné řešení pro další blok.
Konkrétně musí těžař vyzkoušet několik různých vstupů při generování hodnot hash pro své bloky kandidátů. V podstatě může svůj blok ověřit pouze tehdy, pokud vytvoří výstupní hash, který začíná určitým počtem nul. Počet nul určuje obtížnost těžby a ta se liší v závislosti na hash rate specifickém pro síť.
V tomto případě hash rate představuje, kolik počítačové energie je spotřebováno pro těžbu bitcoinů. Pokud se hash rate sítě zvýší, bitcoinový protokol automaticky upraví obtížnost těžby, takže průměrná doba potřebná k vytěžení jednoho zbývajícího bloku se blíží 10 minutám. Naopak, pokud se někteří těžaři rozhodnou těžbu ukončit, způsobí to drastické snížení hash rate, upraví se obtížnost těžby, což usnadní (dokud se průměrná doba bloku nevrátí na 10 minut).
Prosím pochopte, že těžaři se nemusí setkat s kolizemi, protože existuje mnoho hashů, které mohou vytvořit jako platný výstup (počínaje určitým počtem nul). Existuje tedy několik možných řešení pro konkrétní blok a těžaři potřebují najít pouze jedno řešení v závislosti na prahu určeném úrovní obtížnosti těžby.
Vzhledem k tomu, že těžba bitcoinů je nákladná záležitost, těžaři nemají důvod systém podvádět, což by vedlo k významným finančním ztrátám. Čím více těžařů se k blockchainu připojí, tím bude větší a silnější.
Závěrečný nápad
Není pochyb o tom, že hashovací funkce jsou velmi důležitým nástrojem v informatice, zejména při práci s velkým množstvím dat. V kombinaci s kryptografií mohou být hashovací algoritmy všestranné a nabízejí bezpečnost a autenticitu různými způsoby. Kryptografické hašovací funkce jsou tedy nezbytné pro téměř všechny sítě kryptoměn, takže pochopení jejich vlastností a toho, jak fungují, je něco, co je velmi užitečné pro každého, kdo se zajímá o technologii blockchain.

