いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

ステガノグラフィーとは何か

 ステガノグラフィー(steganography)の話をしましょう。ステガノグラフィーとは、データを画像など、他のデータの中に隠す技術です。近い(?)ものに暗号というのがあります。暗号は文章を読めなくする技術、ステガノグラフィーは文章の存在自体を隠す技術です。何気ない文章ですが5文字毎に文字を拾うとメッセージが分かる、みたいなのが推理小説で「暗号」と称して出てきたりします。しかしこれはステガノグラフィー。ごっちゃになっています。
 今、ステガノグラフィーと言ったら普通コンピュータを使ったものを指すでしょう。下の写真を見てください。

f:id:Inuosann:20191108200230p:plain

画像Gに、図のような「いぬおさん」という文字(画像)を埋め込みましょう。しかしこんな感じにしてしまったら丸見えです。見ても埋め込んであることが分からないようにします。Gは白黒画像です。各点は0~255の数値で明るさが表され、その数値をドットの数だけまとめたものが画像ファイルです。まず、各点の明るさを偶数にします。例えば明るさが123だったら122に、124だったらそのままに。そして、左の図の位置に埋め込みたいとしたら、「いぬおさん」の文字(線)がある位置のドットだけを、明るさを+1してやります。つまり、明るさ50だったら51に、156だったら157に。これで文字の形に、明るさが奇数になりました。こうしても微妙な差ですから人間の目には分かりません。これで埋め込み完了。埋め込んだ画像を取り出したければ、犬の画像Hを隅から隅まで調べ、明るさが奇数の点を探し、それを新たに画像にすればよいわけです。埋め込み後の画像Hは、文字が埋め込まれているようには全く見えないでしょう。

 カラーの画像なら、1ドットが0~255の整数値3個の組で表されています。赤、青、緑の明るさです。実は人間は青の明るさの変化に鈍感で、より気づかれにくくするために埋め込みは青のデータに行います。つまり、青の明るさを偶数にして、文字の位置には+1して、……とやるのです。ここでは最も単純な方法を紹介しました。……なんのためにこんなものがあるのか? 例えばこうして何気ない絵に秘密のメッセージを埋め込むことができるわけです。

 音楽に埋め込むことも可能です。例えば、wavファイルのサウンドデータ部分を矩形に並べ直し、さっきと同じようにするのです。データをいったん偶数にします。そして文字の形に値を+1して……とでもやればよいですよね。