とあるエンジニアの備忘log
2016年3月6日日曜日
GPG key sign 備忘録
この度、わけあって GnuPG というものを使い始めたので、鍵の生成から、Key Sign までやったことを、将来の自分のために書き留めておきます。多分すぐに忘れてしまうので。 ### 背景を理解する ### 「GPG とはなんぞや」とか、「公開鍵暗号とは?」みたいな初歩的な話から、「なんで Key Sign みたいな面倒なことをやるの?」とか 「どうして署名用と暗号化用とで複数のキーペアに分かれているの?」みたいな疑問を解決するには本家のドキュメントがおすすめ。 英語ですが、私は [The GNU Privacy Handbook](https://www.gnupg.org/gph/en/manual.html) はなかなかわかりやすかったと思います。 ### Key の生成 ### $ gpg --gen-key で鍵を生成する。いくつかの質問を聞かれる。 鍵の種類はデフォルトの (1) RSA and RSA (default) を選択。Master (署名用) と Sub (暗号化用) で鍵が2ペアできる。 キーサイズと、有効期限については、その人の Paranoid 具合によってデフォルトのままでよいという人もいるし、変更するという人もいる。とりあえず自分は 4096ビットで 5年 を選択した。あとは、本名とメールアドレスを入力する。パスフレーズは(空にもできるが)必ず設定しておく。乱数を生成するためにいろいろ動かしてと言われた後、鍵を生成してくれる。 忘れないうちに $ gpg --output revcert.asc --gen-revoke
で、失効証明書を作成しておく。(秘密鍵が盗まれたり、パスフレーズを忘れたりしたりした時に、鍵を失効させるのに使う。) `
` の部分は、鍵の生成時に入れた本名やメールアドレスの一部を入れればよい。 `revcert.asc` と `~/.gnupg` 以下を CD-R に焼いて大切に保管しておく。 ### 公開鍵を Key Server に上げる ### キーサーバーに上げる前に、マニュアルとか見ながら触ってみて、gpg の操作に慣れておく。キーサーバーに上げる前ならば、最悪失敗してもキーの生成からやり直せばいいので、いろいろ試してみる。 満足したらキーサーバー(公開鍵の配布を容易にしてくれるサーバー)に上げる。いったんアップロードするとやり直しが効かない(鍵を失効させるしかない)ので、本名やメールアドレスが間違ってないか今一度確認しておく。 $ gpg --keyserver pgp.nic.ad.jp --send-keys
でアップロードする。自分は `pgp.nic.ad.jp` を使ったが、キーサーバーはお互いに同期しているので、どのキーサーバーに上げてもよい。 例えば、 [http://pgp.nic.ad.jp/pgp/pks-commands-e.html](http://pgp.nic.ad.jp/pgp/pks-commands-e.html) みたいなページに行って `Search String` のところに自分のメールアドレスを入れてみれば、自分の公開鍵が出てくる。 ### Signing Party ### PGP(GnuPG) の中で一番アナログな部分が Signing Party という工程です。 その公開鍵が間違いなくその本人のものであることを確認しなくてはなりません (悪意を持った人が、その人の名を語ってなりすましている可能性があるため)。 本人確認は、身分証(パスポートなど)を見せて対面で行い、その際に、fingerprint を渡します。 自分の鍵の fingerprint を $ gpg --fingerprint で表示し、あらかじめ印刷しておくのがよいです。 紙に印刷していない場合は、端末に表示させたものを相手にカメラなどで撮ってもらう。 ### 相手の鍵に署名 ### Signing Party が終わった後は、相手の鍵に対して、自分の鍵で署名します。 相手の鍵をキーサーバーから取ってきて、fingerprint が一致するのを確認し、署名します。 署名後に、相手の鍵を勝手にアップロードするのはマナー違反とのことなので、メールで相手に送ってあげます。 その際、相手にしか復号できないように暗号化し、署名して送信、とこれを毎回手動でやるのは大変だ、というわけで それを手助けする caff というツールがあるようです。 ### postfix のセットアップ ### caff はメールの送信までやってくれますが、それにはローカルに SMTP を立てておく必要があるので、 まずそれをやります。普段は Gmail を使っているので、Gmail にリレーさせる方法をとった。 $ sudo apt-get install postfix sasl2-bin 途中で出てくる質問には `Internet Site` を選ぶ。 `/etc/postfix/main.cf` に以下を記載。 relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_password smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain smtp_use_tls = yes `/etc/postfix/sasl_password` に [smtp.gmail.com]:587
@gmail.com:
を記載する。 2段階認証を利用していない場合は `
` の部分は、Gmail に使っているパスワードでよい。 2段階認証を利用している場合は、Google の 「アカウント」、「ログインとセキュリティ」、「アプリ パスワード」とたどり、アプリパスワードというのを生成し、それを `
` の部分に書く。 $ sudo chmod 600 /etc/postfix/sasl_password $ sudo postmap /etc/postfix/sasl_password $ sudo service postfix restart としたあと、以下で動作確認。 $ mail -s
### caff ### $ sudo apt-get install signing-party でインストール。 $ caff を実行すると `~/.caffrc` という設定ファイルができる。 大抵は、うまく設定してくれているが、複数の鍵を持っている場合などは修正が必要かもしれない。 最低でも、以下の3項目は正しくなっていることを確認。 $CONFIG{'owner'} = 'Masahiro Yamada'; $CONFIG{'email'} = 'yamada.masahiro@socionext.com'; $CONFIG{'keyid'} = [ qw{3D8B01079DE0DB06} ]; `owner` と `email` はメールの送信元になる。`keyid` は fingerprint の下16桁。 あとは $ caff
で全部やってくれる。 `
` は相手の fingerPrint の下8桁を入力。 相手の鍵に、複数の User ID が紐付いているときは、 Really sign all user IDs? (y/N) と聞いてくる。全部の User ID に対して署名する場合はそのまま `y` と答える。 一部の User ID にのみ署名したい場合は、いったん `n` と答えて、 `uid 2` みたいに番号を指定してから `sign` と打つ。 Really sign? (y/N) に `y` と答えたあと、`save` と打つ。 最後にメールで送るかどうか聞いてくるので `y` と答える。 ### サインしてもらった key の取り込み ### 相手も caff を使っていると添付ファイルが 2個ついてメールが送られてくる。 $ gpg -o key --decrypt msg.asc $ gpg --import key $ gpg --keyserver pgp.nic.ad.jp --send-key
で OK。
新しい投稿
前の投稿
ホーム
登録:
投稿 (Atom)