「GNU Privacy Guard」の版間の差分

提供: セキュリティ
移動: 案内検索
(関連項目)
行8: 行8:
  
 
== 概要 ==
 
== 概要 ==
 +
[[GNU Privacy Guard]] (GPG, GnuPG))とは、[[Pretty Good Privacy]](PGP)の別の実装です。
 +
 +
[[gpg]]は、以下のアルゴリズムをサポートしています。
 +
;[[公開鍵]]: RSA, ELG, DSA
 +
;[[暗号アルゴリズム|暗号方式]]: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
 +
;[[ハッシュ]]: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
 +
;[[圧縮]]: 無圧縮, [[ZIP]], ZLIB, BZIP2
  
 
== インストール ==
 
== インストール ==
 
[[Linux]]にデフォルトでインストールされています。
 
[[Linux]]にデフォルトでインストールされています。
 +
{{pkg|gnupg pinentry-curses}}
 
== 使い方 ==
 
== 使い方 ==
 
=== gpg ===
 
=== gpg ===
行92: 行100:
  
 
Please report bugs to <http://bugs.gnupg.org>.
 
Please report bugs to <http://bugs.gnupg.org>.
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="bash">
 +
gpg (GnuPG) 2.0.22
 +
libgcrypt 1.5.3
 +
Copyright (C) 2013 Free Software Foundation, Inc.
 +
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 +
This is free software: you are free to change and redistribute it.
 +
There is NO WARRANTY, to the extent permitted by law.
 +
 +
Home: ~/.gnupg
 +
サポートしているアルゴリズム:
 +
公開鍵: RSA, ELG, DSA, ?, ?
 +
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
 +
      TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
 +
ハッシュ: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
 +
圧縮: 無圧縮, ZIP, ZLIB, BZIP2
 +
 +
形式: gpg [オプション] [ファイル]
 +
署名、検査、暗号化や復号
 +
デフォルトの操作は、入力データに依存
 +
 +
コマンド:
 +
 +
-s, --sign                署名を作成
 +
    --clearsign            クリア・テクスト署名を作成
 +
-b, --detach-sign          分離署名を作成
 +
-e, --encrypt              データを暗号化
 +
-c, --symmetric            暗号化には共通鍵暗号方式のみを使用
 +
-d, --decrypt              データを復号 (デフォルト)
 +
    --verify              署名を検証
 +
-k, --list-keys            鍵の一覧
 +
    --list-sigs            鍵と署名の一覧
 +
    --check-sigs          鍵署名の検査と一覧
 +
    --fingerprint          鍵とフィンガー・プリントの一覧
 +
-K, --list-secret-keys    秘密鍵の一覧
 +
    --gen-key              新しい鍵対を生成
 +
    --gen-revoke          失効証明書を生成
 +
    --delete-keys          公開鍵リングから鍵を削除
 +
    --delete-secret-keys  秘密鍵リングから鍵を削除
 +
    --sign-key            鍵に署名
 +
    --lsign-key            鍵へ内部的に署名
 +
    --edit-key            鍵への署名や編集
 +
    --passwd              パスフレーズの変更
 +
    --export              鍵をエクスポートする
 +
    --send-keys            鍵サーバに鍵をエクスポートする
 +
    --recv-keys            鍵サーバから鍵をインポートする
 +
    --search-keys          鍵サーバの鍵を検索する
 +
    --refresh-keys        鍵サーバから鍵を全部更新する
 +
    --import              鍵のインポート/マージ
 +
    --card-status          カード・ステイタスを表示
 +
    --card-edit            カードのデータを変更
 +
    --change-pin          カードのPINを変更
 +
    --update-trustdb      信用データベースを更新
 +
    --print-md            メッセージ・ダイジェストを表示
 +
    --server              サーバ・モードで実行
 +
 +
オプション:
 +
 +
-a, --armor                ASCII形式の外装を作成
 +
-r, --recipient USER-ID    USER-ID用に暗号化
 +
-u, --local-user USER-ID  署名や復号にこのUSER-IDを使用
 +
