🇨🇿 Jak je Cardano chráněné před 51% útokem?

Cardano PoS funguje v mnoha ohledech velmi podobně jako Bitcoin PoW. Možná vás překvapí, že když se blockchain rozvětví (dojde k forku blockchainu), Cardano použije pravidlo nejdelšího řetězce podobně jako Bitcoin. Vytvoření bloku PoS nevyžaduje mnoho energie, takže v protokolu Cardano musí být nějaká další pravidla. Vysvětlíme si některá z nich a ukážeme si, jak tato pravidla chrání Cardano před 51% útokem.

TLDR

  • Cardano používá pravidlo nejdelšího řetězce, které je podobné pravidlu Bitcoinu.
  • Pravidlo Plenitude se používá proti útoku dlouhého řetězce (long-range attack).
  • Pokud jsou soukromé klíče použité k podepisování bloků vymazány, pokus o přepsání historie blockchainu je nemožný.

Protokoly jsou o pravidlech

Blockchain je řetězec bloků. Síť přidává nové bloky na konec řetězce. Občas se může stát, že dva bloky vytvoří dva (nebo více) nezávislé uzlů současně. Tato událost se nazývá fork (rozvětvení, vidlička). Znamená, že dva nové bloky následují po předchozím bloku. Je třeba určitého pravidla, které zajistí, že jeden blok je vítězný a zůstane navždy v řetězci, zatímco druhý blok je vyřazen (navždy osiří). Na obrázku níže můžete vidět fork. Uzel, který bude vytvářet další blok, si musí vybrat mezi blokem A nebo B.

V síti Bitcoin si může pool (výrobce bloků) vybrat blok A nebo B, podle toho, který se mu více líbí. Pokud jeden z bloků vytvořil pool, který chce přidat další blok, vybere si svůj blok, protože za něj chce získat odměnu. Pool nemůže pokračovat na obou blocích, protože by musel rozdělit hash rate. To neudělá, protože jiný pool by pravděpodobně přidal následující blok rychleji. Rozdělení hash rate snižuje šanci na úspěch v PoW loterii. Po přidání dalšího bloku bude zřejmé, který řetězec je delší. Další pool ví, na kterém řetězci má navázat, protože může použít pravidlo nejdelšího řetězce.

Na obrázku níže je vidět, že modrý řetězec je delší. Pro pool je výhodné pokusit se přidat další blok do modrého řetězce, protože červený řetězec se v kontextu delšího časového období prosadí s menší pravděpodobností. Žádný provozovatel poolu předem neví, komu se podaří přidat nový blok a ve kterém řetězci bude následovat. Z hlediska teorie her je výhodné předpokládat, že se všichni budou chovat racionálně a zvolí modrý řetězec.

Pokud chce kterýkoli uzel zjistit, která verze blockchainu je správná, může tak učinit na základě práce PoW. Uzly, které se k síti připojují poprvé, se také mohou spolehnout na práci PoW.

V síti Cardano je výroba nového bloku levná (fenomén beznákladové simulace (costless simulation) neboli nic není v sázce (nothing at stake)). To platí i pro delší série bloků. Uzel tak může teoreticky rychle a levně sledovat bloky A i B. Pokud by to každý další uzel, který má následně vyrobit blok, udělal také, mohlo by být obtížné určit, který řetězec je správný.

Uzly Cardano mezi sebou nesoutěží o přidání nového bloku. Místo toho se k vylosování vítěze používá moderní kryptografická funkce zvaná Verifiable Random Function (VRF). V síti Carano je čas rozdělen na sloty. V každém slotu každý uzel použije funkci VRF, aby získal výstup VRF. Řekněme, že je to číslo. Pokud je číslo menší než určitý práh (který je odvozen od velikosti staku), uzel je vítězem a získává právo vyrobit nový blok.

