# エクスポートと検証

Canonical page: https://phishdestroy.github.io/TgWitness/ja/docs/exports/

他者が確認できる署名付き記録を共有しましょう。

参照情報を保持する署名付きZIPファイルをエクスポート受信者が検証します

署名やチェックポイントについて初めてお知りになる方へ。[サンプルレコードを変更して](https://phishdestroy.github.io/TgWitness/ja/docs/concepts/#chain)、どのチェックがその変更を検知するかを確認してみてください。

収集者とは別の場所にコピーを保管したいですか？ [S3の設定](https://phishdestroy.github.io/TgWitness/ja/docs/exports/#s3)、[オブジェクトロック](https://phishdestroy.github.io/TgWitness/ja/docs/exports/#s3-retention)、または[検証済み復元](https://phishdestroy.github.io/TgWitness/ja/docs/exports/#s3-restore)をご覧ください。

## 信頼できる参考資料としてご利用ください

ワークスペースの公開鍵のフィンガープリントは、コレクターの外部に保存してください。収集中は、署名済みのチェックポイントを別の場所に保管するか、[独立した証人（ウィ](https://phishdestroy.github.io/TgWitness/ja/docs/witness/)ットネス）を使用してください。これらの参照情報により、受信者は鍵および以前のジャーナルの境界を確認することができます。

## 署名付きZIPファイルをダウンロードする

**「エクスポート」**を開き、署名付きの証拠ZIPファイルを作成してください。これには、ワークスペースのジャーナルと署名付きのファイルマニフェストが含まれます。パネルのフィルターは、この完全なジャーナルのエクスポートを制限しません。共有する前に、内容を必ず確認してください。

HTMLおよびCSV形式の単体ダウンロードファイルは、閲覧や分析に役立ちます。検証可能な原本として署名付きのZIPファイルを保管してください。個別のHTMLまたはCSVファイルには、単独での署名はありません。

## 信頼できるTgWitnessのコピーで検証してください

インストール済みのプロジェクト環境において、サンプルとなるフィンガープリントおよびファイルパスを以下のように置き換えてください：

```
python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 --checkpoint retained-checkpoint.json
```

両方の参照が有効である場合、結果として「`key_pinned: true`」および「`checkpoint_checked: true`」が報告されます。検証結果は元のアーカイブと共に保管してください。保持するチェックポイントは、エクスポートの境界点以前でなければなりません。

## 結果を理解する

- **完全性：**記録された履歴およびエクスポートされたファイルは、その署名と一致しています。
- **以前の指摘：**外部チェックポイントを使用することで、エクスポートしたデータを、以前に保存しておいたジャーナルのプレフィックスと比較することができます。
- **実施方法：**制御された送信→編集→削除のテストにより、特定のイベントが記録された内容と照合されます。

有効な署名があっても、すべてのTelegramイベントが確実に受信されたこと、発信者が真実を語ったこと、あるいは収集者の時計が正確であったことを証明するものではありません。

## S3 オフサイトコピーの設定

実行中のワークスペースで、**「エクスポート」→「オフサイトコピー」**を開いてください。このオプション機能は、AWS S3 およびその他の S3 互換サービスに対応しています。この機能により、ジャーナルのセグメント、保存された写真やファイル、タイムスタンプ付き応答を含むチェックポイント、および完了したチャットのエクスポートデータがコピーされます。すべてのオブジェクトは、アップロード前にコレクター上で `AES-256-GCM` を使用して暗号化されます。

オンラインデモでは、アップロード機能を無効にした状態で、同様の操作画面をご覧いただけます。ストレージの認証情報は、ご自身が実行しているワークスペース内でのみ入力してください。

[![オフサイトコピーに関する完全な説明パネル：エンドポイント、リージョン、バケット、アクセスキー、スケジュール、オブジェクトロック、および復旧キーの設定](https://phishdestroy.github.io/TgWitness/assets/off-site-copy.png)](https://phishdestroy.github.io/TgWitness/assets/off-site-copy.png)

高度なオプションを展開した完全なパネルです。ストレージの認証情報は表示されていません。

| 分野 | 入力内容 |
| --- | --- |
| エンドポイント | バケットパスや認証情報を含まない、ストレージサービスのURLです。架空の例：`https://s3.example.invalid`。 |
| 地域 | ご利用のプロバイダーが指定する地域です。アプリケーションのデフォルトは「`us-east-1`」です。 |
| バケット | アクセス可能な既存のバケットです。架空の例：`example-case-backup`。 |
| バケット内のフォルダ | オブジェクトプレフィックス。デフォルトは`tgwitness`です。アプリケーションは、このワークスペースの署名鍵のフィンガープリントから導出されたプレフィックスを付加します。 |
| アクセスキーID / シークレットアクセスキー | ストレージの認証情報を両方とも同時に入力してください。これらはワークスペースの保管庫に保存されます。保存済みのペアを維持するには、以降の保存時には両方を空欄のままにしてください。 |
| パス形式のアドレス | プロバイダーの設定に応じて、有効化されている場合は「`endpoint/bucket`」、無効化されている場合は「`bucket.endpoint`」を使用してください。 |
| コピー間隔 | 1分から1,440分まで設定可能です。デフォルトは5分です。スケジュールされたバックアップを行うには、アプリケーションが実行されている必要があります。 |
| オブジェクトロックの保持期間 | Object Lockをサポートするバケットの保存期間と保存モードについてです。「0日」に設定すると、バケットのデフォルトの保存期間が適用されます。 |

1. 保存先と認証情報を入力してください。準備中は「**オフサイトコピーを保持する」**のチェックを外したままにし、その後「**オフサイトコピーを保存」**を選択してください。
2. **「接続テスト」**を選択してください。これにより、暗号化されたテストオブジェクトがアップロードされ、ストレージからの応答が確認されます。
3. **「暗号化キーのダウンロード」**を選択してください。そのファイルはコレクターとは別に保管してください。復元に必要となります。
4. 「**オフサイトコピーを保持する」**チェックボックスを有効にして、再度保存してください。「**今すぐコピー」**を選択して手動で実行するか、スケジュールを実行したままにしておいてください。

**行わないこと**：ストレージバケットは作成しません。アプリケーションが停止すると、スケジュールされたアップロードも停止します。

## 保存状況とコピー進捗の確認

「**その他のオプション**」で、保存期間を選択し、バケットがオブジェクトロックに対応している場合は「`GOVERNANCE`」または「`COMPLIANCE`」を選択してください。TgWitnessは、アップロードされたオブジェクトの保存モードと期限を読み取ります。ステータスには、確認済み、保存期間の不足、またはチェックの失敗が表示されます。アップロードが成功しただけでは、保存が確認されたことにはなりません。

パネルには、前回の処理結果、オブジェクト数、転送されたバイト数、コピーされたジャーナルの境界、およびエラーがあればその内容が報告されます。ローカルメディアが欠落または変更されている場合は報告され、次の処理で再試行されます。そのメディア以降のファイル、チェックポイント、およびエクスポートキューに追加されたデータは、引き続きコピー可能です。

アップロードには、ワークスペースの「Direct」、「SOCKS5」、または「HTTP」ルートが使用されます。MTProxy経由でのS3へのコピーは利用できません。また、本アプリケーションは直接接続へのフォールバックを行いません。

**行わないこと**：アップロードが受理されたという理由だけで、プロバイダーにオブジェクトロックの適用を強制することはありません。

## 復元キーは別の場所に保管してください

ダウンロードされたJSONファイルには、復号鍵、送信先設定、ワークスペースオブジェクトのプレフィックス、および署名鍵のフィンガープリントが含まれています。S3へのアクセス認証情報は含まれていません。復元には、バケットへの読み取りアクセス権を持つ別の認証情報が必要となります。

エンドポイント、バケット、またはフォルダプレフィックスを変更した場合は、キーファイルを再度ダウンロードし、保存先の設定が一致するようにしてください。アプリケーションは、ローカルに保持されているジャーナル、ファイル、およびチェックポイントの新しいコピーを、新しい保存先で開始します。ローカルのアップロードキューからすでに削除された、完了済みのチャットのエクスポートデータは、以前の保存先に残ります。

**行わないこと**：エクスポートされた鍵がない限り、コピーを復号化することはありません。ストレージへのアクセス認証情報は、その鍵の代わりにはなりません。

## 別のマシンでの復元と検証

信頼できるTgWitnessのインストール環境、ダウンロードしたJSONキー、読み取り権限のあるストレージ認証情報、および空の出力ディレクトリをご用意ください。以下の架空の認証情報のプレースホルダーを実際の情報に置き換えてください。

### Windows PowerShell

```
$env:TGWITNESS_S3_ACCESS_KEY = 'YOUR_READ_ACCESS_KEY'
$env:TGWITNESS_S3_SECRET_KEY = 'YOUR_READ_SECRET_KEY'
python -m tgwitness.replica restore --key-file tgwitness-replica-key.json --out restored-evidence
```

### Linux / macOS

```
export TGWITNESS_S3_ACCESS_KEY='YOUR_READ_ACCESS_KEY'
export TGWITNESS_S3_SECRET_KEY='YOUR_READ_SECRET_KEY'
python -m tgwitness.replica restore --key-file tgwitness-replica-key.json --out restored-evidence
```

ダウンロードされたファイルおよび復号化されたオブジェクトは、ジャーナル全体、保持されているチェックポイント、保存されたメディアのハッシュ値およびサイズが検証される間、非公開の一時ストレージに保管されます。安全でないパス、矛盾するジャーナルセグメント、およびチェックポイントよりも短いジャーナルは拒否されます。検証に失敗した場合、復元されたファイルは公開されません。

復元に成功すると、コピー内に存在するデータに対して、`events.jsonl`、`media/`、`checkpoints/`、`exports/`が生成されます。復元されたデータとともに、コマンドのJSON形式の結果も保管しておいてください。

**行わないこと**：ジャーナルに記録されなかった観測内容を再構築したり、独立して保持されているチェックポイントや証人を置き換えたりすることはありません。