-z N                      圧縮レベルをNに設定 (0は非圧縮)
 +
    --textmode            正準テキスト・モードを使用
 +
-o, --output FILE          出力をFILEに書き出す
 +
-v, --verbose              冗長
 +
-n, --dry-run              無変更
 +
-i, --interactive          上書き前に確認
 +
    --openpgp              厳密なOpenPGPの振舞を採用
 +
 +
(コマンドとオプション全部の一覧は、マニュアル・ページをご覧ください)
 +
 +
例:
 +
 +
-se -r Bob [ファイル]      ユーザBobへ署名と暗号化
 +
--clearsign [ファイル]    クリア・テクスト署名を作成
 +
--detach-sign [ファイル]  分離署名を作成
 +
--list-keys [名前]        鍵を表示
 +
--fingerprint [名前]      フィンガー・プリントを表示
 +
 +
バグは <http://bugs.gnupg.org> までご報告ください。
 
</syntaxhighlight>
 
</syntaxhighlight>
 
=== 鍵の作成 ===
 
=== 鍵の作成 ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
[user@u1 ~]$ gpg --gen-key
+
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
+
 
This is free software: you are free to change and redistribute it.
 
This is free software: you are free to change and redistribute it.
 
There is NO WARRANTY, to the extent permitted by law.
 
There is NO WARRANTY, to the extent permitted by law.
  
 +
ご希望の鍵の種類を選択してください:
 +
  (1) RSA と RSA (デフォルト)
 +
  (2) DSA と Elgamal
 +
  (3) DSA (署名のみ)
 +
  (4) RSA (署名のみ)
 +
あなたの選択は?
 +
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
 +
鍵長は? (2048)
 +
要求された鍵長は2048ビット
 +
鍵の有効期限を指定してください。
 +
        0 = 鍵は無期限
 +
      <n>  = 鍵は n 日間で期限切れ
 +
      <n>w = 鍵は n 週間で期限切れ
 +
      <n>m = 鍵は n か月間で期限切れ
 +
      <n>y = 鍵は n 年間で期限切れ
 +
鍵の有効期間は? (0)
 +
は無期限です
 +
これで正しいですか? (y/N) y
 +
 +
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。
 +
 +
本名: kaoru
 +
電子メール・アドレス: foo@bar.com
 +
コメント: test
 +
次のユーザIDを選択しました:
 +
    "kaoru (test) <foo@bar.com>"
 +
 +
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
 +
秘密鍵を保護するためにパスフレーズがいります。
 +
 +
 +
                ┌─────────────────────────────────────────────────┐
 +
                │ このパスフレーズをもう一度入力してください      │
 +
                │                                                │
 +
                │ パスフレーズ ___________________________________│
 +
                │                                                │
 +
                │      <OK>                          <Cancel>    │
 +
                └─────────────────────────────────────────────────┘
 +
 +
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、
 +
ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、
 +
乱数生成器に十分なエントロピーを供給する機会を与えることができます。
 +
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、
 +
ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生成器に
 +
十分なエントロピーを供給する機会を与えることができます。
 +
 +
gpg: /home/kaoru/.gnupg/trustdb.gpg: 信用データベースができました
 +
gpg: 鍵EB939698を絶対的に信用するよう記録しました
 +
公開鍵と秘密鍵を作成し、署名しました。
 +
gpg: 信用データベースの検査
 +
gpg: 「ギリギリの信用」3、「全面的信用」1、PGP信用モデル
 +
gpg: 深さ: 0  有効性:  1
 +
署名:  0  信用: 0-, 0q, 0n, 0m, 0f, 1u pub  2048R/EB939698 2014-03-22
 +
フィンガー・プリント = 2B77 8105 570A 1A16 3B6A  2969 1AFC 0BE7 EB93 9698 uid
 +
kaoru (test) <foo@bar.com> sub  2048R/436B4C25 2014-03-22
 +
</syntaxhighlight>
 +
 +
=== 鍵の確認 ===
 +
==== 秘密鍵 ====
 +
<syntaxhighlight lang="bash">
 +
