使用 SSH 与 GPG 签署提交有什么区别?

Nat*_*ram 13 git ssh github gnupg digital-signature

\n

GitHub 现在支持 SSH 提交验证,因此您可以使用自行生成的 SSH 公钥在本地签署提交和标签,这将使其他人对您所做更改的来源充满信心。如果提交或标签具有可加密验证的 SSH 签名,GitHub 会将提交或标签设为“已验证”或“部分验证”。

\n

如果您已使用 SSH 密钥通过 GitHub 进行身份验证,现在可以上传相同或不同的密钥对\xe2\x80\x99s 公钥以将其用作签名密钥。您可以添加到帐户的签名密钥数量没有限制。有关更多信息,请访问GitHub 文档中的SSH 提交验证。

\n
\n

鉴于最近发生的事件,我想知道:使用 SSH 密钥与 GPG 密钥签署提交之间有什么区别?

\n

注意: 这是一个类似的问题,询问 GPG 和 SSH 之间的一般差异。这个问题具体是关于使用其中一种或另一种进行签名之间的区别。

\n

bk2*_*204 16

从功能上讲,这两种方法都提供同等的加密安全性。两者都使用强大的数字签名算法,并且只要私钥受到保护,就被认为是不可伪造的。

SSH 的优点是可以更轻松地将密钥转发到另一台计算机。例如,在以前的雇主中,所有开发都必须在虚拟机上完成,并且不允许在笔记本电脑或台式机上使用源代码。由于有 SSH 代理转发,SSH 比 GPG 更容易使用。

GPG 还因其加密实现的质量而受到一些批评,并且对于使用 SHA-1 进行指纹和某些加密算法肯定存在合理的批评,后者与此处无关。(指纹使用 SHA-1 将在即将发布的 OpenPGP 标准修订版中得到修复。)因此,有些人可能更喜欢使用 OpenSSH,因为它通常在安全性方面享有更好的声誉,并且通常已经在大多数设备上使用。系统。

将 OpenSSH 与安全密钥一起使用也更容易一些,因为大多数安全密钥都支持 FIDO2,从技术上讲,这就是所需的全部。OpenPGP 实现需要一些额外的支持,因此 OpenPGP 在安全密钥上的可用性不太可能。

然而,OpenPGP 的存在时间更长,Git 的支持时间也更长,因此它更容易在旧环境中使用。签署数据还需要更新版本的 OpenSSH,这再次阻碍了其在旧环境中的使用。最后,OpenPGP 和 GnuPG 使存储和验证任意密钥变得更加容易,包括使用 GnuPG 时首次使用时的信任,而 OpenSSH 需要指定的允许签名者列表,该列表必须手动维护。


Von*_*onC 7

另一个区别是您如何在所有平台上安全地跨计算机使用 (GPG/SSH) 密钥来签署您的提交。

这意味着将密钥 (GPG/SSH) 存储在在线同步的Vault中。
否则,在多台计算机上复制/重复使用相同的密钥将是一种不好的做法。

虽然可以在 Vault 中手动导入/附加密钥,但我所知道的用于签署 Git 提交的唯一集成是带有 1Password 和 SSH 密钥(不是 GPG)的 GitHub。

请参阅Thomas Doohmke(GitHub 首席执行官)推文

今天(2022 年 9 月 8 日),我很高兴地宣布我们与 1Password 的新集成以及对 SSH 提交验证的支持。

现在,开发人员可以轻松添加 SSH 密钥来验证提交,并直接从浏览器生成和存储 SSH 密钥。

这是指Marc Mackenbac撰写的 1Password 博客文章“使用 1Password 签署您的 Git 提交” ,其中 1Password 8.9.4 或更高版本将包含一个工具以及编辑您的提交的功能,以便用于签署您的提交:/Applications/1Password.app/Contents/MacOS/op-ssh-sign~/.gitconfigop-ssh-sign

gitconfig 和 1password

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