* GnuPG [#h6c23614]

** GnuPG とは [#q344b621]

GnuPG(GNU Privacy Guard)はフリーの暗号化ソフトです。
公式サイトは次のところです。

-[[The GNU Privacy Guard:http://www.gnupg.org/]]

以下は古いページをとりあえずWiki化したものです。
これを下敷きとして,どんどん書き直してください。

** Windows でのインストール(GUI版) [#d99dffa3]

次のサイトが参考になります。

-[[ウィンドウズ環境への GnuPG の導入:http://www.id-est.net/documents/gnupg/gnupg.html]]
(イドエスト・コンサルティング)
-[[WinPT: Windows Privacy Tools - Easy installation and use of OpenPGP tools based on GnuPG:http://winpt.sourceforge.net/]]

** Windows でのインストール(コマンド版) [#oa5800dc]

ここではフリーソフトの宝庫 [[Ring Server:http://www.ring.gr.jp/]] からダウンロードしましょう。
[[/pub/net/gnupg/binary/:http://www.ring.gr.jp/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 を使う方法は
[[こちら:http://oku.edu.mie-u.ac.jp/~okumura/win/meadow.html]]
に書きました。

** Linux でのインストール [#mb7a309a]

すでに入っているはずです。
ソースから作りたいなら次のようにします。

 ./configure --disable-nls
 make
 make install

上の例では各国語対応 Native Language Support を切っています。
こうしないと Mew から呼び出したときにうまくいかなかったことがあります(現在の状況はわかりません)。
また,suid root しておかないと,WARNING: using insecure memory!(「警告: やばいメモリーを使用しています!」)というメッセージが出ます。

** Mac OS X でのインストール [#i7f5013e]

次のサイトが参考になります。

-[[MacOS XでのGnuPG使用について:http://hp.vector.co.jp/authors/VA019487/t18.html]]
([[GNU Privacy Guard講座:http://hp.vector.co.jp/authors/VA019487/]])
-[[GnuPG暗号化メールをMacOSXで使おう:http://homepage.mac.com/mio_rhapsody/gnupg/]]
(Tomio さん)
-[[Mac GNU Privacy Guard:http://macgpg.sourceforge.net/]]
-[[GPGMail:http://www.sente.ch/software/GPGMail/English.lproj/GPGMail.html]]

** 簡単な使い方 [#w85321f9]

以下ではコマンド版の使い方を解説します。

まずは適当なファイルを暗号化してみましょう。

コマンドプロンプト(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 という長いオプションを付けて起動するという手もあります。

** 自分の鍵を生成してみよう [#r9569511]

次のように打ち込んでみましょう。

 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@matsusaka-u.ac.jp[Enter]
 Email address: okumura@example.jp[Enter]
 Comment: [Enter]
 You selected this USER-ID:
     "Haruhiko Okumura <okumura@matsusaka-u.ac.jp>"
     "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:http://www.keyserver.net/]]
に登録すれば誰にでも見えるようになります。

** 公開鍵でメッセージをやりとりする [#w3a91082]

まず,メッセージを送りたい友人(たとえば奥村氏)の公開鍵をもらってきて,自分の「鍵の輪」(keyring)に登録しましょう。

奥村氏の公開鍵(上のようなテキスト形式のもの)が [[okumura.asc:http://oku.edu.mie-u.ac.jp/~okumura/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 出力ファイル名 ファイル名

** 鍵にサインする [#k87507be]

他人のキーをインポートしただけでは,上のように,

 There is no indication that this key really belongs to the owner ...

などと注意をうながしてきます。
これが目障りなら,他人のキーにサインすることができます。
たとえば okumura 氏のキーにサインするには次のようにします。

 gpg --lsign-key okumura

すると,Really sign? と聞いてきますので yes と入力します。
また,パスフレーズを聞いてきますので,自分のパスフレーズを入力します。

** 新しいメールアドレスを追加する [#b8575058]

 $ gpg --edit-key okumura
 Command> adduid
 Real name: Haruhiko Okumura
 Email address: okumura@hogehoge.org
 Email address: okumura@example.jp
 Comment:
 You selected this USER-ID:
     "Haruhiko Okumura <okumura@hogehoge.org>"
     "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

** 対応メーラ [#gdd8295d]

私は Linux でも Windows でも使えて GnuPG(PGP/MIME
形式)対応のメーラ [[Mew:http://oku.edu.mie-u.ac.jp/~okumura/linux/mew.html]]
を使っています。
これは Emacs(Windows では [[Meadow:http://oku.edu.mie-u.ac.jp/~okumura/win/meadow.html]]
など)というテキストエディタの上で動きます。
ただし,Emacs/Meadow はパソコン初心者の方には使いづらいかもしれません。

[[Enigmail:http://enigmail.mozdev.org/]]
という Mozilla,Firebird,Netscape の拡張が便利かもしれません。

GnuPG は PGP 互換ですので,PGP 対応メーラであれば GnuPG とのやりとりができるはずです。

[[PGP,PGP/MIMEへのWindows版MUAのサポート状況:http://www.cla-ri.net/pgp/pgp04.html]] (Daa さん)
あるいは [[Taki Internet Mail Private Lab.:http://www.emaillab.org/]] (滝澤さん)
の [[MUAs for Windows - table 5: cipher:http://www.emaillab.org/win-mailer/table-cipher.html]]
に対応表が載っています。

** 署名のチェック [#n16751cb]

hoge というファイルに hoge.sig という署名が付いていることがある。
これをチェックするには,~/.gnupg/gpg.conf の

 keyserver x-hkp://pgp.mit.edu
 keyserver-options auto-key-retrieve

のコメントを外して生かし,

 gpg --verify hoge.sig

とすればよい。

** リンク [#rdbf45aa]

-[[GNU Privacy Guard講座:http://hp.vector.co.jp/authors/VA019487/]]
-[[PGP Public Keys Server:http://www.keyserver.net/]]
-[[PGP User's Manual for Windows:http://www.cla-ri.net/pgp/]] (Daa さん)
-[[gpgdir:http://www.cipherdyne.com/gpgdir/]]
(ディレクトリ内のファイルを再帰的にGnuPGで暗号化するPerlスクリプト)