opensslを使用してec公開鍵のxおよびyコンポーネントを取得する


12

opensslを使用して曲線「secp128r1」からECCの KeyPairを生成しています

私が従った手順:

  • まず、コマンドを使用して秘密鍵を生成しました

    openssl ecparam -genkey -name secp128r1 -noout -out private.pem

  • 次に、コマンドを使用して対応する公開鍵を表示しました

    openssl ec -in private.pem -text -noout

    これは出力を次のように示しました:

    ECキーを読み取る

    秘密鍵:(128ビット)
    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

ここで生成された公開鍵からxコンポーネントとyコンポーネントを明示的に欲しいのですが、これを行う正しい方法を誰かに提案できますか?
上記の公開鍵は264ビット長なので、
ありがとうございます。


5
security.stackexchange.com/questions/60926/…の複製。あたりtools.ietf.org/html/rfc5480#section-2.2最初のオクテット(04)Xが続くされ、圧縮されていないが、Yはそれぞれ正確にフィールドのサイズはここで16オクテットのオクテットに丸めcooordinates意味します。
dave_thompson_085 2015

2
@dave_Thompson-私はあなたが答えを提供するべきだと思います。それは良い質問と良い情報でした(そして正しいサイトで!!!)、そしてあなたは良い答えの恩恵を受けるはずです。
jww 2015

回答:


1

まず、secp128r1は古くなっています。今日の標準のセキュリティを向上させる曲線を使用してください。Daniel J. BernsteinとTanja Langeのセーフカーブをご覧ください。

サイズqのフィールド上で定義された楕円曲線とすべての要素-point-には、2つの座標XYがあります。楕円曲線Secp128r1のサイズは2 128 -2 97 -1です。つまり、ポイント数は2 ^ 128弱です。つまり、128ビット表現が必要です。

曲線上の点でもある公開鍵には2つの座標があるため、128ビットを2つ格納する必要があります。

楕円曲線の方程式Y 2 = X 3 + aX + bを見ると

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

方程式からXがわかっていれば、Yを見つけることができます。フィールドで作業しているので、Yは最大2つの平方根を持つことができます。Y 2の平方根はyまたは-yになります。この知識は、ポイントの表現を圧縮するために使用でき、ポイント圧縮と呼ばます。ちょうどX座標及び1ビットが選択するために、Y又は-Yを。次に、基点を確認します(Certicomの推奨事項を参照)

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

最初のオクテットは、構造を決定します

  • 04 圧縮がないことを意味します
  • 03圧縮があることを意味し、yとして選択します
  • 02圧縮があることを意味し、yとして選択します

次に、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

最初のオクテット04は圧縮がないことを意味します。1行目はX座標で、2行目は公開鍵のY座標です。

秘密鍵nはどうですか?0 <= n <=ℓの間の単なるスカラー-整数-です

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

したがって、ポイントではなく上記の番号が秘密鍵です。

一部のWebツールを使用して、この情報を抽出することもできます。

注:秘密鍵は公開しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.