Autor: Omer Shlomovits, ZenGo.

Threshold Signing Scheme (TSS) je kryptografické primitivní schéma pro generování a podepisování distribuovaných klíčů. Použití TSS ve výpočtech blockchainu je nové paradigma, které může nabídnout mnoho různých výhod, zejména pokud jde o bezpečnost. To znamená, že TSS může ovlivnit návrh systémů správy klíčů (jako jsou digitální peněženky) a vést pole pro místní podporu v případech použití DeFi. Přesto je tato TSS stále novou technologií, takže při jejím používání je třeba vzít v úvahu i rizika a omezení.

V tomto článku se budeme zabývat tím, co je TSS, jaké potenciální výhody může přinést do oblasti blockchainu, jak jej lze implementovat do klientského blockchainu, jak je to ve srovnání s Shamir secret sharing a Multisig, jaké jsou různé způsoby použití TSS v distribuované správě klíčů a nakonec probereme jeho možná rizika a omezení.

Role šifrování

Abychom porozuměli TSS, potřebujeme nejprve nějaké základní znalosti o kryptografii. Od 70. let 20. století používají internetové systémy stále více asymetrické šifrování (např. TLS a PGP), které je také známé jako kryptografie s veřejným klíčem (PKC). PKC používá dva klíče: jeden veřejný a jeden soukromý. Zatímco veřejný klíč není tajný a může být sdílen a používán kýmkoli, soukromý klíč je důvěrná informace, která představuje zabezpečení systému a nelze ji sdílet.

Šifrování a digitální podpisy jsou nejběžnějším využitím PKC. Schémata šifrování i digitálního podpisu jsou založena na sadách tří algoritmů. Prvním je generování páru soukromého a veřejného klíče, druhým je generování šifrovaného textu/podpisu a třetím je proces dešifrování/ověření. Ohledně digitálních podpisů: Algoritmus podpisu vyžaduje, aby soukromý klíč, který zná pouze jeho vlastník, vytvořil jedinečný podpis. Podpis je připojen ke konkrétní zprávě takovým způsobem, že kdokoli, kdo má veřejný klíč, může ověřit jeho pravost a pravost.


Blockchain

Není pochyb o tom, že blockchain je extrémně výkonná technologie. Poskytuje konsensuální vrstvu, která organizuje a zaznamenává události. Taková infrastruktura nám uživatelům a dokonce i vládám dává potenciální pravomoc budovat decentralizované ekonomiky. Překvapivě se šifrování potřebné pro provoz jednoduchého blockchainu může spoléhat pouze na digitální podpisy. V blockchainu soukromé klíče představují identity, zatímco podpisy jsou veřejným prohlášením nebo tvrzením identity. Blockchain požaduje a ověřuje data podle souboru pravidel, která mimo jiné zajišťují, že podpisy jsou nefalšovatelné a platné.

Sada moderních kryptografických nástrojů obsahuje některé skvělé magické triky na rozdíl od klasičtější kryptografie používané v blockchainu. Některé příklady těchto triků zahrnují důkazy s nulovými znalostmi, homomorfní kryptografii a vícestranné výpočty. Jak jsme viděli v posledním desetiletí, výzkum blockchainu dramaticky posunul aplikovanou kryptografii s překvapivým nedávným pokrokem ve znalostech ve všech výše uvedených a mnohem více.

V tomto článku se zaměříme na jeden z průlomů, kterým jsou efektivní bezpečné prahové podpisy (TSS).


MPC a prahové podpisové schéma (TSS)

Multiparty computation (MPC) je odvětví kryptografie, které začalo s klíčovou prací Andrewa C. Yaa před téměř 40 lety. V MPC se skupina stran, které si navzájem nedůvěřují, pokouší vypočítat funkci přes své vstupy, přičemž tyto vstupy zůstávají soukromé.

Řekněme například, že řada zaměstnanců společnosti chce vědět, kdo dostane vyšší plat, aniž by si navzájem prozradili svůj skutečný plat. Zde jsou speciálním vstupem platy a rozpaky bude jméno zaměstnance s nejvyšší mzdou. Když je tento výpočet proveden pomocí MPC, výsledkem je, že během výpočtu neunikne ani jeden plat.

Dvě hlavní vlastnosti MPC jsou autenticita a soukromí:

  • Správnost: Výstup generovaný algoritmem je správný (podle očekávání).

  • Soukromí: Důvěrná vstupní data držená jednou stranou nebudou prozrazena dalším stranám.

