トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

UnixCmd/gpg

INDEX

GnuPG -The GNU Privacy Guard-

GNU による、PGP (Pretty Good Privacy) の別実装で OpenPGP規格(RFC4880)に準拠した暗号ソフト。

鍵ファイルの作成

 --gen-key 鍵の作成

GnuPG で自分の鍵を作る。2048ビットRSA鍵で、有効期限は13ヶ月。

C:\Program Files\GNU\GnuPG>gpg --gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
選択は? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)13m
Key expires at 06/22/12 15:42:17
これで正しいですか? (y/N) y

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

本名: Sample Name
電子メール・アドレス: sample@mx.example.com
コメント:
次のユーザーIDを選択しました:
    “Sample Name <sample@mx.example.com>”

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

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

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg: 次回の信用データベース検査は、2012-06-22です
pub   2048R/60D1B935 2011-05-29 [満了: 2012-06-22]
                 指紋 = AF01 1FD0 EF8D 99C7 0611  E11F CE23 973D 60D1 B935
uid                  Sample Name <sample@mx.example.com>
sub   2048R/7DB3840E 2011-05-29 [満了: 2012-06-22]


C:\Program Files\GNU\GnuPG>

これで、鍵ID 60D1B935 の鍵が作成された。

C:\Program Files\GNU\GnuPG>gpg --list-keys
C:/〜/Application Data/gnupg\pubring.gpg
--------------------------------------------------------------------
pub   2048R/60D1B935 2011-05-29 [満了: 2012-06-22]
uid                  Sample Name <sample@mx.example.com>
sub   2048R/7DB3840E 2011-05-29 [満了: 2012-06-22]


C:\Program Files\GNU\GnuPG>gpg --list-secret-keys
C:/〜/Application Data/gnupg\secring.gpg
--------------------------------------------------------------------
sec   2048R/60D1B935 2011-05-29 [満了: 2012-06-22]
uid                  Sample Name <sample@mx.example.com>
ssb   2048R/7DB3840E 2011-05-29


C:\Program Files\GNU\GnuPG>

 --export 公開鍵のエクスポート

作成した鍵の公開鍵をエクスポートし、これを公開する。また、--armor を指定してASCII包装で出力する(指定しないとバイナリになる)。

C:\Program Files\GNU\GnuPG>gpg --export --armor 60D1B935
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (MingW32)

