Obnovit stránku

Zachraňte svoje Bitcoiny: Záloha a obnova vašeho majetku

Aktualizováno • Autor: Juraj Bednár

Příběhy o tom, jak někdo napsal špatnou zálohu, případně jak někdo hledá svůj starý disk s vytěženými Bitcoiny na smetišti, se množí jako houby po dešti. Tragická úmrtí a snaha rodiny rozluštit "bezpečnou" zálohu provedenou správcem rodinného bitcoinového majetku, aby mohli pokračovat v životě, se dříve či později dotkne každého bitcoinera. Nejlepším lékem na tyto stresové situace je prevence – a tou je v tomto případě dobře provedená záloha. Protože je však bitcoin decentralizovaný projekt, existuje několik způsobů, jak zálohu vytvořit, a my si musíme vybrat.

Bitcoin: jak zálohovat a obnovit

Zachraňte svoje Bitcoiny – OBSAH

  1. Vlastnosti zálohy
  2. Základní záloha – jednoduchý seed a passphrase
  3. Skryté peněženky
  4. Fyzické útoky na peněženky
  5. Záloha na QR kód
  6. Multisig
  7. Shamirovo schéma
  8. Multisig jako dodatečné podmínky
  9. ZenGo MPC
  10. Časové zámky a social recovery
  11. Lightning a ecas
  12. Child seeds – BIP-85
  13. Exotické způsoby zálohování
  14. Dědictví a dokumentace
  15. Kterou možnost zvolit?
  16. Další zdroje
  17. Závěr

Vlastnosti zálohy

Přístup k bitcoinům se ve většině případů řídí vlastnictvím soukromých klíčů. Samotné vlastnictví klíčů však nemusí být ve všech případech dostačující; k této otázce se ještě dostaneme. Soukromé klíče jsou nejčastěji reprezentovány zálohou takzvaného „mnemotechnického seedu“, tedy určitého počtu slov ve správném pořadí. Nejčastěji se jedná o 12 slov, ale běžné jsou i seedy o 20, 24 nebo 36 slovech.

Vytvořením zálohy však příběh nekončí. Důležité je, jak ji uložíme a zabezpečíme, kdo a jak k ní má přístup atd.

Na to, abychom měli dobrou zálohu, měla by splňovat několik požadavků.

Trvanlivost

Prvním požadavkem je, aby záloha byla trvalá. Pokud byste zálohu uchovávali na 3,25" disketě, mohl by to být dobrý způsob uložení, ale její načtení by mohlo být obtížnější nebo by nemuselo fungovat vůbec. Jednak proto, že málokdo má doma disketovou jednotku (což může být výhoda – málokterý zloděj má disketovou jednotku), ale také proto, že magnetický digitální záznam nemusí přežít dlouhou dobu bez úhony.

bitcoin backup
Zálohu můžete vytvořit také na disketu. Otázkou je, zda ji lze také přečíst. By George Chernilevsky – Own work, Public Domain, https://commons.wikimedia.org/w/index.php?curid=6963942.

Josh Datko, známý svými hacky hardwerových peněženek (o kterých si povíme později), ve svém kazetovém časopise Bitpunk.fm vysvětluje, že zálohu bitcoinů lze uložit také na magnetofon. Splňuje základní bezpečnostní požadavky – je off-line a není digitální. Podstatné však je, aby ji bylo možné v budoucnu přečíst.

bitcoin backup
První epizoda Bitcoinového magazínu Bitpunk.fm na kazetě s názvem “Make BTC punk again” hovoří o tom, jak lze kazety použít pro zálohování seedu a jak lze data přenášet prostřednictvím zvuku. Digitální verzi si můžete poslechnout také online.

Díky tomuto principu máme mnoho možností – například běžný způsob ukládání zálohy je na papír, který však může zešednout nebo snadno shořet při požáru. Mimochodem, pro takové případy není špatné mít „záložní kopii“. Různé produkty však tyto nedostatky řeší po svém, například vyražením zálohy do listu, který odolá požáru.

pro Václava: kolotoč se steel backupy (ty kovové krámy) /hardware-penezenky-a-trezory/18862141.htm?evt=ac

Odolnost zálohy vůči přírodním vlivům (koroze, oheň, ...) zkoumal Jameson Lopp ve své slavné sérii testů..

bitcoin backup
Kazetová kovová záloha nemusí být nejlepší nápad, například pokud je vystavena tlaku, zlomí se a písmenka vypadnou, záloha je fuč. I CryptoSteel přišel s lepším řešením. Zdroj: Jameson Lopp

Obnovitelnost

Druhou vlastností dobré zálohy je, že ji lze obnovit. Na první pohled to může znít jako samozřejmost, ale mnoho lidí se spálí, když prostě zálohují, aniž by vyzkoušeli, zda mohou vytvořenou zálohu obnovit. Typickým příkladem nemožnosti obnovení je použití přístupové fráze, kterou si nepamatujete a kterou jste nezálohovali, nebo vytvoření chytrého schématu, jak změnit zálohu tak, abyste ji mohli obnovit pouze vy – častým příkladem je rozdělení zálohy nebo uložení slov v jiném pořadí.

bitcoin backup
Ukládání slov v pozměněném pořadí s tím, že si budeme pamatovat správné pořadí, není dobrý nápad. V nejhorším případě bychom museli vyzkoušet spousty možností, jak seřadit 12 a 24 slovních semínek.

Kryptografie zavedla při šifrování (ale v tomto případě to platí i při podepisování) základní rozdělení dobrého šifrování na algoritmus, klíč a data. Pomocí algoritmu a klíče bychom měli být schopni data dešifrovat (v tomto případě však spíše použít pro podepisování). Přičemž algoritmus je veřejně známý a klíč je to jediné, co by mělo být tajné. Obfuskace, změna klíče podle toho, jak si ho pamatujeme, a podobné techniky tuto zásadu porušují – přidávají k algoritmu uložení klíče něco tajného. To sice na jedné straně zvyšuje bezpečnost proti krádeži (k tomu se dostaneme v dalším principu), ale výrazně zvyšuje riziko, že nebudete moci obnovit zálohu, když ji budete potřebovat – buď vy, nebo vaši blízcí. Naštěstí existují mnohem lepší způsoby zabezpečení klíče proti krádeži.

Ochrana proti krádeži a zneužití

Pokud víme, že záloha „přežije“ a že ji budeme moci obnovit, musíme vyřešit protistranu – dokážeme ji obnovit pouze my, nebo lidé, kteří k ní mají mít přístup? Dokážou ji obnovit kdykoli, nebo jen za určitých okolností (například když se nám něco stane).?

bitcoin backup
Záloha v podobě seedu na papíře, volně pohozená v zásuvce, k peněžence bez passphrase není dobrý nápad.

Například záloha na papírku v šuplíku k peněžence bez passphrase nesplňuje tuto vlastnost – kterýkoli zloděj, který na papírek narazí vám vaše Bitcoiny dokáže ukrást jednoduše tak, že je naimportuje do peněženky. Nesplňuje to ani digitální záloha, při úspěšném útoku na váš počítač přijdete o vaše bitcoiny. Dokonce většina malware již dokáže hledat zálohy bitcoinů ve formě seedu a jejich odcizení je plně automatizováno. Proto se říká, abyste si neukládali Bitcoiny digitálně na počítač nebo jiné zařízení. Vyfotit seed mobilem také není dobrý nápad, z fotky při současných algoritmech rozpoznávání písma se dají vaše bitcoiny ukrást triviálně.

Základní záloha – jednoduchý seed a passphrase

Nejběžnější způsob zálohy vašich Bitcoinů vám nabídne téměř každá moderní bitcoinová peněženka – 12 nebo 24 anglických slov ve správném pořadí. Z nich lze vypočítat pomocí algoritmu zdokumentovaném ve standardu BIP39 tzv. master private key (hlavní privátní klíč) nebo zvaný také master seed. Tímto klíčem stále nejsou zamčené Bitcoiny, protože klíčů máme tolik, kolik máme peněženek a adres. K tomu, abychom dokázali získat privátní klíč ke konkrétní adrese, je třeba provést ještě další výpočet. Ten je definován ve standarduBIP32.

bitcoin backup
Způsob odvození privátních klíčů a adres z hlavního klíče definovaný ve standardu BIP-32. Zdroj: Standard BIP-32

K obnově Bitcoinů na on-chain peněžence tedy skutečně v nejjednodušším případě nepotřebujeme nic víc, než zálohu v podobě mnemonického seedu (12 slov). Z nich se vypočítá hlavní privátní klíč, z něhož se vypočítají privátní klíče pro všechny možné adresy ze všech peněženek. A z nich se vypočítají nakonec adresy, u kterých se software peněženky podívá na Bitcoinový blockchain, zda jsou tam nějaké Bitcoiny.

