2016-02-05 40 views
1

我想弄清楚一个git版本控制文本文件的存储库是否理论上可以作为知识产权用途的纸质实验室笔记本替代品。是否有可能完全修改存储库中文件的git时间戳?

在一个纸质笔记本中,它的工作方式是每天写下结果,并且实验室中的一两个人在笔记上签字并划掉任何空白区域。从理论上讲,这应该表明你有一个完美的记录,说明你当天做了什么,并且在日期之后你不能添加任何东西。

我认为这可以在git中实现的方式是通过回购实验结果(例如实验室笔记本),将其推送到github上的私有共享库,以及...另外两个人检查关闭它? (关于如何做到这一点的建议?)

主要告诫是有可能(如果是的,什么是需要运行的代码)彻底改变一个特定文本文件的内容和时间戳 - 在整个提交历史中不留下痕迹?

+0

与我挣扎的要求是从一个所有数据的持久承诺下。通常情况下,Git允许在提交中修改文件的任何部分,因此审核人员可以有意或无意地删除实验数据。 –

+0

换句话说,从实验室笔记本页实际上具有从_several_状态“提交”(发端,审阅和修改),而在GIT中单个提交表示在单个状态的页面。 –

+0

@TimBiegeleisen我对你的问题有点困惑。因此,在一个完美的世界(理论上在目前的基于纸张的世界),实验室笔记本拥有提交的每一天的鼻祖。审查人员只是做了相当于用他们的签名来确认时间戳。 – dvanic

回答

1

每个git的承诺包含一个链接回以前的git的承诺(见Git Internal - Commit Objects。如果你改变你必须改变每一个承诺之后即来到过去的提交。当你把更新提交这会导致一些问题。

所以有可能改写历史的饭桶。但是用适当的设置git的服务器,你应该是有一定的信心,历史是不能改变的。喜欢的东西this question

0

你瞄准了是事情的确有可能,并且它最多和SHA-1一样安全。

实现此目的的方法是通过数字签名(可能通过注释标签)充当签名者对特定SHA-1 ID的认可。 SHA-1将是最近一次更新提交的SHA-1,它通过git通常的提交ID Merkle树自动覆盖所有以前的SHA-1(除非每天单独存储,否则这个问题不重要)。

通常带注释的标签签名使用GPG密钥,它们可能比SHA-1本身更安全。 SHA-1最初的目的是反对所谓的秒原像(相当耐基本上,这意味着攻击者知道这两个原始消息签名;然后,攻击者与第二出现,不同的消息有相同的数字签名)。但是,2005年发现了一些攻击方法,截至2014年,SHA-1取消了美国联邦数字签名的认证。

在任何情况下都不需要使用git:您可以简单地让您的验证者为每天的文件存储签名。签名本身可以存储,但是你喜欢(也许通过git);它们独立于任何版本控制。使用SHA-256或更强大的东西可能是明智的。

相关问题