Príbehy o tom, ako si niekto zle napísal zálohu, prípadne ako niekto hľadá svoj starý disk s vyťaženými Bitcoinmi na smetisku, sa množia ako huby po daždi. Tragické úmrtia a snaha rodiny dešifrovať „bezpečne“ urobenú zálohu správcu rodinného bitcoinového majetku, aby mohli pokračovať v živote, sa skôr či neskôr dotknú každého bitcoinera. Najlepším liekom na tieto stresujúce situácie je prevencia – a tou je v tomto prípade dobre urobená záloha. Keďže je však Bitcoin decentralizovaný projekt, je viacero spôsobov ako urobiť zálohu a my si musíme vybrať.
Prístup k Bitcoinom riadi vo väčšine prípadov vlastníctvo súkromných kľúčov. Nie vo všetkých prípadoch však musí samotné vlastníctvo kľúčov stačiť, k tomuto problému sa ešte dostaneme. Súkromné kľúče reprezentujeme najčastejšie pomocou zálohy tzv. „mnemonického seedu“, teda určitého počtu slov v správnom poradí. Najčastejšie ide o 12 slov, ale bežné sú aj 20, 24 alebo 36-slovné seedy.
Vytvorením zálohy však príbeh nekončí. Dôležité je ako ju uchováme a zabezpečíme, kto a ako má k nej prístup a podobne.
Na to, aby sme mali dobrú zálohu, mala by spĺňať niekoľko požiadaviek.
Prvou požiadavkou je, aby záloha bola trvácna. Ak by ste zálohu uchovali na 3.25" disketu, je to možno dobrý spôsob uloženia, ale načítanie môže byť zložitejšie alebo nemusí zafungovať vôbec. Jednak kvôli tomu, že málokto má doma disketovú mechaniku (čo môže byť aj výhoda – málo zlodejov má disketovú mechaniku), ale aj kvôli tomu, že magnetický digitálny záznam nemusí prežiť dlhšie obdobie bez ujmy.
Josh Datko, známy svojimi hackmi hardvérových peňaženiek (o ktorých si ešte povieme), vo svojom kazetovom magazíne Bitpunk.fm vysvetľuje, že zálohu Bitcoinov je možné uložiť aj na magnetofónovú pásku. Spĺňa základné bezpečnostné požiadavky – je offline a nie je digitálna. Podstatné však je, aby ju bolo možné prečítať aj v budúcnosti.
Pri tomto princípe máme veľa možností – napríklad častý spôsob uloženia zálohy je na papier, ktorý však môže vyšednúť, prípadne ľahko zhorieť pri požiari. Mimochodom, pre takéto prípady nie je zlé mať „zálohu zálohy“. Rôzne produkty však tieto nedostatky riešia po svojom, napríklad vyrazením zálohy do plechu, ktorý odoláva požiaru.
Odolnosť zálohy voči prírodným živlom (korózii, ohňu, …) skúmal Jameson Lopp vo svojej známej sérii testov.
Druhou vlastnosťou dobrej zálohy je, že je možné ju obnoviť. To môže na prvý pohľad znieť ako samozrejmosť, ale veľa ľudí sa popáli práve na tom, že robí zálohy bez toho, aby vyskúšali, či vytvorenú zálohu dokážu obnoviť. Typickým príkladom nemožnosti obnovy je použitie frázy (passphrase), ktorú si nezapamätáme a nemáme odzálohovanú alebo vytvorenie šikovnej schémy pomocou ktorej zálohu zmeníte tak, že ju obnovíte len vy – častý príklad je rozdelenie zálohy alebo uloženie slov v rôznom poradí.
Kryptografia zaviedla pri šifrovaní (ale v tomto prípade to platí aj pri podpisovaní) základné rozdelenie dobrého šifrovania na algoritmus, kľúč a dáta. Dáta by sme mali vedieť dešifrovať (v tomto prípade ale skôr použiť na podpis) pomocou použitia algoritmu a kľúča. Pričom algoritmus je verejne známy a kľúč je jediné, čo by malo byť tajné. Obfuskácia, zmena kľúča tak ako si pamätáme a podobné techniky tento princíp narušujú – pridávajú niečo tajné do algoritmu uloženia kľúča. To môže pridať na jednej strane bezpečnosť proti krádeži (k tomu sa dostaneme v ďalšom princípe), ale výrazne to zvyšuje riziko toho, že zálohu nebudete vedieť obnoviť, keď to budete potrebovať – či už vy, alebo vaši blízki. Našťastie existujú oveľa lepšie spôsoby ako zabezpečiť kľúč proti krádeži.
Ak vieme, že záloha „prežije“ a že ju budeme schopní obnoviť, musíme vyriešiť protipól – dokážeme ju obnoviť len my alebo ľudia, ktorí k nej majú mať prístup? Dokážu ju obnoviť kedykoľvek alebo len za istých okolností (napríklad ak sa nám niečo stane)?
Napríklad záloha na papieriku v zásuvke k peňaženke bez passphrase nespĺňa túto vlastnosť – ktorýkoľvek zlodej, ktorý na papierik narazí vám vaše Bitcoiny dokáže ukradnúť jednoducho tak, že ich naimportuje do peňaženky. Nespĺňa to ani digitálna záloha, pri úspešnom útoku na váš počítač prídete o vaše Bitcoiny. Dokonca väčšina malvéru už dokáže hľadať zálohy Bitcoinov vo forme seedu a ich odcudzenie je plne automatizované. Preto sa hovorí, aby ste si neukladali Bitcoiny digitálne na počítač alebo iné zariadenie. Odfotiť seed mobilom tiež nie je dobrý nápad, z fotky pri súčasných algoritmoch rozpoznávania písma dajú vaše Bitcoiny ukradnúť triviálne.
Najbežnejší spôsob zálohy vašich Bitcoinov vám ponúkne takmer každá moderná bitcoinová peňaženka – 12 alebo 24 anglických slov v správnom poradí. Z nich je možné vypočítať pomocou algoritmu zdokumentovanom v štandarde BIP39 tzv. master private key (hlavný privátny kľúč) alebo zvaný tiež master seed. Týmto kľúčom stále nie sú zamknuté Bitcoiny, pretože kľúčov máme toľko, koľko máme peňaženiek a adries. Na to, aby sme dokázali získať privátny kľúč ku konkrétnej adrese treba urobiť ešte ďalší výpočet. Ten je definovaný v štandarde BIP32.
Na obnovu Bitcoinov na on-chain peňaženke teda skutočne v najjednoduchšom prípade nepotrebujeme nič viac, len zálohu v podobe mnemonického seedu (12 slov). Z nich sa vypočíta hlavný privátny kľúč, z neho sa vypočítajú privátne kľúče pre všetky možné adresy zo všetkých peňaženiek. A z nich sa vypočítajú napokon adresy, pri ktorých sa softvér peňaženky pozrie na Bitcoinový blockchain, či sú tam nejaké Bitcoiny.
Tento mechanizmus vysvetľuje aj to, že prijímať na hardvérovú peňaženku môžeme aj keď je peňaženka odpojená – adresa je vytvorená výpočtom zo seedu spôsobom, ktorý zabezpečí, že budeme môcť pomocou peňaženky podpísať transakciu z danej adresy, ale v peňaženke ako takej nie sú uložené žiadne bitcoiny, tie sú vo vyťažených blokoch. Preto je lepším názvom pre hardvérovú peňaženku v skutočnosti kľúčenka. V peňaženke nemáme žiadne Bitcoiny, iba kľúče k Bitcoinom, ktoré sú na adresách, ku ktorým používame kľúče.
Pri tomto type zálohy väčšina ľudí začne aj skončí. V zásuvke na papieriku napísané slová a hardvérová peňaženka, ktorá má tieto slová uložené v pamäti. Problém je v prípade oboch – ak niekto nájde papierik, má vaše Bitcoiny. Konkrétne z nich dokáže vypočítať všetky kľúče na to, aby si Bitcoiny mohol poslať na svoju adresu. Ľudia sa často snažia zlepšiť bezpečnosť napríklad tak, že zálohu rozdelia na dve časti (napríklad 6 slov na jednom papieriku a 6 slov na druhom papieriku) a tieto papieriky uložia na osobitné miesta. Problém pri tomto type zálohy je, že zvyšujeme riziko, že zálohu neobnovíme. Zálohu sme mali na jednom papieriku, teraz máme papieriky dva, z ktorých keď ľubovoľný stratíme, k Bitcoinom sa nedostaneme. Navyše, bezpečnosť takejto zálohy je polovičná (útočník má v skutočnosti 6 slov). A samozrejme, ak slová zapisujeme zvláštne (na preskáčku, prípadne ich rozdelíme neštandardne), zvyšujeme riziko, že z papierikov zálohu neobnovíme. Tento problém do veľkej miery rieši záloha pomocou Shamirovej schémy, o ktorej si povieme nižšie.
Druhým problémom je samotná hardvérová peňaženka. Tá má seed slová uložené vo svojej pamäti. Na prístup k nej potrebujeme za normálnych okolností zadať PIN a ak sa nám to nepodarí 10× za sebou, peňaženka sa väčšinou zmaže. Problém je, že k slovám sa často dá dostať aj inou cestou, napríklad ich útočník môže prečítať z pamäte pomocou elektroniky. Tomu sa peňaženky snažia rôznymi spôsobmi zabrániť, nie je to však úplne nemožné, ako demonštrovali Thomas Roth, Dmitry Nedospasov a už spomínaný Josh Datko vo svojej prednáške wallet.fail:
Moderné peňaženky sa snažia brániť rôznymi spôsobmi. Peňaženky ako ColdCard, Trezor Safe 3 a Trezor Safe 5, či Ledger Nano sa snažia používať tzv. Secure Element, čo je špeciálne chránený čip proti podobným útokom. Keďže tieto čipy nie sú open-source, založila firma Satoshi Labs firmu Tropic Square, ktorá sa snaží vyvinúť prvý skutočne open-source secure element čip.
Firma Blockstream presúva secure element do cloudu. Ich peňaženka Jade seed sa rozdelí na dve časti (šikovnejšie ako rozdelením slov na polovicu), pričom ktorákoľvek časť tejto zálohy je bez druhej úplne nepoužiteľná a nedáva útočníkovi žiadnu dodatočnú informáciu. Jedna časť je uložená v pamäti hardvérovej peňaženky, druhá je uložená na serveri Blockstreamu. V prípade, že chcete peňaženku použiť, musíte zadať PIN. Po jeho zadaní server Blockstreamu pošle vašej peňaženke druhú časť seedu a tá sa v dočasnej pamäti zariadenia Jade spojí. Keď Jade vypnete alebo dokončíte prácu, z dočasnej pamäte RAM sa druhá časť zmaže a peňaženka je bez zadania pinu a druhej časti znova nepoužiteľná. Blockstream pritom má iba polovicu seedu, ktorá je sama o sebe nepoužiteľná na nič (dokonca ani na identifikáciu používateľa a jeho adries).
Dobrým riešením všetkých spomínaných problémov je používanie tzv. passphrase. Používa sa podobne ako keby ste používali heslo (je to niečo, čo si vymyslíte a pri používaní peňaženky ho musíte zadať), v skutočnosti však ide skôr o ďalšie slovo seedu. To znamená, že k slovám seedu sa priloží passphrase a až z tohto reťazca sa vypočítavajú kľúče. Passphrase teda nie je možné zmeniť – respektíve ak použijete inú (nesprávnu) passphrase, odomkne sa vám iná peňaženka. Tu je dôležité si uvedomiť, že poznať presné znenie passphrase je nutnou podmienkou použitia peňaženky a strata (zabudnutie) passphrase spôsobí, že svoje Bitcoiny nebudete môcť použiť. Passphrase je tak potrebné dobre odzálohovať.
Problém s papierikom so seedom, ktorý nájde útočník, rieši tak, že bez znalosti passphrase iba so samotným seedom nie je možné ani len zistiť o akú peňaženku ide, nie to ešte odoslať Bitcoiny. Ale toto riešenie vytvára druhý problém – ako nestratiť passphrase? Je potrebné ju tiež niekam zapísať. Tento fakt zdôrazňujem – je veľa ľudí, ktorí použili passphrase, ktorú si určite zapamätajú a pár rokov na to chodili na sedenia k hypnoterapeutovi, aby si na zabudnutú passphrase spomenuli. Pri zálohe sa nikdy nespoliehajte na to, že si niečo zapamätáte. Passphrase môžete napríklad uložiť na rôzne miesta (napríklad k rodinným príslušníkom).
Passphrase je potrebné použiť vždy keď pristupujete k peňaženke. Väčšina peňaženiek vám ju dovolí zadať buď na počítači alebo na peňaženke samotnej – odporúčam zadávať na peňaženke, aj keď zadávanie na klávesnici vášho zariadenia môže byť pohodlnejšie. Znova – vaše zariadenie môže byť infikované malvérom, ktorý odchytáva, čo na ňom píšete a obzvlášť sa zaujíma o kolonky, kde sa píše nejaké heslo.
Passphrase chráni pred útokom na samotnú hardvérovú peňaženku, pretože v zariadení je uložený iba seed, ale nie je tam uložená passphrase. Ak sa útočníkovi hardvérovým útokom podarí získať seed, bez passphrase mu je tento seed nanič.
Ak máme dobre odzálohovaný seed a používame passphrase, mali by sme mať vyriešenú trvácnosť zálohy a možnosť obnovy. Zároveň by sme mali byť chránení proti bežným zlodejom, ktorí nám vykradnú domácnosť a získajú či už zálohu seedu na papieriku alebo samotnú peňaženku. Stále sme však nevyriešili všetky možné útoky. Jeden z najbežnejších útokov, ktorý je bohužiaľ stále častejší je fyzický útok – únos a násilie.
Častým odporúčaným riešením tohto problému je používať viac rôznych passphrase. Táto technika sa volá „hidden wallets“ (skryté peňaženky). Hovorili sme si, že passphrase je v podstate ďalšie slovo seedu a teda ak zadáme inú passphrase, odomkneme inú peňaženku. Technika skrytých peňaženiek využíva tento fakt – ak príde útočník a bude chcieť odomknúť peňaženku, zadáme passphrase k peňaženke, ktorú používame, ale nemáme tam všetky Bitcoiny. Útočník odíde s nejakými peniazmi, my si zachránime majetok.
O užitočnosti tejto stratégie mám pochybnosti. Marginálny náklad pokračovania v útoku je pomerne malý a keďže táto schéma je pomerne známa (teda o nej vedia aj útočníci), myslím, že jediný spôsob ako odolať tomuto typu útoku je v skutočnosti nemať žiadnu možnosť okamžitého prístupu k peňaženke s úsporami, napríklad tak, že ju potrebujeme vyskladať z viacerých miest, nemáme ju v žiadnej peňaženke alebo sú Bitcoiny v peňaženke zamknuté pomocou časového zámku.
Poďme ešte k fyzickým útokom na peňaženky. Existujú dva typy útokov, ktoré nás môžu ohroziť. Prvým je útok na dodávateľský reťazec. Ten mimochodom nie je iba doménou hardvérových peňaženiek. Tento typ útoku využíva fyzický prístup k zariadeniu pri ceste od výrobcu k zákazníkovi. Ak útočník dokáže otvoriť zariadenie a zmeniť mu firmvér, prípadne zmeniť hardvér, je možné vytvoriť zadné dvierka. V prípade hardvérovej peňaženky to môže byť napríklad o tom, že namiesto vygenerovania náhodného kľúča vytvorí peňaženka kľúč so seedom, ktorý je známy útočníkovi a odignoruje prípadnú passphrase. Peňaženka sa fyzicky tvári rovnako, ale robí niečo iné ako originálne zariadenie od výrobcu. Tento problém sa týka kúpy peňaženiek z druhej ruky, z neautorizovaného obchodu, ale v prípade serverového hardvéru nastal dokonca aj odchytením zásielky počas prepravy.
Výrobcovia sa tento problém snažia riešiť pečaťami s hologramami a rôznymi inými spôsobmi. Azda najjednoduchšie dostupné riešenie je kupovať zariadenie priamo od výrobcu alebo od reputovaného predajcu (napr. Alza).
Druhý útok sa volá „zlá upratovačka“ (evil maid). Je to kategória útokov, kam patrí aj spomínaný útok na peňaženku za účelom vytiahnutia seedu z jeho pamäte. Sú to útoky, ktoré môže vykonať niekto, kto má fyzický prístup k zariadeniu na dlhší čas (napr. pár hodín). K týmto útokom patrí napríklad výmena kábla od klávesnice za kábel, ktorý všetky stlačené klávesy vysiela pomocou rádiového signálu (kábel funguje ako anténa). V prípade hardvérových peňaženiek je to napríklad hardvérová modifikácia (alebo aj výmena) peňaženky za takú, ktorá odvysiela passphrase, prípadne generuje adresy, ktoré patria útočníkovi. Medzi spôsoby obrany patrí „pečať“, kontrola, či zariadenie nebolo otvorené silou a jeho prispôsobenie (napríklad zmena obrázku úvodnej obrazovky), aby sme vedeli identifikovať, či nebolo zariadenie vymenené kus za kus. Medzi dobré spôsoby obrany môže patriť aj uloženie hardvérovej peňaženky do uzamykateľného trezoru.
Niektoré peňaženky (napríklad ColdCard) umožňujú aj zadanie tzv. „Duress PIN“, ktorý odomkne úplne inú peňaženku. Má to podobný efekt ako zadanie inej passphrase. Ďalšou fyzickou bezpečnostnou funkcionalitou je tzv. „Brick me“ PIN, ktorý peňaženku zmaže a ireverzibilne zničí (nedá sa už nijak aktivovať). Mimochodom, ak používate mobilné zariadenie s GrapheneOS, podobný koncept funguje aj u nich, po zadaní tohto PINu sa zariadenie okamžite zmaže.
Aj keď anglické slová väčšinou píšeme perom na papier, obnova na peňaženkách s malým dotykovým displejom alebo tlačidlami nie je úplne používateľsky prívetivá. Peňaženky SeedSigner a Blockstream Jade umožňujú preto vytvoriť zálohu aj v podobe QR kódu. Tento dokážeme v prípade potreby obnovy načítať pomocou kamery, ktorá je integrovaná v týchto dvoch zariadeniach.
Ako však vytvoríme QR kód, ak nemáme seed uchovávať digitálne? Poslať seed v podobe QR kódu na tlačiareň nie je dobrý nápad, čo ak sú zariadenia deravé a dáta posielajú preč? (Mimochodom, pri tlačiarňach to nie je vôbec nepravdepodobná vec – firmvér tlačiarní je notoricky deravý a výrobcovia často nevydávajú aktualizácie a používatelia aktualizácie firmvéru ešte menej často aktualizujú).
Odpoveďou je papier a čierna fixka. Na papieri (ktorý dostanete s Jade alebo si ho môžete vytlačiť) je vytlačená základná mriežka a vodiace štvorce QR kódu. Peňaženka vám ukáže, ktoré štvorčeky máte vymaľovať fixkou a potom vám umožní overiť správnosť vymaľovania šablóny pomocou kamery. Ak sa QR kód správne načíta, máte urobenú zálohu, ktorú môžete obnoviť pomocou týchto peňaženiek. Pozor, odporúčam nenačítavať mobilmi a inými zariadeniami, dokonca aj ak nie sú zrovna pripojené na internet – jednak sa načítaný QR kód často ukladá do histórie a okrem toho každý malvér môže odchytené informácie lokálne uložiť a odvysielať keď sa na internet pripojí.
Doteraz sme sa bavili o najjednoduchšej schéme – na minutie Bitcoinov z adresy potrebujeme podpis jedným privátnym kľúčom. Bitcoin však podporuje omnoho širšie spektrum podmienok, vďaka skriptovaciemu jazyku Bitcoin Script. Vďaka tejto funkcionalite napríklad môže fungovať sieť Lightning network.
Jednou z najzaujímavejších možností čo sa týka zálohu je tzv. multisig, teda nutnosť použiť na podpis transakcie viacero kľúčov. Túto funkcionalitu podporujú viaceré hardvérové peňaženky, aj keď často je potrebné použiť alternatívnu softvérovú peňaženku, napríklad Sparrow Wallet, Electrum, či známa peňaženka Nunchuk, ku ktorej sa ešte dostaneme.
Multisig peňaženka po vytvorení, nastavení a spárovaní jednotlivých podpisovacích zariadení (kľúčeniek) vytvorí špeciálne adresy, z ktorých je možné míňať len za prítomnosti dostatočného množstva podpisov. Je napríklad možné vytvoriť peňaženku „2 zo 4“, kedy sú potrebné dva podpisy zo štyroch. Túto peňaženku môžeme vytvoriť napríklad tak, že jeden možný podpis bude softvérová peňaženka (napríklad spomínaná Sparrow wallet so softvérovým kľúčom). Ďalší kľúč bude z hardvérovej peňaženky (napríklad Trezor Safe 3 s passphrase) a ďalšie dva kľúče budú kľúče z obálok vo forme QR kódu (SeedQR) a zálohy seed slov.
Po vytvorení takejto peňaženky dostaneme nové adresy. Ak na ne pošleme Bitcoiny, potrebujeme ktorékoľvek dva podpisy zo štyroch možných. Na to, aby sme mali dostatočnú zálohu, aj bezpečnosť teda potrebujeme spoluprácu dvoch podpisovacích zariadení. Tie môžeme rozdistribuovať napríklad takto:
Bežné použitie je vytvorenie a podpísanie transakcie na počítači (so softvérovým kľúčom) a dodatočné podpísanie Trezorom. V prípade, že prídeme o jeden z kľúčov (napríklad nám ukradnú počítač alebo stratíme hardvérovú peňaženku), môžeme ho získať od rodinného príslušníka a Bitcoiny poslať na novú sadu adries. V prípade našej smrti pri dedičskom konaní môže byť štvrtý kľúč použitý v súlade s našou poslednou vôľou (a spolu s kľúčom od dôveryhodného rodinného príslušníka).
Peňaženka ako napríklad Nunchuck zjednodušuje proces vytvorenia a pridáva možnosť uloženia kľúča pre dedičstvo v rámci ich plateného programu úschovy Bitcoinov. Tu je dôležité uvedomiť si, že žiadny kľúč sám o sebe nemôže byť použitý na minutie Bitcoinov, vždy je potrebná spolupráca aspoň dvoch kľúčov pri podpisovaní. To, aby sme mali prístup k našim Bitcoinom sme vyriešili tak, že sme si nechali dva zo štyroch kľúčov a máme k ním prístup, takže môžeme použiť obidva kľúče. Takto sa dajú vytvoriť ľubovoľne jednoduché a zložité schémy, napríklad sa vieme brániť proti možnej chybe v hardvérovej peňaženke a vyžadovať podpisy od dvoch hardvérových peňaženiek rôznych výrobcov a podobne.
Má tento prístup nevýhody? V súčasnom prípade je prvou zjavnou nevýhodou výška poplatku, keď budeme transakcie míňať. Ak by ste si napríklad takto chceli sporiť mesačne vo výške napríklad 50 € mesačne, minutie každých coinov by mohlo byť kľudne štyrikrát drahšie ako bežná platba, pričom podpisovať je potrebné každú prijatú neminutú transakciu (UTXO). Keďže nevieme, aké poplatky budú v budúcnosti, je to problém. Na tento problém sme narazili napríklad v jednom neziskovom projekte, kde míňanie dobrovoľných príspevkov schvaľovala dozorná rada práve pomocou multisig schémy – a žiaľ na minutie mnohých príspevkov bolo potrebné zaplatiť poplatok, ktorý bol vyšší ako príspevok samotný.
Druhou a podstatnou nevýhodou je, že nestačí mať prístup k privátnym kľúčom dostatočného počtu zariadení, musíte mať aj zálohu celej podpisovej schémy. Ak sa vám po zásuvkách váľajú rôzne hardvérové peňaženky a vytvoríte z nich napríklad schému 2 z 3, ak jednu peňaženku stratíte, nedokážete vytvoriť podpis ani s dodatočnými dvoma zariadeniami – na vytvorenie adresy a platného Bitcoin scriptu je totiž potrebné poznať verejný kľúč aj tretieho zariadenia a presnú schému, ako bola podpisová schéma vytvorená. Ak si teda niekto myslí, že zálohou sú tri sady seedov troch peňaženiek, môže byť pri obnove veľmi sklamaný.
Komplikovanosť tejto schémy je zároveň jej najväčšou nevýhodou. Nutnosť zálohy a výmeny čiastočne podpísaných transakcií použitie komplikuje a je preto vhodnejšie pre pokročilých používateľov. Peňaženky ako Nunchuck môžu použitie zjednodušiť.
Na zálohu multisigovej (alebo akejkoľvek komplikovanejšej) bitcoinovej peňaženky je potrebné poznať formát skriptu, ktorým sú uzamknuté bitcoiny. Z tohto skriptu sa potom vytvára Bitcoinová adresa a skript musí presne na bajt sedieť. Na zjednodušenie záloh bolo vymyslených niekoľko štandardov. Prvým je BIP-0380, ktorý popisuje výstupné deskriptory. Na ich jednoduchšie zálohovanie a používanie vznikol formát súborov BSMS (súbor s príponou .bsms), ktorý obsahuje všetko potrebné na vytvorenie multisig peňaženky. Je popísaný v štandarde BIP-0129.
Ak si vytvoríte multisig peňaženku, vaša peňaženka by mala mať možnosť uložiť jej popis vo formáte BSMS. Ten môžete vytlačiť vo forme QR kódu alebo dobre odzálohovať na digitálne médium (lepšie oboje), pretože bez neho nebude možné zálohu obnoviť, ak nebudete mať prístup ku všetkým seedom a netrafíte presný formát multisig schémy. Na druhej strane, multisig peňaženky využívajúce tento formát by mali byť kompatibilné.
Multisig vyžaduje viac podpisov z pevne danej množiny kľúčov. Niečo na prvý pohľad podobné dodáva shamirova schéma – ale nevyžaduje viac podpisov, ale rozdeľuje jeden kľúč na viac častí. Toto je jeden z najlepších spôsobov zálohy a je predvoleným spôsobom vytvorenia zálohy v prípade novej peňaženky Trezor Safe 5.
Shamirovu schému na zálohu peňaženky špecifikuje otvorený štandard z dieľne Satoshi Labs SLIP-39. Jeho autori stáli aj za štandardom BIP-39, ale je nutné podotknúť, že aj keď je tento štandard otvorený, zatiaľ ho nepodporuje žiadna iná peňaženka ako peňaženky Trezor (okrem Trezor One) a command-line softvérová peňaženka Hermit. Aj napriek tomu v prípade, že sa prestanú vyrábať hardvérové peňaženky Trezor, stále máte možnosť použiť referenčnú open-source implementáciu na obnovu vašich Bitcoinov.
Ak sme pri tradičnej zálohe seedom mali napríklad 12 slov, vieme si v prípade Shamirovej schémy vytvoriť rôzne sady seedov podľa toho, ako ich potrebujeme. Napríklad môžeme vytvoriť podobnú schému ako sme spomínali vyššie – bude potrebné dve sady zo štyroch. Jednotlivé sady slov môžu vyzerať napríklad takto:
Tieto sady majú po 20 slov a majú v sebe zakódovanú informáciu o tom, že na obnovu sú potrebné dve zo štyroch sád. Znova môžeme urobiť to, že si dve odložíme doma (pozor, potom je potrebné použiť passphrase, ktorá nie je uložená), jednu necháme rodinnému príslušníkovi a jednu vložíme do závetu.
Rozdiel oproti multisigu však je v tom, že v tomto prípade nepotrebujeme na podpis dva kľúče zo štyroch – na podpis stačí jedno zariadenie, napríklad to, ktoré túto zálohu vytvorilo. Dve sady slov budeme potrebovať len ak danú schému budeme chcieť obnoviť na nové zariadenie.
Z pohľadu vytvárania transakcií ide teda o štandardnú adresu, kde stačí jeden podpis, ale na obnovu zálohy treba špecifikovaný počet záloh zo všetkých – napríklad 2 zo 4. Shamirova schéma 2 z 2 je bezpečnejšou voľbou rozdelenia slov na dva papieriky po 6 slov, ktorú sme spomínali vyššie, pretože žiadny papierik sám o sebe neznižuje bezpečnosť. Shamirova schéma je dobrá v tom, že menší ako potrebný počet kúskov skladačky nedodá vôbec žiadnu informáciu o kľúčoch. Ak pridáte posledný potrebný kúsok skladačky, zloží sa celá – ostatné kúsky skladačky nemusíte mať prístupné vôbec.
Tento prístup má samozrejme – ako všetko – aj nevýhody. Prvou nevýhodou je menšia podpora peňaženiek, pri hardvérových peňaženkách ste zatiaľ odkázaní na produkty Satoshi Labs, aj keď ich obnova je možná aj v prípade, že prestanú fungovať.
Ďalšou nevýhodou oproti multisig schémam je nižšia auditovateľnosť použitia. Pri multisig schémach vidíte, ktoré podpisy boli použité a viete tak dokázať prípadné zneužitie kľúča (napríklad ak sa niekto dostane ku kľúčov zo závete, viete, že boli použité práve tie). Ak niekto obnoví zálohu pomocou Shamirovej schémy, nedá sa zistiť, ktoré sady slov boli použité – obnovená peňaženka vyzerá vo všetkých prípadoch rovnako.
Nová peňaženka Trezor Safe 5 po novom vytvára automaticky Shamirovu schému 1 z 1. To môže na prvý pohľad znieť ako nezmysel, ale v skutočnosti to používateľovi umožňuje neskôr seed ľubovoľne rozdeliť, čo pri bežnom seede nie je tak ľahko možné. Ak je peňaženka vytvorená pomocou SLIP-39 Shamirovej schémy, môžete vytvárať rôzne sady slov s ľubovoľnými podmienkami, a to dokonca aj hierarchicky a po vytvorení peňaženky. Toto rozhodnutie mi príde veľmi užitočné, aj keď v takomto prípade túto peňaženku neobnovíte na žiadnom inom zariadení ako na Trezore.
Ako bezpečne nastaviť Shamirovu schému? To závisí od každého z vás, vašej rodinnej situácie, množstva Bitcoinov a vašich preferencií. Ako veľmi veríte svojim blízkym, že vás neokradnú? Veríte štandardnému dedičskému konaniu alebo chcete k Bitcoinom dať rodine prístup už teraz?
Myslite však na oba aspekty – aj obnoviteľnosť aj to, aby vás niekto neokradol. Problém s obnoviteľnosťou nastane napríklad ak vytvoríte schému 5 z 5 – ktokoľvek z piatich držiteľov seedu ho stratí, omylom vyhodí alebo oň príde vďaka živelnej pohrome znamená, že záloha je nepoužiteľná. Je teda dobré mať nejakú vôľu (napríklad 3 z 5 je v z tohto pohľadu asi lepšia schéma). Na druhej strane nechcete, aby dvaja členovia rodiny, ktorým až tak neveríte, mohli získať všetky vaše bitcoiny. Príkladom môžu byť dvaja súrodenci, s ktorými sa už teraz hádate o dedičstvo domu po babke. Ak máte schému napríklad 2 zo 4 a títo dvaja súrodenci majú dva diely, nie je to dobrý nápad.
Taktiež odporúčam aj pri Shamirovej schéme používať passphrase. Tá by mala byť niekoľkokrát odzálohovaná – napríklad pri všetkých častiach zálohy, ktoré sa nachádzajú inde ako vaša hardvérová peňaženka (pri peňaženke nie je dobré mať passphrase, lebo to zjednodušuje prístup zlodejom k vašim coinom).
Základná Shamirova schéma v Trezore vyzerá ako „multisig“ – teda pýta sa vás koľko sharov (sád slov) vytvoriť a koľko z nich je potrebné na úspešnú obnovu zálohy. Napríklad „2 zo 4“. Je však možné vytvoriť aj zložitejšie schémy, napríklad „buď 2 z 2 alebo 3 z 5“, čím dostanete 7 sád slov. Z prvej sady (skupiny) sú potrebné oba seedy, z druhej skupiny potrebujete 3 z piatich. Jeden seed z prvej skupiny a dva seedy z druhej skupiny nebudú fungovať. Ak chcete vytvoriť zložitejšiu shamirovu schému, môžete tak urobiť pomocou príkazu trezorctl: trezorctl device setup -b advanced
Tento príkaz je potrebné pustiť pri inicializácii Trezora.
Vráťme sa ešte k multisigu a pozrime sa na to, ako ho využívajú ľudia inak ako len tradičným potvrdzovaním transakcií. Zopakujme si ešte raz rozdiel medzi multisigom a shamirovou schémou. Shamirova schéma po zložení potrebného počtu častí z celkového počtu obnoví privátne kľúče, ktorými je možné už podpisovať všetky transakcie. Multisig schéma znamená, že ku každej transakcii je potrebný daný počet podpisov. Tradičné použitie tejto schémy je napríklad klasický spoločný prístup k účtom – napríklad ak ide o firemné prostriedky, každú transakciu musia schváliť dvaja zo štyroch konateľov.
Jeden z podpisov však môže byť softvér, ktorý podpisy pridáva za rôznych podmienok. Takto je napríklad vytvorený protokol na pôžičky Firefish, alebo dvojfaktorová autentifikácia peňaženiek Aqua a Blockstream Green.
Tento pohľad na multisig nám prináša úplne nové možnosti. V prípade 2 z 2 multisig účtov peňaženka Green poskytuje druhý podpis za špecifických okolností, na základe nastavení v peňaženke. Na podpísanie transakcie potrebujete jednak kľúč, ktorý sa nachádza priamo v peňaženke (a je odzálohovaný pomocou seedu). Samotný kľúč v zariadení (a PIN alebo biometrická autentifikácia) nestačia a je potrebné získať podpis od servera Green. Server transakciu podpíše, ak sa mu preukážeme druhým faktorom. Tým môže byť overenie pomocou emailu, SMS správy, pomocou aplikácie podporujúcej TOTP (napr. Google Authenticator) alebo na základe telefonátu. Povoliť môžete aj viacero metód. Bez nich server transakciu nepodpíše. Pri tejto schéme je samozrejme dobré poznať odpoveď na otázku: Čo sa stane, ak prídeme o druhý faktor alebo ak prestane fungovať podpisovací server? Pri 2 z 2 schéme je druhý podpis možné nahradiť expiráciou časového zámku – coiny môžete použiť bez blockstream servera po jeho vypršaní čisto s prvým kľúčom (a odzálohovanou schémou adresy!). Časový zámok si môžete nastaviť na 6, 12 alebo 15 mesiacov po poslednom pohybe. Ak chcete, aby časový zámok chránil vaše Bitcoiny aj naďalej, je potrebné coiny pred jeho expiráciou poslať na novú adresu, aby sa časový zámok obnovil – peňaženka vás o tejto potrebe bude informovať.
V prípade 2 z 3 schémy môžete mať zálohu vo forme ďalšieho seedu alebo (ešte lepšie) hardvérovej peňaženky Jade. Bežné používanie sa nijak nelíši – použijete kľúč zo zariadenia a Blockstream server podpíše transakciu druhým kľúčom ak sa zvládnete overiť pomocou druhého faktora (znova: email, sms, telefonát alebo TOTP autentifikácia). Rozdiel je v spôsobe obnovy – ak prídete o možnosť použiť druhý faktor alebo prestane fungovať druhý server, nemusíte čakať na časový zámok, ale môžete použiť druhý kľúč zo zálohy alebo z hardvérovej peňaženky Jade.
Tento spôsob využitia multisigu má však ešte jednu výhodu – môžete si zadefinovať inú podmienku, kedy druhý faktor nie je potrebný. Napríklad to, koľko eur môžete denne minúť bez potreby dodatočného prihlásenia. Keďže blockstream server vie hodnotu Bitcoinov v čase, keď má podpísať transakciu, viete naozaj špecifikovať aj eurovú hodnotu. Túto vlastnosť je ťažké dosiahnuť priamo v Bitcoin skripte, keďže ten nemá prístup k aktuálnym trhovým cenám Bitcoinov (aspoň nie bez dodatočných technológií ako oracles a discreet log contracts). Ak ste si do peňaženky poslali napríklad jeden bitcoin keď mal hodnotu 10 000 €, nevedeli ste si nastaviť spending podmienku „denne chcem minúť najviac 1 000 €“ denominovaním bitcoinov v eurách – podstatné je, akú majú hodnotu, keď ich míňate, nie keď ste ich prijali. Túto funkcionalitu umožňuje práve podpis servera, ktorý závisí od toho, koľko peňazí z peňaženky odišlo za posledných 24 hodín. Túto funkcionalitu využívajú aj enterprise riešenia peňaženiek ako Fireblocks (aj keď tie používajú iný spôsob multisigu ako Bitcoin script). Na tejto technológií sú postavené aj iné modely, na jeden z nich sa pozrieme.
Možno by sme mohli nadobudnúť pocit, že vynálezom záloh pomocou seedu (či už tradičného alebo rozdeleného pomocou shamirovej schémy) skončil vývoj. V Bitcoine však rôzni ľudia majú rôzne prístupy k bezpečnosti a skúšajú nové veci. Jedným z nových prístupov je aj prístup, ktorý skúša peňaženka ZenGo, ktorá vôbec nepoužíva seed zálohy a využíva technológiu MPC (Multi Party Computation). Hneď na úvod musím povedať, že neplánujem konvertovať moje peňaženky na ZenGo, pretože tento prístup má pre mňa veľa nevýhod, ale je dobré sa zamyslieť nad tým, ako sa dá nadizajnovať iný systém záloh.
Multi Party Computation (MPC) a na nich postavené threshold signatures je nový spôsob rozdelenia privátneho kľúča. Je to akási zvláštna kombinácia vlastností multisigu a shamirovej schémy. Podobne, ako pri shamirovej schéme, ide z pohľadu Bitcoinu o obyčajné adresy s podpisom jedným kľúčom. Podobne, ako pri multisigu, je však potrebné každú transakciu podpisať správnym počtom „kľúčov“ (v skutočnosti sa nazývajú „podiely“ – shares, alebo shards). Jednotliví participanti teda majú časti kľúča a samotný privátny kľúč nikdy nie je na jednom mieste – participanti podpisovej schémy spoločne vytvárajú podpis bez toho, aby sa privátny kľúč kdekoľvek objavil. Aj napriek tomu je možné kolaboratívne vypočítať prislúchajúci verejný kľúč.
Z praktického pohľadu ide o schému veľmi podobnú multisigovým adresám – každú transakciu musí podpísať dostatočný počet používateľov (napríklad dvaja z troch), ako je to pri peňaženke Green. Výhodou oproti multisigu sú však dve veci: jednak je transakcia malá, lebo z pohľadu Bitcoinu ide o podpis jedným kľúčom, len je „zvláštne“ vypočítaný. A druhou výhodou je, že ide o multisig schému na úrovni podpisovej schémy, takže ju môžeme rovnako použiť aj pri iných blockchainoch, ktoré používajú podobnú podpisovú schému (napríklad ak by sme chceli chrániť stablecoiny na Ethereum sieti, ktorá natívne nepodporuje multisig účty). Pomocou jednej sady kľúčov tak môžeme chrániť majetok na viacerých sieťach.
Z pohľadu používania ide v prípade implementácie v peňaženke ZenGo na prvý pohľad o niečo veľmi podobné ako vyššie popísaná schéma 2 z 2 peňaženky Green. Jednu časť kľúča máte vy na svojom zariadení, druhú má ZenGo server. Na podpis sú potrebné obidve a ZenGo server vás overí pomocou druhého faktoru. V prípade ZenGo je však založený na skene vašej tváre pomocou ich technológie skenovania tváre. V prípade, že by sa s vašou tvárou niečo stalo (napríklad dopravná nehoda), môžete určiť záložnú tvár, ktorá môže druhý faktor tiež podpísať. Podobne, ako pri peňaženke Green, môžete určiť sumu, nad ktorú je potrebné overenie druhým faktorom – tvárou.
Kde sa ZenGo trochu líši je spôsob zálohovania časti kľúča, ktorý je uložený na vašom zariadení – namiesto jeho premeny na slová sa záloha spojí s vašim email účtom (kvôli spárovaniu s druhým sharom), je uložená v cloude (Dropbox, Google Drive, iCloud, …) a ak chcete, môže byť uzamknutá skenom vašej tváre (ten dodá časť dešifrovacieho kľúča). Prístup k email adrese overuje ZenGo peňaženka pomocou poslania jednorázového linku, tým sa určí, o ktorý účet ide a overí sa sken tváre a dešifruje sa váš share. Ide o non-custodial riešenie – bez odzálohovaného súboru sa ZenGo nemá ako dostať k vášmu podielu na privátnom kľúči a bez neho je kľúč nepoužiteľný.
Druhá odlišnosť od Green je možnosť určiť dedica (v platenej verzii ZenGo Pro). Pri „dedičskom konaní“ so ZenGo serverom musí byť splnená podmienka neaktivity. Tá sa však neoveruje pomocou time-locku na blockchaine, ale pomocou toho, kedy ste naposledy otvorili ZenGo peňaženku. Ak prejde určený čas (4 až 24 mesiacov, podľa toho, ako si peňaženku nastavíte) od posledného otvorenia, môže váš dedič použiť svoj share spolu so sharom na serveri. Bez dodatočného časového odstupu nebude server ZenGo s dedičom spolupracovať.
Podobná schéma by sa dala urobiť do istej miery aj pomocou multisigu, krása tejto technológie je však v tom, že dediča môžete kedykoľvek vymeniť bez toho, aby ste museli posielať prostriedky z vašej peňaženky na iné adresy – vypočítajú sa iba nové shares.
Peňaženka ZenGo v platenej verzii obsahuje rôzne ďalšie funkcie, ktoré sú zaujímavé, ale idú nad rámec tohto článku. Poďme však k nevýhodám. V prvom rade ZenGo nijak nerieši situáciu, keď sa vám a vášmu dedičovi stane nehoda naraz – napríklad spoločná autohavária. Určiť je možné iba jedného dediča a ak nie je dostupný, prídete o prostriedky.
Ďalšou nevýhodou je, že pod tlakom dokážete podpísať akúkoľvek transakciu. Peňaženka nepodporuje napríklad oneskorenie poslania transakcie o 48 hodín v prípade, že presahuje nejakú sumu. Ak má útočník vás pri vašej peňaženke, donúti vás tvárou odomknúť a poslať von všetky prostriedky.
Okrem toho, na rozdiel od hardvérovej peňaženky, môže zobrazovať iné informácie ako naozaj podpíše – to je rovnaký problém s malvérom ako pri akejkoľvek softvérovej peňaženke. Aplikácia ukáže posielanie na jednu adresu, ale v skutočnosti podpisujete transakciu na inú adresu. Hardvérová peňaženka vám umožňuje na obrazovke skontrolovať a potvrdiť poslanie na správnu adresu. Takže hardvérovú peňaženku by som peňaženkou ZenGo určite nenahrádzal, aspoň nie na úspory.
A samozrejme tu je otázka, čo sa stane, ak firma prestane fungovať a server ZenGo zmizne. Firma má na to dohodu s tretími stranami, ktoré publikujú shares tak, že ich peňaženka vie priamo použiť. Problém je čokoľvek medzi tým – bez druhej strany nedokážete podpísať žiadnu transakciu. Čo sa napríklad stane, ak firma dostane napríklad súdny príkaz, ktorým zakáže vášmu účtu podpísať akúkoľvek transakciu? Správne – nemôžete hýbať so „svojimi“ Bitcoinmi.
Aj napriek tomu, že tento spôsob úschovy neodporúčam, je dobré vedieť aj o takýchto možnostiach a pre niektorých ľudí to môže byť dobré a jednoduché riešenie dedičstva. A možno niektoré z týchto výhod vieme využiť aj pri nastavení nášho dedičstva.
Pri dedičstve nás často zaujíma aj to, aby sme k Bitcoinom za nášho života mali prístup iba my a aby sa naši dediči dostali k Bitcoinom až po našej smrti. Jedným zo spôsobov je už spomínaný časový zámok. Napríklad pri multisig schéme je možné vytvoriť Bitcoin skript tak, aby bol potrebný jeden kľúč do nejakého času (najviac 15 mesiacov, resp. 65535 blokov) a po tomto čase je možné použiť aj iný kľúč. Tento iný kľúč (ktorý dáme dedičom) prvých 15 mesiacov od prijatia coinov nefunguje. Prípadne pre dedičov je možné vytvoriť aj zložitejšiu schému, napríklad multisig 2 z 3, aby sa dediči museli navzájom dohodnúť.
V prípade, že je časový zámok vytvorený na Bitcoinovom blockchaine je potrebné prostriedky do expirácie časového zámku znova poslať na adresu a znova ich uzamknúť na ďalších max. 15 mesiacov. Tento prístup zjednodušuje napríklad open-source peňaženka Liana.
Social recovery umožňuje prístup k prostriedkom potvrdením nejakým množstvom vybraných používateľov, tiež väčšinou po vypršaní časového zámku. V Ethereum ekosystéme sa týmto smerom vybrali napríklad peňaženky Argent (Vault) alebo Safe (Gnosis). Pri Bitcoine je asi najznámejším príkladom peňaženka Fedi projektu Fedimint, ktorá má podobnú funkcionalitu. Zálohou je vami nahrané video a overenie pomocou „ochrancov“, ktorých si vyberiete. Tí overia vašu identitu oproti tomuto videu. Fedi však umožňuje aj použitie zálohy pomocou seedu. Pozor – Fedi je polo-custodial peňaženka (privátne kľúče majú správcovia federácie).
Prístup podobný peňaženke ZenGo k časovým zámkom a social recovery má aj peňaženka Nunchuk vo svojom platenom programe. Časový zámok je tam vytvorený na základe dodatočného kľúča, ktorý platforma dovolí použiť až po nejakom čase.
Nunchuk využíva ako časový zámok kľúč platformy, nie relatívný time-lock. Tým pádom si môžete nastaviť (a ľubovoľne meniť) čas, kedy je možné použiť kľúč dediča. Technicky ide o multisig 2 zo 4. Jeden kľúč má dedič (resp. ho vie získať od platformy na základe kódu dedičstva a hesla), jeden platforma a dva kľúče má majiteľ peňaženky. V praxi vaše kľúče môžu byť buď softvérové alebo hardvérové, respektíve ich kombinácia.
Môžete tak mať napríklad peňaženku, kde pomocou softvérového kľúča (teda čisto s mobilným zariadením) môžete minúť napríklad 1 000 $ mesačne. V takom prípade sa použije softvérový kľúč v aplikácii a kľúč platformy, ktorá skontroluje splnenie podmienky (menej ako 1 000 $ mesačne) a v prípade, že je podmienka splnená, pridá svoj podpis.
Ak by ste chceli svoje prostriedky minúť nad rámec tejto podmienky, môžete transakciu dodatočne podpísať kľúčom na hardvérovej peňaženke (podporované sú všetky známe hardvérové peňaženky). K svojim Bitcoinom sa tak dostanete aj bez spolupráce platformy Nunchuk (máte dva zo štyroch kľúčov, čo stačí na vytvorenie platného podpisu a zálohu peňaženky v podobe BSMS súboru).
Ako funguje dedičstvo? Kľúč je zašifrovaný a uložený na platforme Nunchuk, dedič sa k nemu dostane pomocou dvoch identifikátorov. Jeden predstavuje identifikátor peňaženky (v podstate login) a druhý je dešifrovací kľúč na podpisovací kľúč. Platforma teda nemá prístup k dešifrovanej podobe dedičského kľúča. Platforma má zároveň dodatočný kľúč platformy, ktorým podpíše transakciu, ak spĺňa všetky podmienky, najmä tú, že vypršal časový zámok, aký eviduje, že je nastavený.
Platforma tak v nijakom momente nemá prístup k vašim Bitcoinom (má prístup len k jednému kľúču zo štyrom, ale sú potrebné dva). Vy zároveň máte v každom prípade prístup k Bitcoinom, dodatočné podpisovanie však môžete robiť len za istých okolností, ktoré si nastavíte.
Otázkou ostáva, ako dlho bude platforma fungovať. K svojim Bitcoinom sa dostanete vždy, ale dedičské konanie v prípade krachu platformy nemusí fungovať. Ďalším faktorom je cena, Nunchuk si za program s dedičským konaním pýta $ 480 ročne.
Pri zálohovaní by sme nemali zabúdať na Lightning peňaženky. Ich záloha je však oveľa komplikovanejšia. Najlepšie je použiť spôsob zálohovania, ktorý odporúča výrobca peňaženky a tieto sa líšia.
Väčšina peňaženiek sa snaží o replikáciu skúsenosti so zálohovaním seedu a tak si ako súčasť zálohy väčšinou máte odpísať 12 anglických slov. Keďže pri Lightningu je potrebné ukladať si podpísané transakcie, ktoré sa menia pri každej platbe, tieto slová samé o sebe nestačia a je potrebné mať čerstvú zálohu. K tomu sa rôzni výrobcovia stavajú rôzne, napríklad Breez zálohu ukladá do užívateľovho cloudu (Google Drive, Apple iCloud, Dropbox) a tá je zašifrovaná kľúčom odvodeným zo seedu. Zo seedu sa zároveň vypočítajú kľúče pre on-chain časť peňaženky.
Phoenix funguje podobne, ale na zálohu používa servery Phoenixu, nie cloudové úložisko. V prípade výpadku Phoenixu alebo jeho odstránenia z obchodov (čo sa stalo používateľom v USA) je obnova zálohy problematická.
Pri zálohovaní Lightningu je teda dobré zoznámiť sa so spôsobom zálohovania danej peňaženky, nie si len slepo odpísať seed a dúfať, že záloha funguje.
Podobný problém majú aj e-cash systémy – je potrebný aktuálny stav (teda zoznam e-cash tokenov). Našťastie oba veľké e-cash systémy: Cashu aj Fedimint tento problém riešia za používateľa a na väčšinu e-cash tokenov stačí obnova pomocou seedu v spolupráci s mint. Čo je však potrebné si zapamätať je zoznam mint (Cashu) alebo federácií (Fedi), ktorým užívateľ dôveruje. Zálohu môžete obnoviť iba ak viete, u akého vydavateľa máte svoje bitcoinové e-cash tokeny.
Ak používate Bitcoin, máte predpokladám často rôzne peňaženky, ktoré skúšate a ku ktorým si musíte zapisovať seedy. Či už ide o Lightning peňaženky, rôzne softvérové peňaženky alebo máte nebodaj dodatočné hardvérové peňaženky, ktoré používate na iné účely. A pri týchto peňaženkách je potrebné tiež robiť zálohu.
Tieto zálohy môžu skončiť ako záznamy v správcovi hesiel, čím riskujete ich odcudzenie v prípade hacku počítača. Druhou možnosťou sú papieriky a obálky. Niektoré hardvérové peňaženky však majú tretiu možnosť – štandard BIP-85.
Pomocou tohto štandardu je možné z vášho hlavného seedu vypočítať „detské“ seedy. Teda ak máte zálohu hlavnej peňaženky, viete pomocou menu peňaženky vygenerovať ďalšie seedy, ktoré sú vypočítané z hlavného seedu peňaženky. Takto si nemusíte nič navyše zapisovať.
Ako všetko, aj táto skvelá funkcionalita má nejaké nevýhody a obmedzenia. Prvým z nich je, že BIP-85 nepodporujú všetky hardvérové peňaženky. Medzi tie, ktoré tento štandard podporujú patrí ColdCard, BitBox, Blockstream Jade a SeedSigner. Bohužiaľ v tomto zozname chýbajú Trezory od SatoshiLabs. Kombinácia možnosti zálohy pomocou shamirovej schémy, ktorú podporuje iba Trezor, s možnosťou takto odzálohované zariadenie používať na generovanie seedov pre iné peňaženky by bola skvelou voľbou na zálohovanie pre mnohých používateľov.
Druhým problémom je, že pri generovaní odvodených seedov si nemôžete priamo v zariadení pridať poznámku, generované sú podľa čísla. To v praxi znamená, že si musíte niekde poznačiť, ako vygenerujete seed ktorej peňaženky (napríklad máte softvérovú peňaženku, ktorej seed ziskate tak, že si vo svojej hardvérovej peňaženke dáte vygenerovať 12-slovný seed z indexu 0). Teda musíte si zapamätať informáciu „Názov SW peňaženky, 12-slov, index 0, z mojej hlavnej ColdCard“. Túto informáciu si môžete zapísať do správcu hesiel, ale znova neodporúčam spoliehať sa na pamäť. Ak je táto informácia v správcovi hesiel, je potrebné dedičom dať k nemu prístup.
Posledný problém je, že nie každá peňaženka vám dovolí „obnoviť“ neexistujúcu peňaženku. Proces vytvorenia seedu je tu otočený oproti procesu, aký sme zvyknutý. Väčšinou seed generuje peňaženka, ktorú si inštalujeme (napríklad Lightning alebo on-chain peňaženka) a tá nám povie, aby sme si zapísali seed. Ak však chceme použiť štandard BIP-85 ako formu zálohy, bude proces opačný – seed nám vygeneruje naša hardvérová peňaženka v rámci BIP-85 funkcionality a tento seed musíme vložiť do peňaženky, ktorú chceme používať, cez funkcionalitu obnovy peňaženky.
Problém je, že niektoré peňaženky zistia, že peňaženka s daným seedom nebola u nich vytvorená. Týka sa to hlavne Lightning peňaženiek, ktoré na server ukladajú stav. Aj napriek tomu by tento postup mal fungovať na väčšinu peňaženiek, ktoré používajú jeden zo štandardných formátov seedov.
Spomenieme ešte jeden spôsob zálohovania. Kedysi bolo populárne rozprávať o seede ako o „mnemonickom seede“, teda ako o niečom, čo je možné si zapamätať. Aj keď zálohu vo forme pamätania si seedu dôrazne neodporúčam (ľudská myseľ zabúda oveľa viac ako si väčšina z nás uvedomuje), má svoje využitie – napríklad ak sa sťahujete s celým svojim majetkom cez hranice.
Je zaujímavé, že sme v počítačovej bezpečnosti odporúčaniami dospeli k zvláštnemu stavu, kedy generujeme heslá, ktoré síce nie sú až také silné, ale ťažko sa pamätajú, keď je možné generovať heslá, ktoré sa ťažko lámu aj pamätajú.
Samozrejme, krátkodobo si zapamätať v správnom poradí 12 anglických slov nie je nemožné, ale ak si chceme niečo zapamätať, je možné využiť aj inú stratégiu. Môže ňou byť voľba veľmi silného hesla, ktoré určite nebude používať nikto iný. Heslo samotné nie je dobré používať ako kľúč.
Dnes už nevyvíjaný projekt Brainbow mal pekné riešenie na problém zapamätateľnej peňaženky. Používateľ si zvolí heslo, ktoré je pomocou dvoch funkcií a pomocou saltu premenené na master seed peňaženky. Funkcie, ktoré sa používajú majú za cieľ spomaliť útok hrubou silou, sú to funkcie PBKDF2 a scrypt. PBKDF je tzv. Na hesle založená funkcia na výpočet kľúča (Password-based key derivation function). Autori odporúčali spojiť heslo s emailovou adresou, ale môže to byť aj meno.
Zásadný problém je, že často nevieme vyhodnotiť, aké je heslo naozaj silné. A obzvlášť v prípade peňaženky platí, že ak ho niekto uhádne, prišli sme o Bitcoiny. Mimochodom seedy, ktoré si ľudia vymysleli, s opakujúcimi sa slovami, už Bitcoiny na svojich adresách nemajú – útočník s dostatočne dobrou grafikou si ich poslal do svojej peňaženky.
Na jednorázový prenos prostriedkov v rámci dočasnej peňaženky to však môže byť dobrý spôsob krátko trvajúcej zálohy.
Pri exotických spôsoboch zálohy je dôležité uvedomiť si, že čím väčšia exotika, tým sa znižuje pravdepodobnosť, že zálohu niekedy obnovíte. Ak ste poslúchli radu Josha Datka z úvodu tohto článku a uložili ste si zálohu na magnetofónovú pásku, možno niekde práve zháňate walkman. Našťastie sa walkmany stále vyrábajú. Či by prežila páska magnetickú búrku je však otázne.
Preto odporúčam používať čo najštandardnejšiu schému s podporou čo najväčšieho množstva peňaženiek.
Odzálohovať kľúče nestačí. Nie len pre nás, ale aj pre pozostalých. Kde sme si vytvorili aké peňaženky a kde máme aké prostriedky si človek nepamätá už ani po pár mesiacoch. Pozostalí nemajú ako vedieť, čo všetko a ako treba obnoviť. Preto je dobré pre seba aj pre nich napísať dokumentáciu.
Odovzdať im ju môžeme na papieri (a nechať si jednu kópiu) alebo sa môže nachádzať zašifrovaná v zdieľanom priečinku. Dokonca je možné peňaženku zašifrovať pomocou kľúča, ktorý je odvodený z hardvérovej peňaženky. V takom prípade odporúčam dokumentáciu rozdeliť na dve časti – prvou časťou bude „ako obnoviť seed“ a „ako dešifrovať zvyšok dokumentácie“, druhou samotná podrobná dokumentácia.
Ak používate peňaženky Trezor alebo Ledger, podporujú šifrovanie pomocou programu GPG priamo zo zariadenia. Pozor, je potrebné presne odzálohovať ID kľúča, ten je potrebný na obnovu.
Dobrou voľbou je rodine dať v rámci dokumentácie (prvej časti) kontakt na človeka, ktorému dôverujete a s technickou časťou obnovy dedičstva pomôže. Za túto službu je dobré zaplatiť, ideálne dopredu (ľuďom je trochu blbé pýtať si peniaze po smrti) a konzultantovi dať vedieť, čo ho v prípade našej smrti čaká.
Popísali sme si možnosti záloh – od klasického seedu vo forme 12 – 36 slov, cez rozdelenie zálohy pomocou shamirovej schémy, až po ukladanie Bitcoinov na špeciálnych multisig adresách – či už klasicky alebo s asistenciou nejakej platformy. Multisig aj singlesig zálohy môžeme zabezpečiť pomocou časových zámkov proti tomu, že vám Bitcoiny počas vášho života zoberú dediči (či už vedome alebo v prípade fyzického útoku na nich).
Časové zámky môže vynucovať priamo Bitcoinový blockchain, ako napríklad v prípade peňaženky Liana. To znamená nutnosť preposielať Bitcoiny pred ich expiráciou na nové adresy – kvôli novému obnoveniu časového zámku. Druhou možnosťou je, že časový zámok vynucuje platforma tak, že sa zaviaže použiť svoj privátny kľúč (alebo jeho časť) na podpísanie transakcie len vtedy, keď nami daná podmienka bola aktivovaná. Tento prístup volia peňaženky ZenGo alebo Nunchuk.
Na druhej strane, čokoľvek komplikovanejšie alebo neštandardné nemusí prežiť test časom. Seed aj prvej hardvérovej peňaženky na svete (Trezor One) obnovíte aj dnes, ale či bude existovať o 10 rokov ZenGo so svojou komplikovanou multiparty computation schémou a dostupným kľúčom nevieme povedať.
Pozrime sa na jednotlivé spôsoby zálohovania ešte očami trvácnosti, obnoviteľnosti a ochrane pred krádežou alebo zneužitím.
K trvácnosti patrí to, či záloha prežije test entropiou (časom) a test technolgickej zastaranosti. Ak je vaša záloha notebook z roku 2024, je možné, že o 20 rokov sa s týmto notebookom už nepripojíte na Internet, prípadne nebude existovať žiadny Electrum server, ktorý by vám umožnil zálohu obnoviť. Ak sa pokazí elektronika, máte problém. Preto je prakticky najlepšie z oboch pohľadov trvácnosti použiť čo najviac low-tech spôsob – papier, pero alebo kovová záloha môžu byť dobrý spôsob. Čokoľvek zložitejšie môže znamenať hľadať o 20 rokov zariadenie s USB-A portom, sťahovať z mirrorov starý archív peňaženky, ktorá sa už nevyvíja a podobne.
Ďalším aspektom trvácnosti zálohy je jej štandardnosť – je záloha urobená spôsobom, ktorým ju robia milióny ľudí? Ak áno, potom je dosť pravdepodobné, že sa nájde spôsob na jej obnovu aj o 20 rokov, pretože nebudeme sami s rovnakým problémom.
Spôsoby, ktoré nezávisia od jednej zálohy na jednom fyzickom mieste sú samozrejme najlepšie. Na to nám poslúži nejaká forma multisigu alebo shamirova schéma.
Sme schopní zálohu obnoviť? To závisí tiež od zložitosti, ale aj od dostupnosti technológií na obnovu a dostupnosti záloh samotných.
Vôbec nemusí byť na škodu stiahnuť a uložiť softvér na obnovu peňaženky na nejaké digitálne médium, ideálne v podobe zdrojového kódu. Používate Shamirovu schému? Uložte si kópiu tohto repozitára.
Záloha by mala byť obnoviteľná každým, kto sa má dostať k našim Bitcoinom. Ak dediči nie sú technologicky schopní obnovovať hardvérové peňaženky alebo dešifrovať GPG zašifrované súbory, zvýšte obnoviteľnosť tým, že im odporučíte dôveryhodného technického konzultanta, ktorého poznáte.
Prvým spôsobom zneužitia je jednoduchý zlodej, ktorý sa dostane k papieriku alebo kovovej zálohe vášho seedu. Uistite sa, že záloha je bez passphrase nepoužiteľná alebo aspoň že používate Shamirovu schému a jeden seed k obnove nestačí. Passphrase samozrejme nesmie byť na rovnakom papieriku ako záloha, ale uistite sa, že je odzálohovaná správne a viete sa k nej dostať.
Druhý spôsob je fyzický úvod na vás. Obranou môžu byť skryté peňaženky, ktoré ale nemáte spárované v hardvérovej peňaženke – ak sa vám po otvorení peňaženky ukážu všetky, útočníka ťažko presvedčíte, že k ďalšej peňaženke neviete heslo. Najlepšou obranou je zabezpečiť, že sa k svojim Bitcoinom nedokážete dostať rýchlo. Napríklad Shamirova schéma 3 z 5, kde žiadna zo záloh nie je v rovnakom štáte (a používate aspoň dva kontinenty) znamená nutné zdržanie obnovy zálohy. Druhá možnosť je nejaká forma časového zámku. Či už on-chain time lock, kľúč platformy alebo spomalenie fyzického prístupu (každá záloha je v trezore so zámkom s oneskoreným otvorením). Tu je však tiež vhodné povedať, že akékoľvek prekomplikovanie zvyšuje pravdepodobnosť, že sa k zálohe nedostanete vôbec.
Tretí spôsob je krádež kľúčov rodiny (dedičov). Na zníženie tohto rizika je možné používať napríklad tamper-evident obálky s číslom. Sú to obálky, ktoré sa nedajú otvoriť bez fyzického zničenia obálky. Integritu obálok pravidelne kontrolujte (napríklad pri aktualizácii dokumentácie). Ešte lepšia možnosť je použiť časové zámky, čím budú Bitcoiny nepoužiteľné, ak obnovujete transakcie alebo sa staráte o časový zámok.
Organizácia Jednadvadset vydala článok Základní orientace v dědictví bitcoinu. Jej autor Stallion vydal aj článok Bitcoin pod vlastní kontrolou. Zaujímavou môže byť aj Príručka Hodlera od Pavla Urbaczku a Tomáša Elberta z právnickej kancelárie Blockchain Legal, ktorá sa venuje aj praktickým aspektom – kde uložiť zálohy, ako k nim pristupovať a podobne.
Aj napriek tomu, že problematika držania (vo forme self-custody) a zálohovania Bitcoinu je zložitá, dáva nám Bitcoin zároveň možnosť byť pod kontrolou. To je podľa mňa unikátna propozícia Bitcoinu. Je to niečo, čo môžete naozaj vlastniť.

Juraj Bednár
Som cypherpunker, mám rád slobodu, súkromie, peer to peer technológie a terminálové okná. Skúmam chaotický svet, volatilitu a neistotu, bojujem proti entropii - zakladám firmy, neziskové projekty, robím kurzy a píšem knihy. Som spoluzakladateľ Paralelnej Polis, hackerspace Progressbar, či bug bounty platformy Hacktrophy. Vyštudoval som odbor umelá inteligencia a umelá inteligencia sa vrátila - tak ako som ju nikdy nepoznal. O všetkých týchto skúsenostiach píšem blog.