Autor: Omer Shlomovits, ZenGo.

Threshold Signature Scheme (TSS) ist ein kryptografisches Primitiv für die verteilte Schlüsselgenerierung und -signierung. Die Verwendung 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üsselverwaltungssystemen (wie Krypto-Wallets) beeinflussen und den Weg für native Unterstützung in DeFi-Anwendungsfällen ebnen. Allerdings ist TSS noch eine neue Technologie, daher sollten auch die Risiken und Einschränkungen berücksichtigt werden.

In diesem Artikel erläutern wir, was ein TSS ist, welche potenziellen Vorteile es im Blockchain-Bereich bietet, wie es in einem Blockchain-Client implementiert werden kann, wie es im Vergleich zu Shamir Secret Sharing und Multisig abschneidet, welche unterschiedlichen Möglichkeiten es gibt, TSS für die verteilte Schlüsselverwaltung zu verwenden und schließlich diskutieren wir die Risiken und Einschränkungen.


Die Macht der Kryptographie

Um TSS zu verstehen, benötigen wir zunächst einige grundlegende Kenntnisse der Kryptografie. Seit den 1970er Jahren verwenden immer mehr Internetsysteme (wie TLS und PGP) asymmetrische Kryptografie, die auch als Public-Key-Kryptografie (PKC) bekannt ist. PKC verwendet zwei Schlüssel: einen öffentlichen und einen privaten. Während der öffentliche Schlüssel kein Geheimnis ist und von jedem veröffentlicht und verwendet werden kann, ist der private Schlüssel eine geheime Information, die die Sicherheit des Systems darstellt.

Verschlüsselung und digitale Signaturen sind die beiden häufigsten Verwendungszwecke für PKC. Sowohl Verschlüsselungs- als auch digitale Signaturschemata basieren auf drei Algorithmen. Der erste ist die Generierung eines privaten und öffentlichen Schlüsselpaars, der zweite die Generierung eines Geheimtexts/einer Signatur und der dritte der Prozess der Entschlüsselung/Verifizierung. In Bezug auf digitale Signaturen erfordert der Signaturalgorithmus den privaten Schlüssel, der nur seinem Besitzer bekannt ist, um eine eindeutige Signatur zu erstellen. Die Signatur wird einer bestimmten Nachricht so angehängt, dass jeder, der den öffentlichen Schlüssel besitzt, ihre 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 Benutzern, die potenzielle Macht, dezentralisierte Volkswirtschaften und sogar Regierungen aufzubauen. Überraschenderweise kann die zum Ausführen einer einfachen Blockchain erforderliche Kryptografie ausschließlich auf digitalen Signaturen basieren. Im Kontext einer Blockchain stellen die privaten Schlüssel Identitäten dar, während eine Signatur eine öffentliche Aussage oder Behauptung einer Identität ist. Die Blockchain ordnet die Aussagen und validiert sie nach einer Reihe von Regeln, die unter anderem sicherstellen, dass die Signaturen fälschungssicher und korrekt sind.

Im Gegensatz zur eher klassischen Kryptografie, die in der Blockchain verwendet wird, enthält der moderne kryptografische Werkzeugkasten einige tolle Zaubertricks: Zero-Knowledge-Beweise, homomorphe Verschlüsselung und Multi-Party-Computation, um nur einige zu nennen. Wie wir im letzten Jahrzehnt gesehen haben, hat die Blockchain-Forschung die angewandte Kryptografie enorm vorangetrieben, mit jüngsten Durchbrüchen in allen oben genannten Bereichen und vielen mehr.

In diesem Artikel konzentrieren wir uns auf einen einzigen dieser Durchbrüche: effiziente sichere Schwellenwertsignaturen (TSS).


MPC und das Schwellenwert-Signaturschema (TSS)

Multi-Party Computation (MPC) ist ein Zweig der Kryptografie, der vor fast 40 Jahren mit der bahnbrechenden Arbeit von Andrew C. Yao begann. Bei MPC versucht eine Gruppe von Parteien, die einander nicht vertrauen, gemeinsam eine Funktion über ihre Eingaben zu berechnen und dabei diese Eingaben vertraulich zu halten.

