gpg --fingerprint 打印出完全不同的指纹

信息安全 pgp gnupg 指纹
2021-08-23 21:24:34

当显示 OpenPGP 密钥的完整指纹时,它会得到与 ID 完全不同的指纹。

对于这个特定的键:

$ gpg --list-keys --fingerprint D72AF3448CC2B034
pub   rsa4096 2017-02-09 [SC] [verfällt: 2027-02-07]
      F554 A368 7412 CFFE BDEF  E0A3 12F5 F7B4 2F2B 01E7
uid        [ unbekannt ] OpenVPN - Security Mailing List <security@openvpn.net>
sub   rsa4096 2017-02-09 [E] [verfällt: 2018-03-06]
sub   rsa4096 2017-02-09 [S] [verfällt: 2018-03-06]

对于其他键,指纹与 ID 匹配,正如预期的那样:

$ gpg --list-keys --fingerprint 57DB9DAB613B8DA1
pub   rsa4096 2016-08-23 [SC] [verfällt: 2026-08-21]
      7ACD 56B7 4144 925C 6214  3297 57DB 9DAB 613B 8DA1
uid        [ unbekannt ] David Sommerseth (OpenVPN Technologies, Inc) <davids@openvpn.net>
uid        [ unbekannt ] David Sommerseth (OpenVPN Technologies, Inc) <david.sommerseth@openvpn.net>
uid        [ unbekannt ] David Sommerseth (OpenVPN mailing list ID) <openvpn@sf.lists.topphemmelig.net>
sub   rsa4096 2016-08-23 [E] [verfällt: 2026-08-21]
sub   rsa4096 2016-08-23 [S] [verfällt: 2021-08-22]

这是正常的吗?谁能给我解释一下,为什么指纹完全不同?

2个回答

如果子键作为参数传递,GnuPG 通常会将子键解析为主键。这在指定加密子密钥时可能特别令人惊讶:GnuPG 将子密钥解析为主密钥,并且实际上可能选择另一个子密钥进行加密(选择最新的加密子密钥)。

对于列出一个密钥,这总是会执行的,对于某些操作,如加密,您可以附加!到子密钥的 ID(即。D72AF3448CC2B034)以显式选择此密钥并禁用主密钥查找。

要在命令行上显示子项指纹,请应用以下--with-subkey-fingerprints选项:

$ gpg --list-keys --with-subkey-fingerprints D72AF3448CC2B034
pub   rsa4096/0x12F5F7B42F2B01E7 2017-02-09 [SC] [expires: 2027-02-07]
      F554A3687412CFFEBDEFE0A312F5F7B42F2B01E7
uid            [ unknown] OpenVPN - Security Mailing List <security@openvpn.net>
sub   rsa4096/0xF80E8008F6D9F8D7 2017-02-09 [E] [expires: 2018-03-06]
      E6CAF699521B9B5E57A5C31BF80E8008F6D9F8D7
sub   rsa4096/0xD72AF3448CC2B034 2017-02-09 [S] [expires: 2018-03-06]
      B59606E2D8C6E10B80BE2B31D72AF3448CC2B034

显然, D72AF3448CC2B034 是一个子密钥,E0A312F5F7B42F2B01E7 是相应的主密钥。但是,gpg 不打印子键的指纹。我不得不使用 enigmail gui 工具来验证这一点。