Autoři: Omer Shlomovits, ZenGo.

Schéma podepisování s prahem (TSS) je kryptografický primitiv, který umožňuje distribuované generování klíčů a podpisů. Zavedení TSS do blockchainového klienta představuje nový paradigmat, který přináší mnohé výhody, zejména v oblasti bezpečnosti. Obecně lze říci, že TSS může redefinovat návrh systémů správy klíčů (např. kryptoměnové peněženky) a poskytovat nativní podporu pro DeFi případy použití. Nicméně, TSS jako nová technologie nese také určitá rizika a omezení.

Tento článek podrobně představí základní koncept TSS, potenciální výhody pro oblast blockchainu, metody implementace v blockchainových klientech a rozdíly mezi TSS a Shamirovým tajným sdílením a více podpisy. Také se podíváme na různé způsoby využití TSS pro distribuovanou správu klíčů a prozkoumáme související rizika a omezení.


Síla kryptografie

Abychom pochopili koncept TSS, musíme nejprve ovládnout některé základy kryptografie. Od 70. let 20. století začalo stále více internetových systémů (např. TLS a PGP) používat asymetrickou kryptografii, známou také jako veřejná kryptografie (PKC). PKC se zakládá na dvou klíčích: veřejném a privátním. Veřejný klíč je veřejný, kdokoli ho může zveřejnit a používat, zatímco privátní klíč je klíčovým tajemstvím chránícím bezpečnost systému.

Kryptografie a digitální podpisy jsou dvě hlavní aplikace PKC. Obě technologie se spoléhají na tři algoritmy: nejprve generování párů privátního a veřejného klíče, poté generování šifrovaných dat/podpisu a nakonec proces dešifrování/ověření. Například u digitálního podpisu podpisový algoritmus využívá privátní klíč, který vlastní pouze majitel, k vygenerování unikátního podpisu, který je připojen k zprávě. Poté kdokoli, kdo má veřejný klíč, může ověřit pravost a správnost podpisu.


Blockchain

Nepochybně je blockchain silnou technologií s velkým potenciálem, která poskytuje konsenzuální vrstvu pro organizaci a zaznamenávání událostí. Tato infrastruktura uživatelům umožňuje budovat decentralizovanou ekonomiku, dokonce i decentralizovanou vládu. Co je překvapující, je to, že základní kryptografie potřebná k provozování blockchainu se může spolehnout pouze na digitální podpisy. V blockchainu představuje privátní klíč identitu a podpis je veřejným prohlášením nebo nárokem identity. Blockchain zajišťuje nepadělatelnost a správnost podpisu tím, že tyto prohlášení řadí a ověřuje podle sady pravidel.

Ve srovnání s tradičními kryptografickými technikami používanými v blockchainu moderní kryptografie přináší mnoho vzrušujících novinek, jako jsou zero-knowledge proof, homomorfní šifrování a víceúčelové výpočty. V posledních 10 letech výzkum blockchainu výrazně podpořil vývoj aplikované kryptografie a přinesl významné pokroky v těchto oblastech a dalších.

Tento článek se zaměří na jeden z těchto průlomů, a to bezpečný a efektivní systém podepisování s prahem (TSS).


MPC a schéma podepisování s prahem (TSS)

Víceúčelové výpočty (MPC) jsou odvětvím kryptografie, jehož původ lze vystopovat před přibližně 40 lety k průkopnickému výzkumu Andrewa C. Yaa. Jádrem MPC je umožnit skupině vzájemně nedůvěřujících účastníků společně vypočítat výsledek funkce, aniž by odhalili své vlastní vstupní informace.

Například, představme si, že n zaměstnanců určité společnosti chce zjistit, kdo má nejvyšší plat, ale nechtějí odhalit své vlastní skutečné platy. V tomto scénáři je vstupem každého zaměstnance jeho plat a konečným výstupem je jméno zaměstnance s nejvyšším platem. Díky MPC může být tento výpočet proveden, aniž by byly odhaleny jakékoli informace o platech zaměstnanců.

Dvě hlavní vlastnosti MPC jsou správnost a soukromí:

  • Správnost: Výstup algoritmu je očekávaný správný výsledek.

  • Soukromí: Žádná vstupní data účastníků nebudou odhalena jiným stranám.

