320.2 高度な GPG
320.2 高度な GPG
重要度 4
説明 GPGの使用方法を知っていることが求められる。これには、鍵の生成、署名、鍵サーバへの発行も含まれる。複数の秘密鍵とIDの管理も含まれる。
主要な知識範囲
- GPGを使用した暗号化と署名
- 秘密鍵・公開鍵の管理
- GPGサーバの知識
- GPG の設定
重要なファイル、用語、ユーティリティ
- openssl
- RSA, DH 及び DSA
- SSL
- X.509
- CSR
- CRL
gpgとは?
GNU Privacy Guard (GnuPG) とは、Pretty Good Privacy (PGP) の別実装として、GPL に基づいた暗号化ソフトである。
OpenPGP 規格 (RFC4880) に完全準拠しているが、古い PGP との互換性は完全ではない。
gpgコマンド
書式
gpg [–homedir ディレクトリ名] [–options ファイル名] [オプション] サブコマンド [引数]
※ []は省略可能
gpg 主なサブコマンド
-d または –decrypt | データを複合 |
–delete-key [名前] | 公開鍵リングから鍵を削除 |
–edit-key | 鍵への署名または編集 |
-e または –encrypt | データを暗号化 |
-s [ファイル名] または –sign [ファイル名] | 署名を作成 |
–gen-key | 新しい鍵を作成 |
–gen-revoke [名前] | 指定した名前の失効証明書を作成 |
–list-key [名前] | 公開鍵リングに登録されている鍵情報を一覧表示 |
–list-piblic-keys [名前] | 公開鍵リングに登録されている鍵情報を一覧表示 |
–recv-keys [鍵ID] | 鍵サーバから鍵を読み込む |
–refresh-keys [鍵ID] | 鍵サーバに接続し、ローカルに保存している公開鍵を更新 |
–search-keys [名前] | 鍵サーバから鍵を探す |
–send-keys [鍵ID] | 鍵サーバに鍵を登録する |
–sign-key [名前] | 相手の公開鍵を自分の公開鍵で署名 |
–verify | [署名ファイル名] [検証ファイル名] 署名を検証 |
gpg 主なオプション
-homedir [ディレクトリ名] | GPGのホームディレクトリ |
-keyring [ファイル名] | キーリングの一覧に指定した鍵を加える |
-keyserver [サーバ名] | 鍵を検索に、指定した鍵サーバを用いる |
-o [フィアル名] または –output [ファイル名] | 指定したファイルに出力 |
–options [ファイル名] | 指定したファイルからオプションを読む |
例
+ 新しい鍵のペアを作成
※ ssh経由だと作成できないので実機でログインして作成する
# gpg --gen-key gpg (GnuPG) 2.0.14; Copyright (C) 2009 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 (署名のみ) # 「2」を入力 選択は? 2 DSA keys may be between 1024 and 3072 bits long. # 「2048」を入力 What keysize do you want? (2048) 要求された鍵長は2048ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 # 「0」を入力 鍵の有効期間は? (0) Key does not expire at all # 「y」を入力 これで正しいですか? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" # 本名: 「gpgtest」を入力 本名: gpgtest # 電子メール・アドレス: 「hoge@example.com」を入力 電子メール・アドレス: hoge@example.com コメント: 次のユーザーIDを選択しました: “gpgtest <hoge@example.com>” # 「O」を入力 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 [省略] # 「598939CF」が鍵ID gpg: 鍵598939CFを絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u pub 2048D/598939CF 2015-10-05 指紋 = CAD8 B6FB 2663 6103 8DBA 8A68 6BE5 3BC8 A2A4 EF37 uid gpgtest<xxxxxx@example.com> sub 2048g/F55060E7 2015-10-04 キーリングに登録されている鍵情報の一覧を表示する # gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048D/598939CF 2015-10-04 uid pgptest <xxxxxx@gamil.com> sub 2048g/F55060E7 2015-10-04 + 公開の信用度を設定 # gpg --edit-key 598939CF gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. 秘密鍵が使用できます。 pub 2048D/598939CF 作成: 2015-10-04 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 2048g/F55060E7 作成: 2015-10-04 満了: 無期限 利用法: E [ultimate] (1). pgptest <gmkkk@gamil.com> # コマンドで「trust」を入力 コマンド> trust pub 2048D/598939CF 作成: 2015-10-04 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 2048g/F55060E7 作成: 2015-10-04 満了: 無期限 利用法: E [ultimate] (1). pgptest <gmkkk@gamil.com> 他のユーザーの鍵を正しく検証するために、このユーザーの信用度を決めてください (パスポートを見せてもらったり、他から得た指紋を検査したり、などなど) 1 = 知らない、または何とも言えない 2 = 信用し ない 3 = ある程度信用する 4 = 完全に信用する 5 = 絶対的に信用する m = メーン・メニューに戻る # 「5」を入力 あなたの決定は? 5 本当にこの鍵を絶対的に信用しますか? (y/N) y pub 2048D/598939CF 作成: 2015-10-04 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 2048g/F55060E7 作成: 2015-10-04 満了: 無期限 利用法: E [ultimate] (1). pgptest <gmkkk@gamil.com> # 「quit」を入力 コマンド> quit
鍵サーバから公開鍵を取込み
鍵サーバー(pgp.mit.edu)からBINDの公開鍵(911A4C02)を取り込む
# gpg --keyserver pgp.mit.edu --recv-keys 911A4C02 gpg: 鍵911A4C02をhkpからサーバーpgp.mit.eduに要求 gpg: 鍵911A4C02: 公開鍵“Internet Systems Consortium, Inc. (Signing key, 2015-2016) <codesign@isc.org>”を読み込みました gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u gpg: 処理数の合計: 1 gpg: 読込み: 1 (RSA: 1)
署名されたファイルを検証
上記の作業で、鍵サーバー(pgp.mit.edu)からBINDの公開鍵(911A4C02)を取り込む済みのこと
必要用件:bind-9.10.3.tar.gz、bind-9.10.3.tar.gz.ascもダウンロード済みなこと
書式:
gpg –verify XXXX.asc(sig) YYYY.tar.gz
gpg –verify XXXX.asc(sig)
gpgv XXXX.asc(sig)
※ 電子署名のファイルは元のファイル名に.ascという拡張子を追加したものであることが多い。また、.sigの場合もあります。
# gpg --verify bind-9.10.3.tar.gz.asc bind-9.10.3.tar.gz gpg: 2015年09月16日 10時19分52秒 JSTにRSA鍵ID 911A4C02で施された署名 gpg: “Internet Systems Consortium, Inc. (Signing key, 2015-2016) <codesign@isc.org>”からの正しい署名 gpg: 警告: この鍵は信用できる署名で証明されていません! gpg: この署名が所有者のものかどうかの検証手段がありません。 主鍵の指紋: ADBE 9446 286C 7949 05F1 E075 6FA6 EBC9 911A 4C02 # gpg --verify bind-9.10.3.tar.gz.asc # gpgv bind-9.10.3.tar.gz.asc
鍵サーバに鍵を登録
# gpg --keyserver pgp.nic.ad.jp --send-keys 3136XXXA gpg: 鍵3136XXXAをhkpサーバーpgp.nic.ad.jpへ送信 + 相手の公開鍵を自分の秘密鍵で署名 # gpg --sign-key 598XXXCF + 破棄証明書を作成 # gpg --gen-revoke 598XXXCF sec 2048D/598XXXCF 2015-10-04 pgptest <xxx@example.com> この鍵にたいする失効証明書を作成しますか? (y/N) y 失効の理由を選択してください: 0 = 理由は指定されていません 1 = 鍵がパクられました 2 = 鍵がとりかわっています 3 = 鍵はもう不用です Q = キャンセル (ここではたぶん1を選びます) # 「1」を入力 あなたの決定は? 1 予備の説明を入力。空行で終了: 失効理由: 鍵がパクられました (説明はありません) # 「y」を入力 よろしいですか? (y/N) y 次のユーザーの秘密鍵のロックを解除するには パスフレーズがいります:“pgptest <xxx@example.com>” 2048ビットDSA鍵, ID 598XXXCF作成日付は2015-10-04
gpgv
gpgv は gnupg の機能限定バージョンで、署名のチェックのみ行なうことができる
書式
gpgv オプション [ファイル名]
[]は省略可能
gpg-agent
gpg-agent は gpg の秘密鍵を管理するにに利用できる
パスフレーズの入力をキャッシュしておいてくれるので、パスフレーズの入力を1回だけ行えば良くなります
書式
gpgpg-agent オプション [ファイル名]
[]は省略可能
キーリング
名前の通り、鍵を束ねるものです。これらのファイルは、実行ユーザの $HOME/.gnupg/ に格納されています
secring.pgp | 秘密鍵を束ねるキーリング |
pubring.pgp | 公開鍵を束ねるキーリング |
trustedkeys.pgp | 信頼された公開鍵が格納されているキーリング |
trustdb.gpg | 信用データベースといい。鍵の信用度や有効性を記録しているデータベース |
ディスカッション
コメント一覧
まだ、コメントがありません