git 使用SSH和GPG签名提交有什么区别?

bvpmtnay  于 2023-04-19  发布在  Git
关注(0)|答案(2)|浏览(547)

GitHub now supports SSH commit verification,因此您可以使用自己生成的SSH公钥在本地对提交和标记进行签名,这将使其他人对您所做更改的来源有信心。如果提交或标记具有加密可验证的SSH签名,则GitHub会将提交或标记设置为“已验证”或“部分已验证”。
如果您已经使用SSH密钥在GitHub上进行身份验证,现在可以上传相同或不同密钥对的公钥以将其用作签名密钥。您可以添加到帐户的签名密钥的数量没有限制。有关更多信息,请访问GitHub文档中的SSH提交验证。
鉴于最近发生的这一事件,我想知道:使用SSH密钥和GPG密钥对提交进行签名有什么区别?

注意:Here is a similar question询问GPG和SSH之间的一般差异。这个问题特别是关于使用一个或另一个 * 用于签名目的 * 之间的差异。

zynd9foi

zynd9foi1#

在功能上,这两种方法都提供了同等的加密安全性,都使用了健壮的数字签名算法,并且只要私钥是安全的,就被认为是有效的不可伪造的。
SSH的好处是,它可以更容易地将密钥转发到另一台机器。例如,在以前的雇主那里,所有的开发都必须在VM上完成,并且不允许在笔记本电脑或台式机上使用源代码。由于SSH代理转发,SSH比GPG更容易使用。
GPG也因其加密实现的质量而受到一些批评,并且对于使用SHA-1进行指纹和一些加密算法的批评肯定是合理的,后者与此无关。(SHA-1在指纹中的使用将在OpenPGP标准的即将修订版中得到修复。)因此,有些人可能更喜欢使用OpenSSH,因为它通常具有更好的安全性声誉,并且它通常已经在大多数系统上就位。
使用OpenSSH和安全密钥也更容易一些,因为大多数安全密钥支持FIDO 2,从技术上讲,这就是所有需要的。OpenPGP实现需要一些额外的支持,因此安全密钥上的OpenPGP的可用性不太可能。
然而,OpenPGP存在的时间更长,Git支持的时间也更长,这使得它更容易在旧环境中使用。签名数据也需要更新版本的OpenSSH,这再次阻碍了它在旧环境中的使用。最后,OpenPGP和GnuPG使得存储和验证任意密钥变得更加容易,包括,使用GnuPG,首次使用时的信任,而OpenSSH需要一个指定的允许签名者列表,该列表必须手动维护。

dtcbnfnu

dtcbnfnu2#

另一个不同之处是如何在计算机之间安全地使用(GPG/SSH)密钥来在所有平台上签名提交。
这意味着将密钥(GPG/SSH)存储在在线和同步的 Vault 中。
否则,在多台计算机上复制/重复使用 * 相同 * 密钥将是一种不好的做法。
虽然可以在Vault中手动导入/附加密钥,但我所知道的用于签署Git提交的唯一集成是GitHub与1Password和SSH密钥(而不是GPG)。
参见托马斯Dohmke(GitHub CEO)tweet
今天(2022年9月8日),我很高兴地宣布我们与1Password的新集成以及我们对SSH提交验证的支持。
现在,开发人员可以轻松地添加SSH密钥来验证提交,并直接从浏览器生成和存储SSH密钥。
这是指1Password博客文章“Sign your Git commits with 1Password”由Marc Mackenbac,其中1Password 8.9.4或更高版本将包括一个/Applications/1Password.app/Contents/MacOS/op-ssh-sign工具,并能够编辑您的~/.gitconfig,以便使用**op-ssh-sign**签署您的提交:

您的SSH密钥在您的在线保管库中进行管理(目前为1Password,其他人可能会效仿)。

相关问题