Po pierwsze, secp128r1 jest nieaktualny. Używaj krzywych, które dają większe bezpieczeństwo dla dzisiejszego standardu. Zobacz sejfy Daniela J. Bernsteina i Tanji Lange.
Eliptycznej krzywej określona przez pole formatu q i każdy element -point- ma dwie współrzędne X i Y . Elliptic Curve Secp128r1 ma 2 128 -2 97 -1 rozmiar ℓ, tj. Liczbę punktów nieco poniżej 2 ^ 128. Oznacza to, że potrzebujemy 128-bitowej reprezentacji.
Klucz publiczny, który jest także punktem na krzywej, ma dwie współrzędne, dlatego musimy zapisać dwie 128-bitowe.
Jeśli spojrzymy na równanie krzywej eliptycznej Y 2 = X 3 + aX + b gdzie
a = FFFFFFFD FFFFFFFF FFFFFFFF FFFFFF
b = E87579C1 1079F43D D824993C 2CEE5E
jeśli wiemy X z równania możemy znaleźć Y . Ponieważ pracujemy na polu, Y może mieć co najwyżej dwa pierwiastki kwadratowe. Y 2 będzie miało y lub -y jako pierwiastek kwadratowy. Wiedzę tę można wykorzystać do kompresji reprezentacji punktu i nazywa się to kompresją punktu . Wystarczy współrzędna x i jeden bit, aby wybrać y lub -y . Teraz spójrz na punkt bazowy (patrz zalecenie Certicom )
base point = 03 161FF752 8B899B2D 0C28607C A52C5B86
= 04 161FF752 8B899B2D 0C28607C A52C5B86 CF5AC839 5BAFEB13 C02DA292 DDED7A83
Pierwszy bajt określa strukturę
04
oznacza, że nie ma kompresji
03
oznacza kompresję i wybierz y jako dodatnią
02
oznacza kompresję i wybierz y jako ujemną
Teraz zmień parametry OP;
pub:
04:
04:ce:24:34:d4:cb:f2:58:94:2f:8a:5f:06:d7:3f:ed: -->X
5a:50:ef:fb:cc:b7:49:62:16:62:9e:aa:d5:30:a8:a5 -->Y
pierwszy oktet 04
oznacza brak kompresji. Pierwsza linia to współrzędna X, a druga linia to współrzędna Y twojego klucza publicznego.
Co z kluczem prywatnym n ? Jest to po prostu skalar -integer- między 0 <= n <= ℓ
priv: 00: 9f: bf: 2b: bd: 06: 86: 3a: a1: bc: 7c: 3e: 90: 57: 40: f4: bc
Dlatego powyższa liczba - nie punkt - jest twoim kluczem prywatnym.
Możesz także użyć niektórych narzędzi internetowych, aby wyodrębnić te informacje.
Uwaga: nie ujawniaj swojego klucza prywatnego.