Autor: Omer Shlomovits, ZenGo.

Threshold Signing Scheme (TSS) ist ein kryptografisches Grundschema zum Generieren und Signieren verteilter Schlüssel. Die Verwendung von TSS in Blockchain-Berechnungen ist ein neues Paradigma, das insbesondere im Hinblick auf die Sicherheit viele verschiedene Vorteile bieten kann. Das heißt, TSS kann Einfluss auf die Gestaltung von Schlüsselverwaltungssystemen (z. B. digitalen Geldbörsen) nehmen und eine Vorreiterrolle bei der lokalen Unterstützung in DeFi-Anwendungsfällen übernehmen. Allerdings handelt es sich bei diesem TSS noch um eine neue Technologie, daher müssen bei der Verwendung auch die Risiken und Einschränkungen berücksichtigt werden.

In diesem Artikel besprechen wir, was TSS ist, welche potenziellen Vorteile es für den Blockchain-Bereich mit sich bringen kann, wie es in der Client-Blockchain implementiert werden kann, wie es im Vergleich zu Shamir Secret Sharing und Multisig abschneidet und welche verschiedenen Möglichkeiten es gibt, TSS zu verwenden in der verteilten Schlüsselverwaltung, und schließlich diskutieren wir die potenziellen Risiken und Einschränkungen.

Rolle der Verschlüsselung

Um TSS zu verstehen, benötigen wir zunächst einige Grundkenntnisse über Kryptographie. Seit den 1970er Jahren nutzen Internetsysteme zunehmend asymmetrische Verschlüsselungen (wie TLS und PGP), die auch als Public-Key-Kryptographie (PKC) bezeichnet werden. PKC verwendet zwei Schlüssel: einen öffentlichen und einen privaten. Während der öffentliche Schlüssel nicht geheim ist und von jedem geteilt und verwendet werden kann, handelt es sich beim privaten Schlüssel um eine vertrauliche Information, die die Sicherheit des Systems darstellt und nicht weitergegeben werden kann.

Verschlüsselung und digitale Signaturen sind die häufigsten Anwendungen von PKC. Sowohl Verschlüsselungs- als auch digitale Signaturschemata basieren auf Sätzen von drei Algorithmen. Der erste ist die Generierung des privaten und öffentlichen Schlüsselpaars, der zweite die Generierung von Chiffretext/Signatur und der dritte ist der Entschlüsselungs-/Verifizierungsprozess. Zu digitalen Signaturen: Der Signaturalgorithmus erfordert, dass ein privater Schlüssel, der nur seinem Besitzer bekannt ist, eine eindeutige Signatur erstellt. Einer bestimmten Nachricht wird eine Signatur beigefügt, sodass jeder, der den öffentlichen Schlüssel besitzt, deren Authentizität und Authentizität überprüfen kann.


Blockchain

Es besteht kein Zweifel, dass Blockchain eine äußerst leistungsstarke Technologie ist. Es bietet eine Konsensschicht, die Ereignisse organisiert und aufzeichnet. Eine solche Infrastruktur gibt uns Nutzern und sogar Regierungen die potenzielle Macht, dezentrale Volkswirtschaften aufzubauen. Überraschenderweise kann die zum Betrieb einer einfachen Blockchain erforderliche Verschlüsselung nur auf digitalen Signaturen basieren. In der Blockchain stellen private Schlüssel Identitäten dar, während Signaturen eine öffentliche Aussage oder Behauptung einer Identität sind. Die Blockchain fordert und überprüft Daten nach einem Regelwerk, das unter anderem sicherstellt, dass Signaturen fälschungssicher und gültig sind.

Die moderne Kryptografie-Toolbox enthält im Gegensatz zur eher klassischen Kryptografie, die in der Blockchain verwendet wird, einige coole Zaubertricks. Einige Beispiele für diese Tricks sind wissensfreie Beweise, homomorphe Kryptographie und Mehrparteienberechnung. Wie wir im letzten Jahrzehnt gesehen haben, hat die Blockchain-Forschung die angewandte Kryptographie mit überraschenden jüngsten Wissensfortschritten in allen oben genannten Bereichen und noch viel mehr dramatisch vorangetrieben. 

