web-dev-qa-db-ja.com

gpg --list-keysがサブキーを出力する場合としない場合があるのはなぜですか?

この質問は、「 ハッキングの少ない方法で暗号化キーの使用フラグを表示するにはどうすればよいですか? 」のコメントで発生しました。答えがはっきりしないQ&Aフォーム

TorvaldのOpenPGPキー449FA3ABを表示するには、gpg2 --list-keys 449FA3ABを使用します。

$ gpg2 --list-keys 449FA3AB
pub   1024D/449FA3AB 1999-10-05 [expired: 2001-10-04]
uid       [ expired] Linus Torvalds <[email protected]>

通常、このコマンドはサブキーもリストしますが、Torvaldのキーのサブキーは出力されません。ただし、バッチ出力を要求する場合は含まれます。

$ gpg2 --with-colons --list-keys 449FA3AB
tru::1:1414619239:1414879758:3:1:5
pub:e:1024:17:956EB7BF449FA3AB:939086351:1002158351::-:::sca:
uid:e::::939086351::81A3799583B9B1B391E4C428112F302FF2ADF462::Linus Torvalds <[email protected]>:
sub:e:2048:16:71CE8207BFF491C5:939086545:1002158545:::::e:

このトーバルズキーには、サブキーを非表示にする特別な機能があるようです。ここで何が起こったのですか?

13
Jens Erat

期限切れのキー

これは特別な機能ではありませんが、Torvaldsの主キーはかなり前に期限切れになり、その結果、サブキーも期限切れになります。 GnuPGの--list-optionsセクションには回答が隠されています。デフォルトでは、期限切れのサブキーが隠されているためです。 man gpg2から:

show-unusable-subkeys
        Show revoked and expired subkeys in key listings. Defaults to no.

この引数を指定すると、サブキーが表示されます。

$ gpg2 --list-options show-unusable-subkeys --list-keys 449FA3AB
pub   1024D/449FA3AB 1999-10-05 [expired: 2001-10-04]
uid       [ expired] Linus Torvalds <[email protected]>
sub   2048g/BFF491C5 1999-10-05 [expired: 2001-10-04]

時間を遡る

また、有用な faketime プログラムを使用してこれを確認し、GnuPGのシステム時間を数年前に戻すこともできます。 Torvaldsキーが有効であった日付まで遡って、サブキーが再び表示されます。

$ faketime 2001-01-01 gpg2 --list-keys 449FA3AB
pub   1024D/449FA3AB 1999-10-05 [expires: 2001-10-04]
uid       [ unknown] Linus Torvalds <[email protected]>
sub   2048g/BFF491C5 1999-10-05 [expires: 2001-10-04]
17
Jens Erat