- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-01-06T08:03:23+00:00","","")
#topicpath
///////////////////////////////////////////////////////////////////////////////
* 目次 [#contents]
#contents();
///////////////////////////////////////////////////////////////////////////////
* GnuPG [#gnupg]
** 鍵の生成 [#create-key]
$ gpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 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 (署名のみ)
選択は? 1
RSA keys may be between 1024 and 4096 bits long.
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/N) y
あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
本名: (名前を入力)
電子メール・アドレス: (メールアドレスを入力)
コメント:
次のユーザーIDを選択しました:
“名前 <メールアドレス>”
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
秘密鍵を保護するためにパスフレーズがいります。
パスフレーズを入力:
パスフレーズを再入力:
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
(他の作業をする)
十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと172バイトいります)
(更に他の作業をする)
dsa.....+++++
.........+++++
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと71バイトいります)
(更に他の作業をする)
十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと119バイトいります)
(更に他の作業をする)
dsa...+++++
gpg: 鍵***を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u
(以下生成結果・略)
$
//-----------------------------------------------------------------------------
** 秘密鍵 [#secret-key]
- 秘密鍵のexport
$ gpg -o sec.key -a --export-secret-key user@example.com
-- "-a" オプションを付けるとASCII、なければバイナリで出力される
- 秘密鍵のimport
$ gpg --import --allow-secret-key-imort sec.key
- 秘密鍵の削除
$ gpg --delete-secret-key user@example.com
$ gpg --delete-secret-keys user@example.com
-- 秘密鍵は、公開鍵に先んじて削除しておく必要がある
- 鍵束(キーのリスト)の表示
$ gpg --list-secret-key
//-----------------------------------------------------------------------------
** 公開鍵 [#public-key]
- 公開鍵の export
$ gpg -o pub.key -a --export user@example.com
-- "-a" オプションを付けるとASCII、なければバイナリで出力される
- 公開鍵の import
$ gpg --import pub.key
- 公開鍵の削除
$ gpg --delete-key user@example.com
-- 秘密鍵は、公開鍵に先んじて削除しておく必要がある
- 鍵束(キーのリスト)の表示
$ gpg --list-key
$ gpg --list-keys
//-----------------------------------------------------------------------------
** 公開鍵の失効証明書 [#revoke-key]
- パスフレーズを忘れた・漏洩したという場合に備えて、失効証明書は予め作成しておいたほうが良い
- 失効証明書の発行
$ gpg -o user.revoke --gen-revoke user@example.com
-- -o で指定したファイル名(上記例では user.revoke)にテキストとして保存される。
-- 途中で幾つか質問に答える場面がある。
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“user@example.com"
と訊かれたら、パスフレーズを入力する。ここでは失効証明書の発行のためにロックを解除するだけで、その場で暗号鍵や公開鍵が失効するわけではない。
-- 生成した失効証明書は、他人に見られる心配のないところに保管しておく(専用のUSBメモリに入れてしまっておくなど)
- 失効証明書を使った鍵の無効化
$ gpg --import <失効証明書ファイル名>
- キーサーバに UP している場合は、それも失効させる必要がある → [[キーサーバに UP した公開鍵を失効させる>#revoke-key-on-public-key-server]]
//-----------------------------------------------------------------------------
** 暗号化と復号 [#crypt-decrypt]
- ファイルを暗号化するには、渡す相手の公開鍵を先に入手し、importする。
- receive-user@example.com のユーザに渡す target-file を暗号化する
$ gpg -a -r receive-user@example.com -e target-file
- 自分(user@example.com)の公開鍵を使って暗号化されたファイル(encripted-file)を受け取り、公開鍵と対になる自分の秘密鍵で復号化する
$ gpg -d encrypted-file
//-----------------------------------------------------------------------------
** 署名と検証 [#vaf4bf27]
- 自分(user@example.com)の秘密鍵で、clearsign-file に署名する。
$ gpg -u user@example.com --clearsign target-file
-- 署名されたファイルが、元のファイル名.asc というファイル名で出力される。
- 受け取った人(receive-user@example.com)が、送り主(user@example.com)から受け取った署名入りファイル(signed-file)を、送り主の公開鍵で検証する
$ gpg -d target-file.asc
//-----------------------------------------------------------------------------
** ファイルの暗号化 [#ra90a887]
- <file> を <user_id> の鍵で暗号化する場合は
$ gpg -e -r <user_id> <file>
-- <user_id> は、例えば<file>をあとで人に渡す場合は、相手の公開鍵のIDを指定する。
//-----------------------------------------------------------------------------
** 信用度の設定 [#trust]
- 公開鍵を取り込んでも、そのままでは「信頼されていない」になる。明らかに信用出来る相手である場合などに、適切に信用度を設定する。
- 信用度には、1(知らない)から5(絶対的に信用する)の5段階がある。
- 設定
$ gpg --edit-key <key-ID>
(指定したキーの現在の状態などが表示される)
gpg> trust
(キーの情報を表示)
他のユーザーの鍵を正しく検証するために、このユーザーの信用度を決めてください
(パスポートを見せてもらったり、他から得た指紋を検査したり、などなど)
1 = 知らない、または何とも言えない
2 = 信用し ない
3 = ある程度信用する
4 = 完全に信用する
5 = 絶対的に信用する
m = メーン・メニューに戻る
あなたの決定は? 5 # <= 5を選択
本当にこの鍵を絶対的に信用しますか? (y/N) y
(キーの情報を表示)
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。
gpg> save
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
* 鍵の公開 [#q249a67a]
//-----------------------------------------------------------------------------
** キーサーバへのUP [#r7a33520]
- 自分のキーを、キーサーバ subkeys.pgp.net で公開する:
$ gpg --keyserver hkp://subkeys.pgp.net --send-keys <自分の Key-ID>
** キーサーバに UP した公開鍵を失効させる [#revoke-key-on-public-key-server]
- 公開鍵をキーサーバに UP している場合は、これも失効させる必要がある。
- subkeys.pgp.net に UP している公開鍵を失効させる
$ gpg --keyserver subkeys.pgp.net --send-keys <自分の Key-ID>
//-----------------------------------------------------------------------------
** おまけ(自前サーバで公開鍵を公開する場合) [#zcfc761d]
- GPG公開鍵用の MIME-Typeがある。サーバが既に拡張子を指定しているならその拡張子を使うのがよいと思われるが、そうでない場合は .htaccess で設定する。
- 下記は、公開パスを "~/public_html/public_keys"、公開鍵の拡張子を ".pubkey" とした場合の例。拡張子の "."(ピリオド) は必要ない。
$ vi ~/public_html/public_keys/.htaccess
# Add MIME-Types
AddType application/pgp-keys pubkey
- ただ、公開鍵をASCII形式ファイルにしている場合は、「なにもここまでしなくても・・・」という話もある。
* 参考文献 [#links]
- [[Debian リファレンス 第 14 章 - GnuPG>http://qref.sourceforge.net/quick/ch-gnupg.ja.html]]
- [[gnupg-3>http://www.math.s.chiba-u.ac.jp/~matsu/gpg/gpg-3.html]]
- [[GnuPGの公開鍵を無効化するには>http://www.atmarkit.co.jp/flinux/rensai/linuxtips/793revokepubky.html]]