在 Git 中签署提交是什么意思?即使在阅读了文档之后,我仍然对它的工作原理感到有些困惑。
如果提交已签名,这是否意味着我们可以判断提交中的作者姓名和电子邮件是否准确?
从技术上讲,它仅表示相应私钥的持有者签署了提交。在实践中,可以推断出 1) 所述密钥的持有者是具有可验证声誉的人,2) 该人声称是代码的作者,以及 3) 自签名以来代码没有更改。我对 GPG 密钥持有者如何与他人建立身份的知识非常有限,但这是一般的想法。
你为什么要检查所有这些?如果有问题的软件对某种类型的安全性至关重要,攻击者可能会通过用损坏的软件替换您认为您正在获取的软件来危害您,例如带有您无法轻易识别的后门的软件。毕竟,您需要一些代码,然后单击“下载”,并且您相信通过网络到达的内容就是按钮上所写的内容。但是,理想情况下,攻击者将无法模仿真实作者的签名,因为他们没有作者的私钥。而且他们不能只更改代码而不管签名,因为它涉及代码本身的哈希。
请参阅维基百科上的代码签名。