一般的なオプション-o
もしくは--output
: 出力ファイル名を指定する。「-o-」なら標準出力に出力する。-a
もしくは--armor
: バイナリではなくASCIIで出力する
対象の鍵を指定する場合、フィンガープリント、メールアドレス、名前のどれを使って指定してもよい。
1.鍵の作成
鍵の作成$ gpg --gen-key
鍵の作成(暗号アルゴリズム、鍵長、有効期限を指定できる)
$ gpg --full-gen-key
2.鍵の管理
鍵一覧を表示(公開鍵、秘密鍵を含む)$ gpg --list-keys $ gpg -k
秘密鍵の一覧を表示
$ gpg --list-secret-keys $ gpg -K
(公開鍵の)エクスポート
$ gpg --export<対象の鍵>
(秘密鍵の)エクスポート(パスワードの入力が必要)
$ gpg --export-secret-key<対象の鍵>
鍵のインポート
$ gpg --import<鍵ファイル>
鍵の編集(主鍵から副鍵の生成、インポートした公開鍵の信用度の変更、公開鍵の署名などができる)
$ gpg --edit-key<対象の鍵>
「*警告*: この鍵は信用できる署名で証明されていません!」のような警告が出るのが嫌な場合、--lsign-keyでローカルで鍵に署名して、信用できる鍵だということを覚えさせておくとよい。(鍵への署名は、下で説明するファイルへの署名とは別物なので、勘違いしないこと)
$ gpg --lsign-key<対象の鍵>
3.署名
-u <対象の鍵> : 署名に使用する秘密鍵を指定する。指定しない場合、デフォルトのものが使用される。3.1分離署名
署名対象のファイルとは別に、検証用の署名ファイルを作成する。ソースコードの配布などでよく見かける。
$ gpg --detach-sign<ファイル名>
検証
$ gpg --verify<署名ファイル名>
署名対象のファイルは署名ファイル名から自動で推測する。明示的に指定したい場合は引数で指定できる。
$ gpg --verify<署名ファイル名><署名対象ファイル名>
3.2(埋め込み)署名
分離せず、署名対象ファイルと署名をまとめて一つのファイルにする。後述の暗号化と同時に使うこともできる。
$ gpg --sign<ファイル名> $ gpg -s<ファイル名>
もとのファイルを取り出すときは--decrypt
(-d
)を使う。このとき、同時に署名のチェックが行われる。
$ gpg --decrypt<署名後のファイル名>
4.暗号化
4.1 共通鍵暗号
gpg特有の公開鍵の仕組みは使わず、共通のパスワードで暗号化・復号化する。$ gpg -c<対象ファイル名>
復号化は--decryptを使う。
$ gpg --decrypt<暗号化後の対象ファイル名>
4.2 公開鍵暗号
使用する公開鍵を指定して暗号化する。その公開鍵とペアになる秘密鍵を持っている人だけが復号化できる。$ gpg -r<使用する公開鍵>-e<対象ファイル名>
復号化には--decryptを使う。
$ gpg --decrypt<暗号化後ファイル名>
4.3 暗号化と署名
暗号化と(埋め込み)署名を同時に行うこともできる。暗号化に使う公開鍵、署名に使う秘密鍵を指定する。$ gpg -r<使用する公開鍵>-u<使用する秘密鍵>-e-s<対象ファイル名>
5.鍵サーバ、WKD
おそらく、インストール時に、デフォルトでどこかの鍵サーバが設定されているはず。~/.gnupg/dirmngr.confで設定する、もしくはオプションの--keyserverを使うことで、使用する鍵サーバを明示的に設定することもできる。
また、WKDは鍵サーバではなく、メールアドレスのドメインから鍵をダウンロードする仕組みらしい。
鍵を検索する
$ gpg --search-keys<検索クエリ>
鍵サーバから鍵をインポートする
$ gpg --recv-keys<鍵ID>
WKDで鍵をインポートする
$ gpg --locate-keys<メールアドレス># 上のコマンドでもおそらくうまく行くが、wkdを明示的に指定することもできる $ gpg --auto-key-locate wkd --locate-keys<メールアドレス>
参考リンク
https://text.baldanders.info/openpgp/gnupg-cheat-sheet/https://wiki.archlinux.jp/index.php/GnuPG
https://www.gnupg.org/documentation/manuals/gnupg24/gpg.1.html