メインコンテンツまでスキップ

8. Security Considerations (セキュリティに関する考慮事項)

あらゆるデータ圧縮方法は、データ内の冗長性を減らすことを含みます。Zstandard も例外ではなく、通常の予防措置が適用されます。

内容を秘密にする必要があるメッセージを、第三者によって生成されたメッセージと一緒に圧縮してはなりません。このような圧縮は、エントロピー削減分析 (Entropy Reduction Analysis) を通じて秘密メッセージの内容を推測するために使用される可能性があります。例えば、これは圧縮比情報漏洩簡素化攻撃 (Compression Ratio Info-leak Made Easy, CRIME) [CRIME] で実証されています。

デコーダーは、圧縮フレーム内のあらゆる種類のデータ改ざんが、許可されたメモリ範囲を超えた読み取りまたは書き込みなどのシステム障害を引き起こすことを検出および防止する能力を示す必要があります。これは、実装言語または注意深い境界チェック (Bound Checking) によって保証できます。特に注目すべきは、Number_of_Sequences 値のエンコーディングで、これによりデコーダーがブロックヘッダー (さらにその先) まで読み取る可能性があり、実際の解凍データよりも小さいことを示す Frame_Content_Size により、バッファオーバーフロー (Buffer Overflow) を引き起こそうとする試みです。デコーダー実装をファジーテスト (Fuzz-test、つまり無効、予期しない、またはランダムな入力を提供し、安全な動作を検証する) して、エラーフレームを検出し、悪影響のあるシステム副作用なしにそれらを処理する能力をテストおよび強化することを強くお勧めします。

攻撃者は、フォーマットは正しいが不合理なメモリ要件を持つ圧縮フレームを提供する可能性があります。デコーダーは常にメモリ要件を制御し、このようなシナリオからメモリ使用を保護するために特定の (システム固有の) 制限を強制する必要があります。

様々な関連コンテンツペイロード上でディクショナリをトレーニングすることにより、圧縮を最適化できます。その後、デコーダーはペイロードを解凍するためにこのディクショナリを使用できる必要があります。このドキュメントでは、特定の圧縮ペイロードのディクショナリを取得する方法を指定していませんが、サードパーティのディクショナリがデコーダーと予期しない相互作用を引き起こし、メモリまたはその他のリソース枯渇攻撃 (Resource-exhaustion Attacks) につながる可能性があることに注意する価値があります。このようなトピックは、ディクショナリの取得と伝送に関する今後の RFC のセキュリティに関する考慮事項セクションでより詳細に議論されることが期待されますが、慎重を期すために現在この問題を強調しています。

セクション 3.1.2 で説明されているように、スキップ可能フレーム (Skippable Frames) に任意のユーザーメタデータを格納できます。このようなフレームはデータ解凍中に無視されますが、圧縮ペイロードのパスを追跡するためのウォーターマーク (Watermark) として使用できます。