Forklaring af Threshold Signatures
Hjem
Artikler
Forklaring af Threshold Signatures

Forklaring af Threshold Signatures

Avanceret
Offentliggjort Jul 21, 2019Opdateret Apr 29, 2021
12m

Forfatter: Omer Shlomovits, ZenGo.

Threshold Signature Scheme (TSS) er en kryptografisk primitiv metode til generering og signering af distribuerede nøgler. Brugen af TSS i blockchain-klienter er et nyt paradigme, der kan give mange fordele, især med hensyn til sikkerhed. I bredere forstand kan TSS påvirke designet af nøglestyringssystemer (såsom krypto-wallets) og vise vejen for indbygget support i DeFi-use cases. Når det er sagt, er TSS stadig en ny teknologi, så risici og begrænsninger bør også overvejes.

I denne artikel vil vi forklare, hvad en TSS er, de potentielle fordele, den bringer til blockchain-rummet, hvordan den kan implementeres i en blockchain-klient, hvordan den kan sammenlignes med en Shamirs hemmelige deling og multisignatur, de forskellige måder til at bruge TSS til distribueret nøglestyring, og endelig vil vi gennemgå risici og begrænsninger.


Kryptografiens effekt

For at forstå TSS har vi først brug for en grundlæggende viden om kryptografi. Siden 1970'erne har flere og flere internetsystemer (såsom TLS og PGP) anvendt asymmetrisk kryptografi, som også er kendt som kryptografi med public key (Public Key Cryptography, PKC). PKC gør brug af to nøgler: en offentlig og en privat. Mens en offentlig nøgle ikke er nogen hemmelighed og kan offentliggøres og bruges af alle, er en privat nøgle et stykke hemmelig information, der repræsenterer systemets sikkerhed.

Kryptering og digitale signaturer er de to mest almindelige anvendelser for PKC. Både krypterings- og digitale signaturordninger er afhængige af sæt med tre algoritmer. For det første er genereringen af private og offentlige nøglepar, for det andet genereringen af en chiffertekst/signatur, og for det tredje er processen med dekryptering/verificering. Med hensyn til digitale signaturer kræver signeringsalgoritmen, at en privat nøgle, som kun er kendt af ejeren, producerer en unik signatur. Signaturen er knyttet til en given meddelelse på en sådan måde, at alle, der har den offentlige nøgle, vil kunne verificere dens ægthed og korrekthed.


Blockchain

Der er ingen tvivl om, at blockchain er en meget kraftfuld teknologi. Den giver et konsensuslag, der organiserer og registrerer begivenheder. En sådan infrastruktur giver os, brugerne, potentiel magt til at opbygge decentraliserede økonomier og endda regeringer. Overraskende nok kan den kryptografi, der er nødvendig for at køre en grundlæggende blockchain, udelukkende være baseret på digitale signaturer. I forbindelse med en blockchain repræsenterer de private keys identiteter, mens en underskrift er en offentlig erklæring eller påstand fremsat af en identitet. Blockchainen vil bestille udsagn og validere dem efter et sæt regler, som blandt andet sikrer, at signaturerne er uforfalskelige og korrekte.

I modsætning til den mere klassiske kryptografi, der bruges i blockchain, indeholder den moderne kryptografiske værktøjskasse nogle fantastiske magiske tricks: zero-knowledge proofs, homomorfisk kryptering og multi-party computation (MPC), for blot at nævne nogle få. Som vi så i løbet af det sidste årti, har blockchain-forskningen skubbet den anvendte kryptografi gevaldigt med nylige gennembrud inden for alt ovenstående og meget mere. 

I denne artikel vil vi fokusere på et enkelt sådant gennembrud: effektive sikre threshold signatures (TSS).


MPC og Threshold Signature Scheme (TSS)

Multi-party computation (MPC) er en gren af kryptografi, der startede med Andrew C. Yaos skelsættende arbejde for næsten 40 år siden. I MPC forsøger et sæt parter, der ikke stoler på hinanden, i fællesskab at beregne en funktion over deres input, mens de holder disse input private. 

Lad os som et eksempel sige, at n ansatte i en virksomhed ønsker at vide, hvem der får mest løn, men uden at afsløre deres faktiske løn for hinanden. Her er de private input lønninger, og outputtet vil være navnet på medarbejderen med den højeste løn. Ved at udføre denne beregning ved hjælp af MPC får vi, at ikke engang en enkelt løn er lækket under beregningen. 

