コードが特定の日付に存在したことを証明する方法(コードを公開せずに)
タスク自体はシンプルに言い表せますが、うまく解決するのは難しいものです。ソースコードを公開することなく、また裁判所が自己申告に過ぎないとして退ける可能性のあるログに頼ることなく、特定のコミット、あるいはコードベース全体が特定の日付に存在したことを証明する。このガイドでは、OpenTimestampsプロトコルを使用してGitコミットハッシュをBitcoinブロックチェーンに固定するマネージドGitHub AppであるTimestamp GITを使って、まさにそれを実現する方法を順を追って説明します。
読み終える頃には、Git履歴に対する自動化されたゼロ知識タイムスタンプ処理が手に入ります。監視対象のすべてのコミットには.ots暗号レシート、公開検証ページ、そして法廷で通用する先行技術の証拠への道筋が与えられます。これらすべてを、OpenTimestampsツールをインストールしたり、Bitcoinトランザクションを自分で操作したりすることなく実現できます。
前提条件
始める前に、以下を確認してください。
- GitHubアカウント。
- タイムスタンプを付与したいリポジトリ(公開または非公開)。
- timestampgit.devからTimestamp GIT GitHub Appをインストールするためのアクセス権。
git commitとgit pushの基本的な操作に慣れていること。暗号やブロックチェーンの知識は不要です。- Enterprise ZK Modeの場合:Timestamp GITが提供するGitHub Actionsワークフローファイルと、証明が書き込まれるターゲットリポジトリ。
- オプション:エアギャップ環境またはセルフホスト環境が必要な場合は、Timestamp GIT Dockerライセンス。
料金はユースケースに応じて設定されています。公開リポジトリは無料枠を利用でき、非公開リポジトリはPro Agency(月額49ドル)、GitHub Actionsを使用するEnterprise ZK Modeは月額199ドルからです。
ステップバイステップ:自動タイムスタンプ処理のセットアップ
ステップ1:Timestamp GIT GitHub Appをインストールする
timestampgit.devにアクセスし、GitHub MarketplaceからTimestamp GIT GitHub Appをインストールします。
付与する権限はモードによって異なります。
- Standard Mode:GitHubには「コミットハッシュのみ」という権限がないため、Timestamp GITはソースリポジトリへの読み取り専用アクセスを必要とします。読み取るのはHEADコミットハッシュのみで、ファイルの内容を読み取ることは決してありません。
- Enterprise ZK Mode:Timestamp GITはソースリポジトリへの読み取りアクセスを一切必要としません。証明ファイルが保存される別のターゲットリポジトリへの書き込みアクセスのみが必要です。
どちらのモードでも、ターゲットリポジトリには証明を含む専用ブランチまたはシャドウリポジトリが作成されます。
ステップ2:監視するリポジトリを選択する
インストール後、timestampgit.dev/reposでリポジトリダッシュボードを開きます。監視可能なリポジトリが表示されます。
自動的にタイムスタンプを付与するソースリポジトリを選択します。証明用に別のシャドウリポジトリを使用する場合は、それをターゲットとして選択します。
ステップ3:デプロイモードを選択する
Timestamp GITには2つのモードがあります。
- Standard Mode:GitHub AppがWebhookを介して新しいコミットを自動的に検出し、コミットハッシュのみを読み取ります。
- Enterprise ZK Mode:短いGitHub Actionが自社のインフラストラクチャ上で実行され、コミットハッシュのみをTimestamp GIT APIにプッシュします。ソースコードが環境の外に出ることはありません。
ほとんどのチームにとって、Standard Modeが最速の方法です。厳格なコンプライアンス要件や非公開ソース環境では、Enterprise ZK Modeがより強力なゼロ知識オプションとなります。
ステップ4:Enterprise ZK Modeの場合、GitHub Actionsワークフローを追加する
Enterprise ZK Modeを選択した場合、Timestamp GITは12行のワークフローファイルを提供します。簡略化したバージョンは以下のようになります。
# .github/workflows/timestamp-git.yml
name: timestamp-git
on:
push:
branches: ["**"]
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- name: Send commit hash to Timestamp GIT
env:
TIMESTAMP_GIT_SIGNED_URL: ${{ secrets.TIMESTAMP_GIT_SIGNED_URL }}
run: |
curl -f -X POST "$TIMESTAMP_GIT_SIGNED_URL"
実際のワークフローでは、Timestamp GITダッシュボードで生成された署名付きURLを使用します。そのURLにはHMAC値とコミット識別子が含まれているため、Actionがソースコードを扱うことはなく、ハッシュのみを扱います。
ステップ5:コミットを作成する
通常のコミットを作成し、監視対象のリポジトリにプッシュします。
git add .
git commit -m "feat: add rate limiter"
git push origin main
Standard Modeでは、GitHub AppがWebhookを通じて新しいコミットを検出します。Enterprise ZK Modeでは、プッシュが発生するとすぐにGitHub ActionがコミットハッシュをTimestamp GIT APIにプッシュします。
ステップ6:夜間バッチ処理を待つ
Timestamp GITは、すべてのコミットをリアルタイムで個別に固定するわけではありません。代わりに、夜間のcronワーカーが深夜に実行されます。
- 保留中のすべてのコミットハッシュを収集します。
- それらを日次マニフェストファイルにグループ化します。
- Merkleツリーを構築します。
- 公開OTSカレンダーを使用してOpenTimestamps証明を作成します。
- MerkleルートをBitcoinブロックチェーンに固定します。
Bitcoinの承認には通常約3時間かかります。その後、証明は不変となり、Timestamp GITやあなたを含むいかなる主体も変更することはできません。
ステップ7:証明を取得する
夜間プロセスが完了すると、Timestamp GITはマニフェストと.otsレシートファイルを専用のタイムスタンプブランチまたはシャドウリポジトリにプッシュします。
Timestamp GITダッシュボードから証明ファイルを直接ダウンロードすることもできます。主な成果物は以下の通りです。
- コミットハッシュを含む日次マニフェストファイル。
- 固定された各バッチの
.otsレシートファイル。 - Bitcoinブロックとトランザクション情報を示す監査メタデータ。
動作確認の方法(検証)
検証は、Timestamp GITがGitハッシュを弁護士、監査人、裁判所に見せられるものに変える場面です。
リポジトリステータスページを確認する
https://timestampgit.dev/status/{user}/{repo}を開きます。この公開ダッシュボードには以下が表示されます。
- 最新の固定されたBitcoinブロックとトランザクションの詳細。
- リポジトリの最古の固定日付。
- 日次タイムスタンプ処理の規則性。
- 固定されたコミットのカレンダーヒートマップ。
- ダウンロード可能な監査CSVとPDF証明書。
ブラウザベースのMerkle検証を実行する
特定の日について、https://timestampgit.dev/verification/{user}/{repo}/{date}を開きます。このページでは、Merkleチェーンの検証をステップバイステップで案内します。
すべての計算はブラウザ内でローカルに実行されます。Timestamp GITが検証内容を見ることは決してありません。ゼロ知識の検証フローです。
正式な記録をダウンロードする
ダッシュボードまたはAPIを使用して、以下をダウンロードできます。
- 特定の日付のPDF証明書。
- 完全な監査台帳(CSV形式)。
これらは契約紛争、IPデューデリジェンス、法的証拠開示に役立ちます。
READMEに検証バッジを追加する
Timestamp GITは、https://timestampgit.dev/connected/{user}/{repo}から埋め込み可能なShields.ioバッジスニペットを提供します。生成されたMarkdownをREADMEに配置して、検証ステータスを公開表示できます。
非公開リポジトリでは、バッジURLに暗号化されたHMACが付加されることに注意してください。非公開リポジトリのステータスを確認できるのは許可されたユーザーのみです。
独立した検証
Timestamp GITのインターフェース外で検証したい場合は、.otsレシートファイルをダウンロードし、標準のOpenTimestamps検証ツールをBitcoinブロックチェーンに対して実行できます。製品のブラウザベースの検証ページがすでにこれを処理してくれますが、レシートは永遠に独立して検証可能です。
一般的な問題のトラブルシューティング
コミットが検出されない
GitHub Appが正しいリポジトリにインストールされており、モードに必要な権限を持っていることを確認してください。GitHubの設定で、Webhook配信を確認し、Timestamp GITがプッシュイベントを受信したかどうかを確認します。
1日経っても証明が表示されない
Bitcoinへの固定には数時間(通常約3時間)かかることを忘れないでください。夜間のcronジョブが実行され、ターゲットブランチに新しいファイルが届いたことを確認してください。Standard Modeの場合は、ターゲットリポジトリが書き込み可能であることを確認してください。
バッジが「未検証」と表示される
リポジトリが非公開の場合、バッジウィジェットからHMAC署名付きURLを使用しない限り、公開バッジは機能しません。公開リポジトリの場合は、Timestamp GITが生成した正確なスニペットを使用していることを確認してください。
Enterprise ZK Modeでハッシュが送信されない
GitHub Actionsのワークフローログを開き、エラーを確認してください。以下を確認します。
- リポジトリシークレット内の署名付きURLがまだ有効であること。
- ターゲットリポジトリに到達可能であること。
- ワークフローが正しいプッシュイベントで実行されていること。
セルフホストDockerインスタンスの問題
Dockerイメージを実行している場合は、Composeのセットアップとログを確認してください。
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
また、ライセンスファイルが有効で、期待される場所にマウントされていることも確認してください。アプリは起動後、http://localhost:8080で利用可能です。
よくある質問
Timestamp GITはコードを見ることなく、コードが特定の日付に存在したことをどのように証明するのですか?
Timestamp GITはGitコミットハッシュ(一方向の暗号学的フィンガープリント)のみを抽出し、そのハッシュをBitcoinブロックチェーンに固定します。実際のソースコードがリポジトリの外に出ることはありません。ハッシュは元に戻してコードを明らかにすることができないため、タイムスタンプはそのハッシュがその時点で存在したことを証明し、それによってコードが存在したことを証明します。
非公開リポジトリでもTimestamp GITを使用できますか?
はい。Timestamp GITには非公開リポジトリ向けのプランがあります。Standard Modeでは、GitHub Appがコミットハッシュを検出するためにソースリポジトリへの読み取りアクセスを必要としますが、ファイルの内容を読み取ることは決してありません。Enterprise ZK Modeでは、GitHub ActionがコミットハッシュのみをAPIに送信するため、アプリがソースリポジトリにアクセスすることは一切ありません。
Timestamp GITが事業を停止したらどうなりますか?タイムスタンプはまだ検証できますか?
タイムスタンプは永遠に検証可能です。証明はBitcoinブロックチェーンとOpenTimestampsプロトコルに基づいており、どちらもTimestamp GITから独立しています。.otsレシートファイルをダウンロードし、標準のOpenTimestampsツールを使用してBitcoinブロックチェーンに対してローカルで検証できます。Timestamp GITのサーバーに依存する必要はありません。
タイムスタンプは法廷で法的拘束力がありますか?
いかなるタイムスタンプも特定の法的結果を保証することはできません。しかし、Bitcoinブロックチェーンに固定された暗号学的タイムスタンプは、ある時点における存在の強力な証拠としてますます認識されています。先行技術や著作者の主張を裏付けるために法的手続きで提示できる、改ざん不可能で数学的に検証可能な記録を提供します。管轄区域における証拠能力については、法律顧問に相談する必要があります。
まとめ
これで、Timestamp GITを使用したGitコミットの自動ゼロ知識タイムスタンプ処理がセットアップされました。脆弱な内部ログを維持したり、暗号プロトコルを手動で学習したりする代わりに、GitHub Appを一度インストールし、リポジトリを接続し、夜間プロセスにコミットハッシュをBitcoinに固定させます。
その結果は、ベンダーから独立した、ソースコードを公開せずに生成される、不変の先行技術の証明です。公開リポジトリの無料枠から始めるか、エアギャップインフラストラクチャが必要な場合はDockerセルフホストオプションを検討してください。
より深く掘り下げるには、以下の関連記事をご覧ください。
関連記事
- Protect Your Startup from Patent Trolls with Git Timestamping
- How Dev Shops Can Prove Work Delivery with Timestamp GIT
- Proof of Existence for Code: What It Is and Why It Matters