K výpočtu digitálního podpisu distribuovaným způsobem použijeme MPC. Podívejme se, jak lze výše uvedené vlastnosti aplikovat na podpisy. Pro podpisy máme tři kroky:

  • Generování klíčů: První krok je také nejsložitější. Musíme vytvořit klíč, který bude veřejný a bude se používat k ověřování budoucích podpisů. Ale také musíme vytvořit individuální tajemství pro každou zúčastněnou stranu, které budeme nazývat tajný podíl. V kontextu správnosti a soukromí říkáme, že funkce vypíše stejný veřejný klíč pro všechny strany a různé tajné sdílení pro obě následující: (1) Soukromí: Mezi oběma stranami neuniknou žádná data o tajném sdílení a ( 2) Správnost: Veřejný klíč je funkcí tajných akcií.

  • Podpis: Tento krok zahrnuje funkci vytvoření podpisu. Příspěvkem každé strany je její tajný podíl, který je vygenerován jako výstup z předchozího kroku (generování distribuovaného klíče). Existuje také obecný vstup, který je všem známý, což je zpráva, která má být podepsána. Výstupem bude digitální podpis a funkce ochrany soukromí zajišťuje, že během výpočtu nedojde k úniku tajných akcií.

  • Verifikace: Ověřovací algoritmus zůstává stejný jako v klasickém nastavení. Aby byl kompatibilní s jednotlivými podpisy klíče, musí být každý, kdo zná veřejný klíč, schopen podpisy ověřit a ověřit. Přesně to dělají ověřovací uzly blockchainu.

Schéma prahového podpisu (TSS) je název, který dáváme kombinaci generování distribuovaného klíče (DKG) a distribuce podpisu přes schéma prahového podpisu.


Kombinace TSS a blockchainu

Přirozeným způsobem, jak lze TSS použít v blockchainu, je změna blockchainového klienta pro generování klíčů a podpisů pomocí TSS. Zde používáme termín klient pro označení sady příkazů, které jsou vykonávány úplným uzlem. V praktické aplikaci nám technologie TSS umožňuje nahradit všechny příkazy související se soukromým klíčem distribuovanými výpočty.

Abychom to vysvětlili podrobněji, začneme rychlým popisem, jak vytvořit nové adresy na klasické blockchainové struktuře. Jednoduše řečeno, můžeme vytvořit novou adresu vygenerováním soukromého klíče a následným výpočtem veřejného klíče ze soukromého klíče. Nakonec je blockchainová adresa odvozena z veřejného klíče.

Nyní pomocí TSS budeme mít skupinu stran, které společně vypočítávají veřejný klíč. Každá zúčastněná strana drží tajný podíl soukromého klíče (jednotlivá sdílení nejsou ostatním zúčastněným stranám odhalena). Pomocí veřejného klíče můžeme odvodit adresu stejným způsobem jako v tradičním systému, díky čemuž je blockchain ve způsobu generování adres poněkud neutrální. Výhodou je, že soukromý klíč již není jediným bodem selhání, protože každá strana si ponechává jednu jeho část.

Totéž lze provést při podepisování transakcí. V tomto případě místo toho, aby jedna strana podepisovala svým soukromým klíčem, spustíme distribuovaný generátor podpisů mezi více stranami. Dokonce i každá strana může předložit platný podpis, pokud dostatečný počet účastníků jedná čestně. Znovu jsme přešli z místního účtu (jediný bod selhání) na interaktivní účet.

Je důležité poznamenat, že generování distribuovaných klíčů lze provést způsobem, který umožňuje různé typy přístupu k nim: obecné nastavení „t z n“ bude schopno odolat až t libovolným selháním v operacích souvisejících s soukromý klíč bez ohrožení bezpečnosti.


TSS vs. Multisig

Některé blockchainové sítě nabízejí funkcionalitu TSS jako vestavěnou nebo programovatelnou součást softwaru. Tuto funkci nazýváme multisig nebo multi-signature. Pro lepší pochopení rozdílů se můžeme podívat na multisig jako na TSS ve fázi implementace blockchainu.

