GnuPGのコマンド

[サーバの実験室 Windows]

作成 : 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

こんにちは

[サーバの実験室 Windows]