Lekcia 16

Úvahy o téze „Nedôveruj, preveruj“

„A teraz dôkazy“, povedal kráľ, „a potom rozsudok“.

Cieľom bitcoinu je nahradiť alebo aspoň poskytnúť alternatívu ku konvenčným menám. Konvenčná mena je viazaná na centralizovaný orgán, bez ohľadu na to, či hovoríme o právnom doklade ako je americký dolár alebo moderných monopolných peniazoch ako sú V-Bucks vo Fortnite. V oboch príkladoch ste odkázaný na to, veriť centrálnej autorite, ktorá vydáva, spravuje a cirkuluje Vaše peniaze. Bitcoin rozväzuje toto puto a hlavným problémom, ktorý bitcoin rieši, je problém dôvery.

“Hlavným problémom konvenčnej meny je dôvera, ktorá je potrebná na to, aby fungovala. […] Potrebujeme elektronický platobný systém založený na kryptografickom dôkaze namiesto dôvery” Satoshi

Bitcoin rieši problém dôvery tým, že je celkom decentralizovaný, bez akéhokoľvek centrálneho serveru alebo dôverných strán. A nie iba bez dôverných tretích strán, ale úplne bez dôverných strán. Keďže neexistuje žiadny centrálny orgán, nie je komu dôverovať. Úplná decentralizácia predstavuje inováciu. Je to podstata odolnosti bitcoinu, dôvod, prečo ešte stále existuje. Kvôli decentralizácii tu máme ťažbu, nody, hardvérové peňaženky a áno, aj blockchain. Jediná vec, ktorej musíte „dôverovať“ je to, že naše chápanie fyziky a matematiky nie je celkom mimo a že väčšina minerov pracuje čestne (k čomu sú motivovaní).

Zatiaľ čo bežný svet funguje za predpokladu „dôveruj, ale preveruj“, bitcoin funguje za predpokladu „nedôveruj, preveruj“. Satoshi veľmi jasne vysvetlil dôležitosť odstránenia faktora dôvery v úvode aj závere bitcoinového whitepaperu.

“Záver: Navrhli sme systém pre elektronické transakcie bez toho, aby sme sa museli spoliehať na dôveru.” Satoshi Nakamoto

Všimnite si, že „nespoliehanie sa na dôveru“ sa tu používa vo veľmi špecifickom kontexte. Hovoríme o dôverných tretích stranách, teda iných entitách, ktorým dôverujete, že vyrábajú, držia a spracovávajú Vaše peniaze. Predpokladá sa napríklad, že môžete dôverovať svojmu počítaču.

Ako ukázal Ken Thompson vo svojej prednáške pri preberaní Turingovej ceny, dôvera je extrémne vrtkavá vec vo svete počítačov. Keď spúšťate program, musíte dôverovať všetkým typom softvéru (a hardvéru), ktorý by mohol teoreticky nevhodne zmeniť program, ktorý sa pokúšate spustiť. Ako zhrnul Thompson vo svojej publikácii Reflections on Trusting Trust: „Ponaučenie je jasné. Nemôžete dôverovať kódu, ktorý ste celý sami nevytvorili.“

Thompson ukázal, že aj keď máte prístup k zdrojovému kódu, váš kompilátor — alebo každý iný programovací program alebo hardvér — by mohol byť narušený a detekcia týchto zadných vrátok by bola zložitá. V praxi teda systém nepostavený na dôvere neexistuje. Museli by ste vytvoriť všetok softvér a hardvér (jednotky, kompilátory, linkery, atď.) z ničoho, bez pomoci externého softvéru alebo zariadení založených na softvéri.

“Ak chcete urobiť jablkový koláč z ničoho, najskôr musíte vymyslieť vesmír.” Carl Sagan

Hack Kena Thompsona sú obzvlášť geniálne a ťažko detekovateľné zadné vrátka, poďme sa teda rýchlo pozrieť na ťažko detekovateľné zadné vrátka, ktoré fungujú bez toho aby zmenili softvér. Výskumníci našli spôsob ako narušiť hardvér kritický pre bezpečnosť zmenou polarity kremičitých nečistôt. Jednoduchou zmenou fyzikálnych vlastností materiálu, z ktorého sú vyrobené počítačové čipy, bolo možné narušiť kryptograficky bezpečný generátor náhodných čísel. Keďže túto zmenu nevidieť, zadné vrátka sa nedajú detekovať optickou kontrolou, čo je jeden z najvýznamnejších mechanizmov na detekciu narušenia pri takýchto čipoch.

