Vo svetle nedávneho útoku na Coldcard Wallet si iste viacerí kladú otázku, ako sa chrániť pred podobnými problémami. V tomto prípade išlo o slabý generátor náhodných čísel, no rovnako dobre by to mohla byť chyba vo firmware, hardvéri či dodávateľskom reťazci. Veď aj v našom obľúbenom Trezore by sa raz mohla objaviť kritická chyba. Multisig znie ako dobré riešenie, avšak ako ho použiť správne?
Štandardne ľudia navrhujú použiť 2 z 3 multisig, pričom každý kľúč vygeneruje peňaženka od iného výrobcu. Zároveň to ponúka prirodzené riešenie záloh – každý seedZáloha peňaženky, najčastejšie vo forme 12 alebo 24 slov. Pozri tiež HD peňaženka. More uložíme na inom mieste. Toto riešenie má však niekoľko nevýhod:
- Je drahé. Ak veríme, že chyba nebude vo všetkých peňaženkách naraz, musíme si kúpiť jedenapolnásobok potrebného počtu zariadení.
- Nemusí byť realizovateľné. Výrobcov hardvérových peňaženiek nie je veľa a pri väčších schémach jednoducho nebude z čoho vyberať.
- Nepočíta s asymetrickou dôverou. Ak napríklad Trezoru dôverujeme výrazne viac než ostatným výrobcom, chceme naozaj, aby dve menej dôveryhodné peňaženky dokázali spoločne minúť všetky naše prostriedky?
Na prvý pohľad sa preto ponúka schéma n z n. V takom prípade musia byť kompromitované všetky peňaženky naraz, aby došlo ku krádeži. To však zdanlivo vytvára nový problém – čo ak jednu peňaženku stratím?
A tu prichádza možno neintuitívny trik.
Multisig rieši ochranu pred kompromitovanou peňaženkou. Zálohy riešia ochranu pred stratou. Sú to dva rôzne problémy, takže nie je dôvod, aby mali rovnaký prah.
Inými slovami: počet kusov zálohy vôbec nemusí byť rovnaký ako počet peňaženiek.
Ako to môžeme urobiť? Budeme potrebovať aspoň jednu peňaženku, ktorá podporuje Shamirovu schému, a ľubovoľný počet ďalších peňaženiek. Tie môžu byť pokojne aj softvérové.
Najprv všetky inicializujeme. Na peňaženkách podporujúcich Shamir nastavíme požadovaný počet častí a prah obnovy, povedzme 2 z 3. Pripravíme si tri papiere (alebo obálky), pričom každý bude obsahovať tabuľku s názvami peňaženiek. Potom pre každú peňaženku zapíšeme na každý papier príslušnú časť seedu. Ak niektorá peňaženka Shamir nepodporuje, jej seedZáloha peňaženky, najčastejšie vo forme 12 alebo 24 slov. Pozri tiež HD peňaženka. More jednoducho skopírujeme celý na všetky papiere. Výsledkom sú tri kompletné balíčky, z ktorých každý obsahuje jednu časť zálohy každej peňaženky.
Napokon nastavíme multisig naprieč všetkými peňaženkami a pošleme testovaciu transakciu. Odporúčam zároveň overiť, že obnova zo záloh naozaj funguje.
Každý papier uložíme na iné miesto a máme hotovo. Samozrejme môžeme použiť aj ďalšie vylepšenia, ako laminovanie či vyrazenie do kovu.

– peňaženky na obrázku sú len ako príklad, neznamená to, že naozaj podporujú Shamir rozdelenie –
Na rozdiel od bežných multisig schém netreba samostatne zálohovať xpuby – dajú sa znovu odvodiť zo seedov. Navyše ich priame uloženie vytvára ďalšie riziko: ktokoľvek nájde xpuby, okamžite sa môže dozvedieť, akú sumu chránia. Ak ich už chceme zálohovať, dáva zmysel rozdeliť ich rovnakou Shamirovou schémou ako seedy.
Táto schéma je samozrejme zložitejšia, takže dáva zmysel najmä pri väčších sumách. Verím však, že už kombinácia 2 z 2 multisig pre ochranu pred kompromitovanou peňaženkou a 2 z 3 zálohy predstavuje výrazné zvýšenie bezpečnosti za minimálne dodatočné náklady.








