1

私は、git バージョンで管理されたテキスト ファイルのリポジトリが、理論的には、知的財産の目的で紙の実験ノートの代替品として機能できるかどうかを把握しようとしています。

紙のノートに毎日結果を書き留め、研究室の 1 人か 2 人がノートにサインオフし、空白を消します。理論的には、これは、その日に行ったことの完全な記録があり、その日付以降は何も追加できないことを示しているはずです。

これを git で実装できると私が考えている方法は、実験結果 (つまり、ラボ ノート) を含むリポジトリを作成し、それを github のプライベート共有リポジトリにプッシュすることです。(これを行う方法に関する提案はありますか?)

主な注意点は、全体的なコミット履歴に痕跡を残さずに、特定のテキスト ファイルの内容とタイムスタンプを完全に変更することは可能ですか (そうであれば、実行する必要があるコードは何ですか)。

4

2 に答える 2

1

各 git commit には、以前の git commit へのリンクが含まれています ( Git Internal - Commit Objectsを参照してください。過去にコミットを変更すると、その後のすべてのコミットが変更されます。これにより、更新されたコミットをプッシュするときに問題が発生します。

というわけでgitで履歴を書き換えることが可能です。ただし、適切にセットアップされた git サーバーを使用すると、履歴を変更できないという確信が持てるはずです。この質問のようなもの。

于 2016-02-05T05:11:18.407 に答える
0

あなたが目指していることは実際に可能であり、せいぜいSHA-1自体と同じくらい安全です.

これを実装する方法は、特定の SHA-1 ID の署名者の保証として機能するデジタル署名 (おそらく注釈付きタグを介して) を使用することです。その SHA-1 は、最新の更新コミットの SHA-1 であり、(コミット ID の git の通常のマークル ツリーを介して) 以前のすべての SHA-1 も自動的にカバーします (毎日が別々に保存されない限り、これは重要ではありません)。

通常の注釈付きタグ署名は GPG キーを使用しますが、これは SHA-1 自体よりも安全である可能性があります。SHA-1 は当初、いわゆる2 番目のプリイメージに対して非常に耐性があることを意図していました(基本的に、これは、攻撃者が元のメッセージ署名の両方を知っていることを意味します。攻撃者は、同じデジタル署名を持つ 2 番目の別のメッセージを考え出します。 )。ただし、いくつかの攻撃方法は 2005 年に発見され、2014 年の時点で、SHA-1 は米国連邦政府のデジタル署名の目的で認証が解除されました。

いずれにせよ、git を使用する必要はありません。認証者に毎日のファイルの署名を保存してもらうだけです。署名自体は好きなように保存できます (おそらく git 経由)。それらはバージョン管理から独立しています。ただし、SHA-256 またはより強力なものを使用するのがおそらく賢明です。

于 2016-02-05T05:38:23.627 に答える