GPGのsubkeyについて。
なるほどねー。
ちなみにどうしてもという時というのは以下らしい。
あー、今だとlaptopにはGPG鍵入れてないけど、これはありかもしれないね。ということでDebian WikiでのSubkey作成手順に従って作ってみる。
$ umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg (バックアップ)
$ gpg --list-keys henrich@debian.org (自分のKEYIDを取得)
pub rsa4096 2009-05-23 [SC] [有効期限: 2019-05-21]
58E1222F9696C885A3CD104C5D328D082AAAB140
uid [ 究極 ] Hideki Yamane (Debian-JP) <henrich@debian.or.jp>
uid [ 究極 ] Hideki Yamane <henrich@debian.org>
uid [ 究極 ] Hideki Yamane (private) <henrich@iijmio-mail.jp>
sub rsa4096 2009-05-23 [E] [有効期限: 2019-05-21]
$ gpg --edit-key 58E1222F9696C885A3CD104C5D328D082AAAB140
gpg (GnuPG) 2.2.3; Copyright (C) 2017 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.
秘密鍵が利用できます。
sec rsa4096/5D328D082AAAB140
作成: 2009-05-23 有効期限: 2019-05-21 利用法: SC
信用: 究極 有効性: 究極
ssb rsa4096/95F59E65108820E1
作成: 2009-05-23 有効期限: 2019-05-21 利用法: E
[ 究極 ] (1). Hideki Yamane (Debian-JP) <henrich@debian.or.jp>
[ 究極 ] (2) Hideki Yamane <henrich@debian.org>
[ 究極 ] (3) Hideki Yamane (private) <henrich@iijmio-mail.jp>
gpg> addkey (subkeyの追加)
ご希望の鍵の種類を選択してください:
(3) DSA (署名のみ)
(4) RSA (署名のみ)
(5) Elgamal (暗号化のみ)
(6) RSA (暗号化のみ)
あなたの選択は? 4 (←Debianパッケージなどで署名が必要なのでこちらを今回は選択)
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (3072) 4096 (←4096にしたけど、masterkeyより大きなのは選べるのかしら?)
要求された鍵長は4096ビット
鍵の有効期限を指定してください。
0 = 鍵は無期限
<n> = 鍵は n 日間で期限切れ
<n>w = 鍵は n 週間で期限切れ
<n>m = 鍵は n か月間で期限切れ
<n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)1y (masterkeyよりも短いほうが良いそうなのでとりあえず1年にしておく)
鍵は2018年12月04日 18時54分30秒 JSTで期限切れとなります
これで正しいですか? (y/N) y
本当に作成しますか? (y/N) y
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
sec rsa4096/5D328D082AAAB140
作成: 2009-05-23 有効期限: 2019-05-21 利用法: SC
信用: 究極 有効性: 究極
ssb rsa4096/95F59E65108820E1
作成: 2009-05-23 有効期限: 2019-05-21 利用法: E
ssb rsa4096/723BFA427D8774AD (←今回出来たのはこの鍵)
作成: 2017-12-04 有効期限: 2018-12-04 利用法: S
[ 究極 ] (1). Hideki Yamane (Debian-JP) <henrich@debian.or.jp>
[ 究極 ] (2) Hideki Yamane <henrich@debian.org>
[ 究極 ] (3) Hideki Yamane (private) <henrich@iijmio-mail.jp>
gpg> save
で、この後の手順は、と…
Here comes the tricky part: you need to remove the private master key.
え?「private masterkeyを削除する」???マジか。GnuPG 2.1以降なら ~/.gnupg/private-keys-v1.d/<KEYGRIP>.key
を削除せよ、と。KEYGRIPはmaster keyの"keygrip"で、gpg2 --with-keygrip --list-key <YOURMASTERKEYID>
で手に入るぞ、と。ただし、旧バージョンのGnuPGから新しい形式に移行している場合は ~/.gnupg/secring.gpg
の方に private master keyがあるかもしれないから、こっちも消せ、と。GnuPG 2.1以前の場合も書いてあるけど、そんな環境使ってる人のことを考えるの面倒なので、原文見てほしい。
ここまで来たら gpg --edit-key <YOURMASTERKEYID> passwd
でパスフレーズを変更してしまう。これで日常のパスフレーズが漏れても、元々のパスフレーズがわからなければ、たとえprivate master keyにアクセスできても使えないよね…という、まぁ気休めにはなる?