叛乱オンライン
HOME > Theory > Crypt

暗号を使おう!

 
PGP ユーザーズ・マニュアル 第1巻
 

[注:以下はもともとMITのPGP 2.6.2.のための文書であり、未修整版である。PGP 2.6.3iが2.6.2とどう違っているかの説明は、 readme.1stファイルを見ること]

Phil's Pretty Good Software
(フィルのかなりよいソフト)
提供

=======
PGP(tm)
=======

Pretty Good(tm) Privacy
かなりよい(tm)プライバシー
大衆のための公開鍵暗号

--------------------------

--------------------------

by Philip Zimmermann
11 October 94 改訂


PGP Version 2.6.2 - 11 Oct 94
Software by
Philip Zimmermann, and many others.

 

概要:PGP(tm)は、電子メールとデータ・ファイルを保護するために公開鍵暗号を使用する。事前に鍵を交換する必要のない安全な経路がなくても、会ったことのない人と安全に通信する。PGPはよい機能を持っており、早く、洗練されたキー管理とデジタル署名、データ圧縮、よいアルゴニズム設計を備えている。


ソフトと文書化 (c) Copyright 1990-1994 Philip Zimmermann. All rights reserved. PGP認可、配布、著作権、特許権、商標、責任の制限、輸出規制についての情報は、「PGPユーザーズ・ガイド 第2巻:特殊事項」の「法的問題」の章を参照のこと。マサチューセッツ工科大学によって配布された。


「あなたのすることはすべて取るに足りないが、それをすることは非常に重要だ」――マハトマ・ガンジー

 

目次
========

概説
なぜPGPが必要なのか?
仕組み
PGPをインストールする
PGPの使い方
高度な事項
 使い方一覧を見る
 メッセージを暗号化する
 複数の受取人へのメッセージを暗号化する
 メッセージに署名する
 署名してから暗号化
 従来の暗号を使う
 署名を復号化してチェックする
 鍵を管理する
  RSA鍵生成
  鍵をあなたの鍵束に追加する
  鍵束から、鍵やユーザーIDを削除する
  鍵束から鍵を抽出(コピー)する
  鍵束の内容を見る
  改変から公開鍵を守る方法
  PGPはどのようにして、どの鍵が有効であるかの記録を残すか
  秘密鍵を暴露から守る方法
  公開鍵を撤回する
  秘密鍵をなくしたらどうするか?
高度な事項
 電子メール経由で暗号文を送る:Radix-64フォーマット
 パス名のための環境変数
 パラメーターをPGP設定ファイルに設定する
弱点
インチキ薬にご用心
マッキントッシュ・ユーザーへの注
PGP早見表
法的問題
感謝
作者について

 

概説
==============

Phil's Pretty Good Software による Pretty Good(tm) Privacy――ちょっといいプライバシー(PGP)は、MS-DOS, UNIX, VAX/VMS, その他のコンピュータ用の高度セキュリティ暗号ソフトである。PGPを使えば、ファイルやメッセージを交換するのに、プライバシー、認証、手軽さがついてくる。プライバシーとは、メッセージを受け取るよう意図された人だけが読めるということである。認証とは、ある特定の人からのものと思われるメッセージが本当にその人からだけ届けられるようにすることである。手軽さとは、プライバシーと認証にあたって、従来の暗号ソフトに必要だった鍵管理のわずらわしさが必要ないということである。使用者どうしで鍵を交換するのに、安全な経路は必要ない。それはPGPがもっと使いやすくしている。このため、PGPが「公開鍵」暗号法と呼ばれる強力な新技術を採用しているのである。

PGPは、Rivest-SHamir-Adleman (RSA) 公開鍵暗号法の便利さに加えて、従来の暗号のスピード、デジタル署名のためのメッセージ体系化、暗号化前のデータ圧縮、よいアルゴニズム設計、洗練された鍵管理ができる。そして、PGPは、他のほとんどのソフトウェアよりも実行速度が速い。PGPは大衆のための公開鍵暗号なのである。

PGPは、いかなる組込型モデム通信機能も有さない。そのためには別のソフトが必要だ。

この文書「第1巻:必須事項」は、PGPの使い方の基本概念を説明しているだけであり、PGPユーザーは全員が読むべきである。「第2巻:特殊事項」は、PGPのさらに進んだ特徴を説明しており、真剣なPGPユーザーが読めばいい。どちらの巻も、暗号アルゴリズムやデータ構造の技術的詳細を説明するものではない。

 

なぜPGPが必要なのか?
====================

それは個人的である。プライベートである。だれかのことではなく、あなたの問題だ。あなたは政治運動を計画しているかもしれない。税について論じているかもしれない。禁制のブツを持っているかもしれない。あるいは、あなたは違法であるはずがないと感じているが、実は違法だということをしているかもしれない。それが何であれ、あなたは、プライベートな電子メールや機密書類が、だれがほかの人に読まれたいとは思わない。プライバシーを主張することは、何も悪いことではない。プライバシーは、憲法と同じくらい完全に整っている。

自分の電子メールは充分合法なのだから、暗号化するのはおかしいと考えていないか。では、もしあなたが完全に法に従っていて隠すものなどまったくないというのなら、紙の手紙をいつもハガキで出したらいいじゃないか? なぜ求められた薬物試験に応じないのだ? 警察の家宅捜索にどうして令状を必要とするのだ? 何か隠そうとしてるんじゃないのか? 封筒の中の手紙を隠すのだから、あなたは過激派かドラッグの売人なのに違いない。そうでなければ、偏執狂の気があるのだろう。遵法的な市民は、電子メールを暗号化する必要があるのだろうか?

遵法的な市民は、手紙を出すのにハガキを使うべきだと誰もが信じたりしたらどうなる? もし誰か勇敢な人物が、手紙に封筒を使ってプライバシーを擁護しようとしたら、疑惑を持たれることだろう。おそらく当局は、彼の手紙を開けて、隠しているものを見るだろう。幸運にも、わたしたちはそんな世界には住んでいない。だれもが、ほとんどの手紙を封筒で守るからだ。だから、封筒でプライバシーを擁護したとしても、誰も疑いを抱かない。数が多ければ安全だ。同様に、もし誰もがすべての電子メールのために暗号を意識的にしろ無意識にしろ、頻繁に使うならば、暗号によって電子メールのプライバシーを擁護したとしても疑われたりしなくなる。それを団結の形だと思ってほしい。

今日、もし政府が一般市民のプライバシーを侵害しようとしているのなら、紙の手紙を横取りして蒸気で開封して読んだり、電話の会話を聞いたり、ことによると転写したりするのに、かなりの費用と労力を費やさなければならない。この種の労働集約型監視は、大規模で実用的ではない。必要があると思われる重要な事件のときだけに行なわれる。

プライベートな通信はますます、電子経路で行なわれるようになってきている。電子メールは次第に、従来の紙の手紙にとってかわろうとしている。電子メールのメッセージは傍受しやすく、関連キーワードの検索も簡単すぎる。これは簡単に、機械的に、自動的に、発見困難な形で、大規模にできる。国際的海外電報は、NSAによって、すでにこのような方法で大規模に検索されている。

将来的には、じわじわと広まりつつあるパソコンをすべてつなぎ合わせる高性能ファイバー光学式データネットワークに国家が磔にされるようになるだろう。電子メールは、今は目新しいが、すべての人に課されることになるだろう。政府は、わたしたちの電子メールを、政府が設計してくれた暗号プロトコルで守ることだろう。おそらく、ほとんどの人はそれを黙認するだろう。しかし、おそらく、自分自身の防御法のほうがいいという人もいることだろう。

上院法案266号、1991年総括的対犯罪法には、人騒がせな手段が含まれている。もしこの未決法案が実際に法となってしまったら、だれが暗号化したメッセージでも政府が読めるように、特別な「トラップドア」を各製品に埋め込むことを、安全通信装置製造メーカーに強制することになるのだ。そこにはこう書いてある。「電子通信サービス・プロバイダと、電子通信サービス装置製造メーカーは、法によって適切に認可されたときには政府が音声・データその他の通信の平文を得ることができるようにしようというのが議会の意図である」。この手段は、市民のリベラル論者と産業団体からの激しい抗議によって破棄された。

1992年には、FBIデジタル電話盗聴法案が議会に提出された。それは、FBIが、FBI施設から電子通信のあらゆる形態を遠隔盗聴できるように特別遠隔盗聴ポートを建設することを、すべての通信装置製造メーカーに要求するものだ。それは1992年、市民の反対のために議会のどの議員も賛成しなかったが、1994年に再提出された。

なかでも最も警告すべきは、ホワイトハウスの大胆な新暗号政策発議である。これは、ブッシュ政権時代にNSAで開発が始まり、1993年4月16日に公開されたものである。この発議の中核は、新しい種類のNSA暗号アルゴリズムを含む「クリッパー」と呼ばれる政府制作暗号装置だ。政府はプライバシー産業に対して、秘話電話、秘話FAXなどのセキュリティ通信機器のすべてにこれを組み込むよう促している。現在、AT&Tがクリッパーを秘話装置に組み込んでいる。キャッチフレーズは、「製造段階ですべてのクリッパー・チップは、それぞれ独自の鍵を導入し、政府はその複製を令状のもとに置いておく。でも、心配しなくていい。政府がこれらの鍵を使ってあなたのやりとりを読むのは、法によって認められたときだけなのだ」。もちろん、クリッパーを完全に効果的なものとするには、次の論理的段階として、他の形態の暗号を違法なものとすることだろう。

もしプライバシーが違法なものとされるなら、無法者だけがプライバシーをもてることになる。諜報機関は、よい暗号技術を使ってきた。暴力団とドラッグ売人もそうだ。国防産業、石油企業、その他の大企業もそうだ。しかし、一般の人々と草の根政治組織は、たいてい、「軍事級」公開鍵暗号技術を買うことができなかった。今までは。

PGPは、人々がプライバシーを自分自身でつかめるようにする。そこにはますます大きくなる社会的ニーズがある。わたしが書いたのはそのためだ。

 

仕組み
============

すでに一般の暗号法と、特に公開鍵暗号法の概念に精通していればわかりやすいだろう。そうでない人のために、公開鍵暗号法について少々前置きしておこう。

第一に、いくつかの専門用語である。わたしは、あなたにメッセージを送りたいが、あなた以外の人に読んでほしくないものとする。わたしはそのメッセージを「暗号化(enccrypt, encipher)」できる。これは、わたしがメッセージをおそろしく複雑な方法でかき乱してしまい、受取人として想定されているあなた以外の誰にも読めなくしてしまうのである。わたしはメッセージを暗号化するのに暗号の「鍵(key)」を使い、あなたは同じ鍵を「復号化(decipher, decrypt)」するのに使う。これが、従来の「単一鍵」暗号システムの仕組みである。