Nehmen wir als Beispiel an, dass n Mitarbeiter eines Unternehmens wissen möchten, wer am meisten verdient, ohne einander jedoch ihr tatsächliches Gehalt mitzuteilen. Hier sind die privaten Eingaben die 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 während der Berechnung nicht einmal ein einziges Gehalt durchsickert.

Die beiden Haupteigenschaften von MPC sind Korrektheit und Datenschutz:

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

  • Datenschutz: Die geheimen Eingabedaten einer Partei gelangen nicht an die anderen Parteien.

Wir werden MPC verwenden, um eine digitale Signatur verteilt zu berechnen. Sehen wir uns an, wie die oben genannten Eigenschaften auf Signaturen angewendet werden können. Denken Sie daran, dass wir für Signaturen drei Schritte haben:

  • Schlüsselgenerierung: Der erste Schritt ist auch der komplexeste. Wir müssen einen Schlüssel generieren, der öffentlich ist und zum Verifizieren zukünftiger Signaturen verwendet wird. Wir müssen aber auch für jede Partei ein individuelles Geheimnis generieren, das wir als „geheimen Anteil“ bezeichnen. In Bezug auf Korrektheit und Datenschutz sagen wir, dass die Funktion allen Parteien denselben öffentlichen Schlüssel und für jede Partei einen anderen geheimen Anteil ausgibt, sodass: (1) Datenschutz: Es gelangen keine Daten des geheimen Anteils zwischen den Parteien durchsickern, und (2) Korrektheit: Der öffentliche Schlüssel ist eine Funktion der geheimen Anteile.

  • Signieren: Dieser Schritt beinhaltet eine Funktion zur Signaturgenerierung. Die Eingabe jeder Partei ist ihr geheimer Anteil, der als Ausgabe des vorherigen Schritts (verteilte Schlüsselgenerierung) erstellt wurde. Es gibt auch eine allen bekannte öffentliche Eingabe, nämlich die zu signierende Nachricht. Die Ausgabe ist eine digitale Signatur, und die Eigenschaft der Vertraulichkeit stellt sicher, dass während der Berechnung keine geheimen Anteile verloren gingen.

  • Verifizierung: Der Verifizierungsalgorithmus bleibt derselbe wie im klassischen Setting. Um mit Einzelschlüsselsignaturen kompatibel zu sein, sollte jeder, der den öffentlichen Schlüssel kennt, in der Lage sein, die Signaturen zu verifizieren und zu validieren. Genau das tun Blockchain-Validierungsknoten.

Schwellenwert-Signaturschema (TSS) ist der Name, den wir dieser Kombination aus verteilter Schlüsselgenerierung (DKG) und verteilter Signatur eines Schwellenwert-Signaturschemas geben.


Kombination von TSS und Blockchain

Die natürliche Art und Weise, wie TSS in einer Blockchain eingesetzt werden kann, besteht darin, einen Blockchain-Client so zu ändern, dass er mithilfe von TSS Schlüssel und Signaturen generiert. Hier verwenden wir den Begriff Blockchain-Client, um uns auf den Befehlssatz zu beziehen, der von einem vollständigen Knoten ausgeführt wird. In der Praxis ermöglicht uns die TSS-Technologie, alle Befehle im Zusammenhang mit privaten Schlüsseln durch verteilte Berechnungen zu ersetzen.

Um es genauer zu erklären, beschreiben wir zunächst kurz, wie neue Adressen im klassischen Blockchain-Design erstellt werden. Einfach ausgedrückt können wir eine neue Adresse erstellen, indem wir einen privaten Schlüssel generieren und dann den öffentlichen Schlüssel aus dem privaten Schlüssel berechnen. Schließlich wird die Blockchain-Adresse aus dem öffentlichen Schlüssel abgeleitet.