gpg --list-secret-keys
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="bash">
 +
$ gpg --list-secret-keys
 +
/home/kaoru/.gnupg/secring.gpg
 +
-------------------------------
 +
sec  2048R/EB939698 2014-03-22
 +
uid                  kaoru (test) <foo@bar.com>
 +
ssb  2048R/436B4C25 2014-03-22
 +
 +
</syntaxhighlight>
 +
==== 公開鍵 ====
 +
<syntaxhighlight lang="bash">
 +
$ gpg --list-keys
 +
/home/kaoru/.gnupg/pubring.gpg
 +
-------------------------------
 +
pub  2048R/EB939698 2014-03-22
 +
uid                  kaoru (test) <foo@bar.com>
 +
sub  2048R/436B4C25 2014-03-22
 +
</syntaxhighlight>
 +
=== 公開鍵のエクスポート ===
 +
[[公開鍵]]をエクスポートします。
 +
<syntaxhighlight lang="bash">
 +
$ gpg -o ./kaoru.pub --export kaoru
 +
$ ls kaoru.pub
 +
kaoru.pub
 +
$ file kaoru.pub
 +
kaoru.pub: GPG key public ring
 +
</syntaxhighlight>
 +
=== 秘密鍵のエクスポート ===
 +
[[秘密鍵]]([[プライベート鍵]])をエクスポートするときは、以下のコマンドで行います。
 +
<syntaxhighlight lang="bash">
 +
$ gpg -o file.secret --export-secret-key kaoru
 +
</syntaxhighlight>
 +
 +
=== 秘密鍵のインポート ===
 +
<syntaxhighlight lang="bash">
 +
$ gpg --import file.secret
 +
</syntaxhighlight>
 +
=== 公開鍵のインポート ===
 +
user で kaoru の公開鍵 kaoru.pub をインポートします。
 +
<syntaxhighlight lang="bash">
 +
% gpg --import kaoru.pub
 
gpg: directory `/home/user/.gnupg' created
 
gpg: directory `/home/user/.gnupg' created
 
gpg: new configuration file `/home/user/.gnupg/gpg.conf' created
 
gpg: new configuration file `/home/user/.gnupg/gpg.conf' created
行105: 行297:
 
gpg: keyring `/home/user/.gnupg/secring.gpg' created
 
gpg: keyring `/home/user/.gnupg/secring.gpg' created
 
gpg: keyring `/home/user/.gnupg/pubring.gpg' created
 
gpg: keyring `/home/user/.gnupg/pubring.gpg' created
Please select what kind of key you want:
+
gpg: /home/user/.gnupg/trustdb.gpg: trustdb created
  (1) RSA and RSA (default)
+
gpg: key EB939698: public key "kaoru (test) <foo@bar.com>" imported
  (2) DSA and Elgamal
+
gpg: Total number processed: 1
  (3) DSA (sign only)
+
gpg:              imported: 1  (RSA: 1)
  (4) RSA (sign only)
+
</syntaxhighlight>
Your selection? 1
+
RSA keys may be between 1024 and 4096 bits long.
+
What keysize do you want? (2048) 4096
+
Requested keysize is 4096 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
+
Key does not expire at all
+
Is this correct? (y/N) y
+
  
GnuPG needs to construct a user ID to identify your key.
+
=== データの暗号化 ===
 +
テスト用のファイルを用意します。
 +
<syntaxhighlight lang="bash">
 +
% echo 'clear text' > test.txt
 +
</syntaxhighlight>
  
Real name: Foo Bar
+
使用する鍵を指定して実行します。
Email address: foo@bar.com
+
ユーザー userが kaoru の鍵を用いて、test.txtを暗号化します。test.txt.gpgというファイルが作成されます。
Comment: for user
+
<syntaxhighlight lang="bash">
You selected this USER-ID:
+
user@a1:~/tmp % gpg -e -r kaoru test.txt
    "Foo Bar (for user) <foo@bar.com>"
+
gpg: 436B4C25: There is no assurance this key belongs to the named user
  
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
+
pub  2048R/436B4C25 2014-03-22 kaoru (test) <foo@bar.com>
 +
