Košík

Hashovanie sa týka procesu generovania výstupu pevnej veľkosti zo vstupu premennej veľkosti. To sa deje pomocou matematických vzorcov známych ako hashovacie funkcie (implementované ako hašovacie algoritmy).

Aj keď nie všetky hashovacie funkcie zahŕňajú použitie kryptografie, takzvané kryptografické hashovacie funkcie sú jadrom kryptomien. Vďaka nim sú blockchainy a ďalšie distribuované systémy schopné dosiahnuť značnú úroveň integrity a bezpečnosti dát.

Bežné kryptografické hashovacie funkcie sú deterministické. To, že sú deterministické znamená, že pokiaľ sa vstup nezmení, hashing algoritmu bude vždy produkovať rovnaký výstup (tiež známy ako digest alebo hash).

Hashovacie algoritmy kryptomien sú zvyčajne navrhnuté ako jednosmerné funkcie, čo znamená, že ich nemožno ľahko vrátiť bez veľkého množstva výpočtového času a zdrojov. Inými slovami, je celkom ľahké vytvoriť výstup zo vstupu, ale pomerne ťažké ísť opačným smerom, čiže vygenerovať vstup iba z výstupu. Všeobecne možno povedať, že čím ťažšie je nájsť vstup, tým bezpečnejší je algoritmus hashovania.

Ako funguje hash funkcia?

Rôzne hashovacie funkcie budú produkovať výstupy rôznych veľkostí, ale možné výstupné veľkosti pre každý hashovací algoritmus sú vždy konštantné. Napríklad algoritmus SHA-256 môže produkovať iba výstupy 256 bitov, zatiaľ čo SHA-1 bude vždy generovať 160-bitový digest.

Na ilustráciu spustíme slová „Bitcoin“ a „bitcoin“ prostredníctvom hashovacieho algoritmu SHA-256 (algoritmu používaného v Bitcoine):

SHA-256

Vstup

Bitcoin f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

Výstup (256 bitov)

bitcoin 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

Ako si môžete všimnúť, už menšia zmena (veľkosť prvého písmena) mala za následok úplne inú hodnotu hash. Pretože ale používame SHA-256, výstupy budú mať vždy pevnú veľkosť 256 bitov (alebo 64 znakov) – bez ohľadu na veľkosť vstupu. Tiež nezáleží na tom, koľkokrát spustíme tieto dve slová algoritmom, dva výstupy zostanú konštantné.

Naopak, ak spustíme rovnaké vstupy prostredníctvom hashovacieho algoritmu SHA-1, dosiahli by sme nasledujúce výsledky:

SHA-1

Vstup

Bitcoin 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

Výstup (160 bitov)

bitcoin e58605c14a76ff98679322cca0eae7b3c4e08936

Skratka SHA je skratka pre Secure Hash Algorithms. Odkazuje na množinu kryptografických hashovacích funkcií, ktoré zahŕňajú algoritmy SHA-0 a SHA-1 spolu so skupinami SHA-2 a SHA-3. SHA-256 je súčasťou skupiny SHA-2 spolu s SHA-512 a ďalšími variantmi. V súčasnosti sa za bezpečné považujú iba skupiny SHA-2 a SHA-3.

Členstvo mensi_LOW

Prečo na tom záleží?

Konvenčné hashovacie funkcie majú širokú škálu prípadov použitia, vrátane vyhľadávania v databázach, analýz veľkých súborov a správy údajov. Na druhej strane, kryptografické hashovacie funkcie sa vo veľkej miere používajú v aplikáciách na zabezpečenie informácií, ako je autentifikácia správ a digitálne odtlačky prstov. Pokiaľ ide o Bitcoin, kryptografické hashovacie funkcie sú nevyhnutnou súčasťou procesu ťažby a tiež zohrávajú úlohu pri generovaní nových adries a kľúčov.

Skutočná sila hashovania prichádza pri riešení obrovského množstva informácií. Napríklad je možné spustiť veľký súbor alebo množinu údajov pomocou hashovacej funkcie a potom pomocou jej výstupu rýchlo overiť presnosť a integritu údajov. To je možné z dôvodu deterministickej povahy hashovacích funkcií: výsledkom vstupu bude vždy zjednodušený, zhustený výstup (hash). Takáto technika odstraňuje potrebu ukladania a „zapamätania si“ veľkého množstva údajov.

