CZ překlad
Není žádný důvod bát se použít moderní kryptografii v konsensu
Snad každý krypto projekt používá asymetrickou kryptografii pro podepisování transakcí. Všechny transakce se dávají do bloku a poté musí síť udělat konsensus, který rozhodne o tom, jestli se blok objeví v blockchainu nebo ne. PoW a PoS pro to používají různé kryptografické nástroje. Někteří lidé věří, jediný dobrý přístup je ten, který používá Bitcoin. Ukážeme si, že není žádný důvod tomu věřit či na tom trvat.
Nebudeme si vysvětlovat jak přesně v článku zmíněné kryptografické nástroje fungují. Chceme vysvětlit hlavně základní princip a říct vám, proč jsou vlastně tyto nástroje bezpečné, případně za jakých podmínek jsou bezpečné.
ASYMETRICKÁ KRYPTOGRAFIE
Asymetrická kryptografie se používá k podepisování transakcí a síť se tak může ujistit, že odesílatel transakce je ten, kdo měl privátní klíč. Lidé často o klíči ani neví, neboť vše za ně dělá peněženka. Pod pokličkou je však pár vygenerovaných klíčů, privátní a veřejný. Bitcoin používá Elliptic Curve Digital Signature Algorithm (ECDSA).
RSA (Rivest-Shamir-Adleman) je další, relativně starý, asymetrický kryptografický nástroj. My si na RSA vysvětlíme základní koncept fungování šifer, neboť je to lehčí než s ECDSA.
Fungování šifer je postavená na matematice. U RSA se vychází z faktu, že rozložit velké číslo na součin prvočísel (faktorizace) je z pohledu náročnosti výpočtu velmi složitá úloha. Připomenu, že prvočíslo je číslo větší než 1, které je dělitelné pouze samo sebou a jedničkou. Definici splňují čísla: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101 a tak dále…
Zkusíme si to na malých čísel. Napřed vám dám úlohu, zkuste dosadit za P a Q taková prvočísla, aby vyšlo 3127.
P * Q = 3127
Pokud si úlohu zkusíte, asi vám dala docela zabrat. Přitom pokud si sami zvolíte prvočísla, je součin velice rychlý. Správný výsledek je P = 53, Q = 59. Pointa z pohledu šifrování tkví v tom, že neexistuje žádný rychlý algoritmus, který by byl v reálném čase (tedy rychle) schopný z výsledku součinu (tedy z N) spočítat prvočísla.
Tohle je pouze základní princip. Matematika je dále o něco složitější, neboť je potřeba vygenerovat veřejný a privátní klíč, k čemuž se použijí další zvolená čísla a dosadí do rovnic, které jsou součástí algoritmu šifry.
Pokud by jste chtěli RSA šifru zlomit, museli byste na to použít hrubou sílu (brute force) a pokusit se z veřejného klíče zpětně (tedy přes faktorizaci) spočítat klíč privátní. Zde hraje roli délka klíče. Čím větší použijete prvočísla, tím větší vám vyjde součin N a tím výkonnostně náročnější a časově delší bude faktorizace. Samozřejmě alternativní cesta by byla “zlomit” matematiku a přijít na postup, jak se dá snadno a rychle faktorizovat. To je však úloha na Nobelovu cenu.
Aby jste měli představu o jak velkých prvočíslech se bavíme, tak délka klíče může být od 1024 do 2048 bitů, což znamená, že délka prvočísel může být od 512 do 2048 bitů. Prvočíslo 2^512 (2 na 512) může mít až 150 číslic.
Šifrování funguje kvůli tomu, že pro daný problém neexistuje žádný známý algoritmus, který by úlohy rychle vyřešil. K řešení se dá dojít pouze přes překotnému zkoušení všech možných variant, což je díky velikosti čísel, nebo obecně vstupů - ať už je to cokoliv - velice náročný proces konzumující čas a výpočetní výkon.
Čím delší se použijí klíče, tím je brute force útok náročnější. My se můžeme na kryptografii spolehnout do té doby, dokud věříme, že žádná entita nemá dostatečně výkonný počítače k úspěšnému brute force útoku. Věříme, že se to nikomu nevyplatí, nebo nebude ochotný do toho investovat.
JAK FUNGUJE POW
PoW využívá popsaný princip vzhůru nohama. PoW se dá chápat jako řízený brute force útok. Bitcoin síť je schopna odhadnout dostupný výpočetní výkon a upravit PoW úlohu tak, aby vyřešení trvalo přibližně 10 minut (někdy je to minuta, někdy hodina, v delším čase nad více transakcemi průměrně 10 minut).
PoW využívá kryptografický nástroj SHA-256, který běžně slouží k vytvoření digitálního otisku dat. Je jedno, jak velká jsou vstupní data. SHA-256 vždy vrátí stejně dlouhý otisk a udělá to velice rychle. Pokud proces opakujete, vrátí se vždy stejný otisk. Jakmile však změníte byť jediný znak ve vstupních datech, vrátí se úplně jiný otisk. Pointa je, že z otisku nejste nikdy schopni odvodit vstup (opět algoritmy).
Vytěžení bloku, tedy úspěch v hledání správného řešení hádanky, v podstatě znamená neustále upravovat vstup pro SHA-256 za účelem nalezení takového otisku, který splní požadovanou náročnost. Otisk (hash) musí obsahovat daný počet nul na začátku (náročnost se po čase upravuje, neboť hashrate se mění). Daný těžař tak zkouší jeden hash za druhým hodně dlouhou dobu, než uspěje. Při tom závodí se zbytkem sítě.
Hashovací funkce SHA-256 není asymetrická kryptografie sloužící k enkrypci a dekrypci, ale kryptografie k vytvoření digitálního podpisu. Nicméně oba nástroje jsou svého druhu kryptografické a staví na stejných principech. Brute force útok vyžaduje mnoho energie a o to u Bitcoinu jde. Kryptografický nástroj se tedy použil záměrně tak, aby se energie spotřebovala. Tento přístup má však jednu nevýhodu. Aby se energie spotřebovala, je potřeba nastavit náročnost tak, aby řešení zabralo požadovanou dobu. A to bohužel brání škálování, neboť se vytěží pouze 1 blok za 10 oněch minut. Tento princip je opačný tomu, co po transakčních sítích chceme. Po těchto sítích chceme rychlost a škálování. PoW je něco, co se nejspíš do světa počítačových sítí úpně nechodí.
POUŽITÍ MODERNÍ KRYPTOGRAFIE
Kryptoměny jsou hlavně o spolehnutí se na použité kryptografické nástroje. Dalo by se říct, že krypto projekt je bezpečný podle toho, jaké nástroje používá a jak. Kryptografické nástroje v čase zastarávají. Výpočetní síla roste a je potřeba používat delší klíče, nebo nástroj vyměnit. Délku klíče v distribuovaných sítích chceme držet na minimu kvůli škálování. Je lepší vyměnit nástroj. Kryptografie se naštěsí také vylepšuje, takže ji stačí v protokolu vyměnit.
Čas od času je potřeba nějakou změnu v protokolu udělat. Například Bitcoin přechází z ECDSA na Schnorr signature (podpis transakcí, ne consensus).
Otázka nyní je, proč se bát využití kryptografie v rámci konsensu. Využití jiného kryptografického nástroje znamená vypořádat se s jiným typem problémů. Nicméně někdy to může přinést nějaké výhody. Každopádně není žádný důvod si myslet, že postavit konsensus na brute force útoku je jediný správný přístup. Správný není, neboť sice jednu věc dělá dobře, ale brání jiné důležité vlastnosti. Technologické řešení by mělo být vyvážené. Můžeme samozřejmě preferovat jednu vlastnost, třeba bezpečí. Ale extrémy nejsou nutné.
Konsensus musí na této úrovni vyřešit dvě věci: náhodně vybrat node, který dostane právo vytěžit blok a poté nechat blok schválit sítí. Při tom všem je potřeba zamezit možným útokům.
Při PoW mezi sebou jednotlivý hráči (dnes pooly) závodí a útokům se brání jen tím, že se konzumuje energie. PoW závod o vytěžení je to, co v PoW představuje náhodu.
Cardano Ouroboros PoS využívá dva moderní kryptografické nástroje Key Evolving Signature (KES) a Verifiable Random Function (VRF). Díky tomu dokáže dojít ke konsensu rychleji, docílit vyšší decentralizace a dokonce být stejně bezpečný jako PoW.
JAK KES A VRF VYUŽÍVÁ V CARDANO OUROBOROS POS
Misto otevřené PoW soutěže využívá Ouroboros PoS mechanismu, který přesně určí node, který právo na těžbu bloku dostane. Čas je rozdělený na epochy a sloty. Každá epocha má 21 600 slotů a trvá asi 5 dní (čas bloku je 20 vteřin). V každém slotu dostane právo na produkci bloku jiný node. Jakmile se určí node pro daný slot, produkce bloku nic nestojí. Téměř žádný čas a minimum energie. Na tomto místě se musí protokol vypořádat s tzv. Nothing on stake problémem, kdy může podvodník levně vytvořit a nabízet alternativní chain.
Verifiable Random Function (VRF) se stará o vytvoření náhody na začátku každé epochy. Jeden ze vstupů pro VRF je historie blockchainu. Protokol vytvoří pro každou epochu fixní sadu nodů, které budou mít v daném slotu právo vytěžit blok. Tohle je elegantní obrana proti Nothing on stake útoku, neboť útočník nemůže jen tak vytvořit blok či alternativní chain. Je velice jednoduché ověřit, že jednotlivé bloky podepsaly nody, které na to měli v daném slotu právo. Aby útoční uspěl, musel by nějak padělat podpisy nodů, které měli v daném slotu právo bloky těžit přidělené sítí. Podvodník by tak musel nějak zaútočit na nody a získat od nich privátní klíče. To by teoreticky možné bylo a kdyby podvodník získal určitý počet těchto klíčů, nějakou šanci na podvod by měl. Aby se této možnosti zamezilo, node, který podepíše v daném slotu blok privátním klíčem, tento klíč jednoduše smaže ještě před tím, než blok pošle do sítě. Tím pádem už nejde znovu použít. Node si zkrátka vygeneruje klíč nový. Je tedy téměř nemožné zničené klíče nějak získat a znovupoužít. O tento proces se stará Key Evolving Signature, která umožní smazání privátního klíče s tím, že se může zachovat stejný veřejný.
ZÁVĚR
Krypto je teprve na začátku a aby uspělo, musí nabídnout to nejlepší, co je k dispozici. Jeden z důvodů nízké adopce je škálovatelnost. Pokud se tento problém vyřeší, hodně to pomůže. Jedna z cest je využití jiných kryptografických nástrojů, které někde něco zefektivní. Kryptografii používáme při podpisu transakcí a nepotřebujeme k tomu zdlouhoavý výpočetní výkon. Věříme že funguje tak jak je. To samé se dá využít i pro konsensus. My to musíme zkusit a zkoušet stále znovu, pokud chceme mít globální decentralizovanou síť.
V anglickém originále jsou obrázky, odkazy na vyzkoušení si RSA a SHA-256, popis Ouroboros od ambasadora Carlose de Lary: