公開鍵暗号の1つです
暗号使いたいといったら OpenSSL
OpenSSL なら ECC もばっちりに違いないと思い適当にコマンド叩きはじめました
Debian Lenny は OpenSSL 0.9.8g だそうです
とりあえず CSR 作る辺りの話ってのは幅広い暗号の話が? と思い
$ openssl req -help"unknown option -help" とか言われてますが
unknown option -help
req [options] <infile >outfile
where options are
-inform arg input format - DER or PEM
(中略)
-newkey ec:file generate a new EC key, parameters taken from CA in 'file'
(後略)
"-newkey ec:file" で ECC な CSR が作れるっぽい!
そこで、ググってみましたところ
OpenSSLによる楕円曲線暗号の利用
え〜と、変な検索語使わなくても良かったんじゃないの?
楕円曲線暗号ってのは、楕円曲線の上で掛け算をするんですが
楕円曲線っての自体が沢山あるので先ずどれを使うか決めないといけません
どれでもいいかというとそういうわけではなく
ものによっては暗号としての強度が落ちてしまうそうなので
「これ使ってこうぜ!!」ってのが定められています
http://www.ietf.org/rfc/rfc4492.txt
http://www.ietf.org/rfc/rfc5480.txt
http://www.ietf.org/rfc/rfc5639.txt
あれ、なんか、一杯あるな、どれだ
で、最初にどの曲線使うか決めるわけですが
openssl に ecparam ってのがありまして
$ openssl ecparam -list_curvesと、扱える曲線のリストが出ます
secp112r1 : SECG/WTLS curve over a 112 bit prime field
secp112r2 : SECG curve over a 112 bit prime field
secp128r1 : SECG curve over a 128 bit prime field
secp128r2 : SECG curve over a 128 bit prime field
secp160k1 : SECG curve over a 160 bit prime field
secp160r1 : SECG curve over a 160 bit prime field
secp160r2 : SECG/WTLS curve over a 160 bit prime field
(後略)
で、実際にパラメータを出すには
$ openssl ecparam -name secp224r1とすると base64 された形で出てきます
-----BEGIN EC PARAMETERS-----
BgUrgQQAIQ==
-----END EC PARAMETERS-----
これをファイルに入れといたりすれば OK
で、次に鍵を作りたいということで
$ openssl ecparam -name secp224r1 -genkeyのように parameter と鍵が一緒に出せます
-----BEGIN EC PARAMETERS-----
BgUrgQQAIQ==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MGgCAQEEHFaQDqPQ8x4NAr5Bz67BZcgqZurwgy4UGdlQ2OegBwYFK4EEACGhPAM6
AASNeby2ALikGQghKhN1a1SSvi1J+y1l55kE3AH1c4y+6LcesqdYKtkLt0P303p+
IH1Tj0J9MxqEJA==
-----END EC PRIVATE KEY-----
鍵だけ ecc.key というファイルに入れておいて
$ openssl ec -in ecc.key -param_outと parameter を取り出すことも可能
read EC key
writing EC key
-----BEGIN EC PARAMETERS-----
BgUrgQQAIQ==
-----END EC PARAMETERS-----
じゃぁパラメータだけ出しても仕方なくない?
というとそうでもなくて、最初の req で出てきた -newkey で使えます
parameter の base64 を ecc.param ってファイルに入れといて
$ openssl req -new -newkey ec:ecc.param -nodesや、まぁ、作っといて req に食わしてもいいんですが
Generating a 224 bit EC private key
writing new private key to 'privkey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
CSR は CSR なんで、
あとはこれを RSA で署名してもいいし、ECC で署名してもいいし、
煮ても焼いても美味しく頂けます
0 件のコメント:
コメントを投稿