Steganography によるドキュメント真正性検証

不可視透かしを使ってドキュメントや画像の真正性を検証する方法を解説。改ざん検知の仕組み、検証フロー、実装上のベストプラクティスを紹介します。

Use Cases

詳細な説明

ドキュメントの真正性を保証する

デジタルドキュメントや画像が改ざんされていないことを確認したいケースは多くあります。不可視透かしは、元のコンテンツに検証用データを埋め込むことで、後から真正性を確認する手段を提供します。

真正性検証の基本フロー

1. 元画像にハッシュ値や検証データを LSB で埋め込む
2. 画像を配布
3. 受信者がツールで透かしを抽出
4. 抽出データと期待値を比較 → 一致すれば未改ざん

何を検証データとして埋め込むか

埋め込みデータ 検証できること
ドキュメント ID + 発行日 この画像が正規の発行元から発行されたこと
コンテンツのチェックサム 画像の可視部分が改ざんされていないこと
デジタル署名 発行者の身元の暗号学的証明
バージョン番号 ドキュメントの版数の追跡

実装例

{
  "issuer": "company-xyz",
  "doc_id": "INV-2024-0831",
  "issued_at": "2024-08-31T09:00:00Z",
  "content_hash": "sha256:a1b2c3..."
}

このような JSON 文字列を LSB で埋め込むことで、受信者は以下を検証できます:

  1. 発行者が正当か — issuer フィールドの確認
  2. ドキュメント ID が有効か — 発行者のデータベースとの照合
  3. コンテンツが改ざんされていないか — 画像の可視領域からハッシュを再計算し、埋め込まれたハッシュと比較

改ざん検知の限界

LSB ベースの検証には重要な制限があります:

  • LSB 領域の改ざん: 攻撃者が steganography の使用を知っていれば、透かし自体を書き換える可能性がある
  • 画像変換: リサイズ、フォーマット変換、圧縮で透かしが破壊される
  • 部分的改ざん: 画像の一部のみを変更し、透かし領域を避ける攻撃

ベストプラクティス

  • XOR 暗号化を併用して、透かしの偽造を困難にする
  • 検証データをできるだけ小さくして、画像全体に分散させる余地を残す
  • オフラインで検証データベースを維持し、抽出された ID と照合する
  • 複数の防御層を組み合わせる — 不可視透かし + メタデータ署名 + ブロックチェーンタイムスタンプ

このツールではすべてクライアントサイドで処理されるため、検証データがサーバーに送信されることはなく、機密ドキュメントでも安全に使用できます。

ユースケース

社内の機密文書を画像として配布する企業が、受信者が文書の真正性を検証できるようにしたい場合。各文書に検証データを埋め込み、後から改ざんの有無を確認できます。

試してみる — Invisible Watermark

フルツールを開く