Zum Inhalt springen

ECDSA

Aus BitcoinWiki

Elliptic Curve Digital Signature Algorithm

Der Elliptic Curve Digital Signature Algorithm (ECDSA) ist ein Signaturverfahren mit öffentlichem Schlüssel. Der Unterzeichner erzeugt mit einem privaten Schlüssel eine Signatur über einen Nachrichtenhash; der öffentliche Schlüssel ermöglicht ihre Prüfung. ECDSA dient Authentizität und Integrität, nicht Verschlüsselung: Die signierte Nachricht wird nicht verborgen.[1]

Bitcoin nutzt ECDSA mit secp256k1 für viele ältere und SegWit-Ausgänge. Taproot-Ausgänge verwenden stattdessen BIP-340-Schnorr-Signaturen auf derselben Kurve.[2]

Funktionsweise

Eine Kurvendomäne definiert einen Basispunkt G der Ordnung n. Der private Schlüssel ist eine Zahl d, der öffentliche Schlüssel der Punkt Q = dG. Für den Digest z wählt der Unterzeichner ein einmaliges geheimes k, berechnet R = kG, leitet r aus dessen x-Koordinate ab und setzt s = k⁻¹(z + rd) mod n. Die Signatur ist (r,s).

Die Prüfung kontrolliert die Wertebereiche und berechnet aus z, s und Q einen Kurvenpunkt mit der erwarteten x-Koordinate. Sie zeigt die Übereinstimmung von Nachricht und Schlüssel, aber weder den privaten Schlüssel noch die reale Identität des Schlüsselinhabers.[1]

Bei einer 256-Bit-Kurve umfasst der private Schlüssel gewöhnlich 32 Byte. Ein komprimierter secp256k1-Public-Key benötigt 33 Byte, ein unkomprimierter 65 Byte. Die serialisierte Signaturlänge hängt von der Kodierung ab.

Sicherheit des Nonce

Das k darf sich für unterschiedliche Nachrichten desselben Schlüssels nie wiederholen und nicht vorhersagbar sein. Wiederverwendung oder Verzerrung kann den privaten Schlüssel offenlegen. Bekannte Fälle waren der PlayStation-3-Signierschlüssel und einige Android-Bitcoin-Wallets nach einem Zufallszahlfehler 2013.

RFC 6979 definiert deterministisches ECDSA: k wird aus privatem Schlüssel und Digest abgeleitet und bleibt mit normalen Prüfern kompatibel.[3] Dies schützt nicht vor offengelegten Schlüsseln, Seitenkanälen, fehlerhafter Kurvenarithmetik oder kompromittierten Geräten. Konstante Laufzeit, Public-Key-Prüfung und bewährte Bibliotheken bleiben erforderlich.

Verwendung in Bitcoin

Bitcoin verwendet Secp256k1. Traditionelle Signaturen kodieren die beiden ECDSA-Zahlen nach DER und hängen einen Bitcoin-Sighash-Typ an. BIP 66 machte strikte DER-Kodierung zur Konsensregel. Eine Low-S-Form reduziert Malleabilität, weil neben (r,s) auch (r,n-s) gültig wäre.[4]

Signiert wird ein transaktionsabhängiger Digest. Der Sighash-Modus bestimmt, welche Ein- und Ausgänge abgedeckt sind. Signiergeräte müssen daher die tatsächlich autorisierten Zahlungsdaten anzeigen.

Taproot entfernte ECDSA nicht: ältere Ausgangstypen verwenden es weiter, während Taproot 64-Byte-Schnorr-Signaturen nach BIP 340 prüft.[5]

Quantencomputerforschung

Ein ausreichend großer fehlertoleranter Quantencomputer könnte mit Shors Algorithmus einen privaten Schlüssel aus einem öffentlichen Schlüssel gewinnen. Das ist eine künftige Bedrohung, keine Fähigkeit heutiger Hardware.

Ein Preprint vom September 2026 optimierte reversible secp256k1-Punktadditionen. Zum Stichtag nutzte der beste Benchmark 1.151 logische Qubits und rund 1,30 Millionen durchschnittlich ausgeführte Toffoli-Gatter pro geprüfter Addition. Der Breite-mal-Gatter-Wert lag mehr als 50 Prozent unter einem veröffentlichten Vergleich. Die Autoren betonen abweichende Zählweisen und dass ihr Modell keine vollständige Shor-Erfolgsabschätzung ist. Fehlerkorrektur, viele Aufrufe, Laufzeit und Hardware kommen hinzu.[6][7]

Die Arbeit verbessert eine Schätzung; sie zeigt keinen heutigen Angriff. Bereits veröffentlichte Public Keys wären bei geeigneter Hardware direkte Ziele. Dieser langfristige Protokollbedarf ist von heutigem Schlüsseldiebstahl und Phishing zu trennen.

Siehe auch

Einzelnachweise