GnuPG
GnuPG(GPG)は、OpenPGP 規格 (RFC2440) に準拠した暗号化ソフトウェア。
公開鍵暗号は、暗号化する鍵と復号する鍵が異なっており、暗号化する鍵を公開鍵とし、復号する鍵を秘密鍵とする。公開鍵で暗号化すると、そのデータを読めるのは秘密鍵の持ち主だけになる。よって、誰かに秘密のメッセージを送りたい場合は、送信相手の公開鍵を入手して暗号化して送れば良い。公開鍵はネットで公開するなり、鍵サーバに置くなり誰でも利用可能にする。メールで送っても良い。秘密鍵は他者に漏れないようにする
所有している鍵の一覧
公開鍵
$ gpg --list-keys
秘密鍵
$ gpg --list-secret-keys
期限切れの鍵も表示する場合は -v
をつける
$ gpg --list-keys -v
鍵のエクスポート
$ gpg --export > my,gpg.pub
鍵生成
$ gpg --gen-key
設定
- 鍵タイプ:通常は署名用と暗号用の2つのキーペアを作るので以下を選ぶと良い。
- RSA and RSA - 署名用・暗号用ともにRSA鍵を生成する
- DSA and Elgamal - 署名用にDSA鍵1)、暗号用にElgamal鍵を生成する
- 鍵長:とりあえず2048bitあれば今のところは安心
- 有効期限:0にすると無期限となる。5yとすると5年後に無効になる。
- 個人情報:お好きなように
- 名前
- メールアドレス
- メモ
- パスフレーズ:自分の好きな一文などを入れると良い
署名用が主鍵(公開鍵pub/秘密鍵sec)、暗号用が副鍵(公開鍵sub/秘密鍵ssb)、ただし、RSAの場合は復号鍵で暗号化し、それを暗号化鍵で復号することができるため、副鍵なしで暗号化もできてしまうので注意。
公開鍵をエクスポート
gpg --export -a <鍵ID>
-a
はテキスト形式(armored format)で出力する。鍵ID未指定の場合は持っている公開鍵全て出力する
公開鍵をインポート
鍵サーバから
$ gpg --keyserver 鍵サーバーアドレス --recv-key 鍵ID
ファイルから
$ gpg --import ファイル名
importした公開鍵へ署名(lsignはローカルでのみ有効な署名)
$ gpg --sign-key $ gpg --lsign-key
信用度が設定されてないので設定する
$ gpg --edit-key "変更したい鍵とかメールアドレスとか"
gpg > trust
暗号化・復号
暗号化
$ gpg -e -r nullpon@paulownia.jp hoge.txt
rオプションで受け手を指定。受け手が未指定の場合は聞かれるので入力する。hoge.txt.gpg が作成される。
復号
$ gpg -d hoge.txt.gpg
自分の公開鍵で暗号化されていれば復号できる。復号の結果は標準出力に書き出される。保存する場合はリダイレクトする。
$ gpg -d hoge.txt.gpg > hoge.txt
秘密鍵のエクスポート・インポート
PCを移行する場合などエクスポート・インポートが必要になる時
エクスポート
gpg --export-secret-keys > secret_keys
秘密鍵の数だけパスフレーズを求められる。(エラーではない)
インポート
gpg --import secret_keys
インポートした鍵は信頼性が未設定になるので、信頼性を設定する
gpg --edit-key <鍵ID>
trustを実行
gpg> trust
自分の鍵なので信頼性を絶対(5)にする