要約

  • RFC 9649 は WebP を再構成する共通文法を定めるが、正常に表示できても、メタデータの真実性、来歴の保持、処理の安全性までは証明しない。
  • リーダーは未知チャンクを無視し、ライターは意図して変更しない限り保持するべきだとされる。理解しないこと、保管すること、内容を承認することは別の行為である。
  • 実務上の証拠は、受領したバイトとチャンク一覧を、デコーダーの版と制限、選択されたメタデータ、画素とフレーム、派生物、最終表示へ結び付ける必要がある。

未知であることは、不要であることではない

RFC 9649 は WebP の公開仕様を安定させ、image/webp を登録する。RIFF コンテナには、非可逆 VP8、可逆ビットストリーム、透明度、色プロファイル、アニメーション、EXIF、XMP、アプリケーション固有チャンクを格納できる。この共通境界によって、独立した作成者とリーダーが同じキャンバスを再構成できる。

だが、キャンバスはファイルの全てではない。二つのファイルが同じ画素を表示しながら、異なるメタデータや未知チャンクを持つことがある。同じバイト列を二つのリーダーが受理しながら、短いフレーム時間や背景色を異なる方法で扱うこともある。形式に適合した入力でも、メモリや CPU、パーサーの弱点を突く可能性がある。

未知チャンクについて、仕様は慎重な非対称性を採用した。リーダーは解釈できないチャンクを無視できる。ライターは、そのチャンクを変更する意図がないなら元の順序で保持するべきである。このルールは、現在のソフトウェアが未来の拡張を理解できないという当然の事実を、破壊の許可に変えない。

無視は安全宣言ではない。保持は正しさの承認でもない。未知のデータを別の解析器へ渡すなら、新しい攻撃面が生じ得る。一方、意味を知らないまま削除すれば、来歴、権利、編集履歴、あるいはまだ配備されていない機能に必要な唯一の記録を失うかもしれない。

再構成順序と保管順序を分ける

拡張 WebP では、画像再構成と色補正に必要なチャンクの順序が定められている。内容に応じて VP8X、ICCP、ANIM、ANMF、ALPH、VP8 、VP8L などが現れる。再構成に必須のチャンクが誤った順序に置かれた場合、リーダーは失敗するべきである。

EXIF、XMP、未知チャンクには別の自由度がある。メタデータは再構成順序の外に置くことができ、未知チャンクはファイル末尾やアニメーションフレームのペイロード末尾にも現れる。この違いは、表示のための依存関係と、証拠を保存するための依存関係が一致しないことを示す。

変換サービスは少なくとも三つの選択をしている。自分が理解するバイト、理解せずに運ぶバイト、削除または書き換えるバイトである。出力ハッシュは選択後のファイルを識別するが、選択理由を説明しない。「最適化済み」という一語では、再構成に不要だったのか、プライバシー上除去したのか、単に実装が捨てたのかを区別できない。

したがって、変換の受領記録には入力と出力のチャンク差分が必要である。未知チャンクには内容の推測ではなく、FourCC、位置、長さ、順序、保持判断を記録する。現在分からないものに偽の意味を与えず、同時に存在していた事実を消さないためである。

メタデータの構造は主張を認証しない

WebP は EXIF と XMP を含められる。RFC 9649 は、それぞれの種類が一つ以下であるべきだとする。重複があれば、リーダーは最初の一つ以外を無視できる。ここで同じ表示結果から異なる記録が生まれる。あるツールは先頭を選び、別のツールは正規化した一つを生成し、第三のツールは全てを除去する。

CIPA の Exif 仕様はメタデータ構造を定義し、Adobe の XMP 仕様は拡張可能なモデルと埋め込み方法を定義する。しかし、カメラ名、撮影時刻、作者、位置、権利、編集履歴は、格納されただけでは認証済みの事実にならない。値の作成主体、署名、保管の連続性を別に検証しなければならない。

Lu Heng の現実の層という考えは、この区別を実務に落とし込む。保存されたバイト、解析されたフィールド、主張された来歴、復号画素、閲覧者の認識は隣接するが同一ではない。誤ったフィールドはそのまま複製でき、正確なフィールドも外観を保った変換で失われる。存在は真実性ではなく、不在も元から無かった証拠にはならない。

透明画素はデータを持ち続ける

可逆形式は ARGB 値を復元する。alpha がゼロの画素でも、赤、緑、青の成分は残る。通常の合成では見えないが、見えないことと存在しないことは違う。

