GnuPGのコマンド
作成 : 2004/06/19
鍵の生成
鍵ペアの生成
公開鍵と秘密鍵のペアを生成する。 ちなみに、ここで生成した公開鍵は「わたしはXXだ!」と自称しているだけなので、本人かどうかの保証はない。 他人に署名してもらう(公開鍵への署名を参照)ことによって、公開鍵の信頼度をアップすることができる。 秘密鍵は他の人がアクセスできないようにすること!
C:\> gpg --gen-key gpg (GnuPG) 1.2.4; Copyright (C) 2003 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. Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) RSA (sign only) Your selection? 1 <--- 鍵の種類 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) 1024 <--- 鍵の長さ 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) 0 <--- 鍵の有効期間(0は無期限) Key does not expire at all Is this correct (y/n)? y <--- 確認 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: GnuPG <--- 実名 Email address: gpg@nina.jp <--- メアド Comment: (Enter) <--- コメント You selected this USER-ID: "GnuPG <gpg@nina.jp>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O <--- 確認(ゼロでなくオー) You need a Passphrase to protect your secret key. Enter passphrase: (password) <--- 秘密鍵のパスフレーズ Repeat passphrase: (password) <--- 秘密鍵のパスフレーズ確認 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. ++++++++++++++++++++..++++++++++.+++++.++++++++++++++++++++.+++++.+++++.++++++++ +++++++++++++++++.+++++++++++++++++++++++++.+++++++++++++++>+++++.+++++......... .......................................................................+++++ 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. ...++++++++++++++++++++++++++++++++++++++++.++++++++++.+++++++++++++++++++++++++ ..+++++.+++++++++++++++..+++++++++++++++++++++++++++++++++++>.+++++.....+++++^^^ gpg: C:/Documents and Settings/nao/Application Data/GnuPG\trustdb.gpg: trustdb c reated public and secret key created and signed. key marked as ultimately trusted. pub XXXXX/XXXXXXXX 2004-05-30 GnuPG <gpg@nina.jp> Key fingerprint = XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX sub 1024g/F12469FB 2004-05-30
破棄証明書の生成
秘密鍵を盗まれた場合や秘密鍵のパスフレーズを忘れてしまった場合などは、破棄証明書を使用することで鍵を無効にできる。 破棄証明書は他の人がアクセスできないようにすること! 勝手に鍵を無効にされてしまう可能性がある。
C:\> gpg -o revoke.asc --gen-revoke gpg@nina.jp sec XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp> Create a revocation certificate for this key? y Please select the reason for the revocation: 0 = No reason specified 1 = Key has been compromised 2 = Key is superseded 3 = Key is no longer used Q = Cancel (Probably you want to select 1 here) Your decision? 1 <--- 破棄する理由を入力 Enter an optional description; end it with an empty line: (Enter) Reason for revocation: Key has been compromised (No description given) Is this okay? y <--- よければyを You need a passphrase to unlock the secret key for user: "GnuPG <gpg@nina.jp>" 1024-bit DSA key, ID XXXXXXXX, created 2004-06-13 ASCII armored output forced. Revocation certificate created. Please move it to a medium which you can hide away; if Mallory gets access to this certificate he can use it to make your key unusable. It is smart to print this certificate and store it away, just in case your media become unreadable. But have some caution: The print system of your machine might store the data and make it available to others!
インポート
公開鍵のインポート
公開鍵ファイルpub.keyをインポートする。 バイナリ形式の鍵でもアスキー形式の鍵でも大丈夫らしい。
C:\> gpg --import pub.key
gpg: key XXXXXXXX: public key "GnuPG <gpg@nina.jp>" imported
gpg: Total number processed: 1
gpg: imported: 1
秘密鍵のインポート
秘密鍵ファイルsec.keyをインポートする。 バイナリ形式の鍵でもアスキー形式の鍵でも大丈夫らしい。
C:\> gpg --import --allow-secret-key-imort sec.key
gpg: key XXXXXXXX: secret key imported
gpg: Total number processed: 1
gpg: secret keys read: 1
gpg: secret keys imported: 1
エクスポート
公開鍵のエクスポート(バイナリ形式)
gpg@nina.jpの公開鍵をpub.keyファイル(バイナリ形式)にエクスポートする。
C:\> gpg -o pub.key --export gpg@nina.jp
公開鍵のエクスポート(アスキー形式)
gpg@nina.jpの公開鍵をpub.ascファイル(アスキー形式)にエクスポートする。
C:\> gpg -a --export gpg@nina.jp > pub.asc
秘密鍵のエクスポート(バイナリ形式)
gpg@nina.jpの秘密鍵をsec.keyファイル(バイナリ形式)にエクスポートする。
C:\> gpg -o sec.key --export-secret-key gpg@nina.jp
秘密鍵のエクスポート(アスキー形式)
gpg@nina.jpの秘密鍵をsec.ascファイル(アスキー形式)にエクスポートする。
C:\> gpg -a --export gpg@nina.jp > sec.asc
削除
公開鍵の削除
gpg@nina.jpの公開鍵を削除する。 鍵ペアを削除する場合は、秘密鍵を先に削除しておかないとエラーになる。
C:\> gpg --delete-key gpg@nina.jp gpg (GnuPG) 1.2.4; Copyright (C) 2003 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 XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp> Delete this key from the keyring? y <--- 削除するならyを
秘密鍵の削除
gpg@nina.jpの秘密鍵を削除する。 鍵ペアを削除する場合は、秘密鍵を先に削除しておかないとエラーになる。
C:\> gpg --delete-secret-key gpg@nina.jp gpg (GnuPG) 1.2.4; Copyright (C) 2003 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. sec XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp> Delete this key from the keyring? y <--- 削除するならyを This is a secret key! - really delete? y <--- 本当に削除するならyを
一覧
公開鍵の一覧
インポートした(または作成した)公開鍵の一覧を表示する。 ユーザIDを指定することもできる。
C:\> gpg --list-key [ gpg@nina.jp ]
C:/gnupg\pubring.gpg
--------------------
pub XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp>
sub XXXXX/XXXXXXXX 2004-06-13
秘密鍵の一覧
インポートした(または作成した)秘密鍵の一覧を表示する。 ユーザIDを指定することもできる。
C:\> gpg --list-secret-key [ gpg@nina.jp ]
C:/gnupg\secring.gpg
--------------------
sec XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp>
ssb XXXXX/XXXXXXXX 2004-06-13
署名の一覧
インポートした(または作成した)公開鍵の署名の一覧を表示する。 ユーザIDを指定することもできる。
C:\> gpg --list-sigs [ gpg@nina.jp ] C:/gnupg\pubring.gpg pub XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp> sig 3 XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp> <--- 自分の署名 sig 3 XXXXXXXX 2004-06-15 Foo <foo@nina.jp> <--- 他の人の署名 sub XXXXX/XXXXXXXX 2004-06-13 sig XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp>
フィンガープリントの一覧
インポートした(または作成した)公開鍵のフィンガープリントの一覧を表示する。 ユーザIDを指定することもできる。 WEBサイト等に掲載されているフィンガープリントと公開鍵のフィンガープリントを比較することで、公開鍵が改ざんされていないか確認することができる。
C:\> gpg --fingerprint [ gpg@nina.jp ]
C:/gnupg\pubring.gpg
--------------------
pub XXXXX/XXXXXXXX 2004-06-13 GnuPG <gpg@nina.jp>
Key fingerprint = XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
sub XXXXX/XXXXXXXX 2004-06-13
公開鍵への署名
公開鍵への署名
他人の公開鍵へ署名する。 公開鍵と人が一致しており、かつ公開鍵のフィンガープリントが正しい場合にのみ署名すること!
下の例は、foo@nina.jpさんがgpg@nina.jpさんの公開鍵に署名する場合。 gpg@nina.jpの公開鍵はあらかじめインポートしておく(インポートを参照)こと。
C:\> gpg -u foo@nina.jp --edit-key gpg@nina.jp gpg (GnuPG) 1.2.4; Copyright (C) 2003 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. Secret key is available. pub 1024D/XXXXXXXX created: 2004-06-13 expires: never trust: -/- sub 1024g/XXXXXXXX created: 2004-06-13 expires: never (1). GnuPG <gpg@nina.jp> Command> sign <--- signコマンドで公開鍵に署名 pub 1024D/XXXXXXXX created: 2004-06-13 expires: never trust: -/- Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX GnuPG <gpg@nina.jp> How carefully have you verified the key you are about to sign actually belongs to the person named above? If you don't know what to answer, enter "0". (0) I will not answer. (default) 答えない (1) I have not checked at all. まったくチェックしていない (2) I have done casual checking. 軽ーくチェックした (3) I have done very careful checking. 注意深くチェックした Your selection? (enter '?' for more information): 3 <--- 署名しようとしている公開鍵が本人の持ち物であることを、どれぐらい注意深く確認したか? Are you really sure that you want to sign this key with your key: "Foo <foo@nina.jp>" (XXXXXXXX) I have checked this key very carefully. Really sign? y <--- 本当に署名するならyを You need a passphrase to unlock the secret key for user: "Foo <foo@nina.jp>" 1024-bit DSA key, ID XXXXXXXX, created 2004-06-08 Enter passphrase: (passphrase) <--- foo@nina.jpの秘密鍵のパスフレーズを入力 Command> q <--- q(uit)で抜ける Save changes? y <--- 鍵にくわえた変更を保存するならyを
公開鍵の信頼度設定
公開鍵の信頼度設定
他人の公開鍵へ信頼度を設定する。
下の例は、foo@nina.jpさんがgpg@nina.jpさんの公開鍵に信頼度を設定する場合。 gpg@nina.jpの公開鍵はあらかじめインポートしておく(インポートを参照)こと。
C:\> gpg -u foo@nina.jp --edit-key gpg@nina.jp gpg (GnuPG) 1.2.4; Copyright (C) 2003 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. Secret key is available. gpg: checking the trustdb gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1 pub XXXXX/XXXXXXXX created: 2004-06-13 expires: never trust: -/- sub XXXXX/XXXXXXXX created: 2004-06-13 expires: never (1). GnuPG <gpg@nina.jp> Command> trust <--- trustコマンドで公開鍵の信頼度を設定 pub XXXXX/XXXXXXXX created: 2004-06-13 expires: never trust: -/- sub XXXXX/XXXXXXXX created: 2004-06-13 expires: never (1). GnuPG <gpg@nina.jp> Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources...)? 1 = Don't know 知らない 2 = I do NOT trust 信頼しない 3 = I trust marginally ほんの少し信頼する 4 = I trust fully 完全に信頼する 5 = I trust ultimately むちゃくちゃ信頼する m = back to the main menu Your decision? 5 <--- 公開鍵をどれぐらい信頼するか? pub 1024D/99DF2E31 created: 2004-06-13 expires: never trust: f/- <--- 信頼度がf(ully)に変わった sub 1024g/F9617E75 created: 2004-06-13 expires: never (1). GnuPG <gpg@nina.jp> Please note that the shown key validity is not necessarily correct unless you restart the program. Command> q <--- q(uit)で抜ける
署名と検証
ファイルに署名をすることで、改ざんをチェックすることができる。
クリアテキスト署名
ファイルへクリアテキストで署名する。 署名するには、自分の秘密鍵を使用する。
-uでUIDを指定する。 clearsign.txtファイルに署名したファイルclearsign.ascが作成される。
C:\> gpg -u gpg@nina.jp --clearsign clearsign.txt You need a passphrase to unlock the secret key for user: "GnuPG <gpg@nina.jp>" 1024-bit DSA key, ID XXXXXXXX, created 2004-06-13 Enter passphrase: (passphrase) <--- 秘密鍵のパスフレーズ
clearsign.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
こんにちは
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (MingW32)
iD8DBQFA0EYrd6YdsZnfLjERAh2mAJ0cnDPcGiigUvzDTd5gZgtCE3EftACgmoNd
IPT4xJdEmnHT0hvW1NC1VcI=
=az+g
-----END PGP SIGNATURE-----
署名の検証
署名を検証するには、署名した人の公開鍵が必要。 あらかじめインポートしておく(インポートを参照)こと。
C:\> gpg -d clearsign.asc こんにちは gpg: Signature made 06/16/04 22:16:15 using DSA key ID XXXXXXXX gpg: Good signature from "GnuPG <gpg@nina.jp>" <--- 正しい署名 Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
内容を改ざんした場合は、BAD signatureになる。
C:\> gpg -d clearsign.asc こんにちわ gpg: Signature made 06/16/04 22:16:15 using DSA key ID XXXXXXXX gpg: BAD signature from "GnuPG <gpg@nina.jp>" <--- 正しくない署名
暗号化と復号化
ファイルを暗号化して、安全にメールを送受信する。
暗号化
ファイルを暗号化する。 暗号化するには、相手の公開鍵を使用する。 相手の公開鍵をインポートしておく(インポートを参照)こと。
-rで相手のUIDを指定する。 encrypt.txtファイルを暗号化したファイルencrypt.ascが作成される。
C:\> gpg -a -r gpg@nina.jp -e clearsign.txt gpg: XXXXXXXX: There is no indication that this key really belongs to the owner XXXXX/XXXXXXXX 2004-06-13 "GnuPG <gpg@nina.jp>" Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 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? y <--- 公開鍵の信頼度がultimatelyでない場合は、聞いてくる
encrypt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.2.4 (MingW32)
hQEOA8ga61n5YX51EAP9G8bz4XA7qgOC44xJg9EDGM61GzdNsbx3AqJDHmpE7/Is
2nEFrI9QRGUzxuN4h9BsoN++45mtSMt7CBhSFXgaY6uZA2Coinr1/af0ZEFX76r4
T3GTQhMvzzmamoaZNPSBhredSS94RCz6HphGg04JczHYICnFeVcpWhZ13v4F0+QD
/0KX2gn8EzBuHZDXrt5JAQ62PN6I7OTNZmCOvPqeLllvgIP8ibfnxtVaYu4NiuKZ
/9avfFQDdqqqSEYg7VqQ48VmdVxNzus22QU1PBp22i8GtennLnm45gwVvFl+mDio
cXWSIrva6rFtqEo4H5YvwEAKR1bpOPouVgXYHqwsJ0lM0lAB5OnqGpUxzUB/mXTD
7/QjsADtZrBAgntRSsr+90ZgWRzt2eSOv8d3UMG/CJbAj7FJrcKJSW4+LHE7Bo9c
T59JwKF/NYwJQ9OQjU3QmY6vFw==
=7zxN
-----END PGP MESSAGE-----
復号化
ファイルを復号化する。 復号化するには、自分の秘密鍵を使用する。
復号化された結果は、標準出力に出力される。
C:\> gpg -d encrypt.asc You need a passphrase to unlock the secret key for user: "GnuPG <gpg@nina.jp>" 1024-bit ELG-E key, ID XXXXXXXX, created 2004-06-13 (main key ID XXXXXXXX) Enter passphrase: (passphrase) <--- 秘密鍵のパスフレーズ gpg: encrypted with 1024-bit ELG-E key, ID XXXXXXXX, created 2004-06-13 "GnuPG <gpg@nina.jp>" こんにちは
復号化された結果をファイルに保存するには、リダイレクトを使用する。
C:\> gpg -d encrypt.asc > encrypt.txt
encrypt.txt
こんにちは
署名+暗号化と検証+復号化
ファイルに署名をすることで、改ざんをチェックすることができる。 ファイルを暗号化して、安全にメールを送受信する。
署名+暗号化
ファイルに署名して暗号化する。 署名するには、自分の秘密鍵を使用する。 暗号化するには、相手の公開鍵を使用する。 相手の公開鍵をインポートしておく(インポートを参照)こと。
-uで自分のUIDを指定する。 -rで相手のUIDを指定する。 se.txtファイルを暗号化したファイルse.ascが作成される。
C:\> gpg -u gpg@nina.jp -r foo@nina.jp -ase se.txt You need a passphrase to unlock the secret key for user: "GnuPG <gpg@nina.jp>" 1024-bit DSA key, ID XXXXXXXX, created 2004-06-13 Enter passphrase: (passphrase) <--- 秘密鍵のパスフレーズ
se.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.2.4 (MingW32)
hQEOA5YGsoNe11nGEAP/QMezo+lSvxdNOpXyQdvuqA9HSkSMuXI6AaqoIL7Is8ot
G8oaqAvXIKCR4DcFt0AEIC/Tom4rThM4tWyUGywh0xZMNsfnzcNLvar/B0PlQSJ3
h+FuWrn8UBZBQQbuS6NX0T49ZzYDzOhW92AvFDN5D3BwBOg1dAyyFQ/4DCZvVMwE
AINl3ejSHBMbKmS26G4PxkFfeokfevSCwvxbxwCmu+FLmeQ7SkwQokvKwoYe6Q9+
kGFqhdfJDZyTQLdqdw3uIfer5Hez1U8wlJVSnu+Tq32lLgdpZ//tVYMfwuwGlz8r
ZZKltpeAmkOpwDwStQRO2SIrWXtBaRDejmR3donYf3y20psBAv2TAQpagNFbZPv/
IdWL4FKkGey2c5fFwbEI6PkELgVA+cNoRfOi+zUnb8AdgHlpFeFgOx/h81hfHF+u
tmWJNnRmMGftI5XFGezyx+WQ8/fLiZoq/QHvxAatB2a0wo7ICkRWyEZduAnAHaNY
NPw0pMl8cfOJgWLL3dWvLAgjZ0Qu3AqYnQvl01bB4elm2cRJjFSaGYU0kxEfoQ==
=1+tW
-----END PGP MESSAGE-----
検証+復号化
ファイルの署名を検証して復号化する。 署名を検証するには、相手の公開鍵を使用する。 復号化するには、自分の秘密鍵を使用する。
復号化された結果は、標準出力に出力される。
C:\> gpg -d se.asc You need a passphrase to unlock the secret key for user: "Foo <foo@nina.jp>" 1024-bit ELG-E key, ID XXXXXXXX, created 2004-06-16 (main key ID XXXXXXXX) Enter passphrase: (passphrase) <--- 秘密鍵のパスワード gpg: encrypted with 1024-bit ELG-E key, ID XXXXXXXX, created 2004-06-16 "Foo <foo@nina.jp>" こんにちは gpg: Signature made 06/16/04 22:38:52 using DSA key ID XXXXXXXX gpg: Good signature from "GnuPG <gpg@nina.jp>" <--- 正しい署名 gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
復号化された結果をファイルに保存するには、リダイレクトを使用する。
C:\> gpg -d se.asc > se.txt
se.txt
こんにちは