目次


ステガノグラフィーを使って情報を見つからなくする

ありきたりの場所に情報を隠す

ステガノグラフィーは昔からあるプロセスです。2001年9月11日の同時多発テロ攻撃後、この強力な手法について非常に大量の報道がなされました。この手法を利用することによって、テロリストや破壊分子その他の人達は、非常に検出が困難な方法で情報を伝達することができたのです。この記事ではステガノグラフィーのプロセスを検証し、またステガノグラフィーが使われていることを検出する方法について説明します。

説明を始める前にまず、ステガノグラフィーのプロセスを、暗号化という別のプロセスと区別することから始めましょう (暗号化は、権限のない人に見られないようにデータを変更するプロセスです)。暗号化のプロセスでは、平文 (つまり暗号化されていない情報) を暗号文 (つまり暗号化された情報) に変えることができます。では暗号化で不可能なことは何でしょう。暗号化しても、暗号化されたデータをインターセプトして検証することはできるため、データが伝送されていることを誰かに知られることは防げません。しかし鍵という非常に重要なものがないと、暗号化データの解読は容易ではありません。これをステガノグラフィーと比べてみましょう。ステガノグラフィーでは、データは (暗号化の有無によらず) 別の媒体のデータの中に隠され、そこにデータが隠されていることを知らない人には媒体そのもののデータしか見えず、その中に隠されたデータは見えません。なぜ暗号化ではなくステガノグラフィーを使うのでしょう。簡単に言えば、暗号化されたメッセージを送信すると、そのメッセージを見せたくない相手からの注目を不必要に集めてしまうことになるからです。一方ステガノグラフィーを使うと、第三者の目の前で、ほとんど疑われる可能性なしに情報の伝達を行うことができます。

ステガノグラフィーの実際

ステガノグラフィーについて理解するには多少の入門知識が必要なので、まずはステガノグラフィーのプロセス全体がどのように動作するのかを見てみましょう。

この例では、一般的な標準画像フォーマット (JPEG など) を取り上げます。JPEG ファイルはよく使われますが、それはこのフォーマットが柔軟でさまざまな画像をサポートできる上、(最も重要な点として) 1670 万色 (人間の目で認識できる最大の色数) をサポートしているからです。ここで、中級以上もしくはハイエンドのカメラで任意のテーマ (日暮れ、海辺、あるいはラスベガスの大通りなど) を撮影した標準的なデジタル写真を考えてみましょう。これらのテーマのどれにも膨大な量の細部情報と色が含まれ、またカメラに応じてさまざまな量のいわゆるホワイト・ノイズが含まれています。

では、このホワイト・ノイズとは何でしょう。ホワイト・ノイズというのは、どんなデータにも含まれる背景情報またはランダムな情報です。この例の場合には、画像の中にある認識できない情報、または未使用情報がホワイト・ノイズだと思ってください。ステガノグラフィーの手法を使うと、このノイズを利用して簡単には気付かれない方法で情報を変更し、「秘密」を隠すことができます。この画像の場合、各ピクセルは、表示色を指定する数字の組み合わせで構成されています。

標準的などのような画像でも、1 つのピクセルにはそのピクセルに関連する 3 つの数字があり、その数字がそのピクセルに対する赤、緑、青 (RGB) 各チャネルの混合具合 (従って表示される色) を表します。RGB の値では、どのチャネルの場合も 0 (無色) から 255 (フルカラー) までの任意の値を含むことができます。デジタルの世界では、これらの各値は 8 ビットのシーケンスの中に保存され、MSB (Most Significant Bit) が 128、LSB (Least Significant Bit) が 1 です。では標準的なピクセルを見てみましょう。

Original pixel value: 255, 255, 255 (White)
Same pixel value in binary: 11111111, 11111111, 11111111

ここで、このピクセルを変更してデータを保存します。

New pixel value: 255, 255, 255 (White)
Same pixel value in binary: 111111rr, 111111gg, 111111bb

この新しい例では、各チャネルの LSB に注目するように、これらの LSB を変更しています。現実の世界では、これらの各チャネルの LSB をいくつかのピクセルにわたって変更し、文字に関連付けたコードを保存することができます。ほとんどの文字は 8 ビットしか必要としないため、画像の各ピクセルの中のビット数は 1 つの文字を反映させるために必要な数を超えています。ここでは各ピクセルの LSB の 4 ビットを使って文字を表していますが、このように変更することによってピクセルの色も変化することを忘れないでください。ただし各ピクセルの中に 1 つの文字を保存しても変更は非常に小さいため、結果的に色の変化も同じくらい小さく、あまりに変化が小さすぎて裸眼では認識できません。元の画像を持っている人でない限り、新しい画像と元の画像との間の変化に気付くことは困難です (ただし、この検出プロセスを支援するソフトウェアはあります)。

テキスト情報 (あるいは別のデータと言った方がよいかもしれません) を保存するためのピクセルの変更方法を理解できると、規模を拡大するための次のステップに進むことができます。1024 x 768 ピクセルというサイズの JPEG 画像を考えてください (これは決して特殊なサイズの画像でありません)。計算してみると、このサイズの画像には約 800,000 ピクセルが含まれています。これは情報を保持するためのピクセル数としては非常に大量です。1200 x 1600 の画像の場合はどうでしょう。この画像サイズには百万を超えるピクセルが含まれており、その各ピクセルを上の方法で変更することができます。すると 1 本の小説を収めても余裕があるほどの大量なデータを含められることになります。

ステガノグラフィー用のツール

では、このプロセスをどのように実行するのでしょう。実際には、このプロセスを実行するためのツールとして、オンラインのツールとダウンロード可能なツールの両方が入手可能です。また、ステガノグラフィーを使って隠された情報の検出を行うための、いくつかのツールがあります (この検出プロセスはステガナリシスと呼ばれます)。

現在、さまざまなタイプの媒体に対してステガノグラフィー機能を実行するツールがあります。ここではそうしたツールの一部を紹介します。これらのツールは基本的に画像をベースにしており、一般的なタイプの媒体にステガノグラフィーを実行するために設計されています。

Hiding Glyph

Hiding Glyph アプリケーションは、標準的な、非圧縮の 24 ビット (またはそれ以上) のビットマップ画像の中にファイルまたはファイル群を保存するために使われます。このアプリケーションの利点は、ファイルを隠す場所として、適当に変化に富んだ色を含む任意の画像を選択することができ、それらのファイルが検出されないようにできることです。さらに、元の画像と変更された画像の両方がない限り、ファイルが含まれていることを検出することも、ましてや実際に情報を抽出することもほとんど不可能です。

Vecna

Vecna は、先ほど説明した方法を使って画像の中にデータを隠す興味深いアプリケーションです。Vecna の利点は Java™ ベースのアプリケーションであることです。そのため、データを隠すための場所として、Java 言語で読み取れる画像フォーマットを使用することができます。情報が画像の中に埋め込まれると、そのデータは PNG ファイルとして出力され、アルファ・チャネルの情報を使ってデータの受け渡しを行います。

このアプリケーションは情報を隠して保存するために、かなり興味深い方法を使います。つまり追加された情報を画像の周囲にランダムに分散させるのです。Vecna は独自のランダム数生成プログラムを使用して、比較的無秩序な状態をデータの中に実現します。また、もう 1 つ注目に値する点として、このアプリケーションがデータを隠すために使用している手法を使用すると、画像の中にあらゆるタイプのデータ (テキストや PDF (Portable Data Format)、さらには他の画像まで) を隠すことができます。

TrueCrypt

TrueCrypt はボリュームのデータの暗号化によく使われるツールですが、追加の保護レイヤーが用意されており、既に暗号化されたボリュームの内部に、さらにボリュームを隠すことができます。TrueCrypt を使うと、この最初の暗号化ボリュームを作成し、次にその暗号化ボリューム内の空きスペースを利用して、さらなるデータを隠すことができます。TrueCrypt によれば、この機能によって、さらなるデータが隠されていることを巧みにごまかすことができます。つまり暗号化ボリュームがあることは容易に検出できますが、たとえ誰かが暗号を解読してボリュームを開き、さらにそこに隠されたボリュームがあると狙いをつけたとしても、隠されたボリュームを検出できる可能性はほとんどないのです。

TrueCrypt の強力さは適切に説明する価値があるため、ここで 2 つの点に触れておきましょう。第 1 に、TrueCrypt は、画像と同じ方法でファイルを暗号化して隠すことができます。これは驚くほどのことではありません。この手法は画像に対して先ほど説明した手法と比較的似ているからです。第 2 に TrueCrypt の強力さは、大量のデータを保護して隠すことができる点にあります。実際、TrueCrypt はファイルを隠すことができるだけではなく、オペレーティング・システム全体を隠すこともできます。

F5

F5 も、しばらく前に開発され、その後少し手直しされて使いやすくなったステガノグラフィー・アプリケーションの 1 つです。F5 は基本的に、.txt ファイルや .doc ファイルなどのデータを JPEG などの画像の中に隠すためのツールです。

