Zum Inhalt springen
buybitcoinsmart

Glossar / Transaktionen und Gebühren

Digitale Signatur

Auch bekannt als Signatur, ECDSA-Signatur.

Was ist eine digitale Signatur?
Eine digitale Signatur ist der Beweis, mit einem privaten Schlüssel erzeugt, dass wer eine Bitcoin-Transaktion autorisierte, den Schlüssel kontrollierte, an den die Coins dieser Transaktion gebunden waren, und dass die Details nicht verändert wurden.

Bitcoin ist nicht mehr nur ECDSA. Coins auf Adressen, die mit 1, 3 oder bc1q beginnen, werden mit ECDSA-Signaturen von 71 oder 72 Bytes entsperrt; Coins auf bc1p-Adressen verwenden 64-Byte-Schnorr-Signaturen, die seit November 2021 aktiv sind. In beiden Fällen beweist die Signatur die Kontrolle über einen Schlüssel und niemals, wer die Person ist.

Wie sie funktioniert

Für eine Signatur braucht es drei Zutaten: einen privaten Schlüssel, eine einmalig verwendete Zufallszahl namens Nonce und einen Hash der Transaktion, zugeschnitten nach dem für diesen Input gewählten Flag.

Das Ergebnis ist ein Zahlenpaar, berechnet auf secp256k1, der elliptischen Kurve, die Bitcoin seit seiner ersten Version verwendet. Die Verifikation führt dieselbe Arithmetik mit dem öffentlichen Schlüssel rückwärts aus, und ein Node erledigt das im Skript-Opcode OP_CHECKSIG. In keiner Phase wird etwas verschlüsselt, und die Signatur verrät nichts über den privaten Schlüssel dahinter.

Die beiden verwendeten Verfahren verpacken dieses Paar unterschiedlich. Eine ECDSA-Signatur steckt in DER, weshalb sie 71 oder 72 Bytes statt einer festen Länge belegt, und das letzte Byte gehört gar nicht zur Signatur: Es ist das Flag, das angibt, welche Teile der Transaktion abgedeckt sind. Eine Schnorr-Signatur nach BIP340 umfasst feste 64 Bytes ohne Verpackung, und das Flag-Byte entfällt ganz, wenn der Standardfall gilt, sodass 65 Bytes nur erscheinen, wenn ein Unterzeichner etwas Ungewöhnliches will.

Die Nonce ist der Teil, der schiefgeht. Wird dieselbe zweimal mit demselben Schlüssel verwendet, fällt der private Schlüssel mit Schulalgebra heraus, und das ist keine theoretische Sorge: Am 11. August 2013 veröffentlichte bitcoin.org eine Warnung zu einem Android-Fehler, durch den Wallet-Apps auf betroffenen Smartphones wiederkehrende Werte erzeugten, und infolgedessen wurden Coins gestohlen. Wallets leiten die Nonce heute deterministisch aus dem Schlüssel und der Nachricht ab, nach RFC 6979 für ECDSA und einer entsprechenden Regel in BIP340.

Wo sie auftritt

Jede Zahlung, die Sie vornehmen, enthält mindestens eine. In einem Block-Explorer ist sie die lange Hexadezimalzeichenfolge im Witness eines SegWit-Inputs oder im Entsperrungsskript eines Legacy-Inputs, und das abschließende 01 der ECDSA-Signaturen ist das Flag, nicht Teil der Mathematik.

Signaturen funktionieren auch außerhalb von Transaktionen. Eine einfache Nachricht mit dem Schlüssel hinter einer Adresse zu signieren beweist, dass Sie über diese Adresse verfügen, ohne einen Satoshi zu bewegen; so prüfen Börsen ein Auszahlungsziel, so werden Reservenachweis-Bestätigungen zusammengestellt, und so zeigt ein Verkäufer auf einem Peer-to-Peer-Marktplatz, dass eine Adresse wirklich ihm gehört. Das ursprüngliche Format funktionierte nur für Adressen, die mit 1 beginnen; BIP322 verallgemeinert die Nachrichtensignatur auf jeden heute verwendeten Adresstyp.

Diese Unterscheidung zählt, wann immer jemand Sie bittet, etwas zu signieren. Eine signierte Nachricht kann keine Coins bewegen. Eine Signatur über eine Transaktion kann alle bewegen, und die einzige verlässliche Methode zu erkennen, um welche der beiden gebeten wird, ist der Blick auf den Bildschirm Ihrer Hardware-Wallet statt auf die Website.

Digitale Signatur vs. Signatur-Hash

Der Signatur-Hash ist die Eingabe; die Signatur ist die Ausgabe. Ihre Wallet bildet zuerst einen Hash über eine bestimmte Teilmenge der Transaktion und signiert dann diesen Hash, sodass die Signatur überhaupt nichts über die Teile aussagt, die der Hash ausgelassen hat. Das ist keine Spitzfindigkeit. Es ist der ganze Grund für die Existenz der Sighash-Flags, und es erklärt, wie zwei Signaturen einer Transaktion völlig unterschiedliche Dinge schützen können.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Beweist eine Bitcoin-Signatur, wer jemand ist?

Nein. Sie beweist, dass, wer sie erzeugte, in diesem Moment einen bestimmten privaten Schlüssel besaß. Schlüssel werden weitergegeben, gestohlen und vererbt, daher ist eine gültige Signatur ein Beleg über einen Schlüssel und niemals über eine Person.

Ist es sicher, eine Nachricht zu signieren, die mir jemand schickt?

Eine einfache Textnachricht zu signieren kann Ihre Coins nicht bewegen, aber eine Transaktion zu signieren kann alle bewegen. Bestätigen Sie auf dem Bildschirm einer Hardware-Wallet niemals etwas, das Beträge oder Adressen zeigt, wenn man Ihnen sagte, Sie signierten nur eine Nachricht.

Verwendet Bitcoin noch ECDSA?

Ja, für jede Adresse, die mit 1, 3 oder bc1q beginnt, und das ist der Großteil der im Umlauf befindlichen Coins. Taproot-Adressen, die mit bc1p beginnen, verwenden stattdessen Schnorr-Signaturen, sodass beide Verfahren nebeneinander laufen und viele Wallets beide erzeugen.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Transaktionen und Gebühren

Diese Seite auf Englisch lesen