112 / 736BLIND

Blind Signature

Blind signieren: eine Nachricht bestätigen, ohne ihren Inhalt zu sehen

Stell dir einen Gutschein vor, den sein Aussteller bestätigen muss, ohne dabei dessen eindeutige Nummer zu notieren. Später erkennt er, dass der Gutschein echt ist, kann ihn aber anhand der Signatur nicht der Person zuordnen, die ihn abgeholt hat. Eine Blind Signature löst diesen scheinbaren Widerspruch. Sie gehört zu den Grundideen elektronischen Bargelds: die Gültigkeit des Geldes prüfen, ohne allein dadurch sämtliche Einkäufe seines Besitzers zu erfassen.

Eine Blind Signature ist ein kryptografisches Verfahren: Der Anfragende verbirgt eine Nachricht vor dem Unterzeichner, lässt ihre verborgene Form signieren und entfernt anschließend die Verdeckung. Übrig bleibt eine verwendbare Signatur der ursprünglichen Nachricht. David Chaum nutzte diese Idee für elektronisches Bargeld. Bei einem korrekten Protokoll kann der Unterzeichner anhand des Signaturvorgangs und eines späteren Tokens nicht feststellen, welche Ausgabe dazugehört. Andere Spuren wie Zeitpunkt, Betrag oder Netzwerkadresse verschwinden dadurch nicht automatisch.

Bei einer gewöhnlichen Bestätigung kann der Aussteller Gutscheinnummer und Empfänger gemeinsam notieren. Gibt ein Geschäft den Gutschein zurück, lassen sich die Aufzeichnungen verbinden. Chaum veranschaulichte blindes Signieren mit einem Umschlag mit Durchschlagpapier: Ein Stempel außen überträgt sich auf den Zettel innen, dessen Nummer der Aussteller nicht sieht. Nach dem Herausnehmen trägt der Zettel eine gültige Bestätigung. Das ist ein Gedankenbild, keine sichere Anleitung mit Papier und Stempel. Das eigentliche Protokoll verwendet Zahlen und Mathematik, um diese Trennung zwischen Computern zu erreichen. [7] [1]

Anna möchte einen digitalen Gutschein über 100 sats. Sats sind kleine Einheiten von Bitcoin. Ihre Wallet, also die App zum Verwalten und Bezahlen mit diesen Gutscheinen, erzeugt einen unvorhersehbaren geheimen Wert, der den Gutschein unterscheidbar macht, und verdeckt ihn mathematisch mit einem weiteren Zufallswert. Diese Umwandlung heißt Blinding. Der Aussteller erhält die verdeckte Nachricht, nicht das ursprüngliche Geheimnis. Die Wallet behält die Angaben, mit denen sie die Verdeckung später entfernt. Blinding ist mehr als das Umbenennen einer Datei oder das Entfernen eines Namens: Es muss klar definierte kryptografische Eigenschaften erfüllen. Zur Veranschaulichung verwenden wir einen einzigen Gutschein; eine echte Wallet kann den Betrag aus mehreren Gutscheinen verschiedener Werte zusammensetzen. [8] [2]

Blind signieren bedeutet nicht, jedem alles kostenlos zu unterschreiben. Der Aussteller kann zuerst Annas Zahlung prüfen oder den entsprechenden Kontostand belasten. Er kennt den gewünschten Wert von 100 sats, braucht aber die geheime Gutscheinnummer nicht zu kennen. Ein Signaturschlüssel ist ein geheimer Zahlenwert, mit dem die Software des Herausgebers Signaturen erstellt. Der Gutscheinwert kann an einen eigenen Signaturschlüssel für diese Stückelung gebunden sein; eine geänderte Zahl in einer Datei erzeugt dann keinen höherwertigen Gutschein. Der Aussteller signiert die verdeckte Eingabe und liefert das Ergebnis zurück. Getrennt werden Annas Anspruch auf einen Gutschein und die spätere Erkennung dieses konkreten Gutscheins. [7] [8]

Anna muss das ursprüngliche Geheimnis nun nicht offenlegen. Ihre Wallet entfernt die zufällige Verdeckung selbst aus dem zurückgegebenen Ergebnis. Dieser Schritt heißt Unblinding. Bei einem sauber konstruierten Verfahren bleibt eine gültige Bestätigung der anfangs vorbereiteten Nachricht, ohne dass die Wallet den privaten Signaturschlüssel des Ausstellers erhält. Anna sieht einen neuen Betrag in ihrer Wallet; das mathematische Ein- und Auspacken passiert im Hintergrund. Der digitale Beleg heißt häufig Token. Er ist kein eigener Bitcoin auf der Blockchain, dem gemeinsamen Verzeichnis der Bitcoin-Transaktionen, sondern ein Anspruch gegenüber seinem Aussteller. [2] [8]

Die Prüfung fragt, ob die Bestätigung zur Nachricht und zum richtigen Schlüssel des Ausstellers passt. Bei blinden Signaturen auf Basis des Kryptosystems RSA genügt der öffentliche Schlüssel; andere Konstruktionen können einen zusätzlichen Nachweis oder die Mitwirkung des Ausstellers benötigen. Das beweist weder, dass der Gutschein unverbraucht ist, noch dass niemand ihn kopiert hat oder genügend Reserven zur Auszahlung vorhanden sind. Das sind drei weitere Fragen. Eine echte, bereits entwertete Eintrittskarte gewährt keinen zweiten Eintritt. Ebenso kann ein kryptografisch gültiger Beleg für eine weitere Zahlung unbrauchbar sein. [2] [10]