Využijeme technologii MPC k distribuovanému výpočtu digitálního podpisu a prozkoumáme, jak tyto vlastnosti aplikovat na proces podpisu. Jak bylo uvedeno dříve, podpis obvykle zahrnuje tři kroky:

  • Generování klíče: První krok je nejkomplexnější v celém procesu. Tento krok vyžaduje generování veřejného klíče pro ověření následného podpisu. Zároveň je třeba pro každého účastníka vygenerovat nezávislý "tajný fragment". Co se týče správnosti a soukromí, funkce vydá všem účastníkům stejný veřejný klíč, zatímco pro každého účastníka vygeneruje různý tajný fragment, čímž se zajistí: (1) Soukromí: data tajného fragmentu nebudou mezi stranami odhalena, a (2) správnost: veřejný klíč je výstupem funkce všech tajných fragmentů.

  • Podpis: Tento krok zahrnuje generaci podpisové funkce. Vstupy od všech stran jsou jejich tajné fragmenty, které pocházejí z předchozího kroku (distribuované generování klíče). Dále je zde známý veřejný vstup, což je zpráva, kterou je třeba podepsat. Výstupem je digitální podpis, zatímco soukromí zajišťuje, že tajné fragmenty nebudou během celého výpočtu odhaleny.

  • Ověření: Ověřovací algoritmus je v souladu s tradičními metodami. Aby byla zajištěna kompatibilita s jednorázovým podpisovým schématem, kdokoli, kdo má veřejný klíč, může ověřit a potvrdit podpis, což je také klíčový úkol prováděný ověřovacími uzly blockchainu.

Schéma podepisování s prahem (TSS) je název, který jsme dali kombinaci distribuovaného generování klíčů (DKG) a procesu distribuovaného podepisování.


Kombinace TSS s blockchainem

Intuitivní způsob, jak implementovat TSS v blockchainu, je změnit blockchainového klienta tak, aby generoval klíče a podpisy pomocí technologie TSS. "Blockchainový klient" zde odkazuje na sadu příkazů prováděných plnými uzly. V praxi může TSS nahradit všechny příkazy související s privátním klíčem distribuovaným výpočtem.

Abychom to podrobněji vysvětlili, nejprve stručně představíme, jak se v tradičním návrhu blockchainu vytváří nové adresy. Zjednodušeně řečeno, nejprve se generuje privátní klíč, poté se z privátního klíče vypočítá veřejný klíč a nakonec se z veřejného klíče odvodí adresa blockchainu.

V režimu TSS je veřejný klíč společně vypočítán n účastníky, přičemž každý účastník má pouze tajný fragment privátního klíče (a fragmenty se navzájem neodhalují). Můžeme odvodit generování adresy ze veřejného klíče stejným způsobem jako v tradičních systémech, takže způsob generování adresy není omezen blockchainem. Výhodou tohoto způsobu je, že každá strana má pouze část privátního klíče, takže privátní klíč již není zdrojem jednoho bodu selhání.

Podpisy transakcí lze také provádět podobným způsobem. Rozdíl spočívá v tom, že už se nepoužívá privátní klíč pro jednostranné podepisování, ale místo toho se generují distribuované podpisy prostřednictvím spolupráce více stran. Proto, pokud dostatečně mnoho účastníků jedná poctivě, lze vytvořit platný podpis, a tím přejít od lokálního výpočtu (jednoho bodu selhání) k interaktivnímu výpočtu.

Je třeba zmínit, že distribuované generování klíčů může podporovat různé typy přístupových struktur: univerzální režim "t z n" může zajistit, že i při maximálně t náhodných selháních bude možné bezpečně provádět operace související s klíčem.


TSS a více podpisů

Některé blockchainy nabízejí funkce TSS jako vestavěnou nebo programovatelnou součást softwaru, což obvykle označujeme jako více podpisy. Abychom lépe pochopili rozdíly mezi oběma, lze více podpisů považovat za TSS na aplikační úrovni blockchainu.

Jinými slovy, více podpisů a TSS v podstatě usilují o dosažení podobných cílů, avšak TSS využívá kryptografii mimo řetězec, zatímco více podpisů se provádí na řetězci. Nicméně blockchain potřebuje specifický způsob kódování více podpisů, což může ovlivnit soukromí, protože přístupová struktura (počet podpisovatelů) bude odhalena na blockchainu. Kromě toho jsou náklady na transakce s více podpisy vyšší, protože informace o každém podpisovateli musí být přenesena na blockchain.

