Lekce 16

Úvahy na téma "Nedůvěřuj, ověřuj"

"Nejprve svědectví," řekl král, "a potom rozsudek."

Cílem Bitcoinu je nahradit konvenční měnu, nebo k ní alespoň poskytnout alternativu. Konvenční měna je vázána na centralizovanou autoritu, ať už mluvíme o zákonném platidle, jako je americký dolar, nebo o moderních monopolních penězích, jakými jsou V-Bucks ve Fortnite. V obou případech jste vázáni důvěrou v centrální moc, která vaše peníze vydává, spravuje a uvádí do oběhu. Bitcoin tato pouta rozvazuje a hlavním problémem, který řeší, je otázka důvěry.

“Základním problémem konvenční měny je důvěra, která je nutná k jejímu fungování. […] Je potřeba zavést systém elektronických plateb založený na kryptografických záznamech, nikoliv na důvěře” Satoshi

Bitcoin řeší problém důvěry tím, že je zcela decentralizovaný, bez ústředního serveru nebo důvěryhodných stran. Dokonce ani ne důvěryhodných třetích stran, ale prostě důvěryhodných stran a tečka. Když neexistuje centrální autorita, není jednoduše komu věřit. Inovací je úplná decentralizace. Právě ona je podstatou odolnosti Bitcoinu, důvodem, proč je stále naživu. Decentralizace je také příčinou, proč máme těžbu, uzly, hardwarové peněženky a ano, blockchain. Jediné, čemu musíte “věřit”, je, že naše chápání matematiky a fyziky není úplně mimo a že většina těžařů jedná čestně (k čemuž jsou motivováni).

Zatímco v běžném světě platí zásada “důvěřuj, ale prověřuj”, u Bitcoinu platí zásada “nedůvěřuj, ověřuj”. Satoshi velmi jasně zdůraznil důležitost odstranění důvěry jak v úvodu, tak v závěru whitepaperu.

“Závěr: Předložili jsme systém elektronických transakcí, který není závislý na důvěře.” Satoshi Nakamoto

Všimněte si, že výraz “nezávislý na důvěře” je zde použit ve velmi specifickém kontextu. Mluvíme o důvěryhodných třetích stranách, tj. jiných subjektech, kterým věříte, když produkují, drží a zpracovávají vaše peníze. Předpokládá se například, že můžete důvěřovat svému počítači.

Jak ukázal Ken Thompson ve své přednášce při udílení Turing Award, důvěra je ve světě počítačů velmi ošemetná věc. Při spouštění programu musíte důvěřovat nejrůznějšímu softwaru (a hardwaru), jenž by teoreticky mohl program, který se snažíte spustit, škodlivým způsobem změnit. Jak shrnul Thompson ve svých Úvahách o důvěře v důvěru: “Poučení je zřejmé. Nemůžete důvěřovat kódu, který jste sami zcela nevytvořili.”

Thompson ukázal, že i když máte přístup ke zdrojovému kódu, může být váš kompilátor - nebo jakýkoli jiný program či hardware pracující s vaším programem - kompromitován a odhalení těchto zadních vrátek bude velmi obtížné. V praxi tedy opravdový systém bez důvěry neexistuje. Veškerý váš software i veškerý váš hardware (assemblery, kompilátory, linkery atd.) byste museli vytvořit sami od začátku, bez pomoci jakéhokoli externího softwaru nebo softwarově podporovaných strojů.

“Chcete-li upéct jablečný koláč od základu, musíte nejprve vymyslet vesmír.” Carl Sagan

Hack Kena Thompsona je obzvláště důmyslný a těžko odhalitelný backdoor. Pojďme se tedy krátce podívat na složitě odhalitelná zadní vrátka, která fungují bez úpravy jakéhokoli softwaru. Výzkumníci našli způsob, jak ohrozit bezpečnostně kritický hardware změnou polarity křemíkových nečistot. Pouhou změnou fyzikálních vlastností látky, ze které jsou vyrobeny počítačové čipy, se jim podařilo kompromitovat kryptograficky bezpečný generátor náhodných čísel. Protože tato změna není vidět, nelze takový backdoor odhalit optickou kontrolou, která je u takových čipů jedním z nejdůležitějších mechanismů pro odhalení neoprávněné manipulace.

