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

时间:2016-09-26 16:40:36

标签: git git-commit sign

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

在所描述的模型中,似乎我们希望授权在推送到远程仓库时发生;并且提交签约几乎没有任何好处。

Git SCM手册7.4 Git Tools - Signing Your Work没有说明它正在解决的问题。但它确实告诉我要寻找答案:

  

每个人都必须签名

     

签名标签和提交很棒,但如果你决定使用它   你的正常工作流程,你必须确保你的每个人   团队了解如何这样做。如果你不这样做,你最终会花费一个   很多时候帮助人们弄清楚如何重写他们的提交   签名版本。确保你了解GPG和它的好处   在将此作为标准工作流程的一部分之前进行签名。

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

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

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

1 个答案:

答案 0 :(得分:26)

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

由于只有作者拥有自己的私钥,因此只有他们可以自己签署提交。

如果我相信一个特定的陌生人并且他们签署了他们的提交,我可以信任他们的代码,而不必亲自验证每一行。

考虑一下有人在github上分叉您的存储库然后添加了一堆向您的代码引入安全漏洞的提交。他们使用设置为原作者之一的元组author name, author email, commit name, commit email进行了这些提交。

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

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