Schwellenwert-Signaturschema erklärt
Startseite
Artikel
Schwellenwert-Signaturschema erklärt

Schwellenwert-Signaturschema erklärt

Fortgeschritten
Veröffentlicht Jul 21, 2019Aktualisiert Apr 29, 2021
12m
Das Schwellenwert-Signaturschema (englisch: Threshold Signature Scheme oder kurz TSS) ist ein kryptographisches Primitiv zur verteilten Schlüsselerzeugung und -signierung. Der Einsatz von TSS in Blockchain-Clients ist ein neues Paradigma, das zahlreiche Vorteile bieten kann, insbesondere in Bezug auf die Sicherheit. Im weiteren Sinne kann TSS das Design von Schlüsselmanagementsystemen (z. B. Krypto-Wallets) beeinflussen und den Weg für native Unterstützung in DeFi Anwendungsfällen weisen. Allerdings ist TSS noch eine neue Technologie, so dass auch die Risiken und Grenzen berücksichtigt werden sollten.

In diesem Artikel werden wir darüber sprechen, was ein TSS ist, welche potenziellen Vorteile es für die Blockchain-Industrie bringt, wie es in einem Blockchain-Client implementiert werden kann, wie es im Vergleich zu Shamir Secret Sharing und Multisig funktioniert, welche verschiedenen Möglichkeiten es gibt, TSS für die verteilte Schlüsselverwaltung zu nutzen, und schließlich diskutieren wir seine Risiken und Grenzen.

Die Macht der Kryptographie

Um TSS zu verstehen, benötigen wir zunächst einige Grundkenntnisse in Kryptographie. Seit den 1970er Jahren setzen immer mehr Internet-Systeme (wie TLS und PGP) auf asymmetrische Kryptographie, die auch als Public Key Cryptography (PKC) bekannt ist. PKC verwendet zwei Schlüssel (Keys): einen öffentlichen (Public Key) und einen privaten (Private Key). Während der Public Key kein Geheimnis ist und von jedermann veröffentlicht und verwendet werden kann, ist der Private Key eine geheime Information, die die Sicherheit des Systems darstellt.
Verschlüsselung und digitale Signaturen sind die beiden häufigsten Anwendungen für PKC. Sowohl Verschlüsselungs- als auch digitale Signaturschemata basieren auf Sätzen von drei Algorithmen. Der erste ist die Generierung des Private und Public Key Pairs, der zweite ist die Generierung eines Chiffriertextes/Signatur und der dritte ist der Prozess der Entschlüsselung/Verifizierung. Bei digitalen Signaturen verlangt der Signaturalgorithmus, dass der Private Key, der nur seinem Besitzer bekannt ist, eine eindeutige Signatur erzeugt. Die Signatur wird an eine bestimmte Nachricht angehängt, so dass jeder, der den Public Key besitzt, deren Authentizität und Richtigkeit überprüfen kann.


Blockchain

Es besteht kein Zweifel, dass Blockchain eine sehr leistungsfähige Technologie ist. Sie bietet eine Konsensebene, die Ereignisse organisiert und aufzeichnet. Eine solche Infrastruktur gibt uns, den Nutzern, die Möglichkeit, dezentrale Wirtschaftssysteme und sogar Regierungen aufzubauen. Überraschenderweise kann die Kryptographie, die benötigt wird, um eine einfache Blockchain auszuführen, ausschließlich auf digitalen Signaturen basieren. Im Rahmen einer Blockchain stellen die Private Keys Identitäten dar, während eine Signatur eine öffentliche Erklärung oder ein Anspruch einer Identität ist. Die Blockchain ordnet die Erklärungen an und validiert sie nach einem Regelwerk, das unter anderem dafür sorgt, dass die Unterschriften fälschungssicher und korrekt sind.
Im Gegensatz zur klassischeren Kryptographie, die in der Blockchain verwendet wird, enthält die moderne kryptografische Toolbox einige fantastische Zaubertricks: Zero-Knowledge Proofs, homomorphe Verschlüsselung und Multi-Party-Berechnung, um nur einige zu nennen. Wie wir in den letzten zehn Jahren gesehen haben, hat die Blockchain-Forschung die angewandte Kryptographie enorm vorangetrieben, mit jüngsten Durchbrüchen bei allem oben genannten und noch viel mehr. 