Hashing je obzvlášť užitočný v kontexte blockchainovej technológie. Bitcoinový blockchain má niekoľko operácií, ktoré zahŕňajú hashovanie, väčšina z nich je v procese ťažby. V skutočnosti sa takmer všetky protokoly kryptomien spoliehajú na hashovanie pri spájaní a kondenzácii skupín transakcií do blokov a tiež pri vytváraní kryptografických odkazov medzi jednotlivými blokmi, čím sa efektívne vytvára blockchain.

Kryptografické hashovacie funkcie

Samozrejme platí, že hashovaciu funkciu, ktorá využíva kryptografické techniky, možno definovať ako kryptografickú hashovaciu funkciu. Všeobecne platí, že narušenie kryptografickej hashovacej funkcie si vyžaduje nespočetné množstvo pokusov hrubou silou. Aby osoba mohla „vrátiť“ kryptografickú hashovaciu funkciu, musela by uhádnuť, o aký vstup išlo pokusom a omylom, kým sa nevytvorí zodpovedajúci výstup. Existuje však aj možnosť, že rôzne vstupy vyprodukujú úplne rovnaký výstup, v takom prípade dôjde ku „kolízii“.

Technicky musí byť kryptografická hashovacia funkcia sledovaná tromi vlastnosťami, aby sa mohla považovať za skutočne bezpečnú. Môžeme ich opísať ako odolnosť proti kolízii, odolnosť „preimage“ a odolnosť druhého „preimage“.

Odolnosť proti kolízii

Ako už bolo spomenuté, ku kolízii dôjde, keď rôzne vstupy vyprodukujú úplne rovnaký hash. Hashovacia funkcia sa teda považuje za nárazu vzdornú, až kým niekto nenájde kolíziu. Pre každú hashovaciu funkciu budú vždy existovať kolízie, pretože možné vstupy sú nekonečné, zatiaľ čo možné výstupy sú konečné.

Inými slovami, hashovacia funkcia je odolná voči kolízii, keď je možnosť zistenia kolízie taká nízka, že by si vyžadovala milióny rokov výpočtov. Takže napriek skutočnosti, že neexistujú žiadne hashové funkcie bez kolízií, niektoré z nich sú dostatočne silné na to, aby sa mohli považovať za odolné (napr. SHA-256).

Medzi rôznymi algoritmami SHA už skupiny SHA-0 a SHA-1 nie sú zabezpečené, pretože sa našli kolízie. V súčasnosti sa skupiny SHA-2 a SHA-3 považujú za odolné voči kolíziám.

Odolnosť preimage

Vlastnosť odporu preimage súvisí s konceptom jednosmerných funkcií. Hashovacia funkcia sa považuje za rezistentnú na preimage, keď je veľmi nízka pravdepodobnosť, že niekto nájde vstup, ktorý vygeneroval konkrétny výstup.

Táto vlastnosť sa líši od predchádzajúcej, pretože útočník by sa pri pohľade na daný výstup pokúšal uhádnuť, aký bol vstup. Na druhej strane ku kolízii dôjde, keď niekto nájde dva rôzne vstupy, ktoré generujú rovnaký výstup, ale nezáleží na tom, ktoré vstupy boli použité.

Vlastnosť odporu preimage je cenná pre ochranu dát, pretože jednoduchý hash správy môže dokázať jej autenticitu bez potreby zverejnenia informácií. V praxi mnoho poskytovateľov služieb a webových aplikácií ukladá a používa hashe vygenerované z hesiel, a nie heslá v nešifrovanom texte.

Odolnosť druhého preimage

Pre zjednodušenie môžeme povedať, že odolnosť druhého preimage je niekde medzi ostatnými dvoma vlastnosťami. K útoku druhého preimage dôjde, keď je niekto schopný nájsť konkrétny vstup, ktorý generuje rovnaký výstup iného vstupu, ktorý už pozná.

Inými slovami, útok druhej preimage zahrnuje nájdenie kolízie, ale namiesto hľadania dvoch náhodných vstupov, ktoré generujú rovnaký hash a hľadajú vstup, ktorý generuje rovnaký hash, ktorý bol vygenerovaný iným konkrétnym vstupom.

