我试图弄清楚一个git版本控制的文本文件库是否理论上可以作为纸质实验室笔记本替代知识产权。
在纸质笔记本中,其工作方式是每天记下您的结果,实验室中的一两个人在笔记上签字并划掉任何空白区域。理论上,这应该表明你对那天所做的事情有一个完美的记录,并且你不能在日期之后添加任何东西。
我认为这可以在git中实现的方式是通过将实验结果(即实验室笔记本)的回购推送到github上的私有共享仓库,以及...不知何故其他两个人检查一下吗? (有关如何执行此操作的建议?)
主要的警告是,(以及,如果是,运行所需的代码)可以完全更改特定文本文件的内容和时间戳 - 而不会离开整个提交历史记录中的跟踪?
答案 0 :(得分:1)
每个git commit都包含一个返回上一个git commit的链接(参见Git Internal - Commit Objects。如果你在过去更改了一个提交,你就会更改之后的每个提交。这会在你推送更新的提交时引起问题
因此可以在git中重写历史记录。但是,如果使用适当设置的git服务器,您应该确信历史记录无法更改。类似于this question。
答案 1 :(得分:0)
你的目标确实是可能的,它至多与SHA-1本身一样安全。
实现这一目标的方法是通过数字签名(可能通过带注释的标签)充当签名者对特定SHA-1 ID的认可。 SHA-1将是最近更新提交的SHA-1,它(通过git&#39的通常Merkle提交ID树)自动覆盖所有以前的SHA-1(除非每天都是重要的,否则这一点很重要)单独存储)。
通常带注释的标签签名使用GPG密钥,这些密钥可能比SHA-1本身更安全。 SHA-1原本打算对所谓的第二个preimage 非常有抵抗力(基本上这意味着攻击者知道原始消息和签名;然后是攻击者提出了具有相同数字签名的第二条不同消息。但是,2005年发现了一些攻击方法,截至2014年,SHA-1因美国联邦数字签名而被取消认证。
在任何情况下都不需要使用git:您可以让验证者为每天的文件存储签名。签名本身可以随意存储(也许通过git);它们独立于任何版本。使用SHA-256或更强的东西可能是明智之举。