Jinými slovy, jak multisig, tak TSS se v podstatě snaží dosáhnout podobných cílů, ale TSS používá off-chain šifrování, zatímco multisig používá on-chain. Blockchain však vyžaduje metodu pro multisig šifrování, která může ohrozit soukromí, protože přístupová struktura (počet signatářů) je na blockchainu odhalena. Náklady na multisig transakci jsou vyšší, protože informace na dvou různých stránkách musí být také sdělovány na blockchainu.

V TSS jsou údaje o signatářích složeny do běžné transakce, což snižuje náklady a zachovává soukromí. Na druhou stranu Multisig může být neinteraktivní, což ušetří problém s provozováním složité komunikační vrstvy mezi různými místy.

Hlavním rozdílem je, že blockchain multisig je třeba znovu implementovat na každý blockchain a v některých případech není podporován vůbec. Naproti tomu TSS je založeno na čistém šifrování, takže je vždy podporovatelné. Skvělý článek popisující rozdíly najdete zde.


Schéma tajného sdílení TSS vs. Shamir

Schéma tajného sdílení Shamir (SSSS) poskytuje distribuovaný způsob uložení soukromého klíče. Zatímco je soukromý klíč v úložišti, je uložen na více místech. Mezi SSSS a TSS jsou dva rozdíly:

  • Generování klíčů: V SSSS existuje jedna strana zvaná „dealer“, která je zodpovědná za vytvoření tajných akcií klíče. To znamená, že v době generování klíče je soukromý klíč vygenerován na jednom místě a poté distribuován distributorem na různá místa. Ale v TSS není žádný distributor, protože jeho role je distribuována tak, že úplný soukromý klíč nikdy není na jednom místě.

  • Podepisování: V SSSS musí strany rekonstruovat úplný soukromý klíč, aby mohly podepsat, což opět vede k jedinému bodu selhání pokaždé, když je vyžadován podpis. Na druhou stranu v TSS se podepisování provádí distribuovaným způsobem bez opětovného vytváření tajných akcií.

Jak vidíme v TSS, soukromý klíč (představující bezpečnost systému) není nikdy na jednom místě po celou dobu své životnosti.


Threshold Governor

Peněženka postavená na technologii TSS se trochu liší od tradičních kryptoměnových peněženek. Tradiční peněženka obvykle vytváří počáteční frázi a používá ji k deterministickému odvození adres. Uživatel může později použít deterministickou hierarchickou strukturu (HD) k 1) přístupu k soukromým klíčům, které odpovídají adresám peněženky, a podepisovat s nimi transakce. 2) Chcete-li obnovit všechny klíče peněženky pomocí počáteční fráze.

V prahových peněženkách jsou věci složitější. I když je možné vytvořit deterministickou hierarchickou (HD) architekturu, její konstrukce musí být počítána distribuovaným způsobem jako u jiného MPC protokolu. Zúčastněné strany se musí společně rozhodnout, jaký klíč bude použit dále. Jinými slovy, každá strana bude mít své vlastní úvodní prohlášení. Příkazy seed jsou generovány samostatně a nejsou kombinovány, takže žádná ze stran sama nemůže odvodit soukromé klíče z příkazu seed.

Peněženky založené na TSS mají také pěknou bezpečnostní funkci, která umožňuje otáčení soukromého klíče bez změny jeho odpovídajícího veřejného klíče a adresy blockchainu. Rotace soukromých klíčů, známá také jako Proaktivní sdílení tajných informací, je další protokol MPC, který přijímá tajné sdílení jako vstup a vydává novou sadu tajných sdílení. Staré tajné sdílení lze smazat a stejným způsobem použít i nové.

Tato architektura přidává zabezpečení dočasný rozměr, což znamená, že útočník by musel být na více místech současně, aby se pokusil o hacknutí peněženky Threshold. Kombinace tajných akcií před otočením a po otočení by útočníkovi nedala žádnou další pravomoc, pokud by chtěl zfalšovat podpis.

Nevýhodou tohoto typu peněženky je chybějící počáteční fráze, která ji činí nekompatibilní se systémy peněženek s jedním klíčem. Je proto důležité rozhodnout, které strany budou zachovávat důvěrné sdílení.