Občas se může stát, že právo vyrobit blok získají dva (nebo více) uzly ve stejném slotu. Podobně jako v síti Bitcoin mohou být současně vytvořeny dva platné bloky. Tato situace se nazývá bitva o slot (slot battle). Cardano má jednoduché pravidlo pro určení, který blok má být součástí delšího řetězce. Výstupy VRF dvou konkurenčních bloků A a B se vzájemně porovnávají. Vítězem je blok, který byl vytvořen uzlem s menším výstupem VRF.

Ačkoli pravidla protokolu jasně určují, který řetězec je považován za delší (modrý), na obrázku výše vidíte, že uzel přidal nový blok do obou řetězců. Vizuálně to vypadá, že existují dva stejně dlouhé řetězce. Uzel to může udělat, protože vytvoření bloku nic nestojí. Co brání uzlům, aby se takto chovaly? Je to reputace. Jakmile by se uzel takto zachoval, komunita by to považovala za pokus o útok na síť. Pool by ztratil reputaci a stakeholdeři by mince ADA delegovaly jinam. Další poctivý uzel by pravděpodobně přidal nový blok pouze do správného řetězce, takže podvodný řetězec by nakonec stejně osiřel.

Je důležité zmínit význam pozitivní motivace. Provozovatel poolu může přidávat bloky levně, ale pokud by to mělo negativní dopad na provoz a reputaci sítě, hodnota mincí ADA by klesla. Provozovatelé by dostávali odměny v nižší dolarové hodnotě. Je v zájmu všech, aby síť fungovala správně a měla dobrou pověst.

Každý uzel vidí forky, a když má přidat nový blok, rozhoduje se podle výstupu VRF v blocích, které jsou hned za rozvětvením. Díky pravidlům lze snadno odvodit, kterým směrem by měl jít správný řetězec. V případě dalších forků by pravidlo platilo úplně stejně.

Náhodnost určuje uzel, který získá právo vytvořit nový blok. Může se stát, že útočník získá právo několikrát za sebou. Teoreticky tedy může do podvodného řetězce (červeného) přidat více bloků. V důsledku toho bude červený řetězec na krátkou dobu (na několik slotů) delší. Jakmile poctivý uzel získá právo vyrábět bloky, přidá bloky do správného, tj. modrého řetězce. V delším časovém období bude vždy vítězit modrý řetězec.

Jak vidíte, protokol Cardano používá moderní kryptografickou funkci a jednoduché pravidlo, které nahrazuje systém losování, jenž probíhá v sítích PoW. Bitcoin nedefinuje pravidlo, které by rozhodovalo o tom, který blok se vybere pro pokračování v případě forků. Řetězce jsou stejně dlouhé, takže pravidlo nejdelšího řetězce nelze použít. Jeden blok je jednoduše vybrán poolem a pro další kolo lze použít pravidlo nejdelšího řetězce.

Protokol Cardano jasně definuje, který řetězec má být považován za nejdelší ihned po vytvoření forku. Pravidlo nejdelšího řetězce lze použít v každém kole a neexistuje situace, kdy by si pool mohl vybrat blok, který se mu líbí více. Teoreticky lze říci, že každý nový blok je automaticky finální. Neexistuje žádný boj o to, který řetězec bude vítězný. Výstupy VRF vždy jasně deklarují správný (nejdelší) řetězec, pokud se neobjeví dva stejné výstupy VRF, což je nepravděpodobné.

Co se stane, pokud útočník vytvoří dlouhý alternativní řetězec, například z bloku Genesis? To je relativně snadné, protože, jak jsme si řekli, vytvoření bloku nic nestojí, takže je možné vytvořit celý řetězec. Nemějte obavy. Existuje další pravidlo.

Jak se Cardano chrání před útokem dlouhého řetězce

Útok douhého řetězce (long-range attack) představuje pro sítě PoS zhruba stejný mechanismus jako 51% útok v sítích PoW. Cílem útočníka je vytvořit delší řetězec, který přepíše blockchain ve prospěch útočníka. Místo toho, aby útok začínal několik bloků zpět, musí tento útok jít mnohem dále do historie řetězce (tj. i desítky tisíc bloků). To představuje problém pro sítě PoS, protože k přepsání velmi dlouhého řetězce není zapotřebí důkaz práce.

