Kryptografické hašovací funkce jsou odlišnou třídou hašovacích funkcí , které mají určité vlastnosti, díky nimž jsou vhodné pro použití v kryptografii .
V obecném případě je konstrukce hashovací funkce založena na iterativním sekvenčním schématu. Jádrem algoritmu je kompresní funkce – převádějící k vstupu na n výstupních bitů, kde n je délka hashovací funkce a k je libovolné číslo větší než n . V tomto případě musí funkce komprese splňovat všechny podmínky šifrovací síly .
Vstupní tok je rozdělen do bloků ( k − n ) bitů. Algoritmus používá dočasnou proměnnou velikosti n bitů, jejíž počáteční hodnota je nějaké dobře známé číslo. Každý další blok dat je kombinován s výstupní hodnotou funkce zmenšování v předchozí iteraci. Hodnota hashovací funkce je výstupní n bitů poslední iterace. Každý bit výstupní hodnoty hashovací funkce závisí na celém vstupním datovém toku a počáteční hodnotě. Tím je dosaženo lavinového efektu .
Při návrhu hašovacích funkcí na základě iterativního schématu nastává problém s velikostí vstupního datového toku. Velikost vstupního datového toku musí být násobkem ( k − n ) . Zpravidla se před spuštěním algoritmu data rozšíří nějakým předem známým způsobem.
Kromě jednoprůchodových algoritmů existují víceprůchodové algoritmy, ve kterých je lavinový efekt dále zesílen. V tomto případě se data nejprve opakují a poté rozšíří na požadovanou velikost.
Algoritmus symetrické blokové šifry lze použít jako kompresní funkci . Pro zajištění větší bezpečnosti můžete jako klíč použít blok dat určený k hašování v této iteraci a jako vstup výsledek předchozí kompresní funkce. Výsledkem poslední iterace pak bude výstup algoritmu. V takovém případě je zabezpečení hašovací funkce založeno na zabezpečení použitého algoritmu.
Obvykle se při vytváření hashovací funkce používá složitější systém. Zobecněné schéma symetrického blokového šifrovacího algoritmu je znázorněno na Obr. 2.
Dostaneme tedy 64 možností pro konstrukci kontrakční funkce. Většina z nich je buď triviální, nebo nebezpečná. Níže jsou uvedena čtyři nejbezpečnější schémata pro všechny typy útoků.
Hlavní nevýhodou hashovacích funkcí navržených na základě blokových algoritmů je jejich nízká rychlost. Potřebné kryptografické síly lze dosáhnout i menším počtem operací na vstupních datech. Existují rychlejší hashovací algoritmy, které jste navrhli sami, od začátku, na základě požadavků na šifrovací sílu. Nejběžnější z nich jsou MD5 , SHA-1 , SHA-2 .
Požadavky na kryptografické hašovací funkce jsou:
1. Odolnost při vyhledávání prvního předobrazu : Vzhledem k hash by mělo být obtížné najít takovou zprávu , že tato vlastnost souvisí s pojmem jednosměrná funkce . Funkce, které tuto vlastnost postrádají, jsou zranitelné vůči prvním útokům preimage .
2. Odolnost vůči hledání druhého předobrazu : vzhledem ke zprávě by mělo být obtížné najít jinou zprávu (ne rovnou ) tak, aby . Tato vlastnost je někdy označována jako slabá odolnost proti kolizi. Funkce, které tuto vlastnost postrádají, jsou zranitelné vůči druhým útokům vyhledávání preimage.
3. Odolnost proti srážkám
Kolize hashovací funkce je dvojice hodnot a ′, ′ pro které . Protože počet možných otevřených textů je větší než počet možných hodnot konvoluce, pak pro nějakou konvoluci existuje mnoho předobrazů, a proto nutně existují kolize pro hašovací funkce. Nechť je například délka předobrazu hash 6 bitů, délka konvoluce je 4 bity. Potom je počet různých skladů a počet hashových předobrazů je , tedy 4krát více, což znamená, že alespoň jeden ze všech skladů odpovídá 4 předobrazem.
Odolnost hašovací funkce vůči kolizím znamená, že neexistuje žádný účinný polynomiální algoritmus pro nalezení kolizí.
Tyto vlastnosti nejsou nezávislé:
Pro kryptografii je důležité, aby se hodnoty hash hodně změnily při sebemenší změně argumentu ( lavinový efekt ). Hodnota hash by neměla unikat informace ani o jednotlivých bitech argumentu.
Při vývoji moderního ruského standardu GOST R 34.11-2012 (Stribog) byly pro kryptografické hašovací funkce formulovány následující požadavky:
4. Pseudonáhodnost : Mělo by být obtížné odlišit generátor pseudonáhodných čísel založený na hash od generátoru náhodných čísel, například projde obvyklými testy náhodnosti .
Bezpečnost hašovací funkce může být zajištěna složitostí některého matematického problému, pokud existuje důkaz, že útoky směřující k porušení požadavků na ni jsou stejně obtížné jako řešení tohoto problému. [jeden]
Kryptografická hašovací funkce je prokazatelně odolná proti kolizi, pokud problém hledání kolizí může být zprostředkován v polynomiálním čase z problému , který je v polynomiálním čase považován za neřešitelný . Jinými slovy, pokud by algoritmus umožnil vyřešit problém hledání kolizí v polynomiálním čase, pokud existuje redukční algoritmus , který také funguje v polynomiálním čase, pak by tento algoritmus umožnil vyřešit problém v polynomiálním čase, což je v rozporu s jeho složitostí. , což znamená , že problém hledání kolizí není jednodušší než úkol .
Obdobně je definováno prokazatelné zabezpečení proti hledání prvního a druhého předobrazu.
Odolnost při hledání druhého předobrazu vyplývá z prokázané odolnosti proti srážkám, proto se v praxi někdy teoreticky prokazuje pouze odolnost proti nalezení prvního předobrazu a odolnost proti srážkám. [2]
Některé problémy, které mají být neřešitelné v polynomiálním čase, které lze použít ke konstrukci takových funkcí:
Za přítomnosti teoretických záruk složitosti má přístup založený na důkazech také významné nevýhody:
SWIFFT je příkladem hashovací funkce, která poněkud obchází popsaný bezpečnostní problém. Lze ukázat, že pro každý algoritmus, který prolomí SWIFFT s pravděpodobností v čase, existuje algoritmus, který řeší určitý matematický problém v nejhorším případě v čase v závislosti na a . [čtyři]
Ideální kryptografická hašovací funkce je kryptografická hašovací funkce, která má pět základních vlastností:
Ideální kryptografická hašovací funkce, která má délku n (tj. výstup je n bitů), tedy musí vyžadovat alespoň operace pro výpočet předobrazu.
Útočník bude hledat předobraz ideální hašovací funkce následujícím způsobem: má číslo h a potřebuje najít m takové, že H(m) = h. Pokud se jedná o ideální hashovací funkci, pak může útočník pouze projít všemi možnými M a zkontrolovat, čemu se hashovací funkce z této zprávy rovná. Pokud je m zcela iterováno, výsledkem výpočtu je ve skutečnosti náhodné číslo. Pokud číslo h leží v rozsahu od 0 do , pak útočník v průměru stráví iterace hledáním požadovaného h. Výpočet předobrazu tedy zabere polovinu iterací než v ideálním případě.
Výpočet druhého předobrazu zůstává . Při hledání kolizí bude skóre dávat , a to není úplně přesný výsledek. Toto hodnocení vychází z hodnocení takzvaného „ narozeninového paradoxu “.
Pokud chce útočník napsat program na hledání kolizí, bylo by pro něj optimální nejprve si pořídit slovník kolizí. Podle toho pak vypočítá hašovací funkci z další zprávy a zkontroluje, zda tato hašovací funkce patří do další zprávy nebo ne. Pokud ano, pak je kolize nalezena a poté lze ve slovníku nalézt původní zprávu s daným hash kódem. Pokud ne, doplní slovník. V praxi tato metoda není implementována, protože by na takový slovník nebyl dostatek paměti.
Narozeninový útok je název používaný v kryptoanalýze pro metodu detekce kolizí hašovací funkce založenou na narozeninovém paradoxu. Podstatou paradoxu je, že ve skupině 23 a více lidí pravděpodobnost shody narozenin (dne a měsíce) u minimálně dvou osob přesahuje 50 %. Pokud je například ve třídě 23 nebo více studentů, pak je pravděpodobnější, že narozeniny některého ze spolužáků připadnou na stejný den, než že každý bude mít své jedinečné narozeniny.
Podívejme se na tento efekt a jeho roli na příkladu blockchainového hashovacího procesu. Tato vlastnost znamená, že pokud provedeme malé změny ve vstupním řetězci, pak se hashe (tedy výstup kryptografické funkce) budou od sebe drasticky lišit. Pojďme si tuto vlastnost ověřit na jednoduchém příkladu. Vezměme si například výsledek hashovací funkce z rodiny MD – MD5. Na vstupu dodáme hodnoty, které se budou lišit pouze v případě prvních znaků - řetězce jsou téměř totožné. Jejich hash (výsledek hashovací funkce) se však liší.
Příklad toho, jak funguje šifrovací algoritmus MD5 | |
Vstup | Výstup |
bitcoin | 0xCD5B1E4947E304476C788CD474FB579A |
bitcoin | 0xD023EC040F79F1A9B2AC960B43785089 |
Dobré hašovací funkce mají vlastnost "Vysoká entropie ". To znamená, že hashe datových polí by měly být během procesu hashování v systému maximálně rozmístěny, to znamená, že by měly mít vysokou entropii ve smyslu informace. Jak víte, entropie ve smyslu informace je mírou nejistoty určitého systému, zejména nepředvídatelnosti vzhledu symbolu.
Vezměme si například rovnici , kde je zřetězení řetězce a řetězce a je kryptografická hašovací funkce. Pokud má hodnota vysoký index entropie, pak bude téměř nemožné najít hodnotu, která by rovnici vyhovovala.
Pojmem „Vysoká entropie“ se v kontextu hašovacích funkcí rozumí stav, kdy je hodnota vybrána z tak široké škály možných možností, že pokusy o uhodnutí náhodným výběrem nemají šanci na úspěch. Například číslo, které je mezi 1 a 10, má nízkou entropii, zatímco číslo, které je mezi 1 a , má naopak vysokou entropii.
K dnešnímu dni je naprostá většina aplikací hashovacích funkcí „převzata“ algoritmy MD5 , SHA-1 , SHA-256 a v Rusku také GOST R 34.11-2012 (Stribog) . Samozřejmě existuje mnoho dalších algoritmů, které jsou méně známé nebo běžné pouze v úzkých komunitách (například RIPEMD , TIGER , Panama atd.), nicméně tyto algoritmy nejsou tak běžné. Níže je uvedena analýza hašovacích funkcí MD4 , což byl předchůdce MD5, a také hašovací funkce SHA.
Typ | Popis |
---|---|
MD4 | Nejrychlejší, optimalizovaný pro 32bitové stroje z rodiny funkcí MD.
Hashovací funkce vyvinutá profesorem University of Massachusetts Ronaldem Rivestem v roce 1990 a poprvé popsaná v RFC 1186. Obsahuje tři smyčky po 16 krocích. V roce 1993 byl popsán algoritmus cracking MD4, takže dnes se tato funkce nedoporučuje pro použití s reálnými aplikacemi. |
MD5 | Nejběžnější z rodiny funkcí MD. Podobné jako MD4, ale díky vylepšením zabezpečení je o 33 % pomalejší než MD4. Obsahuje čtyři cykly po 16 krocích. Poskytuje kontrolu integrity dat.
První úspěšné pokusy o prolomení této hašovací funkce se datují do roku 1993: výzkumníci Bert den Boer a Anton Bossilaris ukázali, že v algoritmu jsou možné pseudokolize. V roce 1996 Hans Dobbertin ukázal možnost kolizí a teoreticky popsal hackerský algoritmus. 24. srpna 2004 čtyři nezávislí výzkumníci - Wang Xiaoyun, Feng Dengguo, Lai Xuejia a Yu Hongbo - objevili zranitelnost algoritmu, která umožňuje najít kolize pomocí analytické metody ve více či méně přijatelném čase. V roce 2005 Vlastimil Klíma publikoval algoritmus pro detekci kolizí během několika hodin. 18. března 2006 publikoval výzkumník algoritmus, který najde kolize za jednu minutu, což bylo později nazváno „tunelování“. Ode dneška se MD5 nedoporučuje používat v aplikacích reálného světa. |
SHA-1
(Zajistit hash Algoritmus 1) |
V roce 1993 NSA spolupracovala s NIST na vývoji Secure Hash Algorithm (nyní známého jako SHA-0) (zveřejněného ve FIPS PUB 180) pro bezpečný hashovací standard. NSA však tuto verzi brzy stáhla s odvoláním na chybu, kterou objevili a která nebyla nikdy zveřejněna. A nahradil ji revidovanou verzí publikovanou v roce 1995 ve FIPS PUB 180-1. Tato verze je považována za to, co se nazývá SHA-1 .
Později, na konferenci CRYPTO v roce 1998, dva francouzští vědci představili útok na algoritmus SHA-0, který nefungoval na algoritmu SHA-1. To mohla být chyba objevená NSA. SHA-1 vytváří 160bitovou hodnotu, nazývanou také výtah zpráv. Obsahuje čtyři stupně. MD5 i SHA-1 jsou v podstatě vylepšená rozšíření MD4. Rozdíly:
|
SHA-2 | Rodina kryptografických algoritmů - hashovací funkce, včetně algoritmů SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 a SHA-512/224.
V roce 2003 Gilbert a Handschuh provedli studii o SHA-2 , ale nenašli žádné zranitelnosti. V březnu 2008 však indičtí vědci Somitra Kumar Sanadiya a Palash Sarkar zveřejnili srážky, které našli pro 22 iterací SHA-256 a SHA-512. V září téhož roku představili metodu pro konstrukci kolizí pro zkrácené verze SHA-2 (21 iterací). Studie ukázaly [8] , že algoritmy SHA-2 pracují 2-3krát pomaleji než MD5 , SHA-1 hash algoritmy . |
SHA-256 | Samostatně vyniká algoritmus SHA-256, který se používá v hashovacích algoritmech pro bitcoiny a další kryptoměny. Jak již název kryptografické hashovací funkce napovídá, výstupní hash je dlouhý 256 bitů, odpovídající entropii lze definovat jako množinu hodnot od 1 do 2 až po mocninu 256 – obrovské množství hodnot, které dělají cracking a dešifrování extrémně časově náročný proces založený na sekvenčním výčtu. |
SHA-3 ( keccak) | Hashovací funkce SHA-3 (také nazývaná Keccak) je proměnná bitová funkce vyvinutá skupinou autorů vedenou Joan Dymen . 2. října 2012 se Keccak stal vítězem soutěže kryptografických algoritmů pořádané americkým Národním institutem pro standardy a technologie [9] . Dne 5. srpna 2015 byl funkční algoritmus schválen a publikován jako standard FIPS 202 [10] [11] . Algoritmus funkce SHA-3 je postaven na principu kryptografické houby . |
Aby bylo jisté, že zprávu odeslal konkrétní odesílatel, je spolu se zprávou předán tzv. elektronický podpis. Příjemce zkontroluje, zda elektronický podpis k dané zprávě skutečně patří.
Vzhledem k tomu, že použití kryptografie s veřejnými klíči (podepisování, ověřování podpisů atd.) je velmi pomalý proces, navíc pokud podepíšete celou zprávu, pak bude velikost tohoto podpisu srovnatelná s velikostí zprávu, nepodepisujte zprávu a hashovací funkci ze zprávy. A pak příjemce při dešifrování podpisu obdrží hashovací funkci. Dále porovná hašovací funkci ze zprávy, kterou obdržel, a hašovací funkci, která byla získána v důsledku dešifrování. Vzhledem k tomu, že hashovací funkce má pevnou délku, je menší než samotná zpráva. To vám umožní rychle vypočítat digitální podpis. Velikost tohoto podpisu bude malá ve srovnání s velikostí zprávy.
Ve většině případů se přístupové fráze neukládají na cíle, ukládají se pouze jejich hodnoty hash. Není vhodné ukládat přístupové fráze, protože v případě neoprávněného přístupu k souboru s frázemi bude útočník znát všechna hesla a bude je moci okamžitě použít a při ukládání hodnot hash se naučí pouze hodnoty hash které nejsou vratné na původní data, v tomto případě - do přístupové fráze. Během autentizační procedury se vypočítá hash hodnota zadané přístupové fráze a porovná se s uloženou.
Příklady jsou v tomto případě GNU/Linux a Microsoft Windows XP . Ukládají pouze hash hodnoty přístupových frází z uživatelských účtů .
Tento systém předpokládá přenos zprávy přes zabezpečený kanál, to znamená kanál, ze kterého není pro kryptoanalytika možné zachytit zprávy nebo poslat své vlastní. V opačném případě může přístupovou frázi zachytit a použít ji k další nelegální autentizaci. Před takovými útoky se můžete chránit pomocí metody výzva-odpověď .
Nechte klienta s názvem name autentizovat server pomocí přístupové fráze pass . Server ukládá hash hodnotu H ( pass , R 2 ) , kde R 2 je pseudonáhodné, předem vybrané číslo. Klient odešle požadavek ( jméno , R 1 ), kde R 1 je pseudonáhodné, pokaždé nové číslo. Jako odpověď server odešle hodnotu R2 . Klient vypočítá hodnotu hash H ( R 1 , H ( pass , R 2 )) a odešle ji na server. Server také vypočítá hodnotu H ( R 1 , H ( pass , R 2 )) a porovná ji s přijatou. Pokud se hodnoty shodují, je ověření správné.
V takové situaci není heslo uloženo otevřeně na serveru a ani po zachycení všech zpráv mezi klientem a serverem nemůže kryptoanalytik heslo obnovit a přenášená hash hodnota je pokaždé jiná.
Transakce bitcoinového platebního systému , které jsou prezentovány jako určité pole dat, jsou kombinovány do bloků (dále se souhrn všech bloků nazývá blockchain ) a procházejí hashovacím algoritmem, to znamená, že data z jejich polí jsou přiváděna na vstup. kryptografické hašovací funkce. Každá transakce uvádí, odkud jsou prostředky odepisovány a kam jdou. Pro specifikaci adresáta slouží jeho veřejný klíč (jedinečný identifikátor v bitcoinové síti). Aby mohl adresát přijaté peníze použít v rámci bitcoinového protokolu (vylučujeme prodej vlastní peněženky - Wallet), musí vytvořit novou transakci, která měnu vezme z té předchozí a přesměruje ji na jinou adresu pomocí veřejný klíč. V souladu s tím bude nová transakce spolu s transakcemi ostatních uživatelů bitcoinové sítě spadat do nového bloku. Počet bloků v blockchainu tak roste. Každá transakce však musí být schválena – systém musí dosáhnout konsensu. Existuje několik způsobů, jak to udělat, ale Bitcoin používá princip Proof-of-Work (PoW). Po přijetí transakce je považována za skutečnou a kryptoměna se přesune z jedné peněženky do druhé.
Bitcoinový systém je decentralizovaný systém bez vyhrazených center pro generování bloků. Každý účastník může vzít sadu transakcí čekajících na zaprotokolování a vytvořit nový blok. Navíc v systémech jako BitCoin dostane takový účastník (těžař) také bonus v podobě určité částky nebo provize z transakcí přijatých do bloku.
Ale nemůžete jen vzít a vytvořit blok v decentralizovaných systémech. Systém musí dosáhnout konsensu, tedy získat souhlas. Existuje několik způsobů, jak to udělat, ale Bitcoin používá princip Proof-of-Work (PoW). Spolehlivost takových systémů je založena právě na tom, že nový blok nelze vytvořit rychleji (v průměru) než za určitý čas. Například za 10 minut (BitCoin).
pole | Popis | velikost |
---|---|---|
Magie ne | hodnota vždy 0xD9B4BEF9 | 4 byty |
velikost bloku | počet bajtů následujících do konce bloku | 4 byty |
blockheader | skládající se ze 6 položek | 80 bajtů |
počítadlo transakcí | kladné celé číslo | 1-4 bajty |
transakce | <non empty> seznam transakcí | <Počítadlo transakcí> - mnoho transakcí |
pole | Účel | Aktualizovat, když… | velikost |
---|---|---|---|
verze | číslo verze bloku | Upgradujete software a ten určí novou verzi | čtyři |
hashPrevBlock | 256bitový hash předchozí hlavičky bloku | Přichází nový blok | 32 |
hashMerkelRoot | 256bitový hash založený na všech transakcích v bloku | Transakce je přijata | 32 |
Čas | aktuální časové razítko jako sekundy od 01.01.1970 do 00:00 UTC | Každých pár sekund | čtyři |
bitů | aktuální cíl v kompaktním formátu | Obtížnost je upravena | čtyři |
noce | 32bitové číslo (začíná na 0) | Hash je unavený (zvyšuje se) | čtyři |
obtížnost je počet nulových bitů, které budou na začátku cílového čísla .
target je číslo, o které musí být hash bloku menší, než aby byl blok považován za platný. Cíl nebo přesněji obtížnost závisí na aktuální síle sítě a je potřeba měnit obtížnost každých n (v BitCoinové síti - 2016) bloků tak, aby se každých 10 minut vygeneroval jeden blok. Předpokládejme, že v síti je vygenerováno 2016 bloků a každý klient kontroluje, jak dlouho byl každý blok vytvořen. Pokud je tato doba delší než vypočítaná, tedy více než 10 minut, pak složitost klesá.
nonce je náhodné číslo, které musí těžaři vyzvednout, aby vytvořili blok.
Jak bylo uvedeno výše, sada bitcoinových transakcí je reprezentována jako spojené bloky dat - blockchain . Struktura zařízení samotného blockchainu je prezentována jako propojený seznam s ukazateli.
Každý blok má ukazatel, který obsahuje odkaz na předchozí datový blok. Pro přechod na n + 1 bloků je tedy nutné sledovat ukazatele předchozích n bloků. V souladu s tím ukazatele přidávají adresu nového bloku až poté, co původní datový blok prošel bitcoinovým hashovacím algoritmem – to vám umožní učinit spojení spolehlivým a bezpečným.
Takový systém je méně pravděpodobné, že bude napaden vetřelci, kteří se mohou pokusit změnit data v blockchainu, například provést vlastní transakci na zvolené adrese. Jak již bylo zmíněno, hash každého bloku v blockchainu závisí nejen na jeho vlastním obsahu, ale také na obsahu předchozího bloku. Jakákoli změna dat v původním bloku tedy znamená změnu dat v jiných blocích. To zaručuje neměnnost blockchainu a bezpečnost systému, protože je extrémně obtížné blockchain „falšovat“. Je však třeba poznamenat, že hash každého bloku musí být jedinečný, jinak nebude možné sledovat pokusy o útok.
Merkle stromVšechny transakce jsou reprezentovány jako řetězce v hexadecimálním formátu, které jsou hashovány za účelem získání ID transakcí. Na jejich základě je postaven blokový hash, který je zohledněn následným blokem, zajišťujícím neměnnost a koherenci. Hodnota hash jednoho bloku se shromažďuje pomocí stromu Merkle .
Merkle strom je úplný binární strom , jehož vrcholy listů obsahují hash z transakcí a vnitřní vrcholy obsahují hash z přidávání hodnot v podřízených vrcholech a kořenový uzel stromu (Top Hash) obsahuje hash z celý soubor dat.
Konstrukce Merkleho stromu pro bitcoinový blockchain je následující:
- výsledek hashovací funkce z transakce
Zároveň, když je například transakce L1 utracena, pak lze data o ní z bloku odstranit a nechat pouze její hash pro ověření bloku. Když jsou transakce L1 a L2 utraceny, pak můžeme smazat jejich hash (Hash 0-0 a Hash 0-1) a ponechat pouze Hash 0, opět pro účely ověření bloku. V okamžiku, kdy jsou všechny transakce využity, pak lze smazat všechny hashe kromě Top Hashe, protože informace o těchto transakcích již nebudou potřeba.
Pro získání hashe pro nový řetězový blok je tedy nutné vzít v úvahu všechny předchozí transakční hashe. Změna hashe alespoň jednoho z předchozích bloků povede ke změně hashe dalšího bloku, respektive takovou transakci lze okamžitě identifikovat jako neplatnou.
Těžba je proces hledání konsenzu na principu Proof-Of-Work – získání souhlasu k vytvoření nového bloku. Ve skutečnosti to v bitcoinové síti spočívá v počítání hashe z bloku a jeho porovnání s cílovým číslem : pokud je hash menší než cíl, vygeneruje se nový blok, jinak tomu tak není.
Těžaři zajišťují nepřetržitý růst blockchainu. K tomu se využívá obrovský výpočetní výkon – každý těžař přispívá ke zvýšení celkového bitcoinového hashrate (výpočetního výkonu). Podíl bitcoinové hashovací operace každým těžařem závisí na celkovém hashrate ukazateli – čím vyšší je celkový hashrate sítě, tím více výpočetní práce za kratší dobu musí těžař udělat, aby si udržel průměrnou velikost své těžební odměny.
Proces dosazení nonce do řetězce pokračuje, dokud není nalezeno správné řešení. Někdy může počet pokusů dosáhnout až milionkrát. Těžař, který jako první najde správné řešení, přidá blok do blockchainu a dostane za to odměnu.
Proces výběru nonce je založen na metodě hrubé síly . Proto těžební zařízení nepřetržitě generuje náhodné řetězce, dokud není nalezena požadovaná hodnota nonce .
Příklady kryptoměn, které pro šifrování používají hašovací funkci SHA-256SHA-256 je klasický algoritmus pro kryptoměny: je na něm postavena hlavní kryptoměna, bitcoin. V souladu s tím se tento algoritmus používá také v bitcoinových forcích: v bitcoinových penězích, bitcoinech SV. Zároveň v Bitcoin Gold těžaři používají kryptofunkci – Equihash
Kromě nich se SHA-256 používá také v:
Algoritmus SHA-256 se také používá jako podprogram v kryptoměně Litecoin a hlavním algoritmem pro těžbu je Scrypt.
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|