Wie leiten Sie den öffentlichen Schlüssel von Ihrer zufälligen 256-Bit-Ganzzahl ab?

Wenn ich 256 Mal eine faire Münze geworfen habe und die zufällige 256-Bit-Ganzzahl habe, die ich als meinen privaten Schlüssel verwenden werde, wie wird der öffentliche Schlüssel abgeleitet?

Ich habe gelesen:

Wie erhalten Sie bei einem privaten Schlüssel eine öffentliche Adresse?

Und:

https://en.bitcoin.it/wiki/Adresse

Aber ich finde keine Antwort auf meine Frage. Ich verstehe, dass ECDSA-Kurven verwendet werden, aber ich verstehe nicht, welcher Teil der öffentliche Schlüssel ist und welche Beziehung zwischen dem (einzigartigen?) öffentlichen Schlüssel und den Adressen besteht, die Sie angeben.

Wenn Sie den privaten Schlüssel in einen öffentlichen Schlüssel umwandeln, indem Sie eine Multiplikation mit dem Basispunkt der Kurve durchführen, stellt sich die Frage: Was ist der Basispunkt der Kurve?

Ist der Basispunkt der Kurve Teil des privaten Schlüssels?

Was bedeuten würde, dass der sogenannte "Private Key" nicht wirklich nur ein "Private Key" ist, sondern eher ein Schlüsselpaar, aus dem Sie jederzeit den öffentlichen Schlüssel ableiten können?

Antworten (2)

Der Basispunkt der Kurve ist eine bekannte Konstante. Da Bitcoin SECp256k1 verwendet , ist der Basispunkt:

04 (unkomprimierter Punkt)

79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9
59F2815B 16F81798 (erste Koordinate)

483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448
A6855419 9C47D08F FB10D4B8 (zweite Koordinate)

(Siehe Seite 15 meines Links.)

Der private Schlüssel ist eine Ganzzahl, von der Sie den öffentlichen Schlüssel ableiten und Signaturen erstellen können, die mit dem öffentlichen Schlüssel verifiziert werden können.

All bitcoin addresses share a common base point known as a generator, G = (0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8) on the elliptic curve defined as y^2 = x^3 + 0 * x + a, over the field defined by P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f.

Ich fürchte, das ist alles ziemlich technisch, aber wenn Sie Modulo-Mathematik kennen, ist es nicht sehr komplex, und die Werte können gefunden werden, wenn Sie nach sepc256k1 in Standards for Efficient Cryptography Recommended Elliptic Curve Domain Parameters suchen .

Die elliptische Kurve über dem Feld hat die Eigenschaft, dass sich beim Hinzufügen eines Punktes ein Punkt ergibt. Bitcoin nutzt diese Tatsache, um den öffentlichen Schlüssel zu berechnen, indem es den Generatorpunkt viele Male zu sich selbst hinzufügt. Ihr privater Schlüssel ist einfach die Anzahl der Male, um den Punkt zu sich selbst hinzuzufügen.

If your private key happened to be 1, your public key would be identical to G. That is obviously no good because that is a very well known point, but simply changing your private key to 2 will yield the public key (0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5, 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a) das unterscheidet sich stark vom Generator. Normalerweise wird ein riesiger privater Schlüssel verwendet, was es rechnerisch unmöglich macht, zu versuchen, vom öffentlichen Schlüssel zum privaten Schlüssel zurückzuverfolgen.

Der öffentliche Schlüssel ist "einfach" private_key * G, auf der elliptischen Kurve über dem Feld. Ich schreibe "einfach", weil es ein bisschen umständlich ist, aber die Mathematik selbst ist nicht sehr kompliziert. Es ist nur Addition, Subtraktion, Multiplikation und Division mit Rest. Der wirklich schwierige Teil ist, dass die beteiligten Zahlen so unglaublich groß sind, dass es für das menschliche Gehirn mehr oder weniger unmöglich ist, zu verstehen, was sie bedeuten, und einige der Definitionen von Berechnungen über elliptische Kurven unterscheiden sich von dem, was Sie gewohnt sind, was möglich ist verwirrend sein.