Při tomto útoku se útočník snaží vytvořit vlastní řetězec celého blockchainu a chce jej prosadit jako správný řetězec (hlavní řetězec nebo nejdelší řetězec). Obvykle to dělá tajně a pak svou verzi ve správný čas zveřejní. Důvodem, proč se útočník může o něco takového pokusit, je především snaha o reorganizaci bloků nebo zvýšení odměny. Alternativní řetězec totiž může obsahovat jiné bloky nebo transakce než původní hlavní řetězec.

Tento typ útoku je možný díky jevu zvanému slabá subjektivita (weak subjectivity). Tento termín pochází ze “slepoty” nových nebo dlouho odpojených uzlů, které jsou nuceny rozhodnout, která větev blockchainu je ta správná. Když je uzel zapojen do sítě, je si jistý pouze počátečním blokem (blok Genesis), protože ten jediný je všeobecně odsouhlasen. Blok Genesis může každý najít v libovolném průzkumníku blockchainu. Když se uzel potřebuje synchronizovat, může obdržet seznam všech aktuálně zveřejněných alternativních řetězců (více řetězců, které začínají stejným blokem Genesis). Uzel musí být schopen spolehlivě a správně určit, který řetězec je ten správný.

Je třeba říci, že online uzly tímto útokem netrpí, protože do určitého okamžiku vědí, která větev byla naposledy odsouhlasena jako hlavní. Online uzly nemají důvod přepisovat historii, pokud by to znamenalo přepisovat stovky nebo tisíce bloků zpět. Tento útok je tedy z hlediska úspěšnosti poměrně omezený. Probíhající konsensus nemusí být útokem dlouhého řetězce ovlivněn, protože protokol se řídí především pravidlem nejdelšího řetězce.

Různé protokoly PoS používají různá pravidla, aby tomuto typu útoku zabránily. U Cardana je to ještě složitější, protože nemá slashing, takže nemůže útočníka přímo potrestat odebráním jeho mincí jak to dělá Ethereum. U Cardana, stejně jako u Bitcoinu, jsou účastníci síťového konsensu placeni za to, že dělají správnou věc. Neobdržení odměny je formou trestu, takže motivace je pozitivní. V případě Etherea jsou účastníci placeni za to, že dělají správnou věc, ale mohou být také aktivně potrestáni za to, že dělají špatnou věc. Jinými slovy, mohou se dostat do výrazné ekonomické ztráty, která nebude způsobena volatilitou trhu.

Podívejme se, jak se může útočník pokusit spáchat útok dlouhým řetězcem na Cardano.

Především je důležité si uvědomit, že útočník je omezen počtem bloků, které může vytvořit na začátku podvodného řetězce. Ani na svém soukromém podvodném řetězci nemůže útočník podepisovat bloky rychleji než na skutečném hlavním řetězci. Platný blok musí obsahovat důkaz VRF. Útočník je omezen velikostí svého podílu (za předpokladu, že nemá většinu), což omezuje počet platných bloků, které může vytvořit.

Pokud má útočník řekněme pouze 20% podíl, může v počáteční fázi podvodného řetězce vytvořit pouze 20% bloků. Problém je v tom, že hlavní řetězec (80% podíl) může obsahovat více platných bloků (to je velmi pravděpodobné, ale některé sloty mohou bloky vynechat). Na obrázku níže je hlavní řetězec modrý. Útočník se snaží vytvořit červený řetězec.

Útočník se ve svém řetězci snaží předstírat, že ostatní uzly nevytvářejí bloky a že postupně získává vyšší stake, protože odměny dostává pouze on. Může tedy produkovat stále více bloků a nakonec dosáhnout stavu, kdy je jediným, kdo bloky produkuje pravidelně (třeba i každých 20 sekund, jak je obvyklé). Může tedy teoreticky vytvořit nejdelší řetězec (delší než hlavní řetězec).

Na začátku je podvodný řetězec téměř prázdný. Postupem času se postupně zahušťuje. Proto je k útoku potřeba velký počet bloků.