In diesem Artikel konzentrieren wir uns auf einen einzigen solchen Durchbruch: effiziente sichere Schwellenwert-Signaturen (TSS).


MPC und das Schwellenwert-Signaturschema (TSS)

Multi-Party-Computation (MPC) ist ein Zweig der Kryptographie, der mit der wegweisenden Arbeit von Andrew C. Yao vor fast 40 Jahren begann. In der MPC versuchen eine Reihe von Parteien, die sich gegenseitig nicht vertrauen, gemeinsam eine Funktion über ihre Eingaben zu berechnen, während sie diese Eingaben privat halten. 

Nehmen wir als Beispiel, dass n Mitarbeiter eines Unternehmens wissen wollen, wer am meisten bezahlt bekommt, ohne sich gegenseitig ihr tatsächliches Gehalt mitzuteilen. Hier sind die privaten Eingaben Gehälter und die Ausgabe ist der Name des Mitarbeiters mit dem höchsten Gehalt. Wenn wir diese Berechnung mit MPC durchführen, stellen wir fest, dass bei der Berechnung nicht ein einziges Gehalt verraten wird. 

Die beiden Hauptmerkmale von MPC sind Korrektheit und Datenschutz:

  • Korrektheit: Die von einem Algorithmus erzeugte Ausgabe ist korrekt (wie erwartet).

  • Datenschutz: Die geheimen Eingabedaten, die eine Partei besitzt, würden nicht an die anderen Parteien weitergegeben.

Wir werden MPC verwenden, um eine digitale Signatur auf verteilte Weise zu berechnen. Schauen wir uns an, wie die oben genannten Eigenschaften auf Signaturen angewendet werden können. Bitte merken Sie sich, für Signaturen haben wird drei Schritte: 

  • Schlüsselgenerierung: Der erste Schritt ist auch der komplexeste. Wir müssen einen Schlüssel generieren, der öffentlich ist und zur Überprüfung zukünftiger Signaturen verwendet wird. Aber wir müssen auch ein individuelles Geheimnis für jede Partei generieren, das wir Secret Share nennen werden. In Bezug auf Korrektheit und Datenschutz sagen wir, dass die Funktion den gleichen Public Key an alle Parteien ausgibt und einen anderen Secret Share für jede dieser Parteien so dass bezüglich: (1) Datenschutz: keine Secret Shares Daten zwischen den Parteien weitergegeben werden, und bezüglich (2) Korrektheit: der Public Key eine Funktion der Secret Shares ist.

  • Signieren: Dieser Schritt beinhaltet eine Signaturgenerierungsfunktion. Die Eingabe jeder Partei ist ihr Secret Share, der als Ausgabe des vorherigen Schrittes (verteilte Schlüsselerzeugung) erstellt wurde. Es gibt auch öffentliche Eingaben, die allen bekannt sind, nämlich die zu unterzeichnende Nachricht. Die Ausgabe erfolgt mit einer digitalen Signatur, und die Datenschutzbestimmungen stellen sicher, dass bei der Berechnung keine Veröffentlichung der Secret Shares auftritt.

  • Verifizierung: Der Verifizierungsalgorithmus bleibt so, wie er in der klassischen Umgebung ist. Um mit einzelnen Schlüsselsignaturen kompatibel zu sein, sollte jeder, der den Public Key kennt, in der Lage sein, die Signaturen zu überprüfen und zu validieren. Das ist genau das, was die Blockchain zur Validierung von Nodes tut.

Threshold Signature Scheme (TSS) ist der Name, den wir dieser Zusammensetzung aus verteilter Schlüsselgenerierung (Distributed Key Generation - DKG) und verteilter Unterzeichung (Distributed Signing) einem Schwellenwert-Signaturschema (Threshold Signature Schema) geben.


Kombination von TSS mit Blockchains

Die natürliche Art und Weise, TSS in einer Blockchain zu verwenden, ist einen Blockchain-Client zu ändern, um Schlüssel und Signaturen mit TSS zu erzeugen. Hier verwenden wir den Begriff Blockchain-Client, um uns auf den Befehlssatz zu beziehen, der von einem vollständigen Node ausgeführt wird. In der Praxis ermöglicht es uns die TSS-Technologie, alle Befehle, die sich auf Private Keys beziehen, durch verteilte Berechnungen zu ersetzen.