Tento mechanismus vysvětluje i to, že přijímat na hardwarovou peněženku můžeme, i když je peněženka odpojena – adresa je vytvořena výpočtem ze seedu způsobem, který zajistí, že budeme moci pomocí peněženky podepsat transakci z dané adresy, ale v peněžence jako takové nejsou uloženy žádné bitcoiny, ty jsou ve vytěžených blocích. Proto je lepším názvem pro hardwarovou peněženku ve skutečnosti klíčenka. V peněžence nemáme žádné Bitcoiny, pouze klíče k Bitcoinům, které jsou na adresách, ke kterým používáme klíče.

Bezpečnost seedu

U tohoto typu zálohy většina lidí začne i skončí. V šuplíku na papírku napsaná slova a hardwarová peněženka, která má tato slova uložena v paměti. Problém je u obou – pokud někdo najde papírek, má vaše Bitcoiny. Konkrétně z nich dokáže vypočítat všechny klíče k tomu, aby si Bitcoiny mohl poslat na svou adresu. Lidé se často snaží zlepšit bezpečnost například tak, že zálohu rozdělí na dvě části (například 6 slov na jednom papírku a 6 slov na druhém papírku) a tyto papírky uloží na zvláštní místa. Problém u tohoto typu zálohy je, že zvyšujeme riziko, že zálohu neobnovíme. Zálohu jsme měli na jednom papírku, nyní máme papírky dva, z nichž když libovolný ztratíme, k Bitcoinům se nedostaneme. Navíc bezpečnost takové zálohy je poloviční (útočník má ve skutečnosti 6 slov). A samozřejmě, pokud slova zapisujeme zvláštně (na přeskáčku, případně je rozdělíme nestandardně), zvyšujeme riziko, že z papírků zálohu neobnovíme. Tento problém do velké míry řeší záloha pomocí Shamirova schématu, o kterém si povíme níže.

Druhým problémem je samotná hardwarová peněženka. Ta má seed slova uložená ve své paměti. Pro přístup k ní potřebujeme za normálních okolností zadat PIN, a pokud se nám to nepodaří 10x za sebou, peněženka se většinou smaže. Problém je, že ke slovům se často lze dostat i jinou cestou, například je útočník může přečíst z paměti pomocí elektroniky. Tomu se peněženky snaží různými způsoby zabránit, není to však úplně nemožné, jak demonstrovali Thomas Roth, Dmitry Nedospasov a již zmiňovaný Josh Datko ve své přednášce wallet.fail:

Útoky na hardwarové peněženky wallet.fail

Moderní peněženky se snaží bránit různými způsoby. Peněženky jako ColdCard, Trezor Safe 3 a Trezor Safe 5 nebo Ledger Nano se snaží používat tzv. Secure Element, což je speciálně chráněný čip proti podobným útokům. Jelikož tyto čipy nejsou open-source, založila firma Satoshi Labs firmu Tropic Square, která se snaží vyvinout první skutečně open-source secure element čip.

Bezpečnostní model virtuálního secure elementu peněženky Jade

Firma Blockstream přesouvá secure element do cloudu. Jejich peněženka Jade seed se rozdělí na dvě části (šikovnější než rozdělením slov na polovinu), přičemž kterákoli část této zálohy je bez druhé zcela nepoužitelná a nedává útočníkovi žádnou dodatečnou informaci. Jedna část je uložena v paměti hardwarové peněženky, druhá je uložena na serveru Blockstreamu. V případě, že chcete peněženku použít, musíte zadat PIN. Po jeho zadání server Blockstreamu pošle vaší peněžence druhou část seedu, a ta se v dočasné paměti zařízení Jade spojí. Když Jade vypnete nebo dokončíte práci, z dočasné paměti RAM se druhá část smaže a peněženka je bez zadání pinu a druhé části znovu nepoužitelná. Blockstream přitom má pouze polovinu seedu, která je sama o sobě nepoužitelná na nic (dokonce ani k identifikaci uživatele a jeho adres).

Passphrase

Dobrým řešením všech zmíněných problémů je používání tzv. passphrase. Používá se podobně, jako kdybyste používali heslo (je to něco, co si vymyslíte a při používání peněženky ho musíte zadat), ve skutečnosti se však jedná spíše o další slovo seedu. To znamená, že ke slovům seedu se přiloží passphrase a až z tohoto řetězce se vypočítávají klíče. Passphrase tedy nelze změnit – respektive pokud použijete jinou (nesprávnou) passphrase, odemkne se vám jiná peněženka. Zde je důležité si uvědomit, že znát přesné znění passphrase je nutnou podmínkou použití peněženky a ztráta (zapomenutí) passphrase způsobí, že své Bitcoiny nebudete moci použít. Passphrase je tak třeba dobře odzálohovat.

Problém s papírkem se seedem, který najde útočník, řeší tak, že bez znalosti passphrase pouze se samotným seedem není možné ani jen zjistit o jakou peněženku se jedná, natož ještě odeslat Bitcoiny. Ale toto řešení vytváří druhý problém – jak neztratit passphrase? Je třeba ji také někam zapsat. Tento fakt zdůrazňuji – je mnoho lidí, kteří použili passphrase, kterou si určitě zapamatují, a pár let na to chodili na sezení k hypnoterapeutovi, aby si na zapomenutou passphrase vzpomněli. Při záloze se nikdy nespoléhejte na to, že si něco zapamatujete. Passphrase můžete například uložit na různá místa (například k rodinným příslušníkům).

bitcoin backup
Zadáváte passphrase na hardwarové peněžence Trezor Model T

Passphrase je třeba použít vždy, když přistupujete k peněžence. Většina peněženek vám ji dovolí zadat buď na počítači nebo na peněžence samotné – doporučuji zadávat na peněžence, i když zadávání na klávesnici vašeho zařízení může být pohodlnější. Znovu – vaše zařízení může být infikováno malwarem, který odchytává, co na něm píšete, a obzvlášť se zajímá o kolonky, kde se píše nějaké heslo.

Passphrase chrání před útokem na samotnou hardwarovou peněženku, protože v zařízení je uložen pouze seed, ale není tam uložena passphrase. Pokud se útočníkovi hardwarovým útokem podaří získat seed, bez passphrase mu je tento seed k ničemu.

Skryté peněženky

Pokud máme dobře odzálohovaný seed a používáme passphrase, měli bychom mít vyřešenou trvanlivost zálohy a možnost obnovy. Zároveň bychom měli být chráněni proti běžným zlodějům, kteří nám vykradou domácnost a získají ať už zálohu seedu na papírku, nebo samotnou peněženku. Stále jsme však nevyřešili všechny možné útoky. Jeden z nejběžnějších útoků, který je bohužel stále častější je fyzický útok – únos a násilí.

bitcoin backup
Jak si crypto šprt představuje útok: „Jeho laptop je zašifrován. Postavme superpočítač za milion dolarů, abychom šifru zlomili.“ – „Och ne! Je to 4096bitová RSA šifra!“ - „Dokelu! Náš masterplán je v háji!“. Co se ve skutečnosti stane: „Jeho laptop je zašifrován. Pojďme ho nadrogovat a potom ho budeme mlátit tímto klíčem za $5, než nám řekne své heslo.“ – „Jasně, pojďme na to!“. Zdroj: https://xkcd.com/538/

Častým doporučeným řešením tohoto problému je používat více různých passphrase. Tato technika se jmenuje „hidden wallets“ (skryté peněženky). Říkali jsme si, že passphrase je v podstatě další slovo seedu, a tedy zadáme-li jinou passphrase, odemkneme jinou peněženku. Technika skrytých peněženek využívá tohoto faktu – pokud přijde útočník a bude chtít odemknout peněženku, zadáme passphrase k peněžence, kterou používáme, ale nemáme tam všechny bitcoiny. Útočník odejde s nějakými penězi, my si zachráníme majetek.

bitcoin backup
Různé passphrase odemykají různé peněženky. Pokud nezadáme passphrase, otevře se úplně jiná peněženka, jako když zadáme passphrase „Martha“. Úplně jiná peněženka se otevře při jiné passphrase. Zdroj: Trezor článok o passphrase

