git 和私人回购的可信时间戳或 DOI?

git and Trusted Timestamps or DOI for private repo?

我们正在使用 git / github,我们必须能够证明特定的提交/标记是在特定时间之前完成的,我们想使用 Trusted Timestamp 为此,因为它们似乎是实现这一目标的最简单方法。

另一种选择是 DOI,但回购是私人的(由于在内部项目中使用而被禁运)并且只会在稍后阶段 public,但时间戳应该是初始提交/标记。

据我了解,时间戳是根据文件生成的,并创建了一个哈希,稍后可以验证它并证明它是在某个日期和时间创建的。

但我正在努力研究如何在 git / github 中使用这些?

我是否为 git 创建的哈希创建可信时间戳并将其包含在标记中,即在我想要标记的提交之后请求可信时间戳?

我是否将时间戳作为文件添加到提交中,即在提交之前请求它?但是我要用什么来创建可信时间戳呢?

Git 不支持任何开箱即用的功能,但快速扫描您的 link(我没有深入研究 RFC,也没有研究 ANSI X9.95 标准)表明做到这一点的方法是自己进行提交,然后提供原始提交数据——您可以通过 git cat-file -p <em>hash[=33= 获取这些数据]——到生成时间戳的时间戳机构(TSA),并将它生成的任何数据放入带注释的标签中,标记该提交。很容易证明您已将 TSA 的数据存储在带注释的标签中,因为当您打印标签的内容时会显示该数据,然后 TSA 将显示您向他们提供了提交数据。

... But I am struggling on how I can use these in git / github?

您将能够在任何地方进行提交,但您将需要一个本地克隆来获取原始提交文本。提交文本本身如下所示:

$ git cat-file -p HEAD | sed 's/@/ /'
tree 191f960868564ef1f0978328589aa191219f1ab8
parent 96f29521a3908eb80b9552f11f2b75ca34475686
author Junio C Hamano <gitster pobox.com> 1525762230 +0900
committer Junio C Hamano <gitster pobox.com> 1525762789 +0900

The fifth batch for 2.18

Signed-off-by: Junio C Hamano <gitster pobox.com>

它确实是您要在此处保护的 tree 哈希。由于它是您要保护的树哈希,理论上可以将 TSA 的数据直接插入到提交文本中,但这部分比使用带注释的标签要复杂得多。要使用带注释的标签,您只需将完整的提交文本提交给 TSA;他们以任何形式为您提供哈希,然后您将其转换为适合文本的内容以存储在带注释的标签中,就像 Git 使用 GPG 签名一样。

然后您 运行(在本地,在您的存储库中)git tag -a 像往常一样,将文本化的 TSA 数据粘贴到您的标签中,现在您有一个带注释的标签来存储 TSA 数据。要将此数据发送到 GitHub,您只需 git push 标签:

git push origin refs/tags/<tagname>

任何克隆存储库的人都会得到带注释的标签,并且 git 显示 <em>tagname</em>(或 git cat-file -p refs/tags/<em>tagname</em>) 提取注释,其中包含您的文本化 TSA 数据。比较,例如:

$ git show v2.17.0 | sed 's/@/ /'
tag v2.17.0
Tagger: Junio C Hamano <gitster@pobox.com>
Date:   Mon Apr 2 10:14:24 2018 -0700

Git 2.17
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEE4fA2sf7nIh/HeOzvsLXohpav5ssFAlrCZPAACgkQsLXohpav
5suOTg/+I+qxQFmQyi3Ms1VAzM3wefJ9Ut4qBV5TKCu+wY21c4ZvTk9kvmJN+qYK
MDi6smYlCyj7YD1JqbPEyEoUgb/7TjylA9dBVwrCk8HoyAyLQpwixgkZxLLJEEzE
9EpzAg65fHST//DYMr0pZMee9POKL0KU4ekAJKsrfgRF4rA29OwvkrKvNw9DzAQf
gfIBQktNGzGaKhyjS9AdFR7K7N8vy1hGWPWwAWkxRWRwa2vsENdPuqLMstJqUzmP
3OEqA5OFZ7RDr9WrrNORbCN1iIyAQQ7GzZEMwT1mXhHB+b91F0SO766REnkgfwa1
bMgjpqfzAjoSzeafg5t1jAqm+MvgXQNP4KCWsk6ZtstWj7xfgyuhZ2osTdPUNaeT
tqRdhmrShQ+lMY5uuhJHr7kqUvqt3INpE9KD19nmlPvgPbYP5mDpW8oZfEGTM+iw
vCQqE5AZ5SivhEkkSTDgNdFJemvX2QbtRBiG8RyhWTLpRUGp9q1lgD1KJZlxjrdX
ovqGRNhkRowaGVpfoFeFs5256cxB9FkttE5MEj5FoSB8G4/FdUhkm4qTWXP5fZKt
d89PyWvTXn7x8rKFs/XLMscDnc9kCgnyt0ugYZZxjb4Mqs59A6epE+ylX/j9DDFW
6ZfTteMqLRtDtaEntJFQS9CatSoMpdlXUluKvoWcD9uy57WTayQ=
=JgMH
-----END PGP SIGNATURE-----

commit 468165c1d8a442994a825f3684528361727cd8c0 (tag: v2.17.0, origin/maint)
Author: Junio C Hamano <gitster@pobox.com>
[snip rest]

我现在正在使用 OriginStamp which integrates nicely with github as described here in general and at this site 专门用于 github。

如果我理解正确,它会根据 git 生成的哈希值给出可信时间戳并将其存入比特币区块链。