Gitコミットタイムスタンプの検証方法
Gitのコミットタイムスタンプは、驚くほど簡単に偽造できます。GIT_AUTHOR_DATEやGIT_COMMITTER_DATEを設定したり、ブランチをリベースしたり、プッシュ前にコミットメタデータを編集したりするだけで済みます。法的紛争やコンプライアンス監査において、通常のGitログが証明できることはほとんどありません。
だからこそ、検証はアンカリングそのものよりも重要です。アンカリングはコミットハッシュをBitcoinブロックチェーンに記録します。検証は、あなた、監査人、または裁判所が、特定のコミットハッシュが特定の時点で特定のBitcoinブロックに確かに含まれていたことを確認できるステップです。この記事では、プロセス全体を自動化し、ブラウザベースのツール、バッジ、公開APIを提供するマネージドGitHub AppであるTimestamp GITを使用した検証ワークフローに焦点を当てます。
Gitコミットタイムスタンプに検証が重要な理由
標準的なGit履歴は、完全に制御できないサーバー上に存在します。リポジトリホスティングプラットフォーム、管理パネル、ローカルリポジトリは変更可能です。悪意のある行為がなくても、マージ、スカッシュ、データ移行の際にタイムスタンプが誤って移動することがあります。
暗号学的アンカリングは状況を一変させます。Timestamp GITがリポジトリを処理する際、Gitのコミットタイムスタンプには依存しません。コミットハッシュ——リポジトリの正確な状態を示す暗号学的に安全なフィンガープリント——を取得し、そのハッシュを日次マニフェストに含めます。マニフェストハッシュはMerkleツリーにコミットされ、MerkleルートはOpenTimestampsプロトコルを使用してBitcoinブロックにアンカリングされます。
検証は次の3つの質問に答えます。
- このコミットハッシュは日次マニフェストに存在するか?
- Merkle証明はそのマニフェストハッシュをアンカリングされたMerkleルートに接続するか?
- そのMerkleルートは確認済みのBitcoinブロックに含まれているか?
3つのチェックがすべて通れば、そのコミットがその日付までに存在していたという数学的証拠が得られます。これがソフトウェアIPにとってなぜ重要なのか、より深い背景が必要であれば、What Is Cryptographic Prior Art and Why Does It Matter for Software?を参照してください。
Timestamp GITは生のOpenTimestampsワークフローを隠蔽します。CLIをインストールしたり、手動でスタンピングコマンドを実行したり、Bitcoinトランザクションを作成したりする必要はありません。GitHub Appがコミットを検出し、毎晩バッチ処理し、標準化された証明ファイルをリポジトリに書き戻します。
Timestamp GITの証明の構成
Timestamp GITの証明は単一のファイルではありません。独立した検証を可能にする小さな成果物の集合です。
核となるコンポーネントは以下の通りです。
- コミットハッシュ:1つの特定のコミットを識別するSHA-1またはSHA-256ハッシュ。
- 日次マニフェストファイル:その日付のリポジトリの保留中のコミットハッシュをすべて含むプレーンテキストファイル。
- Merkleツリー:リポジトリ全体の日次マニフェストハッシュから構築されるネイティブMerkleツリー。
- OpenTimestampsレシート:マニフェストハッシュをBitcoinブロックに暗号学的にリンクする
.otsファイル。 - Bitcoinブロック情報:アンカーのブロック高、トランザクションデータ、確認ステータス。
証明は、設定に応じて専用のtimestampsブランチまたはシャドウリポジトリに書き込まれます。特定の日の典型的な証明ディレクトリは次のようになります。
timestamps/
2026-09-20/
manifest.txt
receipt.ots
.otsレシートは、SHA-256の数学とBitcoinブロックデータのみを使用して、後から誰でも検証できるという意味で自己完結的です。独自技術もロックインもありません。Timestamp GITが明日消滅しても、証明ファイルは存在し続け、Bitcoinブロックチェーンに対して検証可能です。
アンカリングされるのはコミットハッシュのみであるため、証明にソースコードは含まれません。検証フローはリポジトリの内容ではなく、ハッシュに対して動作します。
Timestamp GITのツールを使用したステップバイステップの検証
Timestamp GITは複数の検証パスを提供します。クイックチェックにはビジュアルダッシュボード、コンプライアンスにはレポートのダウンロード、自動化にはAPIクエリを使用できます。
ステップ1:リポジトリステータスページを開く
接続されたすべてのリポジトリには、次の場所に公開または認証済みのステータスページがあります。
https://timestampgit.dev/status/{user}/{repo}
このページには、最古のアンカー日付、証明の継続期間、日次の規則性、Bitcoinブロックとトランザクションデータ、カレンダーヒートマップが表示されます。同じページから監査CSVやPDF証明書をダウンロードできます。
クイックステータスチェックには、通常ここが最速の出発点です。リポジトリがプライベートの場合、URLには暗号化されたHMACが含まれ、許可された閲覧者のみがアクセスできます。
ステップ2:READMEで検証バッジを使用する
リポジトリを接続すると、Timestamp GITは埋め込み可能な検証バッジを生成できます。バッジはREADMEに最新の検証ステータスを直接表示し、クリックすると検証ページまたはステータスダッシュボードに移動します。
バッジのマークアップは、リポジトリ接続ページまたはバッジAPIを通じて自動生成されます。シールドURLを手書きするのではなく、Timestamp GITが生成したMarkdownスニペットをコピーしてください。これにより、HMAC署名付きプライベートリポジトリURLの間違いを防げます。
ステップ3:ブラウザでMerkleチェーンを検査する
特定の日付について、以下を開きます。
https://timestampgit.dev/verification/{user}/{repo}/{date}
このページでは、多層Merkleチェーンの検証を順を追って確認できます。コミットハッシュ、日次マニフェストハッシュ、中間Merkleノード、Bitcoinブロックアンカーが表示されます。
すべての計算はブラウザ内でローカルに実行されます。Timestamp GITはどのハッシュを検証しているかを認識せず、ソースコードがどこかに送信されることもありません。このページは、コミットハッシュがマニフェストに属しているか、マニフェストがアンカリングされたルートに接続されているかを確認します。
ステップ4:PDF証明書または監査CSVをダウンロードする
コンプライアンス記録、法的監査、内部文書化のために、Timestamp GITは2つのダウンロード可能な成果物を提供します。
- PDF証明書:アンカー日付と検証ステータスを示す単日証明書。
- 監査CSV:リポジトリのすべてのアンカリングされたコミットと日付の完全な台帳。
これらは、証拠を申請書に添付したり、クライアントに証明を送信したり、オフライン記録を保存したりする必要がある場合に役立ちます。
ステップ5:公開APIでプログラム的に検証する
Timestamp GITは自動化のための公開APIエンドポイントを公開しています。公開リポジトリの場合、curlで直接ステータス情報をクエリできます。
最後にアンカリングされたBitcoinブロックを確認する:
curl https://timestampgit.dev/api/statusLast/your-org/your-repo
コミット済みおよびスタンプ済みコミットの総数を確認する:
curl https://timestampgit.dev/api/statusCount/your-org/your-repo
Shields.ioバッジにも使用される複合ステータスサマリーを取得する:
curl https://timestampgit.dev/api/statusSummary/your-org/your-repo
特定の日付の完全なMerkleチェーンデータを取得する:
curl https://timestampgit.dev/api/verify/your-org/your-repo/2026-09-20
プライベートリポジトリの場合、エンドポイントはURLに暗号化されたHMACを必要とします。HMACはサーバーインスタンスごとに生成され、許可されたユーザーのみがそれらのリポジトリのステータスにアクセスできます。
検証結果とエッジケースの解釈
検証が成功するということは、次のチェーンが無傷であることを意味します。
- コミットハッシュがマニフェストに存在する。
- マニフェストハッシュがMerkleツリーに正しく含まれている。
- MerkleルートがOpenTimestampsを介してBitcoinブロックにアンカリングされている。
- そのBitcoinブロックがブロックチェーンで確認されている。
これらの条件が満たされれば、コミットタイムスタンプはBitcoinの不変性によって裏付けられます。
理解しておくべきタイミングとアクセスに関するエッジケースがいくつかあります。
日次バッチのカットオフ。 コミットは毎晩収集され、アンカリングされます。特定の日のカットオフ後に作成されたコミットは、翌日のアンカーに表示されます。期待した日にコミットが見つからない場合は、翌日の検証ページを確認してください。
Bitcoin確認の遅延。 アンカリングは1日1回行われますが、Bitcoinでのアンカーの確認には通常約3時間かかります。証明ファイルは確認後に書き戻されるため、検証は夜間バッチの数時間後に利用可能になります。
プライベートリポジトリ。 プライベートリポジトリのステータスおよび検証URLはHMAC署名付きパスを使用します。同僚がステータスページを開けない場合、暗号化されたリンクまたはGitHub Appを通じたリポジトリへのアクセスが必要である可能性があります。
ゼロ知識検証。 検証がソースコードを明らかにすることはありません。それはハッシュがその時点で存在していたことを証明するものであり、コードに何が含まれていたかを証明するものではありません。これは意図的なものです。証明は開示ではなく存在に関するものです。
検証が失敗した場合は? 検証の失敗は、コミットが日次バッチに含まれていなかったか、証明ファイルが不完全であるか、データが改ざんされたことを意味する可能性があります。まず、正しい日付のリポジトリステータスページを確認してください。アンカーが欠落しているか破損している場合は、Timestamp GITサポートに連絡してください。
FAQ
Timestamp GITでGitコミットタイムスタンプを検証するには?
Timestamp GITのリポジトリステータスページにアクセスするか、READMEの検証バッジをクリックするか、公開APIエンドポイントを使用することで、コミットタイムスタンプを検証できます。検証ページにはMerkleチェーンが表示され、ブラウザ内でローカル検証が可能です。
ソースコードを公開せずにコミットタイムスタンプを検証できますか?
はい。Timestamp GITはソースコードではなくコミットハッシュのみを使用します。検証はハッシュとBitcoinブロックチェーンに対して実行されるため、コードはプライベートなままです。
コミットタイムスタンプが検証可能になるまでどのくらいかかりますか?
タイムスタンプは毎晩アンカリングされ、Bitcoinの確認には通常約3時間かかります。その後、証明が利用可能になり検証可能になります。
検証が失敗した場合はどうすればよいですか?
検証が失敗した場合、コミットが日次バッチに含まれていなかったか、証明が破損している可能性があります。詳細はリポジトリステータスページを確認するか、Timestamp GITサポートに連絡してください。
結論:Git履歴を信頼しつつ検証する
Bitcoinにアンカリングされたコミットハッシュは、後で検証できて初めて有用です。Gitのタイムスタンプだけでは弱い証拠です。暗号学的証明は強力ですが、それは検証パスが明確で、再現可能で、独立している場合に限ります。
Timestamp GITは、その検証パスを実用的なワークフローに変えます。GitHub Appを一度インストールし、リポジトリを接続すれば、すべてのコミットが毎晩自動的にアンカリングされます。証明が必要なときは、ステータスダッシュボードを開く、バッジをクリックする、ブラウザでMerkleチェーンを検査する、PDF証明書をダウンロードする、APIエンドポイントを呼び出す、のいずれかが可能です。
開発者、スタートアップ、エージェンシー、コンプライアンスチームにとって、これはBitcoinアンカリングの数学的保証を犠牲にすることなく手動作業を排除します。次のステップが自分のコミット履歴を保護することであれば、GitHub Appをインストールするか、料金ページを確認してください。
関連記事
- Automatically Timestamp Git Commits with a GitHub App
- What Is Cryptographic Prior Art and Why Does It Matter for Software?
- How to Prove Code Existed at a Specific Time (Without Revealing It)