GnuPG

GnuPG とは

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

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

Windows でのインストール(GUI版)

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

Windows でのインストール(コマンド版)

ここではフリーソフトの宝庫 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 を使う方法は こちら に書きました。

Linux でのインストール

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

./configure --disable-nls
make
make install

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

Mac OS X でのインストール

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

簡単な使い方

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

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

コマンドプロンプト(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

とすればよい。

リンク


Last-modified: 2007-08-16 (木) 16:02:38 (3402d)