ページの最終校正年月日 :
GnuPG -- 暗号ソフト
-- 目次 --
  1. 前書き
  2. WinPT のインストール方法について
  3. WinPT のマニュアル インストール
  4. WinPT の使用方法
  5. 対称暗号システムと公開鍵暗号システム
1. 前書き

おおざっぱに言えば GnuPG (GNU Privacy Gard) は PGP (Pretty Good Privacy) に基づいた暗号ソフトです。 GnuPG を語る前に PGP のことを少し話をする必要があります。

PGP は Phil Zimmermann によって作成された暗号ソフトです。 PGP が作成された当時、米国連邦政府は 民生用のすべての暗号システムに連邦政府が必要とあれば、解読を可能とする 裏口 (back door あるいは clipper chip) を設けることを法律化しようと していました。このような米国連邦政府の 方針に反対をした人がいたことも手伝って、PGP は非常に広く普及することになり、 法律は制定されることはありませんでした。

Simson Garfinkel、 PGP 暗号メールと電子署名、 オライリー・ジャパン

に 1990 年代後半に至るまでの歴史が書かれていますが、まとめると次のようになります。

  1. 1991 年 PGP 1.0 の公表 (RSA 暗号の使用)
    これがインターネットに流れる (米国連邦政府の「武器などの輸出規制法」に抵触)
  2. この後、RSA 暗号の特許を所有する RSA 社との間で特許権侵害の 問題が発生 (RSA 社自身が RSA 暗号を普及させることを考え、 RSA 暗号の非商用使用を奨励する立場をとることになったため 非常に複雑な経緯をたどる)。
  3. RSA 暗号の開発元である MIT (マサチュセッツ工科大学) は PGP の合法化 (非商用使用) に 協力し、1994 年 PGP 2.6 を公表。これで RSA 社との特許権侵害の問題は解消。 但し、米国連邦政府の「武器などの輸出規制法」の問題があるため、輸出は非合法であった。 にもかかわらずインターネットで全世界に流れ続けた。
  4. 「武器などの輸出規制法」に関して、Phil Zimmermann は連邦政府の取調べを受けることになりますが、 これは問題となることはありませんでした。 インターネットに流した (あるいは流し続けた) のは Zimmermann であるはずがなかったためです。

以上、PGP が作成されてからしばらくは色々多くの問題をはらんでいましたが、 今となってはもうどうでもよくなっているといってよいと思います。付け加えると

  1. RSA 暗号の特許は米国国内のみでしか有効ではありません。 RSA 暗号の作者たちは論文として発表してから、特許申請をしました。 一般にすでに発表された結果を特許申請することは、米国以外の国では不可能で、 米国でも発表されてから一年以内と制限が付いています。 そのため PGP による RSA の特許権侵害などの問題は米国の国内問題です。 PGP がヨーロッパに流出してからはヨーロッパで独自の開発が続けられましたが、 米国以外では特許権侵害の問題に抵触しませんでした。 このため PGP は MIT がサポートする「アメリカ、カナダ版」と「国際版」(「ヨーロッパ版」) の 2 種類が流通することとなりかなりややこしいことになりました。
  2. 2000 年以降は米国の規制緩和から PGP は「武器」には分類されなくなっており、 「武器などの輸出規正法」はもう遠い昔の話になってしまいました。

1996 年に PGP inc. が設立されますが、これは 1997 年に Network Associates Inc (NAI) に買収されます。 その後 NAI は PGP を商品として販売する一方で、 (非商用利用の) PGP を無償配布していました。その結果商品の方が売れなかったようで、 2002 年になり PGP 部門を売却することになります。しかしながら買い手がありませんでした。 これで PGP の命運が尽きたかのようになりますが、PGP の開発者たちが 資金を調達し、PGP Corporation を結成し、NAI から PGP 部門を買収しなおして 現在に至っています。

PGP Corporation

の下のほうのページにその歴史が記されています :

PGP Corporation - PGP History