O užitečnosti této strategie mám pochybnosti. Marginální náklad pokračování v útoku je poměrně malý, a jelikož toto schéma je poměrně známé (tedy o něm vědí i útočníci), myslím, že jediný způsob jak odolat tomuto typu útoku, je ve skutečnosti nemít žádnou možnost okamžitého přístupu k peněžence s úsporami, například tak, že ji potřebujeme vyskládat z více míst, nemáme ji v žádné peněžence nebo jsou Bitcoiny v peněžence zamčené pomocí časového zámku.

Fyzické útoky na peněženky

Pojďme ještě k fyzickým útokům na peněženky. Existují dva typy útoků, které nás mohou ohrozit. Prvním je útok na dodavatelský řetězec. Ten mimochodem není pouze doménou hardwarových peněženek. Tento typ útoku využívá fyzický přístup k zařízení při cestě od výrobce k zákazníkovi. Pokud útočník dokáže otevřít zařízení a změnit mu firmware, případně změnit hardware, lze vytvořit zadní dvířka. V případě hardwarové peněženky to může být například o tom, že místo vygenerování náhodného klíče vytvoří peněženka klíč se sedem, který je znám útočníkovi a ignoruje případnou passphrase. Peněženka se fyzicky tváří stejně, ale dělá něco jiného než originální zařízení od výrobce. Tento problém se týká koupě peněženek z druhé ruky, z neautorizovaného obchodu, ale v případě serverového hardwaru nastal dokonce i odchycením zásilky během přepravy.

bitcoin backup
Hardwarová bezpečnost peněženky se často odvolává na nálepky s hologramy. Určitě je při koupi peněženky doporučujeme zkontrolovat, ale ještě lepší je peněženky kupovat jen od renomovaných prodejců. Zdroj: Trezor.io

Výrobci se tento problém snaží řešit pečetěmi s hologramy a různými jinými způsoby. Snad nejjednodušší dostupné řešení je kupovat zařízení přímo od výrobce nebo od renomovaného prodejce (např. Alza).

Druhý útok se jmenuje „špatná uklízečka“ (evil maid). Je to kategorie útoků, kam patří i zmiňovaný útok na peněženku za účelem vytažení seedu z jeho paměti. Jsou to útoky, které může provést někdo, kdo má fyzický přístup k zařízení na delší dobu (např. pár hodin). K těmto útokům patří například výměna kabelu od klávesnice za kabel, který všechny stisknuté klávesy vysílá pomocí rádiového signálu (kabel funguje jako anténa). V případě hardwarových peněženek je to například hardwarová modifikace (nebo i výměna) peněženky za takovou, která odvysílá passphrase, případně generuje adresy, které patří útočníkovi. Mezi způsoby obrany patří „pečeť“, kontrola, zda zařízení nebylo otevřeno silou, a jeho přizpůsobení (například změna obrázku úvodní obrazovky), abychom uměli identifikovat, zda nebylo zařízení vyměněno kus za kus. Mezi dobré způsoby obrany může patřit i uložení hardwarové peněženky do uzamykatelného trezoru.

Některé peněženky (například ColdCard) umožňují i zadání tvz. Duress PIN, který odemkne úplně jinou peněženku. Má to podobný efekt jako zadání jiné passphrase. Další fyzickou bezpečnostní funkcionalitou je tzn.Brick me PIN, který peněženku smaže a ireverzibilně zničí (nelze již nijak aktivovat). Mimochodem, pokud používáte mobilní zařízení s GrapheneOS, podobný koncept funguje i u nich, po zadaní tohoto PINu se zařízení okamžitě smaže.

Záloha na QR kód

I když anglická slova většinou píšeme perem na papír, obnova na peněženkách s malým dotykovým displejem nebo tlačítky není zcela uživatelsky přívětivá. Peněženky SeedSigner a Blockstream Jade umožňují proto vytvořit zálohu i v podobě QR kódu. Tento dokážeme v případě potřeby obnovy načíst pomocí kamery, která je integrována v těchto dvou zařízeních.

Jak však vytvoříme QR kód, pokud nemáme seed uchovávat digitálně? Poslat seed v podobě QR kódu na tiskárnu není dobrý nápad, co když jsou zařízení děravá a data posílají pryč? (Mimochodem, u tiskáren to není vůbec nepravděpodobná věc – firmware tiskáren je notoricky děravý a výrobci často nevydávají aktualizace a uživatelé aktualizace firmwaru ještě méně často aktualizují).

Bezpečnostní model virtuálního secure elementu peněženky Jade

Odpovědí je papír a černý fix. Na papíře (který dostanete s Jade, nebo si ho můžete vytisknout) je vytištěna základní mřížka a vodící čtverce QR kódu. Peněženka vám ukáže, které čtverečky máte vymalovat fixem a poté vám umožní ověřit správnost vymalování šablony pomocí kamery. Pokud se QR kód správně načte, máte pořízenou zálohu, kterou můžete obnovit pomocí těchto peněženek. Pozor, doporučuji nenačítat mobily a jinými zařízeními, dokonce i pokud nejsou zrovna připojeny k internetu – jednak se načtený QR kód často ukládá do historie, a kromě toho každý malware může odchycené informace lokálně uložit a odvysílat, když se k internetu připojí.

Multisig

Doposud jsme se bavili o nejjednodušším schématu – na utrácení Bitcoinů z adresy potřebujeme podpis jedním privátním klíčem. Bitcoin však podporuje mnohem širší spektrum podmínek díky skriptovacímu jazyku Bitcoin Script. Díky této funkcionalitě například může fungovat síť Lightning network.

Jednou z nejzajímavějších možností, co se týče zálohy, je tzv. multisig, tedy nutnost použít k podpisu transakce více klíčů. Tuto funkcionalitu podporují víceré hardwarové peněženky, i když často je třeba použít alternativní softwarovou peněženku, například Sparrow Wallet, Electrum, či známá peněženka Nunchuk, ke které se ještě dostaneme.

bitcoin backup
Vytvoření multisig 2 ze 3 peněženky pomocí aplikace Sparrow Wallet. K podpisu budeme potřebovat dva podpisy ze tří. Jednotlivé podpisy mohou být softwarové peněženky, ale i připojené hardwarové peněženky.

Multisig peněženka po vytvoření, nastavení a spárování jednotlivých podepisovacích zařízení (klíčenek) vytvoří speciální adresy, ze kterých lze utrácet jen za přítomnosti dostatečného množství podpisů. Je například možné vytvořit peněženku „2 ze 4“, kdy jsou zapotřebí dva podpisy ze čtyř. Tuto peněženku můžeme vytvořit například tak, že jeden možný podpis bude softwarová peněženka (například zmiňovaná Sparrow wallet se softwarovým klíčem). Další klíč bude z hardwarové peněženky (například Trezor Safe 3 s passphrase) a další dva klíče budou klíče z obálek ve formě QR kódu (SeedQR) a zálohy seed slov.

Po vytvoření takové peněženky obdržíme nové adresy. Pokud na ně pošleme Bitcoiny, potřebujeme kterékoli dva podpisy ze čtyř možných. K tomu, abychom měli dostatečnou zálohu i bezpečnost, tedy potřebujeme spolupráci dvou podepisovacích zařízení. Ty můžeme rozdistribuovat například takto:

  • Jeden klíč budeme mít na našem běžném počítači, který používáme. Jím podepisujeme běžné transakce.
  • Druhý klíč budeme mít na zmiňované hardwarové peněžence s passphrase.
  • Třetí klíč předáme důvěryhodnému rodinnému příslušníkovi.
  • Čtvrtý klíč předáme v tamper-evident obálce spolu se závětí.

Běžné použití je vytvoření a podepsání transakce na počítači (se softwarovým klíčem) a dodatečné podepsání Trezorem. V případě, že přijdeme o jeden z klíčů (například nám ukradnou počítač nebo ztratíme hardwarovou peněženku), můžeme jej získat od rodinného příslušníka a Bitcoiny poslat na novou sadu adres. V případě naší smrti při dědickém řízení může být čtvrtý klíč použit v souladu s naší poslední vůlí (a spolu s klíčem od důvěryhodného rodinného příslušníka).

Peněženka jako například Nunchuck zjednodušuje proces vytvoření a přidává možnost uložení klíče pro dědictví v rámci jejich placeného programu úschovy Bitcoinů. Zde je důležité uvědomit si, že žádný klíč sám o sobě nemůže být použit k utrácení Bitcoinů, vždy je nutná spolupráce alespoň dvou klíčů při podepisování. To, abychom měli přístup k našim Bitcoinům, jsme vyřešili tak, že jsme si nechali dva ze čtyř klíčů a máme k nim přístup, takže můžeme použít oba klíče. Takto lze vytvořit libovolně jednoduchá a složitá schémata, například se umíme bránit proti možné chybě v hardwarové peněžence a vyžadovat podpisy od dvou hardwarových peněženek různých výrobců a podobně.

