TgWitness / ドキュメント

ドキュメント / 08

証拠の仕組みをご覧ください

メッセージは変更される可能性があります。しかし、あなたが確認した内容の記録は、いつでも検証可能な状態で残しておく必要があります。

以下の2つの小規模な実験をご覧ください。これらは架空のメッセージを使用しており、ブラウザ上で動作し、Telegramには一切接続しません。

1つのメッセージ、3つの観察点

Telegramから新しいメッセージ、編集通知、削除通知が届くと、コレクターはこれら3つの観測結果を個別に追加します。編集が行われても、最初の記録は上書きされません。削除通知があっても、その記録は消去されません。

01 / メッセージの経路説明用のシーケンス
Telegram delivers an update to the collector, which appends a journal record. Telegramコレクタージャーナル 更新 →追加 →
現在のチャット画面 メッセージ #42
メッセージが削除されました

そのメッセージはチャット画面から消えました。

観察記録 3件の記録
  1. 01
    message.new

    10:00に集合してください。

    ✓
  2. 02
    message.edited

    11:00にお会いしましょう

    ✓
  3. 03
    message.deleted

    #42 に関する削除通知

    ✓

記録された3つの観察事項はすべて、ジャーナルに残ります。

すでに選択済みのソースに対する簡略化された手順です。運用記録も実際のジャーナルと共有されます。記録内容は、アカウントが閲覧できる範囲およびTelegramが配信する内容によって異なります。

削除通知には、信頼できる削除時刻も、メッセージを削除した人物も記載されていません。これらの情報を不明なままにしておくことで、観察と推測との区別が保たれます。

記録を変更する。ハッシュを追跡する。

各レコードには、前のレコードのハッシュが含まれています。そのレコード自身のハッシュは、そのリンクを含むイベントフィールド全体をカバーしています。外部に保持されたチェックポイントは、特定のジャーナルの長さと先頭ハッシュを固定します。

02 / HASH-CHAIN SANDBOX実際の SHA-256 · 記録例
記録 01メッセージを受信しましたh₁ = SHA-256(e₁)64個のゼロへのリンク
RECORD 0211:00にお会いしましょうh₂ = SHA-256(e₂)h₁を含みます
RECORD 03削除が確認されましたh₃ = SHA-256(e₃)h₂を含みます
他所に保存済み3件の記録 · ヘッダー h₃この固定境界を、提供されたジャーナルと比較してください。

イベントを変更すると、そのハッシュが変更されます。チェーンを再構築すると、その先頭が変更されます。末尾を削除すると、残されたチェックポイントよりも短くなります。

このサンドボックスでは、署名ではなくハッシュを計算します。実際の検証ツールでは、各イベントの Ed25519 署名、シーケンス、およびリンクもチェックされます。ハッシュを再構築するだけでは、信頼された鍵の下で有効な署名を作成することはできません。

実際のルールを数行でまとめると

HASH + 署名
h0 = 064
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))

Cは、9つのイベントフィールドをUTF-8形式のJSONとしてシリアライズします。キーはソート済みで、余分な空白はなく、ASCIIエスケープもNaN/無限大も含まれません。イベントのprevious_hashはhi−1です。表示されているh0は64個のゼロ文字を意味し、署名は32バイトの生のダイジェストをカバーしています。

9つのフィールドは、seq、observed_at、source_at、kind、chat_id、message_id、actor_id、payload、previous_hashです。これはTgWitnessで規定されているJSONエンコーディングです。ハッシュおよび署名自体は、ハッシュ入力フィールドではありません。

保持されたチェックポイント
Nexport ≥ Ncheckpoint
hexport[Ncheckpoint] = Hcheckpoint

固定されたコレクターキーの下にあるチェックポイントの署名を検証し、その境界を検証済みのジャーナルと比較してください。後のエクスポートにはより多くのレコードが含まれている可能性がありますが、それらは依然として以前のチェックポイントで一致している必要があります。

3つの質問、3つの異なる確認手順

一致するハッシュチェーンは、完全性に関する疑問に答えるものです。ただし、Telegramでの完全な配信、メッセージの真実性、あるいは独立して信頼できる観測時刻を立証するものではありません。

アカウント全体の調査を、取得から事件資料のまとめまで追跡します。