In diesem Artikel konzentrieren wir uns auf einen der Durchbrüche, nämlich effektive sichere Schwellenwertsignaturen (TSS).


MPC und das Schwellenwert-Signaturschema (TSS)

Multiparty Computing (MPC) ist ein Zweig der Kryptographie, der vor fast 40 Jahren mit der bahnbrechenden Arbeit von Andrew C. Yao begann. In MPC versucht eine Gruppe von Parteien, die einander nicht vertrauen, eine Funktion über ihre Eingaben zu berechnen und diese Eingaben gleichzeitig privat zu halten. 

Nehmen wir zum Beispiel an, dass mehrere Mitarbeiter eines Unternehmens wissen möchten, wer mehr bezahlt, ohne sich gegenseitig ihr tatsächliches Gehalt preiszugeben. Hier ist die besondere Eingabe bei Gehältern und Peinlichkeiten der Name des Mitarbeiters mit dem höchsten Gehalt. Wenn diese Berechnung mit MPC durchgeführt wird, führt dies dazu, dass bei der Berechnung nicht einmal ein einziges Gehalt verloren geht. 

Die beiden Hauptmerkmale von MPC sind Authentizität und Datenschutz:

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

  • Datenschutz: Vertrauliche Eingabedaten einer Partei werden nicht an andere Parteien weitergegeben.

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

  • Schlüsselgenerierung: Der erste Schritt ist auch der komplizierteste. Wir müssen einen Schlüssel erstellen, der öffentlich ist und zur Überprüfung zukünftiger Signaturen verwendet wird. Wir müssen aber auch für jede teilnehmende Partei ein individuelles Geheimnis erstellen, das wir Secret Share nennen. Im Zusammenhang mit Korrektheit und Datenschutz sagen wir, dass die Funktion für alle Parteien denselben öffentlichen Schlüssel und für beide folgenden einen unterschiedlichen geheimen Anteil ausgibt: (1) Datenschutz: Es werden keine Daten über den geheimen Anteil zwischen den beiden Parteien durchgesickert und ( 2) Korrektheit: Der öffentliche Schlüssel ist eine Funktion der geheimen Anteile.

  • Signatur: Dieser Schritt beinhaltet die Funktion zum Erstellen einer Signatur. Der Beitrag jeder Partei ist ihr geheimer Anteil, der als Ausgabe des vorherigen Schritts (verteilte Schlüsselgenerierung) generiert wird. Es gibt auch eine allgemeine, jedem bekannte Eingabe, nämlich die zu signierende Nachricht. Die Ausgabe erfolgt in Form einer digitalen Signatur und die Datenschutzfunktion stellt sicher, dass während der Berechnung keine geheimen Anteile preisgegeben werden.

  • Verifizierung: Der Verifizierungsalgorithmus bleibt derselbe wie in den klassischen Einstellungen. Um mit individuellen Schlüsselsignaturen kompatibel zu sein, muss jeder, der den öffentlichen Schlüssel kennt, in der Lage sein, die Signaturen zu überprüfen und zu authentifizieren. Genau das tun Blockchain-Verifizierungsknoten.

Schwellenwertsignaturschema (TSS) ist der Name, den wir der Kombination aus verteilter Schlüsselgenerierung (DKG) und Signaturverteilung über ein Schwellenwertsignaturschema geben.


Kombination von TSS und Blockchain

Die natürliche Art und Weise, wie TSS in einer Blockchain verwendet werden kann, besteht darin, den Blockchain-Client so zu ändern, dass er Schlüssel und Signaturen mithilfe von TSS generiert. Hier verwenden wir den Begriff „Client“, um eine Reihe von Befehlen zu bezeichnen, die von einem vollständigen Knoten ausgeführt werden. In der praktischen Anwendung ermöglicht uns die TSS-Technologie, alle Befehle im Zusammenhang mit dem privaten Schlüssel durch verteilte Berechnungen zu ersetzen.