Anna schickt Peter den Gutschein. Weil er aus Daten besteht, kann sie eine identische Kopie behalten. Eine blinde Signatur löscht keine Datei von ihrem Gerät. In einem üblichen Online-System reicht die Wallet des Empfängers den Token deshalb beim Aussteller ein. Dieser prüft seine Gültigkeit und ob ein Token mit demselben geheimen Wert bereits zum Bezahlen verwendet wurde. Bei Annahme markiert er den alten Token als verbraucht und kann Peter mit demselben blinden Signaturverfahren einen neuen Token ausstellen. Dessen neues Geheimnis kennt Anna nicht. Ein weiterer Zahlungsversuch mit der alten Kopie wird abgelehnt. Dieselben Mittel erneut auszugeben heißt Double Spend; dies zu verhindern ist eine zusätzliche Aufgabe des Zahlungssystems. [9] [8]

Der Schutz muss auch in die andere Richtung wirken: Ein Client darf aus erlaubten Signaturvorgängen keine zusätzlichen gültigen Belege mit neuen Geheimnissen gewinnen. Diese Eigenschaft heißt Unfälschbarkeit. Bei blinden Signaturen betrachtet man insbesondere One-more Unforgeability: Kann ein Angreifer nach einer bestimmten Anzahl von Signaturinteraktionen ein weiteres neues, gültiges Paar aus Nachricht und Signatur vorlegen? Die Kopie desselben Paars ist ein anderes Problem. Korrekte Kryptografie ersetzt zudem nicht die serverseitige Prüfung von Berechtigung, Beträgen und zulässiger Tokenstruktur. Zusammen können diese Kontrollen unberechtigte Wertausgabe verhindern. [2] [3]

Der Aussteller kann wissen, wann Anna Token erhalten hat und welchen Wert sie hatten. Beim Einlösen kennt er möglicherweise Zeitpunkt, Betrag oder Netzwerkadresse des Empfängers. Das sind Metadaten: Begleitinformationen zum Zahlungsbeleg. In einer kleinen Nutzergruppe können ein ungewöhnlicher Betrag oder eine unmittelbar folgende Zahlung Zusammenhänge leichter erkennbar machen. Auch gemeinsame, überprüfte Schlüssel sind wichtig: Ein nur einer Person zugewiesener Schlüssel könnte sie markieren. Blindheit schützt eine bestimmte Verbindung zwischen Signatur und Ausgabe, nicht sämtliche Begleitumstände. Sie repariert auch keine kompromittierte Wallet und erzwingt keine Auszahlung durch den Aussteller. [7] [2]

Chaums Idee bildet eine Grundlage elektronischen Bargelds und ist historisch mit DigiCash verbunden. Heute nutzen Cashu und Fedimint sie im Bitcoin-Umfeld; Verbindungen zum Lightning Network (ein Netzwerk für schnelle Bitcoin-Zahlungen) erleichtern Ein- und Auszahlungen. Ihre Konstruktionen basieren allerdings nicht auf RSA. Das grundlegende Cashu-Verfahren prüft Token mit dem geheimen Schlüssel des Ausstellers, der Mint genannt wird. NUT-12 ergänzt einen Nachweis, mit dem sich die Signatur anhand öffentlicher Daten prüfen lässt, nicht jedoch, ob der Token noch unbenutzt ist. Fedimint verteilt die Verwaltung auf mehrere Betreiber. In beiden Fällen hält der Nutzer einen Anspruch gegen einen Aussteller und hängt von dessen Verwahrung und Verfügbarkeit ab. GNU Taler verbindet beispielsweise Käuferprivatsphäre mit nachvollziehbaren Händlereinnahmen. [5] [6] [10] [4]

Eine vereinfachte Darstellung benötigt wenige Gleichungen. Die Nachricht wird sicher als Zahl m kodiert; n und e bilden den öffentlichen Schlüssel, d bezeichnet den privaten Teil. Der Anfragende wählt ein zufälliges r mit multiplikativem Inversen r⁻¹ modulo n und sendet m′ = m·r^e mod n. Mod n bedeutet Rechnen mit Resten bei Division durch n. Der Unterzeichner liefert s′ = (m′)^d mod n zurück, und der Anfragende erhält s = s′·r⁻¹ mod n. Bei der Prüfung gilt s^e mod n = m. Der Faktor r⁻¹ entfernt die Verdeckung. Das erklärt den Mechanismus, ist aber noch kein sicheres Programm. RFC 9474 beschreibt zusätzlich Nachrichtenvorbereitung, das Signaturschema RSA-PSS mit sicherer Kodierung, Eingabeprüfungen und getrennte Signaturschlüssel. Zufälligkeit und die passende Protokollvariante sind entscheidend. [2] [3]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit David Chaum, Chaumian eCash, DigiCash, Cashu, Fedimint, Bitcoin-Privatsphäre. Auf diesen Eintrag verweisen außerdem DigiCash, Chaumian eCash, Reusable Proofs of Work, Fedimint.

DOC · 001David Chaum — Blind Signatures for Untraceable PaymentsPrimärquelle DOC · 002RFC 9474 — RSA Blind SignaturesSpezifikation DOC · 003IRTF/CFRG — RFC 9474 publication recordSpezifikation DOC · 004GNU Taler — PrinciplesPrimärquelle DOC · 005Cashu protocol specificationsSpezifikation DOC · 006Fedimint — How Federations WorkPrimärquelle DOC · 007David Chaum — Security without IdentificationPrimärquelle DOC · 008Cashu NUT-00 — Notation and modelsSpezifikation DOC · 009Cashu NUT-03 — Swapping tokensSpezifikation DOC · 010Cashu NUT-12 — DLEQ proofsSpezifikation
Überarbeitet: Quellenbasiert · Keine Anlageberatung