我如何知道 GitHub 使用哪个子密钥进行签名?

信息安全 gnupg 混帐
2021-08-14 10:15:28

我今天将我的 gpg 子键添加到 GitHub 并注意到无论我导出哪个子键,PUBLIC KEY BLOCK 都是相同的。我已经找到了这篇文章,这解释了为什么:is-it-possible-to-export-a-gpg-subkeys-public-component?

在将此公钥块添加到 github 时,它现在已经识别了我的公钥,并在我的帐户下列出了我的加密和签名子密钥。

那么我的问题是,我怎么知道 github 使用哪个密钥进行签名,因为我的公钥有使用SC,而我的签名密钥有使用S

1个回答

Github 根本没有对你的提交进行签名——它所做的只是验证签名。事实上,git就是在你的电脑上做签名工作,依靠 GnuPG 进行加密操作。GnuPG 通常会再次使用具有签名功能的最新未撤销密钥,除非您强制执行其他操作,这通常是您的子密钥。

通过 验证提交或标签时git verify-[commit|tag],GnuPG 将打印用于签名的密钥 ID,例如

gpg: Signature made Mon Jun 27 23:22:05 2016 CEST
gpg:                using RSA key 0x8E78E44DFB1B55E9
[snip]

此密钥 ID 引用实际用于编写签名的密钥,如果使用了子密钥,则在此处打印 ID。您可以通过运行gpg --list-keys [key-id]并查看该键是否列为主键或子键来验证。

对于签名,通常您选择的 pinentry 实现也会打印查询密码时要使用的密钥。