開発

情報を順序に隠す新たなステガノグラフィ手法

ExifタグやCSSルールの並び替えだけでも情報を埋め込める。Lehmer codeを使った順列符号化の手法を解説する。

7分で読める SINGULISM 編集チームが確認・編集

情報を順序に隠す新たなステガノグラフィ手法
Photo by Mika Baumeister on Unsplash

Lobstersで公開された技術記事「Embedding information in disorder」が、情報隠蔽の新たなアプローチを提示している。ExifメタデータやCSSルールの順序といった、従来注目されてこなかったデータ構造の「並び」を利用して情報を埋め込む手法を詳細に解説した内容だ。単なる遊び心から始まった試みは、Lehmer code(レーマー符号)による順列の符号化という理論的基盤を持ち、透かし技術やマルウェア隠蔽に応用できる可能性を示唆している。

情報を「見えない場所」に隠す

情報を平文の中に紛れ込ませるステガノグラフィは、古くから研究されてきた分野である。同記事の筆者はこの問題に繰り返し取り組んでおり、ext4タイムスタンプのナノ秒領域の再利用、Bluetoothマウスのファームウェア改変、家庭用電化製品の改造、Exifメタデータの修正といった多様な手法を試してきたという。

これらの手法は既存のメタデータフィールドに直接データを書き込むか、画像にノイズとして埋め込むかが一般的だった。しかし同記事が注目したのは、メタデータそのものは変更せず、その「出現順序」だけを操作する点にある。

Exifタグの順列が持つ289ビットの可能性

Exifは画像ファイルに付随するメタデータ規格で、カメラの機種名、撮影日時、絞り値、ISO感度などの情報をタグとして格納する。これらのタグは本来、低い値から順に符号化することが仕様で定められているものの、多くの画像リーダーは順序を厳密にチェックしない。

Sony A7Rの写真を例に取ると、1枚の画像に63個のExifタグが含まれている。63個の要素の順列総数は63!(階乗)通りであり、これはlog2(63!) ビット、すなわち約289ビットの情報量に相当する。これはAES-256の鍵長を上回る値だ。

実際には、Exifリーダーが順序の誤りに対して警告を出力するケースや、タグがグループごとに制約されるといった実用的な問題がある。とはいえ、既存のデータを並び替えるだけでこれだけの情報を埋め込めるという洞察は、ステガノグラフィに新たな軸をもたらす。

レーマー符号による順列の符号化

順列を情報に変換する手法として、同記事はLehmer codeを採用している。Lehmer codeは次のように動作する。一意な要素の列において、各位置について「それより後ろにある、自分より小さい要素の数」をカウントする。

例えば(A, B, C, D)のLehmer digitsは(0, 0, 0, 0)だが、(D, C, A, B)の場合は(3, 2, 0, 0)となる。各位置で取りうる最大値は1ずつ減少するため、符号化に必要なビット数を自然に制限できる。

13個の要素からなる系列では、32ビットの数値を符号化するのに十分なLehmer digitsが得られる。この手法の利点は、任意の一意な系列が復元可能であれば、そこからビットストリームを抽出できる汎用性にある。

CSSスタイルシートへのデータ埋め込み

同記事が指摘する興味深い応用先がCSSである。CSSのルールセットは、ブラウザがレンダリングする際に重複しないルール同士の順序は原則として無視される。しかしファイル上には明確な順序が存在し、DOM経由でその順序を取得することも可能だ。

Wikipediaのスタイルシートを例に挙げると、1,003個のルール、1,950個のセレクタ、2,731個のプロパティが含まれている。ルールの順序を並び替えるだけで1キロバイト以上のデータを埋め込める計算になる。セレクタやプロパティの順序も加味すれば、さらに大容量の格納が可能だ。

1キロバイトあれば、極めて小さいデコーダと組み合わせてマルウェアを隠蔽することも理論上は可能だと筆者は指摘する。記事内では実際にデモとして、例示されたCSSブロックに「Click Me」という情報を埋め込んだコードが提示されている。

ファイルアーカイブと透かし技術への応用

Lehmer codeによる情報隠蔽は、ファイルの透かし技術としても自然に応用できる。同一内容のtarballやZIPファイルであっても、ディレクトリの出現順序を意図的に変更すれば、抽出時に気づかれにくい透かしを埋め込める。

さらに興味深いのは、この透かしがファイルシステムに転写される可能性だ。例えばext4のbirth timestamp(作成時刻)の順序を制御することで、データが展開されたファイルシステム上でも透かしを持続させられる。

ブラウザがSVGやHTMLを印刷する際の動作も、この手法の応用先として言及されている。見えないデータの痕跡が、意図しない場所に残る可能性は、フォレンジックの観点からも注目に値する。

編集部の見解

短期的な影響としては、セキュリティ研究者やフォレンジック専門家がこの手法を注視する可能性が高い。特にCSSルールの並び替えによる情報隠蔽は、Webページのスタイルシートにマルウェアを仕込む新しいベクトルとして、ブラウザベンダーやCDNプロバイダの警戒を引き起こすかもしれない。ただし、実用的な攻撃として成立させるには、デコーダを別途配布する必要があるなど、ハードルは少なくない。 長期的な視点では、この手法が広く知られることで、ファイルフォーマットの仕様策定に影響を与える可能性がある。現在は「実装上許容される」とされている順序の自由度が、セキュリティ上の理由から制限される方向に動くことも考えられる。一方で、改ざん検出や透かし技術として正当な用途を見出すエコシステムが形成される可能性もある。 編集部としては、この手法が持つ「順序という副次的チャネル」の概念が、IoTや分散システムにおけるデータ隠蔽チャネルの研究を活性化させるのではないかと見る。

参考

  • Lobsters — 2026-07-05T19:47:30.000Z公開

よくある質問

Lehmer codeはどのように実装すればよいか
各要素について、後続の要素の中で自分より小さいものの数をカウントするだけの単純なアルゴリズムだ。PythonやJavaScriptなら数十行で実装でき、逆変換(Lehmer digitsから元の順列を復元)も同程度のコード量で可能である。
Exifタグの並び替えで本当にデータを隠せるのか
理論上は可能だが、実用上の制約がある。多くのExifリーダーは順序の誤りに対して警告を出力する。また、タグはグループごとに制約があるため、すべての順列が許容されるわけではない。これらの制約を考慮すると、実際に利用可能なビット数は理論値より減少する。
CSSへの情報埋め込みはどの程度実用的か
1キロバイト程度のデータであれば、Wikipediaクラスの大規模スタイルシートで実現可能だ。ただし、ブラウザの更新や拡張機能による幹渉で順序が変わると情報が失われるリスクがある。また、クロスサイトスクリプティング(XSS)対策の文脈では、このような手法は防御側の関心事になる。 ## 参考 - [Embedding information in disorder](https://thoughts.hmmz.org/2026-07-05.html) — 2026-07-05公開(Lobsters)
出典: Lobsters

コメント

← トップへ戻る