Front page   Edit Freeze Diff Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes

技術文書/UNIX/GnuPG

Last-modified: Sat, 29 Jan 2011 15:27:49 JST (4322d)
Top > 技術文書 > UNIX > GnuPG


GnuPG とは EditEdit(GUI)

RFC2440 (OpenPGP) 互換の、ファイルの暗号化や署名を行うツールです。 暗号化は公開鍵方式を利用しています。RSA や DSA と言った公開鍵暗号方式についてはここでは述べません。とりあえず、文書に対して署名を掛けるときは自分の秘密鍵を使い、暗号化するときは相手の公開鍵を使うと覚えておけば良いでしょう。

インストール EditEdit(GUI)

ports からさくさくとインストールできます。

# cd /usr/ports/security/gnupg
# make install

このままだと使うときに警告が出るので、パーミッションを変更しておきます。

# chmod 4755 /usr/local/bin/gpg

鍵生成 EditEdit(GUI)

gpg --gen-key で鍵を作ります。どんな鍵を作るのかということと、メールアドレスを聞かれます。

% gpg --gen-key
gpg (GnuPG) 1.4.0; Copyright (C) 2004 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.

ご希望の鍵の種類を選択してください:
   (1) DSAとElgamal (既定)
   (2) DSA (署名のみ)
   (5) RSA (署名のみ)
選択は? (enter)
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) (enter)
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)
Keyは無期限です
これで正しいですか? (y/N) y

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

本名: SUGIMURA Takashi
電子メール・アドレス: sugimura@YasudaKei.org
コメント: (enter)
次のユーザーIDを選択しました:
    “SUGIMURA Takashi <sugimura@YasudaKei.org>”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
秘密鍵を保護するためにパスフレーズがいります。

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
+++++++++++++++...+++++.+++++.++++++++++++++
+++++++++++++++++++++++++++++++.+++++.+++++
...
gpg: /usr/home/sugimura/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵xxxxxxxxを絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   1024D/xxxxxxxx 2005-02-13
                 指紋 = B73B 6CD0 F791 175C C1A3  0AAF 0D47 C65E 0752 92F7
uid                  SUGIMURA Takashi <sugimura@YasudaKei.org>
sub   2048g/xxxxxxxx 2005-02-13

いま作成した鍵は、gpg --list-keys で見ることができます。xxxxxxxx の部分が鍵の ID です。

% gpg --list-keys
/usr/home/sugimura/.gnupg/pubring.gpg
-------------------------------------
pub   1024D/xxxxxxxx 2005-02-13
uid                  SUGIMURA Takashi <sugimura@YasudaKei.org>
sub   2048g/xxxxxxxx 2005-02-13

鍵サーバへの公開鍵の登録 EditEdit(GUI)

公開鍵を使ってもらえるように、鍵サーバに登録しましょう。http://pgp.nic.ad.jp/ がわかりやすいです。 公開鍵をフォームから登録しますが、次のように出力したものを使います。

% gpg --armor --export xxxxxxxx
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.0 (FreeBSD)

mQGiBEIPKksRBAD7HNdigRsGRU/SuRITmAUorbf+07fmAcggVnzJnPkF/stx5owi
tDAP4oFzaUSF21+HhE4J4GROwahPbv2RPYCGq3mFxXq92xPV7wH34DosffHmdPrp
...
DAAKCRANR8ZeB1KS9zh3AJoDH35bjyZ0lZl0DO8iXSgdFmjsYwCeJ4yEu31bL679
0arqVKmwXszn6U8=
=K9xl
-----END PGP PUBLIC KEY BLOCK-----

また、この公開鍵が正しいことであることを示すために、fingerprint を取っておきましょう。

% gpg --fingerprint xxxxxxxx
pub   1024D/xxxxxxxx 2005-02-13
                指紋 = B73B 6CD0 F791 175C C1A3  XXXX XXXX XXXX XXXX XXXX
uid                  SUGIMURA Takashi <sugimura@YasudaKei.org>
sub   2048g/xxxxxxxx 2005-02-13

鍵の失効 EditEdit(GUI)

もし秘密鍵を漏らしてしまったり、パスフレーズを忘れてしまったりしたときのために、いまのうちに失効証明書を作っておきましょう。失効証明書を別に取っておけば、必要なときにいつでも鍵を無効化できます。

% gpg -o revoke.asc --gen-revoke xxxxxxxx

sec  1024D/xxxxxxxx 2005-02-13 SUGIMURA Takashi <sugimura@YasudaKei.org>

この鍵にたいする失効証明書を作成しますか? (y/N) y
失効の理由を選択してください:
  0 = 理由は指定されていません
  1 = 鍵がパクられました
  2 = 鍵がとりかわっています
  3 = 鍵はもう不用です
  Q = キャンセル