mp3stego

今度は少し新しいものを紹介しましょう。このツールの動作の説明は省略しますが、ステガノグラフィー・プロセスを利用したツールの 1 つとして mp3stego を紹介します。mp3stego を利用すると (名前からわかるように) MP3 ファイルの中にデータを隠すことができ、その MP3 ファイルのサイズは元のデータに比例します。これは基本的に次のようなプロセスで行われます。つまり .wav ファイルを取得してその中にデータを隠し、次にその .wav ファイルを圧縮して MP3 ファイルにします。このフォーマットの利点は、普通で単純に見えるフォーマットの中に任意のタイプのデータを隠せることです。

このプロセスの可能性を、これまでに説明した画像ベースの手法と比較して考えてみてください。MP3 ファイルも画像も、隠されたデータを配布するための異なる表現形式です。画像ファイルは Web サイトに掲示することができ、そこに秘密のデータがあることに誰かが気付く可能性はあまりありません。例えば、何らかの秘密データを、(隠された秘密が見つかる場所とは一見思えない) ポルノ画像の中に隠して掲示することができます。対照的に MP3 ファイルの場合、データを MP3 にエンコードして、例えば BitTorrent に投稿することができます。また、あるカンファレンスの講演の録音の中にデータをエンコードしてアップロードすることもできます。誰かがそれをダウンロードした場合、その人は講演を聞くことに飽きてしまっても、そのファイルの中に何かが隠されていることにはまったく気付きません。

Steganos Privacy Suite

このアプリケーション・パッケージは商用のソフトウェア・スイートであり、ステガノグラフィー・ユーティリティーのツールボックスと、データを隠した痕跡をなくすための他のツールが含まれています。Steganos Privacy Suite では、既存のファイルを選択してそこにデータを埋め込むこともできますし、画像ファイルまたは音声ファイルを作成してそこにデータを含めることもできます。実際、このスイートはスキャナーや接続されたマイクロホンとのインターフェースを利用してキャリア・ファイルを作成することができます。また、秘密のデータを保存するための最適なファイル・タイプがわからない場合には、Steganos はハードディスクをスキャンし、情報を隠すために最善の方法を見つけてくれます。

さらに他の手段

他にも興味深い方法があります。データを発見されないようにしたい場合、あるいは少なくとも検出を困難にしたい場合には、隠したい秘密にパディングを追加することができます。この手法では、偽のデータを追加することによって検出しにくくすることができます。要するに事態をややこしくて、何が本物のデータで何がそうではないかを検出者が判断しなければならないようにします。もちろん、余分なデータをパディングとして追加することによって、隠された情報を誰かが覗こうとする可能性が高まることに注意する必要があります。

ステガノグラフィーの検出

当然のことですが、すべての手段には対抗手段があり、ステガノグラフィーも例外ではありません。この場合の対抗手段はステガナリシスと呼ばれます。ステガナリシスの目標は非常に単純で、怪しいデータを検出し、そのデータの中に情報が隠されているかどうかを判断し、そのデータを復元することです。

表面的には、このプロセスは暗号解読として知られる同系統の手法とよく似ていると思えるかもしれません。しかし実際には、これらのプロセスは同じではありません。暗号解読の場合には、データが暗号化されているという事実は明白であり、単にデータを観察し、そのデータが暗号化されているかどうかを判断すればよいだけです。ステガナリシスの場合には、データが存在するらしいことがわかるのみであり、必ずデータが存在するとわかるわけではありません。

検出の原理

最も単純で最も基本的な形式のステガナリシスは、統計分析の手法を使って行われます。この手法では、既知のファイルのいわゆる「指紋」と疑わしいファイルとを比較できるという考え方を基に、既知の変更されていないファイルを疑わしいファイルと比較します。この統計的な比較によって、理論的には、通常の方法で生成されたファイルからの変更量を検出することができます。ここで重要な点は、疑わしいファイルと同じソース (つまりデジタルカメラやスキャナー) あるいは可能な限り似たソースから既知の適切なファイルを生成しないと、効果的な比較ができないという点です。この手法のバリエーションとして、JPEG や MP3 などのファイルに使用されている既知の圧縮アルゴリズムからの「ずれ」を検出する手法があります (これは圧縮アルゴリズムが公開されていることを利用しています)。

