gnupg

提供: FreeBSD入門
2014年3月22日 (土) 20:27時点におけるDaemon (トーク | 投稿記録)による版

移動: 案内検索
スポンサーリンク

gnupg (GnuPG) とは、PGP を置き換えるための完全でフリーな実装です。

読み方

gnupg
ぐにゅーぴーじー

概要

gnupg は、特許である IDEA アルゴリズムを使用しません。IDEAは、制限なしに利用できません。gnupgは、RFC2440(OpenPGP)準拠のアプリケーションです。

インストール

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

sudo pkg install gnupg pinentry-curses
Updating repository catalogue
The following 6 packages will be installed:
 
        Installing libgpg-error: 1.12
        Installing libgcrypt: 1.5.3
        Installing libassuan: 2.1.1
        Installing pth: 2.0.7
        Installing libksba: 1.3.0
        Installing gnupg: 2.0.22
 
The installation will require 10 MB more space
 
2 MB to be downloaded
 
Proceed with installing packages [y/N]: y
libgpg-error-1.12.txz                  100%   71KB  71.5KB/s  71.5KB/s   00:01
libgcrypt-1.5.3.txz                    100%  406KB 202.8KB/s 315.6KB/s   00:02
libassuan-2.1.1.txz                    100%   87KB  87.4KB/s  87.4KB/s   00:01
pth-2.0.7.txz                          100%  146KB 146.1KB/s 146.1KB/s   00:01
libksba-1.3.0.txz                      100%  149KB 149.0KB/s 149.0KB/s   00:01
gnupg-2.0.22.txz                       100% 1242KB 248.4KB/s 461.9KB/s   00:05
Checking integrity... done
[1/6] Installing libgpg-error-1.12... done
[2/6] Installing libgcrypt-1.5.3... done
[3/6] Installing libassuan-2.1.1... done
[4/6] Installing pth-2.0.7... done
[5/6] Installing libksba-1.3.0... done
[6/6] Installing gnupg-2.0.22... done
###############################################################################
                                A T T E N T I O N
 
In order to use gpg-agent, you need to install a pinentry dialog.
 
The following ports of pinentry dialogs are available:
 
security/pinentry-curses        (ncurses based dialog)
security/pinentry-gtk           (GTK 1.2 based dialog)
security/pinentry-gtk2          (GTK 2.x based dialog)
security/pinentry-qt            (QT3 based dialog)
security/pinentry-q4            (QT4 based dialog)
 
###############################################################################

設定

gnupgの設定ファイルや鍵は、~/.gnupg に格納されます。 設定ファイルは、 ~/.gnupg/gpg.conf です。

使い方

コマンドラインオプション

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

関連項目

  • gnupg



スポンサーリンク