合衆国連邦データ暗号化標準(DES, US Federal Data Encryption Standard)などの従来の暗号システムにおいては、単一の鍵が暗号化と復号化の両方で使われる。これは、暗号化メッセージが不確実な経路で送れるようになるまえに送り手と受け手の両方が鍵を知ることができるよう、最初に安全な経路で鍵を送っておかなければならないということでえある。これは不便かもしれない。もし鍵を交換するのに安全な経路があるのなら、そもそも暗号化する必要があるのだろうか?

公開鍵暗号システムにおいては、誰もが二つの関連した相補的な鍵、つまり公開鍵と秘密鍵(プライベート鍵ともいう)を持つことになる。それぞれの鍵は、他方の鍵で作られた暗号を解除する。公開鍵を知っているからといって、対応する秘密鍵を導き出すことはできない。公開鍵は、通信ネットワーク上で広く公開・頒布できる。このプロトコールは、従来の暗号システムが必要としたような種類の安全な経路は必要ない。

誰でも受取人の公開鍵を使って暗号メッセージをその人に送ることができ、受取人にはそのメッセージを復号化するのに、対応する秘密鍵を使う。受取人以外だれもそれを復号化できない。その秘密鍵はだれも手に入れられないからだ。メッセージを暗号化した人ですら、復号化できない。

メッセージの認証もまた保証される。送り手自身の秘密鍵もメッセージの暗号化に使うことができ、それを「署名」という。これは、メッセージへのデジタル署名で、それを受け手(か誰か)は送り手の公開鍵で復号化することでチェックできる。このことは、送信者がメッセージの本当の発信者であり、そのメッセージはほかの誰かによってあとで変更されていないということを証明する。なぜなら、送信側は、その署名を作った秘密の鍵を持っている唯一の人だからである。署名されたメッセージの偽物は解読不能であり、送り手はあとでそのサインを否定することができない。

これらの二つのプロセスが組み合わされて、プライバシーと認証を提供する。最初にあなた自身の秘密鍵でメッセージに署名し、それから署名されたメッセージを受け手の公開鍵で暗号化するのである。受け手はこれらのステップの逆をする。最初にメッセージを自分の秘密鍵で復号化し、それから送り手の公開鍵でその中の署名をチェックするのである。このステップは、受け手のソフトで自動的に行なわれる。

公開鍵暗号化アルゴリズムは、従来の単一鍵暗号化よりもはるかに遅いので、従来の高性能高速単一鍵暗号化アルゴリズムを使ってメッセージを暗号化する方法がよく行なわれている。このもともとの未暗号化メッセージは「平文」と呼ばれる。ユーザーに見えないプロセスにおいて、この一つの作業のあいだだけのために作られた一時的な乱数鍵が、平文・ファイルを暗号化するのに慣例的に使われている。この従来の公開鍵暗号化「作業」鍵は、暗号化テキストとともに受け手に送られる。受け手は、自分の秘密鍵を使って、この一時作業鍵を回復し、それから高速な従来の単一鍵アルゴリズムで大きな暗号テキストメッセージを復号化する。

公開鍵は個々の「鍵証明書(key certificates)」の中に、鍵所有者のユーザーID(その人の名前)、鍵の対が作られたときのタイムスタンプ、実際の鍵そのものが保管されている。公開鍵証明書は、公開鍵そのものを含んでいるが、秘密鍵証明書は秘密鍵そのものを含んでいる。各秘密鍵は、盗まれたときに備えて、それ自体のパスワードで暗号化されている。鍵ファイル、あるいは「鍵束(key ring)」には、一つ以上のこれらの鍵証明書がある。公開鍵束は公開鍵証明書を、秘密鍵束は秘密鍵証明書を含んでいる。

鍵はまた「鍵ID」によって内部参照される。これは公開鍵の「短縮」である(巨大な公開鍵の最小限必要な64ビット)。この鍵IDが表示されるとき、さらに簡潔にするため、末尾32ビットが示される。多くの鍵が同じユーザーIDを共有してもいいが、実用的な目的で、どの鍵も同じ鍵IDを持つことはない。

PGPは署名を作るのに「メッセージ要約(message digest)」を使う。メッセージ要約は、メッセージを128ビット暗号強度不可逆変化機能である。これは、「チェックサム」つまりCRCエラーチェックコードに似たようなもので、コンパクトにメッセージを「説明」するのものであり、メッセージ内部の変化を検出するのに使われる。しかし、CRCと違って、攻撃者が同一のメッセージ要約を作り出す代用メッセージを考案することは、コンピューター的に実行不可能である。メッセー要約は秘密鍵によって、署名をつくるために使われる。

文書への署名は、署名証明書を前につけて署名される。この証明書は、署名に使われた鍵の鍵ID、秘密鍵で署名された文書のメッセージ要約、署名がされたときのタイムスタンプが含まれている。鍵IDは受け手によって、送り手の公開鍵で署名をチェックするために参照される。受け手のソフトは自動的に送り手の公開鍵とユーザーIDを受け手の公開鍵束から見つける。

暗号化ファイルは、暗号化に使われた公開鍵の鍵IDが前に置かれる。受け手はこの鍵IDメッセージ前置部を使って、メッセージを復号化するのに必要な秘密鍵を探す。受け手のソフトは、自動的に、必要な秘密復号化鍵を受け手の秘密鍵束から見つける。

これら2つのタイプの鍵束は、公開鍵・秘密鍵を蓄えて管理するための基本的な方法である。別々の鍵ファイルに個々の鍵を保管するのではなく、鍵IDやユーザーIDのどちらでも鍵を自動検索しやすくするために、鍵束に鍵を集めるようになっている。個々の公開鍵を友人に送って鍵束に追加してもらうには、一時的に別ファイルに取り出してちょうどいい長さにすることになる。

 

PGPをインストールする
==============

MS-DOS PGPリリース・パッケージは、以下の形のファイル名のついたアーカイブ・ファイルとして圧縮されている。PGPxx.ZIP(各リリース・バージョンは、ファイル名の"xx"に違った番号がつくことになる)。例えば、Ver. 2.6のリリース・パッケージは PGP26.ZIP である。アーカイブはMS-DOSシェアウェア解答ユーティリティ PKUNZIPや、Unix ユーティリティ"unzip"で解答することができる。PGPリリース・パッケージが解答されたら、いくつかのファイルが出てくる。そのファイルの一つ、README.DOCは、インストール前に必ず読んでほしい。このファイルは、このPGPリリースの新規情報の最新ニュースが書かれている。また、リリースに含まれる他のファイルすべてにどんな情報があるかも書いてある。

すでにPGPの古いバージョンを持っているなら、その名前を変えるか削除して、新しいPGPと名前がぶつからないようにすべきである。

PGPのインストールの仕方の詳細は、このリリース・パッケージ内にあるSETUP.DOCのPGPインストール・ガイドを参照すること。これはPGPディレクトリとAUTOEXEC.BATファイルの設定法、インストールのためのPKUNZIP使用法を説明している。ここでは、せっかちで今すぐ詳細なインストール・マニュアルを読むのも待てないあなたのために、インストール手順をごく簡単に説明しておこう。

PGPをMS-DOSシステムにインストールするためには、圧縮されたアーカイブ PGPxx.ZIPファイルをハードディスクの適切なディレクトリ(C:\PGPなど)にコピーする。それからPKUNZIPで解凍する。このマニュアルの別のところで解説しているとおりにAUTOEXEC.BATファイルを書き換えると一番いいのだが、それはあとですることにして、先にPGPを少し使ってみて、このマニュアルを先に読んでしまうことにしてもかまわない。PGPを起動させたことがなければ、インストール(とこのマニュアルを読んだ)あとの第一段階は、PGP鍵生成コマンド"pgp -kg"を起動して、あなたの一対の鍵を作ることだ。マニュアルの"RSA鍵生成"の項をまず読んでほしい。

UnixとVAX/VMSへのインストールは、MS-DOSへのインストールとだいたい一緒だが、最初にソース・コードをコンパイルしてもよい。Unix makefileは、この目的のためのソース・リリースを提供している。

 

PGPの使い方
==============

使い方一覧を見る
----------------------

PGPの使い方早見表を見るには、こう入力する。

   pgp -h

メッセージを暗号化する
--------------------

平文・ファイルを受け手の公開鍵で暗号化するには、こう入力。

   pgp -e テキストファイル名 相手のユーザーID

このコマンドで、テキストファイル.pgp という暗号文ファイルができる。特別なやりかたとしては、

   pgp -e letter.txt Alice
あるいは
   pgp -e letter.txt "Alice S"

最初の例だと、あなたの公開鍵束ファイル "pubring.pgp"を検索して、ユーザーIDのどこかに"Alice"という文字列が含まれる公開鍵証明を探す。2つめの例なら、"Alice S"を含むユーザーIDを探し出す。引用符の中に入っているのであればいいが、コマンド・ラインでの文字列にスペースを入れてはいけない。検索は大文字・小文字を同一視する。適合する公開鍵を見つけたら、平文・ファイル"letter.txt"を暗号化して、暗号文ファイル"letter.pgp"ができる。

PGPは、暗号化する前に平文を圧縮しようとする。そのため、暗号分析に大いに耐えるようになっている。こうして、暗号文ファイルは平文・ファイルより小さくなりがちである。

この暗号化メッセージを電子メール経由で送るときには、あとで説明するように、-aオプションをつけて表示可能なアスキー"radix-64"フォーマットに変換する。

複数の受取人へのメッセージを暗号化する
-------------------------------------------

複数の人に同じメッセージを送りたいときには、受取人のだれもが同じ暗号文ファイルを復号化できるような暗号化を指定できる。複数受取人を指定するには、コマンドラインにユーザーIDを追加するだけでいい。たとえば。

   pgp -e letter.txt Alice Bob Carol

これで作られる letter.pgp という名前の暗号テキストは、Alice にも Bob にも Carol にも読める。何人でも受取人は指定できる。

メッセージに署名する
-----------------

秘密鍵で平文・ファイルに署名するには、こう入力する。

   pgp -s テキストファイル名 [-u ユーザーID]

注:[カッコ]はオプションの部分を示しているので、実際にはカッコを入力しない。

このコマンドは、textfile.pgp という名前の署名されたファイルを作る。例えば、

   pgp -s letter.txt -u Bob

これはあなたの鍵束ファイル"secring.pgp"から、ユーザーIDのどこかに"Bob"という文字列が含まれる秘密鍵を検索する。あなたの名前はBob、だよね? 検索は大文字・小文字を区別しない。適合する秘密鍵を見つけたら、それは平文 "letter,txt"に署名して、 "letter.pgp"という署名済みファイルを作る。

もしユーザーID欄を入力しなかったら、秘密鍵束の最初の鍵が署名のためのデフォルト秘密鍵として使われる。

PGPはメッセージをサイン後に圧縮しようとする。このため、圧縮されたファイルはもとのファイルより小さくなりがちだ。それはアーカイブ・アプリケーションに便利である。しかし、これは普通の人間の観察者には読めないようなファイルを提供する。たとえもとのメッセージがふつうのアスキー文字テキストだったとしても。もし人間が直接読めるような署名ファイルがもし作れたらすてきだ。これは署名メッセージを電子メールで送りたいときには特に有用なものとなるだろう。

