为什么对 Git 标签进行签名?

8

Git提供了使用GPG私钥签署注解标签的选项,但是仅接受标签声明的来源有什么问题呢?如果标签不修改提交,那么伪装的标签会造成什么损害?


这回答了你的问题吗?在Git中签署标签有什么意义? - Oliver Sieweke
1个回答

11

仅接受标签声称的来源有什么问题吗?

问题在于你无法保证它是正确的,你必须信任每个有权限或没有权限访问存储库的人不会虚假创建标签。签名可以保证(至少尽可能地)创建标签的人就是你认为的那个人。

如果标签不改变提交记录,伪造的标签会造成什么损害?

没有。你似乎混淆了两个不同的概念。标签和提交记录是完全独立的对象——标签指向提交记录,但标签本身并不是提交记录。因此,标签永远不会更改提交记录。这也是潜在的危险所在:虚假标签不会意外更改提交历史,并且更容易被忽视。


1
我认为有趣的点实际上更多地是:由于提交并没有签名,签署标签有什么意义呢?我们可以验证打标签的人是谁,但是我们无法验证提交者,那又有什么意义呢? - slacy
1
@stacy,你似乎在试图主张我们不应该能够签署标签,因为我们不能签署提交——这并没有多少意义。为什么要删除一个功能,只是因为它在其他地方不存在呢?无论如何,假设签署的标签是一个权威人士,他已经审查了该提交的代码状态,并为其可靠性提供了担保。 - Andrew Marshall
1
@slacy,更重要的是,签名标签指向代码库的特定不可变版本。提交本身没有签名,但提交哈希本身是具有密码学安全性的。如果您记下了提交哈希的40个十六进制数字或者能够完美地记住它们,您将永远不需要标签(签名或未签名)。 - Wildcard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接