Vysvetlenie prahových podpisov
Domov
Články
Vysvetlenie prahových podpisov

Vysvetlenie prahových podpisov

Rozšírené
Zverejnené Jul 21, 2019Aktualizované Apr 29, 2021
12m

Autor: Omer Shlomovits, ZenGo.

Threshold Signature Scheme (TSS) je kryptografický primitív na generovanie a podpisovanie distribuovaných kľúčov. Využitie schémy TSS v blockchainových klientoch je novou paradigmou, ktorá môže priniesť viacero výhod, hlavne čo sa týka bezpečnosti. V širšom zmysle môže schéma TSS ovplyvniť vzhľad systémov správy kľúčov (napr. kryptopeňaženky) a viesť k natívnej podpore v  prípadoch použitia DeFi. TSS je však stále novou technológiou, preto treba zvážiť aj jej riziká a obmedzenia.

V tomto článku sa budeme zaoberať tým, čo je schéma TSS, aké sú jej potenciálne výhody, ktoré prináša do sveta blockchainov, ako sa dá implementovať do blockchainového klienta, ako sa porovnáva so Shamirovým zdieľaním tajomstva a digitálnym podpisom Multisig, aké sú rôzne spôsoby použitia schémy TSS na správu distribuovaných kľúčov a nakoniec si povieme o rizikách a obmedzeniach.


Sila kryptografie

Aby sme porozumeli schéme TSS, najprv potrebujeme základné znalosti o kryptografii. Od 70. rokov 20. storočia čoraz viac internetových systémov (napríklad TLS a PGP) využíva asymetrickú kryptografiu, ktorá je známa aj ako kryptografia s verejným kľúčom (public key cryptography, PKC). PKC využíva dva kľúče: jeden verejný a jeden súkromný. Zatiaľ čo verejný kľúč nie je tajomstvom a môže ho zverejniť a používať ktokoľvek, súkromný kľúč je tajná informácia, ktorá predstavuje bezpečnosť systému.

Šifrovanie a digitálne podpisy sú dva najbežnejšie spôsoby použitia PKC. Schémy šifrovania aj digitálnych podpisov sa spoliehajú na súbory troch algoritmov. Prvým je generovanie páru súkromného a verejného kľúča, druhým je generovanie šifrovaného textu/podpisu a tretím je proces dešifrovania/overenia. Pokiaľ ide o digitálne podpisy, podpisový algoritmus vyžaduje, aby súkromný kľúč, ktorý pozná len jeho vlastník, vytvoril jedinečný podpis. Podpis je pripojený k danej správe tak, že každý, kto má verejný kľúč, bude môcť overiť jeho pravosť a správnosť.


Blockchain

Niet pochýb o tom, že blockchain je veľmi výkonná technológia. Poskytuje konsenzuálnu vrstvu, ktorá organizuje a zaznamenáva udalosti. Takáto infraštruktúra dáva nám, používateľom, potenciálnu silu budovať decentralizované ekonomiky a dokonca aj vlády. Čo je prekvapujúce, kryptografia potrebná na fungovanie základného blockchainu môže byť založená výlučne na digitálnych podpisoch. V kontexte blockchainu predstavujú súkromné kľúče identity, zatiaľ čo podpis je verejné vyhlásenie alebo tvrdenie vykonané identitou. Blockchain zoradí vyhlásenia a overí ich podľa súboru pravidiel, ktoré (okrem iného) zabezpečia, že podpisy sú nefalšovateľné a správne.

Na rozdiel od klasickejšej kryptografie používanej v blockchaine, moderná sada kryptografických nástrojov obsahuje niekoľko úžasných magických trikov: dôkazy s nulovou znalosťou, homomorfné šifrovanie a mnohostranný výpočet (multi-party computation, MPC) a mnoho ďalších. Za poslednú dekádu výskum v oblasti blockchainu výrazne posunul aplikovanú kryptografiu dopredu vďaka nedávnym prielomom vo všetkých vyššie uvedených oblastiach a ešte oveľa viac. 