電子メールメッセージへの署名としては、その結果が人間にも読めるようにしたいところだが、そのためにはあとで説明する CLEARSIG 機能を使うのが最も便利だろう。これなら、署名はテキストの最後に表示可能な形で追加され、テキストの圧縮もできないようにする。これは、署名をチェックするためにPGPを使わなくても受取人がテキストを読むことができるということである。これは、特殊事項の「CLEARSIG――明文として要約された署名済みメッセージを可能にする」という章で詳細に説明されている。マニュアルのその章を読むのが待ちきれないなら、この方法で署名された電子メールメッセージがどのように見えるか、見てほしい。たとえばこうである。

   pgp -sta message.txt

これは、"message.asc"というファイルに署名されたメッセージを作り出すが、その中には、まだ人間に読める形の原文テクストに、表示可能なアスキー署名証明書がついて、電子メールで送れるようになっている。この例をふつうの設定として使いたいなら、設定ファイル(config)のCLEARSIGフラグを可にしておく。


署名してから暗号化
---------------------------

平文ファイルに秘密鍵で署名し、それから受け手の公開鍵で暗号化する。

   pgp -es テキストファイル名 相手のユーザーID [-u 自分のユーザーID]

注:[カッコ]はオプションの部分を示しているので、実際にはカッコを入力しない。

この例では、入れ子型暗号文ファイルtextfile.pgpができる。署名を作る秘密鍵は、自動的にあなたの秘密鍵束からあなたのユーザーIDを検索する。相手の公開暗号鍵は、自動的にあなたの公開鍵束から相手のユーザーIDを検索する。もし相手のユーザーID部分をコマンドラインから入力しないでおくなら、その入力を要求されることになる。

もし自分自身のユーザーID部分を入力しないでおけば、秘密鍵束の最初の鍵が署名のためのデフォルトの秘密鍵として使われる。

PGPは、暗号化する前に平文を圧縮しようとすることに注意してほしい。

もし電子メール経路を通してこの暗号化メッセージを送るときには、あとで説明するように、-aオプションをつけて表示可能なアスキー"radix-64"フォーマットに変換する。

複数の受け手を指定するには、コマンドラインに追加のユーザーIDを書けばいい。

従来の暗号を使う
----------------------------------

ときには、旧式の単一鍵暗号法によってファイルを暗号化する必要があるかもしれない。このアプローチは、保存しておくためであって誰かに送るわけではないアーカイブ・ファイルを守るために有効な方法だ。ファイルを暗号化したのと同じ人がそのファイルを復号化するため、公開鍵暗号法は必要ではない。

単に従来の暗号法によって平文・ファイルを暗号化するには、こう入力する。

   pgp -c textfile

この例では、textfileという平文を暗号化して、textfile.pgpという暗号化ファイルを作り出すが、これは公開鍵暗号法、鍵束、ユーザーID、その他を使わない。ファイルを暗号化するための従来の鍵として使うために、パスフレーズの入力を求められることになる。このパスフレーズは、あなた自身の秘密鍵を守るために使っているのと同じパスフレーズである必要はない(し、むしろ、違っているべきだ)。PGPは暗号化する前に平文を圧縮しようとすることに注意してほしい。

たとえ毎回同じパスフレーズを使ったとしても、PGPは同じ平文を同じ方法で2度暗号化することはない。

署名を復号化してチェックする
----------------------------------

暗号化ファイルを復号化したり、あるいは署名されたファイルの署名が本物かどうか確かめるには、

   pgp 暗号文ファイル [-o 平文ファイル]

注:[カッコ]はオプションの部分を示しているので、実際にはカッコを入力しない。

暗号文ファイル名は、デフォルトの拡張子として".pgp"がついているものとされる。オプションの平文出力ファイル名は、処理済みの平文出力先を指定する。もしここに名前を入れなければ、暗号ファイル名がそのまま拡張子なしで使われる。署名が暗号化ファイルの中に入れ子にされていれば自動的に復号化されて、署名が改竄されていないかどうかチェックされる。署名者の完全なユーザーIDが表示される。

暗号文ファイルが今署名されたところでも、今暗号化されたところでも、その両方でも、暗号文ファイルの「開封」は完全に自動的であることに注意。PGPは、暗号文ファイル内の鍵ID接頭辞を使って、自動的に適切な秘密暗号鍵をあなたの秘密鍵束から見つけてくる。もし入れ子にされた署名があれば、PGPは入れ子にされた署名内の鍵ID接頭辞を使って、自動的にあなたの公開鍵束から適切な公開鍵を探し出し、署名をチェックする。すべての正しい鍵がすでにあなたの鍵束に存在していれば、ユーザーは、必要な場合にはあなたの秘密鍵のパスワード入力を求められるだけで、それ以上に何もする必要がない。もし暗号文ファイルが公開鍵暗号法を使わないで従来の方法で暗号化されていれば、PGPはそれを認識し、従来の復号法のためのパスフレーズを問い合わせてくる。

 

鍵を管理する
=============

ユリウス・カエサル(ジュリアス・シーザー)の時代から、鍵管理は暗号法のなかでも最も困難な部分であった。PGPの顕著な特徴は、その洗練された鍵管理にある。

RSA鍵生成
------------------

あなただけの指定されたサイズの公開鍵・秘密鍵のペアを作るには、こう入力。

   pgp -kg

PGPは推奨鍵サイズ(商業用低級、商業用高級、「軍事」級)のメニューを示し、あなたは1000ビット以上の必要な鍵サイズを入力する。鍵が大きくなるほどセキュリティも確実になるが、時間がかかるようになる。

それからユーザーIDを聞いてくるが、これはあなたの名前だ。あなたのフルネームをユーザーIDに使うのはいい考えだ。誰かがあなたへのメッセージを暗号化するのに、間違った公開鍵を使う危険が減るからだ。スペースや句読点もユーザーIDに使っていい。名前のあとで、<山形カッコ>内にあなたの電子メールアドレスを入れるのもいいだろう。たとえば、

   Robert M. Smith <rms@xyzcorp.com>

もし電子メールアドレスを持っていないなら、電話番号か、あなたのユーザーIDが唯一のものであることを確実にするようなその他の独自な情報を使えばいい。

PGPはそれから「パスフレーズ」を聞いてくる。これは誤って誰かの手に落ちたときに秘密鍵を守るためである。このパスフレーズがなければ、だれもあなたの秘密鍵を使うことはできない。パスフレーズはパスワードのようなものだが、数語、スペース、句読点、その他が含まれたフレーズや文全体となっている。このパスフレーズを忘れないように。もし忘れたら、復旧手段はない。このパスフレーズは、あとであなたの秘密鍵を使うときには毎回必要となる。パスフレーズは大文字・小文字を気にしない。また、想像できるくらい短かったり易しすぎたりしてもいけない。画面に表示してはならない。それを誰かが読めるようなところに書いておいてもいけないし、コンピューターに保存してもならない。パスフレーズが必要ないというなら(それはバカだ!)リターン(またはエンター)キーをパスフレーズ・プロンプトで押せばいい。

公開鍵・秘密鍵のペアは、あなたのキー入力の間隔を高速タイマーで測った結果から主に作った巨大な真の乱数から作られる。ソフトは、あなたにいくつかのランダムな文字を入力するように言ってくる。これは鍵のためのランダム・ビットを蓄えるためである。要求されたら、適当にランダムなタイミングでいくつかのキーを叩けばいい。それは内容もでたらめでいいので、実際に何かの文字である必要もない。乱雑さのいくぶんかは、あなたの入力した内容のでたらめさから作られる。同じ文字の繰り返しを入力しないように。

RSA鍵生成は長いプロセスであることに注意。高速プロセッサでも短い鍵を作るのに数秒かかる。旧式IBM PC/XT互換機で大きな鍵を作るには数分かかるだろう。PGPは鍵生成中に視覚的に進行状況を示す。

作られた鍵のペアは、あなたの公開鍵束・秘密鍵束に置かれる。あとで -kx コマンドオプションを使えば、あなたの公開鍵束から新しい公開鍵を抽出(コピー)して、友人に配布するためにちょうどよい公開鍵ファイルを独自に作る。公開鍵ファイルは、友人たちの公開鍵束に入れてもらうために送信してよい。もちろん、あなたは秘密鍵ファイルは自分用に持っており、それは秘密鍵束に入れてあるはずである。鍵束のそれぞれの秘密鍵はそれぞれ独自のパスフレーズで守られている。秘密鍵はだれかに渡してはならない。同じ理由で、鍵のペアを友人のために作ってはならない。だれもが自分自身の鍵のペアをつくるべきである。秘密鍵の物理的統制を保ち、それを遠隔操作共用コンピューターに保存するような危険にさらしてはならない。それは自分のパソコンに保存すべきだ。

もしPGPユーザーズ・ガイドがあなたのコンピューターに見つからないから、それがなければ鍵のペアを作らない、とPGPが文句を言ってきても、うろたえてはならない。PGPユーザーズガイドの特殊事項の巻の「コンフィグ・パラメーター設定」の節の「NOMANUAL」パラメーターの説明を読むこと。

鍵をあなたの鍵束に追加する
-----------------------------

だれかから鍵ファイルの形で提供された鍵を、鍵束に追加したいときがあるだろう。

公開鍵ファイル・秘密鍵ファイルの内容をあなたの公開鍵束・秘密鍵束に追加するには([カッコ]はオプションを示す)

   pgp -ka 鍵ファイル [鍵束]

鍵ファイル拡張子のデフォルトは".pgp"である。オプションの鍵束ファイル名のデフォルトは、"pubring.pgp"か"secring.pgp"であり、その鍵ファイルが公開鍵なのか秘密鍵なのかによって決まる。あなたは別の鍵束ファイル名を指定してもいい。その拡張子のデフォルトは".pgp"である。

もし鍵が既に鍵束にあるなら、PGPは再び付加することはない。鍵ファイルの鍵は、だぶっていない限り鍵束にすべて追加される。

マニュアルのあとのほうで、署名によって鍵を保証する概念を説明することにする。もし追された鍵にそれを証明する署名がついていれば、署名が鍵に追加される。鍵がすでにあなたの鍵束にあれば、PGPはそれを新しく証明された署名を、まだ鍵束に持っていない鍵に追加することになる。

PGPはもともと、小さな個人的鍵束を扱うように作られていた。大きな鍵束を扱いたいなら、特殊事項の巻の「巨大な公開鍵束を扱う」の節を参照のこと。

鍵束から、鍵やユーザーIDを削除する
--------------------------------------------

鍵やユーザーIDを公開鍵束から削除するには

   pgp -kr ユーザーID [鍵束]