Um es näher zu erläutern, beschreiben wir zunächst kurz, wie neue Adressen im klassischen Blockchain-Design entstehen.  Einfach ausgedrückt, können wir eine neue Adresse erstellen, indem wir einen Private Key generieren und dann den Public Key aus dem Private Key berechnen. Schließlich wird die Blockchain-Adresse aus dem Public Key abgeleitet.

Mit TSS hätten wir nun eine Reihe von n Parteien, die gemeinsam den Public Key berechnen und jeweils einen Secret Share des Private Keys halten (die einzelnen Shares werden den anderen Parteien nicht mitgeteilt). Aus dem Public Key können wir die Adresse auf die gleiche Weise wie im traditionellen System ableiten, wodurch die Blockchain agnostisch wird, wie die Adresse generiert wird. Der Vorteil ist, dass der Private Key kein Single Point of Failure mehr ist, da jede Partei nur noch einen Teil davon besitzt. 

Das Gleiche kann beim Signieren von Transaktionen getan werden. In diesem Fall führen wir anstelle einer Einzelsignatur mit ihrem Private Key eine verteilte Signaturgenerierung zwischen mehreren Parteien durch. So kann jede Partei eine gültige Signatur vorlegen, solange genügend von ihnen ehrlich handeln. Erneut sind wir von der lokalen Berechnung (Single Point of Failure) zu einer interaktiven übergegangen.

Es ist wichtig zu erwähnen, dass die verteilte Schlüsselerzeugung so erfolgen kann, dass verschiedene Arten von Zugriffsstrukturen möglich sind: Die allgemeine “t von n” Einstellung wird in der Lage sein, bis zu t beliebige Ausfälle bei Private Key Operationen zu überstehen, ohne die Sicherheit zu beeinträchtigen.


TSS vs. Multisig

Einige Blockchains bieten TSS-Funktionalität als integrierten oder programmierbaren Teil der Software. Wir nennen diese Funktionalität Multisig oder Multi-Signature. Um die Unterschiede besser zu verstehen, können wir Multisig als TSS in der Anwendungsebene der Blockchain betrachten.

Anders ausgedrückt, versuchen sowohl Multisig als auch TSS im Wesentlichen, ähnliche Ziele zu erreichen, aber TSS verwendet Kryptographie off-chain, während Multisig on-chain geschieht. Die Blockchain benötigt jedoch eine Möglichkeit, Multisig zu kodieren, was den Datenschutz beeinträchtigen kann, da die Zugriffsstruktur (Anzahl der Unterzeichner) auf der Blockchain sichtbar ist. Die Kosten einer Multisig-Transaktion sind höher, da die Informationen über die verschiedenen Unterzeichner auch auf der Blockchain kommuniziert werden müssen.

In TSS werden die Daten der Unterzeichner in eine normal aussehende Transaktion umgewandelt, was die Kosten senkt und den Datenschutz gewährleistet. Andererseits kann Multisig nicht interaktiv sein, was den Aufwand erspart, eine komplexe Kommunikationsschicht zwischen den verschiedenen Unterzeichnern zu betreiben.

Der Hauptunterschied besteht darin, dass Multisig Blockchain-spezifisch ist und für jede Blockchain neu implementiert werden muss, und in manchen Fällen wird es überhaupt nicht unterstützt. Umgekehrt setzt TSS auf reine Kryptographie, so dass sie jederzeit unterstützt werden kann. Ein toller Artikel mit Illustrationen zu den Unterschieden finden Sie hier.


TSS vs. Shamir Secret Sharing Schema

