Last updated: 03/12/10 OpenPKSD.ORGで公開されている公開鍵サーバーの使い方へのリンクを追加。
The GNU Privacy Guardとは、 GNUの情報セキュリティのためのツールで、 データを暗号化したりデータに署名したりすることができます。
受け取り人の公開鍵を使って暗号化したデータは、 受取人の私有鍵以外では復号できません。 これによって、メールが盗聴されるのを防ぐことができます。
バージョン1.0.4にはセキュリティ上のバグがありました。 とても遅いですが、1.0.6にバージョンアップしました。 (2003年12月9日現在の最新版は、1.2.3です。)
インストール・ 準備・ メールのやりとり・ メールソフトを使う・ 署名と検証
rootじゃない人が自分用に~/local/以下にインストールする。
cd ~/local/src gunzip -c ../packages/gnupg-1.0.6.tar.gz | tar xvf - cd gnupg-1.0.6GNU patchが目的のマシンに無い場合は、Linuxマシンでパッチを当てて、 tarballにしてから目的のマシンに持ってくるとか。patch -p1 < ../../packages/gnupg-1.0.4.security-patch1.diff
./configure --prefix=${HOME}/local --enable-static-rnd=unix make make check
make check
でFAILしても進めるみたい。Solarisでは、
gpg: ../cipher/tiger: error loading extension: ld.so.1: ../g10/gpg: fatal: relocation error: file ../cipher/tiger: symbol __muldi3: referenced symbol not found
と出たぞ。
make install |& tee `date +%y%m%d`.install.log.cshrc等に、
setenv MANPATH ${MANPATH}:${HOME}/local/man
などを追加しておくと、manページも見えてしあわせ。
http://www.lab3.kuis.kyoto-u.ac.jp/misc/doc/pgp/、 GnuPG Mini Howto と、 GnuPGの使い方 を参照。
gpg
する。~/.gnupg/
以下ができる。
gpg --gen-key
していろいろ答える。
gpg --list-keys
で確認する。
メールアドレスが変更になった場合に、同じ鍵を使い続けたい場合。
gpg --edit-key 元のメールアドレス
する。
adduid
していろいろ答える。
gpg --list-keys 新しいメールアドレス
して確認。
公開鍵サーバーを使う方法はまだ勉強中。 OpenPKSD.ORGのUNIX環境におけるOpenPGP準拠ソフト「GnuPG」での公開鍵サーバ使用法 が参考になりそう。
gpg --export -a -o pubring.asc IDIDはフルネームとかメールアドレスとか。だろうか?
pubring.asc
をwww等で公開する。メールで送ってもいい。
hoge.asc
)に保存。
gpg --import hoge.asc
gpg --fingerprint ID
gpg --lsign-key ID
gpg --edit-key ID Command> trust …質問に答える。 Command> quit
gpg --update-trustdb
gpg --check-trustdb
gpg --delete-key ID
もっともプリミティブな方法。 メールソフトによっては、そのソフトの上からできるみたいです。 詳細は、以下。
hoge.txt
)に保存。
gpg -e -a -r 受取人 -s hoge.txtパスフレーズを答えてサインし、相手の鍵を本当に使うか答える。
hoge.txt.asc
cat hoge.txt.asc | mail 送り先
でもいい?
PGPを使っている人に署名・暗号化したメールを送ると、 先方で復号化する際に、文字化けが起こりました。 GNU Privacy Guard Plug-in for Becky! 2の作者、Yasuhiro ARAKAWAさんによると、 署名アルゴリズムの違いによるもののようです。 今回は、署名せずに暗号化だけすることで、回避しました。 署名時に--force-v3-sigsオプションをつけることで回避できそうです。 詳しくは、http://hp.vector.co.jp/authors/VA023900/gpg-pin/manual/tips.html をごらんください。
fuga.txt
)にコピーする。
gpg -d fuga.txtパスフレーズを答える。 送り主の公開鍵がインポートされていれば、サインも確認できる。
http://bugs.guug.de/db/45/452-b.htmlを参照。 .mutt/muttrcに以下を追加する。
以下の内容は、muttと一緒に配布されている、…/doc/mutt/samples/gpg.rc にもありました。 太字はzundaによる変更。 サイン・検証する前に、日本語の漢字コードを直しとかないきゃいけませんでした。 [Mutt 1.2.5i-jp0 (2000-07-28)] kccじゃなくてnkfでもいいはず。 サインの検証の際には、最後のrm %f.jisがいつも成功するので、 muttはいつも検証がうまく行ったと思ってしまいます。 メッセージウインドウに現れるgpgからの出力をお見逃しなく。
pgp_encrypt_only_commandとpgp_encrypt_sign_commandにも、 漢字コード変換が必要なようです。 EUCに解読されちゃったら読めないメールソフトもあるんだよね。 (2001.9.18.追加)
さらに、 RFC2015によって、 署名の前に改行コードがCR-LFになっている必要があるそうです。 kcc -jで変換していたものを、 nkf -j -LwでCR-LFになるように変換するようにしました。 送信時には、 入力の漢字コードをEUCと仮定して-Eオプションも付けてあります。 (2003.7.10.追加)
set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" set pgp_verify_command="nkf -j -Lw %f > %f.jis; gpg --no-verbose --batch --output - --verify %s %f.jis; rm %f.jis" set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" set pgp_sign_command="nkf -E -j -Lw %f > %f.jis; gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f.jis; rm %f.jis" set pgp_clearsign_command="nkf -E -j -Lw %f > %f.jis; gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f.jis; rm %f.jis" set pgp_encrypt_only_command="nkf -E -j -Lw %f > %f.jis; pgpewrap gpg -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f.jis; rm %f.jis" set pgp_encrypt_sign_command="nkf -E -j -Lw %f > %f.jis;pgpewrap gpg --passphrase-fd 0 -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f.jis; rm %f.jis" set pgp_import_command="gpg --no-verbose --import -v %f" set pgp_export_command="gpg --no-verbose --export --armor %r" set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" set pgp_getkeys_command=""
メールを送るときは、メール本文を作った後、y:Sendの前に、pを押すと、 gpgのメニューが出る。(b)othで、サイン、暗号化して、y:Sendすると、 パスフレーズと相手の公開鍵IDを聞かれる。 Esc-kで公開鍵を添付できる。
暗号化されたメールが届くと、パスフレーズを聞かれる。 Mime-typeが、Application/Pgpじゃないといかんが。 相手の公開鍵がインポートされていて、サインされている場合には、 サインの確認結果も見せてくれる。
サインされたメールの場合は、設定ファイルで
set pgp_verify_sig=yes
されてる場合は自動的に検証してくれます。
http://www1.ringoya.nu/usr/9616/diary.htmlを参照。 でもまだ成功していない。
以下を作成し、gpg-lang.sh
としてパスの通ったところに置き、
chmod +x
しておく。
#!/bin/sh LANG=C gpg $@
.emacsに以下を追加。Mew用も書いておこう。
;; mew (setq mew-from "Hoge Fuga") (setq mew-cc "fuga@hoge.hoge") (autoload 'mew "mew" nil t) (autoload 'new-send "mew" nil t) (setq exec-path (cons "/~zunda/opt/share/bin" exec-path)) (add-hook 'mew-init-hook (function (lambda () (setq mew-prog-w32 nil) (setq mew-mime-content-type (append '( ("application/msword" "\\.doc$" mew-b64 mew-prog-w32 mew-icon-text) ("application/vnd.ms-excel" "\\.xls$" mew-b64 mew-prog-w32 mew-icon-text) ) mew-mime-content-type)) ))) (setq mew-prog-pgp "gpg-lang.sh") (setq mew-prog-gpg "gpg-lang.sh") (setq exec-path (cons "~/local/bin" exec-path))
Mewを立ち上げいろいろやってみる。 むー。PGP is not foundとか言われてしまうな。 mew-1.94b39以降じゃないとだめなのかな? ( http://www.kyo-ko.org/knowhow/kondara/memo1.htmlより)
mewでは、wでドラフトモードになり、C-cC-aでマルチパートを作って、 pで自分の公開鍵を添付できます。まだできてへんが。
http://www.math.s.chiba-u.ac.jp/~matsu/gpg/gpg-3.htmlを参照。
これで、受取人がファイルが改変されてないことを確かめるのですね。 署名の際のパスフレーズで本人確認されます。
gpg -s hogeで署名すると、
hoge.gpg
というファイルができる。
gpg -d hoge.gpgで検証する。でもできるファイルはバイナリで、検証しないと読めない。
gpg -sa hogeで署名すると、
hoge.asc
というファイルができる。
これはアスキー形式のファイルでメールでも送ることができる。
上記と同様、検証すると読める。
gpg --clearsign hogeでできるファイル
hoge.asc
は、
もとのファイルに署名を付加したものなので、検証しなくても内容がわかります。
gpg -b hogeすると、
hoge.sig
という署名ファイルが別にできます。
アスキー形式がいい場合は、
gpg -ba hogeして、
hoge.asc
を作ります。
検証するには、署名ファイルを先に書いて、
gpg --verify hoge.asc hogeなどとします。
Back to zunda.
zunda <zunda at freeshell.org>