実際に使用されている、もう 1 つの高度な手法として、Noise Floor Consistency Analysis (ノイズ・フロア整合性分析) という手法があります。数学の博士論文のように聞こえるかもしれませんが、この手法では、1 つのデータ片の MSB 要素と LSB 要素の間でビット・レベルの比較を行います。MSB と LSB の間には基本的な相関関係があるはずなので、何らかのステガノグラフィー手法によって LSB を変更すると、この相関関係が損なわれるため、検出が可能になります。実際、この手法を実行する一部のアプリケーションでは、隠されたデータを非常に高い信頼性で検出することができます。

ステガナリシス手法の注意点として、隠されたデータを検出するために、複雑なレイヤーがもう 1 つ追加される場合もあります。例えば、隠されたデータを保護する要素を追加したい場合には、その保護要素を暗号化と組み合わせてからそのデータを埋め込みます。この場合、検出に成功したら、暗号解読も行う必要があります。

ステガナリシス・ツールは、多くのセキュリティー・ツールと同様に極めて特化されており、非常に高い値段が付けられていることがよくあります。ただし、いくつかの手法を試してみたい場合には、オープンソース・プロジェクトの Stegsecret (「参考文献」を参照) を利用して実験を始めることができます。

なぜステガノグラフィーが必要なのか

なぜステガノグラフィーが必要なのかは、ステガノグラフィーのプロセスを初めて見た多くの人達が抱く大きな疑問です。そこで、この手法を応用した例をいくつか説明しましょう。他のすべてのことと同じように、誰が何のために使うかにより、このプロセス全体を合法的な用途にも違法な用途にも使用できることに注意してください。このプロセスの合法的な応用としては、いわゆる透かしを画像に入れ、著作権などの知的財産権を強制する使い方があります。対照的に、非常に悪質な応用としては、違法な理由で情報を隠す使い方があります。実際、アルカイーダなどの組織はこのプロセスを使用し、Web サイトに掲示された無害な画像の中に情報を隠していることが知られています。

ではどのようにすれば、違法な情報の伝送や保存にステガノグラフィーの手法が使われることを防止できるのでしょう。これは、なかなか厄介な問題です。適切な方法で行えば、「ありきたりの場所」に非常に簡単に情報を隠しておくことができ、それを気づかれることはないからです。覚えておく必要があるのは、どんな画像や文書、あるいはその他のデータの中にでも情報を隠すことができ、それを適切に行えば疑われることさえないということです。この手法が違法な集団や犯罪者達の間でどれほど広く使われているかを確認することはできませんが、犯罪者、テロリスト、そしてその他の悪事を働く人達が、あらゆる悪事にこの手法を使っていることは、ほぼ間違いありません。「この強力な手法の健全な側面を利用する人達」は、企業のセキュリティー・ポリシーや行動規範を適用することで、この技術の不適切な使い方を防ぐことができます。しかし残念ながら「暗黒の側面を利用する人達」には、そうした障害はないのです。

まとめ

ステガノグラフィーは、実にありきたりの場所に情報を隠すための、昔からある、信じられないほど多用途で効果的な手法です。隠されたデータを検出する方法はありますが、どれも 100 パーセント効果的なわけではないため、そうした方法に完全に頼ることはできません。この手法が使われていることを検出して、阻止しようとする場合には、ステガノグラフィーの有効性を低下させるために、常に最新の技術と細心の注意を持って取り組まなければなりません。


ダウンロード可能なリソース


関連トピック

  • ステガノグラフィーの背景に関する優れた説明として、ウィキペディアを調べてください。またウィキペディアには暗号化に関する優れた情報も提供されています。
  • セキュリティーに関するニュースと情報を securityfocus.com で入手してください。
  • SANS Institute はセキュリティーに関する情報、認定されたプログラム、研究成果などが 1 ヵ所に集められたサイトです。
  • developerWorks の Web development ゾーンには Web 2.0 開発のためのツールと情報が豊富に用意されています。
  • TrueCrypt はデータ暗号化のためのオープンソース・ツールであり、Windows®、Mac OS X、Linux® システムに使用することができます。
  • 画像ベースのステガノグラフィー・ツールとして Hiding Glyph や Vecna があります。
  • mP3stego を使うと MP3 ファイルの中にデータを隠すことができます。
  • Steganos Privacy Suite はデータ保護やパスワード管理などを行う商用のツールセットです。
  • オープンソースの (GNU/GPL) ツール、Stegsecret を使ってステガナリシスを試してみてください。
static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development
ArticleID=405346
ArticleTitle=ステガノグラフィーを使って情報を見つからなくする
publish-date=06022009