Mit TSS hätten wir nun eine Gruppe von n Parteien, die gemeinsam den öffentlichen Schlüssel berechnen, wobei jede Partei einen geheimen Anteil des privaten Schlüssels besitzt (die einzelnen Anteile werden den anderen Parteien nicht mitgeteilt). Aus dem öffentlichen Schlüssel können wir die Adresse auf die gleiche Weise ableiten wie im herkömmlichen System, wodurch die Blockchain unabhängig davon wird, wie die Adresse generiert wird. Der Vorteil besteht darin, dass der private Schlüssel kein einzelner Ausfallpunkt mehr ist, da jede Partei nur einen Teil davon besitzt.

Dasselbe kann beim Signieren von Transaktionen gemacht werden. In diesem Fall führen wir statt einer einzelnen Partei, die mit ihrem privaten Schlüssel signiert, eine verteilte Signaturgenerierung zwischen mehreren Parteien durch. So kann jede Partei eine gültige Signatur erstellen, solange genügend von ihnen ehrlich handeln. Auch hier sind wir von der lokalen Berechnung (Single Point of Failure) zu einer interaktiven übergegangen.

Es ist wichtig zu erwähnen, dass die verteilte Schlüsselgenerierung auf eine Weise erfolgen kann, die verschiedene Arten von Zugriffsstrukturen ermöglicht: Die allgemeine „t aus n“-Einstellung wird in der Lage sein, bis zu t beliebige Fehler bei Operationen im Zusammenhang mit privaten Schlüsseln zu verkraften, 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 Multisignatur. Um die Unterschiede besser zu verstehen, können wir Multisig als TSS in der Anwendungsschicht der Blockchain betrachten.

Anders ausgedrückt: Sowohl Multisig als auch TSS versuchen im Wesentlichen ähnliche Ziele zu erreichen, aber TSS verwendet Kryptografie außerhalb der Blockchain, während Multisig in der Blockchain stattfindet. Die Blockchain benötigt jedoch eine Möglichkeit, Multisig zu kodieren, was die Privatsphäre gefährden könnte, da die Zugriffsstruktur (Anzahl der Unterzeichner) auf der Blockchain offengelegt wird. Die Kosten einer Multisig-Transaktion sind höher, da die Informationen zu den verschiedenen Unterzeichnern auch auf der Blockchain kommuniziert werden müssen.

Bei TSS werden die Angaben der Unterzeichner in eine regulär aussehende Transaktion integriert, was die Kosten senkt und die Privatsphäre schützt. Andererseits kann Multisig nicht interaktiv sein, was den Aufwand für die Ausführung einer komplexen Kommunikationsschicht zwischen den verschiedenen Unterzeichnern erspart.

Der Hauptunterschied besteht darin, dass Multisig blockchainspezifisch ist und für jede Blockchain neu implementiert werden muss. In manchen Fällen wird es überhaupt nicht unterstützt. TSS hingegen basiert auf reiner Kryptografie, sodass eine Unterstützung immer möglich ist. Einen tollen Artikel mit Abbildungen zu den Unterschieden finden Sie hier.


TSS vs. Shamir-Geheimnisfreigabeschema

Das Shamir Secret Sharing Scheme (SSSS) bietet eine Möglichkeit, den privaten Schlüssel verteilt zu speichern, sodass der private Schlüssel zwar im Ruhezustand ist, aber an mehreren Orten gespeichert wird. Es gibt zwei Unterschiede zwischen SSSS und TSS:

  • Schlüsselgenerierung: In SSSS gibt es eine einzelne Partei namens „Händler“, die für die Generierung der geheimen Anteile des privaten Schlüssels verantwortlich ist. Dies bedeutet, dass der private Schlüssel zum Zeitpunkt der Schlüsselgenerierung an einem einzigen Ort generiert und dann vom Händler an die verschiedenen Orte verteilt wird. In TSS gibt es keinen Händler, da seine Rolle so verteilt ist, dass sich der vollständige private Schlüssel nie an einem einzigen Ort befindet.

  • Signieren: Bei SSSS müssen die Parteien den vollständigen privaten Schlüssel rekonstruieren, um signieren zu können, was wiederum jedes Mal, wenn eine Signatur erforderlich ist, zu einem einzelnen Ausfallpunkt führt. Bei TSS erfolgt das Signieren auf verteilte Weise, ohne dass die geheimen Anteile jemals rekonstruiert werden.