V tomto článku sa zameriame na jeden takýto prielom: efektívne zabezpečené prahové podpisy (TSS).


MPC a schéma Threshold Signature Scheme (TSS)

Mnohostranný výpočet (multi-party computation, MPC) je odvetvie kryptografie, ktoré sa zrodilo pred takmer 40 rokmi seminárnou prácou Andrewa C. Yao. V MPC sa skupina strán, ktoré si navzájom nedôverujú, pokúša spoločne vypočítať funkciu nad svojimi vstupmi, pričom tieto vstupy uchovávajú v súkromí. 

Povedzme napríklad, že n zamestnancov spoločnosti chce vedieť, kto dostáva najvyššiu výplatu, ale bez toho, aby si navzájom prezradili svoj skutočný plat. Tu sú súkromnými vstupmi platy a výstupom bude meno zamestnanca s najvyšším platom. Pri tomto výpočte pomocou MPC zistíme, že pri výpočte neuniknú informácie ani o jednom plate. 

Dve hlavné vlastnosti MPC sú správnosť a súkromie:

  • Správnosť: výstup vytvorený algoritmom je správny (podľa očakávania).

  • Ochrana osobných údajov: tajné vstupné údaje, ktoré má strana, nepreniknú k ostatným stranám.

Na výpočet digitálneho podpisu distribuovaným spôsobom použijeme MPC. Pozrime sa na to, ako je možné vyššie uvedené vlastnosti použiť na podpisy. Pripomeňme si, že pre podpisy máme tri kroky: 

  • Vygenerovanie kľúča: prvý a zároveň najzložitejší krok. Musíme vygenerovať kľúč, ktorý bude verejný a ktorý sa bude používať na overenie budúcich podpisov. Musíme však tiež vygenerovať individuálne tajomstvo pre každú stranu, ktoré budeme nazývať zdieľaným tajomstvom. Pokiaľ ide o správnosť a súkromie, hovoríme, že funkcia vydá rovnaký verejný kľúč pre všetky strany a pre každé iné zdieľané tajomstvo, a to nasledujúcim spôsobom: (1) súkromie: medzi stranami nedochádza k úniku údajov o zdieľaných tajomstvách, a (2) správnosť: verejný kľúč je funkciou zdieľaných tajomstiev.

  • Podpisovanie: tento krok zahŕňa funkciu generovania podpisu. Vstupom každej strany bude jej zdieľané tajomstvo, vytvorené ako výstup predchádzajúceho kroku (generovanie distribuovaného kľúča). Existuje aj verejný vstup, ktorý je známy všetkým, čo je správa, ktorá sa má podpísať. Výstupom bude digitálny podpis a vlastnosť ochrany súkromia zaisťuje, aby pri výpočte nedochádzalo k úniku zdieľaných tajomstiev.

  • Overenie: overovací algoritmus zostáva rovnaký, ako pri klasickom nastavení. Aby boli podpisy kompatibilné s jedným kľúčom, každý, kto pozná verejný kľúč, by mal byť schopný overiť a validovať podpisy. To je presne to, čo robia uzly overujúce blockchainy.

Schéma Threshold Signature Scheme (TSS) je názov, ktorý dávame tomuto zloženiu generovania distribuovaných kľúčov (distributed key generation, DKG) a distribuovaného podpisovania TSS.


Skombinovanie TSS s blockchainmi

Prirodzeným spôsobom, akým možno TSS použiť v blockchaine, je zmena blockchainového klienta na generovanie kľúčov a podpisov pomocou TSS. Pojem blockchainový klient tu používame na označenie množiny príkazov vykonaných celým uzlom. V praxi nám technológia TSS umožňuje nahradiť všetky príkazy súvisiace so súkromným kľúčom distribuovanými výpočtami.