(ここではたぶん1を選びます)
あなたの決定は? 0
予備の説明を入力。空行で終了:
> (enter)
失効理由: 理由は指定されていません
(説明はありません)
よろしいですか? (y/N) y

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“SUGIMURA Takashi <sugimura@YasudaKei.org>”
1024ビットDSA鍵, ID xxxxxxxx作成日付は2005-02-13

パスフレーズを入力: xxxxxxxxxxxxxx

ASCII包装出力を強制します。
失効証明書を作成しました。

見つからないような媒体に移動してください。もしワルがこの証明書への
アクセスを得ると、そいつはあなたの鍵を使えなくすることができます。
媒体が読出し不能になった場合に備えて、この証明書を印刷して保管するの
が賢明です。しかし、ご注意ください。あなたのマシンの印字システムは、
だれでも見える場所にデータをおくことがあります!

ここでは revoke.asc というファイルに失効証明書を保存しました。実際に失効させるには、この失効証明書をインポートします。

% gpg --import revoke.asc
gpg: 鍵xxxxxxxx:“SUGIMURA Takashi <sugimura@YasudaKei.org>”失効証明書を読み込 みました
gpg:     処理数の合計: 1
gpg:   新しい鍵の失効: 1
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u

失効させてから鍵の一覧を見ると、確かに失効されていることが確認できます。

% gpg --list-keys
/usr/home/sugimura/.gnupg/pubring.gpg
-------------------------------------
pub   1024D/xxxxxxxx 2005-02-13 [失効: 2005-02-13]
uid                  SUGIMURA Takashi <sugimura@YasudaKei.org>

手元だけで失効させても意味がありませんので、鍵サーバに登録している証明書も同様に失効させておきましょう。最初の登録時と同様に、gpg --armor --export で出力したものを張り付ければ失効の登録となります。

他の人の公開鍵 EditEdit(GUI)

文書を暗号化してメールを送りたいとき、その相手の公開鍵を入手する必要があります。鍵サーバなどから鍵ファイルをもらったら、次のように取り込みます。

% gpg --import publickey.asc
gpg: 鍵xxxxxxxx: 公開鍵“XXXXXXXX <xxxxxxxx@example.com>”を読み込みまし た
gpg:     処理数の合計: 1
gpg:           読込み: 1

取り込んだら fingerprint を確認しておきましょう。

% gpg --fingerprint xxxxxxxx
gpg: 警告: 剣呑なメモリーを使用しています!
gpg: 詳細は http://www.gnupg.org/faq.html をご覧ください
pub   1024D/xxxxxxxx 2005-01-31
                 指紋 = XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX
uid                  XXXXXXXX <xxxxxxxx@example.com>
sub   2048g/xxxxxxxx 2005-01-31

鍵が正しいことを確認したら、信用度を設定します。--edit-key で行います。

% gpg --edit-key xxxxxxxx
gpg (GnuPG) 1.4.0; Copyright (C) 2004 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.

pub  1024D/xxxxxxxx  作成: 2005-01-31  満了: 無期限      利用法: CSA
                     信用: 未知の        有効性: 未知の
sub  2048g/xxxxxxxx  作成: 2005-01-31  満了: 無期限      利用法: E
[ unknown] (1). XXXXXXXX <xxxxxxxx@example.com>

コマンド> trust
pub  1024D/xxxxxxxx  作成: 2005-01-31  満了: 無期限      利用法: CSA
                     信用: 未知の        有効性: 未知の
sub  2048g/xxxxxxxx  作成: 2005-01-31  満了: 無期限      利用法: E
[ unknown] (1). XXXXXXXX <xxxxxxxx@example.com>

他のユーザーの鍵を正しく検証するために、このユーザーの信用度を決めてください
(パスポートを見せてもらったり、他から得た指紋を検査したり、などなど)

  1 = 知らない、または何とも言えない
  2 = 信用しない
  3 = ある程度信用する
  4 = 完全に信用する
  5 = 絶対的に信用する
  m = メーン・メニューに戻る

あなたの決定は? 3

pub  1024D/xxxxxxxx  作成: 2005-01-31  満了: 無期限      利用法: CSA
                     信用: ある程度      有効性: 未知の
sub  2048g/xxxxxxxx  作成: 2005-01-31  満了: 無期限      利用法: E
[ unknown] (1). XXXXXXXX <xxxxxxxx@example.com>
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。

Mewから使う EditEdit(GUI)

~/.mew.el で gpg を使うように設定するだけです。

(setq mew-prog-pgp "gpg")

使い方は次の通りです。どの鍵を使うかについては、From: や To: から見て判断してくれます。また、署名するときはパスフレーズを聞かれます。

目的コマンド
署名C-cC-s
暗号化C-cC-e
署名後暗号化C-cC-b
暗号化後署名C-cC-r

鍵サーバについて EditEdit(GUI)

鍵の検索は OpenPKSD.ORG を使うのがいいようです。 登録はいまのところ従来通り http://pgp.nic.ad.jp/jindex.html を利用するようです。



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White