Wie wir sehen können, befindet sich der private Schlüssel in TSS (der die Sicherheit des Systems darstellt) während seiner gesamten Lebensdauer nie an einem einzigen Ort.


Schwellengeldbörsen

Ein Wallet, das auf TSS-Technologie basiert, unterscheidet sich ein wenig von herkömmlichen Wallets für Kryptowährungen. Normalerweise generiert ein herkömmliches Wallet eine Seed-Phrase und verwendet diese, um die Adressen deterministisch abzuleiten. Der Benutzer kann diese hierarchisch deterministische (HD) Struktur später verwenden, um 1) die privaten Schlüssel zu erreichen, die den Wallet-Adressen entsprechen, und Transaktionen mit ihnen zu unterzeichnen und 2) alle Wallet-Schlüssel mithilfe der Seed-Phrase wiederherzustellen.

In einem Threshold-Wallet sind die Dinge komplexer. Obwohl es möglich ist, eine HD-Struktur zu generieren, muss ihre Generierung wie bei einem anderen MPC-Protokoll verteilt berechnet werden. Die Parteien müssen gemeinsam entscheiden, welcher Schlüssel als nächstes verwendet werden soll. Mit anderen Worten: Jede Partei hat ihre eigene Seed-Phrase. Die Seed-Phrasen werden separat generiert und niemals kombiniert, sodass eine Partei allein die privaten Schlüssel nicht aus ihrem Seed ableiten kann.

TSS-basierte Wallets verfügen außerdem über eine nette Sicherheitsfunktion, die die Rotation privater Schlüssel ermöglicht, ohne den entsprechenden öffentlichen Schlüssel und die Blockchain-Adresse zu ändern. Die Rotation privater Schlüssel, auch als proaktives Teilen von Geheimnissen bekannt, ist ein weiteres MPC-Protokoll, das die geheimen Anteile als Eingabe verwendet und einen neuen Satz geheimer Anteile ausgibt. Die alten geheimen Anteile können gelöscht und die neuen auf die gleiche Weise verwendet werden.

Eine solche Struktur fügt der Sicherheit eine Zeitdimension hinzu, was bedeutet, dass ein Angreifer an mehreren Orten gleichzeitig sein muss, um ein Threshold-Wallet anzugreifen. Das Kombinieren geheimer Anteile vor und nach der Rotation gibt dem Angreifer keine zusätzliche Macht, wenn er eine Signatur fälschen möchte.

Ein Nachteil dieser Art von Wallet ist, dass sie aufgrund des Fehlens einer Seed-Phrase nicht mit Single-Key-Wallet-Systemen kompatibel ist. Daher ist es wichtig zu überlegen, welche Parteien die geheimen Anteile halten werden.

Es gibt einige mögliche Architekturen:

  • TSS-Outsourcing: Der Benutzer lässt die Berechnungen von „n“ Servern in seinem Namen durchführen. Dadurch wird die Schlüsselgenerierung, -verwaltung und -signierung effektiv an Dienstanbieter ausgelagert, die nicht Eigentümer der Vermögenswerte sind, aber gegen eine gewisse Vergütung eine Sicherheitsebene bereitstellen.

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

  • Hybrid: TSS wird so ausgeführt, dass einige Teile von externen Dienstanbietern kontrolliert werden und andere auf Geräten im Besitz der Benutzer ausgeführt werden.

Die erste Methode entlastet die Benutzer-Clientseite von der aufwändigen TSS-Berechnung. Andererseits können die Dienstanbieter zusammenarbeiten (wir gehen davon aus, dass nicht genügend von ihnen gleichzeitig angegriffen werden, aber in der Praxis ist das möglich) und die Vermögenswerte des Benutzers stehlen.

Bei der zweiten Methode hat der Benutzer die volle Kontrolle, die Durchführung von Transaktionen wird jedoch umständlich, da mehrere Geräte online sein müssen, um an der TSS-Berechnung teilzunehmen.