Existuje několik možných způsobů, například:

  • Outsourcing TSS: Uživatel povolí „n“ serverům spouštět výpočet jeho jménem. Efektivně outsourcujte vytváření, správu a podepisování klíčů poskytovatelům služeb, kteří nejsou vlastníky aktiv, ale poskytují určitou úroveň zabezpečení výměnou za určitou pobídku.

  • Použití více zařízení: Uživatel spustí TSS na zařízeních, která vlastní. Například jedna strana by bylo zařízení IoT, další strana by byla uživatelem mobilního telefonu, další třetí stranou by byl notebook a tak dále.

  • Hybridní systémy: TSS bude provozován tak, že některé strany budou řízeny externími poskytovateli služeb, zatímco některé strany budou fungovat na vlastním hardwaru.

První metoda odlehčí náročné výpočty TSS na straně klienta uživatele. Na druhou stranu se poskytovatelé služeb mohou domlouvat (předpokládáme, že velká část z nich není napadena současně, ale v praxi mohou být napadeni současně) a krást uživatelská aktiva.

Druhá metoda poskytuje uživateli úplnou kontrolu, ale činí proces provádění transakcí těžkopádným, protože k připojení k internetu a účasti na účtu TSS potřebujete více zařízení.

Třetí možnost je nejlepší z obou možností, protože poskytuje uživateli snadný a rychlý způsob provádění transakcí bez kompromisů v podobě provádění transakcí bez svolení uživatele.


TSS a chytré smlouvy

V průběhu let výzkumníci našli mnoho využití pro digitální podpisy, ale některé nejsou překvapivé. Jak již bylo zmíněno dříve, TSS je primitivní šifrování, které může významným způsobem zvýšit bezpečnost. V kontextu blockchainu bychom mohli říci, že mnoho funkcí může být nahrazeno kryptografií na bázi TSS. Na TSS frameworku lze stavět decentralizované aplikace, řešení vrstvy 2 pro škálování, atomické swapy, míchání, dědění a mnoho dalšího. To nakonec umožní nahradit drahé a riskantní operace inteligentních smluv levnějšími a spolehlivějšími alternativami.

Abych uvedl nějaké konkrétní příklady: Multi-Hop Locks chytrým způsobem používá podpisy dvou stran a lze je použít k výměně bleskové sítě bitcoinů za bezpečnější a soukromější síť platebních kanálů. ShareLock je pravděpodobně nejlevnější řešení pro kódování blockchainu Ethereum postavené na ověřování pomocí jediného prahového podpisu.


Rizika

Za poslední dva roky došlo k výraznému nárůstu aplikací TSS. Ale jako každá relativně nová technologie má stále určitá omezení a obavy. Ve srovnání s tradiční kryptografií veřejného klíče mohou být protokoly TSS velmi složité a dosud nebyly „testovány v akci“. TSS obvykle vyžaduje další, slabší kryptografické předpoklady ve srovnání s jednoduchými digitálními podpisy. V důsledku toho jsou nyní detekovány vektory kryptografických útoků, které dříve v tradičních nastaveních neexistovaly (viz tato prezentace z konference Breaking Bitcoin Conference 2019). Bezpečnostní inženýři a aplikační kryptografové vám mohou pomoci bezpečně implementovat TSS do vašeho systému.

Pozitivní je, že stávající a nové aplikace jsou stále silnější díky zvýšeným příspěvkům na kvalitu, vzájemným hodnocením, křížovým kontrolám a zlepšením výpočetního výkonu pomocí algoritmů.


Závěrečné myšlenky

V tomto článku představíme základy Threshold Signature Scheme (TSS), úžasné kryptografické primitivum, které má potenciál dramaticky změnit způsob, jakým se blockchain používá.

Vzhledem k tomu, že tento článek nepojednával o Threshold ECDSA, které lze použít na Binance Chain a Bitcoin, zájemci si mohou přečíst články v následujícím seznamu. Také pokud chcete vyzkoušet některé implementace TSS, můžete zde najít kód pro 2strannou peněženku Binance Chain nebo vyzkoušet peněženku ZenGo, která využívá hybridní metodu poskytování 2stranné peněženky Binance Chain.


Důkladné čtení:

  • Rychlé bezpečné dvoustranné podepisování ECDSA

  • Rychlé bezpečné vícestranné ECDSA s praktickým generováním distribuovaných klíčů a aplikacemi pro úschovu kryptoměn

  • Dvoustranné ECDSA od Hash Proof Systems a Efficient Instantiations

  • Rychlý práh více stran ECDSA s rychlým nastavením bez důvěry

  • Zabezpečení dvoustranného prahu ECDSA z předpokladů ECDSA

  • Prahová hodnota ECDSA z předpokladů ECDSA: Případ více stran