Pro každého, kdo má v držení značné množství bitcoinů, by měla být struktura úschovy, která zahrnuje jediný bod selhání, nepřijatelná. Pokud peněženka obsahuje jedinou součást, která – při ztrátě nebo krádeži – může vést k trvalé ztrátě finančních prostředků, pak je prostě příliš nebezpečná, než aby se o ní uvažovalo. Nikdo nechce držet významný majetek na pokraji katastrofy.“
Individuální držitelé bitcoinů mají k dispozici řadu nástrojů, které mohou pomoci snížit riziko ztráty nebo krádeže. V předchozím článku jsme se některými z těchto nástrojů zabývali a upozornili jsme na úpravy běžně používané v singlesigových peněženkách. Vysvětlili jsme však také, proč tyto přístupy nedokážou zcela odstranit jednotlivé body selhání.“
Pro podnik, vládu nebo jinou instituci, která chce zabezpečit bitcoinovou pokladnu, není odstranění jednotlivých bodů selhání jen příjemnou záležitostí, ale nezbytnou podmínkou. Jediné modely úschovy, které pro tyto subjekty stojí za zvážení, jsou ty, které zahrnují požadavek na prahovou hodnotu pro přístup k finančním prostředkům. Prahový požadavek popisuje strukturu, která zahrnuje více samostatně zabezpečených složek, přičemž ke schválení jakéhokoli výběru je zapotřebí podmnožina těchto složek. Jedná se o jediný způsob, jak dosáhnout zabezpečení institucionální úrovně, kdy jsou zcela eliminovány jednotlivé body selhání.
V tomto článku se budeme zabývat tím, jak aplikovat prahové zabezpečení pomocí tří různých metod: skriptový multisig, Shamirovo sdílení tajemství (SSS) a výpočet více stran (MPC). Také se budeme zabývat kompromisy spojenými s jednotlivými přístupy a tím, jak si instituce může vybrat nejlepší nastavení, které vyhovuje jejím potřebám.
Co je to multisig?
Pokud si nejste jisti, co je to skript multisig, doporučujeme podívat se na náš starší článek věnovaný vysvětlení, jak multisig peněženky fungují a k čemu se používají. Pro rychlý přehled: multisignační peněženka zahrnuje více soukromých klíčů a může být nakonfigurována tak, že k podpisu jakékoli transakce je zapotřebí určitý počet (práh) těchto soukromých klíčů. Podpisy mohou být vytvářeny v různých časech a na různých místech, což umožňuje, aby každý klíč zůstal fyzicky oddělen. Jakmile je vytvořen prahový počet podpisů, lze je spojit do jediné bitcoinové transakce schopné utratit finanční prostředky
Tento relativně jednoduchý způsob vytvoření prahového požadavku je velmi účinný při odstraňování všech jednotlivých bodů selhání. Pokud je prahová hodnota pro výdaje větší než jedna, ale menší než celkový počet klíčů, pak se může ztratit, být odcizen nebo zničen jakýkoli jednotlivý klíč, aniž by se bitcoin stal neobnovitelným. Zbývající klíče mohou podepsat obnovovací transakci, která přesune prostředky do nového multisig nastavení.
Satoshi Nakamoto položil základy multisig, když byl bitcoin poprvé vydán, a předpokládal, že by se mohl stát populárním mechanismem pro zabezpečení prostředků. Nicméně až softfork P2SH v roce 2012 způsobil, že se multisig začal stávat široce používaným nástrojem. Od té doby se multisig osvědčil jako bezpečnostní model prověřený bojem po více než deset let, a to v několika různých typech adres.“
Co je Shamirovo sdílení tajemství?
Shamirovo sdílení tajemství (SSS) je algoritmus sdílení tajemství, který v roce 1979 vyvinul známý kryptograf Adi Shamir. Lze jej použít jako další způsob zavedení prahového požadavku pro ochranu bitcoinů. SSS umožňuje uživatelům rozdělit klíč na několik distribuovaných „podílů“, přičemž k opětovnému sestavení klíče je zapotřebí pouze určitý práh podílů. Toho lze využít k návrhu kvórů, jako je 2-of-3 nebo 3-of-5, podobně jako u multisig.
Tento přístup však stále vede k tomu, že v určitých případech během jeho životního cyklu dochází k selhání jednoho bodu. Jedním z příkladů je situace, kdy je klíč zpočátku rozdělen na podíly SSS. Tato operace se obvykle provádí na jediném zařízení v jediném čase a na jediném místě. Pokud útočník kompromituje toto zařízení, proces generování klíče nebo proces vytváření sdílení, kompromituje klíč. Dalším příkladem je, kdykoli uživatel potřebuje znovu složit klíč k podepsání transakce. Je třeba dát dohromady prahový počet podílů, opět na jednom zařízení v jednom čase a na jednom místě, čehož by mohl útočník zneužít.“
Poměrně jednoduchý a široce používaný způsob implementace technologie SSS pro úschovu kryptoměn je prostřednictvím zálohování Shamir, které vyvinula společnost Satoshi Labs v roce 2017. Lze ji nalézt jako volitelnou možnost v některých modelech hardwarových peněženek Trezor
Co je to MPC?
MPC neboli výpočet s více stranami je podoblast kryptografie, jejíž počátky sahají do 70. let 20. století. Cílem MPC je umožnit více účastníkům společně provádět výpočet, přičemž příspěvek každého účastníka k výpočtu není zbytku skupiny prozrazen, a proto může zůstat soukromý. To umožňuje spolupráci více účastníků v různých kontextech, aniž by si museli navzájem důvěřovat.
Při aplikaci na úschovu bitcoinů zahrnuje MPC distribuované „podíly“, podobně jako SSS. Na rozdíl od SSS se však podíly nerozdělují ze soukromého klíče ani se nepoužívají k obnově soukromého klíče. Místo toho více stran vypočítá jeden podpis přímo z prahu svých podílů
Na rozdíl od SSS nevyžaduje MPC jediný bod selhání. Akcie MPC mohou být generovány odděleně jedna od druhé a pro provoz peněženky je nikdy není třeba spojovat. Informace vytvořené ze sdílení mohou být sděleny ostatním účastníkům, aniž by bylo odhaleno samotné sdílení.“
Vzhledem k tomu, že bitcoin a další kryptoměny používají především podpisový systém založený na ECDSA (Elliptic Curve Digital Signature Algorithm), bylo nutné MPC pro tento kontext přizpůsobit. První praktické prahové protokoly pro ECDSA byly zveřejněny v roce 2018. [GG18, LNR18]
Jaké jsou kompromisy mezi prahovými modely?
Vzhledem k tomu, že máme na výběr ze tří různých modelů prahového zabezpečení, je dalším krokem pochopení silných a slabých stránek každé z možností.
Kompromisy s multisig
Skript multisig je standardizovaný způsob dosažení prahového zabezpečení, nativní pro protokol bitcoin. Tato struktura je považována za relativně jednoduchou a robustní. Vstupní bariéra je také malá – pokud uživatel bitcoinu umí pracovat se singlesig peněženkou, pak není velkým skokem naučit se nastavit a používat multisig peněženku
Při inicializaci multisig peněženky jsou v adresách vytvořených pro příjem bitcoinů do peněženky zabudovány požadavky na prahové zabezpečení. Jakmile je multisigová adresa financována, jsou bitcoiny chráněny nezměnitelným kontraktem, který byl v podstatě zapsán do samotného blockchainu. Jediný způsob, jak smlouvu změnit (například změnit politiku řízení přístupu, upravit, které klíče bitcoin chrání), je přesunout bitcoin na novou adresu, která byla vytvořena s jinou smlouvou. Pro více stran, které spolupracují na zabezpečení bitcoinů, může tento přízemní mechanismus neměnné smlouvy poskytnout nejvyšší stupeň jistoty, že peníze jsou zabezpečeny podle toho, jak všechny strany zamýšlely. Pokud by se cokoli zásadně změnilo, bylo by to všem zřejmé díky výskytu veřejné transakce a byly by známy klíče, které změnu schválily. To je důvod, proč poskytovatelé kolaborativních úschov, jako je Unchained, spoléhají u svých produktů na skriptový multisig
Veřejné nasazení smluv v blockchainu však s sebou nese kompromisy. Vzhledem k tomu, že se bitcoiny utrácejí z multisig adresy, musí být politika řízení přístupu k této adrese trvale zveřejněna v blockchainu. Pozorovatelé pak mohou vidět podrobnosti o multisigovém kvoru, které bylo použito. Přestože zbývající prostředky lze snadno migrovat na novou adresu do budoucna, skutečnost, že jsou odhalena minulá bezpečnostní opatření, není ideální. Navíc nutnost přesouvat bitcoiny z jedné adresy na druhou za účelem úpravy politiky řízení přístupu znamená, že s tímto procesem jsou vždy spojeny transakční poplatky (a čím větší je kvorum, tím dražší to bude).“
Pro subjekty, které si cení úschovy altcoinů, jako jsou kryptoměnové burzy, může skript multisig představovat větší problém než ostatní dvě metody prahového zabezpečení. Je to proto, že prahové kvorum multisig je zavedeno na úrovni blockchainu a různé kryptoměny používají různé blockchainy. Mnoho kryptoměn dokonce nativní robustní implementaci multisig vůbec nepodporuje. Zatímco SSS a MPC vynucují prahové kvorum na úrovni klíčů a veřejně vypadají jako singlesigové transakce. Vzhledem k tomu, že téměř všechny kryptoměny podporují podobný standard pro singlesig úschovu (stejný klíč lze použít ve většině kryptoměn), umožňuje to SSS a MPC větší kompatibilitu napříč řetězci
Kompromisy se Shamirovým sdílením tajemství
SSS nabízí další způsob, jak navrhnout prahový požadavek založený na relativně jednoduché a bitvou prověřené kryptografii. Pro účely úschovy kryptoměn má SSS také široce rozšířenou metodu s nízkou vstupní bariérou (Shamirovo zálohování). Jakmile má někdo zkušenosti s používáním běžné singlesig peněženky, není velkým skokem použít Trezor k nastavení peněženky se Shamirovou zálohou.“
Na rozdíl od multisig funguje SSS zcela mimo veřejně přístupné adresy a transakce v blockchainu. Místo toho o požadavku na prahovou hodnotu rozhoduje způsob rozdělení soukromého klíče na podíly. To znamená, že rozdělení klíče na podíly a jejich pozdější opětovné složení může být provedeno neveřejně, takže o použití SSS vědí pouze lidé, kteří se účastní dohody o úschově bitcoinů. Kromě výhod pro soukromí znamená udržování prahové struktury mimo blockchain také to, že transakce SSS nepovedou ke zvýšení poplatků a lze ji použít k zabezpečení mnoha různých kryptoměn. Ačkoli většina kryptoměn má své vlastní unikátní blockchainy, všechny mohou sdílet stejný soukromý klíč jako přístupový bod a tento klíč lze zase rozdělit pomocí SSS.“
Největší nevýhoda SSS již byla zmíněna výše – soukromý klíč musí existovat na jednom místě v jeden okamžik, před prvním rozdělením na podíly a také při opětovném sloučení podílů pro účely schválení výběru. Tyto slabiny vytvářejí dočasné jednotlivé body selhání, což znamená, že SSS sám o sobě nenabízí skutečně institucionální zabezpečení, na rozdíl od multisig nebo MPC.
Navíc SSS nativně nenabízí metodu pro úpravu zásad řízení přístupu. Jakmile je soukromý klíč rozdělen do kvora sdílených klíčů, tyto sdílené klíče si vždy zachovají schopnost tento klíč reprodukovat. Pokud skupina společně zabezpečuje pokladnu pomocí SSS a člen skupiny odejde, může bezpečné zrušení oprávnění pro tuto osobu představovat problém. Zbývající členové skupiny by mohli klíč znovu sestavit a poté jej rozdělit do nových sdílených částí, ale staré části by musely být ověřitelně zničeny. V opačném případě by prostředky musely být odeslány do zcela nové peněženky chráněné jiným klíčem.
Kompromisy s MPC
Podobně jako SSS, MPC prosazuje požadavek na prahovou hodnotu na úrovni klíče místo na úrovni blockchainu. To odemyká podobné výhody, jako je poskytnutí vyšší kapacity pro soukromí, vyhnutí se zvýšeným transakčním poplatkům a umožnění použití jedné struktury úschovy MPC v mnoha různých kryptoměnách
Důležité je, že MPC se daří vyhnout dočasným jednotlivým bodům selhání, které přicházejí s použitím SSS. Díky použití jiné kryptografické metody mohou sdílené klíče existovat odděleně od okamžiku prvního vytvoření peněženky, a dokonce mohou zůstat oddělené i při podepisování transakcí při výběru. Většina implementací MPC také obsahuje nativní metodu úpravy politiky řízení přístupu (vytvoření nového kvora podílů), aniž by bylo nutné posílat prostředky na novou adresu peněženky.
MPC pro prahovou ECDSA je však považována za velmi složitou kryptografii a pro její použití neexistuje dohodnutý standard. Existuje mnoho různých protokolů, přičemž první dva byly vyvinuty nezávisle na sobě v roce 2018 Gennarem a Goldfederem [GG18] a Lindellem a dalšími [LNR18]. Od té doby jsme se setkali také s protokoly od Doernera et al. [DKLs19], Castagnose et al. [CCL+20], Damgårda et al. [DJM+20], Canettiho et al. [CMP20], Gągola et al. [GKSS20], Gennaro a Goldfedera [GG20], Canettiho et al. [CGG+21], Abrama et al. [ANO+21], Doernera et al. [DKLs23] a možná i dalších. I když novější protokoly mají tendenci přinášet určitá vylepšení oproti starším protokolům, mohly mít méně příležitostí k vzájemnému hodnocení, auditu a dalšímu testování
Vyšší úroveň složitosti spojená s MPC vytváří rozšířenou plochu pro útoky. S dalšími součástmi a postupy je větší prostor pro chyby a potenciální bezpečnostní zranitelnosti. Důkazy o závažných bezpečnostních chybách, včetně útoků na extrakci úplného soukromého klíče, se již objevily vícekrát a postihly některé z výše uvedených prahových protokolů ECDSA
Příklady zahrnují např:
Zranitelnosti AS20, září 2020, ovlivňující implementace GG18
Zranitelnosti Alpha-Rays, prosinec 2021, ovlivňující GG18 a GG20
Zranitelnosti TSSHOCK, srpen 2023, ovlivňující GG18, GG20 a CGG+21
Zranitelnosti BitForge, srpen 2023, postihující GG18 a GG20
„Kryptografie musí projít zkouškou času, aby dosáhla dlouhověkosti, a tyto nové protokoly zjevně zkouškou času neprošly[…] tento výzkum nebyl připraven na implementaci nebo široké přijetí. Z mého pohledu je implementace a produktivizace takového nedávného výzkumu poměrně nebezpečná.“ – Technický ředitel společnosti Ledger Charles Guillemet, prosinec 2021, reakce na Alpha-Rays
“[MPC is] složitější, více se dá pokazit. Pokročilé šifrovací protokoly jsou křehké v detailech a v implementaci. Větší jistotu bych cítil u multisig, který je super jednoduchý a pevný jako skála.“ – Příspěvek renomovaného kryptografa Adama Backa, leden 2023
MPC je také omezen tím, kdo jej může reálně používat v první řadě. Jak již bylo zmíněno, prahová ECDSA je velmi komplikovaná. Pro běžného jednotlivce nejsou k dispozici žádné nástroje, které by MPC bezpečně a snadno samostatně nastavily. Některé podniky sice nabízejí peněženky MPC pro společnou úschovu, které se poměrně snadno používají, ale tyto podniky nenabízejí uživatelům žádný snadný způsob, jak získat zpět prostředky, pokud podnik zanikne (nebo nenabízejí vůbec žádný způsob, v takovém případě představují jediný bod selhání). Protože skriptový multisig je jednoduchý a otevřený standard, mohou podniky, které poskytují řešení kolaborativní úschovy pomocí multisig, nabízet nástroje pro obnovu s otevřeným zdrojovým kódem a snadným použitím. To vytváří pro klienty jednoduchou cestu k obnovení jejich prostředků, i kdyby kolaborativní multisigový podnik již nebyl k dispozici, aby jim pomohl.“
Který model je nejlepší?
Jak jsme právě uvedli, existuje řada kompromisů mezi použitím multisig, SSS a MPC. Pro názorné srovnání je lze uspořádat do tabulky:
Pokud se podnik specializuje na úschovu mnoha různých kryptoměn, může být motivován najmout tým odborníků, kteří pečlivě nastaví model úschovy MPC. Pokud by však firma nebo jednotlivec hledali jednoduchý a spolehlivý způsob, jak dlouhodobě zabezpečit bitcoiny, mohlo by být vhodnější použít skript multisig a akceptovat kompromisy v oblasti ochrany soukromí. SSS se sám o sobě používá jen zřídka, protože nedokáže vždy prosadit prahové požadavky institucionální úrovně.“
Kombinace modelů pro společnou úschovu
Zatímco multisig, SSS a MPC jsou často považovány za konkurenční modely zabezpečení, je možné do celkové struktury úschovy začlenit více než jeden z nich. Jak již bylo popsáno dříve, SSS a MPC umožňují vytvořit podpis pro transakci s určitým prahem sdílení klíčů. Pokud by podpis sloužil k utracení prostředků ze singlesig peněženky, pak by k dokončení transakce nebylo potřeba nic dalšího. Pokud by se však místo toho jednalo o podpis pro vydání prostředků z multisig peněženky, mohly by být zapotřebí i další podpisy z jiných klíčů.
Ačkoli se tato kombinace technik může zdát zbytečná a těžkopádná, skutečně existují některé kontexty, kdy má praktický smysl. S nárůstem popularity klíčových agentů a úschov pro více institucí roste počet specializovaných firem, které jsou pověřovány jednotlivci a institucemi, aby zajistily jeden z klíčů k multisig peněžence. Tito distribuovaní agenti klíčů mohou pomoci snížit riziko úschovy. Jak by však měl agent pro klíče zabezpečit tento jediný klíč, za který je zodpovědný?
SSS nebo MPC může být strategií, jak minimalizovat nebo odstranit jednotlivá místa selhání této povinnosti. Podnikový agent pro klíče může navrhnout systém, v němž každý z několika různých úředníků v rámci podniku vlastní podíly na klíči, a proto lze podpis vytvořit pouze na základě souhlasu prahové hodnoty těchto úředníků. Pokud by navíc došlo k útoku během opětovného sestavení SSS nebo pokud by implementace MPC skončila s novou zranitelností při extrakci klíče, jako jsou ty uvedené dříve, pak nejsou bezprostředně ohroženy žádné prostředky zákazníka. Klíčový agent by měl čas na reakci a řešení problému, zatímco bitcoiny by zůstaly chráněny širší multisig peněženkou.“
Použití skriptového multisig k vytvoření požadavku na práh jako základní neměnné smlouvy a následné pověření profesionálních klíčových agentů, aby každý chránil multisig klíč pomocí svého vlastního prahu SSS nebo MPC, je pro instituci zdaleka nejbezpečnější metodou, jak udržet bitcoiny dlouhodobě zabezpečené.
Nové možnosti s Taproot
V listopadu 2021 došlo k soft-forku Taproot, který do bitcoinového ekosystému přidal nové nástroje. Některé z těchto nástrojů ovlivňují budoucnost institucionální úschovy bitcoinů tím, že umožňují určitá vylepšení a volitelnost
- Schnorrovy podpisy: Algoritmus podpisu Schnorr je nyní v bitcoinu k dispozici jako alternativa k ECDSA. Použití MPC nad Schnorrem vede k prahovým bezpečnostním schématům, která jsou ve srovnání s dříve zmíněnými protokoly ECDSA mnohem méně komplikovaná, a proto také poskytují vyšší důvěru v jejich bezpečnost. FROST je předním Schnorrovým prahovým podpisovým protokolem, zatímco MuSig2 je k dispozici také speciálně pro N-of-N kvorum. Obě tato podpisová schémata jsou na cestě k tomu, aby se stala standardizovanými nástroji v celém bitcoinovém průmyslu, a očekává se, že zpřístupní MPC pro běžné jednotlivce s uživatelskou zkušeností podobnou skriptovému multisig.
- Soukromí skriptového typu: Pay-to-Taproot (P2TR) adresy jsou novým typem adres, které umožňují, aby se skriptové multisig bitcoinové adresy jevily jako identické s adresami používanými pro singlesig peněženky. To přináší výrazné zlepšení soukromí, protože to znamená, že samotná bitcoinová adresa neposkytuje žádné indicie o bezpečnostním modelu svého majitele, například o tom, zda případně nepoužívá skriptový multisig
- Vícenásobné cesty utrácení: Adresy P2TR mají také možnost obsahovat zabudované vícenásobné cesty utrácení. To může vytvořit nové způsoby strukturování prahového zabezpečení pro institucionální úschovu, jak je popsáno v BIP 342 (odůvodnění, oddíl 5). Uživatel by například mohl pro každou kombinaci klíčů, které mohou utrácet finanční prostředky, vytvořit vícenásobnou cestu utrácení N-of-N skriptů. Namísto vytvoření kvora 2 ze 3 s klíči A, B a C lze podobného výsledku dosáhnout pomocí tří samostatných kvor 2 ze 2 jako možných cest výdajů – jednoho s klíči A a B, jednoho s klíči A a C a jednoho s klíči B a C. Tato strategie může zvýšit soukromí, protože bude odhalena pouze cesta výdajů, která se nakonec použije. Podobný koncept lze aplikovat i na kvorum sdílení klíčů MPC, což umožňuje využít MuSig2 pro prahové hodnoty.
Tyto nástroje Taproot jsou relativně nové a jejich přijetí je zatím v počáteční fázi. Mnoho bitcoinových softwarů a služeb zatím nenabízí plnou podporu toho, co nabízí Taproot. Za zmínku také stojí, že většina altcoinů nemá tyto nástroje nativně k dispozici.“
Závěrečné myšlenky
O zabezpečení bitcoinové pokladny se začíná zajímat stále více institucí, které vyžadují efektivní řešení. Především je třeba se vyhnout jedinému bodu selhání a minimalizovat riziko protistrany. Nejlepším způsobem, jak tato kritéria splnit, je využití multisig struktury, kde mohou být klíče distribuovány mezi různé klíčové agenty podniku, z nichž žádný nebude mít nad bitcoiny jednostrannou kontrolu. Každý klíčový agent může použít SSS nebo MPC, aby přidal dodatečnou prahovou ochranu pro svůj konkrétní klíč.“
Společnost Unchained je průkopníkem podnikové sítě pro úschovu, která byla vytvořena pro institucionální klienty, kteří chtějí takové uspořádání nastavit. Je snadno použitelná a přizpůsobitelná, takže si každý klient může vybrat, zda chce sám držet kontrolní počet klíčů, nebo jen jeden klíč, nebo zda chce odpovědnost za zabezpečení klíčů zcela přenechat několika nezávislým agentům podnikových klíčů. Pokud máte zájem dozvědět se více, domluvte si s námi bezplatnou konzultaci ještě dnes!
Zvláštní poděkování patří Dhruvovi Bansalovi za recenzi tohoto článku a poskytnutí cenné zpětné vazby.
Původně zveřejněno na Unchained.com.
Společnost Unchained Capital je oficiálním americkým partnerem časopisu Bitcoin Magazine v oblasti Collaborative Custody a nedílným sponzorem souvisejícího obsahu publikovaného prostřednictvím časopisu Bitcoin Magazine. Další informace o nabízených službách, custody produktech a vztahu mezi společností Unchained a časopisem Bitcoin Magazine naleznete na našich webových stránkách.