De to vigtigste egenskaber ved MPC er korrekthed og privatliv:

  • Korrekthed: Det output, der produceres af en algoritme, er korrekt (som forventet).

  • Privatliv: De hemmelige inputdata, som en part har, ville ikke lække til de andre parter.

Vi bruger MPC til at beregne en digital signatur på en distribueret måde. Lad os se, hvordan ovenstående egenskaber kan anvendes på signaturer. Husk, at vi for underskrifter har tre trin: 

  • Nøglegenerering: Det første trin er også det mest komplekse. Vi er nødt til at generere en nøgle, som vil være offentlig, og som bruges til at verificere fremtidige underskrifter. Men vi er også nødt til at generere en individuel hemmelighed for hver part, som vi vil kalde en hemmelig andel. Med hensyn til korrekthed og privatliv siger vi, at funktionen udsender den samme offentlige nøgle til alle parter og en anden hemmelig andel for hver sådan, at: (1) privatliv: ingen hemmelige delingsdata lækkes mellem parterne, og (2) korrekthed: den offentlige nøgle er en funktion af de hemmelige delinger.

  • Underskrivelse: Dette trin involverer en signaturgenereringsfunktion. Hver parts input vil være dens hemmelige andel, der oprettes som output fra det foregående trin (generering af distribuerede nøgler). Der er også offentligt input, som alle kender, hvilket er den meddelelse, der skal underskrives. Outputtet vil være en digital signatur, og privatlivets fred sikrer, at der ikke skete lækage af hemmelige andele under beregningen.

  • Verificering: Verificeringsalgoritmen forbliver som den er i den klassiske indstilling. For at være kompatible med enkeltnøglesignaturer skal alle med kendskab til den offentlige nøgle kunne verificere og validere signaturerne. Det er præcis, hvad blockchain-validerende noder gør.

Threshold Signature Scheme (TSS) er det navn, vi giver til denne sammensætning af distribueret nøglegenerering (DKG) og distribueret signering af et Threshold Signature Scheme.


Kombination af TSS med blockchains

Den naturlige måde, hvorpå TSS kan bruges i en blockchain, er ved at ændre en blockchain-klient til at generere nøgler og signaturer ved hjælp af TSS. Her bruger vi udtrykket blockchain-klient til at henvise til det sæt kommandoer, der udføres af en komplet node. I praksis giver TSS-teknologien os mulighed for at erstatte alle private nøglerelaterede kommandoer med distribuerede beregninger.

For at forklare det mere detaljeret starter vi med kort at beskrive, hvordan nye adresser oprettes på det klassiske blockchain-design.  Kort sagt kan vi oprette en ny adresse ved at generere en privat nøgle og derefter beregne den offentlige nøgle fra den private nøgle. Endelig er blockchain-adressen afledt af den offentlige nøgle.

Ved hjælp af TSS ville vi nu have et sæt af n-parter, der i fællesskab beregner den offentlige nøgle, og som hver har en hemmelig andel af den private nøgle (de enkelte andele afsløres ikke for de andre parter). Fra den offentlige nøgle kan vi udlede adressen på samme måde som i det traditionelle system, hvilket gør blockchainen agnostisk for, hvordan adressen genereres. Fordelen er, at en privat nøgle ikke længere er et enkelt fejlpunkt, fordi hver part kun har én del af den. 

Det samme kan gøres ved underskrivelse af transaktioner. I dette tilfælde kører vi en distribueret signaturgenerering mellem flere parter i stedet for at en enkelt part underskriver med sin private nøgle. Så hver part kan producere en gyldig underskrift, så længe nok af dem handler ærligt. Igen flyttede vi fra lokal beregning (enkelt fejlpunkt) til en interaktiv.

Det er vigtigt at nævne, at den distribuerede nøglegenerering kan udføres på en måde, der tillader forskellige typer adgangsstrukturer: den generelle "t ud af n"-indstilling vil være i stand til at modstå op til t vilkårlige fejl i private nøglerelaterede operationer uden kompromittere sikkerheden.


TSS vs. multisignatur