Tajné hardvérové trójske kone na úrovni dotovania polovodičov od Becker, Regazzoni, Paar, Burleson

Naháňa to strach? No aj keď by ste dokázali vybudovať všetko z ničoho, aj tak by ste museli dôverovať základnej matematike. Museli by ste veriť, že secp256k1 je eliptická krivka bez zadných vrátok. Áno, škodlivé spätné cesty sa dajú vložiť do matematických základov kryptografických funkcií a preukázateľne sa to už stalo minimálne raz. Existujú dobré dôvody na paranoju a dôvody veriť, že všetko od hardvéru, cez softvér, až po eliptické krivky môže mať zadné vrátka.

“Don’t trust. Verify.”

Vyššie uvedené príklady by mali znázorňovať, že výpočtová technika bez dôvery je utópiou. Bitcoin je pravdepodobne práve ten systém, ktorý sa dostáva najbližšie k tejto utópii, ale aj tak zahŕňa minimálnu dôveru — je zameraný na to, aby sa dôvera v maximálnej možnej miere eliminovala. Reťazec dôvery je nekonečný, pretože budete musieť dôverovať aj tomu, že výpočtová technika si vyžaduje energiu, že P sa nerovná NP a že ste naozaj v základnej realite a nie ste uväznení v simulácii škodlivými účastníkmi.

Vývojári pracujú na nástrojoch a postupoch pre ďalšiu minimalizáciu zvyšnej dôvery. Napríklad vývojári Bitcoinu vytvorili Gitian, čo je metóda distribúcie softvéru na vytvorenie deterministických buildov. Jej myšlienkou je to, že ak dokážu viacerí vývojári reprodukovať rovnaké binárne sústavy, šanca škodlivého narušenia sa minimalizuje. Vyšperkované zadné vrátka nie sú jediným vektorom útoku. Skutočnou hrozbou je aj obyčajné vydieranie. Tak ako v hlavnom protokole, decentralizácia sa používa na minimalizáciu dôvery.

Vykonávajú sa rôzne úsilia na vylepšenie bootstrapového problému sliepky a vajca, ktorý tak dokonale popísal Ken Thompson. jasné riadenie packagov vedúce k buildom navrhnutým tak, že každý jeden z ich bitov je presne reprodukovateľný. Výsledkom je, že už nemusíte dôverovať žiadnym serverom poskytujúcim softvér, keďže môžete overiť, Jedným takýmto úsilím je Guix (vyslovuj gíks), ktorý používa funkčne či binárny systém softvéru, ktorý sťahujete nebol náhodou niekým zmanipulovaný. Nedávno bol do procesu programovania Bitcoinu zlúčený pull-request, ktorý integruje Guix.

Čo bolo prvé? Sliepka alebo vajce?

Bitcoin sa našťastie nespolieha na jeden algoritmus alebo na jeden hardvér. Jedným z výsledkov radikálnej decentralizácie Bitcoinu je model distribuovanej bezpečnosti. Hoci by sme nemali brať hrozbu zadných vrátok popísaných vyššie na ľahkú váhu, je nepravdepodobné, že by sa narušila každá softvérová peňaženka, každá hardvérová peňaženka, každá kryptografická knižnica, každá implementácia nodov a každý kompilátor každého jazyka. Je to možné, ale vysoko nepravdepodobné.

Všimnite si, že môžete generovať súkromný kľúč tým, že sa nebudete spoliehať na žiadny hardvér alebo softvér. Môžete si niekoľko krát hodiť mincou, aj keď v závislosti od vašej mince a štýlu hádzania by tento zdroj náhodnosti nemusel byť dostatočne náhodný. Existuje dôvod, prečo by protokoly skladovania ako je Glacier, odporúčali používať kocky ako z kasína ako jeden z dvoch zdrojov entropie.

Bitcoin ma prinútil premýšľať, čo vlastne so sebou prinesie to, ak nebudem nikomu dôverovať. Zvýšilo a tým moje povedomie o samovzniku a implicitnom reťazci dôvery pri vývoji a spúšťaní softvéru. Takisto to zvýšilo moje povedomie o mnohých spôsoboch, akými sa dá softvér a hardvér narušiť.

Bitcoin ma naučil nedôverovať, ale preverovať.


Do zajačej nory