Everything You Need To Know To Start Using GnuPG with Mutt Justin R. Miller justin@solidlinux.com 高橋全 - 日本語訳 arms405@jade.dti.ne.jp 23 September 2001 Revision History Revision 0.1 23 September 2001 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Table of Contents I. 目的 II. 概観 III. いくつかの前提 IV. GnuPG を設定する V. 秘密鍵を保護する VI. 公開鍵を公開する VII. 正確度と信用の輪について理解する VIII. メッセイジ署名の必要性を理解する IX. どうやって署名ができるのかを理解する X. どういうふうに暗号化されるのか理解する XI. 手作業で鍵を管理する実践例 XII. 手作業で署名したり検証したりする実践例 XIII. 手作業で暗号化したり復号化したりする実践例 XIV. Mutt を GnuPG 用に設定する XV. ぜんぶやってみる XVI. さらなる情報へのリンク XVII. 貢献者たち XVIII. フィードバック I. 目的 ボクは今,いくつかの理由があってこの文書を書いている.ひとつめに,すべ ての人はメイルに暗号と署名を使うべきだと信じていること. ふたつめに,もしキミがもう Mutt (これはたくさんの人が使っているが) のよ うなメイルクライアントを使っているなら,PGP 互換のソフトウェアを使わな いでいる理由はぜんぜんないと信じていること. みっつめに,ボクがこれまでずっと見てきた文書はぜんぶ,前から PGP を使い こなしてきた誰かさんに合わせて書かれていて,ただ「Mutt の送信時自動署名 の設定方法」とか「旧式なインライン PGP メッセイジを S/MIME 式に書きなお させる procmail 設定ファイルの書式」とかを説明してるだけだからだ.そう いう情報は,もしキミが専門用語 (jargon ってやつ) を知らなければほとんど 無意味だ.ボクが今あるそうした文書を踏みつけてやりたいと思ってるわけで は決してない.Mutt や GnuPG に関する,「Mutt-GnuPG-PGP-HOWTO」とか,他 のどんな既存文書も.ボクはただ単純に,Mutt をGnuPG と一緒に使うってこと だけに関する情報源を提供したい,そして全体的な問題のなかでだいじなとこ ろを要約して,はやく,りっぱに,責任感を持って始められるよう助けたいだ けなんだ. よっつめとして,フリーソフトウェアのプロジェクトである Mutt と GnuPG を 両方とも促進して,ふだんのコミュニケイションにもっとよく使ってもらおう としているから. 最後の理由は,ボクが入門書を書くのが好きで,たくさんの人にこの文書を使 ってもらいたいと思っていること.ボクは独りでいろいろ調べたり数字を計算 したりしたから,これからはみんなの力になっていきたいんだ. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ II. 概観 この文書を読み終えるころには,キミは暗号学的に署名/暗号化されたメイル を送受信できるようになる.そう.Mutt というメイルリーダと,GnuPG という OpenPGP (RFC2440) 規格を満たした GNU ソフトウェアを使って送受信するんだ .どうして暗号を使うべきなのか知りたいなら,どうか最初にその話題のあた りを読んでほしい.(この文書の最後のほうにあるリンクも参照) GnuPG を Mutt で使うのはとっても簡単なのだが,おもに教わるのは,実際に 行なうことの背後に隠れた理論や不必要な詳細だ.この文書では署名の必要性 とメッセイジの署名方法,送られてきたメイルの署名をどうやって検証するか ,メッセイジをどう暗号化するか,そしてどうやって復号化するかについて説 明するつもりだ.だからこれでキミは Mutt の視点から,メイル友達の公開鍵 をどうやって集めたり管理したりできるのか,とか,どうやって自分の秘密鍵 を管理すればいいのかもわかるはず.さらには,自分の公開鍵を公開するには どうすればいいか,とか,ほかの人がキミと連絡をとるときに PGP を使うよう 励ます方法までわかるだろう. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ III. いくつかの前提 この文書を読む前にキミは,Mutt というメイルリーダの基礎知識を持っていて ,公開鍵暗号方式の基本を知っているべきだ.つまり,公開鍵は他人がキミへ のメッセイジを暗号化するときとかキミからの署名を検証するときに使うもの で,秘密鍵のほうは署名をつくったり自分あてのメッセイジを復号化するとき のためのものだということを知っていてほしい. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ IV. GnuPG を設定する 秘密鍵と公開鍵を造り出すために,GnuPG からの指示に従おう.どんな値を使 えばいいかわからなければ「key type (鍵の形式)」と「key size (鍵の大き さ)」にはデフォルト (既定) の値を使い,名前とメイルアドレスはキミが普通 に書いているとおりのを使うこと. あとはただ,必要なら勝手に公開鍵を取ってきてくれるように GnuPG を設定す るくらいだ.これは Mutt と使うとたいへん便利で,もうわざわざ他のターミ ナル (端末) で鍵をダウンロードして取り込む必要がなくなってしまう.これ をするには,キミの「~/.gnupg/options」というファイルにこういう行を書き 足せばいい ┌──────────────────────────────────┐ │ keyserver <鍵サーバのアドレス> │ └──────────────────────────────────┘ いくつかのおすすめ鍵サーバ ┌──────────────────────────────────┐ │ wwwkeys.pgp.net │ │ search.keyserver.net │ │ pgp.ai.mit.edu │ └──────────────────────────────────┘ 覚えておいてほしいのは,鍵の取り出しは HTTP とかを介してやるわけではな いから,鍵サーバのアドレスは「http://」とかを付けてはいけないということ だ. ボクの公開鍵を取り出してテストしてみよう. ┌──────────────────────────────────┐ │ gpg --recv-keys 0xC9C40C31 │ └──────────────────────────────────┘ では,その鍵がキーホルダ (鍵束ファイル) に入ったことを確認しよう. ┌──────────────────────────────────┐ │ gpg --list-keys justin │ └──────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ V. 秘密鍵を保護する ここで一番だいじなセキュリティの要点は,自分の鍵束ファイルを守ることと ,それにも増して,自分のパスワードを守ることだ.もしかしたらキミの秘密 鍵が盗まれることだってあるかもしれない.でもパスワードが取られなければ ,そんなもの持っていたってほとんど価値はないはずなんだ. 秘密鍵をコピーしておくマシンの台数は制限しておくべきだろう.秘密鍵を運 ぶときにもフロッピディスクとかの物理的な手段でやるべきだ.まわりから盗 み見られる可能性が排除されていると確信できない (たとえば他人がキミのフ ァイルにアクセスできるようなコンピュータとか) という環境には,秘密鍵を 持ち込んではいけない.あるいは,職場には「職場用の鍵」とかを別に造って おくとして,「家の鍵」は安全な場所にしまっておかないといけない. キミの秘密鍵が盗まれるってことは,キミのアイデンティティが盗まれるとい うことなんだ.発達してきているデジタル社会においては,キミの秘密鍵はそ ろそろ写真付き身分証明と同じ重みを持つようになるだろうし,場合によって は既にそれ以上ということだってある. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ VI. 公開鍵を公開する キミの公開鍵は,キミからの署名つきメッセイジを検証するためにも,キミに 暗号化メッセイジを送るためにも必要だ.その鍵をみんなが使えるようにする には,ウェブサイトに置くとか,印刷・出版するとか,メイルや郵便で送ると か,鍵サーバに上げておくとか,ほかにもいろいろな方法がある. 公開鍵のある場所が多ければ多いほどいい.なぜなら,それがぜんぶ書き変え られて誤用されちゃうという危険性がそれだけ低くなるからだ.でも,鍵がた くさんの場所から入手できて,それがすべて合っているからといって,それだ けではその鍵が正しいとみなされることにはならない.鍵は,キミの信用の輪 (次の章を参照) のなかで正しい (たとえば本当にその持ち主のものだ) と認め られている場合だけ正しいと認識されることになる.わかりやすく言おう.キ ミは,あるメッセイジがその鍵で生成されたかどうかは区別することができる .しかし正確度チェックをしないと,その鍵が本当に,持ち主だと思っている とおりの人のものかどうかは区別できないということだ. ボクの公開鍵は,この文書にもあるし,鍵サーバで鍵 ID かボクの名前を検索 しても出てくるし,ボクのウェブサイトにもある.それに加えて,Muttを (あ との方にあるとおり GnuPG を使えるよう設定してから) 使えば自分の公開鍵を 送るのも簡単だ.ただ「Esc」キーに続けて「k」を押せばいいだけだ. また,鍵のダウンロード情報に関するヘッダをメイルに付けることもできる. ボクの私的メイルにはぜんぶ,こういうヘッダを含めている ┌──────────────────────────────────┐ │ X-PGP-Key: http://solidlinux.com/~justin/pubkey.asc │ └──────────────────────────────────┘ こうした方法すべては,メイルすべてに署名することも含めて,キミがセキュ ア (安全確実) なメイル交換のために暗号を使いたがっているということを知 らせる助けになる.こういうことをすると,よく,添付署名にどんな意味があ るのか,とか,どうしてキミがウェブサイトにわけのわからない文字の羅列の ファイルを置いているのか,という疑問も引き起こすことになる.こういうと きこそ,PGP や危険意識を広める絶好のチャンスだ. 大観衆に (メイリングリストやなんかを通して) 送るメッセイジに署名するこ とが適切かどうか,ということについては大きな論争がある.ボクは近い将来 ,この論争の両サイドの論議を (訳注: 文書のかたちで?) 入手可能にしたいと 思っているが,もっと情報がほしいんだったら,mutt-users とか gnupg-users のメイリングリストの記録を検索することができる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ VII. 正確度と信用の輪について理解する ある特定の鍵についての「Validity (正確度)」とは,その鍵がキミの思ってる とおりの人のものだという知識を指すコトバだ.この知識は,その鍵に署名し た人たち (その鍵の持ち主も含むけど,その人だけとも限らない) に対するキ ミの信用に基づいている. だから,ある人物の「Trust (信用度)」は,ひとつの特性としてキミが GnuPG に組み込むものというわけだ.信用度はキミだけが知っていなければならない 私的な値で,キミが,ある鍵へのその人の署名を自分の署名と同じように信用 するかどうかとか,そういう信用の置き方の度合いを指すものだ.最初は,鍵 の持ち主はみんな「unknown (不明)」っていう信用度を持っている.もし不正 に署名する輩だと知ってれば,キミはその人に「none (なし)」という信用度を つけるかもしれない.「marginal (部分的)」という値なら,その人が鍵の署名 を分かっていて,かつ正しく行なっているという意味になる.「full (完全)」 という値は,その人が鍵への署名についてのとても良い理解があって,ある鍵 にその人の署名が付いていればキミが自分で署名したのと同様に信用するほど だ,ということを意味する. デフォルトでは,たった一人でも完全な信用度を持つ人の署名があるか,ある いは三人の部分的な信用度を持つ人の署名があれば,その鍵は正しいと認めら れる.これはもちろん再設定できるけど,部分的に信用されている持ち主の人 数がそれより少なくてもいいことにすると,それだけ少人数でも口裏を合わせ て鍵をキミに渡せば,それを正しいとみなしてしまうことになる. だから信用された署名というものは必要で,それがないと鍵は正しいと認めら れない.ただ,それがないからといって,その鍵が予想と全然ちがう人のもの だということにもならない.それなのにソフトウェアは,それを知るすべがな いぞと言って警告している.明らかに,信用の輪は公開鍵暗号方式の弱点だ. とはいえ,正しく使えばこのシステムも,ある程度までは確信が持てる状況を もたらすことができるはずだ. ひとつの例で鍵の正確度の大切さを説明させてほしい.キミが IRC (チャット) で誰かと知り合ったとしようか.彼女は長い時間をかけて,いろいろなシステ ム管理の問題で助けになってくれた.そしてキミに,ルート権限で実行すべき スクリプトファイルを送ってくれると言っている.さて,このスクリプトが確 実にこの人から来ると分かっているのであれば,自分のマシンでそれを実行す るのに何ら問題はない.キミは彼女を信用しているのだから.しかし,もしか したら誰かが前からキミと友人とのやりとりを,キミが彼女の公開鍵を手に入 れたメイルも含めて乗っとっていたかもしれない.もしそうだとすると,そい つは彼女のメッセイジを書き換えて有害なスクリプトを含ませたうえで正しい ものとしてキミに渡すこともできてしまう.最終結果としてキミは害を受けて ,その友人を責めることになるかもしれない. まず正確であることを確実にしてから公開鍵を使うようにしていたら,こうい うことは避けられたのだ.その鍵に自分で署名しておけば正確だということに しておける.その鍵が少なくとも一人,完全に信用できる人から署名してもら っていることが確認されれば,それでも確定する.あとは,その鍵が三人以上 ,部分的に信用してる人から署名されているのでもいい. 公開鍵に自分の秘密鍵で署名するためには,キミはその鍵が絶対に,本人の言 う通りの人物のものだという確信を持っていなければならない.だから,自分 が署名する前には,信頼できる伝達方法を使って,その鍵の指紋を検証するべ きだ.指紋はこうすれば見ることができる ┌──────────────────────────────────┐ │ gpg --fingerprint │ └──────────────────────────────────┘ たとえば,ボクの指紋はこれ ┌──────────────────────────────────┐ │ 2231 DFF0 869E E3A5 885A E7D4 F787 7A2B C9C4 0C31 │ └──────────────────────────────────┘ 持ち主と直接会って話したり,(声を知っているなら) 電話で聞いたり,内容証 明郵便 (? 原文: certified mail) のやりとりをして,その人が言っている通 りの本人だとわかった上でその指紋もピッタリだったときに,キミはやっと署 名をすることができる.こういうふうに ┌──────────────────────────────────┐ │ gpg --sign-key <鍵の持ち主の名前> │ └──────────────────────────────────┘ 信用度を指定するためには,GnuPG の信用度デイタベイスの,その鍵の持ち主 のところに信用度の値を割り振る必要がある.こうやって鍵を編集する ┌──────────────────────────────────┐ │ gpg --edit-key <鍵の持ち主の名前> │ └──────────────────────────────────┘ 「trust」と入力して,指示に従えばいい. これからは,誰か,鍵の署名の大切さを理解していると完全に信用できる人が いれば,そのキミの信用の輪のおかげで,その人の署名した鍵はすべて,正し いと信じられるようになる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ VIII. メッセイジ署名の必要性を理解する メッセイジ署名をするのは第一に認証のためだ.メイルの「From:」ヘッダはか んたんに偽造できるので,ほんとうに不確定要素だ.ちょっと見ただけでキミ はそのメッセイジを,本当はぜんぜん関係のない人からのものだと信じこまさ れてしまうかもしれない.しかし署名があれば,そのメイルが実際にキミの思 っているとおりの人から送られたのかどうか確定するのに役立つ. 第二の理由は内容保全だ.キミが取りに来るのを (プロバイダとかで) 待って いるメイルにぜんぶ触れる権限のある人は,そのメッセイジを変えることもで きる.単純に誰かとの待ち合わせの場所を変えることもできるだろうし,キミ がお金を振り込むことになってる銀行口座の番号とかいう,深刻な場合もあり うる.署名は,差し出し人のところからキミのメイルクライアントソフトまで の間でメッセイジが改竄されたかどうかを教えてくれる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ IX. どうやって署名ができるのかを理解する ふつう,署名はメッセイジに添付されてくる.別のところからダウンロードし てくる分離した署名も可能だが,メイルのように,ひとつで完結したコミュニ ケイションができることを目的としたものには実際的ではない.ひとむかし前 は,添付式署名はメッセイジの最後に貼り付けるのが標準だった.しかし最近 の標準は,本物の MIME 添付ファイルをメッセイジに含ませる形式だ.いずれ にせよ Mutt は両方の方式を検証できるので関係ないが. 重要なので理解していてほしい点だが,それぞれのメイルで署名は違っていて ,それぞれの署名は,その差し出し人の鍵とそのメッセイジ内容の両方に基づ いている.もしその人の署名がぜんぶ同じだったとしたら,だれかがメイリン グリストの投稿からその署名を書き写すだけで,自分のメイルに付けはじめる ことだってできてしまう.そういうわけで,署名しようとするデイタ内容も基 にして署名が造られる. もうひとつ重要な点が最近,セキュリティの会議で取り上げられてきた.それ は署名の弱点という問題だ.というのも,メイルの本文に対してしか署名はさ れないので,極悪ハッカがメッセイジを横取りして違う人に向けて送ったとし ても署名は無傷のままなのだ.だから,たとえばキミの上司が職場の誰かにメ イルで「おまえはクビだ!」と言ったとしたら,キミはそのメッセイジを誰か別 の人に送って,それを自分に宛てられたものだと思い込ませることができる. その署名を見ると,なんとその上司のだということになるわけだ.これを回避 する方法は,メッセイジ本文の中にいつもその宛て先をはっきり書いておき, そして言いたいことは,第三者が見ても誤解しないような文脈の中で言うよう にすることだ. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ X. どういうふうに暗号化されるのか理解する メッセイジが暗号になるという明白な事実は置いておくとして,暗号化につい ておぼえておかなければいけないのは,差し出し人でさえもその暗号メッセイ ジを読めないということだ.さいわい Mutt には二つの解決策がある.送り出 すメッセイジの平文 (そのまま読める文) のコピーを「送信済み」フォルダに 保存させるオプションが,まずひとつある.(Mutt の「fcc_clear」オプション を参照) また, GnuPG の「--encrypt-to」オプションを使って Mutt が暗号メ イルをぜんぶキミ向けに暗号化するよう設定すると,「送信済み」フォルダに ある暗号メイルは自分で復号化することができるようになる.このいずれかを 設定しないかぎりは,「送信済み」フォルダにコピーがあったとしても,宛て 先の人しかそのメッセイジを復号化することができない. (訳注: Mutt のオプションについては「man mutt」とか「man muttrc」,あと は「less /usr/share/doc/mutt-doc*/manual.txt」というようなコマンドを Eterm 上などで打つと読める.表示されてから「/fcc_clear」と入力して検索 できる.終了するときは「q」を押す) 誰かに向けてメッセイジを暗号化するためには,その人の公開鍵が必要になる .いったんその鍵を手に入れて宛て先にその人を指定すれば,メッセイジは (今のところは) 誰にも破ることのできない信号に暗号化されてしまう. 暗号化だけでは身元証明にはならないことをおぼえていてほしい.受け取り人 の公開鍵があれば誰でも暗号メイルを送れるからだ.暗号メイルに署名を付け ることによって,それがキミから出たものであり,キミが暗号化したものだと いうことを確証できる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XI. 手作業で鍵を管理する実践例 Mutt がキミに何をしてくれるのか理解するために,画面のウラ側で起こってい ることを知っておく必要がある.誰かの署名を検証したり,メイルをその人に 向けて暗号化するには,その人の公開鍵が必要だ.鍵は,その人のウェブサイ トからダウンロードしたり鍵サーバに要求したりもできるし,もしかしたら当 人がメイルで送ってくれるかもしれない.(ところで,もちろん Mutt には便利 なショートカット (短縮キー) があって,「Ctrl」を押しながら「k」を押せば ,メイルから鍵を取り出すことができる) 鍵の見かけはこういう感じ (これは ,ボクの公開鍵) ┌──────────────────────────────────┐ │ -----BEGIN PGP PUBLIC KEY BLOCK----- │ │ Version: GnuPG v1.0.6 (GNU/Linux) │ │ Comment: For info see http://www.gnupg.org │ │ │ │ mQGiBDsNpPoRBAC5A1vMkEiE2Z4AE9YYn3FOYi0K/ZDjUIz2/5wK4vX5IN149Yo5 │ │ HzOH0ftJK2oTBRaKJXF1DvUO+eyIRn02BiWoLB/Dy624LEZ7psyfGLB9v/OO1T8k │ │ 2RxAHVZefMOlJZhuAXpts2dtzkc0hBApo80Jgka1LW+i1uR/0EMj98hGwwCgl8cE │ │ k2xD4PZGNygAQ8NkVjkkVr8EALVGxfr4+WmmOn/RFyCnFppyYnTkBIPV0/5fUSzr │ │ z53AYXXCfbHx8eF8rRxCjmFdzSu212s7ISOqUXCahLSDcsWhjaavMzD/pA/GvWhO │ │ vTaVprdqT6pipQTvFXE4IgD1PRwl4KCu6BsJMeVWXQkjmh36y1FIA2Ub43VQnZJE │ │ ZBitBACaS+S7+fVFvyvK654Chh0K3Klc1zUL9TE5l0Os2veFLS2s9d6y6fpEhnB0 │ │ iABWPPXZRuPFjM8GG1cw/KtQDo/H2y2PtwG3mElF3fdZklGurvCTffWJyE2UZBz0 │ │ s1owo2LJF978mzKonLOc2sYT7Ix5mdsgdBAjZ4kH8EP7t3NukrQjSnVzdGluIFIu │ │ IE1pbGxlciA8anVzdGluQHZveGVsLm5ldD6IVwQTEQIAFwUCOw2k+gULBwoDBAMV │ │ AwIDFgIBAheAAAoJEPeHeivJxAwxVeEAnRdggrNekDQMyTmd5C1UjITxIhEoAJ9m │ │ q4RDI8Fw8waK4xIGkT32gcR7H4hGBBARAgAGBQI7DcFUAAoJEN+hndnKoo+RBgMA │ │ n3VjFLMZUJO86aqg4MEoQaouK5L4AJ9X5s07QlGNqRruAAVvyQ2tCIz7KbQoSnVz │ │ dGluIFIuIE1pbGxlciA8anVzdGluQHNvbGlkbGludXguY29tPohXBBMRAgAXBQI7 │ │ DsfIBQsHCgMEAxUDAgMWAgECF4AACgkQ94d6K8nEDDFB/QCfYengAcA03vdik/vp │ │ ktnSg88R8Q8An1iQ8g9UKNIBPzbhLYOSOa441y9guQENBDsNpP4QBAC6KTosKykU │ │ PZQY+bd+hTPBHArGLFXGHC5RJtCVEU7iZHt4CEEEveAt6pAzoM/IBEIl0kHoG9Zq │ │ KUE8DY8Wnc/c0fLBFuLxa5G5J+6NBXrQwf7mOhbpFjvUPegnJJpUaTJRCYLc4sBt │ │ jMfaAUZJR5xRXVipLk0e8EwIuDDR1eVwbwADBwP7BU/PbNPMkGcxdrCyznBEvZAA │ │ txqvplJwPZbOpMJ6ck/ckeXoy6G8f3vGUyGqg8bwS8SC+pxOkaBVDdpLXcfcJwJJ │ │ R88HXIjfYZdalnMDELDHAvSsHxDsjs49tLzXRRQ0NpGPEGFiXHzMv43Ke8oYErqd │ │ BvyyxvcrgZ6DdScYwWOIRgQYEQIABgUCOw2k/gAKCRD3h3orycQMMX4zAKCBlYSH │ │ yeddCzek9yaiPoOD+6s3zQCfU0FwlY6o+vDLhSRerSfoA90g7gk= │ │ =ERSn │ │ -----END PGP PUBLIC KEY BLOCK----- │ └──────────────────────────────────┘ とりあえず鍵ファイルがキミのコンピュータに入ったら,それをキミの鍵束, つまり鍵の倉庫みたいなものだが,そこに入れるためにこうしておこう ┌──────────────────────────────────┐ │ gpg --import <鍵ファイル> │ └──────────────────────────────────┘ あとの世話はみんな GnuPG がみてくれる.このシステムの利点は,開始と終了 のマークの外の無関係な文章が無視されるから,鍵を,ほかの情報の入ったテ クストファイルに埋め込むことができるところだ.そんな中からでも GnuPG は 鍵を (複数でも) 取り出すことができる. キミの鍵をぜんぶリストアップして,鍵がもうキミの鍵束に入っていることを 確認できる ┌──────────────────────────────────┐ │ gpg --list-keys │ └──────────────────────────────────┘ 鍵 ID か持ち主の名前から特定の鍵をリストアップすることもできる ┌──────────────────────────────────┐ │ gpg --list-keys <持ち主の名前> (原文: first name) │ └──────────────────────────────────┘ ここまでのは公開鍵の必要最低限な使い方だけだということをおぼえているよ うに.信用の輪を考慮にいれると,あとから鍵の持ち主の信用度を編集したり ,本当にその鍵を使ったコミュニケイションを信頼したければ鍵に署名したり するべきなんだ. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XII. 手作業で署名したり検証したりする実践例 ためしにこういう例文をつかおう ┌──────────────────────────────────┐ │ Here is some sample text. │ └──────────────────────────────────┘ もしこれを「sample.txt」というファイルに保存して,配布するまえに署名し ておきたいと思ったら,ボクはこうする ┌──────────────────────────────────┐ │ gpg --clearsign sample.txt │ └──────────────────────────────────┘ パスワードを入力すると,新しく署名されたものが「sample.txt.asc」に出力 される.こういうふうに ┌──────────────────────────────────┐ │ -----BEGIN PGP SIGNED MESSAGE----- │ │ Hash: SHA1 │ │ │ │ Here is some sample text. │ │ -----BEGIN PGP SIGNATURE----- │ │ Version: GnuPG v1.0.6 (GNU/Linux) │ │ Comment: For info see http://www.gnupg.org │ │ │ │ iD8DBQE7fE+B94d6K8nEDDERAnWcAJ9ZOEiWcmfuDokPfvJtch/ERbZZFwCfeNKS │ │ 3UFUmgeigIIJQcZbhocMJUQ= │ │ =FCcr │ │ -----END PGP SIGNATURE----- │ └──────────────────────────────────┘ Mutt を使うと,文章を勝手に署名してくれるし,パスワードは設定しておいた 時間だけとっておいてくれるようにできる.それに,受け取り人がキミのメッ セイジを MIME 添付ファイルの署名付きで手に入れるようにもできる. さて,署名付きファイルを検証するために,こうしよう ┌──────────────────────────────────┐ │ gpg --verify sample.txt.asc │ └──────────────────────────────────┘ 画面には,もしボクが署名した人 (つまりボク) の公開鍵を持っていれば,こ ういうふうに出てくる (訳注: $LANG=C の場合) ┌────────────────────────────────────────┐ │ gpg: Signature made Thu 16 Aug 2001 06:56:01 PM EDT using DSA key ID C9C40C31 │ │ gpg: Good signature from "Justin R. Miller " │ └────────────────────────────────────────┘ Mutt は勝手に署名を検証したり,必要なら公開鍵を取り出したりできる.署名 されたメッセイジも,署名の正確度に関する情報が何行か付いただけの,ただ のメッセイジ文として表示してくれる.だから見かけは普通のメイルみたいだ し,差し出し人の公開鍵さえあれば (または自動取得できれば) 何もしなくて もメッセイジの内容証明ができてしまう. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XIII. 手作業で暗号化したり復号化したりする実践例 ファイルを暗号化するから,こうしよう ┌──────────────────────────────────┐ │ gpg --encrypt --armor sample.txt │ └──────────────────────────────────┘ この「--armor」オプションをつけると,暗号ファイルをバイナリ (2進数) 式 のデイタではなく,テクスト (文字) のデイタで出力させることになる.宛て 先の人の公開鍵を選ぶと,こんな暗号ファイルができる. ┌──────────────────────────────────┐ │ -----BEGIN PGP MESSAGE----- │ │ Version: GnuPG v1.0.6 (GNU/Linux) │ │ Comment: For info see http://www.gnupg.org │ │ │ │ wh/HTTQIPdAOfSz9ZwsabH5dS9llSpeHHNGpO2cyR90owL3/p59IqG/7YycnaT6m │ │ s5v45hAdGVVwHjwkUlqJElKgqD02S3i7qbOxOfE5vdeMhdew96/Axvi4QW94gY9R │ │ ZTKjfes5QstgMHswNtn8MHIjZBShVCmRzTh04LjC8R3u/hWSvOZZes2+dJIcZOUE │ │ AMvRRpatVVEb5AzdPRO1QaSHVwKQb+1DxeOWUviVOzp6CkPfmJPeazHRL6QjMZAM │ │ AW5SCo4WME7Gupx931TxckRhCxDjoC63fz5sZzDB6mZhDZRxJf8HcG0L0sz4oCXr │ │ hQEOA5Bet+UpglfCEAQAxojHuWKt/kcsdN8wZc4f0IJUU4WWEXWNoXUx+rN2Qkah │ │ QXNDInfL5U98QkLtiPMLIifkm7YjQtqx0/9Sm8ngpFKb0lkBve/VUt+Z6bRp+2iC │ │ m1KtBnoml6mYKCg05bRY6jrd2/0iT5sVBEHnaA== │ │ =jW1T │ │ -----END PGP MESSAGE----- │ └──────────────────────────────────┘ ただ,Mutt なら,暗号化したいということを指示してメニューから宛て先の人 の公開鍵を選べば,こうやって暗号化される様子を見なくてもメッセイジが送 られていく. ボクはもうあのファイルを見ることは (ボク宛てでないので) できないため, ただ,次の段階の,復号化に必要な手順だけ教えておこう ┌──────────────────────────────────┐ │ gpg --decrypt <暗号ファイル> │ └──────────────────────────────────┘ パスワードを入力したら,もしそのメッセイジがボク宛ての場合は,復号化さ れた文章を含んだ新しいファイルが書き出される. Mutt ならパスワードをとっておけるから,メッセイジは自動的に復号化されて ,暗号化されていたかどうかや,署名が同梱されてたかどうかということを示 す短い文章といっしょに,メッセイジ画面に出てくることになる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XIV. Mutt を GnuPG 用に設定する Mutt を GnuPG と合わせて使うためには,Mutt をビルドするときに PGP 機能 がコンパイルされている (←デフォルトではそうなっている) 必要がある.そ れから,キミの (訳注: ホームディレクトリの)「.muttrc」に命令を付け足す (それか,その命令の入ったファイルを読み出させる) ことも必要になる.ボク が使っている命令コマンドはこれ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" │ │ set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f" │ │ set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" │ │ set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f" │ │ set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f" │ │ set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f" │ │ set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f" │ │ set pgp_import_command="gpg --no-verbose --import -v %f" │ │ set pgp_export_command="gpg --no-verbose --export --armor %r" │ │ set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" │ │ set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" │ │ set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" │ │ set pgp_autosign=yes │ │ set pgp_sign_as=0xC9C40C31 │ │ set pgp_replyencrypt=yes │ │ set pgp_timeout=1800 │ │ set pgp_good_sign="^gpg: Good signature from" │ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ GnuPG との間に必要な基本的コマンドを別にすれば,この命令は Mutt に,送 信メイルをぜんぶ自動的に鍵 ID 0xC9C40C31 (ボクのだ) で署名して,暗号メ イルをそのうえボク宛てに (「送信済み」フォルダへの保存用に) 暗号化して ,パスワードは 30 分間 (訳注: 1800 秒) とっておくようにしろ,と言ってい る. (訳注: pgp_good_sign 変数は自分の環境に合わせる必要がある.このま ま使いたいときは pgp_verify_command などの冒頭を「LANG=C gpg」とするこ と) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XV. ぜんぶやってみる ここまでくれば Mutt は準備ができているはずだ.初めてメッセイジを送ると きには Mutt がキミのパスワードを聞いてくるだろうが,それは中に記憶され て,そのあとの送信メイルはぜんぶ署名されていくことになる.署名されたメ イルを受け取ったときには,Mutt が差し出し人の公開鍵 (必要なら取り出して くれる) で署名を検証してくれる.暗号化するときには (記憶になければ) パ スワードが聞かれて,それから宛て先の人に合うと思われる公開鍵のメニュー が出てくる.最後に,復号化するときのことだが,パスワードが記憶からもう 消されてたりまだ入力されてなければ,このときも聞かれることになる. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XVI. さらなる情報へのリンク ・ Eメイルクライアント Mutt ホームペイジ (The Mutt E-Mail Client Home Page) (http://www.mutt.org/) ・ GNU プライヴァシガード (GnuPG) ホームペイジ (The GNU Privacy Guard Home Page) (http://www.gnupg.org/) ・ Mutt-i (による?) GnuPG と PGP ハウトゥ (The Mutt-i, GnuPG and PGP Howto) (http://linuxdoc.org/HOWTO/Mutt-GnuPG-PGP-HOWTO.html) ・ 国際化 PGP ホームペイジ (The International PGP Home Page) (http:// www.pgpi.org/) ・ なぜ暗号を使うべきか (Why You Should Use Encryption) (http:// www.goingware.com/encryption/) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XVII. 貢献者たち この文書の校正での助力について下記の人たちに感謝したい ・ Dave Chapeskie, たくさんの説明,訂正,勧告,そしてセキュリティの小 技で ・ Thomas Roessler, 正確度と信用度についての,とてもわかりやすい説明で この文書の新版に組み込もうと思っているが,提案とか反応をくれたことにつ いて下記の人たちにも感謝したい ・ Andrew McDonald ・ Rick Moen ・ Andy Smith 最後に,ここまで読んできてくれたキミに感謝したい.ありがとう! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ XVIII. フィードバック この文書がキミの役に立てたなら嬉しい.もし何か改良する方法があれば教え てくれ.ボクには (訳注: 英語の) メイルで justin@solidlinux.com に連絡を とることができるが,もちろんキミには暗号を使ってほしい.そのときには, ボクの公開鍵を使うことになるが,それはこの文書のどこかにもあるし, http://solidlinux.com/~justin/pubkey.asc にもある. $Id: mutt-gnupg-howto,v 1.8 2001/09/24 03:38:16 justin Exp $