Die dritte Option gilt als das Beste aus beiden Welten, da sie dem Benutzer eine einfache und schnelle Möglichkeit bietet, Transaktionen durchzuführen, ohne dass dabei Transaktionen ohne die Autorisierung des Benutzers durchgeführt werden müssen.


TSS und Smart Contracts 

Im Laufe der Jahre haben Forscher viele Verwendungsmöglichkeiten für digitale Signaturen gefunden, und einige davon sind überraschend nicht trivial. Wie bereits erwähnt, ist TSS ein kryptografisches Primitiv, das die Sicherheit erheblich erhöhen kann. Im Zusammenhang mit Blockchains können wir sagen, dass viele Funktionen durch TSS-basierte Kryptografie 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 letztendlich dazu führen, dass teure und riskante On-Chain-Smart-Contract-Operationen durch billigere und zuverlässigere Alternativen ersetzt werden könnten.

Um einige konkrete Beispiele zu nennen: Multi-Hop Locks nutzt Zwei-Parteien-Signaturen auf clevere Weise und kann als Alternative zum Bitcoin Lightning Network mit einem sichereren und privateren Zahlungskanalnetzwerk verwendet werden. ShareLock ist wahrscheinlich die günstigste On-Chain-Mixing-Lösung für Ethereum, basierend auf der Überprüfung einer einzelnen Schwellenwertsignatur.


Risiken

In den letzten Jahren gab es einen deutlichen Anstieg bei TSS-Implementierungen. Da es sich jedoch um eine relativ neue Technologie handelt, gibt es noch einige Einschränkungen und Bedenken. Im Vergleich zur klassischen Public-Key-Kryptographie können TSS-Protokolle sehr komplex sein und müssen noch „kampferprobt“ werden. Normalerweise erfordert TSS im Vergleich zu einfachen digitalen Signaturen zusätzliche, schwächere kryptographische Annahmen. Infolgedessen werden jetzt kryptographische Angriffsvektoren entdeckt, die in herkömmlichen Setups nicht vorhanden waren (siehe diese Präsentation von der Breaking Bitcoin Conference 2019). Sicherheitsingenieure und angewandte Kryptographen können Ihnen dabei helfen, TSS sicher in Ihrem System einzusetzen.

Positiv ist zu vermerken, dass bestehende und neue Implementierungen aufgrund der Zunahme qualitativ hochwertiger Beiträge, Peer-Reviews, Audits und Verbesserungen der algorithmischen Leistung stärker werden.


Abschließende Gedanken

In diesem Artikel haben wir die Grundlagen des Threshold Signature Scheme (TSS) vorgestellt, einem faszinierenden kryptografischen Grundelement, das das Potenzial hat, die Art und Weise, wie wir Blockchain nutzen, erheblich zu verändern.

Da in diesem Artikel nicht auf den Threshold ECDSA eingegangen wurde, der in Binance Chain und Bitcoin verwendet werden kann, können Interessierte die folgende Liste neuerer Artikel zu Rate ziehen. Wenn Sie mit einigen TSS-Implementierungen experimentieren möchten, finden Sie hier einen Code für ein Zweiparteien-Binance-Chain-Wallet oder probieren Sie das ZenGo-Wallet aus, das die Hybridmethode verwendet, um ein nicht verwahrtes Zweiparteien-Binance-Chain-Wallet bereitzustellen.


Weiterführende Literatur:

  • Schnelle, sichere Zwei-Parteien-ECDSA-Signierung

  • Schnelles, sicheres Multiparty-ECDSA mit praktischer verteilter Schlüsselgenerierung und Anwendungen für die Verwahrung von Kryptowährungen

  • Zweiparteien-ECDSA aus Hash Proof Systems und effizienten Instanziierungen

  • Schneller Multiparty-Schwellenwert ECDSA mit schnellem, vertrauenslosem Setup

  • Sicherer Zweiparteienschwellenwert ECDSA aus ECDSA-Annahmen

  • Schwellenwert ECDSA aus ECDSA-Annahmen: Der Mehrparteienfall