In dit artikel behandelen we wat een TSS is, wat de mogelijke voordelen zijn voor de blockchain, hoe het kan worden geïmplementeerd in een blockchain, hoe het kan worden vergeleken met Shamir secret sharing en Multisig. Wat zijn de verschillende manieren om TSS te gebruiken voor een distributed key management en tenslotte bespreken we de risico's en beperkingen.
De kracht van cryptografie
Blockchain
In dit artikel zullen we ons concentreren op een enkele dergelijke doorbraak: "efficient secure threshold signatures" (TSS).
MPC en de threshold signature scheme (TSS)
Multi-party computation (MPC) is een tak van cryptografie die begon met het baanbrekende werk van Andrew C. Yao, bijna 40 jaar geleden. In MPC proberen een aantal partijen die elkaar niet vertrouwen gezamenlijk een functie over hun invoer te berekenen, terwijl de invoer privé blijft.
Laten we als voorbeeld nemen dat een werknemers van een bedrijf wil weten wie het meest wordt betaald, maar zonder dat het werkelijke salaris aan elkaar bekend wordt gemaakt. Hier zijn de privé-inputs "salarissen" en de output de naam van de werknemer met het hoogste salaris. Als we deze berekening uitvoeren met MPC, wordt geen enkel detail over het salaris gedeeld tijdens de berekeningen.
De twee belangrijkste eigenschappen van MPC zijn juistheid en privacy:
Juistheid: de output geproduceerd door een algoritme is correct (zoals verwacht).
Privacy: de geheime invoergegevens die een partij bewaart, kan niet met andere partijen worden gedeeld.
We zullen MPC gebruiken om een digitale handtekening op een gedistribueerde manier te berekenen. Laten we eens kijken hoe de bovenstaande eigenschappen kunnen worden toegepast op handtekeningen. Voor handtekeningen zijn er drie stappen nodig:
Key Generation: de eerste stap is ook de meest complexe. We moeten een sleutel genereren die openbaar is en wordt gebruikt om toekomstige handtekeningen te verifiëren. Maar we moeten ook voor elke partij een afzonderlijk geheim genereren, dat we een geheim aandeel zullen noemen. In termen van juistheid en privacy zeggen we dat de functie dezelfde publieke sleutel zal leveren voor alle partijen, en een ander geheim deel voor elk van deze partijen dat: (1) privacy: geen geheime gegevens tussen de partijen worden uitgelekt en (2) juistheid: de public key is een functie van de geheime aandeel.
Ondertekening: deze stap omvat een functie voor het genereren van handtekeningen. De input van elke partij is zijn geheime aandeel, gemaakt als output van de vorige stap (gedistribueerde sleutelgeneratie). Er is ook openbare input voor iedereen bekend, dat is het te ondertekenen bericht. De output zal een digitale handtekening zijn en de eigenschap van privacy zorgt ervoor dat er geen geheim aandeel wordt gedeeld tijdens de berekening.
- Verificatie: het verificatie-algoritme blijft zoals het is in de klassieke setting. Om compatibel te zijn met handtekeningen met een enkele sleutel, moet iedereen met kennis van de openbare sleutel de handtekeningen kunnen verifiëren en valideren. Dit is precies wat blockchain-validerende nodes doen.
Threshold signature scheme (TSS) is de naam die we geven aan deze samenstelling van distributed key generation (DKG) en gedistribueerde ondertekening van een threshold signature schema.
TSS combineren met blockchains
Om het in meer detail uit te leggen, beginnen we met een korte beschrijving van hoe nieuwe adressen worden gemaakt op het klassieke blockchain-ontwerp. Eenvoudig gezegd kunnen we een nieuw adres maken door een private key te genereren en vervolgens de public key te berekenen op basis van de private key. Ten slotte wordt het public address afgeleid van de public key.
Nu zouden we met behulp van TSS een reeks van gemeenschappelijke partijen hebben die de publieke sleutel gezamenlijk berekenen, en elke partij heeft een geheim aandeel van de private key (de individuele aandelen worden niet met de andere partijen gedeeld). Van de public key kunnen we het public address op dezelfde manier afleiden als in het traditionele systeem, waardoor de blockchain agnostisch wordt voor hoe het adres wordt gegenereerd. Het voordeel is dat de private key niet langer een punt is dat voor problemen kan zorgen omdat elke partij er slechts één deel van heeft.
Hetzelfde kan worden gedaan bij het ondertekenen van transacties. In dit geval voeren we in plaats van dat een enkele partij met zijn private key ondertekent, een distributed signature generation tussen meerdere partijen. Zo kan elke partij een geldige handtekening produceren zolang er genoeg van hen zijn die eerlijk handelen. Opnieuw zijn we overgegaan van een lokale berekening (single point of failure) naar een interactieve berekening.
Het is belangrijk om te vermelden dat het genereren van distributed keys kan worden gedaan op een manier die verschillende soorten toegangsstructuren mogelijk maakt: de algemene instelling is bestand tegen willekeurige storingen in bewerkingen met private keys, zonder de veiligheid in gevaar te brengen.
TSS vs. Multisig
Anders gezegd, zowel multisig als TSS proberen in wezen vergelijkbare doelen te bereiken, maar TSS gebruikt cryptografie off-chain, terwijl multisig on-chain gebeurt. De blockchain heeft echter een manier nodig om multisig te coderen, wat de privacy kan schaden omdat de toegangsstructuur (aantal signers) zichtbaar is op de blockchain. De kosten van een multisig-transactie zijn hoger omdat de informatie over de verschillende signers ook op de blockchain moet worden gecommuniceerd.
In TSS worden de details van de signers’ samengevoegd tot een regulier ogende transactie, waardoor de kosten worden verlaagd en de privacy wordt gehandhaafd. Aan de andere kant kan multisig niet-interactief zijn, wat de problemen van het besturen van een complexe communicatielaag tussen de verschillende signers bespaart.
TSS vs. Shamir secret sharing scheme
Het Shamir secret sharing-schema (SSSS) biedt een manier om de private key op een gedistribueerde manier op te slaan, zodat de private key in rust is ,maar op meerdere locaties is opgeslagen. Er zijn twee verschillen tussen SSSS en TSS:
Key Generation: in SSSS is er één partij genaamd “ de dealer ” die verantwoordelijk is voor het genereren van de geheime private key aandelen. Dit betekent dat de sleutel bij het genereren van de sleutel op één locatie wordt gegenereerd en vervolgens door de dealer wordt gedistribueerd naar de verschillende locaties. In TSS is er geen dealer, omdat zijn rol zodanig wordt gedistribueerd dat de volledige private key zich nooit op één locatie bevindt.
Ondertekening: in SSSS moeten de partijen de volledige private key reconstrueren om te ondertekenen, wat kan resulteren in een enkel punt van mislukking telkens wanneer een handtekening nodig is. In TSS gebeurt de ondertekening op een gedistribueerde manier zonder ooit de het geheime aandeel te reconstrueren.
Zoals we kunnen zien, bevindt de private key (die de beveiliging van het systeem vertegenwoordigt) zich in TSS gedurende de gehele levensduur nooit op één locatie.
Threshold wallets
In een threshold wallet zijn dingen complexer. Hoewel het mogelijk is om een HD-structuur te genereren, moet de generatie ervan op een verdeelde manier worden berekend, als een ander MPC-protocol. De partijen moeten gezamenlijk beslissen wat de volgende key is die moet worden gebruikt. Met andere woorden, elke partij heeft een eigen seed phrase. De seed phrases worden afzonderlijk gegenereerd en nooit gecombineerd, zodat alleen een partij de private keys kan’t afleiden uit de seed.
TSS-gebaseerde wallets hebben ook een leuke beveiligingsfunctie, de rotatie van private keys mogelijk maakt zonder de bijbehorende openbare sleutel en blockchain-adres te wijzigen. Private key rotatie, ook bekend als proactief geheim delen, is nog een ander MPC-protocol dat de geheime aandelen als invoer neemt en een nieuwe reeks geheime aandelen uitvoert. De oude geheime aandelen kunnen worden verwijderd en de nieuwe kunnen op dezelfde manier worden gebruikt.
Een dergelijke structuur voegt een tijdsdimensie toe aan de beveiliging, wat betekent dat een aanvaller zich op meerdere locaties tegelijkertijd moet bevinden om een threshold wallet aan te vallen. Het combineren van geheime shares vóór rotatie en na de rotatie geeft de aanvaller geen extra kracht als hij een handtekening wil vervalsen.
Een nadeel van dit type wallet is dat het ontbreken van een seed-frase het incompatibel maakt met single-key wallet. Het is dus belangrijk om te overwegen welke partijen de geheime aandelen zullen houden.
Er zijn een paar mogelijke architecturen:
TSS uitbesteden: de gebruiker laat “n“ servers de berekening namens hen uitvoeren. Effectief het genereren, beheren en ondertekenen van keys uitbesteden aan serviceproviders die niet de eigenaren van de activa zijn, maar een beveiligingslaag bieden in ruil voor enige stimulans.
Meerdere apparaten gebruiken: de gebruiker voert de TSS uit tussen de apparaten die hij bezit. Een partij zal bijvoorbeeld een IoT-apparaat zijn, een andere partij zal een mobiel zijn, een andere partij hun laptop, enzovoort.
Hybride: TSS wordt zodanig uitgevoerd dat sommige partijen worden beheerd door externe serviceproviders en sommige partijen op apparaten die eigendom zijn van gebruikers.
De eerste methode ontlast de zware TSS-berekening van de client-kant van de gebruiker. Aan de andere kant kunnen de serviceproviders samenspannen (we nemen aan dat genoeg ervan niet tegelijkertijd worden aangevallen, maar in de praktijk kunnen ze dat wel) en de activa van de gebruiker stelen.
De tweede methode geeft de gebruiker volledige controle, maar maakt het lastig om transacties uit te voeren omdat u meerdere apparaten nodig hebt om online te gaan en de TSS-berekening te gebruiken.
De derde optie wordt beschouwd als de beste van twee werelden omdat het de gebruiker een gemakkelijke en snelle manier biedt om transacties uit te voeren, maar zonder concessies te doen aan transacties zonder de autorisatie van de gebruiker.
TSS en smart contracts
Risico's
Tot slot
In dit artikel hebben we de basisprincipes van het threshold signature scheme (TSS) geïntroduceerd, een fascinerende cryptografische primitief die het potentieel heeft om de manier waarop we blockchain gebruiken aanzienlijk te veranderen.
Meer lezen: