なんかてきとうに

わりと個人的な忘備録的ですよ。

お勉強

GnuPG

GPGについて。GPGはPGPGNU実装。

用途は主にメールの暗号化、署名かな。

S/MIME が信頼性の担保にPKIを利用するのに対して、PGP/MIMEでは信頼性の担保に信頼の連鎖を利用する。

信頼の連鎖とは、ざっくり言うと、自分の知ってる人が署名した鍵の持ち主は信頼できる。というもの。

自分の知っている人が署名した鍵で署名された鍵の持ち主も信頼できる。……みたいな。

GPG における鍵管理

GPGでは鍵を管理するのに鍵束を利用する。鍵束には

  • 公開鍵を集めたpubring.gpg

  • 秘密鍵を集めたsecring.pgp

がある。

また、鍵の信頼度をデータベース trustdb.pgpに持っている。

自分が使う鍵ペアの生成

gpg --gen-key

で生成できる。

途中、どの鍵を作るのか

(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)

鍵サイズ

What keysize do you want? (2048)

鍵の使用期限

0 永遠に
<n> n日
<n>w n週間
<n>m nヶ月
<n>y n年

が聞かれる。

その後 名前、メールアドレス、コメント を聞かれる。

最後にパスワードが聞かれる。

鍵は pubring.pgp secring.pgp に保存されている。

鍵束の中身を確認

  • -k, --list-key, --list-public-key
    pubring.pgp の中に入ってる鍵を一覧表示する。

  • -K, --list-secret-key
    secring.pgp の中に入っている鍵を一覧表示する。

  • --list-sig
    pubring.pgp の中に入ってる鍵を署名した鍵情報も含めて一覧表示する。

  • --check-sig
    pubring.pgp の中に入ってる鍵を署名した鍵情報と署名の状態含めて一覧表示する。
    !だと有効 - だと無効 % だとエラー(サポートしてないアルゴリズムだったとか)

鍵束に鍵を追加

  • --import
    鍵ファイルをpubring.pgpに追加する。

  • --recv-keys KeyID 鍵サーバにあるKeyIDをもった鍵をpubring.pgpに追加する。

  • --refresh-keys
    鍵サーバにアクセスして、pubring.pgpにある鍵のうち、更新されているものを更新する。

鍵束から鍵を取り出す

  • --export
    pubring.pgp から鍵を取り出す。

  • --send-keys KeyID pubring.pgp にあるKeyIDをもった鍵を鍵サーバに登録する。

  • --export-secret-keys
    secring.pgp から鍵を取り出す。

鍵サーバ

世の中には、PGP鍵を登録しておける鍵サーバがたくさんあります。

鍵サーバに登録したり鍵サーバから受け取ったり、鍵サーバ内を検索したりできます。

  • --send-keys KeyID

  • --recv-keys KeyID

  • --search-keys name

search-keys で鍵を探して、KeyIDを見つけて recv-keysで自分の鍵束に追加する感じですね。

search-keys すると結構たくさん見つかるので、どれが自分の求める鍵なのかがんばって探しましょう。

GPGで使う鍵サーバは 設定ファイル ~/.gnupg/gpg.conf に記載しておくことも出来ますし、

--keyserver

で指定することもできます。

--send-keys
--recv-keys

などと一緒に使います。

鍵サーバとして指定できるのは

  • hkp://server/

  • mailto:mail@address

  • ldap://server/

の3種類みたいです。Web上にあるサーバはhkp://なものなのかなぁと。

標準では hkp://keys.gnupg.net が指定されていました (CentOS6.5)