Um dies genauer zu erklären, beginnen wir mit einer kurzen Beschreibung, wie man neue Adressen auf einer klassischen Blockchain-Struktur erstellt.  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. Abschließend wird aus dem öffentlichen Schlüssel die Blockchain-Adresse abgeleitet.

Mithilfe von TSS wird nun eine Gruppe von Parteien gemeinsam den öffentlichen Schlüssel berechnen lassen. Jede teilnehmende Partei besitzt einen geheimen Anteil des privaten Schlüssels (die einzelnen Anteile werden den anderen teilnehmenden Parteien nicht offenbart). Mithilfe des öffentlichen Schlüssels können wir die Adresse auf die gleiche Weise wie im herkömmlichen System ableiten, wodurch die Blockchain in der Art und Weise, wie Adressen generiert werden, einigermaßen neutral wird. Der Vorteil hierbei ist, dass der private Schlüssel kein Single Point of Failure mehr ist, da jede Partei einen Teil davon behält. 

Das Gleiche kann beim Signieren von Transaktionen erfolgen. In diesem Fall führen wir, anstatt dass eine Partei mit ihrem privaten Schlüssel signiert, einen verteilten Signaturgenerator zwischen mehreren Parteien aus. Sogar jede Partei kann eine gültige Unterschrift vorlegen, solange genügend Teilnehmer ehrlich handeln. Wir sind wieder von einem lokalen Konto (Single Point of Failure) zu einem interaktiven Konto übergegangen.

Es ist wichtig zu beachten, dass die Generierung verteilter Schlüssel auf eine Weise erfolgen kann, die verschiedene Arten des Zugriffs auf sie ermöglicht: Eine generische „t aus n“-Einstellung kann bis zu t willkürlichen Fehlern bei damit verbundenen Vorgängen standhalten privaten Schlüssel ohne Beeinträchtigung der Sicherheit.


TSS vs. Multisig

Einige Blockchain-Netzwerke bieten TSS-Funktionalität als integrierten oder programmierbaren Teil der Software an. Wir nennen diese Funktion Multisig oder Multisignatur. Um die Unterschiede besser zu verstehen, können wir Multisig als TSS in der Implementierungsphase der Blockchain betrachten.

Mit anderen Worten: Sowohl Multisig als auch TSS versuchen grundsätzlich, ähnliche Ziele zu erreichen, aber TSS verwendet Off-Chain-Verschlüsselung, während Multisig On-Chain-Verschlüsselung verwendet. Allerdings erfordert die Blockchain eine Methode zur Multisig-Verschlüsselung, die den Datenschutz gefährden kann, da die Zugriffsstruktur (Anzahl der Unterzeichner) auf der Blockchain offengelegt wird. Die Kosten einer Multisig-Transaktion sind höher, da die Informationen auf den beiden verschiedenen Standorten auch auf der Blockchain kommuniziert werden müssen.

In TSS werden die Daten der Unterzeichner in einer regulären Transaktion zusammengefasst, was die Kosten senkt und die Privatsphäre schützt. Multisig hingegen kann nicht interaktiv sein, wodurch das Problem der Ausführung einer komplexen Kommunikationsschicht zwischen verschiedenen Standorten vermieden wird.

Der Hauptunterschied besteht darin, dass Blockchain-Multisig auf jeder Blockchain neu implementiert werden muss und in einigen Fällen überhaupt nicht unterstützt wird. Im Gegensatz dazu basiert TSS auf reiner Verschlüsselung und ist daher immer unterstützbar. Einen tollen Artikel über die Unterschiede finden Sie hier.


TSS vs. Shamir-Geheimnisfreigabeschema

