Git 提交签名解决了什么问题或威胁?

Git 提交签名解决了什么问题或威胁?,git,git-commit,sign,Git,Git Commit,Sign,我们使用GitHub,我们有一个请求。在研究了这个过程之后,我不清楚提交签名解决了什么问题。据我所知,在这个过程中,有“本地源代码”被提交到“本地回购”,然后被推送到“远程回购”。因此,有三个框和两个箭头创建了从本地源文件到远程存储库的定向图。对于最终用户,流程是反向的 在所描述的模型中,似乎我们希望授权发生在推送到远程回购时;而签约几乎没有任何好处 Git SCM手册没有说明它正在解决的问题。但是,它确实告诉我要寻找答案: 每个人都必须签名 对标记和提交进行签名很好,但是如果您决定在 在您的正

我们使用GitHub,我们有一个请求。在研究了这个过程之后,我不清楚提交签名解决了什么问题。据我所知,在这个过程中,有“本地源代码”被提交到“本地回购”,然后被推送到“远程回购”。因此,有三个框和两个箭头创建了从本地源文件到远程存储库的定向图。对于最终用户,流程是反向的

在所描述的模型中,似乎我们希望授权发生在推送到远程回购时;而签约几乎没有任何好处

Git SCM手册没有说明它正在解决的问题。但是,它确实告诉我要寻找答案:

每个人都必须签名

对标记和提交进行签名很好,但是如果您决定在 在您的正常工作流程中,您必须确保 团队了解如何做到这一点。如果你不这样做,你最终会花一大笔钱 花大量时间帮助人们了解如何重写他们的提交 有签名的版本。确保您了解GPG和 在将其作为标准工作流程的一部分之前进行签名

我认为Git工程师已经对Git工作流进行了建模。他们发现了一个(或多个)问题,并放置了“提交签名”安全控件来解决它。我想知道他们通过“提交签名”发现并解决了哪些问题

我认为发生的事情是人们混淆/混淆了代码的完整性。不幸的是,身份验证不是授权或代码完整性,尽管愿意这样做


git提交签名解决了什么问题?

提交签名解决的问题与对文档进行数字签名解决的问题相同:验证其作者的问题

因为只有作者有自己的私钥,所以只有他们才能以自己的身份对提交进行签名


如果我信任某个特定的提交人,并且他们已经签署了他们的提交,我就可以信任他们的代码,而无需手动验证每一行


考虑这样一种情况,有人在github上分叉了您的存储库,然后添加了一堆提交,这给您的代码带来了安全漏洞。他们将元组
author name、author email、commit name、commit email
设置为原始作者之一,进行这些提交

如果没有提交签名,就无法验证他们不是原始作者


使用提交签名,这些伪造的提交无法签名,因为伪造者没有作者的私钥。

@jww然后想出一个更好的标题,并且不要故意拼写错误来绕过限制词列表。他可以使用您的姓名和电子邮件地址创建GPG密钥,但是这样一个密钥与以前应该传播的公钥不匹配,无论是通过存储库本身还是通过其他方式。@jww这不是GPG密钥的工作方式。任何人都可以代表您创建密钥,但没有人会相信它实际上是您的密钥。事实上,当您修复入侵者造成的损坏时,您将能够查看所有提交,并轻松识别使用错误密钥签名的提交。签名提交并不是为了防止人们闯入回购协议的中央存储库,他们与此无关。他们在密码上确定谁是提交人。我觉得这个问题的动机有点不清楚。你可以问这个项目试图解决什么问题,这确实是一个非常广泛的问题,或者你可以把它放在这个项目认为存在什么问题的范围内,这样签名提交就是一个解决方案。我想问的是,你能在这里描述一下实际问题,而不是你对解决方案的看法,并将其置于解决方案的上下文中吗?@meagar-我补充了其他信息。请确保它改进了问题。这是真正的努力;而且不轻率。谢谢你在过去抽出时间。不感谢您的努力是不礼貌的。同样,签名标签(特别是在剪切发行版时)是一种可验证的迹象,表明该点是由人们信任的人标记的,以便他们能够确保发行版获得批准。@NoufalIbrahim,感谢您将此添加为评论。我最初没有提到这一点,因为OP专门询问了签名提交,但它在git中同样有效地使用签名。不客气。我在培训时经常用这个例子来说明提交“v1.1”的作者和标记“v1.1”的创建者之间的区别,以及如果构建在此中断,是谁的错。@jww,这是一个准确的总结,是的。由于您的库包含加密工具,这也可能使使用您的工具的加密人员感到更舒适,因为他们至少有机会验证提交的作者身份。“如果我信任某个特定的提交人,并且他们已经签署了提交,我可以信任他们的代码,而不必手动验证每一行。”--GPG签名并没有消除代码审查的需要:)事实上,我要说的是,您可以相信,它实际上是提交者提交的代码,而不是其他人。