Později si ukážeme, proč útočník v tomto okamžiku již v útoku neuspěl. Ještě předtím se ale podíváme na to, co může zvýšit šanci na úspěch útočníka. Je důležité zmínit, že útočník může mít přístup k soukromým klíčům ostatních provozovatelů poolu. To by mu umožnilo vytvořit více podvodných, ale platných bloků v podvodném řetězci. Pokud by útočník získal klíče dalších dvou provozovatelů poolu a každý z nich by měl 10% podíl, měl by útočník celkem 40% podíl. Útok by měl větší šanci na úspěch, protože jeho řetězec by byl hned od začátku hustší. Stále však není dostatečně hustý ve srovnání s hlavním řetězcem.

Teoreticky je možné, že provozovatel poolu zálohuje soukromé klíče používané pro výrobu bloků a může je za peníze poskytnout útočníkovi. Útočník může například podplatit ostatní provozovatele poolů. Případně mohou být ochotni soukromé klíče prodat, když se rozhodnou z podnikání odejít. Je také možné, že se útočníkovi podaří tyto klíče ukrást. Obojí je ve velkém měřítku nepravděpodobné, ale možné.

Bezpečnost sítě Cardano se zvyšuje s počtem výrobců bloků. Dodejme, že bude mnohem obtížnější získat soukromé klíče provozovatelů poolů, kteří jsou stále aktivní a dostávají odměny od protokolu.

Všimněte si, že útočník může podepsat pouze staré bloky na podvodném řetězci. Pokud podplacený operátor ukončil činnost, nemá žádné nové soukromé klíče. Teoreticky je možné přesvědčit více provozovatelů poolu, aby se podíleli na vytvoření podvodného řetězce. Motivací je, že by provozovatelé mohli získat vyšší odměny. Tento útok je podobný 51% útoku, protože by vyžadoval nadpoloviční většinu stake.

Útočník (nebo více útočníků) může zvýšit šanci na prosazení podvodného řetězce tím, že zůstane v hlavním řetězci jako aktivní producent bloků. Kdykoli získá možnost produkovat nový blok, této možnosti se vzdá. Slot zůstává prázdný a nikdo jiný nemůže blok vyrobit. Bloky v hlavním řetězci budou postupně řídnout, zatímco bloky v podvodném řetězci budou na konci hustší.

Všimněte si, že útočník nezíská odměny na hlavních řetězcích, protože záměrně nevytvořil bloky. Jeho stake se tak bude snížovat. Útočník může mince nakoupit na trhu, ale tím se útok prodraží.

Prozkoumejme, jak se Cardano brání proti útoku. Protokol Cardano se nemůže spoléhat pouze na pravidlo nejdelšího řetězce. Naštěstí je definováno další pravidlo, které se nazývá pravidlo plnosti či hojnosti (Plenitude rule). Pokud dojde k rozvětvení v krátkém časovém úseku, pravidlo nejdelšího řetězce stále platí. Jakmile však dojde k forku za delší dobu, uplatní se pravidlo hojnosti.

Pravidlo hojnosti určuje, který řetězec je ten správný, podle hustoty bloků v krátkém časovém období. Na základě tohoto pravidla se uzel podívá na několik slotů, které se nacházejí těsně za forkem. Jinými slovy, pravidlo bere v úvahu pouze počáteční části dlouhých řetězců. Jako správný bude vybrán řetězec, ve kterém se v této části nachází více platných bloků. Na počtu bloků ve zbytku řetězce nezáleží.

Toto pravidlo vychází z předpokladu, že útočník nemůže ihned po forku vytvořit mnoho bloků, protože na to neměl dostatečný podíl. Jak jsme ukázali výše, podvodný řetězec je na začátku téměř prázdný.

Jednoduše řečeno, tato dvě pravidla stačí k tomu, aby uzel Cardano vždy rozpoznal, který řetězec je ten správný. Na krátké řetězce po rozvětvení aplikuje pravidlo nejdelšího řetězce a na dlouhé řetězce, opět po rozvětvení, pravidlo plnosti. Většinu času Cardanu stačí pravidlo nejdelšího řetězce. Pravidlo hojnosti se používá pouze v případě útoku.

