MSTR Cat

Blockchain/Niveau II · Mechanik/2.1 Kryptographie/Lektion 3

Private Schlüssel, öffentliche Schlüssel und secp256k1

Die ganze Zahl, die Kurve und die Einwegtür

MaterialienEin Block-Explorer, der Witness-Daten anzeigtA. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3. Auflage (2023), Kapitel 4

Neugier

  1. Warum dauert es Millisekunden, einen Punkt mit einer Zahl zu multiplizieren, während seine Umkehrung länger dauern würde als das Alter des Universums?
  2. Was unterscheidet secp256k1 strukturell von den NIST-Kurven, die bei den meisten anderen digitalen Signaturen verwendet werden?
  3. Wie kann ein 32-Byte-Wert Vermögenswerte in Milliardenhöhe kontrollieren, ohne preiszugeben, wer sie kontrolliert?

Erkunden

  1. Ein privater Bitcoin-Schlüssel ist eine zufällige ganze Zahl zwischen 1 und n−1, wobei n die Ordnung des Generatorpunkts der Kurve ist. Diese Zahl n beträgt etwa 1,158 × 10^77, eine 78-stellige Zahl, und liegt nicht weit unter der geschätzten Anzahl der Atome im beobachtbaren Universum (etwa 10^80). Der öffentliche Schlüssel wird durch Skalarmultiplikation abgeleitet: Diese ganze Zahl k wird mit dem festen Generatorpunkt G auf der elliptischen Kurve multipliziert. Da G für alle Bitcoin-Nutzer konstant ist, ergibt jedes einzelne k einen eindeutigen, deterministischen Punkt K auf der Kurve.
  2. Die Kurve secp256k1 ist durch die Gleichung y² = x³ + 7 über einem Primkörper mit p = 2^256 − 2^32 − 977 definiert. Dieser spezifische Parametersatz wurde im SEC-2-Standard von Certicom festgelegt. Die Wahl von secp256k1 im Jahr 2009 war ungewöhnlich; es handelt sich um eine Koblitz-Kurve, benannt nach Neal Koblitz, deren besondere Struktur (ein effizient berechenbarer Endomorphismus) eine schnellere Skalarmultiplikation ermöglicht und deren Parameter wenig Spielraum für versteckte Entscheidungen lassen, anders als bei Kurven, die aus unerklärten zufälligen Seeds erzeugt wurden. Satoshi Nakamoto hat die Auswahl nie erklärt.
  3. Die Skalarmultiplikation ist schnell, weil Implementierungen den Double-and-Add-Algorithmus verwenden, der die Binärdarstellung des privaten Schlüssels Bit für Bit verarbeitet. Das Verdoppeln eines Punkts und das Addieren eines weiteren Punkts sind grundlegende Kurvenoperationen, die Computer in Mikrosekunden ausführen. Die Umkehrung dieser Operation, also die Bestimmung von k aus K und G, ist jedoch als Problem des diskreten Logarithmus auf elliptischen Kurven (ECDLP) bekannt. Für das ECDLP auf secp256k1 ist kein effizienter klassischer Algorithmus bekannt; eine Brute-Force-Suche im Schlüsselraum ist rechnerisch nicht durchführbar, was gegenüber klassischen Angriffen eine Sicherheit von etwa 128 Bit bietet.
  4. Öffentliche Schlüssel werden für Speicherung und Übertragung in bestimmten Formaten serialisiert. Ein unkomprimierter öffentlicher Schlüssel ist 65 Bytes lang und beginnt mit dem Präfix 04, gefolgt von der x- und der y-Koordinate. Ein komprimierter öffentlicher Schlüssel ist 33 Bytes lang und verwendet die Präfixe 02 oder 03, um die Parität der y-Koordinate anzugeben, sodass er allein aus der x-Koordinate rekonstruiert werden kann. Taproot, im November 2021 aktiviert, nutzt eine weitere Optimierung namens x-only Keys: Diese sind 32 Bytes lang, verzichten vollständig auf das Präfix und stützen sich auf die Eigenschaften des Schnorr-Signaturverfahrens.
  5. Die Beziehung zwischen privatem und öffentlichem Schlüssel funktioniert strikt nur in eine Richtung. Die Weitergabe eines öffentlichen Schlüssels verrät nichts über den privaten Schlüssel, da das Problem des diskreten Logarithmus für diese Kurvengröße ungelöst bleibt. Umgekehrt ermöglicht der Besitz des privaten Schlüssels die sofortige Berechnung des zugehörigen öffentlichen Schlüssels. Diese Asymmetrie bildet die Grundlage des Eigentumsmodells von Bitcoin: Jeder kann überprüfen, dass eine Signatur mit einem bestimmten privaten Schlüssel erstellt wurde, ohne den Schlüssel selbst jemals zu sehen.
  6. Um diese Mechanismen zu überprüfen, öffnen Sie einen beliebigen Block-Explorer und suchen Sie einen Transaktionsinput. Bei einer Ausgabe von einem nativen SegWit-Output (P2WPKH) enthalten die Witness-Daten die Signatur und den 33 Byte langen komprimierten öffentlichen Schlüssel; bei einer Taproot-Key-Path-Ausgabe befindet sich der 32-Byte-Schlüssel im Output selbst, und die Witness-Daten enthalten nur die Signatur. Vergleichen Sie dies mit der Adresse im vorherigen Output: Während die Adresse ein Hash des öffentlichen Schlüssels ist, erscheint hier beim Ausgeben der rohe Schlüssel. Beachten Sie, dass die Koordinaten des öffentlichen Schlüssels hexadezimale Zeichenketten sind, die Punkte auf der Kurve darstellen, und sich von den 20-Byte- und 32-Byte-Hashes unterscheiden, die in Adressen der SegWit-Version 0 verwendet werden.

