web-dev-qa-db-ja.com

画像の写真のコピーからステガノグラフィーで隠されたデータを復元するにはどうすればよいですか?

ステガノグラフィックに隠されたメッセージを含む画像を撮影してから、元の画像データに頼らずに写真からステゴコンテンツをデコードする必要があります。タスクの信頼性を高めるステガノグラフィアルゴリズムはありますか?

注:LSB(Least Significant Bit)方式を試しましたが、カメラからの写真を処理したときに歪みが多すぎました。

4
uma

画像を使用してステガノグラフィーを実行する方法は複数あります。今日ほとんどの人がよく知っているのは、画像ファイルのデータに非表示(またはほとんど表示されない)データを埋め込むことです。つまり、通常の画像ファイルから始めて、ステガノグラフィックソフトウェアを使用してファイルを変更し、秘密のメッセージを埋め込んでから、その写真を公開して、共謀者が見ることができるようにします。このような変更はLSBと同じくらい簡単です。または、画像のJPEG量子化でデータを非表示にすることができます。または、埋め込まれたサムネイル画像または写真のメタデータのデータを非表示に非表示にすることができます。スキームが異なれば、可視性も異なります。

LSBだけではなく、「より見やすい」ステガノグラフィックアルゴリズムを選択することを検討してください。

1つの例は、GIFパレット置換ステガノグラフィスキームの変更です。 stegoにGIFを使用するには、256の単色ではなく128の2倍の色を選択してから、各ピクセルのハイビットバージョンまたはロービットバージョンを選択してメッセージを送信します。パレットの低ビットカラーは高ビットカラーとまったく同じ色であるため、ステゴは通常は見えません(ただし、使用中の色の数が減ったために画質が低下します)。少し色を変えると、カメラから見やすくなります。 GIFスキームを使用する利点は、色の変化を小さく保ち、メッセージを確実にデコードできるようになるまで一度に少しずつハイビットカラーを微調整することで、スキームをテストできることです。

また、リードソロモンエンコーディングなどのエラー修正コードを使用してステゴデータをエンコードすることも検討してください。これらはQRコードなどのシステムで使用され、コードの一部が破損または不明瞭になった場合に確実にスキャンできるようにします。このような労力を費やしたくない場合は、プレーンテキストメッセージを何十回も繰​​り返して画像全体に広げ、画像内の1つ以上の場所から検出される可能性を高めてください。

編集:コメントで、カメラからJPEG画像を使用しようとしていると述べました。しないでください。 JPEGは画像を圧縮するために「近い」色を組み合わせるように設計されているため機能しません。これにより、ステゴの形跡が完全になくなります。画像ファイルはJPEGではなくRAWとして処理する必要があります。

あなたのコメントに基づいて、私はあなたがあなたのカメラの色応答とそれがあなたのイメージの色をどのように知覚するかについて問題に遭遇するかもしれないと今気づきました。特にカメラのRGBカラー値はモニターのカラー値と同じにならないため、従来のRGBアプローチはおそらく機能しません。これを試す場合、カメラの色応答を調整する必要があるかもしれません。または、カメラ画像の色を比較により適した色空間に変換してみることもできます。

各ピクセルをL * a * b色空間に変換することは、おそらく違いを見つけるための最良の方法でしょう。

これらすべては恐ろしく複雑であり、おそらくデジタル画像処理の学位が必要になります。代わりに、元の画像でQRコードを非表示にする方法を見つけることができますか?

5
John Deters

写真の写真の撮影と不可逆圧縮アルゴリズム(JPG)の適用の両方から発生する急激なビットレベルの変更のため、単純なビットパターンステゴはおそらく機能しません。ただし、画像全体に透かしを入れるというアプローチを取る可能性はありますが、かなり強引である必要があります。

たとえば、これをベースイメージとして考えます。

Inline Baseline JPG

インラインベースラインJPG

GIMPと2つの異なるフーリエ変換ツールを使用して、2D周波数スペクトルにStegoメッセージを挿入し、次の2つの画像を取得します。

Inline Stego-1 JPG

インラインStego-1 JPG

Inline Stego-2 JPG

インラインStego-2 JPG

これらの2つのステゴ画像は、2D FFTでは次のようになります。

Stego-1_FFT

Stego-1_FFT

そして

Stego-2_FFT

Stego-2_FFT

2つのステゴ画像1と2の写真を私の安いAndroid=電話でモニターに撮ってから、電話からステゴメッセージを復元しようとしても、このテストでは機能しませんでしたが、電話のFFT Stego-2の可能性をほのめかした:

Phone_Stego-2_FFT

Phone_Stego-2_FFT

最終結果は、正しいテクニックで可能だと思いますが、簡単ではありません!

        **Edit**

外部リンクを小さなインラインJPGに置き換えました。ニコンでモニターショットを追加し、生で撮影し、TIFにポスト処理しました。これがStego-2 Nikon FFTです:

Stego-2 Nikon FFT

Stego-2 Nikon FFT

2
user10216038