14-4. 暗号化電子メ−ル PGP '96〜 (1) 電子メ−ルの暗号化 * 概要 11章 "セキュリティ技術" でも述べたが、すでに暗号化電子メ−ルには PEM、PGP、KPS など幾つか利用可能になっている。これらは互換性はなく、まだまだ発展途上にある。私 見として、もしどれを使うか決めるとすれば、しばらくは PGP がいいと思う。 ただし使 うには、相手も PGP を使ってもらわないけない。そこは別問題とする。 PGP は個人の証 明という問題で、第三者機関の認証局がいらない。このため誰でもすぐ使い始めることが できる。どうも現時点では一番普及しているようである。 そうこうするうちに PEM とも 互換性がとれてくるだろう。この PEM は認証局があり、 自己の証明を申請しなければな らない。また PEM は仕様であり、ソフトは WIDE プロジェクトが作った FJPEM を使うこ とになる。そして認証局は WIDE をはじめ幾つかのボランティア組織が担っている。 しばらくは PGP でいいだろう。しかし97年後半以降はどうなるかわからない。 個人の 認証という問題がやはりかかわってくる。 現在のところ PEM の MIME 対応では認証局不 用へと動いている。これは電子メ−ルが、いわばよく知った人との間でかわされるならば、 第三者に証明までしてもらう必要はないということだろう。 PGP も PEM もメ−ルを送る のに、相手の公開鍵で暗号化する。メ−ルは対応する秘密鍵をもっているその相手しか解 読できない。自分が信頼した、比較的少数の人とメ−ルをやりとりする場合は、公開鍵を 安全に渡すことができる。問題はおきない。しかし今後ECで、未知の人と電子メ−ルを やりとりするとなれば話は別になる。 ECの電子商取引のための SET プロトコルが97年春でてくる。 個人のためのデジタル IDをクレジット会社などが発行していくことになるだろう。そしてデジタルIDには個 人の公開鍵が含まれるはずである。 SET は Netscape 社が開発した SSL 暗号化プロトコ ルの上にのっかている。それに Netscape には電子メ−ル機能もすである。電子メ−ルの 暗号化にも、このデジタルIDを使えるようにするのはしごく当然である。クレジット決 済のためだけに、デジタルIDを使うようなケチな了見は願い下げたい。しかし利用料金 が心配である。ただという訳にはいかないだろう。しかし今までただで使っていたものが、 いくら安全のためだかといって、1回100円も払うようなことになってでは、普及はお ぼつかない。 * キ−ワ−ド ・PGP も PEM も公開鍵暗号方式であり、1組の秘密鍵と公開鍵を使う。 ・公開鍵は暗号化する時に、秘密鍵は復号化して元に戻す時に使う。 ・秘密鍵を扱うときは、自分のパスワ−ド(パスフレ−ズ)が必要である。 ・MIME 対応したのが PGP/MIME、PEM/MIME である。 ・PGP/MIME を山本一彦氏が Mew に実装した。Mew Ver. 0.96 がある。 ・PEM/MIME は PEM と互換性はなく、MOSS と名前をかえて開発されている。 ・ただの PGP も PEM もプレ−ンテキストのみ対象になっている。 ・PGP と PEM の互換性はない。 ・PEM は規格であり、実装例には RIPEM や FJPEM がある。 ・FJPEM は WIDE が作り /usr/ucb/mail や emacs/mule-mhe などから使う。 ・PGP には認証局はないが、他者による電子署名の仕組みはある。 ・FJPEM を使うには認証局から証明を受けなければならない。 ・証明の中身は、認証局による自分の公開鍵の電子署名である。 ・FJPEM の認証レベルは3段階あり、ボランティアが認証局を運営している。 用語:PEM( Privacy Enhacend Mail ) MOSS( MIME Object Security Service ) PGP( Pritty Good Privacy ) * WWWサ−バの暗号化との違い [ 電子メ−ルの場合 ] A B ------------ ------------ これは PGPによるメ−ルの暗号化の場合 |Bの公開鍵| |Bの秘密鍵| である。S/MIMEによる暗号化では実際に |で暗号化 | --------> |で復号化 | は、共通鍵がメ−ル本文の暗号/復号を ------------ ------------ 行う。この共通鍵を公開鍵で暗号化、秘 ↓ + さらに電子署名を付け加える 密鍵で復号化するようになっいる。 ------------ ------------ |Aの秘密鍵| |Aの公開鍵| BはAの公開鍵を安全にもらうならば認 |で暗号化 | --------> |で復号化 | 証局は基本的にはいらない。 ------------ ------------ [ WWWの場合 ] 本物でなければその後のアクセスはでき ない。リアルタイムで送られる公開鍵が A B 偽造される可能性はあるか。ない!。 ------------ ------------ ↑ |Aの秘密鍵| |Aの公開鍵| Aの公開鍵はアクセスの最初に送られて |で暗号化 | |で復号化 | くる。果たして本物か?。 | + | --------> | | ↓ | 電子署名 | | | どこかがAの公開鍵を別に管理し、比較 ------------ ------------ できるようにするか。Aの公開鍵自体を WWW ブラウザ 信頼できる他者に電子署名してもらうか。 認証局が必要であるという見解になる。 * 参考資料 「PGP暗号電子メ−ルと暗号署名」 Simson Garfinkel 著、1996/04/15 発行、オ−ム社。 > 税抜き 5,202 円。当時、唯一の本だった。この本と 1995 年頃の「UNIX MAGAZINE」掲 載の PGP の記事を参考にした。暗号の仕組みを学習するのに、比較的分かり易かった。 「INTERNET magazine」 1997/11, P.258〜267 > "暗号メ−ル〜その仕組みと実践"。Becky! Internet Mail 1.21 が PGP 対応 4,000 円。 Netscape Messenger は S/MIME 対応。IE4.0 付属の Outlook Express は S/MIME 対応、 S/MIME で使うデジタルIDを、Versign 社から6ヵ月無料のが取得できる。 「日経コミュニケ−ション」 1998/2/2, P.100〜120 > "特集:安全なインタ−ネット・メ−ル 暗号化と認証でここまで守れる"。フリ−ソフト の PGP 2.6.3i は、暗号化アルゴリズムに特許である RSA を使っている。 PGP の製品 版は特許でないフリ−の DSS( 米国政府標準 )方式を採用している。 * FJPEM の参考資料を追記 `2h/09/E Apolloコンピュ−タに FJPEM を検討しようとして Sun のマシンにインスト−ルした中で、 日本語の資料などを持ってきていた。 `2h/09/E ざっと "イントラネット構築法" を見直 していてこの資料を見つけた。暗号化メ−ルの基本を解説してあって、今日でも十分参考 になると思い、めぼしいところを抜粋しておくことにした。 $ ld -a sys type blocks current type uid used length attr rights name file unstruct 16 15465 P prwx- FAQ file unstruct 20 16787 P prwx- Guide file unstruct 8 5316 P prwx- Install file unstruct 4 2709 P prwx- Readme COPYRIGHT Fujitsu Laboratories Ltd. 1993 << 上記 Guide から抜粋 >> エンドユーザの方に, 30分で使える暗号メールFJPEMのりようのてびき  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Decemeber 27, 1993 February 25, 1994 kikn@flab.fujitsu.co.jp FJPEMは,貴方の電子メールを暗号化し, たとえ誰かに覗かれても中身のあの娘へのラブ レターを読まれないようにする愛のツールです.このドキュメントは,暗号理論に全く不 慣れな貴方に,FJPEMを利用するための最低限の予備知識を与え,FJPEMの利用の手引をす るものです. 前提として, 貴方は電子メールの送受ができることのみを仮定しています. また,FJPEMのパッケージは,貴方の近くに必ずいるはずの UNIX坊や(あるいはUNIX嬢や) によって,インストールされているものとします. 1. FJPEMのしくみ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 1.1 秘密鍵と公開鍵  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ FJPEMでは,二種類の暗号鍵を使います.秘密鍵と公開鍵です.二つで一組となり, ど のユーザもこの組を用意します.その名が示す通り,秘密鍵は他人に読まれないように 秘密に管理し,逆に,公開鍵は誰もが読めるように公開します.公開鍵はメールを暗号 化する時,秘密鍵は暗号メールを復号化してもとに戻すために使います. 例えば,貴方が彼女にメールを暗号化して送りたい時,貴方は彼女の公開鍵でメールを 暗号化して送信し,彼女は自分の秘密鍵で暗号メールを復号化して読むことになります. これで,貴方のメールを彼女以外の人が読むことは出来なくなります.しかし,彼女の 公開鍵は誰でも入手できるので,誰でも彼女に暗号(ラブ)メールを出せることになって しまいます. それは困ります.誰かが貴方になりすまして,彼女にちょっかいを出さないとも限りま せん.そこで FJPEMでは電子署名というものを使います.暗号化する時は,公開鍵,秘 密鍵という順序で暗号処理を行ないましたが,電子署名では,秘密鍵,公開鍵という逆 の順序になります. (どうして, 逆に計算しても同じになるのか疑問に思う好奇心旺盛な方がいるかも知れ ません.その方は, X * 3 * 1/3 = X という数式を考えてください.Xにどんな数を入 れても,3をかけて更に1/3 をかければもののXに戻ります.この,3と1/3が公開鍵と秘 密鍵に相当します.そうすると, 順序を逆にして先に1/3をかけても,X * 1/3 * 3 =X やっぱり元のXに戻りますね.これが,この疑問のおおまかな説明です. これでも納得 できない人は,池野信一,小山謙二,"現代暗号理論",電子情報通信学会,でも読んで ください) メール本文のチェックサムにあたるメッセージダイジェストを計算し,その値について 貴方の秘密鍵で暗号化して彼女に送ります.この暗号化されたチェックサムが電子署名 です.こうして,貴方の電子署名をつけて送れば,彼女は貴方の公開鍵を使ってそのメ ールが本当に貴方から来たものであることを知ることができるようになります. FJPEMでは,この電子署名だけをするモードを,MIC-CLEAR,電子署名して更に暗号化す るモードを ENCRYPTED といいます.MICとは,"Message Integrity Check"の略で, 本 文に書き換えがされていないことの保証を意味しています. ENCRYPTEDは,暗号化され たメールという意味です. 1.2 証明書と発行局  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 秘密鍵は通常,ホームディレクトリの .key というファイルに格納されます.一方,公 開鍵は,通常単体では配布しないで,証明書と呼ばれる形式で流通されます.証明書は, ディフォルトでホームディレクトリの .cert にあります. 証明書とは,公開鍵の印鑑証明のようなものです.印鑑証明がなければ,誰かが貴方の 名前の三文判を買ってきて,貴方になりすましてしまうおそれがあります.そこで,こ の公開鍵は間違いなく貴方のものであると,市役所のようなところで証明してもらわな くてはなりません.この市役所にあたるのが,発行局です. 英語の,Certification Authorityからとって,よく CA と略されます. 市役所がその市民のみを発行の対象としているように,発行局も通常は小さなドメイン 内のユーザに発行を限ります.そして,引越しをしたら住民票を移動させるように,発 行局の間でも証明書を交換する仕組みを用意するのが一般的です.ただし今回の FJPEM の実験では,まだ日本に一つの発行局しかないことと,一つの発行局の処理の限界を明 らかにするため,敢えて単一の発行局を利用します.証明書を申請する時にメールを用 いるので,発行局は通常その申請メールアドレスで指定します. 発行局には,その発行した全ての証明書が管理されています.これをユーザに自由に検 索させて証明書を配布するために,配布局が用意されています.配布局へのアクセスに は,whois プロトコルが用いられます. 1.3 FJPEMのフォーマット  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 次に,簡単なFJPEMの構成サンプルを示します.(一部略しています) 実際のサンプルで ある,SAMPLES/SAMPLE.ENC とSAMPEL.MICと, 各ヘッダーの意味を照らし合わせて見る といいでしょう. (a) MIC-CLEAR(署名だけ) (b) ENCRYPTED(署名+暗号化) From: 発信者アドレス From: 発信者アドレス To: 受信者アドレス To: 受信者アドレス ---BEGIN PEM MESSAGE--- ---BEGIN PEM MESSAGE--- Proc-Type:4,MIC-CLEAR Proc-Type:4,ENCRYPTED Originator-Certificate: Originator-Certificate: (発信者の証明書) (発信者の証明書) Issuer-Certificate: Key-Info: (発信者のための鍵情報) (発行局の証明書) Issuer-Certificate: MIC-Info: RSA-MD5, (発行局の証明書) (発信者の電子署名) MIC-Info: RSA-MD5, (発信者の電子署名) (メールの本文) Recipient-ID-Asymmetric: ---END PEM MESSAGE--- (受信者のID) Key-Info: RSA, (受信者のための鍵情報) (暗号文) ---END PEM MESSAGE--- さあ,これで最小限の説明は終りです.次節を読んで,証明書を申請してみましょう. 2. FJPEMをつかうための準備  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 2.1 貴方の秘密鍵を作ります.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ % makepemkey Writing in /home/kikn/.key Input random string : XXX (適当な文字を入れReturnを押します) ...in generating secret key. it takes few minutes. 数分後,ホームディレクトリ(/home/kikn)に .key というファイルが出来ます.乱数 には時間情報も影響していますので,ランダムな文字列にあまり神経質になることは ありません. 2.2 貴方の公開鍵の申請書を用意します.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ % makepeminfo > info これで,申請書の型紙がファイル info に出来上がります.例えば,次の様な内容に なっていれば成功です. 2.3 貴方の証明書を発行局へ申請します.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 証明書を申請するには次の三つの方法があります. A. 低信頼証明書を申請する. ※以下略。 B. 公証人に代理申請してもらう. C. 公証局へ申請する. (2) PGP の基本とインスト−ル * 基本知識の確認 ・1組の公開鍵と秘密鍵をまず作成する。 ・やり取りしたい相手と公開鍵を交換する。 ・送りたい相手の公開鍵で暗号化する。 ・相手からのメ−ルは、自分の秘密鍵で復号化する。 ・改竄を相手がチェックできるようにするには、電子署名をする。 ・電子署名されたメ−ルは、相手の公開鍵を使って改竄をチェックする。 * 基本的な使い方 公開鍵と秘密鍵を作るには、pgp -kg コマンドで、ユ−ザIDとパスフレ−ズを入力する。 ユ−ザIDはお勧めの書式があり、Nippon Taro が例である。 パスフ レ−ズは20文字以上が望ましい。パスワ−ドの長いものと思ってよい。 公開鍵は ~/.pgp にできた pubring.pgp ファイルで管理する。 相手の公開鍵のファイル をもらったら、自分の pubring.pgp に追加する。追加、削除などの作業は pgp コマンド でやる。 秘密鍵は secring.pgp ファイルが管理する。 これは絶対他人に渡したり見られたりしな いようにすること。 電子メ−ルのメ−ルは pgp コマンドを使って、xxx.asc と暗号化した ASCII 形式のファ イルを作る。このファイルを通常の電子メ−ルとして相手に送る。 [ pgp のコマンド ] e: 暗号化する。 t: 入力文字がテキストであると明示する。 a: 暗号文を ASCII テキストにする。 f: 出力をフィルタ−にする。 s: 電子署名をする。パスフレ−ズを入れる。 k: 鍵の操作をする。 -------------------------------------------------------------------------------- 鍵の管理までは説明しない。詳しくは本「PGP暗号電子メ−ルと暗号署名」を参照願う。 -------------------------------------------------------------------------------- * どのバ−ジョンを使うか PGP は RSA 社の特許にからんで、いろいろ問題があった。 ともかく国内で使うぶんには 2.6ui バ−ジョン であればOKである。 「INTERNET magazine」'96/11, P.228〜 "MacPGP で暗号メ−ルに 挑戦" では 2.6.3i が紹介されていた。まあこれも使ってもいいのだろう。 MacPGP は鍵 の管理もGUIでできる。pgp コマンドを裸で使うより、はるかに楽である。 98年9月追記:実質暗号メ−ルは PGP が使われるようになっている。最新版は"国際版 PGP 5.5.3i" になっている。非商用利用はライセンス・フリ−である。このバ−ジョンの Windows 用の日本語対応版を、 ネットワ−ク アソシエイツが '98/09/25 に 9,800 円で 発売している。UNIX用は日本語の関係で 2.6.3i がまだ使われている。 また PGP の 公開鍵用のサ−バが http://pgp.nic.ad.jp/ で実験運用されている。 ここでは自分の公 開鍵を登録したり、他の人の公開鍵を検索できるようになっている。 * PGP の入手とインスト−ル ftp.aist-nara.ac.jp:/pub/Security/tool/pgp/unix 686 Jun 21 1995 fileio.c.patch-2.6.2i << 日本語化のパッチファイル。 1330 Feb 3 1996 fileio.c.patch-2.6.3i 745 May 26 1995 fileio.c.patch-2.6.i 727 May 26 1995 fileio.c.patch-2.6ui 537659 Jun 21 1995 pgp262is.tar.gz 601290 Mar 31 1996 pgp263is.tar.gz << 特許問題がない 2.6ui バ−ジョンを 562663 Feb 27 1995 pgp26is.tar.gz ダウンロ−ドする。 他のも国内で使 463368 Feb 27 1995 pgp26ui-src.tar.gz う分には問題ないと思われる。 % zcat pgp26ui-src.tar.gz | tar xvf - % ls /usr/local/source/pgp26ui << 他にフランスとイタリア語の ドキュ README.1st config.txt contrib/ doc/ src/ メント es.hlp,fr.hlp,language.txt keys.asc pgp.hlp readme.doc srcfiles がある。 % cd src % cp makefile.unx makefile % patch < fileio.c.patch-2.6ui << パッチをあてる。 Hmm... Looks like a new-style context diff to me... The text leading up to this was: -------------------------- |Allow PGP to handle ESC. by kazu@is.aist-nara.ac.jp | |*** fileio.c.orig Wed Aug 17 22:21:53 1994 |--- fileio.c Fri Aug 19 13:28:38 1994 -------------------------- Patching file fileio.c using Plan A... Hunk #1 succeeded at 810. done % make コンパイルできるコンピュ−タのOSが表示される sun4gcc, sun4cc(*), sun3gcc, sun3asm, sun3cc(*), sun386i, sunspc, | bsd, bsdgcc, vax_bsd43, rt_aos4, osf, sgigcc_asm, sgigcc, irix % make irix make all CC=cc LD=cc \ CFLAGS="-O -DUNIX -DPORTABLE -DUSE_NBIO -DHIGHFIRST -acpp" cc -O -DUNIX -DPORTABLE -DUSE_NBIO -DHIGHFIRST -acpp -c pgp.c | cc -o pgp pgp.o ...o zinflate.o zip.o zipup.o ztrees.o zunzip.o % cp pgp /usr/local/bin * Apollo でもコンパイルしていた $ wd /nix/source/pgp26ui $ ld -a sys type blocks current type uid used length attr rights name file unstruct 8 6636 P prwx- README.1st file unstruct 4 3890 P prwx- config.txt dir nil 4 4096 P prwx- contrib dir nil 4 4096 P prwx- doc file unstruct 8 8141 P prwx- keys.asc file unstruct 68 66782 P prwx- language.txt file coff 208 211064 P prwx- pgp << 実行モジュ−ル。 file unstruct 4 3711 P prwx- pgp.hlp file unstruct 8 5919 P prwx- readme.doc dir nil 4 4096 P prwx- src file unstruct 4 2063 P prwx- srcfiles $ ld doc COPYING blurb.txt keyserv.doc newfor22.doc newfor23.doc pgformat.doc pgp.1 pgpdoc1.txt pgpdoc2.txt politic.doc readme.vms setup.doc README.1st -------------------------------------------------------------------------------- |-----BEGIN PGP SIGNED MESSAGE----- | | >>> THIS IS AN UNOFFICIAL RELEASE OF PGP <<< | |If you're new to PGP, go away and read the normal documentation first,then come |back and read this. If you're upgrading from a previous version, read on... | |MIT have released what they call version 2.6 of PGP. Unlike PGP 2.3a, it uses |the RSAREF library. This has a number of ramifications: | | 1. Key sizes are limited to 1024 bits. | 2. You must agree to the RSAREF license. | 3. MIT PGP 2.6 is not publicly and widely available outside the USA and Canada, | because RSAREF falls under ITAR export restrictions. | |Worse, MIT's PGP 2.6 has been deliberately crippled, so that after |September 1st 1994 it will produce encoded data which PGP 2.3a cannot decode. | |This is an unofficial release of PGP based on 2.3a, modified for |interoperability with MIT's PGP 2.6. The following changes have been |made: | | * This version of PGP will read encoded data produced by both MIT PGP 2.6 and | PGP 2.3a. | | * You can choose to write data either in the "new" format used by MIT PGP 2.6, | or in the old PGP 2.3a format. To do this, use the command line switch | +version_byte=3 for MIT PGP 2.6 format, or +version_byte=2 for PGP 2.3a | format (the default). | | You can also specify a line like: | version_byte = 3 | in your config.txt file. | | This version does *not* have any time-bomb code in it. If you want to switch | version byte like MIT PGP does, you'll have to do it manually on September | 1st. There's no advantage in doing so,unless you want it to look like you're | running MIT PGP. | | * You can choose the version text which you want to have appear in ASCII | armoured files. The default is 2.6, and if you're in the USA you probably | don't want to change it, as a well known net.personality tends to harass | people whose PGP armor says anything else. | | To change the version text, use a command line argument such as | +armor_version=2.6ui or +armor_version=2.3 -- but please do try and use | this feature responsibly, and don't go creating random version strings | unnecessarily. | | You can also specify | armor_version = 2.6ui | or similar in your config.txt file. | | (3) PGP の使い方 * 環境を設定する ~/.cshrc ------------------------ |setenv PGPPATH ~/.pgp % cd ~;mkdir .pgp % chmod 700 .pgp << 自分だけ見られるようにする。 % ls ~/.pgp pgpdoc1.txt pgpdoc2.txt << ともかくこれだけのファイルをもってくる。 config.txt 下記のインス−ルのところを見られたし。 * 公開鍵と秘密鍵を作成する % pgp -kg Pick your RSA key size: 1) 384 bits- Casual grade, fast but less secure 2) 512 bits- Commercial grade, medium speed, good security 3) 1024 bits- Military grade, very slow, highest security Note that MIT PGP 2.6 only handles keys of 504 to 1024 bits. Choose 1, 2, or 3, or enter desired number of bits: 3 | ユ−ザIDを入れる。 For example: John Q. Smith <12345.6789@compuserve.com> Enter a user ID for your public key: katou | ともかく適当に下の数字が0になるまでキ−ボ−ドをたたくこと。 on your keyboard until you hear the beep: 1 .* -Enough, thank you. (Ignored 303 keystrokes that were typed too fast.) 次の3つのファイルが .pgp ディレクトリにできる。 pubring.pgp : 公開鍵 secring.pgp : 秘密鍵 randseed.bin : キ−ボ−ドをたたいてできた乱数発生器。 * 暗号化したファイルを作成する test **** 自分で自分にメ−ルを送ってみる **** ------------------ |katou kun desu pgp のメッセ−ジは一部省略してあります。 % pgp -eatf katou < test > test.asc << 暗号化する。次の user ID: katou Key for user ID: katou は入力でなく、表示されているだけ。 384-bit key, Key ID 0E32EE1D, created 1996/10/10 % cat t3.asc << 暗号化されたファイル -----BEGIN PGP MESSAGE----- Version: 2.6 hDwCZqf1JKz8gUkBAXoDYgb1H0G0FgK5yd7+3C3BbPH/IR8MpeqPr2+i+kXPON00 26wZrnxBHiCx3NY844mmAAAALQPFnV8xmWz6A+B9VVLg3qQaoL0UyUvNd2bC+RXb 1zRe+NXPytMCElg+Ux44kA== =ti1q -----END PGP MESSAGE----- % pgp test.asc << 復号化する。 File is encrypted. Secret key is required to read it. Key for user ID: katou 384-bit key, Key ID 0E32EE1D, created 1996/10/10 You need a pass phrase to unlock your RSA secret key. Enter pass phrase: Pass phrase is good. Just a moment...... ↑ 123 << ここでパスフレ−ズを入れる。 Plaintext filename: test << 自分の秘密鍵で復号化した。 * 暗号化して電子署名もしたファイルを作成する % pgp -seatf katou < test > test.asc Key for user ID "katou" Enter pass phrase: 123 << パスフレ−ズを入れる。 % cat t3.asc -----BEGIN PGP MESSAGE----- Version: 2.6 hDwCZqf1JKz8gUkBAYCT6CZ1t9NVCew3IciwwustuBMXcriLExyLqxX2V1ez4++7 rnvGT6ukq8vTHgzxuNmmAAAAdmSka46MqAIrDGlGA1tJbqkEWBRCIrCyJcivrrl6 8CzTASA3CpDKN/niEGkeNOj+IBZjtJ+LfOfZLcnShYRJh/DelzuSgqomkQ6zEiVT ZqKVSFNMG9PLa3PacRK69UOEbeO2HNCehakkVTedlWqfFp/ofoGnVYQ= =pOI2 -----END PGP MESSAGE----- % pgp test << .asc は省略してもよい。 Key for user ID: katou Enter pass phrase: Pass phrase is good. Just a moment...... ↑ 123 << パスフレ−ズを入れる。 File has signature. Public key is required to check signature. . Good signature from user "katou". << 電子署名が正しいと出ている。 Signature made 1996/10/11 04:40 GMT 公開鍵でチェックしている。 * 日本語が入った場合の注意 kanji --------------- |へのへのもへ % pgp -eatf katou < kanji > kanji.asc Warning: 'pgptemp.$00' is not a pure text file. File will be treated as binary data. % pgp kanji | Plaintext filename: kanji Output file 'kanji' may contain more ciphertext or signature. Should 'kanji' be renamed to 'kanji.pgp' [Y/n]? y 暗号化する時にはワ−ニングがでる。 復号化するときはサフィックスを pgp にするがい いかと必ず尋ねて来るようになる。ただし内容自体には問題はない。 * 公開鍵の管理ファイル 自分と相手の公開鍵をどこかで管理しなければならない。それを1つのファイルで管理す るのが pubring.pgp でり、本物のキ−・ホルダ−みたいなものである。 相手の鍵をもら った場合は、キ−・ホルダ−に入れればよい。相手に渡す場合は、自分の鍵だけコピ−す るか、キ−・ホルダ−全部をコピ−して渡すかである。使わなくなった鍵は抜き取ってほ かる。ともかく全く現物のキ−・ホルダ−と同じである。 % pgp -kv Key ring: '/usr/people/katou/.pgp/pubring.pgp' Type bits/keyID Date User ID pub 384/ACFC8149 1996/10/11 katou 1 key(s) examined. % pgp -kvc Key ring: '/usr/people/katou/.pgp/pubring.pgp' Type bits/keyID Date User ID pub 384/ACFC8149 1996/10/11 katou Key fingerprint = E1 0C E2 9E 06 D8 D0 D8 62 D2 85 DE 6C C6 CB BD 1 key(s) examined. ↑ 鍵指紋 Fingerprint だ! * 2.6ui バ−ジョンとオライリ−の本に出ていることの違い % pgp -sat file とやってできる file.asc ファイルは暗号化されている。オライリ−の 本では暗号化されていない。電子署名を示す --- .. SIGNATURE --- があり、そこからだ け暗号化されている。 file --------------------- |katou kun desu % cat file.asc -----BEGIN PGP MESSAGE----- Version: 2.6 owEBYgCd/4kARQIFATJd3V9mp/UkrPyBSQEBM/8Bf0x9peUt+UbkjwPbt2Dd14eM TaOm1Kkj8JwkE1/MkgJQhqiMrSmGObZOqMZtprdEWKwYdAJ0MwAAAABrYXRvdSBr dW4gZGVzdQ0K =QM72 -----END PGP MESSAGE----- (4) OpenPGP 暗号化 `22/05 * はじめに PGP の開発者 Phil Zimmerman 氏は、人権を守るためにこのソフトを作ったという。まさ にそれが現実味を帯びてきた。半年程前だったか、Echelon( エシュロン ) なる言葉が出 てきた。米国家安全保障局( NSA ) が、電子メ−ルの盗聴を国家レベルで行っていたこと が明るみになったのである。自由の国アメリカ、ずっとそう思っていたが、底に流れてい るのは徴兵制のある国家そのものだった。暗号化技術は軍事機密とし、VPNやメ−ルな どの暗号化でも、政府が解読できる第二の鍵を設けようとした。恐ろしい。国内において も個人情報保護法案の成立、今国会で審議されている有事関連法案など。これから、どん どん個人のプライバシ−が制限されて行くような気がしてならない。勤務先においてもメ −ルの検閲は、密かにリストラ対象者を選ぶのに日常茶判事化して行くだろう。検閲はご く簡単にできる。/etc/aliases ファイルに1行書き込むだけである。 政府による盗聴の 他にも、生き残りをかけて競合会社による盗聴は有り得るかも知れない。いずれにせよ重 要な内容のメ−ルは、ハガキでなく封印をちゃんとすること。即ち暗号化することが今後 は、必要になって来ると考えた方がいい。しかし、勤務中に業務と関係のないメ−ルを暗 号化して出したりすることは、ご法度であることには変わりない。 * 最新の PGP の状況やメモ ・GnuPG( GNU Privacy Guard )、GNUプロジェクトが完全に特許に抵触しないように作 った、GPL のフリ−ソフト。http://www.gnupg.org/。RFC 2440 で定義された OpenPGP 仕様に準拠する。1999/09/07 GnuPG Version 1.0.0 リリ−ス。商業利用もOK。RSA特 許切れにより GnuPG 1.03 で正当に RSA をサポ−トした。IDEA がどうしてもいるとい う人はオプションで対応できる。鍵の生成・管理はコマンドによる操作である。 ・米 Network Associates 社は、1997 年に PGP の開発者 Phil Zimmerman 氏からソフト を買収し、製品版の販売を始めた。しかし PGP は、 フリ−ソフトという意識が浸透し てしまっているので儲からなかったようである。 そのため、アメリカでは 2002/03/01、 PGP の販売を止めた。国内では 2001/10/15 に日本語版の販売を止めている。 ・暗号化の特許、米国の制限はどうなったか。RSA の特許は 2000/09/26 切れた。IDEAは スイスの特許で、一応フリ−だが使ってはいけない国というのがある。アメリカなど日 本もその中に入っているので、特許に引っかかる。特許期限は 2007 年までである。米 国の暗号輸出規制は 1999/11 に解除されている。ん?、全面的に解除されたのかな。 ・現在売られているソフトは。日本語版 PGP Personal Privacy Ver.6.5.8J、Windows 用、 ドットコム価格 4,165 円、自己復元 EXE形式の暗号化サポ−ト、Outlook Express 5.0 と 2000 に完全対応、http://www.sourcenext.com/。 Network Associates 社のがあっ たが販売停止になっている。ドイツのバイオデ−タ社の OpenPGP と S/MIME対応暗号化 メ−ルというのはどうだ。アメリカでなくドイツのソフトというのがいいではないか。 ・GnuPG以外のフリ−ソフトは。PGP 6.5.8ckt 日本語版が現在よく使われているようであ る。PGP 6.5.1i はアメリカが暗号輸出規制をしていた時の、 日本でも問題なく使える 国際版だった。Network Associates 社の PGP Freeware Version 7.0.3もフリ−である。 これらは Windows または Macintosh 用で、GUIによる鍵の作成、管理ができるよう になっている。特に Outlook Express なんかは、 プラグイン対応になっていて簡単に 利用できる。プラグイン対応でない Netscape Messenger でも使うことはできる。 ・自分の公開鍵を公にし、検索できる公開鍵サ−バというのが複数、運用されている。日 本の PGP 公開鍵サ−バは http://pgp.nic.ad.jp/ である。他世界中に多数あり、同期 を取り合っている。OpenPGP の http://www.keyserver.net/というのもあるが、これは 先のと同期をとっているのよく分からない、別物みたい。 ある人物の FingerPrint を をチェックしてみたら、先のサ−バと同じ公開鍵が登録されていた。 ・PGP Ver.5.5 以上で追加された ADK( Additional Decryption Key ) という機能。予備 の復号鍵を追加できる。つまり公開鍵が2つあるということ。企業などで担当者が不在 で緊急を有する場合に、もう1つ公開鍵があればメ−ルを解読できるという趣旨である。 鍵寄託、Key Escrow(キ−・エスクロウ)と言われた。アメリカ政府がやろうとして反発 をくらった。その悪いイメ−ジのため、最近では鍵の復元と呼ばれている。 * 参考資料 http://www.cla-ri.net/pgp/ > PGP User's Manual for Windows。PGP 6.5.8ckt-J, 6.5.1i, 7.03 など各バ−ジョンの Windows 用の日本語マニュアルがある。FAQ、バ−ジョンの違い、履歴などが詳しい。 http://www.tokai-ic.or.jp/tic/tech/pgp/ > TIC技術専門委員会による GnuPG の検討。UNIX, Windows で GnuPG をコマンドで使 う。コマンドの使い方はどちらも同じである。2000/04/04 最終更新。 http://www.zdnet.co.jp/help/security/ > PGP でメ−ルを暗号化する。Windows 用の PGP Freeware Version 7.0.3 での例がある。 鍵リングを 7.x からICカ−ドに入れることができるようになったとか。 http://pgp.iijlab.net/pgpmime/ 1998/9/27 作成、2001/11/14 更新。 > 山本和彦氏の "昔昔の PGP"。PEM や MOSS は広まらなかったと述懐している。 http://www.egroups.co.jp/messages/pgpflash-japan/ Yahoo! eグル−プ > これまでのメ−リングリストのメ−ルが HTML で見れるようになっている。 * GnuPG 自体のインスト−ルとパソコンの環境設定 メ−ルソフト Becky! との兼ね合いで、GnuPG 本体はバ−ジョン 1.0.4以上が必要である。 http://www.ring.gr.jp/pub/gnupg から gnupg-w32-1.0.6.zip、68K をダウンロ−ドする。 ダウンロ−ドしながら Lhasa で解凍し、以下のディレクトリができ、ファイルが入った。 C:\WINDOWS\Profiles\katou\デスクトップgnupg-w32-1.0.6\ このディレクトリの中の gpg.exe を C:\gnupg\ にコピ−する。gpg.exe のパスを通すた め、C:\AUTOEXEC.BAT ファイルをエディタで set PATH=%PATH%;C:\gnupg と書き込み、そ してパソコンを再起動する。Windows 98 はメニュ−画面でのパスの設定はない。 [ 鍵リングを初期化する ] C:\>gpg DOS 窓に入り gpg とたたく。これで C:\gnupg\ ディレクトリに次のファイ ルができた。pubring.gpg random_seed secring.gpg trustdb.gpg。 [ ユ−ザの鍵を生成する ] C:\>gpg --gen-key gpg (GnuPG) 1.0.6; Copyright (C) 2001 Free Software Foundation, Inc. | Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA ( sign only ) (4) ElGamal ( sign and encrypt ) Your selection ? << 暗号化方式はデフォルトの (1) でよし。 | 鍵のビット長 << 1024 bits のデフォルトでよし。 | 有効期限 << 無期限でよし。 | Real name: tomodesu << 5文字以上、何か入れること。 Email address: tomo@nix.co.jj << ユ−ザのメ−ルアドレスを入れる。 Comment: << 別に入れなくてもいい。 | パスフレ−ズを2回入れる << henomohe。ランダムな文字列を入れる。 | We need to generate a lot of random bytes. It is a good idea to perform ... 乱数により公開鍵と秘密鍵を生成する。 [ 登録した鍵を削除する ] 最初に秘密鍵を削除する。次に公開鍵を削除する。この順番で実行すること。キ−リング から削除していいか尋ねて来るので yes を押すこと。 C:\>gpg --delete-secret-key tomo@nix.co.jj << tomo@nix.co.jj でなく、Real name: C:\>gpg --delete-key tomo@nix.co.jj << で指定した tomodesuでも構わない。 [ オプションのいろいろ ] 登録した公開鍵をリストする。>gpg --list-secret-keys では秘密鍵をリストする。 C:\>gpg --list-keys c:/gnupg/pubring.gpg -------------------- pub 1024D/5739FA62 2002-04-27 tomodesu sub 1024g/1B0A2F2E 2002-04-27 pub 1024D/573F14EA 2002-04-28 katoudesu (neko) sub 1024g/F5B2A027 2002-04-28 ↑ Comment: に何か文字を入れると C:\>gpg --fingerprint tomodesu << 鍵指紋を表示する。 C:\>gpg --help | more << ヘルプを表示する。 * 公開鍵を公に登録する http://pgp.nic.ad.jp/jindex.html 日本の PGP 公開鍵サ−バ 世界中の PGP ユ−ザの公開鍵の検索と登録ができる。 TCP/11371 ポ−トをファイアウォ −ルで開けておくこと。名前をロ−マ字を入れて検索する。加藤なら Katou という具合。 全世界に20ぐらい、このサ−バがあって同期を取り合っている。日本のサ−バで登録し た鍵は、他のサ−バへも情報が伝わっていくことになっている。しかし、そんなに確かな システムではないみたいである。公開鍵は登録はできるが、削除はできない。廃止はでき る、つまりもう有効ではないとリストに印をつける。公開鍵を登録する際に、本人の確認 をする訳ではない。そのため公開鍵を削除するのも、本人からの依頼なのかも確認できな い。それで削除できないという見解である。他のサ−バにはポ−トが 11369, 11370 の所 もあった。公開鍵の登録には、C:\>gpg -a --export tomodesu > file.txt というように して出た ASCII-armor 形式のテキストを、公開鍵サ−バに張り付ければよい。 (5) Becky! で GnuPG を試す `22/05 * Becky! に GnuPG を入れる ここでは手元のパソコン Windows 98 にセットアップしてみる。GnuPG 自体は先に入れて あるとする。Becky!2 本体にも PGP のプラグインがあって、 Becky!2 をインスト−ルす る際に、Becky!2 にあらかじめ入っている、PGP のプラグインを使うかどうか聞いてくる。 しかし、これは使わずに GnuPG 用のプラグインを別途とってきて入れる。Becky! の参考 は http://www.becky-users.net/、"Becky! ユ−ザの部屋" を見られたし。すごいアクセ スである。"周辺ソフトウェアの部屋" には、Becky! 用の50個ぐらいソフトウェアがあ った。http://hp.vector.co.jp/ にも Becky! 用ソフトが一杯ある。 Becky! 本体。Becky! Internet Mail Ver.2 (2.00.11) > http://www.rimarts.co.jp/becky-j.htm。30日間無料で試用できる。1,965 KBの自己 解凍形式のファイル bk20011j.exe をダウンロ−ドし展開する。C:\Program Files\Rim Arts\B2\ に入る。そしてセットアップすると C:\WINODWS\スタ−トメニュ−\プログラ ム\Becky! Ver.2\ に入る。無料のお試し期間が過ぎたらこうてネ。 Becky! の GnuPG 用プラグインソフト > http://hp.vector.co.jp/authors/VA023900/pgp-pin/ から "GNU Privacy Guard Plug- in for Becky!2" を取ってくる。インスト−ルして Becky! の [ツ−ル]->[プラグイン の設定]->[ GNU Privacy Guard Plug-in ] をクリックしてみる。〆PGP互換の署名・暗 号化を行う。〆PGP/MIME (RFC2015)を使用して送信メッセ−ジを作成、にデフォルトで チェックされている。これは、このままでよい。 * 簡単に確認できた 1つのパソコンに tomo@nix.co.jj と katou@nix.co.jj の暗号化鍵を作成する。 上のよ うに DOS 窓に入り、C:\>gpg --gen-key を実行する。パスフレ−ズは tomo が henomohe、 katou さんが henomohe2 とする。このコマンドはメ−ルアドレスを変えれば、 幾つでも 暗号化鍵を作成できる。メ−ルソフトも1つの Becky! で、設定を変えながら2人分のユ −ザとする。本来なら別のパソコンを使い、それぞれのパソコンで暗号化鍵を生成し、交 換しあって、自分の鍵リングに相手の公開鍵を入れるということになる。 tomo さんから katou さんにメ−ルを送る。Qube3 をメ−ルサ−バに介する。 暗号化する場合 ----- メ−ル本文を katou さんの公開鍵で暗号化する。メ−ルを受け取 った katou さんは自分の秘密鍵で復号化する。 電子署名する場合 --- tomo さんの秘密鍵で電子署名する。メ−ルを受け取った katouさ んは tomo さんの公開鍵で電子署名を検証する。 暗号化とノ−マルなメ−ルクライアントのソフトを、使い分けた方がいいのでないかと思 ったがそんな必要はない。Becky! では今、書いたメッセ−ジを暗号化したければ、 メ− ルソフトのメニュ−をクリックするだけである。宛先メ−ルアドレスを見て、その公開鍵 が鍵リングにあるか自動でチェックするようにもなっている。受けた暗号化メ−ルを解読 するのには、 [ GnuPG:復号化と検証 ] をクリックすればよい。鍵の生成、登録の作業が GUIでできさえすれば、Becky! の暗号化機能は簡単に使うことができると思う。 Becky! [ツ−ル] メ−ルを送る際 Becky! [ツ−ル] メ−ルを受ける際 ------------------------------ -------------------------------- | | | | |GnuPG:暗号化 |GnuPG:復号化と検証 |GnuPG:署名 --------------------- |GnuPG:署名と暗号化 |GnuPG:公開鍵の添付 << 公開鍵をメ−ルで送ることができる。 ---------------------- Content-Type: application/pgp-keys である。 * テスト1 暗号化しただけ tomo が katou へメ−ルを送る際 katou がメ−ルを受ける際 ------------------------------- -------------------------------- | GnuPG 受信者 | GnuPG Passphrase |------------------------------ |------------------------------- | katou@nix.co.jj | ロ−カルユ−ザ: | | パスフレ−ズ : [ henomohe2 ] qub3# cat /var/spool/mail/katou From tomo@nix.co.jj Wed May 8 11:12:08 2002 Return-Path: Received: from solo ([192.168.1.7]) by qub3.nix.co.jj (8.10.2/8.10.2) with ESMTP id g482C8n18711 for ; Wed, 8 May 2002 11:12:08 +0900 Date: Wed, 08 May 2002 11:12:21 +0900 From: tomodesu To: katou@nix.co.jj Subject: test Message-Id: <20020508111122.679D.TOMO@nix.co.jj> MIME-Version: 1.0 Content-Type: multipart/encrypted; boundary="===[PGP/MIME_RFC2015]===3CD88949.0D C6==="; protocol="application/pgp-encrypted" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.00.11 --===[PGP/MIME_RFC2015]===3CD88949.0DC6=== Content-Type: application/pgp-encrypted Content-Transfer-Encoding: 7bit Version: 1 --===[PGP/MIME_RFC2015]===3CD88949.0DC6=== Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit -----BEGIN PGP MESSAGE----- Version: GnuPG v1.0.6 (MingW32) Comment: For info see http://www.gnupg.org hQEOA/FFR5LasIQ7EAP5AXRbPCU9eYDQ/SVZtJCocDNuQ9rNsKf9tJVYDIj7/R6a ZfRVuU703EUEvg/HuxIQM2WUmWlGgDnroKsqMPPr+Srx99Halsz2CDl+tK0eR38p qbk1W4m+zwWRRjYm9ujp7HQDrIam2fJJcPkQ99GyGIwUs6O5bzNNG1BRlpkexhAD /jPGgq+okJHvOfHtwfodx/8dDa7CWYLJmj/Bfl+Ut9NVQr2mpZrzZ2JiQKT/FmF8 yBap16Qfahsv9ob3WeNPI21OwH2oDvhlvgLlpK5lHx2YjGOT0sENQegRX5vCv5r1 coO1rpSvmiecheZW2BxMOrsUoH+bRb7+KLRPKPqdY2Nv0qcB/i19C7ewr8oG/vQo fIstPkIOEfbCF3zSlkS9HWtzWobqzGJgpH2LW2hqlYzJIYjjiHN4BusN/ruZAAUI BfT+O5+MjW39+gZ9qCGHYVTlpjmxXjwb+zU0vAHHNDBoMWQ27ewZtNVSYgIqK4dn y6NXlwW/YXRnP0CopibcW9pfH9vSSTCBOCUr2kYl8oP7eJhHF0iC4DCTAtuOT+5m /L22nJd6VyfDAw== =5ijb -----END PGP MESSAGE----- --===[PGP/MIME_RFC2015]===3CD88949.0DC6===-- * テスト2 暗号化して署名した tomo が katou へメ−ルを送る際 katou がメ−ルを受ける際 ------------------------------- -------------------------------- | GnuPG 受信者 | GnuPG Passphrase |------------------------------ |------------------------------- | katou@nix.co.jj | ロ−カルユ−ザ: | | パスフレ−ズ : [ henomohe2 ] ↓ 次にこの画面が出た ----------------------------------- | GnuPG Passphrase << 署名のみの場合はこの画面だけ出た。メ |---------------------------------- −ル本文はそのまま見える。katou で復 | ロ−カルユ−ザ:[ tomo@nix.co.jj ] 号化を押すと、Good signature from .. | パスフレ−ズ :[ henomohe ] と確認のメッセ−ジが出るのみである。 qub3# cat /var/spool/mail/katou From tomo@nix.co.jj Wed May 8 11:14:57 2002 Return-Path: Received: from solo ([192.168.1.7]) by qub3.nix.co.jj (8.10.2/8.10.2) with ESMTP id g482Evn18837 for ; Wed, 8 May 2002 11:14:57 +0900 Date: Wed, 08 May 2002 11:15:10 +0900 From: tomodesu To: katou@nix.co.jj Subject: test Message-Id: <20020508111504.67A0.TOMO@nix.co.jj> MIME-Version: 1.0 Content-Type: multipart/encrypted; boundary="===[PGP/MIME_RFC2015]===3CD88A28.0A D0==="; protocol="application/pgp-encrypted" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.00.11 --===[PGP/MIME_RFC2015]===3CD88A28.0AD0=== Content-Type: application/pgp-encrypted Content-Transfer-Encoding: 7bit Version: 1 --===[PGP/MIME_RFC2015]===3CD88A28.0AD0=== Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit -----BEGIN PGP MESSAGE----- Version: GnuPG v1.0.6 (MingW32) Comment: For info see http://www.gnupg.org hQEOA/FFR5LasIQ7EAQAhbm9qLJ5OeuXUwwhjss0OisimaMLW5amrHIf/i5ROSyt rchsgcSlh5stT6ovtxi6yq69NEPwjKTKLNXuqGMXZY8+uIZeebvn4w+3LmOQUdqY GshctHNCvi5YfqmQ+Khg7EjILzT9ho+as3Ov2mPYjdKOG2sR+ivmtUJdDTmr9+AD /2XFGZIVF8Hg3+ri5l/++CaJn6/WXiZ+uFJ/N3+XlLRGH7BNCQgwKDANJaDF18ea r+jf4V1yydVWeoaO8OsvA+W7SutBJiM59CLjsc0imwSogj25JByZOanXp2IpZcsZ snp0kmdeVMmdlqdB6R3AOVmU8qaZ6SRaYs0rvpoSr48i0sAyAbXA8nbFY+AUXqcB RiUU7JTjsBVhQexbc1Dk6ZhLi7UXol++GlzcraXvEmAmjBmMF8oCSwJEkHPT/n9J 4wsuJ7qG27reSRK5czOocZFGlC2d55OwoZRK/QSgUSpQE1kX1tnSjV8y2rEokbQO /fp924DzfGGY4cJ6xArw2crr8BB79L6lsDiHS84D1U/byrDPn/2HZwlDUDJz1pG9 C9Fn71SUqgw54udOpdhyOwyWQCUYX9sPq1sCauH1+sOoGr/9vRR1EDuVDaDf2MjK dtKmhoEF6/PT2NLSK66yJgKhR7Ne4QnqRoBIKYih5jkQNTDTssI= =biel -----END PGP MESSAGE----- --===[PGP/MIME_RFC2015]===3CD88A28.0AD0===--