Skryté hardwarové trojské koně na úrovni dopování polovodičů od autorů Becker, Regazzoni, Paar, Burleson

Zní to děsivě? No, i kdybyste byli schopni sestavit vše od nuly, stejně byste museli věřit základní matematice. Museli byste věřit, že secp256k1 je eliptická křivka bez zadních vrátek. Ano, do matematických základů kryptografických funkcí lze vložit škodlivý backdoor a pravděpodobně se to již minimálně jednou stalo. Existují dobré důvody, proč být paranoidní, a skutečnost, že vše od hardwaru přes software až po používané eliptické křivky může mít zadní vrátka, patří mezi ně.

“Nedůvěřuj. Ověřuj.”

Výše uvedené příklady by měly ilustrovat, že výpočetní technika bez důvěry je utopie. Bitcoin je pravděpodobně jediný systém, který se této utopii blíží nejvíce, ale i tak jen potřebu důvěry minimalizuje - jeho cílem je odstranit důvěru všude, kde je to možné. Řetězec důvěry je pravděpodobně nekonečný, protože budete muset věřit také tomu, že výpočet vyžaduje energii, že P se nerovná NP a že se skutečně nacházíte v realitě a nejste uvězněni zlomyslnými agenty v simulaci.

Vývojáři pracují na nástrojích a postupech, které mají zbývající prvky důvěry ještě více minimalizovat. Bitcoinoví developeři například vytvořili Gitian, což je metoda distribuce softwaru pro vytváření deterministických sestav. Myšlenka spočívá v tom, že pokud je více vývojářů schopno reprodukovat identické binární soubory, snižuje se pravděpodobnost zneužití. Efektní backdoory nejsou jediným vektorem útoku. Reálnou hrozbou je i prosté vydírání nebo násilné vymáhání. Stejně jako v případě hlavního protokolu se k minimalizaci důvěry využívá decentralizace.

Stále jsou vyvíjeny různé snahy o zlepšení problému bootstrappingu (což je v podstatě variace na odvěké dilema slepice vs. vejce), na který tak brilantně poukázal hack Kena Thompsona. Jednou z takových snah je Guix (vyslovuje se geeks), který používá funkčně deklarovanou správu balíčků, což vede přímo k bitově reprodukovatelným sestavením. Výsledkem je, že už nemusíte důvěřovat žádným serverům poskytujícím software, neboť si můžete ověřit, že do předkládané binární verze nebylo zasahováno, a to tím, že ji sestavíte od začátku. Nedávno byla do zdrojového kódu sloučena žádost o změnu, jejímž cílem bylo začlenit Guix do procesu sestavování Bitcoinu.

Co bylo dřív - slepice, nebo vejce?

Bitcoin naštěstí nespoléhá na jediný algoritmus nebo kus hardwaru. Jedním z důsledků radikální decentralizace Bitcoinu je distribuovaný bezpečnostní model. Ačkoli výše popsaná zadní vrátka nelze brát na lehkou váhu, nelze předpokládat, že by byla kompromitována každá softwarová peněženka, každá hardwarová peněženka, každá kryptografická knihovna, každá implementace uzlu a každý kompilátor každého jazyka. Je to možné, ale velmi nepravděpodobné.

Je třeba poznamenat, že soukromý klíč můžete vygenerovat, aniž byste se museli spoléhat na výpočetní hardware nebo software. Můžete si několikrát hodit mincí, i když v závislosti na použité minci a stylu házení nemusí být tento zdroj náhodnosti dostatečně náhodný. Existuje proto důvod, proč úložné protokoly, jako je Glacier, doporučují používat jako jeden ze dvou zdrojů entropie hrací kostky určené pro kasino.

Bitcoin mě donutil zamyslet se nad tím, co vlastně obnáší nevěřit nikomu. Upozornil mě na problém bootstrappingu a na implicitní řetězec důvěry při vývoji a provozování software. Uvědomil jsem si také mnoho způsobů, jakými lze software a hardware kompromitovat.

Bitcoin mě naučil nedůvěřovat, ale ověřovat.


    Hlouběji králičí norou