openssl kullanarak ec ortak anahtarının x ve y bileşenlerini edinin


12

ECC için 'secp128r1' eğrisi üzerinden openssl kullanarak bir KeyPair üretiyorum

İzlediğim adımlar:

  • önce komutu kullanarak özel bir anahtar oluşturdum

    openssl ecparam -genkey -adı secp128r1 -noout -out private.pem

  • sonra komutunu kullanarak ilgili ortak anahtarı görüntüledim

    openssl ec -in private.pem -text -noout

    çıktı:

    EC anahtarını oku

    Özel Anahtar: (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

Açıkça burada oluşturulan ortak anahtar x ve y bileşenleri istiyorum, lütfen herkes bunu yapmak için doğru yolu önerebilir?
Yukarıdaki ortak anahtar 264 bit uzunluğundadır, bu nedenle
teşekkürler (/ bölünemez)


5
Güvenlik dupası.stackexchange.com/questions/60926/… ; başına tools.ietf.org/html/rfc5480#section-2.2 ilk sekizli (04) X takip eder, sıkıştırılmamış, Y, her bir tam alan boyutu burada 16 sekizli, sekizli yuvarlanmış cooordinates anlamına gelir.
dave_thompson_085

2
@dave_Thompson - Bence bir cevap vermelisin. Bu iyi bir soru ve iyi bir bilgiydi (ve doğru sitede !!!) ve iyi bir cevaptan faydalanmalısınız.
jww

Yanıtlar:


1

Her şeyden önce, secp128r1 modası geçmiş. Günümüz standardı için daha iyi güvenlik sağlayan eğriler kullanın. Daniel J. Bernstein ve Tanja Lange'in güvenlik gözlüklerine bakın .

Q büyüklüğünde bir alan üzerinde tanımlanan bir Eliptik Eğri ve her nokta - nokta - X ve Y'nin iki koordinatına sahiptir . Eliptik Eğri Secp128r1, 2 128 -2 97 -1 boyutunda ℓ, yani 2 ^ 128'in biraz altındaki nokta sayısıdır. Bu, 128 bitlik gösterime ihtiyacımız olduğu anlamına gelir.

Aynı zamanda eğri üzerinde bir nokta olan ortak anahtarın iki koordinatı vardır, bu nedenle iki 128 bit depolamamız gerekir.

Biz eliptik eğri denklemi bakarsak , Y 2 = x 3 + ax + b burada

 a = FFFFFFFD FFFFFFFF FFFFFFFF FFFFFF
 b = E87579C1 1079F43D D824993C 2CEE5E

Bildiğimiz, eğer X denklemden bulabildiğimiz Y . Bir alanda çalıştığımız için Y en fazla iki kare köke sahip olabilir. Y, 2 olacaktır y ya da y kare kökü olarak. Bu bilgi bir noktanın temsilini sıkıştırmak için kullanılabilir ve buna nokta sıkıştırma denir . Sadece x koordinatı ve y veya -y'yi seçmek için bir bit . Şimdi temel noktaya bakın ( Certicom tavsiyesine bakın )

 base point = 03 161FF752 8B899B2D 0C28607C A52C5B86
            = 04 161FF752 8B899B2D 0C28607C A52C5B86 CF5AC839 5BAFEB13 C02DA292 DDED7A83 

İlk sekizli yapısını belirleyen

  • 04 sıkıştırma olmadığı anlamına gelir
  • 03bir sıkıştırma olduğu anlamına gelir ve y'yi pozitif olarak seçin
  • 02bir sıkıştırma olduğu anlamına gelir ve y'yi negatif olarak seçin

Şimdi OP'nin parametrelerine dönün;

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

ilk sekizli 04, sıkıştırma olmadığı anlamına gelir. İlk satır X koordinatı ve ikinci satır genel anahtarınızın Y koordinatıdır.

Özel anahtar n ne olacak ? Sadece 0 <= n <= ℓ arasında bir skaler-tamsayıdır

priv: 00: 9f: bf: 2b: bd: 06: 86: 3a: a1: bc: 7c: 3e: 90: 57: 40: f4: bc

Bu nedenle, yukarıdaki sayı - nokta değil - özel anahtarınızdır.

Bu bilgileri çıkarmak için bazı web araçlarını da kullanabilirsiniz.

Not: Lütfen özel anahtarınızı göstermeyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.