Aby sme to vysvetlili podrobnejšie, začneme stručným opisom toho, ako sa vytvárajú nové adresy na blockchaine s klasickým dizajnom.  Jednoducho povedané, môžeme vytvoriť novú adresu vygenerovaním súkromného kľúča a potom vypočítaním verejného kľúča zo súkromného kľúča. Nakoniec sa adresa blockchainu odvodí z verejného kľúča.

Použitím TSS máme súbor n strán spoločne počítajúcich verejný kľúč, pričom každá z nich má zdieľané tajomstvo súkromného kľúča (jednotlivé zdieľané tajomstvá nie sú odhalené ostatným stranám). Z verejného kľúča môžeme odvodiť adresu rovnakým spôsobom ako v tradičnom systéme, čím sa blockchain stáva agnostickým k tomu, ako sa adresa generuje. Výhodou je, že súkromný kľúč už nie je jediným bodom zlyhania, pretože každá strana má len jednu jeho časť. 

To isté je možné urobiť pri podpisovaní transakcií. V tomto prípade namiesto podpisovania jednou stranou pomocou jej súkromného kľúča spustíme distribuované generovanie podpisov medzi viacerými stranami. Takže každá strana môže predložiť platný podpis, za predpokladu, že sa dostatočný počet z nich správa čestne. Opäť sme prešli z lokálneho výpočtu (jediný bod zlyhania) na interaktívny.

Je dôležité spomenúť, že generovanie distribuovaných kľúčov je možné vykonať spôsobom, ktorý umožňuje rôzne typy prístupových štruktúr: všeobecné nastavenie „t z n“ bude schopné odolávať počtu až „t“ náhodných zlyhaní v operáciách súvisiacich so súkromným kľúčom bez ohrozenia bezpečnosti.


Porovnanie: TSS a multisig

Niektoré blockchainy ponúkajú funkciu TSS ako vstavanú alebo programovateľnú súčasť softvéru. Táto funkcia sa nazýva multisig (alebo multi-signature). Pre lepšie pochopenie rozdielov sa môžeme pozrieť na multisig ako TSS v aplikačnej vrstve blockchainu.

Inými slovami, multisig aj TSS sa v podstate snažia dosiahnuť podobné ciele, ale TSS používa kryptografiu mimo reťazca, zatiaľ čo multisig prebieha na reťazci. Blockchain však potrebuje spôsob kódovania multisig, čo by mohlo poškodiť súkromie, pretože prístupová štruktúra (počet podpisovateľov) je vystavená na blockchaine. Náklady na transakciu multisig sú vyššie, pretože informácie o rôznych podpisovateľoch musia byť oznámené aj na blockchaine.

V TSS sú údaje podpisujúcich zložené do bežne vyzerajúcej transakcie, čím sa znižujú náklady a zachováva sa súkromie. Na druhej strane, multisig môže byť neinteraktívny, čo šetrí problémy s prevádzkou komplexnej komunikačnej vrstvy medzi rôznymi podpisovateľmi.

Hlavným rozdielom je, že multisig je špecifický pre blockchain a je potrebné opätovne ho implementovať pre každý blockchain, v niektorých prípadoch dokonca nie je vôbec podporovaný. Naopak, TSS sa spolieha na čistú kryptografiu, takže podpora je vždy možná. Skvelý článok s ilustráciami o rozdieloch nájdete tu.


Porovnanie: TSS a Shamirova schéma na zdieľanie tajomstva

