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(単独)はあなたを助けることはできず、いかなる形式の署名も単独で行うことはできません。必要なのは信頼できるタイムスタンプです。さまざまなスキームがありますが、タイムスタンプの正確さを本質的に保証する1つ以上のサードパーティが必要です。

于 2012-08-20T13:54:17.217 に答える
3

この最近のスレッドでRyanJによって説明されている認定タイムスタンプが必要です。RFC3161(信頼できる)タイムスタンプを使用して、Gitリポジトリのコミットの経過時間を証明するにはどうすればよいですか?

これは、関連するヒントコミットのsha1を記録するための認定された検証済みの方法のようです。

于 2012-08-22T21:17:39.987 に答える
3

http://www.proofofexistence.com/などのサービスを使用して、gitcommitsha1をビットコインブロックチェーンに埋め込むことができます。

于 2015-08-26T08:16:37.047 に答える