简而言之,我想知道当一个人已经需要提供 SSH 公钥时,为什么在向 GitHub 贡献时还需要用 GPG 密钥签署自己的提交?
当我在推送时已经使用 SSH 密钥对自己进行身份验证时,为什么还要使用 GPG 密钥签署我的 git 提交?
信息安全
SSH
pgp
电子签名
混帐
2021-09-02 11:25:10
1个回答
当您使用 SSH 密钥向 Github 进行身份验证时,该身份验证不会以任何有意义或持久的方式成为存储库的一部分。它会导致 Github 暂时允许你访问,但它并不能向任何非 Github 的人证明任何事情。
当您对 git 标签进行 GPG 签名时,该标签是存储库的一部分,并且可以推送到存储库的其他副本。因此,克隆您的存储库的其他人可以验证签名标签,假设他们可以访问您的公钥并有理由信任它。
虽然没有必要对每个提交进行标记和 GPG 签名,但明智的做法是至少在与代码的已发布版本相对应的每个提交上提供 GPG 签名的标签。您可能希望做更多的事情,但这是负责任的行为的最低限度,因为它提供了合理的保证:
有问题的提交确实与有问题的版本相对应。
有问题的提交(以及在我们信任 git 提交历史中使用的 SHA1 哈希值的程度,以及它的所有前辈)来自签名者(以及,如果适用的话,签名者的团队)。
在签名者标记后,有问题的提交没有被篡改。
请注意,我说的是“合理保证”,而不是“完全确定”……还有其他可能导致软件完整性出错的事情。然而,至少为正式发布提供签名标签是朝着正确方向迈出的一大步。
其它你可能感兴趣的问题