Zum Inhalt springen
buybitcoinsmart

Glossar / Entwicklerreferenz

SSL-Signatur

Was ist die SSL-Signatur?
Die SSL-Signatur ist der Name, den BIP70 den Bytes gab, die eine PaymentRequest mit dem Schlüssel des Zertifikats eines Webservers signieren, und die Bezeichnung war bereits eine Fehlbenennung, als sie geschrieben wurde.

Spezifiziert im BIP-70.

An einer SSL-Signatur ist kein SSL-Protokoll beteiligt. Die Bytes sind eine gewöhnliche X.509-Signatur über eine serialisierte Nachricht, erstellt mit dem privaten Schlüssel eines TLS-Serverzertifikats, und das Protokoll SSL 3,0 wurde im Juni 2015 durch RFC 7568 förmlich verboten. Wer alte Bitcoin-Dokumentation liest, sollte den Ausdruck als „Zertifikatssignatur“ verstehen und weiterlesen.

Wie sie funktioniert

Status: Die SSL-Signatur starb zusammen mit BIP70, dem Protokoll, das sie definierte. Bitcoin Core führte BIP70 von März 2014 bis zur Version 0.20.0 mit, die es entfernte, und heute erzeugt oder prüft keine gepflegte Software eine dieser Signaturen. Der Ausdruck überlebt in der Entwicklerreferenz von bitcoin.org, wo die meisten ihn finden.

Der Algorithmus wurde von einem benachbarten Feld gewählt und nicht von der Signatur selbst angekündigt. Eine Zahlungsanforderung gab pki_type als none, x509+sha256 oder x509+sha1 an. Dieser Wert nannte das Zertifikatsformat und die Hashfunktion, während der Signaturalgorithmus von dem Schlüssel kam, den das Zertifikat des Händlers zufällig trug, in der Praxis RSA. Ein Prüfer baute die genauen Bytes, die der Händler signiert hatte, neu auf, berechnete ihren Hashwert mit der angegebenen Hashfunktion und verglich das Ergebnis mit dem öffentlichen Schlüssel im ersten Zertifikat der beigefügten Kette.

Zwei der drei Optionen alterten schlecht. Die Einstellung x509+sha1 war schon schwach, bevor BIP70 überhaupt veröffentlicht wurde, da NIST SHA-1 nach dem 31. Dezember 2013 für die Erzeugung digitaler Signaturen nicht mehr zuließ. Bis Januar 2020 wiesen Forscher eine Kollision mit gewähltem Präfix gegen SHA-1 für rund 45.000 $ gemieteter GPU-Zeit nach, genau der Angriff, mit dem ein signiertes Dokument gegen ein anderes getauscht werden kann. Seitdem hat NIST den 31. Dezember 2030 als den Zeitpunkt festgelegt, ab dem SHA-1 ganz aus seinen zugelassenen Algorithmen ausscheidet.

Der tiefere Punkt ist, dass diese Signatur und eine Bitcoin-Signatur unterschiedliche Fragen beantworten. Eine Signatur innerhalb einer Bitcoin-Transaktion wird von jedem Node nach den Konsensregeln geprüft, über die Kurve secp256k1, mit ECDSA oder, seit Taproot im Block 709.632 am 14. November 2021 aktiviert wurde, mit Schnorr nach BIP340. Eine SSL-Signatur wurde von einer einzigen Wallet gegen einen von einem Anbieter gepflegten Zertifikatsspeicher geprüft. Die eine autorisiert die Bewegung von Geld und kann von niemandem überstimmt werden. Die andere war eine Aussage darüber, wer danach fragte.

Wo sie auftaucht

Zertifikatssignaturen verschwanden nicht, nur der Feldname aus BIP70 verschwand. Ihr Browser sieht weiterhin, wie ein Server während des TLS-Handshakes den Besitz seines Zertifikatsschlüssels nachweist, und das ist die ehrliche Version dessen, was BIP70 sich ausleihen wollte.

Die Version, die zählt, wenn Sie Bitcoin halten, ist die Codesignatur. Wallet-Software und Firmware von Hardware-Wallets werden mit Schlüsseln signiert, die der Hersteller verwaltet, und diese Signatur vor der Installation zu prüfen, ist der Schritt, der einen manipulierten Download erkennt. Geräte von Trezor und Ledger prüfen Firmware-Signaturen auf dem Gerät selbst und lehnen Builds, die sie nicht authentifizieren können, ab oder kennzeichnen sie deutlich. Das ist eine Signatur, die echte Arbeit leistet, anders als das BIP70-Feld, weil sie die Schlüssel schützt, die Ihre Bitcoin verwahren, und nicht den Namen auf einer Bezahlseite.

SSL-Signatur vs. digitale Signatur

Eine SSL-Signatur autorisierte nichts auf der Blockchain. Eine digitale Signatur in einer Bitcoin-Transaktion schaltet einen bestimmten Output frei und wird von Tausenden Nodes unabhängig validiert; das BIP70-Feld wurde von einem einzigen Client-Programm gegen eine Liste von Zertifizierungsstellen validiert. Die Folgen eines Schlüsselverlusts unterscheiden sich ebenso deutlich. Ein kompromittierter Zertifikatsschlüssel wird noch am selben Nachmittag gesperrt und neu ausgestellt. Ein kompromittierter Bitcoin-Schlüssel bedeutet, dass die Bitcoin bereits weg sind.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Ist eine SSL-Signatur dasselbe wie eine Bitcoin-Signatur?

Nein. Eine Bitcoin-Signatur wird über die Kurve secp256k1 erstellt und von jedem Node nach den Konsensregeln geprüft, bevor Bitcoin bewegt werden. Eine SSL-Signatur war eine X.509-Signatur über eine Zahlungsnachricht, die eine einzige Wallet gegen eine Liste von Zertifizierungsstellen prüfte.

Prüft noch irgendeine Wallet SSL-Signaturen?

Keine gepflegte. Bitcoin Core entfernte BIP70 in Version 0.20.0, und der Rest des Ökosystems folgte, sodass nichts, was Sie heute installieren, eine Zahlungsanforderung auswertet oder die Signatur darauf prüft.

Verwandte Begriffe

Mehr zum Thema Entwicklerreferenz

Diese Seite auf Englisch lesen