Das Shamir Secret Sharing Scheme (SSSS) bietet eine verteilte Möglichkeit, den privaten Schlüssel zu speichern. Während der private Schlüssel gespeichert ist, wird er an mehreren Orten gespeichert. Es gibt zwei Unterschiede zwischen SSSS und TSS:

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

  • Signieren: Bei SSSS müssen die Parteien zum Signieren den vollständigen privaten Schlüssel rekonstruieren, was wiederum jedes Mal, wenn eine Signatur erforderlich ist, zu einem Single Point of Failure führt. Bei TSS hingegen erfolgt das Signieren auf verteilte Weise, ohne dass die geheimen Anteile neu erstellt werden.

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


Schwellenwertregler

Eine auf der TSS-Technologie basierende Wallet unterscheidet sich ein wenig von herkömmlichen Kryptowährungs-Wallets. Ein herkömmliches Wallet erstellt normalerweise eine Startphrase und leitet daraus deterministisch Adressen ab. Der Benutzer kann später die deterministische hierarchische Struktur (HD) verwenden, um 1) auf die privaten Schlüssel zuzugreifen, die den Wallet-Adressen entsprechen, und Transaktionen mit ihnen zu signieren. 2) Um alle Wallet-Schlüssel mithilfe der Seed-Phrase wiederherzustellen.

Bei Threshold-Wallets sind die Dinge komplizierter. Obwohl es möglich ist, eine deterministische hierarchische (HD) Architektur zu erstellen, muss ihr Aufbau wie bei einem anderen MPC-Protokoll auf verteilte Weise berechnet werden. Die Beteiligten müssen gemeinsam entscheiden, welcher Schlüssel als nächstes verwendet wird. Mit anderen Worten: Jede Partei wird ihre eigene erste Stellungnahme abgeben. Die Seed-Anweisungen werden separat generiert und nicht kombiniert, sodass keine der Parteien allein die privaten Schlüssel aus der Seed-Anweisung ableiten kann.

TSS-basierte Wallets verfügen außerdem über eine nette Sicherheitsfunktion, die es ermöglicht, den privaten Schlüssel zu rotieren, ohne den entsprechenden öffentlichen Schlüssel und die Blockchain-Adresse zu ändern. Private Key Rotation, auch bekannt als Proactive Secret Sharing, ist ein weiteres MPC-Protokoll, das geheime Anteile als Eingabe verwendet und einen neuen Satz geheimer Anteile ausgibt. Alte geheime Freigaben können gelöscht werden und auch neue Freigaben können auf die gleiche Weise verwendet werden.

Diese Architektur fügt der Sicherheit eine zeitliche Dimension hinzu, was bedeutet, dass sich ein Angreifer gleichzeitig an mehreren Standorten aufhalten müsste, um einen Threshold-Wallet-Hack zu versuchen. Die Kombination geheimer Freigaben vor und nach der Rotation würde einem Angreifer keine zusätzliche Macht verleihen, wenn er eine Signatur fälschen wollte. 

Der Nachteil dieser Art von Wallet ist das Fehlen einer Seed-Phrase, wodurch sie nicht mit Single-Key-Wallet-Systemen kompatibel ist. Daher ist es wichtig zu entscheiden, welche Parteien vertrauliche Informationen weitergeben.

Es gibt einige mögliche Wege, wie zum Beispiel:

  • TSS-Outsourcing: Der Benutzer erlaubt „n“ Servern, die Berechnung in seinem Namen auszuführen. Lagern Sie die Schlüsselerstellung, -verwaltung und -signierung effektiv an Dienstanbieter aus, die nicht Eigentümer der Vermögenswerte sind, aber im Gegenzug für einen gewissen Anreiz eine Sicherheitsebene bieten.

  • Verwendung mehrerer Geräte: Der Benutzer führt TSS auf den Geräten aus, die er besitzt. Beispielsweise wäre eine Partei ein IoT-Gerät, eine andere Partei wäre ein Mobiltelefonbenutzer, eine andere dritte Partei wäre ein Laptop und so weiter.

  • Hybride Systeme: Das TSS wird so betrieben, dass einige Parteien von externen Dienstleistern kontrolliert werden, während andere Parteien auf ihrer eigenen Hardware laufen.

Die erste Methode entlastet die umfangreiche TSS-Berechnung auf der Benutzer-Client-Seite. Andererseits können Dienstanbieter Absprachen treffen (wir gehen davon aus, dass viele von ihnen nicht gleichzeitig angegriffen werden, aber in der Praxis können sie gleichzeitig angegriffen werden) und Benutzerressourcen stehlen.

Die zweite Methode gibt dem Benutzer die vollständige Kontrolle, macht die Durchführung von Transaktionen jedoch umständlich, da mehrere Geräte erforderlich sind, um eine Verbindung zum Internet herzustellen und am TSS-Konto teilzunehmen.

Die dritte Option ist die beste von beiden Optionen, da sie dem Benutzer eine einfache und schnelle Möglichkeit bietet, Transaktionen durchzuführen, ohne die Kompromisse eingehen zu müssen, Transaktionen ohne die Erlaubnis des Benutzers durchzuführen.


TSS und Smart Contracts 

Im Laufe der Jahre haben Forscher viele Einsatzmöglichkeiten für digitale Signaturen entdeckt, einige sind jedoch nicht überraschend. Wie bereits erwähnt, handelt es sich bei TSS um eine primitive Verschlüsselung, die die Sicherheit erheblich erhöhen kann. Im Kontext der Blockchain könnte man sagen, dass viele Funktionen durch TSS-basierte Kryptographie ersetzt werden können. Auf dem TSS-Framework können dezentrale Anwendungen, Layer-2-Lösungen für Skalierung, Atomic Swaps, Shuffling, Vererbung und vieles mehr aufgebaut werden. Dies wird es letztendlich ermöglichen, teure und riskante 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 verwendet werden, um das Lightning-Netzwerk von Bitcoin gegen ein sichereres und privateres Zahlungskanalnetzwerk auszutauschen. ShareLock ist wahrscheinlich die günstigste Ethereum-Blockchain-Verschlüsselungslösung, die auf der Verifizierung mit einer einzigen Schwellenwertsignatur basiert.


Risiken

In den letzten zwei Jahren gab es einen deutlichen Anstieg der TSS-Anträge. Aber wie jede relativ neue Technologie weist sie immer noch einige Einschränkungen und Bedenken auf. Im Vergleich zur herkömmlichen Public-Key-Kryptografie können TSS-Protokolle sehr komplex sein und wurden noch nicht „in der Praxis getestet“. TSS erfordert im Vergleich zu einfachen digitalen Signaturen in der Regel zusätzliche, schwächere kryptografische Annahmen. Dadurch werden nun kryptografische Angriffsvektoren entdeckt, die es in herkömmlichen Umgebungen zuvor nicht gab (siehe diese Präsentation von der Breaking Bitcoin Conference 2019). Sicherheitsingenieure und angewandte Kryptografen können Ihnen bei der sicheren Implementierung von TSS in Ihr System helfen.

Positiv zu vermerken ist, dass bestehende und neue Anwendungen aufgrund höherer Qualitätsbeiträge, Peer-Reviews, Gegenprüfungen und Verbesserungen der Rechenleistung mithilfe von Algorithmen immer stärker werden.


Abschließende Gedanken

In diesem Artikel stellen wir die Grundlagen des Threshold Signature Scheme (TSS) vor, einem erstaunlichen Kryptographieprimitiv, das das Potenzial hat, die Art und Weise, wie Blockchain verwendet wird, dramatisch zu verändern.

Da in diesem Artikel nicht auf den Threshold ECDSA eingegangen wurde, der auf Binance Chain und Bitcoin verwendet werden kann, können Interessierte die Artikel in der folgenden Liste lesen. Wenn Sie außerdem einige TSS-Implementierungen ausprobieren möchten, finden Sie hier Code für ein 2-Parteien-Binance-Chain-Wallet oder probieren Sie das ZenGo-Wallet aus, das die Hybridmethode zur Bereitstellung eines 2-Parteien-Binance-Chain-Wallets verwendet.


Ausführliche Lektüre:

  • 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