V TSS jsou detaily podpisovatelů vkládány do běžných transakcí, čímž se snižují náklady a chrání soukromí. Na druhou stranu, více podpisů může být realizováno pomocí neinteraktivních metod, což odstraňuje potíže s provozováním složité komunikační vrstvy mezi různými podpisovateli.

Hlavní rozdíl spočívá v tom, že více podpisů je specifické pro blockchain a musí být implementováno samostatně pro každý blockchain, a v některých blockchainových systémech nemusí být vůbec podporováno. Naopak TSS je zcela založeno na kryptografii a vždy bude podporováno. Pro další informace o rozdílech mezi nimi se podívejte na tento odkaz.


TSS a Shamirův tajný sdílený systém

Shamirův tajný sdílený systém (SSSS) poskytuje způsob, jak distribuovaně ukládat privátní klíče, přičemž je rozděluje na vícero míst, když je privátní klíč nečinný. Hlavními rozdíly mezi SSSS a TSS jsou:

  • Generování klíče: V SSSS je zodpovědný za generování tajných fragmentů privátního klíče tzv. "distributor". Distributor generuje celý privátní klíč na jednom místě a rozdělí ho na více tajných fragmentů, které pak distribuuje na různá místa. V TSS neexistuje distributor, protože celý proces je distribuovaný a kompletní privátní klíč nebyl nikdy generován na jednom místě.

  • Podpis: V SSSS musí účastníci nejprve rekonstruovat celý privátní klíč, aby mohli dokončit podpis, což znamená, že při každém podpisu čelí riziku jednoho bodu selhání. Naopak v TSS se proces podpisu provádí distribuovaným způsobem, aniž by bylo třeba rekonstruovat tajné fragmenty.

Proto v TSS schématu privátní klíč po celou dobu životnosti nikdy neexistuje na jednom místě, což výrazně zvyšuje bezpečnost systému.


Tajné peněženky

Peněženky založené na technologii TSS se mírně liší od tradičních kryptoměnových peněženek. Tradiční peněženky obvykle určují peněženku pomocí generování mnemonických frází. Uživatelé mohou využít tuto strukturu hierarchické deterministiky (HD): 1) Získat privátní klíč odpovídající peněžence a provádět podpisy transakcí; 2) Obnovit všechny peněžní klíče pomocí mnemonické fráze.

Mechanismus fungování tajných peněženek je však složitější. I když také podporuje generování HD struktury, tento proces vyžaduje distribuovaný výpočet, podobně jako jiný MPC protokol. Účastníci se musí společně rozhodnout o dalším klíči, který bude použit. Jinými slovy, každý účastník má svoji vlastní mnemonickou frázi. Tyto mnemonické fráze jsou generovány jednotlivě a nejsou kombinovány, takže žádná strana nemůže samostatně odvodit celý privátní klíč ze své mnemonické fráze.

Kromě toho peněženky založené na TSS disponují silnou bezpečnostní funkcí, která umožňuje rotaci privátního klíče bez nutnosti měnit veřejný klíč a blockchainovou adresu. Rotace privátního klíče, známá také jako aktivní tajné sdílení, je další MPC protokol, který využívá staré tajné fragmenty jako vstup a generuje skupinu zcela nových tajných fragmentů. Staré tajné fragmenty mohou být odstraněny, zatímco nové fragmenty mohou pokračovat v používání.

Tato architektura přidává časovou dimenzi k bezpečnosti tajné peněženky, což znamená, že útočník musí být současně na více místech, aby mohl úspěšně zaútočit na peněženku. I když se pokusí padělat podpis, tajné fragmenty, které útočník získal před a po rotaci privátního klíče, nelze spojit do celého klíče a nepředstavují další hrozbu pro bezpečnost.

Nicméně, omezením této peněženky je, že nepodporuje mnemonické fráze a není kompatibilní se systémy jednorázového klíče. Proto je důležité jasně určit, které strany drží tajné fragmenty.