Kernfakten

  • Der private Schlüssel ist eine zufällige ganze Zahl zwischen 1 und n−1, wobei n ≈ 1,158 × 10^77 ist.
  • secp256k1 ist durch y² = x³ + 7 über dem Primfeld p = 2^256 − 2^32 − 977 definiert.
  • Die Skalarmultiplikation k·G ergibt den öffentlichen Schlüssel; ihre Umkehrung (ECDLP) ist rechnerisch nicht durchführbar.
  • Unkomprimierte öffentliche Schlüssel haben eine Länge von 65 Bytes (Präfix 04); komprimierte Schlüssel haben eine Länge von 33 Bytes (Präfix 02/03).
  • Taproot verwendet 32-Byte-x-only-Schlüssel, bei denen die y-Koordinate und das Präfix vollständig entfallen.
  • secp256k1 ist eine Koblitz-Kurve mit wenigen unerklärten Parametern, die 2009 von Satoshi ausgewählt wurde.

Übung neun, sechs, drei, eins

9SammelnListen Sie 9 Eigenschaften von secp256k1 auf: ihre Gleichung, die Primzahl des Feldes, die Ordnung des Generatorpunkts, die Schlüsselgrößen (unkomprimiert/komprimiert/x-only), das Sicherheitsniveau, die Herkunft des Standards, den Kurventyp und zwei historische Fakten zu ihrer Einführung.
6GruppierenGruppieren Sie die 9 in 6 Kategorien: Gleichung und Feld, Generator und Ordnung, Schlüsselformate, Sicherheitsniveau, Standardisierungsgeschichte und Verbreitung.
3VerdichtenReduzieren Sie die 6 auf 3 Gründe, warum secp256k1 zum Eigentumsmodell von Bitcoin passt.
1KristallisierenSchreiben Sie einen Satz, der die genaue mathematische Operation benennt, die eine private ganze Zahl in einen öffentlichen Punkt überführt, und nennen Sie das Problem, das ihre Umkehrung verhindert.

Faktcheck

Datumsangaben, Zahlen und Behauptungen wurden mit den unten aufgeführten veröffentlichten Quellen abgeglichen.

In der interaktiven Akademie öffnen →

EN PT ES ZH JA KO RU FR MS