Má tento přístup nevýhody? V současném případě je první zjevnou nevýhodou výše poplatku, když budeme transakce utrácet. Pokud byste si například takto chtěli spořit ve výši například 50 € měsíčně, utracení každých coinů by mohlo být klidně čtyřikrát dražší než běžná platba, přičemž podepisovat je třeba každou přijatou neutracenou transakci (UTXO). Jelikož nevíme, jaké poplatky budou v budoucnosti, je to problém. Na tento problém jsme narazili například v jednom neziskovém projektu, kde utrácení dobrovolných příspěvků schvalovala dozorčí rada právě pomocí multisig schématu – a bohužel na utracení mnoha příspěvků bylo třeba zaplatit poplatek, který byl vyšší než příspěvek samotný.

Druhou a podstatnou nevýhodou je, že nestačí mít přístup k privátním klíčům dostatečného počtu zařízení, musíte mít i zálohu celého podpisového schématu. Pokud se vám po šuplících válí různé hardwarové peněženky a vytvoříte z nich například schéma 2 ze 3, pokud jednu peněženku ztratíte, nedokážete vytvořit podpis ani s dodatečnými dvěma zařízeními – k vytvoření adresy a platného Bitcoin scriptu je totiž třeba znát veřejný klíč i třetího zařízení a přesné schéma, jak bylo podpisové schéma vytvořeno. Pokud si tedy někdo myslí, že zálohou jsou tři sady seedů tří peněženek, může být při obnově velmi zklamaný.

Komplikovanost tohoto schématu je zároveň jeho největší nevýhodou. Nutnost zálohy a výměny částečně podepsaných transakcí použití komplikuje, a je proto vhodnější pro pokročilé uživatele. Peněženky jako Nunchuck mohou použití zjednodušit.

Záloha multisig peněženky

Pro zálohu multisigové (nebo jakékoli komplikovanější) bitcoinové peněženky je třeba znát formát skriptu, kterým jsou uzamčeny bitcoiny. Z tohoto skriptu se pak vytváří Bitcoinová adresa a skript musí přesně na bajt sedět. Pro zjednodušení záloh bylo vymyšleno několik standardů. Prvním je BIP-0380, který popisuje výstupní deskriptory. Pro jejich snazší zálohování a používání vznikl formát souborů BSMS (soubor s příponou .bsms), který obsahuje vše potřebné k vytvoření multisig peněženky. Je popsán ve standardu BIP-0129.

bitcoin backup
Peněženka Sparrow Wallet při vytváření multisig schématu upozorní na potřebu vytvoření zálohy peněženky. Nestačí mít odzálohované klíče, je třeba si uložit zálohu tzv. „Output descriptora“. Alternativně lze provést i zálohu ve formě BSMS souboru.

Pokud si vytvoříte multisig peněženku, vaše peněženka by měla mít možnost uložit její popis ve formátu BSMS. Ten můžete vytisknout ve formě QR kódu nebo dobře odzálohovat na digitální médium (lepší obojí), protože bez něj nebude možné zálohu obnovit, pokud nebudete mít přístup ke všem seedům a netrefíte přesný formát multisig schématu. Na druhé straně multisig peněženky využívající tento formát by měly být kompatibilní.

Shamirovo schéma

Multisig vyžaduje více podpisů z pevně dané sady klíčů. Něco na první pohled podobného dodává Shamirovo schéma – ale nevyžaduje více podpisů, ale rozděluje jeden klíč na více částí. Toto je jeden z nejlepších způsobů zálohy a je výchozím způsobem vytvoření zálohy u nové peněženky Trezor Safe 5.

Shamirovo schéma na zálohu peněženky specifikuje otevřený standard z dílny Satoshi Labs SLIP-39. Jeho autoři stáli i za standardem BIP-39, ale nutno podotknout, že i když je tento standard otevřen, zatím ho nepodporuje žádná jiná peněženka než peněženky Trezor (kromě Trezor One) a command-line softwarová peněženka Hermit. Přesto v případě, že se přestanou vyrábět hardwarové peněženky Trezor, stále máte možnost použít referenční open-source implementaci na obnovu vašich Bitcoinů.

Pokud jsme při tradiční záloze seedom měli například 12 slov, víme si v případě Shamirova schématu vytvořit různé sady seedů podle toho, jak je potřebujeme. Například můžeme vytvořit podobné schéma, jak jsme zmiňovali výše – bude zapotřebí dvě sady ze čtyř. Jednotlivé sady slov mohou vypadat například takto:

  1. engage busy academic acid black river flash robin scramble realize hospital beyond mailman twin lift junk analysis friar welfare purple
  2. engage busy academic agency answer western obesity romp deal teacher idea primary nuclear observe airline mansion sidewalk machine large acid
  3. engage busy academic always crucial detailed parcel extend pistol building findings slim herald animal timely criminal medical describe emerald prospect
  4. engage busy academic aquatic desert hybrid herald database friendly evil eraser husband lawsuit kernel gather style evoke tenant sack adorn

Tyto sady mají po 20 slovech a mají v sobě zakódovanou informaci o tom, že k obnově jsou zapotřebí dvě ze čtyř sad. Znovu můžeme udělat to, že si dvě odložíme doma (pozor, pak je třeba použít passphrase, která není uložena), jednu necháme rodinnému příslušníkovi a jednu vložíme do závěti.

Rozdíl oproti multisigu však je v tom, že v tomto případě nepotřebujeme k podpisu dva klíče ze čtyř – k podpisu stačí jedno zařízení, například to, které tuto zálohu vytvořilo. Dvě sady slov budeme potřebovat, jen pokud dané schéma budeme chtít obnovit na nové zařízení.

Z pohledu vytváření transakcí jde tedy o standardní adresu, kde stačí jeden podpis, ale k obnově zálohy je třeba specifikovaný počet záloh ze všech – například 2 ze 4. Shamirovo schéma 2 ze 2 je bezpečnější volbou rozdělení slov na dva papírky po 6 slovech, kterou jsme zmiňovali výše, protože žádný papírek sám o sobě nesnižuje bezpečnost. Shamirovo schéma je dobré v tom, že menší než potřebný počet kousků skládačky nedodá vůbec žádnou informaci o klíčích. Přidáte-li poslední potřebný kousek skládačky, složí se celá – ostatní kousky skládačky nemusíte mít přístupné vůbec.

Vysvětlení Shamir Backup od autorů Trezoru

Tento přístup má samozřejmě – jako všechno – i nevýhody. První nevýhodou je menší podpora peněženek, u hardwarových peněženek jste zatím odkázáni na produkty Satoshi Labs, i když jejich obnova je možná i v případě, že přestanou fungovat.

Další nevýhodou oproti multisig schématům je nižší auditovatelnost použití. U multisig schémat vidíte, které podpisy byly použity, a umíte tak dokázat případné zneužití klíče (například pokud se někdo dostane ke klíčům ze závěti, víte, že byly použity právě ty). Pokud někdo obnoví zálohu pomocí Shamirova schématu, nelze zjistit, které sady slov byly použity – obnovená peněženka vypadá ve všech případech stejně.

Nová peněženka Trezor Safe 5 nově vytváří automaticky Shamirovo schéma 1 z 1. To může na první pohled znít jako nesmysl, ale ve skutečnosti to uživateli umožňuje později seed libovolně rozdělit, což při běžném seedu není tak snadno možné. Pokud je peněženka vytvořena pomocí SLIP-39 Shamirova schématu, můžete vytvářet různé sady slov s libovolnými podmínkami, a to dokonce i hierarchicky a po vytvoření peněženky. Toto rozhodnutí mi přijde velmi užitečné, i když v takovém případě tuto peněženku neobnovíte na žádném jiném zařízení než na Trezoru.

Jak bezpečně nastavit Shamirovo schéma? To závisí na každém z vás, vaší rodinné situaci, množství Bitcoinů a vašich preferencích. Jak moc věříte svým blízkým, že vás neokradou? Věříte standardnímu dědickému řízení, nebo chcete k Bitcoinům dát rodině přístup už teď?