Das Shamir Secret Sharing Schema (SSSS) bietet eine Möglichkeit, den Private Key auf eine verteilte Weise zu speichern, so dass der Private Key, während er sich im Ruhezustand befindet, an mehreren Orten gespeichert wird. Es gibt zwei Unterschiede zwischen SSSS und TSS:

  • Schlüsselgenerierung: Im SSSS gibt es eine einzige Person genannt der “Dealer”, der für die Generierung der Private Key Secret Shares verantwortlich ist. Das bedeutet, dass zum Zeitpunkt der Schlüsselgenerierung der Private Key an einem einzigen Ort generiert und dann vom Dealer an die verschiedenen Standorte verteilt wird. Im TSS gibt es keinen Dealer, da seine Rolle so verteilt ist, dass sich der vollständige Private Key nie an einem einzigen Ort befindet.

  • Signieren: Im SSSS müssen die Parteien den vollständigen Private Key rekonstruieren, um zu signieren, was wiederum zu einem Single Point of Failure führt, wenn eine Signatur benötigt wird. Im TSS erfolgt die Signierung auf verteilte Weise, ohne dass die Secret Shares jemals rekonstruiert werden.

Wie wir sehen können, befindet sich im TSS der Private Key (der die Sicherheit des Systems darstellt) während seiner gesamten Lebensdauer nie an einem einzigen Ort.


Threshold Wallets

Eine auf TSS-Technologie basierende Wallet unterscheidet sich etwas von herkömmlichen Kryptowährungs-Wallets. Typischerweise erzeugt eine herkömmliche Wallet eine Seed-Phrase und verwendet sie, um die Adressen deterministisch abzuleiten. Der Benutzer kann diese hierarchische deterministische (HD) Struktur später verwenden, um 1) die Private Keys zu erreichen, die den Wallet-Adressen entsprechen, und Transaktionen mit ihnen zu signieren, und 2) alle Wallet-Schlüssel mit der Seed-Phrase wiederherzustellen.

In einer Threshold Wallet sind die Dinge komplexer. Obwohl es möglich ist, eine HD-Struktur zu erzeugen, muss ihre Erzeugung verteilt berechnet werden, wie ein anderes MPC-Protokoll. Die Parteien müssen gemeinsam entscheiden, was der nächste Schlüssel ist, der verwendet werden soll. Mit anderen Worten, jede Partei wird eine eigene Seed Phrase haben. Die Seed-Phrasen werden separat generiert und nie kombiniert, so dass eine einzelne Partei nicht die Private Keys aus ihrem Seed ableiten kann.

TSS-basierte Wallets haben auch ein nettes Sicherheitsmerkmal, nämlich die Möglichkeit der Private Key Rotation, ohne die entsprechenden Public Keys und Blockchain-Adressen zu ändern. Private Key Rotation, auch bekannt als proaktives Secret Sharing, ist ein weiteres MPC-Protokoll, das die Secret Shares als Eingabe nimmt und einen neuen Satz von Secret Shares ausgibt. Die alten Secret Shares können gelöscht und die neuen auf die gleiche Weise verwendet werden.

Eine solche Struktur fügt der Sicherheit eine zeitliche Dimension hinzu, was bedeutet, dass sich ein Angreifer gleichzeitig an mehreren Stellen befinden muss, um eine Threshold Wallet anzugreifen. Die Kombination der Secret Shares vor und nach der Rotation gibt dem Angreifer keinen zusätzlichen Vorteil, wenn er eine Signatur fälschen will.

Ein Nachteil dieser Art von Wallet ist, dass das Fehlen einer Seed Phrase sie inkompatibel mit Single-Key-Wallet-Systemen macht. Daher ist es wichtig zu überlegen, welche Parteien die Secret Shares besitzen werden.

Es gibt einige mögliche Architekturen:

  • Outsourcing TSS: Der Benutzer lässt “n” Server die Berechnung in seinem Auftrag durchführen. Effektives Outsourcing der Schlüsselgenerierung, -verwaltung und -signierung an Dienstleister, die nicht die Eigentümer der Vermögenswerte sind, sondern eine Sicherheitsebene als Gegenleistung für eine gewisse Vergütung bereitstellen.

  • Verwendung mehrerer Geräte: Der Benutzer führt das TSS zwischen den Geräten aus, die er besitzt. Zum Beispiel - eine Partei wird ein IoT-Gerät sein, eine andere Partei wird das Smartphone des Benutzers sein, eine andere Partei sein Laptop, und so weiter.

  • Hybrid: TSS wird so laufen, dass einige Parteien von externen Dienstanbietern kontrolliert werden und andere auf benutzereigenen Geräten.

