Git:是否可以伪造标签的签名日期?

14

作为一名科学家,我希望能够保留一些官方记录,记录我何时将某些内容提交到我的Git仓库。这样做是为了日后在专利纠纷等情况中证明谁最先发明了什么。

目前,我会不时地向我的仓库添加一个标签,就像这样:

git tag -s -m "`date`" 2012-08-20

并将标签推送到中央服务器:

git push --tags

向上拉标签会显示我使用密钥签署的日期:

git tag -v 2012-08-20
object 2d6f6035270e8e44c035431e99be8da3fccee095
type commit
tag 2012-08-20
tagger My Full Name <name@institution> 1345466433 +0200

Mon Aug 20 14:40:33 CEST 2012
gpg: Signature made Mon Aug 20 14:40:37 2012 CEST using RSA key ID somekey
gpg: Good signature from "My Full Name <name@institution>"
gpg:                 aka "My Full Name <personal-email>"

我的问题是这些日期有多安全?后续是否可能篡改它们?

编辑:为了进一步澄清,我希望能够证明我稍后不太可能篡改这些标签。


当使用Microsoft Authenticode签名对可执行代码进行签名时,您可以使用“时间戳”服务,该服务验证了签名戳记的时间,只要您信任时间戳服务提供商。我不知道有其他什么方式可以用时间戳进行签名,特别是如果它在法律上具有约束力,但您可以搜索该术语。 - Marcus Adams
3个回答

17
Git保证的是:如果修改日期(或标签的其余部分、附加到它的提交等),标签的SHA1值将发生变化。
但是,为了让这个功能有用,您必须以某种方式证明原始的SHA1标签是什么,并且在声称的发明日期之前已经拥有它
否则,要欺诈性地声称您在1980年1月发明了某物,您只需将计算机的日期倒回到1980年,并创建具有必要提交、标签等的存储库- git 不知道,因为它只能相信系统时钟告诉它的内容。
因此,如果您想证明在过去某个日期之前发明/编写了某些内容,git(单独)无法帮助您,任何形式的签名也不能。你需要可信时间戳。有各种不同的方案,但所有方案都需要一个或多个第三方机构来担保时间戳的正确性。

3

3

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