Primary key fingerprint: 2B77 8105 570A 1A16 3B6A  2969 1AFC 0BE7 EB93 9698
 +
      Subkey fingerprint: 7C0E 6415 97E8 747F D5B8  F394 F2C3 6406 436B 4C25
 +
 
 +
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/N) y
 +
user@a1:~/tmp % ls -l
 +
total 12
 +
-rw-r--r--  1 user  user  1178 Mar 22 19:18 kaoru.pub
 +
-rw-r--r--  1 user  user    11 Mar 22 19:21 test.txt
 +
-rw-r--r--  1 user  user  351 Mar 22 19:22 test.txt.gpg
 +
user@a1:~/tmp % file test.txt.gpg
 +
test.txt.gpg: data
 +
</syntaxhighlight>
 +
=== データの復号化 ===
 +
復号化するときに、[[パスフレーズ]]の入力画面が表示されます。
 +
復号したデータの出力ファイルを -o オプションで指定します。出力ファイルを指定しない場合は、[[標準出力]]に表示されます。
 +
<syntaxhighlight lang="bash">
 +
$ gpg -r kaoru -d -o test.txt test.txt.gpg
 +
 
 +
ここで、パスフレーズの入力のダイアログが表示されます。
 +
 
 +
gpg: 2048-ビットRSA鍵, ID 436B4C25, 日付2014-03-22に暗号化されました
 +
      "kaoru (test) <foo@bar.com>"
 +
$ ls -l
 +
total 12
 +
-rw-r--r--  1 kaoru  user  1178  3月 22 19:14 kaoru.pub
 +
-rw-r--r--  1 kaoru  user    11  3月 22 19:25 test.txt
 +
-rw-r--r--  1 kaoru  user  351  3月 22 19:24 test.txt.gpg
 +
$ cat test.txt
 +
clear text
 +
</syntaxhighlight>
 +
=== 鍵の削除 ===
 +
[[公開鍵]]と[[秘密鍵]]の削除方法は、以下の通りです。
 +
<syntaxhighlight lang="bash">
 +
$ gpg --delete-keys keyname
 +
$ gpg --delete-secret-keys keyname
 +
</syntaxhighlight>
 +
 
 +
== FAQ ==
 +
=== can't connect to the PIN entry module ===
 +
pinentry-curses を入れてない場合、以下のエラーで gpg --gen-key が終了します。
 +
<syntaxhighlight lang="bash">
 +
gpg-agent[40930]: can't connect to the PIN entry module: IPCの接続コールに失敗しました
 +
gpg-agent[40930]: command get_passphrase failed: PIN 入力がありません
 +
gpg: エージェントに問題: PIN 入力がありません
 +
gpg: 鍵の生成が取り消されました。
 +
[1]    40913 exit 2    gpg --gen-key
 +
</syntaxhighlight>
 +
 
 +
英語で表示される場合は、以下のエラーメッセージになります。
 +
<syntaxhighlight lang="bash">
 
You need a Passphrase to protect your secret key.
 
You need a Passphrase to protect your secret key.
  
行142: 行379:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== FAQ ==
 
 
=== can't connect to .gnupg/S.gpg-agent: No such file or directory ===
 
=== can't connect to .gnupg/S.gpg-agent: No such file or directory ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行170: 行406:
 
== 関連項目 ==
 
== 関連項目 ==
 
{{gpg}}
 
{{gpg}}
<!-- vim: filetype=mediawiki -->
+
<!-- vim: filetype=mediawiki
 +
-->

2014年3月22日 (土) 20:18時点における版

GNU Privacy Guard (GPG, GnuPG))とは、Pretty Good Privacy(PGP)の別の実装です。

読み方

GNU Privacy Guard
ぐにゅー ぷらいばしー がーど
GPG
じーぴーじー
GnuPG
ぐにゅーぴーじー

概要

GNU Privacy Guard (GPG, GnuPG))とは、Pretty Good Privacy(PGP)の別の実装です。

gpgは、以下のアルゴリズムをサポートしています。

