ユーザ用ツール

サイト用ツール


gpg

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)にする

1)
DSAはElgamal署名を改良した署名専用のアルゴリズム
gpg.txt · 最終更新: 2023/10/02 13:40 by nullpon