#chiroito ’s blog

Java を中心とした趣味の技術について

楕円曲線暗号を使った GPG キーの作成

概要

GnuPG を使用して 楕円曲線暗号(ECC)を使った GPG キーを作成します。

  1. GnuPG をダウンロード
  2. GPG キーを作成

環境

GnuPG をダウンロード

GnuPG はこちらからダウンロードします。(GnuPG - Download) Windows 版は 3 種類あります。現時点では stable は 2.0.30 、modern は 2.1.16 でした。GnuPG楕円曲線暗号を使えるのは 2.1 以降とのことなので、今回は modern を使用しています。

f:id:chiroito:20161126001751p:plain

赤枠のdownload リンクを押して、ダウンロードした後はインストールをします。ウィザードに従うだけです。

GPG キーを作成

RSA のキー同様 gpg --full-gen-key で GPG キーを作成しますが、楕円曲線暗号を使うには--expertオプションがさらに必要です。

今回は楕円曲線暗号(ECC)のうち Github でも使用できる NIST P-521 を使用して無期限のキーを作成します。

gpg --full-gen-key --expert

gpg (GnuPG) 2.1.16; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA (デフォルト)
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
   (7) DSA (機能をあなた自身で設定)
   (8) RSA (機能をあなた自身で設定)
   (9) ECC と ECC
  (10) ECC (署名のみ)
  (11) ECC (機能をあなた自身で設定)
あなたの選択は? 9
ご希望の楕円曲線を選択してください:
   (1) Curve 25519
   (3) NIST P-256
   (4) NIST P-384
   (5) NIST P-521
   (6) Brainpool P-256
   (7) Brainpool P-384
   (8) Brainpool P-512
   (9) secp256k1
あなたの選択は? 5
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)
鍵の有効期間は? (0)は無期限です
これで正しいですか? (y/N) y

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: <適宜入力してください>
電子メール・アドレス: <適宜入力してください>
コメント:
次のユーザIDを選択しました:
    "本名 <メールアドレス>"

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
gpg: 鍵C450FBAF723F1D25を究極的に信用するよう記録しました
gpg: ディレクトリ'C:/Users/xxx/AppData/Roaming/gnupg/openpgp-revocs.d'が作成されました
gpg: 失効証明書を 'C:/Users/xxx/AppData/Roaming/gnupg/openpgp-revocs.d\6DF4C433A441A4AFE10DE884C450FBAF723F1D25.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   nistp521 2016-11-25 [SC]
      6DF4C433A441A4AFE10DE884C450FBAF723F1D25
      6DF4C433A441A4AFE10DE884C450FBAF723F1D25
uid                      本名 <メールアドレス>
sub   nistp521 2016-11-25 [E]

細かい出力結果は異なると思いますが、上記のような結果になればOKです。
※上記の結果は実際に使っている物とは異なります。