Ich generiere ein Schlüsselpaar für ECC aus der Kurve 'secp128r1' mit openssl
Schritte, denen ich gefolgt bin:
Zuerst habe ich mit dem Befehl einen privaten Schlüssel generiert
openssl ecparam -genkey -name secp128r1 -noout -out private.pem
dann habe ich den entsprechenden öffentlichen Schlüssel mit dem Befehl angezeigt
openssl ec -in private.pem -text -noout
welches eine Ausgabe zeigte als:
EC-Schlüssel lesen
Private-Key: (128 Bit)
priv:
00: 9f: bf: 2b: bd: 06: 86: 3a: a1: bc: 7c: 3e: 90: 57: 40:
f4: bc
pub:
04: 04: ce : 24: 34: d4: cb: f2: 58: 94: 2f: 8a: 5f: 06: d7:
3f: ed: 5a: 50: ef: fb: cc: b7: 49: 62: 16: 62: 9e : aa: d5:
30: a8: a5
ASN1 OID: secp128r1
Ich möchte explizit x- und y-Komponenten aus dem hier generierten öffentlichen Schlüssel. Kann jemand die richtige Vorgehensweise vorschlagen?
Der obige öffentliche Schlüssel ist 264 Bit lang und kann daher nicht wie
Thanks verwendet (/ aufgeteilt) werden
quelle
Antworten:
Erstens ist secp128r1 veraltet. Verwenden Sie Kurven, die eine bessere Sicherheit für den heutigen Standard bieten. Siehe Safecurves von Daniel J. Bernstein und Tanja Lange.
Eine elliptische Kurve definiert ein Feld der Größe über q und jedes Element -point- zwei Koordinaten hat X und Y . Die elliptische Kurve Secp128r1 hat 2 128 -2 97 -1 Größe ℓ, dh die Anzahl der Punkte etwas unter 2 ^ 128. Dies bedeutet, dass wir eine 128-Bit-Darstellung benötigen.
Der öffentliche Schlüssel, der auch ein Punkt auf der Kurve ist, hat zwei Koordinaten. Daher müssen zwei 128-Bit-Koordinaten gespeichert werden.
Betrachten wir die Gleichung der elliptischen Kurve Y 2 = X 3 + aX + b wobei
Wenn wir X aus der Gleichung kennen, können wir Y finden . Da wir auf einem Feld arbeiten, kann das Y höchstens zwei Quadratwurzeln haben. Y 2 hat y oder -y als Quadratwurzel. Dieses Wissen kann verwendet werden, um die Darstellung eines Punktes zu komprimieren, und wird als Punktkomprimierung bezeichnet . Nur x- Koordinate und ein Bit, um y oder -y auszuwählen . Schauen Sie sich nun den Basispunkt an (siehe Certicom-Empfehlung ).
Das erste Oktett bestimmt die Struktur
04
bedeutet, dass keine Komprimierung erfolgt03
bedeutet, dass eine Komprimierung vorliegt und y als positiv ausgewählt wird02
bedeutet, dass eine Komprimierung vorliegt und y als negativ ausgewählt wirdWenden Sie sich nun den OP-Parametern zu.
Das erste Oktett
04
bedeutet, dass keine Komprimierung erfolgt. Die erste Zeile ist die X- Koordinate und die zweite Zeile ist die Y- Koordinate Ihres öffentlichen Schlüssels.Was ist mit dem privaten Schlüssel n ? Es ist nur eine skalare Ganzzahl zwischen 0 <= n <= ℓ
Daher ist die obige Nummer - nicht Punkt - Ihr privater Schlüssel.
Sie können auch einige Web-Tools verwenden, um diese Informationen zu extrahieren.
quelle