GnuPG(GNU Privacy Guard)はフリーの暗号化ソフトです。 公式サイトは次のところです。
以下は古いページをとりあえずWiki化したものです。 これを下敷きとして,どんどん書き直してください。
次のサイトが参考になります。
ここではフリーソフトの宝庫 Ring Server からダウンロードしましょう。 /pub/net/gnupg/binary/ をクリックして出てくる一覧の中から gnupg-w32cli-番号.zip というファイル名の番号が一番大きいもの(たとえば gnupg-w32cli-1.2.4.zip)をダウンロードし,展開します。
出てきたものの中から gpg.exe,gpgv.exe,gpgkeys_ldap.exe をパスの通ったディレクトリに移します。 残りはマニュアル類などですが,消してもかまいません。
仕上げに,C:ドライブ直下に gnupg という名前のフォルダを作っておきます。 ここには公開鍵暗号用のデータ(pubring.gpg,secring.gpg など)が入ります。 これでインストールは終了です。
C:ドライブがないマシンを使っている場合は,さきほど消してもいいといったマニュアルをやっぱり読みましょう。
Meadow から gnupg を使う方法は こちら に書きました。
すでに入っているはずです。 ソースから作りたいなら次のようにします。
./configure --disable-nls make make install
上の例では各国語対応 Native Language Support を切っています。 こうしないと Mew から呼び出したときにうまくいかなかったことがあります(現在の状況はわかりません)。 また,suid root しておかないと,WARNING: using insecure memory!(「警告: やばいメモリーを使用しています!」)というメッセージが出ます。
次のサイトが参考になります。
以下ではコマンド版の使い方を解説します。
まずは適当なファイルを暗号化してみましょう。
コマンドプロンプト(MS-DOS プロンプト,Linux や Mac OS X のシェル)で,暗号化したいファイルのあるディレクトリに移動し,
gpg -c ファイル名
と打ち込みます。すると,
Enter passphrase:
と聞かれますので,パスフレーズ(パスワード)を適当に入力します。次に,
Repeat passphrase:
と聞かれますので,もう一度同じパスフレーズを入力します。 これでおしまいです。 元のファイル foo.txt はそのままですが,同じディレクトリに foo.txt.gpg(Linux など)または foo.gpg(Windows)というファイルができるはずです。
そのファイルを復号(暗号を元に戻すこと)するには,
gpg ファイル名
と打ち込みます。
Enter passphrase:
と聞かれますので,暗号化したときのパスフレーズを入れます。 拡張子 gpg を外した名前のファイルに元の内容が入ります。 Windows の場合は,元のファイルの拡張子が失われてしまいますので,手で補う必要があります。 あるいは --no-mangle-dos-filenames という長いオプションを付けて起動するという手もあります。
次のように打ち込んでみましょう。
gpg --gen-key
すると,次のようにいろいろ聞いてきます。 下で 赤 で書いた部分は入力例です。[Enter] は Enter キーを押すことを意味します。 Enter passphrase: と Repeat passphrase: とは同じことを入れます。 これ(パスフレーズ)はパスワードに相当するものですので, 画面には表示(エコーバック)されませんが,慎重に入力してください。
gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. gpg: keyring `c:/gnupg?secring.gpg' created gpg: keyring `c:/gnupg?pubring.gpg' created Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? [Enter] DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024) [Enter] Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) [Enter] Key does not expire at all Is this correct (y/n)? y[Enter] You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Haruhiko Okumura[Enter] Email address: okumura@example.jp[Enter] Comment: [Enter] You selected this USER-ID: "Haruhiko Okumura <okumura@example.jp>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O[Enter] You need a Passphrase to protect your secret key. Enter passphrase: hogehoge herohero Repeat passphrase: hogehoge herohero We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.
ここで画面にランダムな文字が表示されますので, 思いっきりキーボードをランダムに叩いたりマウスを動かしたりしてください。
public and secret key created and signed.
と言ってくればうまくいきました。
できたキーの一覧を見てみましょう。
gpg --list-keys
次のように画面に出ます。
/home/okumura/.gnupg/pubring.gpg -------------------------------- pub 1024D/1189A440 2001-08-03 Haruhiko Okumura sub 1024g/7D124801 2001-08-03
ここまでのステップでしくじったなら,C:?gnupg 以下を消せばやりなおせます。
では,自分の公開鍵を公開してみましょう。
gpg -a --export
複数のキーを登録しているなら,次のように,名前の一部を与えます。
gpg -a --export okumura
すると,たとえば次のように画面(標準出力)に出ます。
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.4 (GNU/Linux) mQGiBDsjE50RBACtT8CDS6Wts9MFSG13AEbp3Sz45Tf1Jc6Rjuoez8kn7tIHIbE6 DJ94IM0Z5091TjxugxxYbqNJbAnkRe967/n3gvDARR+93odZuEZCZEWzArEz5zPS /p6Wor9zxMOPyqJhdX7ZFFHyRBJCUzjenw+GOGnis2RRPQHwx22f6cSO4wCgyLtq +sreGNUocE+a+nWZ08aWg4kEAIi5NQOkVqNR2QgGWzmHZqVWnPy+uzxHUHPoWTUj SCxu5GMJRT0p1urPonu4EQaLa4BHfU0WAUmZRl+MZRG23hWWXAyxi0fc0lmXlgY9 fht4f9/GaTgkmzbEUvty+BJBuvjKXdO2DBkgQOwJ/mUKj0pZ5mtN1rFFHskYN6/1 gE/wA/9OSAhqbpJcgdWLWEZNW8eG55dxUs/GTbCVVTPYCuflx3uIxBIPuJIJzYDq kE2835IwLZ583FItQBMBs3hY6omwC7Dc4E7rnWqqOCIYDxnTc9EQPaBb6YQfDTJc 6XXq/NgCfgcNB+9siehWrC4AvoqZqjbhVgHlLWfVonvg+nx81bQsSGFydWhpa28g T2t1bXVyYSA8b2t1bXVyYUBtYXRzdXNha2EtdS5hYy5qcD6IVwQTEQIAFwUCOyMT nQULBwoDBAMVAwIDFgIBAheAAAoJELlEsAXhuq5GfWoAoLPX9ZIKn+cgdLevrmAl 9i7TKddDAKCg20a5v5mGi08fJul8IAUmS7reaLQiSGFydWhpa28gT2t1bXVyYSA8 b2t1bXVyYUBhY20ub3JnPoheBBMRAgAeBQJAMB7cAhsDBgsJCAcDAgMVAgMDFgIB Ah4BAheAAAoJELlEsAXhuq5GD1AAn1XqOJTZKX/nbjuJoqsqCPh/P9D9AJ4o96gB 87qRBCR/tAjL7ERrBUjzYLkBDQQ7IxOjEAQA1u/af+M5AKeGRjHIOAa9CnPY4TvD 0Hvr92kOnVCgbHHiYeXH/NmFDUj1olxmgqOQdyNGaDSysZoyy5soiyLsEcw2rh4C IWiZ1bVYAux6ah45hZnnkqQNBxuXNhziF4Axt5VrMyLRA/oqIgQxXOcZKcY0k6sU vDtuixwHWgPllB8AAwUEAKuZp5IzySrTIQI21X8Zenu4wlJ0v2Du/5N+NGSCl7mv mgIZp6kU3FsfnCd96sxymoEEHJDqL+qXwe7A+pASDuEd/KoZ0E7pvSR9jV1UUG3b 0+ML4Y2zvQvqrHrlI6p5EBj0TOE+y3saoqmv+P4dfVaCU+Lb7QpyhN2jIcaBA//F iEYEGBECAAYFAjsjE6MACgkQuUSwBeG6rkYsJgCZAZU9V/TfOCoSMwKcVU6RWnkH P5AAnj4k8jRCwriHE7H59Ap7D9tmObxI =RxYy -----END PGP PUBLIC KEY BLOCK-----
上の内容は誰に公開してもかまいません。 PGP Public Keys Server に登録すれば誰にでも見えるようになります。
まず,メッセージを送りたい友人(たとえば奥村氏)の公開鍵をもらってきて,自分の「鍵の輪」(keyring)に登録しましょう。
奥村氏の公開鍵(上のようなテキスト形式のもの)が okumura.asc というファイルに入っているとしましょう。
gpg --import okumura.asc
これで奥村氏の公開鍵が登録できました。 gpg --list-keys で確認してください。
ファイル himitsu.txt を奥村氏だけに読めるように暗号化してみましょう。
gpg -ea himitsu.txt
すると,次のように聞いてきます。
You did not specify a user ID. (you may use "-r") Enter the user ID. End with an empty line:
暗号を送る相手先が奥村氏であることを指定するために okumura のように入れます。
しかし,gpg はさらに確認を求めてきます。
... There is no indication that this key really belongs to the owner ... It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes Use this key anyway?
ここで yes と入力します。
再度
Enter the user ID. End with an empty line:
と聞いてきますので,受取人をさらに追加するのでなければ,単に [Enter] を打ちます。
これで拡張子 asc のファイルができますので,それを送ります。
出力ファイル名を指定する場合は次のようにします。
gpg -o 出力ファイル名 -ea himitsu.txt
逆に,受け取ったファイルを復号(解読)するには,単に次のように打ち込みます。
gpg ファイル名
この場合は次のように聞いてきます。
You need a passphrase to unlock the secret key for ... Enter passphrase:
鍵を生成したときに打ち込んだパスフレーズを入力すると,復号(解読)されます。
ファイル名を指定するには次のようにします。
gpg -o 出力ファイル名 ファイル名
他人のキーをインポートしただけでは,上のように,
There is no indication that this key really belongs to the owner ...
などと注意をうながしてきます。 これが目障りなら,他人のキーにサインすることができます。 たとえば okumura 氏のキーにサインするには次のようにします。
gpg --lsign-key okumura
すると,Really sign? と聞いてきますので yes と入力します。 また,パスフレーズを聞いてきますので,自分のパスフレーズを入力します。
$ gpg --edit-key okumura Command> adduid Real name: Haruhiko Okumura Email address: okumura@example.jp Comment: You selected this USER-ID: "Haruhiko Okumura <okumura@example.jp>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a passphrase to unlock the secret key for ... Command> save
私は Linux でも Windows でも使えて GnuPG(PGP/MIME 形式)対応のメーラ Mew を使っています。 これは Emacs(Windows では Meadow など)というテキストエディタの上で動きます。 ただし,Emacs/Meadow はパソコン初心者の方には使いづらいかもしれません。
Enigmail という Mozilla,Firebird,Netscape の拡張が便利かもしれません。
GnuPG は PGP 互換ですので,PGP 対応メーラであれば GnuPG とのやりとりができるはずです。
PGP,PGP/MIMEへのWindows版MUAのサポート状況 (Daa さん) あるいは Taki Internet Mail Private Lab. (滝澤さん) の MUAs for Windows - table 5: cipher に対応表が載っています。
hoge というファイルに hoge.sig という署名が付いていることがある。 これをチェックするには,~/.gnupg/gpg.conf の
keyserver x-hkp://pgp.mit.edu keyserver-options auto-key-retrieve
のコメントを外して生かし,
gpg --verify hoge.sig
とすればよい。