公開鍵
RSA, ELG, DSA
暗号方式
IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ
MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮
無圧縮, ZIP, ZLIB, BZIP2

インストール

Linuxにデフォルトでインストールされています。

FreeBSDにインストールする場合

pkgコマンドでインストールする場合

sudo pkg install gnupg pinentry-curses

使い方

gpg

$ gpg --help
gpg (GnuPG) 2.0.14
libgcrypt 1.4.5
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128,
        CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
 
Syntax: gpg [options] [files]
sign, check, encrypt or decrypt
default operation depends on the input data
 
Commands:
 
 -s, --sign                 make a signature
     --clearsign            make a clear text signature
 -b, --detach-sign          make a detached signature
 -e, --encrypt              encrypt data
 -c, --symmetric            encryption only with symmetric cipher
 -d, --decrypt              decrypt data (default)
     --verify               verify a signature
 -k, --list-keys            list keys
     --list-sigs            list keys and signatures
     --check-sigs           list and check key signatures
     --fingerprint          list keys and fingerprints
 -K, --list-secret-keys     list secret keys
     --gen-key              generate a new key pair
     --delete-keys          remove keys from the public keyring
     --delete-secret-keys   remove keys from the secret keyring
     --sign-key             sign a key
     --lsign-key            sign a key locally
     --edit-key             sign or edit a key
     --gen-revoke           generate a revocation certificate
     --export               export keys
     --send-keys            export keys to a key server
     --recv-keys            import keys from a key server
     --search-keys          search for keys on a key server
     --refresh-keys         update all keys from a keyserver
     --import               import/merge keys
     --card-status          print the card status
     --card-edit            change data on a card
     --change-pin           change a card's PIN
     --update-trustdb       update the trust database
     --print-md             print message digests
     --server               run in server mode
 
Options:
 
 -a, --armor                create ascii armored output
 -r, --recipient USER-ID    encrypt for USER-ID
 -u, --local-user USER-ID   use USER-ID to sign or decrypt
 -z N                       set compress level to N (0 disables)
     --textmode             use canonical text mode
 -o, --output FILE          write output to FILE
 -v, --verbose              verbose
 -n, --dry-run              do not make any changes
 -i, --interactive          prompt before overwriting
     --openpgp              use strict OpenPGP behavior
 
(See the man page for a complete listing of all commands and options)
 
Examples:
 
 -se -r Bob [file]          sign and encrypt for user Bob
 --clearsign [file]         make a clear text signature
 --detach-sign [file]       make a detached signature
 --list-keys [names]        show keys
 --fingerprint [names]      show fingerprints
 
Please report bugs to <http://bugs.gnupg.org>.
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 
Home: ~/.gnupg
サポートしているアルゴリズム:
公開鍵: RSA, ELG, DSA, ?, ?
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
      TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2
 
形式: gpg [オプション] [ファイル]
署名、検査、暗号化や復号
デフォルトの操作は、入力データに依存
 
コマンド:
 
 -s, --sign                 署名を作成
     --clearsign            クリア・テクスト署名を作成
 -b, --detach-sign          分離署名を作成
 -e, --encrypt              データを暗号化
 -c, --symmetric            暗号化には共通鍵暗号方式のみを使用
 -d, --decrypt              データを復号 (デフォルト)
     --verify               署名を検証
 -k, --list-keys            鍵の一覧
     --list-sigs            鍵と署名の一覧
     --check-sigs           鍵署名の検査と一覧
     --fingerprint          鍵とフィンガー・プリントの一覧
 -K, --list-secret-keys     秘密鍵の一覧
     --gen-key              新しい鍵対を生成
     --gen-revoke           失効証明書を生成
     --delete-keys          公開鍵リングから鍵を削除
     --delete-secret-keys   秘密鍵リングから鍵を削除
     --sign-key             鍵に署名
     --lsign-key            鍵へ内部的に署名
     --edit-key             鍵への署名や編集
     --passwd               パスフレーズの変更
     --export               鍵をエクスポートする
     --send-keys            鍵サーバに鍵をエクスポートする
     --recv-keys            鍵サーバから鍵をインポートする
     --search-keys          鍵サーバの鍵を検索する
     --refresh-keys         鍵サーバから鍵を全部更新する
     --import               鍵のインポート/マージ
     --card-status          カード・ステイタスを表示
     --card-edit            カードのデータを変更
     --change-pin           カードのPINを変更
     --update-trustdb       信用データベースを更新
     --print-md             メッセージ・ダイジェストを表示
     --server               サーバ・モードで実行
 
オプション:
 
 -a, --armor                ASCII形式の外装を作成
 -r, --recipient USER-ID    USER-ID用に暗号化
 -u, --local-user USER-ID   署名や復号にこのUSER-IDを使用
 -z N                       圧縮レベルをNに設定 (0は非圧縮)
     --textmode             正準テキスト・モードを使用
 -o, --output FILE          出力をFILEに書き出す
 -v, --verbose              冗長
 -n, --dry-run              無変更
 -i, --interactive          上書き前に確認
     --openpgp              厳密なOpenPGPの振舞を採用
 
(コマンドとオプション全部の一覧は、マニュアル・ページをご覧ください)
 
例:
 
 -se -r Bob [ファイル]      ユーザBobへ署名と暗号化
 --clearsign [ファイル]     クリア・テクスト署名を作成
 --detach-sign [ファイル]   分離署名を作成
 --list-keys [名前]         鍵を表示
 --fingerprint [名前]       フィンガー・プリントを表示
 
バグは <http://bugs.gnupg.org> までご報告ください。

鍵の作成

gpg (GnuPG) 2.0.22; Copyright (C) 2013 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 と RSA (デフォルト)
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
あなたの選択は?
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (2048)
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)
 は無期限です
これで正しいですか? (y/N) y
 
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。
 
本名: kaoru
電子メール・アドレス: foo@bar.com
コメント: test
次のユーザIDを選択しました:
    "kaoru (test) <foo@bar.com>"
 
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
秘密鍵を保護するためにパスフレーズがいります。
 
 
                ┌─────────────────────────────────────────────────┐
                │ このパスフレーズをもう一度入力してください      │
                │                                                 │
                │ パスフレーズ ___________________________________│
                │                                                 │
                │      <OK>                           <Cancel>    │
                └─────────────────────────────────────────────────┘
 
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、
ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、
乱数生成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、
ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生成器に
十分なエントロピーを供給する機会を与えることができます。 
 
gpg: /home/kaoru/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵EB939698を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。
gpg: 信用データベースの検査
gpg: 「ギリギリの信用」3、「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1
署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u pub   2048R/EB939698 2014-03-22
フィンガー・プリント = 2B77 8105 570A 1A16 3B6A  2969 1AFC 0BE7 EB93 9698 uid
kaoru (test) <foo@bar.com> sub   2048R/436B4C25 2014-03-22

鍵の確認

秘密鍵

gpg --list-secret-keys
$ gpg --list-secret-keys
/home/kaoru/.gnupg/secring.gpg
-------------------------------
sec   2048R/EB939698 2014-03-22
uid                  kaoru (test) <foo@bar.com>
ssb   2048R/436B4C25 2014-03-22

公開鍵

$ gpg --list-keys
/home/kaoru/.gnupg/pubring.gpg
-------------------------------
pub   2048R/EB939698 2014-03-22
uid                  kaoru (test) <foo@bar.com>
sub   2048R/436B4C25 2014-03-22

公開鍵のエクスポート

公開鍵をエクスポートします。

$ gpg -o ./kaoru.pub --export kaoru
$ ls kaoru.pub
kaoru.pub
$ file kaoru.pub
kaoru.pub: GPG key public ring

秘密鍵のエクスポート

秘密鍵(プライベート鍵)をエクスポートするときは、以下のコマンドで行います。

$ gpg -o file.secret --export-secret-key kaoru

秘密鍵のインポート

$ gpg --import file.secret

公開鍵のインポート

user で kaoru の公開鍵 kaoru.pub をインポートします。