これは、あなたの鍵束の指定ユーザーIDを検索し、一致すればそれを削除する。ユーザーIDのどの一部分でも一致すればいいということを忘れてはならない。オプションの鍵束ファイル名は、やはり"pubring.pgp"となっている。それは省略してもいいし、もし秘密鍵を削除したければ"secring.pgp"と指定してもいい。また、別の鍵束ファイル名を指定してもいい。鍵束のデフォルトの拡張子は".pgp"である。

もし複数のユーザーIDがこの鍵についていれば、指定したユーザーIDだけを削除して鍵とその他のユーザーIDを残しておくかどうかを尋ねられる。

鍵束から鍵を抽出(コピー)する
---------------------------------------------

公開鍵束・秘密鍵束から鍵を抽出(コピー)するには、

   pgp -kx ユーザーID 鍵ファイル [鍵束]

これはあなたの公開鍵束・秘密鍵束から、指定した鍵ファイルに、ユーザーIDで指定された鍵を、ファイルを壊すことなくコピーする。これは、あなたの公開鍵のコピーを誰かにあげたいときに特に役立つ。

鍵が鍵束につけられた署名で証明されているなら、それは鍵と別にコピーされる。

電子メールのために、表示可能なアスキー文字で抽出鍵を表示したいなら、-kxaオプションを使う。

鍵束の内容を見る
-------------------------------------

公開鍵束の内容を見るには、

   pgp -kv[v] [ユーザーID] [鍵束]

これは、指定したユーザーIDの一部と合致するような鍵束内の鍵を一覧する。もしユーザーIDを指定しなければ、鍵束内のすべての鍵が一覧される。オプションの鍵束ファイル名は"pubring.pgp"である。それは指定しなくてもいいし、もし秘密鍵のリストが必要なら"secring.pgp"と指定してもいい。また、別の鍵束ファイル名を指定してもかまわない。デフォルトの鍵束拡張子は".pgp"である。

マニュアルのあとのほうで、署名で鍵を保証するという考え方について解説する。各鍵につけられた保証署名をすべて見るには、-kvv オプションを使う。

   pgp -kvv [ユーザーID] [鍵束]

特別な鍵束ファイル名を指定して、そのすべての鍵を見たいときには、このようにしてもいい。

   pgp keyfile

コマンドオプション指定がなければ、PGPは、keyfile.pgpのすべての鍵をリストアップし、もし鍵束に追加されていなければ、追加しようとする。

改変から公開鍵を守る方法
-----------------------------------------

公開鍵暗号システムで、あなたは公開鍵を露出しないようにする必要はない。実際、広く頒布されたほうがいい。しかし、公開鍵を改変から守ること、公開鍵が本当にその持ち主のものであることを確かめることは重要である。これが公開鍵暗号システムの最も重要な弱点かもしれない。最初に潜在的な問題点を見て、それからPGPでどのようにそれを避けるのかを見ていこう。

まず、あなたがプライベートなメッセージをアリスに送信するとしよう。まず、電子掲示板(BBS)からアリスの公開鍵証明書をダウンロードする。それから、アリスへの手紙をこの公開鍵で暗号化し、BBSの電子メール機能を使って送信する。

不幸にも、あなたもアリスも知らない間に、チャーリーという名の別のユーザーがBBSに侵入していて、アリスのユーザーIDで自分の公開鍵を作っていた。彼はアリスの本当の公開鍵の代わりに彼の偽物の鍵を置く。あなたは、知らない内に、アリスの公開鍵ではなく、チャーリーの偽鍵を使ってしまう。この偽鍵はアリスのユーザーIDなのだから、正常に見える。対応する秘密鍵を持っているチャーリーは、いまや、アリスの代わりにメッセージを復号化できる。彼はまた復号化されたメッセージを再度アリスの本当の公開鍵で暗号化して、悪事が疑われないようにアリスに転送する。さらに、彼はこの秘密鍵で、一見アリスの署名にみえるものを作ることもできる。だれもがアリスの署名をチェックするために、この偽の公開鍵を使うからだ。

この災難を防ぐための唯一の方法は、だれも公開鍵を改変できないようにすることである。もしあなたがアリスから直接アリスの公開鍵を手に入れたのなら、問題はない。しかし、アリスが数千マイルもの彼方にいるのなら、あるいは現在会えないなら、それはむずかしい。

おそらく、あなたはアリスの公開鍵を信頼できる共通の友人から得ることもできよう。デヴィッドはアリスの公開鍵の正しいコピーを持っているとわかっている。デヴィッドはアリスの公開鍵に署名し、アリスの鍵が正しいことを保証する。デヴィッドは、この署名を自分の秘密鍵で作る。

これは署名された公開鍵証明書を作ることになり、アリスの鍵が改変されていないことを明らかにする。これは、あなたがデヴィッドの署名をチェックするために、その公開鍵の正しいコピーを知っている必要がある。おそらく、デヴィッドはアリスにも、署名されたあなたの公開鍵を送っていることだろう。デヴィッドはあなたとアリスの間の「紹介者」の役目を果たしているのである。

アリスのために署名されたこの公開鍵証明書は、デヴィッドかアリスによってBBSにアップロードされ、あなたはそれをあとでダウンロードできる。それからデヴィッドの公開鍵を使って署名を確認し、こうしてアリスの公開鍵が本物であることを確信した。ほかの誰も、デヴィッドの作った署名を偽造することはできないので、どんな詐欺師もアリスのふりをして自分の偽の鍵を渡そうとだますことはできないのである。

広く信頼された人物は、公開鍵証明書に署名することによって、ユーザーを互いに「紹介」する役目に専念することもできる。この信頼された人物は「キーサーバー(key server)」あるいは「保証当局(Certifying Authority)」とみなされる。キーサーバーの署名のついたいかなる公開鍵証明書も、その持ち主の本当の鍵であることを証明している。参加したいすべてのユーザーは、キーサーバーの署名が正しいかどうかを確かめるために、キーサーバーの公開鍵のまさに正しいコピーであると知られているものを必要とすることになろう。

信頼できる中央集権化キーサーバーあるいは保証当局は、大規模な非個人レベルの中央統制法人または政府機関にふさわしい。いくつかの制度上の環境では、保証当局のヒエラルキーを使用している。

さらに多くの分権化された草の根「ゲリラ型」環境のためには、どのユーザーも、友人のための信頼できる紹介者として活動するほうが、おそらく中央集権化されたキーサーバーより役立つだろう。PGPはこの組織的分権化非制度的アプローチを強調したい。そのほうが個人社会レベルに自然な対話法をもたらし、鍵管理を信頼できるよい方法を人々が選ぶことができるのである。

改変から公開鍵を守る作業全体が、公開鍵活用に当たって一番むずかしい唯一の問題である。これが公開鍵暗号法のアキレス腱であり、多くのソフトのややこしさはこの唯一の問題を解くために縛られている。

あなたは、改変されていない正しい公開鍵であって、所有者本人のものであることを確証したあとでのみ、公開鍵を使うべきである。所有者からこの公開鍵証明書を直接得たか、あるいはあなたがすでによい公開鍵を持っていて、あなたが信頼する誰かの署名がついているのなら、それを信頼してもよい。また、ユーザーIDは鍵所有者のフルネームが入っていて、ファーストネームだけであってはならない。

どれほど誘惑されたことがあったとしても――今後誘惑されるとしても――絶対に、絶対に、BBSからダウンロードした公開鍵を信用して便宜をはかってはならない。それがあなたの信頼するだれかによって署名されるまでは。その未保証公開鍵は、だれかに改変されたかもしれない。BBSのシステム管理者によってかもしれない。

もしあなたがだれかの公開鍵に署名するよう頼まれたら、本当にその公開鍵証明書のユーザーIDに書かれている人のものかどうか確かめること。その人の公開鍵証明書にあなたが署名するということは、あなたがこの公開鍵が本当にその人のものであると誓約することである。あなたを信頼する人たちは、あなたが署名しているからその鍵を受け入れるのだ。噂に頼るのはよろしくなかろう――あなたが直接、その鍵が本人のものであると独自に知るまでは、その公開鍵にサインしてはならない。あなたは、本人から直接それを手にしたときにのみ署名すべきである。

公開鍵に署名するために、その鍵の所有権について、単にそれがメッセージを暗号化するだけに使われるのではないということを確認しておかねばならない。それを使うだけ充分に鍵の妥当性を確信するためには、信頼で得きる紹介者から保証された署名で充分だ。しかし、鍵にあなた自身が署名するためには、その鍵を所有している人について、独自の直接的な知識が必要なのだ。おそらく、あなたは鍵の所有者に電話でき、鍵ファイルを読み上げて、その鍵が本当に本人の鍵であることを確かめることができるだろう――そうすれば、あなたは本当に正しい人物と話していることがわかるはずだ。特殊事項の巻の「公開鍵を電話で立証する」という節に、詳細がある。

公開鍵に対するあなたの署名は、その人の正しさを証明するものではなく、単にその人の公開鍵の正しさ(所有権)を証明するだけであるということは心にとめておいてほしい。もし本人のものであると完全に確信して反社会的な人物の公開鍵に署名しても、自分の信用を失うリスクを犯すことはない。他の人は、あなたが署名したから(あなたを信頼できる人とみなして)、その鍵が彼に属するものであることを受け入れるだろうが、その鍵の持ち主を信頼することにはならない。鍵を信頼することは、その鍵の所有者を信頼することと同じではないのである。

信頼は、譲渡可能である必要はない。わたしには、ウソをつかないと信頼できる友人がいる。彼は、大統領はウソをつかないと信じているだまされやすい人物である。だからといって、大統領はウソをつかないとわたしが信じるということにはならない。それは常識だ。もしわたしが鍵につけられたアリスの署名を信頼し、アリスがチャーリーの鍵に署名したとしても、わたしが鍵につけられたチャーリーの署名を信用するということにはならないのである。

あなた自身の公開鍵を手元に置いておくのに、さまざまな「紹介者」からつけられた保証書を一緒に置いておくというのはいい考えだ。あなた自身の公開鍵の有効性を証明する紹介者のなかに、最低一人は信頼できる人がいるかもしれないからだ。あなたは、さまざまな電子BBSに、つけられた保証署名集つきで鍵を投稿してもよい。もしだれかの公開鍵にあなたが署名すれば、その持ち主自身の公開鍵信任状のコレクションに追加できるように、その署名を送り返してあげるといい。

PGPは、あなたの公開鍵束にある鍵があなたの信頼する紹介者から適切に署名保証されるための機能を用意している。あなたがすることは、PGPに、あなたが紹介者として信頼するのはどの人であるか、あなた自身の絶対的に信用できる鍵であなた自身がその鍵を保証するかを告げるだけである。PGPはそれを抽出し、あなたの示した紹介者によって署名された他の鍵を自動的に有効にする。そしてもちろん、あなたは直接自分でもっと多くの鍵に署名することができる。これはあとで述べる。

他の誰もあなたの公開鍵束を改変できないことを確実にしておこう。新しく署名された公開鍵証明書をチェックすることは、最終的に、あなた自身の公開鍵束にすでに存在している確かな公開鍵の確かさに依存しなければならないのだ。あなたの公開鍵束を物理的に管理するのは、あなたの秘密鍵と同様、遠隔同期システムよりもあなたのパソコンに置いておくほうがいい。これは、改変から防ぐのであって、暴露から防ぐのではない。公開鍵束と秘密鍵束の信頼できるバックアップコピーを、書き込み禁止メディアに保存しておこう。

あなたの信頼する公開鍵は、直接・間接に、あなたの鍵束の他の鍵にとっての最終的権威となる。つまり、これは改変から守らなければならない最重要鍵である。あなた自身の絶対信頼できる公開鍵の改変を検出するために、PGPは自動で書き込み禁止メディアにバックアップコピーされたものと公開鍵を比較することができる。詳細は、特殊事項の巻で"-kc"鍵束チェックコマンドの説明を参照してほしい。

PGPは一般的に、あなたがPGPそのもののコピーだけではなく、システムや鍵束の物理的セキュリティが保たれているものと想定している。もし侵入者があなたのディスクを改変できるなら、理論的に、鍵改変を発見するPGPの予防措置そのものを変えて、PGPそのものを改変できるのである。

あなたの公開鍵束全体を改変から防ぐための多少面倒な方法としては、束全体に秘密鍵に署名することがある。あなたはこうするために、束を"-sb"オプションで署名して、公開鍵束の分離型署名証明書を作ってもいい(PGPユーザーズガイドの特別事項編「メッセージから署名を分ける」の節を参照)。不幸にも、あなたはまだ、あなたが作った署名をチェックするために、あなた自身の公開鍵の信頼できるコピーをあちこちに保持する必要がある。あなたは、束全体のためにあなたが作った署名をチェックするために、あなたの公開鍵束に蓄えられたあなた自身の公開鍵を信頼できないのである。それは、あなたがチェックしようとしているものの一部なのだから。

PGPはどのようにして、どの鍵が有効であるかの記録を残すか
------------------------------------------------

この節を読む前に、上の「公開鍵を改変から守る方法」の節を必ず読んでおくこと。

PGPは、あなたの公開鍵束のどの鍵があなたの信頼する人から紹介された署名によって適切に証明されたかという記録を残している。あなたは、ただ、PGPに、あなたが信頼する人は誰かということ、そしてあなた自身の絶対に信頼できる鍵であなた自身が保証する鍵を告げるだけでいい。PGPはそれを抽出し、自動的に、あなたの示した紹介者に署名された他の鍵をすべて有効にする。そしてもちろん、あなたは直接鍵に自分で署名することもできる。

公開鍵の有効性を判定するには、二つの完全に別々な標準PGP使用法がある――それを混同しないように。

1) 鍵は実際に所有者のものであるか?
 つまり、信頼できる署名で保証されたか?
2) それはあなたが他の鍵を保証するためにあなたが信頼できるだれかのものであるか?

PGPは、最初の質問には答えを出すことができる。第2の質問に答えるには、PGPはユーザーであるあなたによって示されねばならない。あなたが第2問への答えを出すとき、PGPはそれから、あなたが信頼できると述べた紹介者によって署名された他の鍵に対して、質問1への答えを導き出す。

信頼できる紹介者によって保証された鍵は、PGPによって有効とみなされる。信頼できる紹介者の鍵は、あなたが、他の信頼できる紹介者によってそれもまた保証されなければならない。

PGPはまた、紹介者として活動する人々への信頼度に何段階かあるという可能性も考慮している。紹介者として活動する鍵所有者へのあなたの信頼は、その人の人格的誠実度に対するあなたの評価を反映しているわけではない――彼らは鍵管理を理解しており、鍵への署名にあたってはよい判断を下している、とあなたがどれだけ考えているかということを反映するものである。未知、信頼できない、わずかに信用する、完全に信用する、という段階を、他の公開鍵に対してPGPに指示することができる。この信用情報は、鍵とともに鍵束に保存されるが、鍵束から鍵をコピーするようにPGPに命じたときには、PGPは鍵と一緒に信用情報をコピーしたりはしない。信頼に対するあなたの個人的見解は、秘密に属するものであるとみなされるからである。

PGPが公開鍵の有効性を計算しているとき、添付された保証署名すべての信頼値を考慮する。それは評価の重みを調整する――「わずかに信用する」2つのサインは、一つの「完全に信頼する」署名と同程度に信頼できるとみなされる。PGPの疑いは調整可能だ――たとえば、あなたはPGPを調整して、二つの「完全に信頼する」サイン二つか、「わずかに信頼する」サイン三つが、鍵を有効と判断するのに必要ということにしてもいい。

あなた自身の鍵はPGPにとって「大前提」として有効であり、その有効性を証明するために紹介者のサインはまったく必要でない。PGPは、秘密鍵束の秘密鍵と対照させることで、どの公開鍵があなたのものであるか知っている。PGPはまた、他の鍵を保証するのにあなた自身は絶対に信頼できるものとみなす。

時間が経つにつれて、あなたは、信頼できる紹介者として指名したい人たちからの鍵をためていくことだろう。だれでもお互いに、自分自身の信頼できる紹介者を選ぶことができる。そして、彼らの鍵には次第に、他の人からの保証のコレクションが増えて広まることになる。そして、受け取っただれかのうち、少なくとも一人か二人は署名するだろうとも予測される。こうして、すべての公開鍵のための信頼にとっては、誤った寛大さを持つ分散型ウェブが登場することになるだろう。

この独特な草の根アプローチは、インターネット・プライバシー強化メール(Internet Privacy Enhanced Mail, PEM)のような政府標準公開鍵管理計画とまったく逆のものである。PEMは、集中管理と義務的な信頼の集中にもとづいたものだ。標準計画は、あなたが信頼しなければならないと言ってくる保証当局のヒエラルキーに頼っている。公開鍵の合法性を決定するためのPGPの分散型蓋然論法は、鍵管理構造の中心的要素である。PGPはあなたが信頼する人だけを選べるようにする。あなたのプライベートな証明ピラミッドの頂点には、あなたがいるのだ。PGPは、自分自身の落下傘を自分で準備したい(自分の安全は自分で確かめたい)というような人に向いている。

秘密鍵を暴露から守る方法
------------------------------------------

秘密鍵とパスフレーズは慎重に守ること。本当に、本当に、慎重に。秘密鍵が信用できなくなったら、だれかがあなたの名前で署名するために使うまえに、すべての関連する集団に速やかに告げておいたほうがいい(幸運を祈る)。例えば、彼らは偽の公開鍵を保証する署名に使うこともできるし、そうなれば、もしあなたの署名が広く信頼されているときには特に多くの人々に問題を引き起こすことにもなる。そしてもちろん、あなた自身の秘密鍵の信用失墜は、あなたに送られてくるすべてのメッセージを危険にさらすことになる。

秘密鍵を守るには、秘密鍵の物理的管理を保つことから始めるといい。それを家のパソコンに入れておくのはかまわないし、持ち歩けるノートパソコンに入れておくのもいい。常に物理的管理をしておけない職場のコンピューターを使わなければならないとき、公開鍵束・秘密鍵束を書き込み禁止のフロッピーディスクに入れておき、それを職場に残しておかないようにする。ダイヤル・インUnix遠隔操作システムのような遠隔同期コンピューターで秘密鍵を扱えるようにするのはいい考えとはいえない。誰かがモデム回線を使って侵入し、パスフレーズを盗んで、遠隔操作システムから実際の秘密鍵を入手するだろう。秘密鍵は、自分の物理的管理下に置ける機械でのみ使うべきである。

パスフレーズは、秘密鍵ファイルのあるコンピューターのどこにも保管しておいてはいけない。秘密鍵とパスフレーズを同じコンピューターに保管しておくのは、ATM銀行カードと同じ財布に暗証番号を入れておくのと同じくらい危険だ。パスフレーズと秘密鍵ファイルの両方があるディスクに誰かの手を入れさせたいとは思わないだろう。パスフレーズは暗記するだけで、脳以外のどこにも保管しないと言うのが一番安全であろう。パスフレーズを書いておきたいなら、秘密鍵よりもずっと厳重に、それをしっかり守っておかねばならない。

それから、秘密鍵束のバックアップ・コピーをとっておくこと――あなただけが秘密鍵のコピーを持っており、それをなくすということは、世界中に広めたあなたの公開鍵のコピーすべてが役に立たなくなってしまうということを覚えておいてほしい。

公開鍵を管理するために分権化された非組織的な方法でPGPを使うことは、利益もあるが、それはあいにく、どの鍵が損なわれたかというリストを一つのまとまったリストに頼ることができないということも意味している。これは、損なわれた秘密鍵の損害を含めることも少々難しくしている。あなたは、言葉で広めて、誰もがそれを聞いてくれるように望むしかない。

最悪の事態が起こったら――あなたの秘密鍵とパスフレーズの両方が損なわれたら(何とかこれを発見できると期待したい)――「鍵汚損」証明書を発行する必要がある。この種の証明書は、他の人にあなたの公開鍵の使用を止めるよう警告するために使われる。このような証明書をPGPを使って作るには、"-kd"コマンドを使う。それから、どうにかしてこの汚損証明書をこの惑星の他のすべての人に送るか、少なくともあなたの友人すべてとその友人、などに送る必要がある。彼ら自身のPGPソフトは、この鍵汚損証明書を公開鍵束にインストールし、自動的にうっかりあなたの公開鍵を使うことがないようにする。あなたは新しい秘密・公開鍵のペアを作って、新しい公開鍵を公開することができる。新しい公開鍵と、古い鍵の汚損証明書をひとまとめにして送ってもいい。

公開鍵を撤回する
---------------------

あなたの秘密鍵とパスフレーズがどういうわけか両方とも汚損されたとしよう。あなたは、その公開鍵の使用をやめるように、そのことを世界中に広めなければならない。そのためには、「鍵汚損」証明書または「鍵撤回」証明書を発行して、公開鍵を撤回しよう。

あなた自身の鍵を撤回する証明書を作るには、-kdコマンドを使う。
   pgp -kd あなたのユーザーID

この証明書は、撤回するのと同じ鍵で署名をしてある。あなたはこの鍵撤回証明書を、できるだけ早く頒布すべきだ。それを受け取った人たちは、自分たちの公開鍵束に追加する。そうすれば彼らのPGPソフトは自動的に、うっかりあなたの古い公開鍵を使わないようにしてくれる。あなたは新しい秘密・公開鍵のペアを作って、新しい公開鍵を公開すればいい。

あなたは秘密鍵の汚損以外の理由で鍵を撤回することにしてもいい。もしそうなら、同じやり方で撤回すればいいのである。

秘密鍵をなくしたらどうするか?
---------------------------------

ふつう、もしあなたが自分の秘密鍵を撤回したいときは、"-kd"コマンドをつかって、撤回証明書を作り、それに秘密鍵で署名する(「公開鍵を撤回する」を参照)。

しかし、もし秘密鍵をなくしたり、秘密鍵が破壊されたときにはどうしたらいいだろうか。あなたは自分自身では撤回できない。撤回には自分の秘密鍵が必要なのに、それを持っていないからだ。PGPの将来の版では、信頼された紹介者が公開鍵撤回を保証できるようにして、こういった状況でも鍵を撤回する安全な方法を提供することになるだろう。しかし、今のところ、あなたは何らかの非公式な方法で、あなたの公開鍵を公開鍵束から「無効」にするように頼まなければならない。

他のユーザーは、自分の公開鍵束からあなたの公開鍵を無効にするのに"-kd"コマンドを使えばよい。もしユーザーIDが秘密鍵束にある秘密鍵と対応していないと指定されるならば、-kdコマンドはユーザーIDを公開鍵束から探し出し、その公開鍵を無効にするだろう。無効な鍵はいかなるメッセージを暗号化するためにも使われないし、-kxコマンドで鍵束から取り除くこともできない。それは署名をチェックするためにはまだ使えるが、警告を表示することになる。もしユーザーが同じ鍵を鍵束にまた追加しようとしても、無効鍵はすでに鍵束のなかにあるので、無理である。これらの複合機能は、無効鍵がさらに広がることがないようにする一助となるだろう。

もし指定された公開鍵がすでに無効化されているなら、-kdコマンドは、あなたが鍵を再び有効にしたいのかどうか尋ねてくる。

 

高度な事項
===============

「高度な事項」のほとんどは、「PGPユーザーガイド 第2巻:特殊事項」にある。ここでは、ここで触れるにふさわしいいくつかの項目がある。

電子メール経由で暗号文を送る:Radix-64フォーマット
-----------------------------------------------------------

多くの電子メールシステムは、ASCII文字で作られたメッセージのみを認めており、暗号文が作られている8ビットの未処理バイナリデータには対応していない。この問題を解決するために、PGPはASCII radix-64フォーマットを暗号文メッセージのためにサポートしている。同様に、インターネット・プライバシー強化メール(PEM)フォーマット、インターネットMIMEフォーマットにも対応している。この特殊なフォーマットは、表示可能なASCII文字だけを使ってバイナリデータを表わすため、7ビット経路を通してバイナリ暗号化データを送ったり、バイナリ暗号化データを普通の電子メールテキストで送るのに便利である。このフォーマットは「輸送用装甲」として作動し、インターシステム・ゲートウェイ経由でインターネットに渡ったときに劣化しないようにする。PGPは輸送エラーを検出するためのCRCも付加する。

Radix-64フォーマットは、3つのバイナリ8ビット・バイトのグループを4つの印字可能なASCII文字に拡張することで平文を変換するので、ファイルは約33%大きくなる。しかし、この拡張はそれほど悪くない。PGPで暗号化される以前よりももっと圧縮されるだろうからだ。

ASCII radix-64フォーマットの暗号文ファイルを生成するには、メッセージを暗号化・署名するときに"a"オプションをつけるだけでいい。このように。

   pgp -esa message.txt 相手のユーザーID

この例では、MIME風のASCII radix-64フォーマットのデータを含む"message.asc"と呼ばれる暗号ファイルを作り出す。このファイルは、インターネットその他の電子メールネットワーク上でのふつうの電子メールとして送付するための7ビット経路を通して、テキスト・エディタで簡単にアップロードできる。

radix-64輸送装甲メッセージを復号化することは、普通の復号化と何の違いもない。例えば、

   pgp message

PGPは自動的に、バイナリファイル"message.pgp"を探すまえに、ASCIIファイル"message.asc"を探す。そして、そのファイルがradix-64フォーマットであって、普通の過程を進めるまえにバイナリに変換し、バイナリ形式の".pgp"暗号文ファイルを生成する。最終的な出力ファイルはふつうの平文形であり、もとのファイル"message.txt"ということになる。

ほとんどのインターネット電子メール機能は、50000バイト以上、あるいは65000バイト以上のメッセージを送れないようにしている。それ以上に長いメールは、分割してメールできるようにもっと小さな部分に分割しなければならない。もしあなたの暗号化メッセージが非常に大きく、しかもradix-64フォーマット
にしていたなら、PGPは児童手でそれを電子メールで送れるくらい充分に小さな断片に解体してくれる。この断片は、".as1", ".as2", ".as3"といった拡張子名のついたファイルに収められる。受け手は、これらの分割ファイルを復号化する前に、適切な方法で一つの大きなファイルに連結しなければならない。復号化にあたって、PGPは、radix-64メッセージブロックに同封されていないメールヘッダーの余計なテキストなどは無視する。

もしあなたが公開鍵をだれかにradix-64フォーマットで送信したいなら、鍵束から鍵を抜き出すときに-aオプションをつければよい。

暗号文ファイルを作ったり、鍵を抜き出したりするときに-aオプションを忘れたら、バイナリファイルをradix-64フォーマットに直接変換するために、他の暗号化オプションを指定することなく、-aオプションだけを使えばいい。PGPはそれを".asc"ファイルに変換するだろう。

もしあなたが平文ファイルを暗号化することなく署名するなら、PGPはそれに署名したあとふつうに圧縮し、ふつうの人間の観察者には読めないように圧縮するだろう。これは署名されたファイルをアーカイブ・アプリケーションに保存するのに適した法保父だ。しかし、あなたが署名されたメッセージを電子メールで、しかももとの平文メッセージをテキスト形式で(バイナリでなく)送りたいときには、それを電子メール経路で平文を圧縮しない形で送る方法がある。ASCII装甲は、バイナリ署名証明書だけに適用され、平文メッセージはそのままになる。これは、署名されたメッセージを、PGPがなくても人間の目で読めるように受け手に送ることができる。もちろん、PGPはこの署名を実際にチェックするために必要だ。この機能についての詳しい情報は、特別事項の巻にある「設定パラメーターを設定」の章にあるCLEARSIGパラメーターの説明を参照のこと。

あなたは、暗号化したりPGPで署名することなく、バイナリデータファイルを電子メール経由で送りたいときもあるだろう。このために、Unix uuencode ユーティリティを使う人もいる。PGPもこの目的のために使うことができる。単に-aオプションだけを使えばいいので、uuencode ユーティリティよりもいいだろう。詳しくは、特殊事項の巻の「PGPをよりよいUuencodeとして使う」の章を参照のこと。


パス名のための環境変数
------------------------------------

PGPはいくつかの特別なファイルをその目的のために使う。たとえば、標準鍵束ファイルの"pubring.pgp"と"secring.pgp"、乱数発生ファイル"randseed.bin"、PGP設定ファイル"config.txt"(あるいは"pgp.ini"や".pgprc")、そして外国語変換ファイル"language.txt"である。これらの特殊ファイルは、環境変数"PGPPATH"を必要なパス名に設定すれば、どのディレクトリにあってもいいことになる。たとえば、MS-DOSでは、シェル・コマンドで、

   SET PGPPATH=C:\PGP

とすれば、あなたの公開鍵ファイル名を"C:\PGP\pubring.pgp"としてPGPに認識させることになる。もちろん、このディレクトリが存在するとしてだ。あなたの好きなテキスト・エディタを使って、MS-DOSのAUTOEXEC.BATファイルを書き換え、あなたのシステムを起動したときにはいつもこの変数を自動的に設定するといい。PGPPATHが未定義であれば、これらの特殊ファイルはカレントディレクトリにあると想定される。

パラメーターをPGP設定ファイルに設定する
------------------------------------------------

PGPは、シェルの環境変数PGPPATHで指定されたディレクトリにある"config.txt"という特別PGP設定テキストファイルに、いろいろなユーザー設定可能なパラメーターを定義している。設定ファイルは、PGPのコマンドラインでいつも定義しなくても、PGPにさまざまなフラグやパラメーターをユーザーが定義することができるようにしている。

それぞれのOSのためにファイル名の別名を記しておくなら、Unixシステムでの設定ファイルは".pgprc"という名前になるだろうし、MS-DOSシステムでは"pgp.ini"となるかもしれない。

これらの設定パラメーターは、たとえば、PGPが一時消去ファイルを保存する場所を設定したり、PGPが診断メッセージやユーザープロンプトを何語で表示するかを選択したり、証明署名の等級に基づいてPGPが鍵有効性を決定するレベルを変更したりできる。

これらの設定パラメーターの詳細については、PGPユーザーズガイドの特殊事項の巻の適切な章を参照のこと。

弱点
---------------

どのデータセキュリティシステムも不可解ではない。PGPはさまざまな方法で解読されうる。パスフレーズや秘密鍵の汚損、公開鍵の改変、削除したがディスクには残っているファイル、ウィルスとトロイの木馬、物理的セキュリティの抜け道、電磁的放出、多人数使用での露出、経路分析、そして直接的な暗号解読術、といった潜在的な弱点の数々を考えることができよう。

これらの問題についての詳細な議論は、PGPユーザーズガイドの特殊事項の巻の「弱点」の章を参照のこと。

 

インチキ薬にご用心
===================

暗号ソフトパッケージを試すとき、常に疑問が残る。なぜこの製品を信用できるのだろうか? ソースコードを自分自身で試したとしても、その安全性を判断するだけの暗号の経験をだれもが持っているわけではない。あなたが経験のある暗号家であったとしても、アルゴリズム中でほとんど見えない弱点を見のがしているかもしれない。

私が70年代はじめに大学にいた時分、みごとな暗号化計画だと信じるものを考案した。暗号文を作るのに、簡単な疑似乱数の流れが平文の流れに追加されるものである。これは、暗号文のいかなる周波数分析をも表面的には防ぐことができ、最も情報を有する政府諜報機関でさえもクラックできないだろうと思っていた。私は作品についてあまりにも自己満足していた。あまりにもうぬぼれていたのだ。

数年後、私はいくつかの入門用暗号使用法文書と指導書で、これと同じ方法を発見した。すばらしい。他の暗号家も同じ方法を考えていた。あいにく、この方法は、簡単にクラックするための基本的な暗号分析テクニックの使い方についての簡単な宿題として提示されていたのだ。わが栄光の方法はそんなものだったのだ。

この惨めな経験から、暗号化アルゴリズムを考案するとき、いかにたやすく、安全性についての誤った感覚に陥りやすいかを学んだ。情報を多く有した相手による長く決定的な攻撃に耐えることのできる暗号化アルゴリズムを考案することがどれほど複雑で難しいか、ほとんどの人は知らない。多くの主流のソフト・エンジニアは、同じように繊細な暗号法(ときにはほとんど同じ暗号法)を開発してきたし、そのうちのいくつかは商用暗号ソフトパッケージに組み入れられて、数千人の疑いを抱かないユーザーに結構な価格で販売されてきた。

これは、よさそうに見えて、よさそうに感じるが、最も遅い衝突テストでも裂けてしまうような自動車のシートベルトを売るのに似ている。こんなものに頼ることは、シートベルトをまったくつけていないより悪いかもしれない。実際に衝突するまで、それが悪いだろうとは誰も疑わない。弱い暗号ソフトに頼ることは、繊細な情報を知らず知らずのうちに危機的な状況に置かせてしまうかもしれない。もしあなたが暗号化ソフトを全然使っていないなら、そんなことはないであろう。おそらく、あなたは、自分のデータが解読されたことさえ気づかないかもしれない。

商用パッケージでは、連邦データ暗号化標準(DES)を使っていることがある。これは、政府によって商用に推薦されている、かなりよい従来のアルゴリズムである(が、機密情報に使われないのは、何とも奇妙じゃないか。うーん)。DESはいくつかの「作動モード」で使えるようになっており、それには段階がある。政府は特に、メッセージのためには、最も弱い単純なモードである電子コードブック(ECB)モードを使わないようすすめている。そして、もっと強くて複雑な暗号フィードバック(CFB)モードか暗号ブロックチェーン(CBC)を使うように勧めているのである。

あいにく、私の見たほとんどの商用暗号パッケージはECBモードを使っている。これらを使っている数多くの著者と話したとき、彼らはCBCやCFBモードについて聞いたことはなく、ECBモードが最も弱いというのもしらない、というのである。これらの基本的な概念について理解するだけの十分な暗号学を学んでいなかったという事実は、安心できるものではない。それに、彼らは自らのDES鍵を不適当な、あるいは不安定な方法で管理している。さらに、これらの同じソフト・パッケージは、もっと遅いDESの変わりに使われる、二番目に早い暗号化アルゴリズムを含んでいる。パッケージの著者は、自分の専売の高速アルゴリズムはDESくらいに安全だと思っていることもあるが、そういう人に質問すればいつも、それがわたし自身の学生時代の栄光ある方法のバリエーションにすぎないことがわかるのだ。いや、もしかしたら彼は自分の専売の暗号法作品がどのようなものか明らかにしたくもないのかもしれないが、それは栄光ある方法であって信頼すべきものだと確実にされることもないのである。アルゴリズムは見事だと本人は信じているのだと思うが、それを見ないでどうやって私たちは判断できよう?

公正を期すため、わたしはこれらのひどく弱い製品が、暗号技術を専攻している会社から出たものではないことを指摘しておかなければならない。

DESを適切な作動モードで使っている本当によいソフト・パッケージであっても、まだ問題を抱えている。標準DESは56ビット鍵を使うが、これは今日の標準からいえば小さすぎ、特別に高速な機械で徹底的な鍵検索をすれば簡単に破られるであろう。DESはその耐用年数を終えようとしているのであり、それに依拠しているソフトパッケージも同様なのである。

AccessData(87 East 600 South, Orem, Utah 84058, phone 1-800-658-5199)という会社がある。ここは、WordPerfect, Lotus1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, MS Word 2.0で使われている組み込み暗号をクラックする185ドルの製品を売っている。それは単にパスワードを見抜くだけのものではない――ほんとうの暗号分析を行なうのだ。自分自身のパスワードを忘れた人がそれを購入している。法的強制執行機関もこれを購入しており、彼らが押収したファイルを読むことができる。私はその作成者のEric Thompsonと話をした。そのプログラムがクラックするには1秒もかからないが、顧客がそんなに簡単なものだと思わないように、遅くするためのループを組み込んであるのだ、ということだった。彼はまた、PKZIPファイルのパスワード暗号化機能もよく簡単に破れるとか、彼の法的執行機関の顧客はすでに別のメーカーから規則的にそのサービスを受けていると話した。

いくつかの点で、暗号法は調剤に似ている。その確実さは絶対に重要なものとなるだろう。悪いペニシリンもよいペニシリンと同じように見える。あなたのスプレッドシート・ソフトが悪いかどうかはいえるだろうが、あなたの暗号商品が弱いかどうかはどうやってわかるだろう? 弱い暗号化アルゴリズムで作られた暗号文は、強力な暗号化アルゴリズムで作られた暗号文と同じくらいよくみえる。多くのインチキ薬がある。いかさま治療が数多くある。老舗の特許医薬品行商人と違って、これらのソフトについては、スタッフすらインチキ薬だとわかっていないのがふつうだ。彼らはよいソフト・エンジニアかもしれないが、ふつう、暗号法についての学術論文を少しも読んでいない。それでも、彼らはよい暗号ソフトを作ったと考えるのだ。なぜ読まないのか? 結局、それは直感的に簡単そうにみえるのだ。そして、彼らのソフトもちゃんと動いているように見えるのである。

だれも壊せない強力な暗号法を開発したと考える人は、信じられないほどの希有な天才であるか、さもなくば繊細で未熟な者だ。あいにく、私は、彼ら自身の設計した暗号化アルゴリズムを付け加えてPGPを「改良」したいと思わせるような暗号作成者をほしいと思うことがある。

NSAの上級暗号家であるBrian Snowと話したことがある。彼が言うには、最初に暗号をクラックするのに時間を費やして「サイコロで設けた」ことのない人間が作ったような暗号化アルゴリズムは絶対に信用しない、という。それはよくわかった。私は、この基準にかなう商用暗号界の人間はだれもいないと思った。「そうだ」と、彼は得たりとばかりにほほえんだ。「そして、そのことでNSAでの我々の仕事はずっと洛になっている」。ぞっとする考えだ。私も資格がなかった。政府もインチキ薬を行商してきたのだ。第2次世界大戦後、合衆国はドイツのエニグマ暗号器を第3世界の政府に売却した。しかし、彼らは、連合国が戦時中にエニグマの暗号をクラックしていたとは告げなかったし、その事実は長い間機密扱いだった。現在でも、多くの世界的なUnixシステムは、エニグマ暗号をファイル暗号のために使っている。それは、よりよいアルゴリズムを使用することに対して法的障害を作っていたということもある。彼らは1977年、最初のRSAアルゴリズムの公開すらも妨げようとした。さらに彼らは一般社会のための効果的な機密保持電話を開発するためのすべての商用努力を根本的につぶしたのである。

合衆国政府の国家安全保障局(NSA)の基本的な仕事は、人々の私的通信を盗聴することなどから諜報を集めることである(James Bamford著"The Puzzle Palace"を参照のこと)。NSAは、暗号をクラックするための優れた能力と情報を蓄積してきた。人々がよい暗号法を使って自衛できないなら、NSAの仕事はずいぶん簡単になる。NSAはまた、暗号化アルゴリズムを承認・推薦する任務も有している。これは、厳重に囲われた鶏小屋に狐を入れるような、興味深い矛盾だ、と語る批評家もいる。NSAは、彼らが設計した従来の暗号化アルゴリズムを記憶し、それが機密扱いにされているためにどのように動くかは誰にも言わない。彼らは他人に、信頼してそれを使うように、という。しかし、どの暗号作成者も、うまく設計された暗号家アルゴリズムならば安全のために機密扱いされる必要はない、というだろう。鍵だけが守られる必要を有しているのだ。NSAの機密アルゴリズムが安全だと、どうすればだれが本当にわかることができようか。NSAが彼らのみクラックできる暗号化アルゴリズムを設計するのは難しいことではない。もし、だれもそのアルゴリズムを知ることができないのであれば。彼らはインチキ薬を慎重に売っているのではないのか?

合衆国の商用暗号ソフトの質が下がったのには、3つの主な原因がある。第一は、商用暗号化ソフト使用能力が、事実上、一般的に欠けているということである(これはPGPの公開以来、変わりつつあるが)。ソフト・エンジニアはみな、自分が暗号作成者だという幻想を抱き、そのために本当に悪い暗号ソフトが万円してきたのである。第二は、法的威嚇および経済的圧力によって、すべてのよい商用暗号化技術を慎重に、体系的に抑圧しているNSAである。この圧力の一部は、暗号ソフトの厳格な輸出規制によってもたらされた。これは、ソフト・マーケティング経済によって国内の暗号ソフトを抑制する包括的効果を持っていた。抑圧に関する最後の原則は、すべての公開鍵暗号アルゴリズムのソフト特許をただ一つの会社に譲渡し、この技術が広がることを抑圧するために一つの抑圧点に限定したことである。これらすべての包括的影響は、PGPが公開される以前のものであり、合衆国では高度に安全な一般目的暗号ソフトはほとんど存在しなかったのである。

私は、大学時代からのすばらしい暗号化ソフトについての経験があるので、PGPのセキュリティについて確実だとはいえない。もし私がそうできたら、それは悪い徴候だ。しかし、私は、PGPがあからさまな弱点は含んでいないということは一応確信している(バグはあるかもしれないが)。暗号アルゴリズムは、民間の暗号学会の高度な人々によって開発され、個人的な課題として広く同好の士のあいだでレビューされてきた。ソースコードは、PGPがレビューされるように、またユーザーの恐怖をなくすために、利用可能にしてある。それはかなりよく研究され、制作には年数がかかってきた。そして、わたしはNSAで働いていない。PGPのセキュリティを信頼するにはあまりにも大きすぎる「信頼の飛躍」が必要にならないことを望んでいる。

 

マッキントッシュ・ユーザーへの注
=========================

PGPはもともと、MS-DOSとUnixマシンのために開発された。PGPのAppleマッキントッシュ版もある。このマニュアルは、PGPのMS-DOS/Unix版のために書かれており、PGPの全機能をコマンドライン・インターフェースで使うようになっている。Macでは、PGPの全機能はプルダウン・メニューとダイアログ・ボックスで使うことになる。MacPGPの使い方についてのMac用オンライン・ヘルプがあり、また、この文書に加えて、MacPGPリリースパッケージに含まれているMacユーザー用文書もあるだろう。

たいていのよいMacソフト・アプリケーションは、Macのためのスクラッチから書かれたものであって、単に他のOSから移植したものではない。あいにく、現在のPGPのMac版は、スクラッチからMac用に作られたものではない。MS-DOS/Unix版をZbigniew FiedorwiczがMacに移植したものである。PGPのMS-DOS/Unix版はGUI(グラフィカル・ユーザー・インターフェース)のために設計されていないので、Macへの移植はたやすい仕事ではなかったし、多くのバグが残っている。完全に新しい版のPGPは開発中で、GUIになじみやすいように設計されている。新しいMac版は、この新しいPGPソースコードから作られることになるだろう。それはもっとMac風で、もっと信頼できるはずだ。MacPGPの現行版にはバグがあるが、ZbigniewがPGPをMacに移植するまえにこのPGPの完全新規版を待っていたならば、世界はMac版のPGPを手にするのはずっと遅かっただろう、ということを心にとめておくことは大事なことである。

 

PGP早見表
===================

これはPGPコマンドの早見である。


受け手の公開鍵で平文を暗号化する
pgp -e テキストファイル 相手のユーザーID

平文に自分の秘密鍵で署名する
pgp -s テキストファイル [-u 自分のユーザーID]

平文のアスキーテキストファイルにあなたの秘密鍵で署名し、電子メールで送るのに適した署名ずみ平文メッセージを作る
pgp -sta テキストファイル [-u 自分のユーザーID]

平文ファイルに秘密鍵で署名し、それから受け手の公開鍵で暗号化する
pgp -es テキストファイル 相手のユーザーID [-u 自分のユーザーID]

旧式の暗号形式で平文ファイルを暗号化する
pgp -c テキストファイル

暗号化ファイルを復号化する。あるいは署名ファイルの署名の有効性を調べる
pgp 暗号文ファイル [-o 平文ファイル]

複数の受け手のためのメッセージを暗号化する
pgp -e テキストファイル ユーザーID1 ユーザーID2 ユーザーID3

--- 鍵管理コマンド:

あなた自身の公開鍵・秘密鍵のペアを生成する
pgp -kg

あなたの公開鍵束・秘密鍵束に、公開鍵ファイル・秘密鍵ファイルの内容を追加する
pgp -ka 鍵ファイル [鍵束]

公開鍵束・秘密鍵束から鍵を抽出(コピー)する
pgp -kx ユーザーID 鍵ファイル [鍵束]
or: pgp -kxa ユーザーID 鍵ファイル [鍵束]

公開鍵束の内容を見る
pgp -kv[v] [ユーザーID] [鍵束]

電話でもその持ち主に確認できるように、公開鍵の「指紋」を見る
pgp -kvc [ユーザーID] [鍵束]

内容を見て、公開鍵束の署名保証をチェックする
pgp -kc [ユーザーID] [鍵束]

秘密鍵のユーザーIDやパスフレーズを編集する
pgp -ke [ユーザーID] [鍵束]

公開鍵のための信頼度を編集する
pgp -ke [ユーザーID] [鍵束]

公開鍵束から鍵またはユーザーIDを削除する
pgp -kr [ユーザーID] [鍵束]

公開鍵束のだれかの公開鍵に署名・保証する
pgp -ks 相手のユーザーID [-u 自分のユーザーID] [鍵束]

鍵束のユーザーIDから選択した署名を削除する
pgp -krs [ユーザーID] [鍵束]

To permanently revoke your own key, issuing a key compromise
certificate:
pgp -kd 自分のユーザーID

公開鍵束の公開鍵を無効化・再有効化する
pgp -kd ユーザーID

--- 奥義的コマンド

メッセージを復号化し、署名をそのまま残す
pgp -d 暗号文ファイル

文書から分離した署名保証を作成する
pgp -sb テキストファイル [-u 自分のユーザーID]

署名されたメッセージから署名保証を切り離す
pgp -b 暗号文ファイル

--- 他のコマンドオプションと一緒に使うことのできるコマンドオプション(ときにはおもしろい言葉になることも!)

アスキー radix-64 フォーマットの暗号文ファイルを作るには、暗号化したり、メッセージに署名したり、鍵を抽出したりするときに、-aオプションをつけるだけでいい
pgp -sea テキストファイル 相手のユーザーID
or: pgp -kxa ユーザーID 鍵ファイル [鍵束]

暗号文ファイルを作ったあと、平文ファイルを削除するには、暗号化・署名のときに -w(wipe)オプションをつけるだけでいい
pgp -sew message.txt 相手のユーザーID

アスキーテキストでできていてバイナリが含まれず、受け手の旧来のテキストラインに変えるように平文ファイルを指定するには、-t(text)オプションを他のオプションに追加する。
pgp -seat message.txt 相手のユーザーID

(Unix形式での "moree" コマンドのように)復号化された平文を画面に表示させてファイルには書き込みたくないときは、-m (more)オプションを復号化のときにつける。
pgp -m 暗号文ファイル

受け手の復号化された平文が相手の画面でだけ見ることができてディスクにセーブできないように指定するには、-mオプションを追加する。
pgp -steam message.txt 相手のユーザーID

復号化のときにもともとの平文ファイル名を復活させたいときには、-pオプションを追加する。
pgp -p 暗号文ファイル

Unix形式のフィルターモードを使い、標準入力から読んで標準出力に書き出すには、-fオプションを追加する。
pgp -feast 相手のユーザーID <入力ファイル >出力ファイル

 

法的問題
============

PGP(tm)ライセンス、配布、著作権、特許、商標、責任制限、輸出統制についての詳細な情報は、「PGPユーザーズガイド 第2巻:特殊事項」の「法的問題」の章を参照のこと。PGPはU.S.特許#4,405,829で申し立てられた公開鍵アルゴリズムを使用している。

この特許への排他的なライセンス権は、Public Key Partners(PKP)という会社が保持しており、もしライセンスなしで合衆国内でPGPを使うならば、特許権を犯していることになろう。これらの問題は第2巻マニュアルと、PGPのフリーウェア版についてくるRSAREFライセンスに詳述されている。PKPは、アリゾナ州フェニックスのViaCryptという会社などの他者に、特許物販売を認可した。ViaCryptはPGPの完全ライセンス版を販売している。ViaCryptへの問い合わせは 602-944-0773。

PGPは「ゲリラ」フリーウェアであり、あなたが広く配布しても気にしない。ただ、私にコピーを送付するように頼まないでほしい。そのかわり、あなたは自分で多くのBBSシステムや数々のインターネットFTPサイトを自分で探すことができる。しかし、あなたがPGPを配布する前に、暗号化ソフトについての合衆国輸出統制について理解しておくことは必須条件である。

 

謝辞
================

恐るべき障害および強力な力が、PGPを止めるために並べられた。献身的な人々が、これらの障害に打ち勝つことを手伝ってくれている。PGPは「アングラ(地下)ソフト」として悪名を馳せてしまっており、PGPを完全に認可されたフリーウェアとして「地上」にもって来るには、忍耐と努力が必要であった。私は特に、MITのHal Abelson, Jeff Schiller, Brian LaMacchia, Derek Atkins に、決定的な努力を感謝する。また、MIT管理人のJim BruceとDavid Lister、MIT PressのBob PriorとTerry Ehlingにも感謝する。そして、まだ仕事は終わっていないが、私のすばらしい法的防衛チームにも感謝したい。私はかつて、多くの弁護士ネタジョークを言ったものだったが、こんなに多くの私の法的防御チームの法律家というすばらしい例に出会い、そのほとんどが仕事をプロとしてこなしているのを知ってからは、そんなことはない。

PGPの開発は際だった社会的現象となり、その独特な政治的訴えは、ボランティア・プログラマーの数を総合的に増大させることになった。「石のスープ」という子供の話を思い出さないか?

Pretty Good Privacyの制作にかかわった以下の人々に感謝したい。私はPGP version 1.0の作者だが、その後の版のPGPの主要部分は、私の設計ガイダンスのもとで、数多くの貢献者による国際的な協力によって遂行された。

Branko Lankester, Hal Finney, Peter Gutmann。PGPに機能を追加し、Unix版に移植するために莫大な時間を割いてくれた。

Hugh Kennedy はVAX/VMSに移植し、Lutz FrankはAtari STに移植し、Cor BosmanとColin PlumbはCommodore Amigaに移植した。

PGPの外国語への翻訳は、Jean-loup Gaillyがフランス語、Armando Ramosがスペイン語、Felipe Rodriquez SvenssonとBranko Lankesterがオランダ語、Miguel Angel Gallardoがスペイン語、、Hugh KennedyとLutz Frankがドイツ語、David Vincenzettiがイタリア語、Harry BushとMaris Gabalinsがラトヴィア語、Zygimantas Cepaitisがリトアニア語、Peter SuchkowとAndrew Chernovがロシア語、Alexander Smishlajevがエスペラント語。Peter Gutmannはニュージーランド英語に訳すと申し出てきたが最終的にPGPはUS英語でかまわないと決めた。Jean-loup Gailly, Mark Adler, Richard B. WalesはZIP圧縮コードを公開し、PGPに添付することができるようにした。MD5ルーチンはRon Rivestによって開発されてパブリック・ドメインに置かれた。IDEA(tm)暗号はチューリヒのETHのXuejia LaiとJames L.Masseyによって開発され、Ascom-Tech AGからの許可を得てPGPに使われている。

Charlie Merrittはもともと、私に公開鍵暗号法で多精度計算をいかに正確に行なうかを教えてくれた。Jimmy Uptonは高速多重/モジューロ・アルゴリズムで貢献してくれた。Thad Smithはさらに速いmodmultアルゴリズムを実行した。Zhahai Stewartは、PGPファイルフォーマット、鍵のためのユーザーIDを複数持てるようにするなどの項目について、多くの有用なアイデアを出してくれた。Whit Diffieからは紹介者の概念を聞いた。Kelly GoenはPGP 1.0の最初の電子出版の仕事のほとんどをやってくれた。

コード化のために大いに貢献してくれたのは、Colon Plumb, Derek Atkins, Castor Fuである。コード化その他で貢献してくれた人に、Hugh Miller, Eric Hughes, Tim May, Stephan Neuhaus、その他ひじょうに多くの人が思い出せないほどいる。Zbigniew Fiedorwiczは最初のMacintosh移植をやった。PGP 2.0の公開から、さらに多くのプログラマーがパッチとバグ・フィクスを送ってくれたり、他のコンピューターへの移植調整をしてくれた。あまりにも多くの人に個人的にここで感謝しなければならない。

「石のスープ」の話のように、私がすべての初めに落としてポットの底にある石を厚いスープ層を通して見ようと目を凝らしても、それはどんどん難しくなっている。

 

作者について
================

Philip Zimmermannは、19年の経験を有するソフトウェアエンジニアコンサルタントであり、埋め込みリアルタイムシステム、暗号法、認証、データ通信を専攻する。金融情報ネットワークのための認証システム、ネットワークデータセキュリティ、鍵管理プロトコル、海込みリアルタイム・マルチタスク実行ソフト、OS、ローカルエリア・ネットワークの設計と実行も行なってきた。

NIST DSSのような暗号認証製品と公開鍵実行の一般版はZimmermannから提供されたものであり、一般的な製品開発サービスも行なっている。彼のコンサルタント会社の住所はここ。

Boulder Software Engineering
3021 Eleventh Street
Boulder, Colorado 80304 USA
Phone: 303-541-0140 (10:00am - 7:00pm Mountain Time)
Fax: arrange by phone
Internet: prz@acm.org

 

HOME > Theory > Crypt

2000年盗聴法対抗
ダウンロードPGP6.5.1iPGP disk
日本語化PGP鍵作成
PGPdiskマウント秘密鍵を隠す
落とし穴
完全抹消法

PGP ユーザーズ・マニュアル 第1巻
The comp.security.pgp FAQ 日本語版
パスフレーズFAQ 日本語版
バックドア NSAPhrack Magazineソースコード
暗号関係リンク集

叛乱オンライン