如何更新 pgp 子密钥的签名

如何更新 pgp 子密钥的签名

我的公共 pgp 密钥有一个子密钥,其签名(自签名)包含无效的策略 URL。我该如何更新签名并删除策略?

在 macOS Sierra 10.12.3 (16D32) 上使用 gpg (GnuPG) 1.4.21

答案1

这并不是真正的解决方案,但这就是我处理该问题的方法(使用 GnuPG 2.2)。

首先,我的 UID 也遇到了同样的问题。可以解决此问题:从 gpg.conf 中删除策略 URL,然后删除签名(gpg --edit-keydelsig),并使用主密钥再次对 uid 进行自签名。

对于子密钥,此方法不起作用。每个子密钥一旦创建,都必须由主密钥签名,额外的签名没有意义。因此,对于 GnuPG,不需要支持编辑或添加子密钥签名。所以我不得不尝试其他方法(使用 uid 的测试用例test)。

  1. 导出完整密钥:gpg --export-secret-key test > testexport
  2. 将密钥拆分成数据包:gpgsplit testexport
  3. 删除包含无效签名的数据包。在我的测试案例中,子密钥签名包含在最后一个代码片段文件中,名为000006-002.sig。您可以通过仔细检查并检查内容gpg --list-packets 000006-002.sig
  4. 为包含秘密子密钥的代码片段创建签名:gpg --local-user test --output 000006.newsig --detach-sign 000005-007.secret_subkey
  5. 将包括新签名在内的片段重新放在一起:cat 0* > newkey
  6. 从密钥环中删除(旧)密钥:gpg --delete-key test
  7. 将新密钥重新导入密钥环:gpg --import newkey。但不幸的是,由于签名无效,子密钥的导入失败了。

所以这种方法太过幼稚,人们应该更深入地研究 OpenPGP 签名,以便创建有效的签名。

最后,由于我的密钥已被其他人上传到密钥服务器,我决定撤销子密钥并创建一个新的密钥。

相关内容