Shamirova schéma na zdieľanie tajomstva (Shamir’s Secret Sharing Scheme, SSSS) poskytuje spôsob, ako uložiť súkromný kľúč distribuovaným spôsobom tak, že kým je súkromný kľúč v pokoji, je uložený na viacerých miestach. Medzi SSSS a TSS existujú dva rozdiely:

  • Generovanie kľúčov: v SSSS existuje jedna strana nazývaná „díler“, ktorá má na starosti generovanie zdieľaného tajomstva súkromného kľúča. To znamená, že v čase generovania kľúča sa súkromný kľúč generuje na jednom mieste a potom distribuuje dílerom na rôzne miesta. V TSS neexistuje žiadny díler, pretože jeho úloha je distribuovaná tak, že úplný súkromný kľúč nie je nikdy na jednom mieste.

  • Podpisovanie: v SSSS musia strany zrekonštruovať úplný súkromný kľúč, aby mohli podpísať, čo opäť vedie k jedinému bodu zlyhania zakaždým, keď je potrebný podpis. V TSS sa podpisovanie vykonáva distribuovaným spôsobom bez rekonštrukcie zdieľaných tajomstiev.

Ako vidíme, v TSS sa súkromný kľúč (ktorý predstavuje bezpečnosť systému) počas celej svojej životnosti nikdy nenachádza na jednom mieste.


Prahové peňaženky

Peňaženka založená na technológii TSS je trochu iná ako tradičné kryptomenové peňaženky. Bežná peňaženka zvyčajne generuje frázu seed a používa ju na deterministické odvodenie adries. Používateľ môže neskôr použiť túto hierarchickú deterministickú (HD) štruktúru na 1) dosiahnutie súkromných kľúčov, ktoré zodpovedajú adresám peňaženky a podpisovanie transakcií s nimi a 2) obnovenie všetkých kľúčov peňaženky pomocou frázy seed.

Pri prahovej peňaženke je to trochu zložitejšie. Aj keď je možné generovať štruktúru HD, jej generovanie musí byť vypočítané distribuovaným spôsobom, ako ďalší protokol MPC. Strany sa musia spoločne rozhodnúť, aký je ďalší kľúč, ktorý sa má použiť. Inými slovami, každá strana bude mať vlastnú frázu seed. Frázy seed sa generujú samostatne a nikdy sa nekombinujú,, aby jedna strana sama nemohla odvodiť súkromné kľúče od svojej frázy seed.

Peňaženky založené na TSS majú tiež šikovnú bezpečnostnú funkciu, ktorá umožňuje rotáciu súkromného kľúča bez zmeny zodpovedajúceho verejného kľúča a adresy blockchainu. Rotácia súkromného kľúča, tiež známa ako proaktívne zdieľanie tajomstva, je ďalším protokolom MPC, ktorý berie zdieľania tajomstva ako vstup a výstupom je nová sada zdieľaní tajomstva. Staré zdieľané tajomstvá je možné odstrániť a nové použiť rovnakým spôsobom.

Takáto štruktúra pridáva časový rozmer bezpečnosti, čo znamená, že aby útočník zaútočil na prahovú peňaženku, musí byť na viacerých miestach súčasne. Kombinácia zdieľaných tajomstiev pred rotáciou a po rotácii nedáva útočníkovi žiadnu extra moc, ak chce sfalšovať podpis. 

Nevýhodou tohto typu peňaženky je, že kvôli nedostatku frázy seed je nekompatibilná so systémami peňaženky s jedným kľúčom. Preto je dôležité zvážiť, ktoré strany budú držať zdieľané tajomstvá.

Existuje niekoľko možných architektúr:

  • Outsourcovanie TSS: používateľ nechá „n“ serverov počítať výpočet v jeho mene. Efektívne outsourcovanie generovania, riadenia a podpisovania kľúčov poskytovateľom služieb, ktorí nie sú vlastníkmi aktív, ale poskytujú bezpečnostnú vrstvu (za určitú motiváciu).

  • Používanie viacerých zariadení: Používateľ spustí TSS na zariadeniach, ktoré vlastní. Príklad: Jedna strana bude nejaké zariadenie IoT, ďašia strana bude mobilný telefón používateľa, ďalšia strana notebook a tak ďalej.

  • Hybridné: TSS bude fungovať tak, že niektoré strany budú kontrolované externými poskytovateľmi služieb a niektoré strany budú fungovať na zariadeniach vo vlastníctve používateľov.