Možné architektury zahrnují následující:

  • Externí TSS: Uživatelé delegují výpočet na "n" serverů. Generování, správa a podepisování klíčů bude efektivně outsourcováno poskytovatelům služeb, kteří nejsou vlastníky aktiv, ale získávají určitý výnos nabídkou bezpečnostních záruk.

  • Spolupráce více zařízení: Uživatelé provozují TSS mezi zařízeními, která vlastní. Například zařízení Internetu věcí, mobilní zařízení a notebooky spolupracují.

  • Hybridní režim: Někteří účastníci jsou řízeni externími poskytovateli služeb, zatímco jiní běží na zařízeních, které vlastní uživatelé, a společně provádějí TSS výpočet.

První způsob odlehčuje výpočetní zátěž na klientovi uživatele, ale poskytovatelé služeb mohou spolupracovat, aby ukradli aktiva uživatelů (i když se obvykle předpokládá, že dostatečný počet poskytovatelů služeb nebude současně napaden, ale nelze vyloučit tuto možnost).

Druhý způsob poskytuje uživatelovi plnou kontrolu, ale vyžaduje, aby více zařízení bylo online pro účast na výpočtu TSS, což činí transakční operace složitější.

Třetí způsob dosahuje rovnováhy mezi oběma, což umožňuje uživatelům provádět transakce jednoduše a efektivně, a zároveň zajišťuje, že transakce nelze provést bez souhlasu uživatele.


TSS a inteligentní smlouvy

V průběhu let výzkumníci objevili mnoho využití digitálních podpisů, z nichž některé se staly nepostradatelnými klíčovými technologiemi. Jak bylo zmíněno, TSS je kryptografický primitiv, který může významně zvýšit bezpečnost. V blockchainovém prostředí mohou kryptografické schémata založená na TSS nahradit mnohé tradiční funkce. Například decentralizované aplikace, řešení škálování Layer 2, atomové výměny, mixing, dědictví atd. lze realizovat pomocí rámce TSS. To umožňuje, aby nákladné a rizikové operace na řetězci s inteligentními smlouvami ustoupily ekonomičtějším a spolehlivějším řešením.

Například více skokových zámků, které dovedně využívají podpisy dvou stran, poskytuje bezpečnější a soukromější platební kanálovou síť, která může sloužit jako alternativa k bitcoinové lightning network. ShareLock by mohl být nejlevnějším on-chain mixingovým řešením na Ethereu, založeným na jednom prahovém podpisu.


Rizika

V posledních letech se aplikace TSS postupně zvyšují. Nicméně, jako relativně nová technologie, stále čelí některým omezením a potenciálním problémům. Ve srovnání s tradičními technikami veřejného klíče je TSS protokol složitější a ještě nebyl široce "testován v praxi". Obvykle, ve srovnání se jednoduchým digitálním podpisem, TSS vyžaduje dodatečné kryptografické předpoklady, které nemusí být dostatečně robustní, a tudíž zavádí kryptografické útočné vektory, které se v tradičních schématech neobjevily (viz prezentace na Breaking Bitcoin Conference 2019). Pro bezpečné nasazení TSS v systému se doporučuje vyhledat odbornou podporu od bezpečnostních inženýrů a kryptografických expertů.

Na pozitivní straně, díky stále rostoucímu přínosu komunity, peer review, auditům kódu a optimalizacím algoritmů, stávající a nové aplikace TSS se stávají čím dál více zralými.


Shrnutí

Tento článek představil základní koncept schématu podepisování s prahem (TSS), což je vysoce potenciální kryptografický primitiv, který má potenciál změnit způsob, jakým interagujeme s blockchainem.

Jelikož tento článek se nezabýval prahovým ECDSA, který lze aplikovat na BNB Chain a Bitcoin, zájemci se mohou podívat na následující nejnovější publikace. Dále, pokud chcete vyzkoušet nějaké aplikace TSS, můžete se podívat na zdrojový kód dvoustranné peněženky BNB Chain zde, nebo použít ZenGo peněženku, což je nehlídaná dvoustranná peněženka BNB Chain s hybridním režimem.


Hluboké čtení:

  • Bezpečný a efektivní dvoustranný ECDSA podpisový protokol

  • Bezpečný a efektivní víceúčelový ECDSA protokol podporující praktické distribuované generování klíčů a aplikace správy kryptoměn

  • Dvoustranný ECDSA založený na systému hash proof a jeho efektivní instancování

  • Víceúčelový prahový ECDSA s efektivní decentralizovanou konfigurací

  • Bezpečný dvoustranný prahový ECDSA založený na ECDSA předpokladech

  • Prahový ECDSA založený na ECDSA předpokladech: více případů použití