Saya membuat KeyPair untuk ECC dari kurva 'secp128r1' menggunakan openssl
Langkah-langkah yang saya ikuti:
pertama saya membuat kunci pribadi menggunakan perintah
openssl ecparam -genkey -name secp128r1 -noout -out private.pem
lalu saya melihat kunci publik yang sesuai menggunakan perintah
openssl ec -in private.pem -text -tidak
yang menunjukkan output sebagai:
baca kunci EC
Kunci Pribadi: (128 bit)
priv:
00: 9f: bf: 2b: bd: 06: 86: 3a: a1: bc: 7c: 3c: 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: 9ee : aa: d5:
30: a8: a5
ASN1 OID: secp128r1
Saya ingin komponen x dan y secara eksplisit dari kunci publik yang dihasilkan di sini, dapatkah ada yang menyarankan cara yang benar untuk melakukan ini?
Kunci publik di atas adalah panjang 264 bit, karenanya tidak dapat mengambil (/ membaginya) seperti
Terima kasih
sumber
Jawaban:
Pertama-tama, secp128r1 sudah usang. Gunakan kurva yang memberikan keamanan yang lebih baik untuk standar saat ini. Lihat safecurves oleh Daniel J. Bernstein dan Tanja Lange.
Sebuah Elliptic Curve didefinisikan lebih dari satu bidang ukuran q dan setiap elemen -point- memiliki dua koordinat X dan Y . The Elliptic Curve Secp128r1 memiliki 2 128 -2 97 -1 ukuran ℓ, jumlah yaitu titik-titik kecil di bawah 2 ^ 128. Ini berarti bahwa kita memerlukan representasi 128-bit.
Kunci publik yang juga merupakan titik pada kurva memiliki dua koordinat, oleh karena itu, kita perlu menyimpan dua 128-bit.
Jika kita melihat persamaan kurva eliptik Y 2 = X 3 + aX + b di mana
jika kita tahu X dari persamaan kita dapat menemukan Y . Karena kita bekerja di lapangan, Y dapat memiliki paling banyak dua akar kuadrat. Y 2 akan memiliki y atau -y sebagai akar kuadrat. Pengetahuan ini dapat digunakan untuk mengompresi representasi suatu titik dan itu disebut kompresi titik . Hanya x koordinat dan satu bit untuk memilih y atau -y . Sekarang lihat titik dasar (lihat rekomendasi Certicom )
The oktet pertama menentukan struktur
04
berarti tidak ada kompresi03
berarti ada kompresi dan pilih y sebagai positif02
berarti ada kompresi dan pilih y sebagai negatifSekarang berubah menjadi parameter OP;
oktet pertama
04
berarti tidak ada kompresi. Baris pertama adalah koordinat X dan baris kedua adalah koordinat Y dari kunci publik Anda.Bagaimana dengan kunci privat n ? Itu hanya skalar -integer- antara 0 <= n <= ℓ
Oleh karena itu, nomor di atas - bukan titik - adalah kunci pribadi Anda.
Anda juga dapat menggunakan beberapa alat web untuk mengekstrak informasi ini.
sumber