なお、(非商用利用の) PGP の無償配布は 2002 年の PGP 8.0 が最後になりました。

The International PGP Home Page

PGP は先にも述べたように「アメリカ、カナダ版」と「国際版」の 2 種類が流通していました。 更に、PGP は単独で使用することもありますが、メールソフトに組み込んで使用されることも あります。こうなると互換性で問題が生じる可能性がでてきます。そのため PGP に基づいて OpenPGP という標準が作成されました :

The OpenPGP Alliance Home Page

OpenPGP 対応のソフトを作成することはまったく自由で、その一つとして GnuPG (= GNU Privacy Guard) が作成されています。GnuPG 1.0.0 のリリースは 1999 年の ことでした。

The GNU Privacy Guard -- GnuPG.org

PGP も GnuPG も共に OpenPGP に対応しているため、互換性があります。 PGP の無償配布は 8.0 で終了しましたが、GnuPGP はフリーソフトとして ずっと継続していくことでしょう。

GnuPG はコマンドラインからの命令しか受け付けないプログラムですが、 WinPT トレーと呼ばれる (フリーの) ユーザーインターフェースが 作成されており、 GnuPG + WinPT の使用感は PGP に遜色がないものとなっています。

注意
WinPT とはもともと Windows Privacy Tray の意味でしたが、Windows Privacy Tools の 意味で使用されることになり、Windows Privacy Tray は WinPT Tray と名称が変更され、 WinPT (= Windows Privacy Tools) の一部になっています。

以下では GnuPG + WinPT トレー のインストールと その使用方法の紹介をします。

2. WinPT Tray のインストール方法について

WinPT Tray のインストール方法は 2 つあります。

  1. 自動インストール : パッケージ (WinPT full package) をダウンロード (実行ファイルで、GnuPG を含む。)
  2. マニュアル インストール : WinPT Tray をダウンロード (zip ファイルで 別に GnuPG をインストールする必要がある。)

自動インストールではHKEY_CURRENT_MACHINE に書き込みをします。 (従って共同利用の計算機ではアドミニストレータしかインストールできません。) しかも 2003 年のものが最新で少し古いようです。

マニュアル インストールの場合は書き込むレジストリーは HKEY_CURRENT_USER です。従って、共同利用の計算機でも個人用にインストールすることができます。 更に、WinPT Tray のバージョンアップをするときにはマニュアル インストールをせざるを得ないので ここでは後者の方法のみに関して説明をします。

WinPT Tray は GnuPG のユーザ インターフェースです。 そのため GnuPG のバージョンアップがあれば、一般的には WinPT のバージョンアップが必要となります。

GnuPG の公式なダウンロードサイトは

Download -- GnuPG.org

ですが、最新版しかダウンロードできないようです。GnuPG のミラーサイト

http://www.ring.gr.jp/pub/net/gnupg/binary/

を見ると、gnupg-w32cli-***.zip (*** はバージョン番号) が列挙されており、 バージョン番号 1.3.* のものがなく (多分不具合があったため消去された)、バージョン番号 1.2.* から一気にバージョン番号 1.4.* になっています。バージョン番号 1.2.* の最後は 1.2.5 で 2004 年の 7 月になっており バージョン番号 1.4.0a は 2004 年の 12 月になっています。これだけで、ここでかなり大きな 変化がおきたことがわかります。

一方、WinPT Tray の方の過去ファイルのリストは以下で見ることができます。

Project: WinPT - Windows Privacy Tools: File List

WinPT Tray の (2005 年 6 月現在の) 最新バージョンは 0.9.12 で日付が 2004 年 9 月になっています。 色々試したところ、WinPT Tray 0.9.12 は GnuPG の 1.2.* としか互換性がないようです。 以下、この組み合わせでインストールすることにします。

注意

GnuPG の最新のバージョン 1.4.1 は自己解凍ソフトになっており (exe ファイル)、 しかも HKEY_CURRENT_MACHINE に書き込みをします。 GnuPG のインストールフォルダ名の書き込みをするだけですが、共同利用計算機には アドミニストレータしかインストールできないのではないかと思います。

3. WinPT のマニュアル インストール
GnuPG のインストール

最初に GnuPG のミラーサイト

http://www.ring.gr.jp/pub/net/gnupg/binary/

から、次をダウンロードします。

gnupg-w32cli-1.2.5.zip

適当なフォルダーを作成して、その中で zip ファイルを展開します。 拡張子が mo のファイルが一杯できますがこれは表示を 英語以外の言語に変えるためのものです。しかし今 GnuPG を 直接使用するわけではありませんからこれは無視します。 必要なのは拡張子が exe の実行ファイルです。 (幾つかあります。) インストールの方法は README.W32 に書いてありますが、若干説明をすると

  1. 適当なフォルダー (例えば z:\GnuPZ) を作成して、そこに実行ファイル (gpg.exe など) をコピーする。
  2. 次のようにレジストリを設定する。
    キー HKEY_CURRENT_USER\Software\GNU\GnuPG\HomeDir
    gpg.exe の存在場所, 例えば z:/GnuPG (フォルダーの区切りは /)
注意
  1. レジストリーの設定方法はここを参考にしてください。
  2. 本当は 2 つフォルダーを作成するほうがよいようです。 一つは実行ファイルを入れておくフォルダ、もう一つは鍵を入れておくフォルダです。 レジストリで設定するフォルダはこの後者のフォルダ名です。 しかしこのようにすると WinTP Tray は GnuPG の存在場所がわからなくなり、 インストール時に存在場所を尋ねてきます。
WinPT Tray のインストール
Project: WinPT - Windows Privacy Tools: File List

から次をダウンロードします。

WinPT-0.9.12-exe.zip

色々なミラーサイト においてあるのがわかりますから、どれか一つをクリックしてダウンロードします。

解凍して抽出されるファイルをすべて GnuPG と同じフォルダーにコピーします。 あとは WinPT.exe をダブルクリックするまでです。まだ鍵がありませんから、少し変なことになります。 最初に

が表示されますが「はい」を選びます。 次に

が表示されます。それぞれ

  1. WinPT で鍵を作成する。
  2. 別の場所から、鍵をインポートする。
  3. 鍵のあるフォルダーの指定をする。

の意味ですが、一番上が選択されていますから そのまま「Ok」を押します。 すると次のような「Key Generation Wizard」が登場します。

ここでは

Real name あなたの本当の名前
Email address e メールアドレス

を書き込む必要があります。書き終えたら、これ以外は手をつけずに、「OK」 を選びます。

注意
  1. 「Prefer RSA keys」をクリックすれば、公開鍵を RSA 方式にすることになります。
  2. 「Expert」をクリックすれば、より詳細な設定をすることになりますが、ややこしくなるだけですから、 深入りしないほうがよいです。

すると別窓が開き、次のように「パスフレーズ」が要求されます。 「パスフレーズ」は「パスワード」の長いものです。

注意
簡単に覚えられる「長いパスワード」はなかなか思いつきそうもないですが、 歌、詩、映画で出てきた気の利いたせりふなどを (そのまま使用するとばれる可能性があるので) 自分なりにアレンジしてパスフレーズにする手もあります。

「パスフレーズ」を打ち込んで「OK」を押すと、次のように再度「パスフレーズ」を 打ち込むように要求されます。確認のためです。

再度「パスフレーズ」を打ち込んで「OK」をクリックすると、次のように鍵生成の進行状況を表示する場面になります。 何もせずに眺めていましょう。

しばらくして「鍵生成が完了しました」という内容のメッセージが登場します。

「OK」 を選ぶと Windows のタスクバーの右端に次のようなアイコンが登場します。

Windows を一旦ログオフして、ログオンすると、上のアイコンは消えてしまいますが、 WinPT.exe を実行すると、再びアイコンが登場します。 実際に WinPT.exe を使用するには、上のアイコンの上で右クリックします。

4. WinPT の使用方法

アイコン

の上で右クリックすると次のようなメニューが登場します。

テキストの暗号化/解読

暗号化したいテキストをクリップボード (clipboard) にコピーします。

次に WinPT のメニューから Clipboard を選択すると、次のようなメニューが 登場します。

次の意味です。

Symmetric 対称暗号 (symmetric cypher) による暗号化
暗号化した人にしか解読できません。
(パスフレーズが必要)
Encrypt 公開暗号による暗号化
受信者の公開鍵を使って暗号化
受信者にしか解読できません。
Sign & encrypt 公開暗号による暗号化
受信者の公開鍵を使って暗号化し、同時に送信者の署名を添付
受信者が署名確認をするためには送信者の公開鍵が必要
パスフレーズが必要
Sign 送信者の署名を添付
受信者が署名確認をするには送信者の公開鍵が必要。
パスフレーズが必要。
Decrypt/Verify 解読 および 署名の確認
署名の確認をするには送信者の公開鍵が必要。
そこで Encrypt を選ぶとクリップボードの内容が公開鍵で暗号化されます。 そのため Encrypt を選んだ直後に公開鍵の選択画面になります。

WinPT をインストールした直後なので私の公開鍵しかありません。ともかくも、 試しに自分の公開鍵で暗号化しましょう。鍵をマウスで選択して「OK」を選びます。 文章が長ければ暗号化に若干時間がかかりますが、ともかくも最終的に「finished」と 表示されてそのまま終了します。

暗号文を手に入れるには、テキストエディターを開いて、貼り付けるだけです。

解読や署名なども同じ要領で簡単に実行できます。

ファイルの暗号化/解読

WinPT のメニューから「File Manager」を選択すると、 次のようなファイル マネージャが登場します。

メニューの「File」を選択すると次のメニューが登場します。

この中の「Open」は単にファイルのリストを窓に表示するためのものです。 (どのようなファイルでもかまいません。)

暗号化をするためにはリストの中からファイル名をマウスで指定して、 「Encrypt」を選ぶだけです。こうすると、下のファイルと同じ場所に 暗号化ファイルが作成されます。「Encrypt」は公開鍵による暗号化ですから、 受信者の公開鍵を指定する必要があります。

5. 対称暗号システムと公開鍵暗号システム

対称暗号システム (あるいは秘密暗号システム) とは、普通の暗号のことで、 玄関の鍵のようなものです。 閉じる場合にも開ける場合にも同じ鍵を使います。対称暗号システムを使って、 通信を行うには鍵をあらかじめ送付しておく必要があります。この点が対称暗号システム でもっとも困難な部分です。

これに反して、公開鍵暗号システムでは、閉じる鍵 (public key, 公開鍵)開ける鍵 (private key、秘密鍵) が違います。 南京錠のことを考えると理解しやすいと思います。

public key (公開鍵) private key (秘密鍵)

南京錠が public key でこのコピーを多くの人に渡します。 南京錠は鍵がなくても閉じることができます。A さんの public key (南京錠) で 封印をして A さんに送付します。 A さんは南京錠の鍵 (private key) を持っていますから 封印をはがすことができます。

現実世界の南京錠は、簡単にこじ開けることができます (?) が、 暗号理論における南京錠はどうあっても南京錠の本来の鍵でないとあけることが できません。また現実世界の南京錠はもしも手に入れることができれば、分解して、 合鍵を作ることができるかもしれません。しかし暗号理論における南京錠 (公開鍵) では このようなことが不可能です。従って、いくらでも自由に配布することができます。

公開鍵による暗号化は対称暗号による暗号化より、ずって多くの時間が必要となります。 そのため、公開鍵を使用して、対称暗号の鍵を暗号化し、対称暗号の鍵を 使用して文章を暗号化する方法が一般的です。この場合、対称暗号の鍵はその都度作り直され、 セッションキーと呼ばれます。PGP も GnuPG も共にこの方法で暗号化しています。