Preto je akákoľvek hashovacia funkcia odolná voči kolíziám tiež odolná voči útokom druhého preimage, pretože ten bude vždy znamenať kolíziu. Stále je však možné vykonať predbežný útok na funkciu odolnú proti kolízii, pretože to znamená nájsť jediný vstup z jedného výstupu.

Prečítajte si aj : Čo je Nonce a súvisí s Bitcoinom?

Ťažba a hashovanie

V ťažbe Bitcoinu existuje veľa krokov, ktoré zahŕňajú hashovacie funkcie, ako je kontrola zostatkov, prepájanie transakčných vstupov a výstupov a hashovanie transakcií v rámci bloku za účelom vytvorenia stromu Merkle. Ale jedným z hlavných dôvodov, prečo je bitcoinový blockchain bezpečný je skutočnosť, že ťažiaci musia vykonať nespočetné množstvo hashovacích operácií, aby nakoniec našli platné riešenie pre nasledujúci blok.

Ťažiar musí konkrétne vyskúšať niekoľko rôznych vstupov pri vytváraní hashovacej hodnoty pre svoj kandidátsky blok. V podstate budú môcť svoj blok overiť, iba ak vygenerujú výstupný hash, ktorý začína určitým počtom núl. Ťažkosť ťažby určuje počet núl, ktorý sa líši podľa hodnoty hash použitej v sieti.

V tomto prípade hash rate predstavuje to, koľko energie počítača sa investuje do ťažby bitcoinov. Ak sa sieťová hash rýchlosť zvýši, bitcoinový protokol automaticky upraví ťažobnú náročnosť tak, aby priemerný čas potrebný na ťažbu bloku zostal blízko 10 minút. Naopak, ak sa niekoľko baníkov rozhodne ukončiť ťažbu, čo spôsobí výrazné zníženie hashovacej rýchlosti, náročnosť ťažby sa upraví, čo uľahčí ťažbu (až kým sa priemerný čas blokovania nevráti na 10 minút).

Baníci nemusia hľadať kolízie, pretože existuje niekoľko hashov, ktoré môžu vygenerovať ako platný výstup (počnúc určitým počtom núl). Existuje teda niekoľko možných riešení pre určitý blok a baníci musia nájsť iba jedno z nich – podľa prahu určeného ťažobnou ťažkosťou.

Pretože ťažba Bitcoinu je nákladná úloha, ťažiari nemajú dôvod systém oklamať, pretože by to viedlo k významným finančným stratám. Čím viac baníkov sa pripojí k blockchainu, tým väčší a silnejší bude.

Na záver

Niet pochýb o tom, že hashovacie funkcie sú základnými nástrojmi v informatike, najmä pri práci s obrovským množstvom údajov. V kombinácii s kryptografiou môžu byť hashovacie algoritmy veľmi univerzálne a ponúkajú zabezpečenie a autentifikáciu mnohými rôznymi spôsobmi. Kryptografické hashovacie funkcie sú nevyhnutné pre takmer všetky siete kryptomien, takže pochopenie ich vlastností a pracovných mechanizmov je určite užitočné pre každého, kto sa zaujíma o blockchainovú technológiu.

Zdroje: academy.binance.com, networkencyklopedia.com, geeksforgeeks.org, medium.com

Disclaimer

Až 13 kryptomien aktualizovaných každý deň, mince so zápalnou šnúrou, fundamenty, vzdelávanie, VIP chat pre všetkých a LIVE ROOM, kde naživo obchodujeme. Kryptomeny jednoducho a zrozumiteľne s Trader2.0

Tento článok patrí firme JKralo s.r.o a je chránený copyrightom. Akéhokoľvek zneužitie (napr. kopírovanie) je trestné! Uverejnené informácie sú autorským dielom a bez súhlasu nie je ďalšie šírenie tohto materiálu povolené.

Kontakt : 
Telegram : https://t.me/jtrader20
Facebook : https://www.facebook.com/kralovanskyjakub
Instagram : https://www.instagram.com/bitcoin_trader2.0/
Web : https://trader20.sk/
E-mail : info@trader20.sk
Youtube kanál : https://www.youtube.com/channel/UCLf520Y_L1DQKURva4npXUA?view_as=subscriber

75486051_1455104544666141_6829501680044736512_n

Leave a Reply