前回の続き
「PGP(GnuPG)の導入方法教えてやるから、いい加減、ファイルをZIP暗号化して、別メールでパスワードを送るのは、やめてくれ! ~セットアップ編~ - Qiita」の続きです。
#いいねしていただいた方々に感謝いたします。
初めての方は、上記のサイトを参照していただけますようお願いいたします。
【お詫び】本当は、ファイル暗号化編を作っていた
本来であれば、ファイル暗号化編を作りたかったのですが、公開キーの配布方法を書いていなかったなと思い、書いていたら、かなりの量になってしまい、また体力がなくなってしまいましたorz
なので、今回は、公開キー配布編を解説したいと思います。
まず、公開キーを作る
相手に公開キーを渡さないと意味がありません。
なので、公開キーをエクスポートします。
Kleopatraを開き、自分のカギを右クリックして、Exportをする
適当な場所に保存する。
その時、ファイル名は、デフォルトでもいいけど、適当に。
相手に公開キーを渡す
実は、これが一番難しい。
メールで送る際、相手がZIPパスワードをやり取りする仲であれば、特段問題ないんですが、以下のようなリスクがあります。
公開キーの入れ替えのリスク
実は、これが一番の問題です。
メール配送中に、別のキーにすり替わっている可能性があります。
いわゆる、中間者攻撃(Man-In-The-Middle attack)です。
具体的に書きますと、
- Aさんは、Bさん宛に公開キーをメールで送信する
- AさんとBさん間に、Cさんがその内容を読み取り、Aさん公開キーを改ざんして、Bさんに送るようにする
- Bさんは、改ざんされたAさんの公開キーで暗号して、Aさんにメールで送る
- Cさんは、改ざんされたAさんの秘密キーを持っているので、中身を見ることができる
- Cさんは、本当のAさんの公開キーを使って、再暗号化して、Aさんに送る
- Aさんは、盗まれていることに気がつかない
ただ、これには弱点がありまして、Bさんが署名をしていたら、再暗号化するときには、Bさんの秘密キーが必要です。
ただ、同じように、Bさんの公開キーを改ざんしてしまえば、意味なくなってしまいます。
さてどうすればいいのか?
本来であれば、直接交換が基本だけど…
本来であれば、直接、公開キーを交換するのがいいんだけど、それだと手間がかかる。
なので、メールの署名欄に、フィンガープリント(指紋)を普段から、書いておくことをお勧めします。
それでも、その指紋も改ざんされる可能性がありますが。
フィンガープリント(指紋)って?
まぁ~その名の通り、その公開キーの指紋です。
指紋が伝えられたものと、一致していれば、その公開キーは本人のものであると、証明ができます。
指紋が書いている場所は、右クリックを行い、詳細を選択。
詳細画面に、「Fingerprint」とという項目があるので、その20バイト(16進数)が、指紋に当たります。
それを信頼できる方法(直接伝えるのもよし、電話で伝えるもよし、FAXで伝えるのもよし)で相手に伝えればいいのです。
そうやって、お互いの公開キーを交換しましょう。
ほかにも、簡易キー配布所を作って、そこのURLを伝える
前に、「自分だけのPGP公開キー検索サイトを作ってみた - Qiita」みたいな、簡易的な公開キー配布所を作って、そこに公開キーを入れておくというのも手です。
そして、相手方には、メールアドレスと指紋を教えれば、改ざんは、より難しくなります。
もらった公開キーをインポートする
さて、公開キーをあげてばかりではなく、もらわないといけません。
ということで、相手方も、上記のリスクを念頭において、受け取ってください。
ダブルクリックすると、警告が出ます
受け取った、公開キーをダブルクリックすると、Kleopatraが立ち上がり、以下のようなダイアログが出ます。
簡単に訳しますと、
上記でいっていたリスクがあるから、指紋は、電話や名刺や信頼されたサイトで確認しなさいよ。
実行してもいい?
って感じです。
もちろん、はいをクリックします。
検証証するユーザーID(メールアドレス)と、指紋の確認
以下の画面が出るので、ユーザーIDの確認と、フィンガープリント(指紋)の確認をしてください。
特に指紋が同じかどうかは、正確に確認して、チェックを入れてください。
両方とも、チェックを入れたら、次へをクリックします。
自分の秘密キーでこの公開キーを署名する
次へをクリックしたら、以下の画面が出ます。
署名をするには、秘密キーを持っている必要があります。
たいてい、1つしかありませんが、私のように複数ある場合もありますw
その人とメールのやり取りをする(公開キーの交換をした)ユーザーID(メールアドレス)を選択をしましょう。
そして、「自分自身のためだけに署名する」を選択しておきましょう。
別に、「見る人すべてに署名する」でもいいのですが、署名した証明書を後でサーバに送信するというチェックは外しておきましょう。
外しておかないと、もらった公開キーが、公開キーサーバーにアップロードされて、検索されてしまいます。
一般的な公開キーサーバー
PGP KEYSERVER
SKS Keyservers
しかも、残念なことに、一度公開されたら、消せない仕様になっています。
Revoke(無効)を送信することはできますが、メールアドレスそのもの情報は削除できません。
なので、公開キーを公開キーサーバーに公開するのは、控えたほうがいいでしょう。
署名をクリックしたら、パスワードを求められるので、自分のパスワードを入力する
署名をクリックすると、パスワードを求められるので、署名する、自分User-IDのパスワードを入力しましょう。
署名が完了したら、以下の画面が出る
署名が完了したら、以下の画面が出ますので、完了をクリックしましょう。
Kleopatraの鍵の一覧にインポートしたユーザーを確認する
Kleopatraの鍵の一覧にインポートしたユーザーがいることを確認してください。
重要なのは、User-ID'sが「certified」になっていること。
自分が署名したことで、「認定」されました。
not certifiedになっていたら、右クリックして、「詳細」をクリックし、署名をクリックし、再度、署名作業を行ってください。
ということで
ここで、力尽きました…
続きが読みたい方は、いいね等シェアして、励ましていただけると助かります。
よろしくお願いいたします。
2019/04/25追記 やっとファイル添付編ができました
PGP(GnuPG)の導入方法教えてやるから、いい加減、ファイルをZIP暗号化して、別メールでパスワードを送るのは、やめてくれ! ~ファイル添付編~ - Qiita
よろしくお願いいたします。