% gpg --import kaoru.pub
gpg: directory `/home/user/.gnupg' created
gpg: new configuration file `/home/user/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/user/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/user/.gnupg/secring.gpg' created
gpg: keyring `/home/user/.gnupg/pubring.gpg' created
gpg: /home/user/.gnupg/trustdb.gpg: trustdb created
gpg: key EB939698: public key "kaoru (test) <foo@bar.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

データの暗号化

テスト用のファイルを用意します。

% echo 'clear text' > test.txt

使用する鍵を指定して実行します。 ユーザー userが kaoru の鍵を用いて、test.txtを暗号化します。test.txt.gpgというファイルが作成されます。

user@a1:~/tmp % gpg -e -r kaoru test.txt
gpg: 436B4C25: There is no assurance this key belongs to the named user
 
pub  2048R/436B4C25 2014-03-22 kaoru (test) <foo@bar.com>
 Primary key fingerprint: 2B77 8105 570A 1A16 3B6A  2969 1AFC 0BE7 EB93 9698
      Subkey fingerprint: 7C0E 6415 97E8 747F D5B8  F394 F2C3 6406 436B 4C25
 
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/N) y
user@a1:~/tmp % ls -l
total 12
-rw-r--r--  1 user  user  1178 Mar 22 19:18 kaoru.pub
-rw-r--r--  1 user  user    11 Mar 22 19:21 test.txt
-rw-r--r--  1 user  user   351 Mar 22 19:22 test.txt.gpg
user@a1:~/tmp % file test.txt.gpg
test.txt.gpg: data

データの復号化

復号化するときに、パスフレーズの入力画面が表示されます。 復号したデータの出力ファイルを -o オプションで指定します。出力ファイルを指定しない場合は、標準出力に表示されます。

$ gpg -r kaoru -d -o test.txt test.txt.gpg
 
ここで、パスフレーズの入力のダイアログが表示されます。
 
gpg: 2048-ビットRSA鍵, ID 436B4C25, 日付2014-03-22に暗号化されました
      "kaoru (test) <foo@bar.com>"
$ ls -l
total 12
-rw-r--r--  1 kaoru  user  1178  322 19:14 kaoru.pub
-rw-r--r--  1 kaoru  user    11  322 19:25 test.txt
-rw-r--r--  1 kaoru  user   351  322 19:24 test.txt.gpg
$ cat test.txt
clear text

鍵の削除

公開鍵秘密鍵の削除方法は、以下の通りです。

$ gpg --delete-keys keyname
$ gpg --delete-secret-keys keyname

FAQ

can't connect to the PIN entry module

pinentry-curses を入れてない場合、以下のエラーで gpg --gen-key が終了します。

gpg-agent[40930]: can't connect to the PIN entry module: IPCの接続コールに失敗しました
gpg-agent[40930]: command get_passphrase failed: PIN 入力がありません
gpg: エージェントに問題: PIN 入力がありません
gpg: 鍵の生成が取り消されました。
[1]    40913 exit 2     gpg --gen-key

英語で表示される場合は、以下のエラーメッセージになります。

You need a Passphrase to protect your secret key.
 
can't connect to `/home/user/.gnupg/S.gpg-agent': No such file or directory
gpg-agent[3363]: directory `/home/user/.gnupg/private-keys-v1.d' created
gpg-agent[3363]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: Key generation canceled.

can't connect to .gnupg/S.gpg-agent: No such file or directory

can't connect to `/home/user/.gnupg/S.gpg-agent': No such file or directory

手動で、gpg-agentを起動します。

gpg-agent --daemon --enable-ssh-support --write-env-file "${HOME}/.gnupg/agent.info"

.bashrc で設定する場合は、以下の通りです。

if [ -f "${HOME}/.gnupg/agent.info" ]; then
        . "${HOME}/.gnupg/agent.info"
        export GPG_AGENT_INFO
        export SSH_AUTH_SOCK
        export SSH_AGENT_PID
fi
 
GPG_TTY=$(tty)
export GPG_TTY

gpg problem with the agent No pinentry

関連項目