はじめに
前回は秘密鍵について調べてみました。今回は公開鍵をつくっていきます。
前回の記事はコチラです。
秘密鍵を作る
まずは前回の復習です。鍵長が長いと見づらくなるので短い鍵長(16 bit)で秘密鍵 s.key
を作ります。
$ openssl genrsa -out s.key 16 Generating RSA private key, 16 bit long modulus .+++++++++++++++++++++++++++ .+++++++++++++++++++++++++++ e is 65537 (0x010001)
生成された秘密鍵 s.key
は以下のとおりです。前回の復習をすると、ASN.1 形式で書かれたデータを DER エンコードしてバイナリ化されたデータをさらに base64 でエンコードして ASCII 文字列化した PEM と呼ばれるファイル形式で秘密鍵が出力されます。
$ cat s.key -----BEGIN RSA PRIVATE KEY----- MCYCAQACAwDQMQIDAQABAgMAmuUCAgDvAgIA3wICAJECAgCJAgIA4A== -----END RSA PRIVATE KEY-----
PEM ファイルの中に入っている情報は rsa
コマンドで確認できるということを学びました。
$ openssl rsa -text -in s.key Private-Key: (16 bit) modulus: 53297 (0xd031) publicExponent: 65537 (0x10001) privateExponent: 39653 (0x9ae5) prime1: 239 (0xef) prime2: 223 (0xdf) exponent1: 145 (0x91) exponent2: 137 (0x89) coefficient: 224 (0xe0) writing RSA key -----BEGIN RSA PRIVATE KEY----- MCYCAQACAwDQMQIDAQABAgMAmuUCAgDvAgIA3wICAJECAgCJAgIA4A== -----END RSA PRIVATE KEY-----
公開鍵を作る
公開鍵は秘密鍵から生成します。キーペアたる所以ですね。
$ openssl rsa -in s.key -pubout -out p.key writing RSA key
生成された公開鍵 p.key
は以下のとおりです。秘密鍵同様、PEM 形式で出力されています。PUBLIC KEY
と書かれており、公開鍵であることがわかりやすいです。
$ cat p.key -----BEGIN PUBLIC KEY----- MB4wDQYJKoZIhvcNAQEBBQADDQAwCgIDANAxAgMBAAE= -----END PUBLIC KEY-----
秘密鍵同様、PEM ファイルの中に入っている情報は rsa
コマンドで確認できます1。
$ openssl rsa -text -pubin < p.key Public-Key: (16 bit) Modulus: 53297 (0xd031) # Modulus = 係数[n] Exponent: 65537 (0x10001) # Exponent = 暗号化指数[e] writing RSA key -----BEGIN PUBLIC KEY----- MB4wDQYJKoZIhvcNAQEBBQADDQAwCgIDANAxAgMBAAE= -----END PUBLIC KEY-----
秘密鍵にはさまざまな情報が含まれていましたが、公開鍵には e と n しか含まれていないようです。
おわりに
今回は公開鍵の中身を確認してみましたが、秘密鍵よりも情報量が圧倒的に少ないことがわかりました。
次回は RSA 暗号のしくみを紐解くことで鍵と証明書の理解を深めていきたいと思います。
以上