Myslete však na oba aspekty – i obnovitelnost i to, aby vás někdo neokradl. Problém s obnovitelností nastane například, pokud vytvoříte schéma 5 z 5 – kdokoliv z pěti držitelů seedu jej ztratí, omylem vyhodí nebo o něj přijde díky živelné pohromě, znamená, že záloha je nepoužitelná. Je tedy dobré mít nějakou vůli (například 3 z 5 je z tohoto pohledu asi lepší schéma). Na druhé straně nechcete, aby dva členové rodiny, kterým až tak nevěříte, mohli získat všechny vaše bitcoiny. Příkladem mohou být dva sourozenci, se kterými se už teď hádáte o dědictví domu po babičce. Máte-li schéma například 2 ze 4 a tito dva sourozenci mají dva díly, není to dobrý nápad.

Také doporučuji i při Shamirově schématu používat passphrase. Ta by měla být několikrát odzálohována – například u všech částí zálohy, které se nacházejí jinde než vaše hardwarová peněženka (u peněženky není dobré mít passphrase, neboť to zjednodušuje přístup zlodějům k vašim coinům).

Základní Shamirovo schéma v Trezoru vypadá jako „multisig“ – tedy ptá se vás kolik sharů (sad slov) vytvořit a kolik z nich je potřeba pro úspěšnou obnovu zálohy. Například „2 ze 4“. Je však možné vytvořit i složitější schémata, například „buď 2 ze 2 nebo 3 z 5“, čímž dostanete 7 sad slov. Z první sady (skupiny) jsou potřeba oba seedy, z druhé skupiny potřebujete 3 z pěti. Jeden seed z první skupiny a dva seedy z druhé skupiny nebudou fungovat. Chcete-li vytvořit složitější Shamirovo schéma, můžete tak učinit pomocí příkazu trezorctl: trezorctl device setup -b advanced

Tento příkaz je třeba pustit při inicializaci Trezoru.

bitcoin backup
Super Shamir pomocí příkazu trezorctl.

Multisig jako dodatečné podmínky

Vraťme se ještě k multisigu a podívejme se na to, jak jej využívají lidé jinak než jen tradičním potvrzováním transakcí. Zopakujme si ještě jednou rozdíl mezi multisigem a Shamirovým schématem. Shamirovo schéma po složení potřebného počtu částí z celkového počtu obnoví privátní klíče, kterými lze již podepisovat všechny transakce. Multisig schéma znamená, že ke každé transakci je zapotřebí daný počet podpisů. Tradiční použití tohoto schématu je například klasický společný přístup k účtům – například pokud se jedná o firemní prostředky, každou transakci musí schválit dva ze čtyř jednatelů.

Jeden z podpisů však může být software, který podpisy přidává za různých podmínek. Takto je například vytvořen protokol na půjčky Firefish, nebo dvoufaktorová autentifikace peněženek Aqua a Blockstream Green.

bitcoin backup
Multisig nastavení dvojfaktorového ověřování v peněžence Blockstream Green. Zdroj: Dokumentace peněženky Blockstream Green.

Tento pohled na multisig nám přináší zbrusu nové možnosti. V případě 2 ze 2 multisig účtů peněženka Green poskytuje druhý podpis za specifických okolností, na základě nastavení v peněžence. K podepsání transakce potřebujete jednak klíč, který se nachází přímo v peněžence (a je odzálohován pomocí seedu). Samotný klíč v zařízení (a PIN nebo biometrická autentifikace) nestačí a je třeba získat podpis od serveru Green. Server transakci podepíše, pokud se mu prokážeme druhým faktorem. Tím může být ověření pomocí e-mailu, SMS zprávy, pomocí aplikace podporující TOTP (např. Google Authenticator) nebo na základě telefonátu. Povolit můžete také několik metod. Bez nich server transakci nepodepíše. U tohoto schématu je samozřejmě dobré znát odpověď na otázku: Co se stane, když přijdeme o druhý faktor nebo přestane-li fungovat podepisovací server? U 2 ze 2 schématu je druhý podpis možné nahradit expirací časového zámku – coiny můžete použít bez blockstream serveru po jeho vypršení čistě s prvním klíčem (a odzálohovaným schématem adresy!). Časový zámek si můžete nastavit na 6, 12 nebo 15 měsíců po posledním pohybu. Pokud chcete, aby časový zámek chránil vaše Bitcoiny i nadále, je třeba coiny před jeho expirací poslat na novou adresu, aby se časový zámek obnovil – peněženka vás o této potřebě bude informovat.

V případě 2 ze 3 schématu můžete mít zálohu ve formě dalšího seedu nebo (ještě lepší) hardwarové peněženky Jade. Běžné používání se nijak neliší – použijete klíč ze zařízení a Blockstream server podepíše transakci druhým klíčem, pokud se zvládnete ověřit pomocí druhého faktoru (znovu: e-mail, SMS, telefonát nebo TOTP autentifikace). Rozdíl je ve způsobu obnovy – pokud přijdete o možnost použít druhý faktor nebo přestane fungovat druhý server, nemusíte čekat na časový zámek, ale můžete použít druhý klíč ze zálohy nebo z hardwarové peněženky Jade.

Tento způsob využití multisigu má však ještě jednu výhodu – můžete si zadefinovat jinou podmínku, kdy druhý faktor není potřebný. Například to, kolik eur můžete denně utratit bez potřeby dodatečného přihlášení. Protože blockstream server ví hodnotu Bitcoinů v době, kdy má podepsat transakci, umíte opravdu specifikovat i eurovou hodnotu. Tuto vlastnost je obtížné dosáhnout přímo v Bitcoin skriptu, protože ten nemá přístup k aktuálním tržním cenám Bitcoinů (alespoň ne bez dodatečných technologií jako oracles a discreet log contracts). Pokud jste si do peněženky poslali například jeden bitcoin, když měl hodnotu 10000 €, neuměli jste si nastavit spending podmínku „denně chci utratit nejvýše 1000 €“ denominováním bitcoinů v eurech – podstatné je, jakou mají hodnotu, když je utrácíte, ne když jste je přijali. Tuto funkcionalitu umožňuje právě podpis serveru, který závisí na tom, kolik peněz z peněženky odešlo za posledních 24 hodin. Tuto funkcionalitu využívají i enterprise řešení peněženek jako Fireblocks (i když ty používají jiný způsob multisigu jako Bitcoin script). Na této technologii jsou postaveny i jiné modely, na jeden z nich se podíváme.

ZenGo MPC

Možná bychom mohli nabýt pocitu, že vynálezem záloh pomocí seedu (ať už tradičního, nebo rozděleného pomocí Shamirova schématu) skončil vývoj. V Bitcoinu však různí lidé mají různé přístupy k bezpečnosti a zkoušejí nové věci. Jedním z nových přístupů je také přístup, který zkouší peněženka ZenGo, která vůbec nepoužívá seed zálohy a využívá technologii MPC (Multi Party Computation). Hned na úvod musím říci, že neplánuji konvertovat mé peněženky na ZenGo, protože tento přístup má pro mě mnoho nevýhod, ale je dobré se zamyslet nad tím, jak lze nadesignovat jiný systém záloh.

Bezpečnostní model peněženky ZenGo

Multi Party Computation (MPC) a na nich postavené threshold signatures je nový způsob rozdělení privátního klíče. Je to jakási zvláštní kombinace vlastností multisigu a Shamirova schématu. Podobně jako u Shamirova schématu jde z pohledu Bitcoinu o obyčejné adresy s podpisem jedním klíčem. Podobně jako u multisigu je však třeba každou transakci podepisovat správným počtem „klíčů“ (ve skutečnosti se nazývají „podíly“ – shares, nebo shards). Jednotliví participanti tedy mají části klíče a samotný privátní klíč nikdy není na jednom místě – participanti podpisového schématu společně vytvářejí podpis, aniž by se privátní klíč kdekoli objevil. Přesto lze kolaborativně vypočítat příslušející veřejný klíč.

Z praktického pohledu se jedná o schéma velmi podobné multisigovým adresám – každou transakci musí podepsat dostatečný počet uživatelů (například dva ze tří), jako je tomu u peněženky Green. Výhodou oproti multisigu jsou však dvě věci: jednak je transakce malá, neboť z pohledu Bitcoinu se jedná o podpis jedním klíčem, jen je „zvláštně“ vypočtený. A druhou výhodou je, že se jedná o multisig schéma na úrovni podpisového schématu, takže jej můžeme rovněž použít i u jiných blockchainů, které používají podobné podpisové schéma (například pokud bychom chtěli chránit stablecoiny na Ethereum síti, která nativně nepodporuje multisig účty). Pomocí jedné sady klíčů tak můžeme chránit majetek na více sítích.