mQENBE3h6zIBCADHngUMhycf8+WFUyCHCZNimtD/0GvasZTrHN3bY+lIZt6ow04e
XwGhgqoBwm07CVrSLNz/TPxskiCzp86a3gQ8mlhRwN503XGjXJ3jorBUO4T3iIlD
l2xcRNTbhrIF3wMGNxqBBWAOA9/ZUHBXKAAw+VlEzCzWdQNqD37pp/7l9n+K/mi5
eZ7EXFZoCduO3taUKppKSQ/bG/E6/br8v4OlmqZbEl1kRgV0c7YmhM2+CLMeil3K
UN6N3sYVbEtCxLOqDWiVrgS9f/edQuEZ2y4h5/mTdAb1XpyDBS9b+SJtCEKrodUH
+iCpiS9ycYu5tNxsoeW7rAclLjzfhYqDx63HABEBAAG0I1NhbXBsZSBOYW1lIDxz
YW1wbGVAbXguZXhhbXBsZS5jb20+iQE+BBMBAgAoBQJN4esyAhsDBQkCAikABgsJ
CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDOI5c9YNG5NaZZB/9ZMt5O332whb+4
V2B1DWo6oLRpSSfbfFTd4dDQkdekNORL99+FLN9NTkuq0ONi2bLkgTkxyp3xTjCd
9Nwjqif5ykM4D1xWPxfapGWPslvjEuhiFs2Bdij8WlJwn5ZFhZiFWzqym/2w3jsT
9GDdqyyAoexXL0v5F3AP0ahLHwihN0K6e8kUwHXtGotd1Z7n12kJoVf7ErdEbwWR
8T06sIxAfWOAG7WnVQI6iQOSshcYAXWpHJEfhJBwRXHRrjThOyTbNL9X/sOqrtEn
sdH0zCNUU4ss2KkH0/HcsxxWYRiHiOUtqPD3X0kQ3hpDivL/iyEnaRsz5GcyRJn8
GLcOZ1UcuQENBE3h6zIBCADiiBfWFHMoQ9Y0crY685w4Ul7IunDULJmDGlQuVx8f
XEmryZsZyC1sbN70RadmaMkauBMq1sHfn9VWM5BorzGljrtShM+lmYUhkUBQRByG
3cOA1ONWpTnOt/cdjzypamZxeTHPLU2LP2kM9kSL6VCaJNsV7N9714ejLEBA7/V+
i7QoKrFB2iHFxaG2RfFMwik+e7E9GurRY/ZSs3+aVOZO/SKHCFrgrEsa65KUW4gs
FGhhVMQiiKqr4y/woMmRZNsDGCr8EEV5LNH4B+WrYl9IfcNO4gkETzdJPVs8sMPb
12Fe/bDHYh8L8bDXmXeTkyornCSw0qJQ3KirrgKnaS/nABEBAAGJASUEGAECAA8F
Ak3h6zICGwwFCQICKQAACgkQziOXPWDRuTX/Vgf9HWRhk/1ArQ0vI66H0slcufa+
SRe6TVFNkS0plMQM7ZynDxYx1sC6jJXOEhV7w9mcd/srgdMr0rGSYuw64ii5VEMW
PzZlracKT+aIFwYtNje+ZzLiXe0IiR3b/k1H896wmTE8yZnGcJRU4HdRYyHchfia
SJUpHyVXPjUIEoEsWREHPShaSbMaxtGTkHSk4NPLVe+fL8vMytr1jVaxM9NXtCeu
x8tIQTvSpa1EqvcshM4N5u3iUowaWh7m/vu4Zz4re9kR5VlZOVr/N5Ob9NXfK02d
QPrmDqOXWwtUl66lLtpHlbrofAQwZpEx8a5JeaILkTwxk27djTqum8ik3/Hl4Q==
=xUnu
-----END PGP PUBLIC KEY BLOCK-----

C:\Program Files\GNU\GnuPG>

 --gen-revoke 失効証明書の作成

続いて、失効証明書を作成する。これは作成した鍵が無効であることを示す証明書で、秘密鍵をなくしたり盗まれたりした時に公開する。非常時に備えて大事に保管する。

C:\Program Files\GNU\GnuPG>gpg --gen-revoke 60D1B935

sec  2048R/60D1B935 2011-05-29 Sample Name <sample@mx.example.com>

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

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“Sample Name <sample@mx.example.com>”
2048ビットRSA鍵, ID 60D1B935作成日付は2011-05-29

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

見つからないような媒体に移動してください。もしワルがこの証明書への
アクセスを得ると、そいつはあなたの鍵を使えなくすることができます。
媒体が読出し不能になった場合に備えて、この証明書を印刷して保管するの
が賢明です。しかし、ご注意ください。あなたのマシンの印字システムは、
だれでも見える場所にデータをおくことがあります!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (MingW32)
Comment: A revocation certificate should follow

iQEfBCABAgAJBQJN4fFJAh0CAAoJEM4jlz1g0bk1l5cH/jEq65J3z81Voh1eusdY
5GDA7DTF6QoSG0fTb48/1XzwYJ0wq+I9+SNR2wB8bad/k/sRqfYOAb175hj3b5jk
mUaf8eoFK85i1mYv5Gjge8WqMzynfwvfsyTvSL+phyf2FAuCkHWualvdV4pPmfJ4
WdnPxvA7fuH3lDxwJRbkHAnCheaHL69MBDBZx7AkvXM7FM3l/gyE2Byvq/PB/hxq
8ll9h07tE4R90inF2PkkuwAHojH/TB6u8wTUEFgWFJTFnUMJunD/gBkMoGM4nL3U
VOUVgVpiOdCdHUeILtPF8JP5BwQtCofXOXCzw0KxvgYtvpK/+Eg36KXkEMT/6kWK
0N8=
=xcBt
-----END PGP PUBLIC KEY BLOCK-----

