生DEFLATE (.deflate)
IETF 標準DEFLATE は、コンピューティングの歴史の中で最も普及しているロスレスデータ圧縮アルゴリズムであり、30年以上にわたり ZIP アーカイブ、GZIP ストリーム、PNG 画像、および HTTP Web 圧縮を支えてきました。
GZIP を DEFLATE に変換
無料のブラウザ内 GZIP から DEFLATE へのコンバーター。お使いのデバイスでファイルを即座に変換します。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してDEFLATEファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してDEFLATEファイルを識別します:
16進数シグネチャ(オフセット0):
Raw DEFLATEには固定シグネチャがありません。zlibでラップされたストリームは、変動するCMF/FLGバイトで始まります。ASCII表現: 固定シグネチャなし
標準化: IETF RFC 1951 / RFC 1950 (zlib)
技術仕様
| コンテナアーキテクチャ | 生のRFC 1951ビットストリーム、または2バイトヘッダーとAdler-32チェックサムを持つRFC 1950 zlibラップストリーム |
| 圧縮 | 最大32 KBのLZ77スライディング辞書と動的/静的Huffmanエントロピー符号化を組み合わせ |
| バイトエンディアン | リトルエンディアンのビットパッキング順序 |
| 色空間 | 該当なし(データ圧縮ストリーム) |
| チャンネルと構造 | 生バイナリまたはテキストのデータストリーム |
| 最大寸法 | ストリーム長に上限なし |
| 透過性 | データをビット単位で完全に復元する可逆圧縮 |
| ストリーミングとプログレッシブ | ブロックベースのビットストリームにより、任意の位置から連続したバイトストリーミングが可能 |
技術比較表:DEFLATEと競合製品
| 技術属性 | DEFLATE (現在) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| 標準化 | IETF RFC 1951 (生) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| スライディングウィンドウ | 最大 32 キロバイト | 最大 32 キロバイト | 最大 16 メガバイト | 最大 2 ギガバイト |
| チェックサムモード | Adler-32 (zlib ラッパー内) | CRC-32 (gzip ラッパー内) | 組み込みストリームなし | xxHash64 (64ビット高速ハッシュ) |
| 日常的な用途 | PNG 画像、PDF ストリーム、ZIP | Unix .tar.gz、HTTP gzip | Web フォント (WOFF2)、HTTP br | Linux カーネル、データベース、ゲーム |
一般的な破損モードと16進数リカバリガイド
解凍が「Z_DATA_ERROR: incorrect data check」で失敗する。
根本原因: zlib でラップされたストリームの末尾にある 4 バイトの Adler-32 チェックサムの不一致。
復旧: raw inflate を使用して Adler-32 検証をバイパスするか、File2File.app Deflate Recovery で修復します。
セキュリティ分析とパーサー攻撃ベクトル
DEFLATE パーサーは、範囲外のポインタ書き込みを防ぐために、Huffman ツリー構築コードを厳密に検証する必要があります。
既知の攻撃ベクター
- 不完全または過剰に割り当てられた動的 Huffman ツリーのビット長テーブルによる無効なメモリ読み取り。
- 小さなペイロードを数百ギガバイトの RAM に拡張する解凍爆弾 (zip 爆弾)。
- 検証されていないスライディングウィンドウ距離コードにおけるバッファ過剰読み取り。
防御的ベストプラクティス: 解凍中のメモリ割り当て上限を設定し、展開率にも上限を設けます。
歴史的背景とマイルストーン
主なメリット
- 議論の余地のない世界標準:ハードウェア、オペレーティングシステム、およびすべてのプログラミングランタイムに実装されています。
- 特許フリーかつロイヤルティフリーの設計により、コンピューティング業界全体で自由な利用が保証されています。
- 最小限のメモリフットプリントで高速な解凍を実現します(わずか 32 KB のスライディングウィンドウメモリのみを必要とします)。
技術的な制限とデメリット
- スライディングウィンドウが 32 KB に制限されているため、遠くにある冗長性を持つ大きなファイルでは圧縮効率が低下します。
- BrotliやZstandardなどの新しいアルゴリズムと比較して、最新のWebアセットに対する圧縮率が低いです。
- 生の DEFLATE ストリームには、zlib や gzip のラッパーがない場合、自己記述型のメタデータやコンテナのフレーミングがありません。
興味深い技術トリビア
- Phil Katz は、初期の PKARC ユーティリティで使用されていた特許取得済みの LZW アルゴリズムに関して Unisys から提訴された後、DEFLATE を発明しました。
- 標準の zlib ヘッダーバイト「78 9C」はデフォルトの圧縮、「78 01」は低圧縮、「78 DA」は最大圧縮を示しています。
- 地球上のすべての PNG 画像は、IDAT ピクセルチャンクを圧縮するために DEFLATE を使用しています。
よくある技術的な質問
DEFLATE、zlib、gzipの違いは何ですか?
DEFLATEは生データの圧縮アルゴリズムです(RFC 1951)。ZlibはDEFLATEに2バイトのヘッダーとAdler-32チェックサムを付加したものです(RFC 1950)。GzipはDEFLATEにファイルメタデータとCRC-32チェックサムを付加したものです(RFC 1952)。
PNGがDEFLATEを使用しているのはなぜですか?
PNG形式は1995年に、特許で保護されたLZWアルゴリズムを使用せずにGIFを置き換えるために作成され、圧縮にはオープンでロイヤリティフリーのDEFLATEが選ばれました。
Raw DEFLATE形式の.deflateファイルを解凍するにはどうすればよいですか?
File2File.appを使用すれば、ウェブブラウザ上で直接、生のDEFLATEまたはzlibバイトストリームを元の未圧縮ファイルに解凍できます。