Z pohledu používání se jedná v případě implementace v peněžence ZenGo na první pohled o něco velmi podobného jako výše popsané schéma 2 ze 2 peněženky Green. Jednu část klíče máte vy na svém zařízení, druhou má ZenGo server. K podpisu jsou potřeba obě a ZenGo server vás ověří pomocí druhého faktoru. V případě ZenGo je však založen na skenu vašeho obličeje pomocí jejich technologie skenování obličeje. V případě, že by se s vaší tváří něco stalo (například dopravní nehoda), můžete určit záložní tvář, která může druhý faktor také podepsat. Podobně jako u peněženky Green můžete určit částku, nad kterou je třeba ověření druhým faktorem – tváří.

Kde se ZenGo poněkud liší je způsob zálohování části klíče, který je uložen na vašem zařízení – místo jeho přeměny na slova se záloha spojí s vaším e-mail účtem (kvůli spárování s druhým sharem), je uložena v cloudu (Dropbox, Google Drive, iCloud, …) a pokud chcete, může být uzamčena skenem vašeho obličeje (ten dodá část dešifrovacího klíče). Přístup k e-mail adrese ověřuje ZenGo peněženka pomocí poslání jednorázového linku, tím se určí, o který účet se jedná a ověří se sken obličeje a dešifruje se váš share. Jedná se o non-custodial řešení – bez odzálohovaného souboru se ZenGo nemá jak dostat k vašemu podílu na privátním klíči a bez něj je klíč nepoužitelný.

Druhá odlišnost od Green je možnost určit dědice (v placené verzi ZenGo Pro). Při „dědickém řízení“ se ZenGo serverem musí být splněna podmínka neaktivity. Ta se však neověřuje pomocí time-locku na blockchaine, ale pomocí toho, kdy jste naposledy otevřeli ZenGo peněženku. Pokud uplyne určený čas (4 až 24 měsíců, podle toho, jak si peněženku nastavíte) od posledního otevření, může váš dědic použít svůj share spolu se sharem na serveru. Bez dodatečného časového odstupu nebude server ZenGo s dědicem spolupracovat.

Podobné schéma by se dalo udělat do jisté míry i pomocí multisigu, krása této technologie je však v tom, že dědice můžete kdykoli vyměnit, aniž byste museli posílat prostředky z vaší peněženky na jiné adresy – vypočítají se pouze nové shares.

Peněženka ZenGo v placené verzi obsahuje různé další funkce, které jsou zajímavé, ale jdou nad rámec tohoto článku. Pojďme však k nevýhodám. V první řadě ZenGo nijak neřeší situaci, kdy se vám a vašemu dědici stane nehoda najednou – například společná autohavárie. Určit lze pouze jednoho dědice a není-li dostupný, přijdete o prostředky.

Další nevýhodou je, že pod tlakem dokážete podepsat jakoukoli transakci. Peněženka nepodporuje například zpoždění poslání transakce o 48 hodin v případě, že přesahuje nějakou částku. Má-li útočník vás při vaší peněžence, donutí vás tváří odemknout a poslat ven všechny prostředky.

Kromě toho na rozdíl od hardwarové peněženky může zobrazovat jiné informace, než opravdu podepíše – to je stejný problém s malware jako u jakékoli softwarové peněženky. Aplikace ukáže posílání na jednu adresu, ale ve skutečnosti podepisujete transakci na jinou adresu. Hardwarová peněženka vám umožňuje na obrazovce zkontrolovat a potvrdit poslání na správnou adresu. Takže hardwarovou peněženku bych peněženkou ZenGo určitě nenahrazoval, alespoň ne na úspory.

A samozřejmě tady je otázka, co se stane, pokud firma přestane fungovat a server ZenGo zmizí. Firma má na to dohodu se třetími stranami, které publikují shares tak, že je peněženka umí přímo použít. Problém je cokoli mezi tím – bez druhé strany nedokážete podepsat žádnou transakci. Co se například stane, když firma dostane například soudní příkaz, kterým zakáže vašemu účtu podepsat jakoukoli transakci? Správně – nemůžete hýbat se „svými“ Bitcoiny.

Přestože tento způsob úschovy nedoporučuji, je dobré vědět i o takových možnostech a pro některé lidi to může být dobré a jednoduché řešení dědictví. A možná některé z těchto výhod umíme využít i při nastavení našeho dědictví.

Časové zámky a social recovery

Při dědictví nás často zajímá i to, abychom k Bitcoinům za našeho života měli přístup pouze my a aby se naši dědicové dostali k Bitcoinům až po naší smrti. Jedním ze způsobů je již zmiňovaný časový zámek. Například při multisig schématu lze vytvořit Bitcoin skript tak, aby byl zapotřebí jeden klíč do nějakého času (nejvíce 15 měsíců, resp. 65535 bloků) a po této době lze použít i jiný klíč. Tento jiný klíč (který dáme dědicům) prvních 15 měsíců od přijetí coinů nefunguje. Případně pro dědice lze vytvořit i složitější schéma, například multisig 2 ze 3, aby se dědici museli navzájem dohodnout.

V případě, že je časový zámek vytvořen na Bitcoinovém blockchainu, je třeba prostředky do expirace časového zámku znovu poslat na adresu a znovu je uzamknout na dalších max. 15 měsíců. Tento přístup zjednodušuje například open-source peněženka Liana.

bitcoin backup
Peněženka Liana umožňuje vaše Bitcoiny uložit na adrese, kde jsou dostupné hlavním klíčem (nebo klíči) okamžitě, ale vašim dědicům jsou dostupné až po vypršení časového zámku od posledního pohybu.

Social recovery umožňuje přístup k prostředkům potvrzením nějakým množstvím vybraných uživatelů, také většinou po vypršení časového zámku. V Ethereum ekosystému se tímto směrem vydaly například peněženky Argent (Vault) nebo Safe (Gnosis). U Bitcoinu je asi nejznámějším příkladem peněženka Fedi projektu Fedimint, která má podobnou funkcionalitu. Zálohou je vámi nahrané video a ověření pomocí „ochránců“, které si vyberete. Ti ověří vaši identitu oproti tomuto videu. Fedi však umožňuje i použití zálohy pomocí seedu. Pozor – Fedi je polo-custodial peněženka (privátní klíče mají správci federace).

Časové zámky a dědictví v aplikaci Nunchuk

Přístup podobný peněžence ZenGo k časovým zámkům a social recovery má i peněženka Nunchuk ve svém placeném programu. Časový zámek je tam vytvořený na základě dodatečného klíče, který platforma dovolí použít až po nějakém čase.

Jak nastavit dědictví v placeném programu peněženky Nunchuk

Nunchuk využívá jako časový zámek klíč platformy, nikoli relativní time-lock. Tím pádem si můžete nastavit (a libovolně měnit) čas, kdy lze použít klíč dědice. Technicky se jedná o multisig 2 ze 4. Jeden klíč má dědic (resp. jej umí získat od platformy na základě kódu dědictví a hesla), jeden platforma a dva klíče má majitel peněženky. V praxi vaše klíče mohou být buď softwarové nebo hardwarové, respektive jejich kombinace.

Můžete tak mít například peněženku, kde pomocí softwarového klíče (tedy čistě s mobilním zařízením) můžete utratit například 1000$ měsíčně. V takovém případě se použije softwarový klíč v aplikaci a klíč platformy, která zkontroluje splnění podmínky (méně než 1000$ měsíčně) a v případě, že je podmínka splněna, přidá svůj podpis.

Pokud byste chtěli své prostředky utratit nad rámec této podmínky, můžete transakci dodatečně podepsat klíčem na hardwarové peněžence (podporovány jsou všechny známé hardwarové peněženky). Ke svým Bitcoinům se tak dostanete i bez spolupráce platformy Nunchuk (máte dva ze čtyř klíčů, což stačí k vytvoření platného podpisu a zálohu peněženky v podobě BSMS souboru).

Jak funguje dědictví? Klíč je zašifrován a uložen na platformě Nunchuk, dědic se k němu dostane pomocí dvou identifikátorů. Jeden představuje identifikátor peněženky (v podstatě login) a druhý je dešifrovací klíč na podepisovací klíč. Platforma tedy nemá přístup k dešifrované podobě dědického klíče. Platforma má zároveň dodatečný klíč platformy, kterým podepíše transakci, splňuje-li všechny podmínky, zejména tu, že vypršel časový zámek, jaký eviduje, že je nastaven.

Platforma tak v žádném okamžiku nemá přístup k vašim Bitcoinům (má přístup jen k jednomu klíči ze čtyř, ale jsou zapotřebí dva). Vy zároveň máte v každém případě přístup k Bitcoinům, dodatečné podepisování však můžete provádět jen za jistých okolností, které si nastavíte.