Nogle blockchains tilbyder TSS-funktionalitet som en indbygget eller programmerbar del af softwaren. Vi kalder denne funktionalitet multisig eller multisignatur. For bedre at forstå forskellene kan vi se på multisignatur som en TSS i blockchainens applikationslag.

Sagt på en anden måde forsøger både multisignatur og TSS i bund og grund at opnå lignende mål, men TSS bruger kryptografi off-chain, mens multisignatur sker på kæden. Blockchainen har dog brug for en måde at kode multisignatur på, hvilket kan skade privatlivets fred, fordi adgangsstrukturen (antallet af underskrivere) er eksponeret på blockchainen. Omkostningerne ved en multisignaturtransaktion er højere, fordi oplysningerne om de forskellige underskrivere også skal kommunikeres på blockchainen.

I TSS foldes underskrivernes oplysninger ind i en regelmæssig transaktion, hvilket reducerer omkostningerne og opretholder privatlivets fred. På den anden side kan multisignatur være ikke-interaktiv, hvilket sparer besværet med at køre et komplekst kommunikationslag mellem de forskellige underskrivere.

Hovedforskellen er, at multisignatur er blockchain-specifik og skal genimplementeres for hver blockchain, og i nogle tilfælde understøttes den slet ikke. Omvendt er TSS afhængig af ren kryptografi, så support er altid mulig. En god artikel med illustrationer om forskellene kan findes her.


TSS vs. Shamirs hemmelige deling (Shamir secret sharing scheme)

Shamir secret sharing scheme (SSSS) giver mulighed for at gemme den private nøgle på en distribueret måde, så mens den private nøgle er i hvile, gemmes den flere steder. Der er to forskelle mellem SSSS og TSS:

  • Nøglegenerering: i SSSS er der en enkelt part kaldet "forhandleren", der har ansvaret for at generere de hemmelige andele af den private nøgle. Det betyder, at på tidspunktet for nøglegenerering genereres den private nøgle på et enkelt sted og distribueres derefter af forhandleren til de forskellige steder. I TSS er der ingen forhandler, da dens rolle er fordelt således, at den fulde private nøgle aldrig er på et enkelt sted.

  • Underskrivelse: I SSSS skal parterne rekonstruere den fulde private nøgle for at underskrive, hvilket igen resulterer i et enkelt fejlpunkt, hver gang der er behov for en underskrift. I TSS sker underskrivelsen på en distribueret måde uden nogensinde at rekonstruere de hemmelige aktier.

Som vi kan se, er den private nøgle (som repræsenterer systemets sikkerhed) i TSS aldrig på et enkelt sted i hele sin levetid.


Threshold-wallets

En wallet baseret på TSS-teknologi er en smule anderledes end traditionelle kryptovaluta-wallets. Typisk genererer en konventionel wallet en seed-frase og bruger den til deterministisk at udlede adresserne. Brugeren kan senere bruge denne hierarkiske deterministiske (HD) struktur til at 1) nå de private nøgler, der svarer til wallet-adresserne og underskrive transaktioner med dem, og 2) gendanne alle wallet-nøgler ved hjælp af seed-frasen.

I en threshold-wallet er tingene mere komplekse. Selvom det er muligt at generere en HD-struktur, skal dens generering beregnes på en distribueret måde som en anden MPC-protokol. Parterne skal i fællesskab beslutte, hvad der er den næste nøgle, der skal anvendes. Med andre ord vil hver part have sin egen seed-frase. Seed-fraserne genereres separat og aldrig kombineret, så den ene part alene ikke kan udlede de private nøgler fra sin seed-frase.

TSS-baserede wallets har også en god sikkerhedsfunktion, som muliggør rotation af private nøgler uden at ændre den tilsvarende offentlige nøgle og blockchain-adresse. Privat nøglerotation, også kendt som proaktiv hemmelig deling, er endnu en MPC-protokol, der tager de hemmelige andele som input og udsender et nyt sæt hemmelige andele. De gamle hemmelige delinger kan slettes, og de nye kan bruges på samme måde.

En sådan struktur føjer en tidsdimension til sikkerheden, hvilket betyder, at en angriber skal være flere steder på samme tid for at angribe en threshold-wallet. Kombination af hemmelige andele før rotation og efter rotation giver ikke angriberen nogen ekstra magt, hvis denne ønsker at forfalske en signatur. 

