PGP(GnuPG)の導入方法教えてやるから、いい加減、ファイルをZIP暗号化して、別メールでパスワードを送るのは、やめてくれ！～公開キー配布編～

# 前回の続き
「[PGP(GnuPG)の導入方法教えてやるから、いい加減、ファイルをZIP暗号化して、別メールでパスワードを送るのは、やめてくれ！ ～セットアップ編～ - Qiita](https://qiita.com/karkwind/items/9cb2907060f210fc940a)」の続きです。
＃いいねしていただいた方々に感謝いたします。
  
初めての方は、上記のサイトを参照していただけますようお願いいたします。

# 【お詫び】本当は、ファイル暗号化編を作っていた
本来であれば、ファイル暗号化編を作りたかったのですが、公開キーの配布方法を書いていなかったなと思い、書いていたら、かなりの量になってしまい、また体力がなくなってしまいましたorz
なので、今回は、公開キー配布編を解説したいと思います。

# まず、公開キーを作る
相手に公開キーを渡さないと意味がありません。
なので、公開キーをエクスポートします。

## Kleopatraを開き、自分のカギを右クリックして、Exportをする
![gog01-1.png](https://qiita-image-store.s3.amazonaws.com/0/221663/dcf8a44c-1ba0-0bd5-9bdd-3ff793d7d363.png)

## 適当な場所に保存する。
![gpg02-2.png](https://qiita-image-store.s3.amazonaws.com/0/221663/9882d402-ddf3-479c-02fc-a4f7fae32582.png)

その時、ファイル名は、デフォルトでもいいけど、適当に。

## 相手に公開キーを渡す
実は、これが一番難しい。
メールで送る際、相手がZIPパスワードをやり取りする仲であれば、特段問題ないんですが、以下のようなリスクがあります。

### 公開キーの入れ替えのリスク  
実は、これが一番の問題です。
メール配送中に、別のキーにすり替わっている可能性があります。
いわゆる、中間者攻撃(Man-In-The-Middle attack)です。
具体的に書きますと、

1. Aさんは、Bさん宛に公開キーをメールで送信する
2. AさんとBさん間に、Cさんがその内容を読み取り、Aさん公開キーを改ざんして、Bさんに送るようにする
3. Bさんは、改ざんされたAさんの公開キーで暗号して、Aさんにメールで送る
4. Cさんは、改ざんされたAさんの秘密キーを持っているので、中身を見ることができる
5. Cさんは、本当のAさんの公開キーを使って、再暗号化して、Aさんに送る
6. Aさんは、盗まれていることに気がつかない

ただ、これには弱点がありまして、Bさんが署名をしていたら、再暗号化するときには、Bさんの秘密キーが必要です。
ただ、同じように、Bさんの公開キーを改ざんしてしまえば、意味なくなってしまいます。

さてどうすればいいのか?

### 本来であれば、直接交換が基本だけど…
本来であれば、直接、公開キーを交換するのがいいんだけど、それだと手間がかかる。 
なので、メールの署名欄に、フィンガープリント(指紋)を普段から、書いておくことをお勧めします。 
それでも、その指紋も改ざんされる可能性がありますが。  

### フィンガープリント(指紋)って?
まぁ～その名の通り、その公開キーの指紋です。
指紋が伝えられたものと、一致していれば、その公開キーは本人のものであると、証明ができます。
指紋が書いている場所は、右クリックを行い、詳細を選択。

![gpg03-01.png](https://qiita-image-store.s3.amazonaws.com/0/221663/436586e9-d7c0-b130-b925-4ee2b54df1b3.png)

詳細画面に、「Fingerprint」とという項目があるので、その20バイト(16進数)が、指紋に当たります。

![gpg04-02.png](https://qiita-image-store.s3.amazonaws.com/0/221663/420467b3-896d-976e-071c-b78f2c352a6b.png)


それを信頼できる方法(直接伝えるのもよし、電話で伝えるもよし、FAXで伝えるのもよし)で相手に伝えればいいのです。  

そうやって、お互いの公開キーを交換しましょう。

### ほかにも、簡易キー配布所を作って、そこのURLを伝える
前に、「[自分だけのPGP公開キー検索サイトを作ってみた - Qiita](https://qiita.com/karkwind/items/ac38b0b137100314234a)」みたいな、簡易的な公開キー配布所を作って、そこに公開キーを入れておくというのも手です。  
そして、相手方には、メールアドレスと指紋を教えれば、改ざんは、より難しくなります。  

# もらった公開キーをインポートする

さて、公開キーをあげてばかりではなく、もらわないといけません。  
ということで、相手方も、上記のリスクを念頭において、受け取ってください。

## ダブルクリックすると、警告が出ます
受け取った、公開キーをダブルクリックすると、Kleopatraが立ち上がり、以下のようなダイアログが出ます。

![gpg05.png](https://qiita-image-store.s3.amazonaws.com/0/221663/10cbb938-028f-b597-1544-ae77c8ab94c9.png)

簡単に訳しますと、

~~~
上記でいっていたリスクがあるから、指紋は、電話や名刺や信頼されたサイトで確認しなさいよ。
実行してもいい?
~~~

って感じです。  

もちろん、はいをクリックします。

## 検証証するユーザーID(メールアドレス)と、指紋の確認
以下の画面が出るので、ユーザーIDの確認と、フィンガープリント(指紋)の確認をしてください。

![gpg06.png](https://qiita-image-store.s3.amazonaws.com/0/221663/1457f5d7-1fdd-2bbd-40b7-0da4a73cb47a.png)

特に指紋が同じかどうかは、正確に確認して、チェックを入れてください。

両方とも、チェックを入れたら、次へをクリックします。

## 自分の秘密キーでこの公開キーを署名する
次へをクリックしたら、以下の画面が出ます。

![gpg07-02.png](https://qiita-image-store.s3.amazonaws.com/0/221663/22290450-74f7-6280-0342-cde10bd5d759.png)

署名をするには、秘密キーを持っている必要があります。
たいてい、1つしかありませんが、私のように複数ある場合もありますｗ
その人とメールのやり取りをする(公開キーの交換をした)ユーザーID(メールアドレス)を選択をしましょう。

そして、「自分自身のためだけに署名する」を選択しておきましょう。
別に、「見る人すべてに署名する」でもいいのですが、署名した証明書を後でサーバに送信するというチェックは外しておきましょう。
外しておかないと、もらった公開キーが、公開キーサーバーにアップロードされて、検索されてしまいます。  
一般的な公開キーサーバー
[PGP KEYSERVER](http://pgp.nic.ad.jp/pgp/index.html)
[SKS Keyservers](https://sks-keyservers.net/)

しかも、残念なことに、一度公開されたら、消せない仕様になっています。
Revoke(無効)を送信することはできますが、メールアドレスそのもの情報は削除できません。
なので、公開キーを公開キーサーバーに公開するのは、控えたほうがいいでしょう。

## 署名をクリックしたら、パスワードを求められるので、自分のパスワードを入力する
署名をクリックすると、パスワードを求められるので、署名する、自分User-IDのパスワードを入力しましょう。

![gpg08.png](https://qiita-image-store.s3.amazonaws.com/0/221663/50c18332-04b8-31cc-612c-43e822a33a1a.png)

## 署名が完了したら、以下の画面が出る
署名が完了したら、以下の画面が出ますので、完了をクリックしましょう。

![gpg09.png](https://qiita-image-store.s3.amazonaws.com/0/221663/a5e798a5-6951-c7eb-c3f3-904b68349e78.png)

## Kleopatraの鍵の一覧にインポートしたユーザーを確認する
Kleopatraの鍵の一覧にインポートしたユーザーがいることを確認してください。

![gpg10.png](https://qiita-image-store.s3.amazonaws.com/0/221663/c6e41dcf-e0c4-f673-5fb4-23d21c0053a5.png)

重要なのは、User-ID'sが「certified」になっていること。  
自分が署名したことで、「認定」されました。  
not certifiedになっていたら、右クリックして、「詳細」をクリックし、署名をクリックし、再度、署名作業を行ってください。

# ということで
ここで、力尽きました…
続きが読みたい方は、いいね等シェアして、励ましていただけると助かります。

よろしくお願いいたします。

# 2019/04/25追記 やっとファイル添付編ができました
[PGP(GnuPG)の導入方法教えてやるから、いい加減、ファイルをZIP暗号化して、別メールでパスワードを送るのは、やめてくれ！ ～ファイル添付編～ - Qiita](https://qiita.com/karkwind/items/0639ddd026be69e72e64)

よろしくお願いいたします。