C:\Program Files\GNU\GnuPG>

GPGでメッセージの署名と検証

自分の鍵でのメッセージに対する署名とその検証。

 --clearsign テキストのクリア署名

テキストファイル sample.txt に対してのクリア署名を作成する。-u (--local-user) で使用する鍵IDを指定する。

C:\Program Files\GNU\GnuPG>gpg -u 60D1B935 --clearsign sample.txt

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“Sample Name <sample@mx.example.com>”
2048ビットRSA鍵, ID 60D1B935作成日付は2011-05-29


C:\Program Files\GNU\GnuPG>

実行すると、クリア署名された sample.txt.asc といったファイルが作成される。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

GunPG sample.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (MingW32)

iQEcBAEBAgAGBQJN4gSJAAoJEM4jlz1g0bk1pJQH/1mhATcdsr7e8LIVhuFk7yCz
qiPRFSxv0mjhFCwTWEWBHmGbpFRv7Iqhc913uHT15rJ3i6Ucy9yz3VytOK2vCIiS
Mvu3GqMH1vIMum79+WJsi8uR8DMPwv58EWsoEW68IPz6PwGp3V2Ejupxo1d6lGM/
fLVl81VMHsajrY+RePfDnp32YxDoTnG2UmQxViL0wpcCjxsD6/QRg0km+nTgS2Kp
hmVDkcp98oB+MX4EluKLWiWSQqRj9jKiwYxCFi6rTDBGSkm15qT5SryHZ552dSyu
0ZiZ4+dq1ZAfPBVVEQ56fOrT6JPGY8hrf5Q+i/RLJoUEZbziGT2i0anbREZaG6A=
=/qkR
-----END PGP SIGNATURE-----

 --verify 署名の検証

クリア署名の検証を行う。

C:\Program Files\GNU\GnuPG>gpg --verify sample.txt.asc
gpg: 05/29/11 17:32:09にRSA鍵ID 60D1B935で施された署名
gpg: “Sample Name <sample@mx.example.com>”からの正しい署名

C:\Program Files\GNU\GnuPG>

GPGでファイルの署名と検証

自分の鍵でのファイルに対する署名とその検証。

 --detach-sign 分離署名を作成

ファイル sample.txt に対しての分離署名を作成する。-u (--local-user) で使用する鍵IDを指定する。

C:\Program Files\GNU\GnuPG>gpg -u 60D1B935 --detach-sign sample.txt

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“Sample Name <sample@mx.example.com>”
2048ビットRSA鍵, ID 60D1B935作成日付は2011-05-29

C:\Program Files\GNU\GnuPG>

実行すると、署名された sample.txt.sig といったファイルが作成される。

 --verify 署名の検証

クリア署名の検証を行う。

C:\Program Files\GNU\GnuPG>gpg --verify 〜\gnupg-w32cli-1.4.18.exe.sig
gpg: 07/01/14 03:20:52にRSA鍵ID 4F25E3B6で施された署名
gpg: “Werner Koch (dist sig)”からの正しい署名
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: D869 2123 C406 5DEA 5E0F  3AB5 249B 39D2 4F25 E3B6

C:\Program Files\GNU\GnuPG>

Win32移植版

むかし GnuPG が Windows バイナリもビルドして用意してた気がするけど…。 GnuPG のダウンロードページ( https://www.gnupg.org/download/ )の GnuPG binary releases に用意されている。

 Gpg4win

http://gpg4win.org/

GnuPG のほかに、Kleopatra, GPA, GpgOL((A plugin for Microsoft Outlook 2003 and 2007)), GpgEX((A plugin for Microsoft Explorer)) などをまとめたもの。

最終更新時間:2014年12月23日 17時54分18秒 指摘や意見などあればSandBoxのBBSへ。