Podpis vyvíjejícího se klíče

Key Evolving Signature (KES) je další kryptografický nástroj, který pomáhá chránit Cardano před útoky. Klíče KES používají výrobci bloků k podepisování nových bloků. Platnost klíče KES pravidelně vyprší po několika epochách.

Využívá se myšlenka schématu dopředného bezpečného podpisu. Tento mechanismus je založen na myšlence, že útočník není schopen zfalšovat podpisy, které byly provedeny v minulosti. Je možné zachovat stejný veřejný klíč, ale vytvářet stále nový soukromý klíč. Starý soukromý klíč lze tedy vymazat a nahradit nově vypočteným.

Nikdo tedy nemůže znovu podepsat bloky vymazaným KES klíčem. Pokud útočník kompromituje aktuální klíč, který se používá k podepisování bloků, může jej použít pouze k podepisování bloků od nynějška (a několik bloků zpět), ale ne bloků, které byly podepsány v (daleké) minulosti. To znemožňuje útočníkovi přepsat historii. Přesněji řečeno, není možné podepisovat již vytvořené bloky, když byly podepisovací klíče vymazány. Předpokládá se, že výrobci bloků nebudou záměrně uchovávat své KES klíče.

Existuje kryptografická konstrukce zvaná kvantový jednorázový podpis (quantum one-shot signature), která by umožnila použít soukromý klíč k podpisu bloku (nebo čehokoli jiného) jednou a právě jednou. Pokud by se tento koncept podařilo implementovat a použít v Cardanu, znamenalo by to, že by útočník nemohl vytvářet soukromé řetězce a podepisovat bloky soukromými klíči, které již byly v minulosti jednou použity. Jinými slovy, operátoři by si mohli ponechat soukromé klíče, ale ty by pro útočníka neměly žádnou hodnotu.

Závěr

Žádný ochranný mechanismus není stoprocentně účinný, a pokud je do útoku investováno dostatek prostředků, může být úspěšný. Náchylnost decentralizovaných sítí k 51% útokům je jejich přirozenou vlastností. Zranitelnost je daní za decentralizaci. Pokud někdo investuje dostatek prostředků do energie a hardwaru ASIC, může v síti PoW vytvořit delší řetězec. V síti PoS má útočník šanci spáchat podobný útok pouze v případě, že získá dostatečný počet soukromých klíčů. Provozovatelé poolu jsou odborníci a vědí, že klíče musí uchovávat na hardwarovém zařízení, které není připojeno k internetu. Útočníci tak mají šanci získat pouze “hot” klíče, ale ne “cold” klíče. S rostoucí decentralizací sítě Cardano se šance na útok výrazně snižuje. Je zřejmé, že čím více nezávislých výrobců bloků drží klíče, tím je útok obtížnější. Pokud jsou klíče vymazány, je útok dlouhého řetězce v podstatě nemožný a vyžadoval by útok hrubou silou (s využitím obrovského výpočetního výkonu).

Útočník má ještě jeden způsob, jak provést 51% útok na Cardano. Může se pokusit koupit na volném trhu takové množství mincí ADA, které mu zajistí dominanci v konsensu sítě. Tento útok je však ekonomicky velmi nákladný a převyšuje náklady na 51% útok na Bitcoin. Tento útok považujeme za téměř nemožný, přesto se jedná o platný vektor útoku.

V síti Bitcoin existují pooly, které existují již od vynálezu tohoto konceptu. Totéž se opakuje v síti Cardano. Pokud se provozovateli poolu daří, není důvod, aby podnikání opustil a podílel se na útoku. Dá se předpokládat, že staré pooly zůstanou ještě dlouho a postupně se objeví nové. Každý nový samostatný provozovatel poolu zvyšuje bezpečnost sítě Cardano.

Článek připrvili Cardanians za podpory Cexplorer.

Přečtěte si článek: How Cardano protects itself from 51% attack? | Cardano Explorer