En ulempe ved denne type wallet er, at manglen på en seed-frase gør den uforenelig med wallet-systemer med enkelt nøgle. Det er derfor vigtigt at overveje, hvilke parter der vil holde de hemmelige andele.

Der er et par mulige arkitekturer:

  • Outsourcing af TSS: brugeren lader "n"-servere køre beregningen på deres vegne. Effektiv outsourcing af nøglegenerering, styring og underskrivelse til tjenesteudbydere, der ikke er ejere af aktiverne, men giver et sikkerhedslag til gengæld for et incitament.

  • Brug af flere enheder: Brugeren kører TSS mellem de enheder, de ejer. F.eks. vil en part være en IoT-enhed, en anden part vil være brugerens mobil, en anden part deres bærbare computer osv.

  • Hybrid: TSS vil køre sådan, at nogle parter kontrolleres af eksterne tjenesteudbydere, og nogle parter kører på brugerejede enheder.

Den første metode aflaster den tunge TSS-beregning fra brugerklientsiden. På den anden side kan tjenesteudbyderne indgå hemmelige aftaler (vi antager, at nok af dem ikke angribes på samme tid, men i praksis kan de) og stjæle brugerens aktiver.

Den anden metode giver brugeren fuld kontrol, men gør det besværligt at gennemføre transaktioner, da du har brug for flere enheder for at gå online og interagere med TSS-beregningen.

Den tredje mulighed betragtes som det bedste fra begge verdener, da den giver brugeren en nem og hurtig måde at gennemføre transaktioner på, men uden at gå på kompromis med at få transaktioner udført uden brugerens tilladelse.


TSS og smart contracts 

I årenes løb har forskere fundet mange anvendelser til digitale signaturer, og nogle er overraskende ikke-trivielle. Som nævnt er TSS en kryptografisk primitiv, der i høj grad kan øge sikkerheden. I forbindelse med blockchains kan vi sige, at mange funktioner kan erstattes med TSS-baseret kryptografi. Decentraliserede applikationer, layer 2-skaleringsløsninger, atomswaps, blanding, nedarvning og meget mere kan bygges oven på en TSS-ramme. Dette vil i sidste ende gøre det muligt for dyre og risikable smart contract-operationer på kæden at blive erstattet af billigere og mere pålidelige alternativer.

For at give nogle konkrete eksempler: Multi-Hop Locks gør brug af topartssignaturer på en smart måde og kan bruges som et alternativ til Bitcoin Lightning Network med et mere sikkert og privat betalingskanalnetværk. ShareLock er sandsynligvis den billigste blandingsløsning på kæden til Ethereum, baseret på verificering af en enkelt threshold signature.


Risici

I de sidste par år var der en betydelig stigning i TSS-implementeringer. Som en relativt ny teknologi har den dog stadig nogle begrænsninger og bekymringer. Sammenlignet med klassisk offentlig nøglekryptografi kan TSS-protokoller være meget komplekse og er endnu ikke "kamptestet". Normalt kræver TSS yderligere, svagere, kryptografiske antagelser sammenlignet med simple digitale signaturer. Som et resultat bliver kryptografiske angrebsvektorer, der ikke fandtes i traditionelle opsætninger, nu opdaget (se denne præsentation fra Breaking Bitcoin Conference 2019). Sikkerhedsingeniører og kryptografer kan hjælpe med sikker implementering af TSS i dit system.

På den positive side bliver eksisterende og nye implementeringer stærkere på grund af en stigning i kvalitetsbidrag, peer-evalueringer, revisioner og algoritmiske præstationsforbedringer.


Sammenfatning

I denne artikel introducerede vi det grundlæggende i Threshold Signature Scheme (TSS), som er en fascinerende kryptografisk primitiv, der har potentialet til at ændre den måde, vi bruger blockchain på, markant.

Eftersom denne artikel ikke gennemgik Threshold ECDSA, der kan bruges i Binance Chain og bitcoin, kan de interesserede se følgende liste over nylige afhandlinger. Hvis du også vil lege med nogle TSS-implementeringer, kan du finde en kode til to-parts Binance Chain-wallet her eller prøve ZenGo-wallet, som bruger hybridmetoden til at levere en ikke-forvaltet toparts Binance Chain-wallet.


Yderligere læsning: