GnuPG の使い方(WindowsXP での)

GNU Privacy Guard のダウンロードとインストール

まず GNU Privacy Guardをダウンロードする必要があります。ダウンロードはwww.gnupg.org よりダウンロードしてください。コンパイルする必要があるものとバイナリでダウンロードできるものとがあります。これは使用 しているオペレーティングシステムによって違ってきます。使用しているオペレーティングシステムにあったも のをダウンロードしてください。以下ではオペレーティングシステム WindowsXP での使い方を述べていますが, Linux などでも同じコマンドが使えますので他の OS を使っている人にも参考になると思います。
WindowsXp などの Microsoft Windows を使っている人は www.gnupg.org から辿れるところにある gnupg-w32cli-1.4.7.exe をダウンロードすればいいです(バージョンが更新されていると gnupg-w32cli-1.4.7.exe の部分が gnupg-w32cli-1.4.8.exe などに変わっています)。ダウンロードした gnupg-w32cli-1.4.7.exe を(ダブルクリックして) 実行すればインストールができます。

パスフレーズのみで暗号化されたファイルの復号化

これからはコマンドプロンプトを使います。コマンドプロンプトのショートカットをデスクトップに置き, 作業フォルダの指定もしておくといいでしょう(この意味が分からない人はコマンドプロンプトの使い方 をみて下さい)。以下では作業フォルダをマイドキュメントの下の gpg としています。
コマンドプロンプトで

gpg --version

と入力し(改行し: 今後は省略する)てみてバージョン情報が出力されればパスが通っている証拠です。この時に
「'gpg' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
などのメッセージが出たらパスが通っていないので gpg.exe があるフォルダにパスが通るようにして ください。

まず, パスフレーズのみで暗号化されたファイルを復号化してみましょう。下記の点線の間の一見無意味な 文字列を(多少余分にコピーしても大丈夫です)コピーして test.txt.asc という名前でマイドキュメント の下の gpg フォルダに保存して下さい。

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.5 (MingW32)

jA0EAwMCCCN55gljrTNgycEij4UJkjAwWC3DtPEwawgGD5QApLtly/fhAZKqq3MI
eK6pRzWWVVKiV6AYGr/8f5wOr4H0mqR92llq7GRPoizxNcTjaNKOH5dWSx2YAR5I
pUeZKcZ0q1jkOJJxIl73mRDqR8/TaLCkWvZvzd/i5BmOkCZlluUtf71ehJIXmXtY
Db8SUSHPuC1hGGTfz79l0AIEwQjJgDjgNzwuyBbAvYuqZShomKcXpvBYBj87oUol
I/FiY6Ko2V1kVzgRpcphcQqzsATZRzcZinvzHpyYvp1nFhJ5c9fQfKKxPC2FSQC0
z5PEx4HX1Kd4epofihGXgs6s0pjs3XHjYlf5UWowIZuz1g+rhwOvhr6uaf+0jTIl
FSWjv3pAS5w7d2EHiLJXhrYU2Tun8yUlAZqv33/WOWdj1kG6nt3oMXMqKBF4Sh1V
qGILPmeUpOM1QltNNrgyAXr6m3tOiPI2fjRQdNJGkp35tjOkZ6nEH5fKNkvpmj9e
4yvPrIpcWYGlnIRJyYnwRaO2717t0LsIQcdnglcWnWaFSvZozX1IcD79ONpB3AW2
P6hW5YNnnvL4qB+8Klhp87kMWBlSIQwBKVJRDKX6dTGt2WqAwcyfIkYg2jA++CQP
oYexA6zPb+CF2kuRnVvns90i+lM=
=x34C
-----END PGP MESSAGE-----
コマンドプロンプトで

gpg test.txt.asc

と打ち込みて実行してください。パスフレーズの入力を求められますので test と入力してください。 gpg フォルダに test.txt というファイルができています。それをメモ帳でみてください。意味のある文字 列になっています。

パスフレーズのみで暗号化

次に, 上の一見意味のない文字列の作り方を述べます。gpg フォルダにある test.txt.asc を消去してください。 コマンドプロンプトで

gpg -ca test.txt

と打ち込み実行してください。パスフレーズの入力を求められますので好きな文字列を入力してくだ さい。その文字列を復号化のときに使うことになります。gpg フォルダに test.txt.asc というファイルができて います。それをメモ帳でみてください。上のような(全く同じではありません)一見意味のない文字列が見えるはず です。一般に,

gpg -ca filename

でどのようなファイルも暗号化できます。ここではテキストファイルの暗号化をしましたが, テキストファイルでな くても暗号化できます。

パスフレーズのみでの暗号化は gpg の本来の使い方ではありません。gpg は公開鍵暗号系のソフトウェアですので, 公 開鍵を使って暗号化するのが本来の使い方です。まず, 自分だけが読める暗号文を作成してもらうためには, 作成者に 自分の公開鍵を渡す必要があります。そのために公開鍵を作成しましょう。そのとき同時にその公開鍵で暗号化された 文書を復号化するための秘密鍵が作成されます。秘密鍵は決して他人に渡してはいけません。

秘密鍵の取り扱い

暗号化された文書を復号するのに使う秘密鍵の取り扱いは十分に注意する必要があります。秘密鍵が盗まれてしまって もパスフレーズが分からなければ復号化はできないのですが, その安全性は非常に低下します。そのため, 非常に機密 度が高い情報の復号化に使う秘密鍵はネットワークを介して盗まれないようにしなければなりません。 そのため次項の「鍵の生成」はネットワークから切り離した状態で行ってください。次項の「鍵の生成」を行うと普通 は
c:\Documents and Settings\usename\Application Data\gnupg
というホルダーに鍵束が作られます。secring.gpg というのが秘密鍵束なので, それを外部メディアに保存し, コンピ ュータから削除してからネットワークにつないでください。暗号化された文書を復号化するときにはネットワークから 切り離し, 外部メディアにある secring.gpg をもとあった場所にコピーして復号化してください。

なお, それほど機密性の高くない文書の復号化に使う機密鍵についてはこれほどの神経を使う必要はありません。

鍵の生成

コマンドプロンプトで

gpg --gen-key

と入力し, 鍵の生成を開始します。まず入力を求められるのが鍵の種類です。「(1) DSAとElgamal既定)」を選択するので 何も入力しないで改行してください。次に鍵の長さを設定を求められます。2048 でいいの何も入力しないで改行してくださ い。次に鍵の有効期限の指定が求められます。無期限でいいので何も入力しないで改行してください。
Key does not expire at all
これで正しいですか? (y/N)
と尋ねられますので, y と入力してください。 次に本名、電子メール、コメントなどを尋ねられますので入力してください。これにより鍵に名前のついたヘッダを追加 することができます。本名は 5 文字以上の半角英数字を入力する必要がありますが, 電子メール、コメントは何も書かな くても構いません。
次にパスフレーズを尋ねてきます。パスフレーズはスペースを含ませることができ長さの制限もないものと思って問題あ りません。パスフレーズは大事なもので, これを忘れたら復号化はできません。
ここで乱数の生成が開始されます。乱数生成中はしばらくかかります。この時に他の作業をしていても問題ありません (作業をすることによりキーボードの入力やマウスの動きなども乱数発生に使用されます)。 鍵の生成が終了すると
gpg: 鍵A49122E0を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   2  署名:   7  信用: 0-, 0q, 0n, 0m, 0f, 2u
gpg: 深さ: 1  有効性:   7  署名:   0  信用: 0-, 0q, 0n, 0m, 7f, 0u
gpg: 次回の信用データベース検査は、2008-07-07です
pub   1024D/A49122E0 2007-02-11
                 指紋 = 105F 7790 6D00 3AFE 3118  85BA B0FC B285 A491 22E0
uid                  komori
sub   2048g/53A4AE09 2007-02-11
のようなメッセージが出て終了します。

公開鍵の受け渡し

鍵を生成したら, それを使って暗号化する人に渡さなければなりません。 まず次コマンドを実行します。

gpg -o pubkey.asc -a --export userid

userid は鍵を作るときに入力した本名などの文字列(の一部)です。フォルダ gpg に pubkey.asc ができています。 pubkey.asc をフロピーディスクなどに入れて手渡すのが一番安全に渡す方法です。pubkey.asc の中身を電子メール に貼り付けて送ることも可能ですが, その場合は悪意をもった者があなたに成りすまして送ったものかどうかを, 受け取った人が判断できない可能性があります。

他の人の公開鍵を入手する

他の人に暗号化したメッセージを送るのには相手の公開鍵を入手する必要があります。フロピーディスクに入った pubkey.asc がある人の公開鍵とします。それを gpg フォルダにコピーし次コマンドを実行し, 鍵束に入手した公 開鍵を登録します。

gpg --import pubkey.asc

これでその人だけが読める暗号文を作れるようになります。例えば, 私の公開鍵が ここ にありますので, それを gpg フォルダに KOMORI.asc という名前で保存し次のコマンドを実行してください。

gpg --import KOMORI.asc

これで私だけが読める暗号文を作れるようになります。

暗号化と署名(および復号化と検証)

次のコマンドを実行してみて下さい。

gpg -R komori -eas test.txt

まだ鍵署名もしていないし信用データーベースも更新していないので, 警告メッセージが出るかもしれませんが 無視してください。上の例では署名もするように指定しているのでパスフレーズの入力を求められます。鍵を作るとき に指定したパスフレーズを入力してください(署名が必要ない場合は '-eas' の部分を '-ea' に変えてください)。 test.txt.asc というファイルができます。警告メッセージが出ないよう にしたければここ を参考にして鍵署名と信用データーベースの更新をしてください。
次のコマンドを実行してみて下さい。

gpg test.txt.asc

test.txt.asc を復号化しようとしますが, あなたは私の秘密鍵を持っていないので復号化はできません。 自分にも復号化できるように暗号化するには次のコマンドを実行します。

gpg -R komori -R yourid -eas test.txt

yourid には先ほど作った鍵の本名などの文字列(の一部)を入れます。また, test.txt.asc というファイ ルができますので次のコマンドを実行します。

gpg test.txt.asc

今度は復号化(署名の検証も同時に行われる)ができるはずです。一般に

gpg -R user1 -R user2 -R user3 -R user4 -eas filename

で user1, user2, usser3, user4 の 4 人が復号化できる署名つき暗号ファイル filename.asc が作成されます。 この人数が多くなるとコマンドプロンプトに書くのが大変になります。そのときは次のようにします。
-------------------------------------------------------------
armor
hidden-recipient user1
hidden-recipient user2
hidden-recipient user3
hidden-recipient user4
hidden-recipient user5
hidden-recipient user6
hidden-recipient user7
hidden-recipient user8
hidden-recipient user9
hidden-recipient user10
hidden-recipient user11
hidden-recipient user12
hidden-recipient user13
hidden-recipient user14
hidden-recipient user15
hidden-recipient user16
hidden-recipient user17
encrypt
sign
---------------------------------------------------------
上の点線の間(点線を含んではいけません)をコピーして gpgoptions というファイル名で gpg フォルダ に保存してください。そして次のコマンドを実行すると 17 人が復号化できる暗号文 test.txt.asc が作成されます。 あなたはまだ 17 人もの公開鍵を鍵束に登録していないでしょうから, 下のコマンドは実行しないで下さい。

gpg --options gpgoptions test.txt

ためしに,
-------------------------------------------------------------
armor
hidden-recipient komori
hidden-recipient yourid
encrypt
sign
---------------------------------------------------------
を gpgoptions というファイル名で gpg フォルダに保存して上のコマンドを実行してみてください。 前に実行した

gpg -R komori -R yourid -eas test.txt

というコマンドと全く同じ働きをします。

Clear 署名

内容は秘密でないが, 内容については確かに自分が書いたものであることを示すのには, 暗号化はせずにClear 署名を 用います。次のコマンドで Clear 署名ができます。

gpg --clearsign test.txt

これを実行するとパスフレーズの入力を求められ, 正しく入力すると test.txt.asc というファイルができます。その 中身は次のようなものです。
============================================================================================================
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

GNU Privacy Guard のダウンロードとインストール

まず GNU Privacy Guardをダウンロードする必要があります。ダウンロードは http://www.gnupg.org/ よりダウン
ロードしてください。コンパイルする必要があるものとバイナリでダウンロードできるものもあります。これは使用
しているのオペレーティングシステムによって違ってきます。使用しているのオペレーティングシステムにあったも
のをダウンロードしてください。
WindowsXp などの Microsoft Windows を使っている人は http://www.gnupg.org/ から辿れるところにある
ftp://ftp.gnupg.org/gcrypt/binary/gnupg-w32cli-1.4.6.exe
をダウンロードすればいいです(バージョンが更新されていると gnupg-w32cli-1.4.6.exe の部分が
gnupg-w32cli-1.4.8.exe などに変わっています)。ダウンロードした gnupg-w32cli-1.4.6.exe を(ダブルクリックして)
実行すればインストールができます。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)

iD8DBQFF0Ad4XyRp9hwc+jsRAmpUAKDPwwHj89DJdRd68RoPW6eyhKc8PQCeI1DE
hFxOlgxfi+zGa9mVAY0NjAs=
=Sntr
-----END PGP SIGNATURE-----
==============================================================================================================
内容は全く暗号化されていませんが下のほうに署名がついています。 次のコマンドでこの署名を検証することができます。

gpg test.txt.asc


リンク

ここでは CUI(Character User Interface) による使い方を述べましたが, GnuPG には GUI(Graphical User Interface) もあります。それについては下記などを見て下さい。
http://hp.vector.co.jp/authors/VA019487/ GNU Privacy Guard 講座(http://hp.vector.co.jp/authors/VA019487/gpg.pdf は gpg のマニュアルです)
http://oku.edu.mie-u.ac.jp/~okumura/linux/?GnuPG GnuPG

2007 年 2 月 12 日に作成
2007 年 5 月 27 日に更新
2007 年 11 月 26 日に更新

inserted by FC2 system