特定のファイルに秘密があると推測する理由にはならない。しかし、後の処理が alpha を落としたり、予期しない背景へ配置したり、色チャネルを計算に使ったりすれば、結果が変わる可能性がある。表示だけを調べるプライバシー検査は、バイトまたは復号画素の検査で見つかる情報を逃す。

逆方向の変化もある。最適化ツールが透明画素の色を正規化すれば、表示は同じでも画素行列は変わる。「可逆」は指定されたコーデック往復の性質であり、その後の全ての編集が元コンテナ、メタデータ、アプリケーション情報を保つ保証ではない。

アニメーションの時刻は実装を通って観測される

アニメーションフレームは位置、寸法、時間、合成、破棄方法を持つ。時間はミリ秒で格納されるが、ゼロ、そして多くの場合は十ミリ秒以下の値は実装の解釈に委ねられる。ブラウザやツールは最短時間を設けることがある。背景色は不透明でない alpha を持ち得て、強制値というよりヒントとして扱われる。

そのため、バイト列だけから人が何を見たかを断定できない。リーダー名と版、時間の丸め、色管理、合成背景、再生条件を記録し、重要な表示なら出力も捕捉する必要がある。符号化された指示と観測事実の間には、常にソフトウェアの方針がある。

適合性はデコーダーの安全証明ではない

RFC 9649 のセキュリティ節は、整数オーバーフロー、境界外の読み書き、未初期化データ、null 参照、メモリやディスクの枯渇、長時間計算を挙げる。入力はブラウザ、メール、アップロードサービスへ届く。結果はコード実行、情報漏えい、クラッシュ、サービス拒否になり得る。

WebP に能動コンテンツの仕組みはないが、処理は受動的ではない。キャンバス寸法は割り当て量を決め、アニメーションは状態と処理量を増やす。プレフィックスコード、変換、圧縮データは複雑な解析状態を駆動する。EXIF、XMP、独自チャンクが追加の解析器へ渡る場合もある。

構文受理とは別に、安全性の受領記録が要る。ライブラリと版、プロセス分離、メモリと時間の上限、最大寸法とフレーム数、呼び出したメタデータ解析器、エラー、生成した派生物を記録する。適合ファイルを地域方針で拒否することは正当であり、不正ファイルを寛容な実装が部分表示することもある。どちらも形式全体への普遍的判定ではない。

バイト・チャンク・表示の受領記録を作る

まず、受領した正確なオブジェクトをハッシュし、バイト数、転送時のメディア型、ファイル名の主張、独立した型判定を残す。次に RIFF 境界を解析するが、まだ安全とは宣言しない。全チャンクについて FourCC、オフセット、公称長、パディング、順序を記録する。

各チャンクを、再構成必須、既知メタデータ、既知アプリケーションデータ、未知に分類する。処理ごとに、理解、無視、保持、除去、並べ替え、書き換えのどれを行ったか記す。EXIF または XMP が重複すれば選んだ値を明示する。VP8X ではキャンバス寸法と機能ビット、アニメーションではフレーム矩形、時間、合成、破棄を残す。

デコーダーは境界を設けた環境で動かし、実装名、版、資源方針を記録する。比較目的に応じて画素または各フレームをハッシュする。ICC、alpha、背景、時間正規化も残す。派生物には新しいハッシュと新しいチャンク一覧を与え、「同じ画像」という曖昧な表現で差分を省かない。

最後に配信面を確認する。クライアントが取得した実体、実行したデコーダー、全フレームの再生有無、観測結果を結ぶ。実行コードの優先が示す通り、登録文法は境界を与えるが、実際に何が起きたかを決めるのは実行されたリーダーと出力である。

小さな仕様と、見える地域判断

RFC 9649 を来歴全体の憲法に変える必要はない。価値は、共有すべきバイトと再構成契約を限定して定めたことにある。最小初期仕様の原則は、相互運用に必要な点を標準化し、その先の判断を地域で明示し、変更可能に保つことを求める。

公開時に全メタデータを除く組織もあれば、アーカイブで未知チャンクを全て保持する組織もある。アニメーションを拒否し、より小さい寸法上限を設け、外部署名マニフェストを要求することもできる。方針に名前、版、責任者、観測可能な効果があれば正当な地域判断である。危険なのは「最適化」「無害化」という言葉の裏で、証拠の生存を誰かが密かに決めることである。

結論は狭く保つべきだ。RFC 9649 はバイトが共有 WebP 文法に従うことを示せる。だが、誰が主張を作ったか、未知情報が将来重要か、デコーダーが安全に動いたか、変換が来歴を保持したか、人が何を見たかまでは示せない。それぞれを決めたシステムが、それぞれの受領記録を出す必要がある。

出典