我们使用GitHub并向perform commit signing发出请求。在研究了这个过程之后,我不清楚提交签名解决了什么问题。据我了解这个过程,“本地源代码”会被提交到“本地仓库”,并被推送到“远程仓库”。因此,有三个框和两个箭头创建从本地源文件到远程存储库的有向图。对于最终用户,流程是相反的。
在所描述的模型中,似乎我们希望授权在推送到远程仓库时发生;并且提交签约几乎没有任何好处。
Git SCM手册7.4 Git Tools - Signing Your Work没有说明它正在解决的问题。但它确实告诉我要寻找答案:
每个人都必须签名
签名标签和提交很棒,但如果你决定使用它 你的正常工作流程,你必须确保你的每个人 团队了解如何这样做。如果你不这样做,你最终会花费一个 很多时候帮助人们弄清楚如何重写他们的提交 签名版本。确保你了解GPG和它的好处 在将此作为标准工作流程的一部分之前进行签名。
我认为Git工程师已经模拟了Git工作流程。他们发现了一个问题(或问题),他们放置了“提交签名”安全控制来修复它。我想知道他们通过“提交签名”确定了哪些问题并解决了。
我认为发生的事情是人们混淆/混淆Authentication with Authorization或者代码完整性。遗憾的是,身份验证 不是 授权或代码完整性,尽管愿意这样做。
git提交签名解决了什么问题?
答案 0 :(得分:26)
提交签名解决的问题与数字签名文档解决的问题相同:验证其作者的问题。
由于只有作者拥有自己的私钥,因此只有他们可以自己签署提交。
如果我相信一个特定的陌生人并且他们签署了他们的提交,我可以信任他们的代码,而不必亲自验证每一行。
考虑一下有人在github上分叉您的存储库然后添加了一堆向您的代码引入安全漏洞的提交。他们使用设置为原作者之一的元组author name, author email, commit name, commit email
进行了这些提交。
如果没有提交签名,则无法验证他们不是原始作者。
使用提交签名,这些伪造的提交无法签名,因为伪造者没有作者的私钥。