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>"

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

编辑:为了进一步澄清,我希望能够证明我以后篡改标签的可能性很小。

4

3 回答 3

17

Git 保证的是:如果日期(或标签的其余部分,或附加到它的提交等)发生更改,则标签的 SHA1 将更改。

然而,为了使它有用,您必须以某种方式证明原始 SHA1 标签是什么,并且您在声称的发明日期已经拥有它

否则,为了欺骗性地声称您在 1980 年 1 月发明了某些东西,您可以将计算机的日期倒回到 1980 年,并使用必要的提交、标签和所有内容创建存储库 - git 不会知道,因为它只能相信系统时钟告诉的信息它。

因此,如果您想证明您在过去某个日期之前发明/编写了某些东西,git(单独)无法帮助您,任何形式的单独签名也无法帮助您。您需要的是Trusted timestamping。有各种不同的方案,但都需要一个或多个第三方来保证时间戳的正确性。

于 2012-08-20T13:54:17.217 回答
3

您想要的是 Ryan J 在这个最近的线程中描述的经过认证的时间戳如何使用 RFC3161(可信)时间戳来证明我的 Git 存储库中提交的年龄?

这似乎是一种经过认证的、经过验证的记录相关提示提交的 sha1 的方式。

于 2012-08-22T21:17:39.987 回答
3

你可以使用http://www.proofofexistence.com/之类的服务将你的 git commit sha1 嵌入到比特币区块链中。

于 2015-08-26T08:16:37.047 回答