Prvá metóda odoberie ťažký výpočet TSS zo strany používateľa. Na druhej strane, poskytovatelia služieb sa môžu dohodnúť (predpokladáme, že dostatočné množstvo z nich nie je napadnuté súčasne, ale v praxi by to bolo možné) a ukradnúť aktíva používateľa.

Druhá metóda dáva používateľovi plnú kontrolu, ale vykonávanie transakcií je ťažkopádne, pretože potrebujete viac zariadení, aby ste sa pripojili a zapojili do výpočtu TSS.

Tretia možnosť sa považuje za najlepšiu z obidvoch možností, pretože poskytuje používateľovi jednoduchý a rýchly spôsob vykonávania transakcií, ale bez kompromisov v súvislosti s vykonávaním transakcií bez povolenia používateľa.


TSS a smart kontrakty 

V priebehu rokov našli výskumníci mnoho využití digitálnych podpisov a niektoré sú prekvapivo netriviálne. Ako už bolo spomenuté, TSS je kryptografický prvok, ktorý môže výrazne zvýšiť bezpečnosť. V kontexte blockchainov môžeme povedať, že mnohé funkcie je možné nahradiť kryptografiou založenou na TSS. Nad rámcom TSS je možné postaviť decentralizované aplikácie, riešenia škálovania vrstvy 2, atomické výmeny, miešanie, dedičnosť a ešte oveľa viac. To by nakoniec umožnilo nahradiť nákladné a rizikové operácie smart kontraktov na reťazci lacnejšími a spoľahlivejšími alternatívami.

Aby sme uviedli niekoľko konkrétnych príkladov: Multi-Hop Locks využíva dvojstranné podpisy šikovným spôsobom a je možné použiť ho ako alternatívu k sieti Bitcoin Lightning s bezpečnejšou a súkromnejšou sieťou platobných kanálov. ShareLock je pravdepodobne najlacnejším riešením miešania na reťazci pre Ethereum, na základe overenia jedného prahového podpisu.


Riziká

V posledných rokoch došlo k výraznému nárastu implementácií TSS. Nakoľko však ide o relatívne novú technológiu, stále má určité obmedzenia a spájajú sa s ňou aj určité obavy. V porovnaní s klasickou kryptografiou s verejným kľúčom môžu byť protokoly TSS veľmi zložité a ešte je potrebné „otestovať ich v boji“. TSS zvyčajne vyžaduje dodatočné, slabšie kryptografické predpoklady v porovnaní s jednoduchými digitálnymi podpismi. V dôsledku toho sa teraz objavujú kryptografické útočné vektory, ktoré v tradičných nastaveniach neexistovali (pozrite si túto prezentáciu z konferencie Breaking Bitcoin Conference 2019). Bezpečnostní inžinieri a aplikovaní kryptografovia vám môžu pomôcť s bezpečným nasadením TSS vo vašom systéme.

Pozitívne je, že existujúce a nové implementácie silnejú v dôsledku zvýšenia príspevkov ku kvalite, partnerských preskúmaní, auditov a zlepšení algoritmickej výkonnosti.


Záverečné myšlienky

V tomto článku sme predstavili základy schémy Threshold Signature Scheme (TSS), ktorá je fascinujúcim kryptografickým prvkom s potenciálom výrazne zmeniť spôsob, akým používame blockchain.

Keďže v tomto článku sme sa nevenovali prahovým ECDSA, ktoré možno použiť v sieťach BNB Chain a Bitcoin, tí, ktorých to zaujíma, si môžu pozrieť nasledujúci zoznam nedávnych prác. Tiež, ak sa chcete pohrať s niektorými implementáciami TSS, tu nájdete kód pre dvojstrannú peňaženku Binance Chain alebo vyskúšajte peňaženku ZenGo, ktorá využíva hybridnú metódu na poskytnutie neviazanej dvojstrannej peňaženky Binance Chain.


Prečítajte si tiež: