You can also read the English version of this article.

Im ersten Teil haben wir die technischen Grundlagen von Silent Payments im Allgemeinen kennengelernt. Nun ist es an der Zeit, einen genaueren Blick auf Silent Payments in Hardware-Wallets wie der BitBox02 zu werfen. 

Wir empfehlen unbedingt, den ersten Teil zuerst zu lesen, da dieser Artikel auf dem dort vermittelten Wissen aufbaut – insbesondere was private und öffentliche Schlüssel sind und wie Silent Payments überhaupt funktionieren. Wie im ersten Teil verwenden wir Kleinbuchstaben für private Schlüssel und Großbuchstaben für öffentliche Schlüssel. Zum Beispiel: A = a × G.

Zur Wiederholung: Wenn Alice ein Silent Payment an Bob sendet, wird der Transaktions-Output an Bob dynamisch von Bobs Silent Payment Adresse und Alices privaten Schlüsseln abgeleitet:

P = B_spend + hash(input_hash × S) × G

Dabei ist S das gemeinsame Geheimnis. Alice kann es mit ihrem privaten Schlüssel a und Bobs öffentlichem Schlüssel B_scan berechnen:

S = a × B_scan

Alice verwendet hierfür B_spend und B_scan aus Bobs Silent Payment Adresse, während a die Summe der privaten Schlüssel ist, die sie in der Transaktion verwendet.

Erstellen vs. Signieren von Transaktionen

Zunächst sollte man verstehen, dass Silent Payments die Rolle der Hardware-Wallets bei der Erstellung von Bitcoin-Transaktionen erheblich verändert.

Bei herkömmlichen Zahlungen erstellt die Host-Wallet (die Software auf deinem Computer oder Smartphone, wie z.B. die BitBoxApp) die Transaktion, während die Hardware-Wallet (wie die BitBox02) diese lediglich signiert und damit bestätigt.

Bei Silent Payments ändert sich das jedoch. Die Hardware-Wallet ist nun nicht nur für das Signieren der Transaktion verantwortlich, sondern auch für die Erstellung eines Teils davon, speziell des Outputs an Bob. Der Grund dafür ist, dass Alices private Schlüssel benötigt werden, um Bobs Transaktions-Output zu generieren, und nur ihre Hardware-Wallet kennt diese privaten Schlüssel.

Diese Änderung bringt neue Risiken mit sich:

  • Speicherfehler: Wenn die Hardware-Wallet einen Fehler oder ein Speicherproblem hat, könnte sie einen fehlerhaften Output ableiten, wodurch die Gelder an eine unbrauchbare Adresse gesendet werden und effektiv verloren gehen.
  • Bösartiges Verhalten: Wenn die Hardware-Wallet kompromittiert sein sollte, könnte sie einen Output erstellen, der die Gelder an einen Angreifer statt an Bob sendet, ohne dass die Host-Wallet dies bemerkt.

Dieses Problem kann elegant gelöst werden, indem die Host-Wallet die Korrektheit des von der Hardware-Wallet generierten Silent Payment Outputs überprüft. Vom Konzept her ist dies ähnlich zum Anti-Klepto-Protokoll, einem weiteren Verfahren, bei dem die Host-Wallet überprüft, ob sich die Hardware-Wallet korrekt verhält.

Diskrete Logarithmus-Gleichheitsbeweise

Wie kann die Host-Wallet überprüfen, ob der von der Hardware-Wallet generierte Silent Payment Output korrekt ist?

Die Host-Wallet kann dies nicht direkt verifizieren, da sie den Ausgang nicht selbst neu berechnen kann. Sie bräuchte entweder Alices privaten Schlüssel a oder Bobs privaten Schlüssel b_scan, um das gemeinsame Geheimnis S berechnen zu können, hat jedoch auf keinen dieser Schlüssel Zugriff.

Stattdessen verwenden wir ein kryptografisches Werkzeug, das es der Host-Wallet ermöglicht, zu überprüfen, ob die Hardware-Wallet den Silent Payment Output korrekt erstellt hat. Dieses Werkzeug wird als DLEQ-Beweis (Discrete Logarithm Equality proof) bezeichnet.

Ein DLEQ-Beweis ermöglicht, zu zeigen, dass derselbe private Schlüssel a verwendet wurde, um zwei verschiedene öffentliche Schlüssel zu generieren, selbst wenn unterschiedliche “Ausgangspunkte” (Generatoren) verwendet wurden.

Der erste öffentliche Schlüssel ist  A1 = a x G, wobei G ein Generator ist. Der zweite öffentliche Schlüssel ist  A2 = a x P2, wobei P_2 ein anderer Generator ist. Der DLEQ-Beweis stellt nun sicher, dass beide öffentlichen Schlüssel aus demselben privaten Schlüssel a abgeleitet wurden, ohne den privaten Schlüssel selbst preiszugeben.

Einfach ausgedrückt beweist man, dass in beiden Fällen dasselbe Geheimnis (der private Schlüssel a) genutzt wurde, obwohl unterschiedliche Generatoren (G und P2) verwendet wurden.

Mathematisch gesehen ist es ein Beweis dafür, dass der diskrete Logarithmus von A1 zur Basis G  derselbe ist wie der diskrete Logarithmus von A2 zur Basis P2.

Verifizierung

Das Protokoll, mit dem die Host-Wallet die Korrektheit des generierten Silent Payment Outputs überprüfen kann, funktioniert wie folgt:

Die Hardware-Wallet generiert den Silent Payment Output und erstellt einen DLEQ-Beweis, dass der private Schlüssel a sowohl…

  • in A = a × G und
  • im gemeinsamen Geheimnis S = a × B_scan.

… der Gleiche ist.

Da sowohl A als auch S aus demselben privaten Schlüssel a abgeleitet sind, stellt der DLEQ-Beweis sicher, dass das gemeinsame Geheimnis S korrekt unter Verwendung von Alices privatem Schlüssel erzeugt wurde.

Die Hardware-Wallet sendet den generierten Silent Payment Output P, zusammen mit dem DLEQ-Beweis und dem gemeinsamen Geheimnis S, an die Host-Wallet.

Die Host-Wallet überprüft den DLEQ-Beweis anhand von drei Dingen:

  • dem öffentlichen Schlüssel A, der die Summe der öffentlichen Schlüssel in den Transaktions-Inputs darstellt, die Alice ausgibt,
  • B_scan aus der Silent-Payment-Adresse und
  • S, das von der Hardware-Wallet bereitgestellt wird.

Wenn der Beweis gültig ist, kann die Host-Wallet sicher sein, dass S korrekt als a × B_scan berechnet wurde, auch ohne den privaten Schlüssel a zu kennen.

Die Host-Wallet kann nun den Silent Payment Output unabhängig überprüfen, indem sie ihn wie folgt selbst berechnet:

P = B_spend + hash(input_hash × S) × G

Dafür nimmt die Host-Wallet B_spend aus der Silent Payment Adresse, berechnet den input_hash unabhängig anhand der Inputs der Transaktion und verwendet das bereitgestellte S, das im vorherigen Schritt bereits als korrekt verifiziert wurde.

Wenn der rekonstruierte Silent Payment Output mit dem der Hardware-Wallet übereinstimmt, kann die Host-Wallet sicher mit der Veröffentlichung der Transaktion fortfahren, da sie weiß, dass der Silent Payment Output korrekt ist und nicht manipuliert wurde.

Zusammenfassung des Ablaufs

  1. Alices Hardware-Wallet erstellt den Silent Payment Output und beweist mit einem DLEQ-Beweis, dass der richtige private Schlüssel verwendet wurde.
  2. Die Host-Wallet überprüft den Beweis, um sicherzustellen, dass das gemeinsame Geheimnis korrekt berechnet wurde.
  3. Die Host-Wallet rekonstruiert den Silent Payment Output mit dem gemeinsamen Geheimnis und den bekannten Werten aus der Transaktion und überprüft ihn somit. Wenn alles stimmt, schließt sie die Transaktion ab.

Dieser Ansatz stellt sicher, dass die Hardware-Wallet weder durch Fehler noch durch böswillige Aktivitäten die Transaktion manipulieren kann.

Rollout

Die Funktion zum sicheren Versenden von Silent Payments, einschließlich der beschriebenen Überprüfung in der BitBoxApp, wird in der nächsten Version 4.45 der BitBoxApp zusammen mit der BitBox02 Firmware-Version 9.21 veröffentlicht.

Die BitBox02 ist die erste Hardware-Wallet, die das Versenden von Silent Payments unterstützt. Für andere Wallets, Börsen, Services usw. ist es schwierig, den Aufwand für die Unterstützung von Silent Payments zu rechtfertigen, wenn die meisten Wallets das Senden an solche Adressen nicht unterstützt. Es ist ein klassisches Henne-Ei-Problem. Wir hoffen, durch diese Initiative die Akzeptanz von Silent Payments fördern zu können.

Shoutout und ein Wort zur Open-Source Zusammenarbeit

Wir haben zum ersten Mal von Silent Payments in einem Vortrag der BIP-Autoren josibake und Ruben Somsen auf der BTC Azores Unconference 2023 erfahren. Das BIP selbst hat eine beeindruckende Anzahl hochwertiger Reviews erhalten.

Als wir die erste Implementierung für die BitBox02 entwarfen, begann ich über die oben erwähnten Risiken nachzudenken und veröffentlichte einen Tweet, in dem ich meine Bedenken äußerte. Josie, Ruben und Andrew Toth wiesen schnell auf DLEQ als potenzielle Lösung hin und verlinkten zu nützlichem Lesematerial über dieses Thema. Das einzige fehlende Puzzlestück war eine gute und geprüfte Implementierung von DLEQ.

Als Andrew Toth begann, einen Entwurf für ein BIP zur Spezifizierung von DLEQ zu schreiben, erinnerte sich der Kryptograf Tim Ruffing daran, dass bereits eine Implementierung in der secp256k1-zkp-Bibliothek existierte, auf die sich die BitBox02 bereits stützt. Diese Implementierung wurde von jesseposner in einem anderen Kontext bereitgestellt, aber glücklicherweise stellte sich heraus, dass sie auch gut für Silent Payments geeignet war.

Mit den Testvektoren aus dem BIP, der oben erwähnten DLEQ-Implementierung und einer nützlichen Referenzimplementierung (die wir nicht direkt verwenden konnten, da Hardware-Wallets andere Anforderungen haben) konnten wir die Unterstützung für diese Funktion reibungslos in die BitBox integrieren.
Es ist immer ein großartiges Gefühl, wenn so viele Menschen freiwillig ihre Zeit und Mühe investieren, um etwas gemeinsam und offen zu entwickeln – und am Ende alles zusammenpasst.

Vielen Dank an Josie, Ruben, Andrew und viele andere, die uns geholfen haben, diese Funktion erfolgreich umzusetzen.



Du hast noch keine BitBox?

Deine Kryptowährungen sicher zu halten muss nicht schwer sein. Die BitBox02 Hardware Wallet speichert die privaten Schlüssel deiner Kryptowährungen offline. So kannst du deine Coins sicher verwalten.

Die BitBox02 gibt es auch als Bitcoin-only-Version mit einer radikal fokussierten Firmware: weniger Code bedeutet weniger Angriffsfläche, was deine Sicherheit weiter verbessert, wenn du nur Bitcoin speicherst.

Hol dir eine in unserem Shop!‌


Die BitBox-Produkte werden von Shift Crypto, einem privaten Unternehmen mit Sitz in Zürich, Schweiz, entwickelt und hergestellt. Unser Team aus Bitcoin-Entwicklern, Krypto-Experten und Sicherheitsingenieuren entwickelt Produkte, die unseren Kunden eine stressfreie Reise vom Anfänger zum Meister der Kryptowährung ermöglichen. Die BitBox02, unsere Hardware-Wallet der zweiten Generation, ermöglicht es den Nutzern, Bitcoin und andere Kryptowährungen zu speichern, zu schützen und mit Leichtigkeit zu handeln – zusammen mit der dazugehörigen Software, der BitBoxApp.