Die erste Methode entlastet die Benutzer-Client-Seite von der aufwändigen TSS-Berechnung. Andererseits können die Dienstleister kooperieren (wir gehen davon aus, dass nicht genug von ihnen gleichzeitig angegriffen werden, aber in der Praxis wäre es möglich) und die Vermögenswerte des Benutzers stehlen.

Die zweite Methode gibt dem Benutzer die volle Kontrolle, macht es aber schwierig, Transaktionen durchzuführen, da Sie mehrere Geräte benötigen, um online zu gehen und mit der TSS-Berechnung zu arbeiten.

Die dritte Option gilt als die beste Kombination beider Möglichkeiten, da sie dem Benutzer eine einfache und schnelle Möglichkeit bietet, Transaktionen durchzuführen, ohne jedoch zu risikieren, dass Transaktionen ohne die Autorisierung des Benutzers durchgeführt werden können.


TSS und Smart Contracts

Im Laufe der Jahre haben Forscher viele Einsatzmöglichkeiten für digitale Signaturen gefunden, und einige sind überraschend wenig trivial. Wie bereits erwähnt, ist TSS ein kryptographisches Grundmodell, das die Sicherheit erheblich erhöhen kann. Im Zusammenhang mit Blockchains kann man sagen, dass viele Funktionalitäten durch TSS-basierte Kryptographie ersetzt werden können. Dezentrale Anwendungen, Layer 2 Skalierungslösungen, Atomic Swaps, Mixing, Vererbung und vieles mehr können auf einem TSS-Framework aufgebaut werden. Dies würde es letztendlich ermöglichen, teure und risikoreiche On-Chain Smart Contract Operationen durch billigere und zuverlässigere Alternativen zu ersetzen.
Um einige konkrete Beispiele zu nennen: Multi-Hop Locks nutzt auf clevere Weise Zwei-Parteien-Signaturen und kann als Alternative zum Bitcoin Lightning Netzwerk mit einem sichereren und privateren Zahlungskanal-Netzwerk eingesetzt werden. ShareLock ist wahrscheinlich die günstigste On-Chain-Mixing Lösung für Ethereum, die auf der Verifizierung einer einzigen Schwellenwertsignatur basiert.


Risiken

In den letzten Jahren gab es einen deutlichen Anstieg der TSS-Implementierungen. Bei dieser relativ neuen Technologie gibt es jedoch noch einige Einschränkungen und Bedenken. Im Vergleich zur klassischen Public-Key-Kryptographie können TSS-Protokolle sehr komplex sein und müssen noch “auf Herz und Nieren getestet werden”. Normalerweise erfordert das TSS zusätzliche, schwächere kryptografische Annahmen im Vergleich zu einfachen digitalen Signaturen. Infolgedessen werden nun kryptographische Angriffsvektoren entdeckt, die es in herkömmlichen Setups nicht gab (siehe diese Präsentation von der Breaking Bitcoin Conference 2019). Sicherheitstechniker und angewandte Kryptographen können bei der sicheren Bereitstellung von TSS in Ihrem System helfen.

Positiv zu vermerken ist, dass bestehende und neue Implementierungen durch eine Zunahme der qualitativen Beiträge, Peer Reviews, Audits und algorithmische Leistungssteigerungen verbessert werden.


Fazit

In diesem Artikel stellten wir die Grundlagen des Schwellenwert-Signaturschemas (TSS) vor, das ein faszinierendes kryptographisches Grundmodell ist, das das Potenzial hat, die Art und Weise, wie wir Blockchain verwenden, erheblich zu verändern.

Da in diesem Artikel nicht auf die Threshold ECDSA eingegangen wurde, die in Binance Chain und Bitcoin verwendet werden kann, können sich die Interessierten auf die folgende Liste der aktuellen Veröffentlichungen beziehen. Und wenn Sie mit einigen TSS-Implementierungen experimentieren möchten, können Sie einen Code für die Zweiparteien-Binance-Chain-Wallet hier finden oder die ZenGo Wallet ausprobieren, die die Hybrid-Methode verwendet, um eine nicht-verwahrende Zweiparteien-Binance-Chain-Wallet bereitzustellen.


Weiterführende Literatur: