なんとな~くしあわせ?の日記

JavaとかAWSの設定とかをメモする技術ブログ

GnuPG 鍵を作る

鍵の生成

恥ずかしいことに以前作っていたGPGの鍵がなくなってしまったので新たに作りなおすことにした。

参考にするサイトは以下:
GnuPG 鍵の作り方 - keysignparty-ja
PGP/GPG

登録メールアドレスの変更

GnuPG で自分のメイルアドレスを追加する - Procrastination Log

参考というより、このエントリは実際にサイトに書いてある手順にそって、使用例を書いているのみです。

// 無ければgpgをインストールしておく
# apt-get install gnupg

// 鍵の生成
$ gpg --gen-key

鍵の種類は
RSA and RSA
・鍵長は4096ビット
・鍵は無期限で作っておく
・名前、メールアドレス、コメントとあるがコメントは特に入れなくてもいいと思う

鍵の指紋

結構待った後に、以下のようにメッセージが出て鍵の生成が完了します。

gpg: /home/hiroyuki/.gnupg/trustdb.gpg: trustdb created
gpg: key A11BB07C marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   4096R/A11BB07C 2015-06-16
      Key fingerprint = E3BB 42E3 E676 D34A A2EC  CD18 7BAE 5662 A11B B07C
uid                  Hiroyuki Nagata (From 2015) <newserver004@gmail.com>
sub   4096R/C6295C88 2015-06-16

この部分の英数字がユーザーID
・鍵をサーバに登録する時、廃棄証明書を作るときに使う
gpg: key A11BB07C marked as ultimately trusted
この部分が鍵の指紋
・他の人と鍵を交換してキーサインするときに使う
Key fingerprint = E3BB 42E3 E676 D34A A2EC CD18 7BAE 5662 A11B B07C

公開鍵・秘密鍵

コンソールに出てくるものに関しては特に秘匿する必要はないはずです。同時に作成された、以下のファイルが大事です。特に、秘密鍵は無くしてしまうと受け取った暗号文の解号、署名ができなくなります。

gpg: keyring `/home/hiroyuki/.gnupg/secring.gpg' created # 秘密鍵
gpg: keyring `/home/hiroyuki/.gnupg/pubring.gpg' created # 公開鍵

関連:
公開鍵/秘密鍵の使用例と保管方法について
nantonaku-shiawase.hatenablog.com

廃棄証明書の作成

廃棄証明書を作成しないと、鍵の無効化ができないので絶対やっておく。

$ gpg --gen-revoke <user_id>

なんか標準出力にPGPの公開鍵が出るのでテキストに保存しておく。これは見られるとまずいので秘匿する。

鍵を鍵サーバに送信

MIT PGP Key Server に鍵の公開鍵を登録する。これで全世界から鍵が検索できるわけです。
このサーバは公開鍵の情報を登録しているだけで、鍵を認証しているわけではないので乗っ取られてもそこまで困りません(困るけど…)。GPG(PGP)は個人が持っている秘密鍵同士の承認なので、CA(認証局)のように中央を持ちません。その面ではP2Pに似てますね。

$ gpg --keyserver pgp.mit.edu --send-keys <user_id>
鍵を鍵サーバから検索
$ gpg --keyserver pgp.mit.edu --search-keys newserver004@gmail.com

これにて終了

ハッシュ値を交換した相手にこちらの公開鍵を送る方法

tatsuyaoiw.hatenablog.com

ハッシュ値を交換した後相手から送られてきた鍵をインポートする方法

tatsuyaoiw.hatenablog.com

caffを使うと少なくとも鍵の署名とメールは楽

GPG キーサインパーティ資料

caffを使った署名(こちらからメールを送る場合)

署名するID をキーサーバから取得し、指定した自分のID で署
名してくれる。そして、署名した鍵を暗号化して送信してく
れる。

$ caff -u 自分の ID 署名する ID 

署名後のデータは ˜/.gnupg/pubring.gpg ではなく、
˜/.caff/gnupghome/pubring.gpg に格納される。この鍵束
を ˜/gnupg/pubring.gpg に 取り込む。
$ gpg --import ~/.caff/gnupghome/pubring.gpg
取り込んだら、自分の鍵をキーサーバに送信。
$ gpg --keyserver pgp.nic.ad.jp --send-keys 自分の ID
$ gpg --keyserver pgp.mit.edu --send-keys 自分の ID