3.1.2. Skippable Frames (スキップ可能フレーム)
+==============+============+===========+
|| Magic_Number | Frame_Size | User_Data |
+==============+============+===========+
|| 4 bytes | 4 bytes | n bytes |
+--------------+------------+-----------+
表 19: スキップ可能フレーム
スキップ可能フレームを使用すると、ユーザー定義のメタデータを連結されたフレームのストリームに挿入できます。
この仕様で定義されているスキップ可能フレームは、[LZ4] のスキップ可能フレームと互換性があります。
互換性のあるデコーダーの観点から、スキップ可能フレームは単にスキップされ、その内容は無視され、スキップ可能フレームの後でデコードが再開されます。
スキップ可能フレームは、連結されたフレームストリームに透かしを追加したり、あらゆる種類のトラッキング情報 (単なる汎用一意識別子 (UUID) であっても) を埋め込むために使用できることに注意する必要があります。このような可能性に警戒しているユーザーは、連結されたフレームストリームをスキャンして、分析または削除のためにそのようなフレームを検出しようとする必要があります。
フィールドの説明
Magic_Number (マジックナンバー)
サイズ: 4 バイト、リトルエンディアン形式
値: 0x184D2A5?、つまり 0x184D2A50 から 0x184D2A5F までのいずれかの値
16 個の値すべてが有効にスキップ可能フレームを識別します。この仕様は、スキップ可能フレームの特定のマーキング方法を詳述していません。
マジックナンバー範囲:
- 最小値: 0x184D2A50
- 最大値: 0x184D2A5F
- 合計: 16 個の有効なマジックナンバー
Frame_Size (フレームサイズ)
サイズ: 4 バイト、リトルエンディアン形式、符号なし 32 ビット
意味: 後続の User_Data のサイズ (バイト単位) (マジックナンバーとサイズフィールド自体を含まない)
これは、User_Data が (2^32 - 1) バイトより大きくできないことを意味します。
最大 User_Data サイズ: 4,294,967,295 バイト (約 4 GB)
User_Data (ユーザーデータ)
サイズ: 可変 (Frame_Size によって指定)
コンテンツ: 任意のデータ
このフィールドは何でもかまいません。データはデコーダーによってスキップされます。
使用シナリオ
1. メタデータの埋め込み
- バージョン情報
- 作成タイムスタンプ
- 作成者情報
- ライセンスデータ
2. 透かしとトラッキング
- UUID 埋め込み
- ソーストラッキング
- 配布チャネル識別
3. アプリケーション固有データ
- カスタムヘッダー
- アプリケーション構成
- 拡張情報
互換性に関する注意
デコーダーの動作
仕様に準拠したデコーダーは次のことを行う必要があります:
- マジックナンバーを認識: 0x184D2A5? 範囲内のマジックナンバーを検出
- サイズを読み取る: Frame_Size フィールドを解析
- データをスキップ: Frame_Size バイトの User_Data をスキップ
- デコードを続行: スキップ可能フレームの後で処理を続行
エンコーダーの推奨事項
エンコーダーは次のことができます:
- 任意の配置: フレームストリーム内の任意の位置にスキップ可能フレームを挿入
- 複数のフレーム: 複数のスキップ可能フレームを挿入
- カスタムマーキング: 内部マーキングに 16 個のマジックナンバーのいずれかを使用
セキュリティに関する考慮事項
プライバシーの問題
スキップ可能フレームは次のために使用される可能性があります:
- データフローのトラッキング
- 隠し情報の埋め込み
- データソースの識別
推奨措置
プライバシーを懸念するユーザー向け:
- スキャン検出: 入力ストリームをスキャンしてスキップ可能フレームを検出
- コンテンツ分析: User_Data のコンテンツを調査
- 選択的削除: 必要に応じてスキップ可能フレームを削除
- ログ記録: 監査のために検出されたスキップ可能フレームを記録
例
UUID の埋め込み
Magic_Number: 0x184D2A50
Frame_Size: 16 (0x10000000, リトルエンディアン)
User_Data: [16 バイト UUID]
タイムスタンプの埋め込み
Magic_Number: 0x184D2A51
Frame_Size: 8
User_Data: [8 バイト Unix タイムスタンプ]
LZ4 との互換性
スキップ可能フレーム形式は LZ4 と互換性があり、次のことが可能です:
- フォーマット間のツール相互運用性
- 統一されたメタデータ処理
- 簡素化されたデコーダー実装
注意: スキップ可能フレームは解凍データのコンテンツに影響せず、ストリームのメタデータにのみ影響します。