Otázkou zůstává, jak dlouho bude platforma fungovat. Ke svým Bitcoinům se dostanete vždy, ale dědické řízení v případě krachu platformy nemusí fungovat. Dalším faktorem je cena, Nunchuk si za program s dědickým řízením účtuje $480 ročně.

Lightning a ecash

Při zálohování bychom neměli zapomínat na Lightning peněženky. Jejich záloha je ovšem mnohem komplikovanější. Nejlepší je použít způsob zálohování, který doporučuje výrobce peněženky a tyto se liší.

Většina peněženek se snaží o replikaci zkušenosti se zálohováním seedu, a tak si jako součást zálohy většinou máte odepsat 12 anglických slov. Jelikož při Lightningu je třeba ukládat si podepsané transakce, které se mění při každé platbě, tato slova sama o sobě nestačí a je třeba mít čerstvou zálohu. K tomu se různí výrobci staví různě, například Breez zálohu ukládá do uživatelova cloudu (Google Drive, Apple iCloud, Dropbox) a ta je zašifrována klíčem odvozeným ze seedu. Ze seedu se zároveň vypočítají klíče pro on-chain část peněženky.

Phoenix funguje podobně, ale pro zálohu používá servery Phoenixu, nikoli cloudové úložiště. V případě výpadku Phoenixu nebo jeho odstranění z obchodů (což se stalo uživatelem v USA) je obnova zálohy problematická.

Při zálohování Lightingu je tedy dobré seznámit se se způsobem zálohování dané peněženky, ne si jen slepě odepsat seed a doufat, že záloha funguje.

bitcoin backup
Záloha Cashu e-cash peněženky cashu.me

Podobný problém mají i e-cash systémy – je potřebný aktuální stav (tedy seznam e-cash tokenů). Naštěstí oba velké e-cash systémy: Cashu i Fedimint tento problém řeší za uživatele a na většinu e-cash tokenů stačí obnova pomocí seedu ve spolupráci s mint. Co je však třeba si zapamatovat je seznam mint (Cashu) nebo federací (Fedi), kterým uživatel důvěřuje. Zálohu můžete obnovit pouze pokud víte, u jakého vydavatele máte své bitcoinové e-cash tokeny.

Child seeds – BIP-85

Pokud používáte Bitcoin, máte předpokládám často různé peněženky, které zkoušíte a ke kterým si musíte zapisovat seedy. Ať už se jedná o Lightning peněženky, různé softwarové peněženky nebo snad máte dodatečné hardwarové peněženky, které používáte k jiným účelům. A u těchto peněženek je třeba také dělat zálohu.

Tyto zálohy mohou skončit jako záznamy ve správci hesel, čímž riskujete jejich odcizení v případě hacku počítače. Druhou možností jsou papírky a obálky. Některé hardwarové peněženky však mají třetí možnost – standard BIP-85.

Pomocí tohoto standardu lze z vašeho hlavního seedu vypočítat „dětské“ seedy. Tedy pokud máte zálohu hlavní peněženky, umíte pomocí menu peněženky vygenerovat další seedy, které jsou vypočteny z hlavního seedu peněženky. Takto si nemusíte nic navíc zapisovat.

Jako všechno i tato skvělá funkcionalita má nějaké nevýhody a omezení. Prvním z nich je, že BIP-85 nepodporují všechny hardwarové peněženky. Mezi ty, které tento standard podporují patří ColdCard, BitBox, Blockstream Jade a SeedSigner. Bohužel v tomto seznamu chybí Trezory od SatoshiLabs. Kombinace možnosti zálohy pomocí Shamirova schématu, kterou podporuje pouze Trezor, s možností takto odzálohované zařízení používat ke generování seedů pro jiné peněženky, by byla skvělou volbou pro zálohování pro mnohé uživatele.

Druhým problémem je, že při generování odvozených seedů si nemůžete přímo v zařízení přidat poznámku, generovány jsou podle čísla. To v praxi znamená, že si musíte někde poznamenat, jak vygenerujete seed její peněženky (například máte softwarovou peněženku, jejíž seed získáte tak, že si ve své hardwarové peněžence dáte vygenerovat 12-slovný seed z indexu 0). Tedy musíte si zapamatovat informaci „Název SW peněženky, 12-slov, index 0, z mé hlavní ColdCard“. Tuto informaci si můžete zapsat do správce hesel, ale znovu nedoporučuji spoléhat na paměť. Pokud je tato informace ve správci hesel, je třeba dědicům dát k němu přístup.

bitcoin backup
Vytvoření nového seedu odvozeného od hlavního seedu pomocí standardu BIP-85 a peněženky Blockstream Jade. Zvolíme možnosti, BIP85, počet slov seedu a index (v tomto případě 21) a můžeme si odepsat seed, který je deterministicky vygenerován (a tedy stejným postupem se k němu můžeme kdykoli dostat přes menu Jade). Zdroj: Návod na BIP-85 od Blockstreamu.

Poslední problém je, že ne každá peněženka vám dovolí „obnovit“ neexistující peněženku. Proces vytvoření seedu je zde otočen oproti procesu, jak jsme zvyklí. Většinou seed generuje peněženka, kterou si instalujeme (například Lightning nebo on-chain peněženka) a ta nám řekne, abychom si zapsali seed. Pokud však chceme použít standard BIP-85 jako formu zálohy, bude proces opačný – seed nám vygeneruje naše hardwarová peněženka v rámci BIP-85 funkcionality a tento seed musíme vložit do peněženky, kterou chceme používat, přes funkcionalitu obnovy peněženky.

Problém je, že některé peněženky zjistí, že peněženka s daným seedem nebyla u nich vytvořena. Týká se to hlavně Lightning peněženek, které na server ukládají stav. Přesto by tento postup měl fungovat na většinu peněženek, které používají jeden ze standardních formátů seedů.

Exotické způsoby zálohování

Zmíníme ještě jeden způsob zálohování. Kdysi bylo populární mluvit o seedu jako o „mnemonickém seedu“, tedy jako o něčem, co je možné si zapamatovat. I když zálohu ve formě pamatování si seedu důrazně nedoporučuji (lidská mysl zapomíná mnohem více, než si většina z nás uvědomuje), má své využití – například pokud se stěhujete s celým svým majetkem přes hranice.

Je zajímavé, že jsme v počítačové bezpečnosti doporučeními dospěli ke zvláštnímu stavu, kdy generujeme hesla, která sice nejsou až tak silná, ale těžko se pamatují, když je možné generovat hesla, která se těžko lámou i pamatují.

bitcoin backup
Xkcd 963: Vývoj hesel. Zdroj: XKCD 936

Samozřejmě, krátkodobě si zapamatovat ve správném pořadí 12 anglických slov není nemožné, ale chceme-li si něco zapamatovat, je možné využít i jinou strategii. Může jí být volba velmi silného hesla, které určitě nebude používat nikdo jiný. Heslo samotné není dobré používat jako klíč.

Dnes už nevyvíjený projekt Brainbow měl pěkné řešení na problém zapamatovatelné peněženky. Uživatel si zvolí heslo, které je pomocí dvou funkcí a pomocí saltu přeměněno na master seed peněženky. Funkce, které se používají mají za cíl zpomalit útok hrubou silou, jsou to funkce PBKDF2 a scrypt. PBKDF je tzn. na hesle založená funkce pro výpočet klíče (Password-based key derivation function). Autoři doporučovali spojit heslo s e-mailovou adresou, ale může to být také jméno.

Zásadní problém je, že často neumíme vyhodnotit, jak je heslo opravdu silné. A obzvláště u peněženky platí, že pokud ho někdo uhodne, přišli jsme o bitcoiny. Mimochodem seedy, které si lidé vymysleli, s opakujícími se slovy, už bitcoiny na svých adresách nemají – útočník s dostatečně dobrou grafikou si je poslal do své peněženky.

Pro jednorázový přenos prostředků v rámci dočasné peněženky to však může být dobrý způsob krátce trvající zálohy.

U exotických způsobů zálohy je důležité si uvědomit, že čím větší exotika, tím se snižuje pravděpodobnost, že zálohu někdy obnovíte. Pokud jste poslechli radu Joshe Datka z úvodu tohoto článku a uložili jste si zálohu na magnetofonovou pásku, možná někde právě sháníte walkman. Naštěstí se walkmany stále vyrábějí. Zda přežila páska magnetickou bouři je však sporné.

Proto doporučuji používat co nejstandardnější schéma s podporou co největšího množství peněženek.

Dědictví a dokumentace

