容量計算の解説 — どれだけのデータが隠せるか
LSB steganography で画像に隠せるデータ量の正確な計算方法を解説。容量の計算式、ヘッダーによるオーバーヘッド、一般的な解像度ごとの実用的な上限を紹介します。
Techniques
詳細な説明
隠せるデータ量の計算
1ビット LSB steganography の理論容量は計算が簡単ですが、メタデータのオーバーヘッドや検出可能性の制約により、実用容量は常に低くなります。
基本の計算式
容量(ビット) = 幅 × 高さ × チャンネル数 × チャンネルあたりビット数
標準的な RGB 画像で1チャンネルあたり 1 LSB を使用する場合:
容量(ビット) = 幅 × 高さ × 3 × 1
容量(バイト) = 容量(ビット) / 8
一般的な解像度の容量テーブル
| 解像度 | ピクセル数 | 生容量(1 bpp) | 実用容量(約90%) |
|---|---|---|---|
| 640 × 480 | 307,200 | 112.5 KB | 約101 KB |
| 1280 × 720 | 921,600 | 337.5 KB | 約303 KB |
| 1920 × 1080 | 2,073,600 | 759.4 KB | 約683 KB |
| 3840 × 2160 | 8,294,400 | 3.04 MB | 約2.73 MB |
| 4000 × 3000 | 12,000,000 | 4.39 MB | 約3.96 MB |
「実用容量」の列は、長さヘッダー、終端マーカー、パディングによる約10%のオーバーヘッドを考慮しています。
オーバーヘッドの内訳
- メッセージ長ヘッダー — 通常は先頭に32ビット(4バイト)でペイロードサイズを符号化し、デコーダーが何ビット抽出すべきか知らせます。
- 終端マーカー — 一部の実装では長さヘッダーの代わりに null バイト列を使用します。
- 暗号化オーバーヘッド — XOR などの暗号化を適用した場合、鍵ネゴシエーションのメタデータが追加ビットを消費することがあります。
埋め込み率と検出可能性
1チャンネルあたり1ビットが標準ですが、ビット数を増やすと容量は増える代わりに視覚品質が低下します:
| チャンネルあたりビット数 | 容量倍率 | チャンネル最大変化 | 視覚的影響 |
|---|---|---|---|
| 1 | 1× | ±1 | 知覚不能 |
| 2 | 2× | ±3 | ごくわずか |
| 3 | 3× | ±7 | グラデーションに軽微なノイズ |
| 4 | 4× | ±15 | 平坦な領域で目立つ |
実用上の推奨
このツールでは、生容量の約25%以下のペイロードを推奨します。1920×1080 の画像(容量 約759 KB)では、隠しデータは約190 KB 以下に抑えると、容量と検出回避のバランスが取れます。
ユースケース
カバー画像が特定のファイルを埋め込むのに十分な大きさかどうか確認したいユーザー向け。容量テーブルで一般的な画像サイズの参考値を素早く確認できます。