Hašování je proces generování výstupu s pevnou velikostí ze vstupu s proměnnou velikostí. Tento proces se provádí pomocí matematického vzorce zvaného „hashovací funkce“ (implementovaný jako hashovací algoritmus).
Ne všechny hašovací funkce zahrnují použití kryptografie, ale „kryptografické hašovací funkce“ jsou jádrem kryptoměn. Díky kryptografickým hašovacím funkcím lze v blockchainu a dalších distribuovaných systémech dosáhnout vysoké úrovně integrity a bezpečnosti dat.
Jak tradiční hashovací funkce, tak kryptografické hashovací funkce jsou deterministické. Determinismus odkazuje na skutečnost, že hashovací algoritmus bude vždy produkovat stejný výstup (nazývaný také „výběr“ nebo „hodnota hash“), pokud se vstup nezmění.
Algoritmy hašování kryptoměn jsou obvykle navrženy jako jednosměrné funkce, což znamená, že je nelze snadno obnovit bez značného výpočetního času a zdrojů. Jinými slovy, je extrémně snadné vytvořit výstup ze vstupu, ale je relativně obtížné vytvořit vstup z výstupu obráceně. Obecně platí, že čím obtížnější je najít vstup, tím bezpečnější je hashovací algoritmus.
Jak funguje hashovací funkce?
Různé hašovací funkce vytvářejí výstupy různých velikostí, ale výstupní velikost každého hašovacího algoritmu je vždy stejná. Například algoritmus SHA-256 může produkovat pouze 256bitový výstup, zatímco SHA-1 vždy vytváří 160bitový výtah.
Abychom to ilustrovali, provedli jsme slova „Binance“ a „binance“ pomocí hashovacího algoritmu SHA-256 (algoritmus používaný v bitcoinech).
Všimněte si, že malá změna velikosti prvního písmene vytvoří úplně jinou hodnotu hash. Bez ohledu na délku vstupní hodnoty má výstup pomocí SHA-256 vždy pevnou délku 256 bitů (nebo 64 znaků). Kromě toho, bez ohledu na to, kolikrát algoritmus spustí tato dvě slova, výstup obou zůstává stejný.
Naopak, pokud spustíte stejný vstup pomocí algoritmu hash SHA-1, získáte následující výsledky:
Vezměte prosím na vědomí, že „SHA“ je zkratka pro Secure Hash Algorithms. Algoritmus odkazuje na sadu kryptografických hašovacích funkcí, která zahrnuje algoritmy SHA-0 a SHA-1 a také sady SHA-2 a SHA-3. SHA-256 spolu s SHA-512 a dalšími variantami jsou součástí skupiny SHA-2. V současnosti jsou za bezpečné považovány pouze skupiny SHA-2 a SHA-3.
Jaký je význam hashovacích funkcí?
Tradiční hashovací funkce mají různé případy použití, včetně vyhledávání v databázi, analýzy velkých souborů a správy dat. 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ů. V případě bitcoinu jsou kryptografické hašovací funkce nedílnou součástí procesu těžby, ovlivňující jak novou adresu, tak generování klíčů.
Hashovací operace jsou skutečně výkonné při zpracování velkého množství informací. Například spusťte velký soubor nebo datovou sadu pomocí hashovací funkce a poté použijte její výstup k rychlému ověření přesnosti a úplnosti dat. Hashovací funkce fungují, protože jsou deterministické: vstup vždy vytváří komprimovaný, zjednodušený výstup (tj. hash hodnotu). Tato technologie eliminuje potřebu ukládat a „pamatovat si“ velké množství dat.
Hash operace jsou zvláště užitečné v oblasti technologie blockchain. Bitcoinový blockchain má mnoho operací zahrnujících hashovací operace, z nichž většina je součástí procesu těžby. Ve skutečnosti téměř všechny kryptoměnové protokoly spoléhají na hašování, které propojuje skupiny transakcí a komprimuje je do bloků, přičemž generuje kryptografická propojení mezi bloky a efektivně vytváří blockchain.
kryptografická hašovací funkce
Podobně lze hašovací funkce využívající kryptografické techniky definovat jako kryptografické hašovací funkce. Obecně řečeno, prolomení kryptografické hašovací funkce vyžaduje bezpočet pokusů o hrubou sílu. Chcete-li „obnovit“ kryptografickou hashovací funkci, hádejte vstup pomocí pokusů a omylů, dokud se nevygeneruje odpovídající výstup. Je však také možné, že různé vstupy produkují přesně stejný výstup, takže dochází ke „konfliktu“.
Technicky řečeno, kryptografická hashovací funkce musí mít tři vlastnosti, aby byla považována za účinnou při zajišťování bezpečnosti. Tři hlavní atributy jsou anti-kolizní, anti-pre-image a anti-second pre-image.
Než budeme diskutovat o každém atributu jednotlivě, pojďme stručně shrnout logiku každého atributu.
Odolnost proti kolizi: Je nemožné, aby jakékoli dva různé vstupy generovaly stejnou výstupní hodnotu hash.
Anti-imageability: Je nemožné "obnovit" hashovací funkci (tj. vstup nelze najít z daného výstupu).
Druhý odpor předobrazu: Není možné najít jiný vstup, který by byl v konfliktu s konkrétním vstupem.
odolnost proti konfliktům
Jak již bylo zmíněno, ke kolizím dochází, když různé vstupy generují přesně stejnou hodnotu hash. Proto je hašovací funkce považována za odolnou proti kolizi, pokud kolizi nikdo nezjistí. Všimněte si, že protože možné vstupy jsou nekonečné a možné výstupy jsou konečné, vždy dochází ke kolizi s hašovacími funkcemi.
Za předpokladu, že pravděpodobnost nalezení kolize je tak nízká jako miliony let, lze o hašovací funkci říci, že je odolná vůči srážce. Proto, i když ve skutečnosti neexistují žádné hašovací funkce bez kolizí, některé z nich (například SHA-256) jsou považovány za odolné proti kolizi, pokud jsou dostatečně silné.
Mezi různými algoritmy SHA mají skupiny SHA-0 a SHA-1 konflikty, takže již nejsou bezpečné. V současné době jsou sady SHA-2 a SHA-3 považovány za odolné proti kolizi.
Anti-obraz
Antiikonická vlastnost souvisí s konceptem jednosměrných funkcí. O hašovací funkci se říká, že je anti-snímek, za předpokladu, že pravděpodobnost nalezení vstupu, který vytváří specifický výstup, je extrémně nízká.
Všimněte si, že útočník se dívá na daný výstup, aby odhadl vstup, takže tato vlastnost se liší od odolnosti proti kolizi. Kromě toho dva různé vstupy produkující stejný výstup budou v konfliktu, ale ve skutečnosti nezáleží na tom, který vstup je použit.
Vlastnosti anti-imageability jsou cenné pro ochranu dat, protože jednoduchý hash zprávy může prokázat její autenticitu bez prozrazení informací. V praxi mnoho poskytovatelů služeb a webových aplikací ukládá a používá hash generované z hesel spíše než hesla v prostém textu.
Odolnost vůči druhému předobrazu
Odolnost vůči druhým předobrazům zkrátka leží někde mezi dvěma výše zmíněnými vlastnostmi. Druhý útok na předobraz nastane, pokud někdo dokáže najít konkrétní vstup, který produkuje výstup, který je stejný jako jiný známý vstup.
Jinými slovy, druhý útok s předobrazem souvisí s hledáním konfliktů, ale místo hledání dvou náhodných vstupů, které generují stejnou hodnotu hash, hledáte jiný vstup, který generuje stejnou hodnotu hash daného konkrétního vstupu.
Druhý útok předobrazem obvykle znamená konflikt. Proto je jakákoli hašovací funkce odolná proti kolizi také odolná vůči útokům druhého předobrazu. Být odolný proti kolizi však znamená, že z jediného výstupu lze nalézt jediný vstup, takže útočník může stále zahájit útok na předobraz proti funkci odolné proti kolizi.
Těžba kryptoměn
Hashovací funkce se používají v několika krocích při těžbě bitcoinů, jako je kontrola zůstatků, zřetězení transakčních vstupů a výstupů a hashování transakcí ve stejném bloku za účelem vytvoření Merkleho stromu. Nicméně jedním z hlavních důvodů, proč je bitcoinový blockchain bezpečný, je to, že těžaři musí provést nespočet hashovacích operací, než konečně najdou platné řešení pro další blok.
Konkrétně musí těžaři při vytváření kandidátních blokových hashů vyzkoušet několik různých vstupů. V zásadě mohou těžaři ověřit blok pouze tehdy, pokud generovaný výstupní hash začíná určitým počtem nul. Počet nul určuje obtížnost těžby a mění se s hashratem vyhrazeným pro síť.
V tomto případě hash rate představuje množství výpočetního výkonu vloženého 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 potřebná k vygenerování bloku zůstala blízko 10 minutám. Naopak, pokud se mnoho těžařů rozhodne těžbu zastavit, což způsobí výrazný pokles hash rate, obtížnost těžby se bude snižovat, dokud se průměrná doba bloku nevrátí na 10 minut.
Všimněte si, že těžaři mohou generovat více hashů jako platný výstup (počínaje určitým počtem nul), takže nemusí hledat kolize. Existuje více možných řešení bloku, ale v závislosti na prahu obtížnosti těžby musí těžaři najít pouze jedno z řešení.
Těžba bitcoinů je nákladný úkol a není třeba, aby těžaři podváděli systém, což by místo toho způsobilo značné finanční ztráty. Čím více těžařů se k blockchainu připojí, tím větší a výkonnější se blockchain stane.
Shrnout
Není pochyb o tom, že hashovací funkce jsou nezbytným nástrojem v informatice a jejich schopnost zpracovávat obrovské množství dat je obzvláště vynikající. V kombinaci s kryptografií lze hashovací algoritmy použít různými způsoby k zajištění bezpečnosti a ověřování různými způsoby. Pro téměř všechny kryptoměnové sítě jsou klíčové kryptografické hašovací funkce. Pokud vás tedy technologie blockchain zajímá, bude velkým přínosem porozumět vlastnostem a mechanismu fungování kryptografických hashovacích funkcí.