Odzálohovat klíče nestačí. Nejen pro nás, ale také pro pozůstalé. Kde jsme si vytvořili jaké peněženky a kde máme jaké prostředky, si člověk nepamatuje už ani po pár měsících. Pozůstalí nemají, jak se dozvědět, co všechno a jak je třeba obnovit. Proto je dobré pro sebe i pro ně napsat dokumentaci.

Odevzdat jim ji můžeme na papíře (a nechat si jednu kopii), nebo se může nacházet zašifrovaná ve sdílené složce. Dokonce lze peněženku zašifrovat pomocí klíče, který je odvozen z hardwarové peněženky. V takovém případě doporučuji dokumentaci rozdělit na dvě části – první částí bude „jak obnovit seed“ a „jak dešifrovat zbytek dokumentace“, druhou samotná podrobná dokumentace.

Pokud používáte peněženky Trezor nebo Ledger, podporují šifrování pomocí programu GPG přímo ze zařízení. Pozor, je třeba přesně odzálohovat ID klíče, ten je potřebný k obnově.

Dobrou volbou je rodině dát v rámci dokumentace (první části) kontakt na člověka, kterému důvěřujete as technickou částí obnovy dědictví pomůže. Za tuto službu je dobré zaplatit, ideální dopředu (lidem je trochu blbé říkat si o peníze po smrti) a konzultantovi dát vědět, co ho v případě naší smrti čeká.

Kterou možnost zvolit?

Popsali jsme si možnosti záloh – od klasického seedu ve formě 12–36 slov přes rozdělení zálohy pomocí Shamirova schématu až po ukládání Bitcoinů na speciálních multisig adresách – ať už klasicky, nebo s asistencí nějaké platformy. Multisig i singlesig zálohy můžeme zajistit pomocí časových zámků proti tomu, že vám Bitcoiny během vašeho života vezmou dědici (ať už vědomě, nebo v případě fyzického útoku na ně).

Časové zámky může vynucovat přímo Bitcoinový blockchain, jako například v případě peněženky Liana. To znamená nutnost přeposílat Bitcoiny před jejich expirací na nové adresy – kvůli novému obnovení časového zámku. Druhou možností je, že časový zámek vynucuje platforma tak, že se zaváže použít svůj privátní klíč (nebo jeho část) k podepsání transakce jen tehdy, když námi daná podmínka byla aktivována. Tento přístup volí peněženky ZenGo nebo Nunchuk.

Na druhé straně cokoli komplikovanější nebo nestandardní nemusí přežít test časem. Seed i první hardwarové peněženky na světě (Trezor One) obnovíte i dnes, ale jestli bude existovat o 10 let ZenGo se svým komplikovaným multiparty computation schématem a dostupným klíčem, neumíme říct.

Podívejme se na jednotlivé způsoby zálohování ještě očima trvanlivosti, obnovitelnosti a ochraně před krádeží nebo zneužitím.

Trvanlivost

K trvanlivosti patří to, zda záloha přežije test entropií (časem) a test technologické zastaralosti. Pokud je vaše záloha notebook z roku 2024, je možné, že za 20 let se s tímto notebookem již nepřipojíte k internetu, případně nebude existovat žádný Electrum server, který by vám umožnil zálohu obnovit. Pokud se porouchá elektronika, máte problém. Proto je prakticky nejlepší z obou pohledů trvanlivosti použít co nejvíce low-tech způsob – papír, pero nebo kovová záloha mohou být dobrý způsob. Cokoli složitějšího může znamenat hledat za 20 let zařízení s USB-A portem, stahovat z mirrorov starý archiv peněženky, která se již nevyvíjí a podobně.

Dalším aspektem trvanlivosti zálohy je její standardnost – je záloha provedena způsobem, kterým ji dělají miliony lidí? Pokud ano, pak je dost pravděpodobné, že se najde způsob na její obnovu i za 20 let, protože nebudeme sami se stejným problémem.

Způsoby, které nezávisí na jedné záloze na jednom fyzickém místě jsou samozřejmě nejlepší. K tomu nám poslouží nějaká forma multisigu nebo Shamirovo schéma.

Obnovitelnost

Jsme schopni zálohu obnovit? To závisí také na složitosti, ale také na dostupnosti technologií pro obnovu a dostupnosti záloh samotných.

Vůbec nemusí být na škodu stáhnout a uložit software pro obnovu peněženky na nějaké digitální médium, ideální v podobě zdrojového kódu. Používáte Shamirovo schéma? Uložte si kopii tohoto depozitáře.

Záloha by měla být obnovitelná každým, kdo se má dostat k našim Bitcoinům. Pokud dědicové nejsou technologicky schopni obnovovat hardwarové peněženky nebo dešifrovat GPG zašifrované soubory, zvyšte obnovitelnost tím, že jim doporučíte důvěryhodného technického konzultanta, kterého znáte.

Ochrana před zneužitím

Prvním způsobem zneužití je jednoduchý zloděj, který se dostane k papírku nebo kovové záloze vašeho seedu. Ujistěte se, že záloha je bez passphrase nepoužitelná, nebo alespoň že používáte Shamirovo schéma a jeden seed k obnově nestačí. Passphrase samozřejmě nesmí být na stejném papírku jako záloha, ale ujistěte se, že je odzálohována správně a umíte se k ní dostat.

Druhý způsob je fyzický útok na vás. Obranou mohou být skryté peněženky, které ale nemáte spárovány v hardwarové peněžence – pokud se vám po otevření peněženky ukáží všechny, útočníka těžko přesvědčíte, že k další peněžence nevíte heslo. Nejlepší obranou je zajistit, že se ke svým Bitcoinům nedokážete dostat rychle. Například Shamirovo schéma 3 z 5, kde žádná ze záloh není ve stejném státě (a používáte alespoň dva kontinenty), znamená nutné zdržení obnovy zálohy. Druhá možnost je nějaká forma časového zámku. Ať už on-chain time lock, klíč platformy nebo zpomalení fyzického přístupu (každá záloha je v trezoru se zámkem se zpožděným otevřením). Zde je však také vhodné říci, že jakékoli překomplikování zvyšuje pravděpodobnost, že se k záloze nedostanete vůbec.

bitcoin backup
Tamper evident obálka s číslem. Najdete ji také pod označením „security bag“. Každá by měla mít zvláštní číslo a měla by se nenávratně poškodit, pokud ji po prvotním uzavření zalepíte. Koupíte na poště.

Třetí způsob je krádež klíčů rodiny (dědiců). Ke snížení tohoto rizika lze používat například tamper-evident obálky s číslem. Jsou to obálky, které nelze otevřít bez fyzického zničení obálky. Integritu obálek pravidelně kontrolujte (například při aktualizaci dokumentace). Ještě lepší možnost je použít časové zámky, čímž budou Bitcoiny nepoužitelné, pokud obnovujete transakce nebo se staráte o časový zámek.

Další zdroje

Organizace Jednadvacet vydala článek Základní orientace v dědictví bitcoinu. Její autor Stallion vydal i článek Bitcoin pod vlastní kontrolou. Zajímavou může byť i Příručka Hodlera od Pavla Urbaczka a Tomáše Elberta z právnické kanceláře Blockchain Legal, která se věnuje i praktickým aspektům – kde uložit zálohy, jak k nim přistupovat a podobně.

Závěr

Přestože problematika držení (ve formě self-custody) a zálohování Bitcoinu je složitá, dává nám Bitcoin zároveň možnost být pod kontrolou. To je podle mě unikátní propozice Bitcoinu. Je to něco, co můžete opravdu vlastnit.

Juraj Bednar

Juraj Bednár

Jsem cypherpunker, mám rád svobodu, soukromí, peer to peer technologie a terminálová okna. Zkoumám chaotický svět, volatilitu a nejistotu, bojuji proti entropii - zakládám firmy a neziskové projekty, dělám kurzy a píšu knihy. Jsem spoluzakladatel Paralelní Polis, hackerspace Progressbar a bug bounty platformy Hacktrophy. Vystudoval jsem obor umělá inteligence a ta se vrátila tak, jako bych o ni nikdy ani neslyšel. O všech těchto zkušenostech píšu blog.

Zkuste naše cookies

My, společnost Alza.cz a.s., IČO 27082440 používáme soubory cookies a další údaje k zajištění funkčnosti webu a s Vaším souhlasem i mj. k personalizaci obsahu našich webových stránek. Kliknutím na tlačítko „Rozumím“ souhlasíte s využívaním cookies a dalších údajů vč. jejich předání pro zobrazení cílené reklamy na sociálních sítích a reklamních sítích na dalších webech.

Více informací
Rozumím Podrobné nastavení Odmítnout vše
P-DC1-WEB24