Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで実現する画像ステガノグラフィ入門|stepicモジュールで画像にメッセージを隠す方法

本記事では、Pythonを使った画像ベースのステガノグラフィ(Steganography)について解説します。ステガノグラフィとは、テキストデータを音声・動画・画像などの背後に密かに隠す技術のことです。情報セキュリティの強化や、虚偽の著作権申請からの保護など、さまざまな場面で活用されています。

ここでは、Pythonのstepicモジュールが提供するエンコード機能を使って、画像にテキストを埋め込みます。また、画像の表示や確認には、Pythonの画像処理ライブラリであるPIL(Python Imaging Library)を使用します。

前提条件と準備

推奨IDE:Jupyter Notebook

まず、必要なライブラリをインポートしましょう。

>>> import stepic

本記事では、以下の画像にテキストをエンコードします。下記の画像をダウンロードし、Jupyter Notebookのローカルホストフォルダに「logo.png」という名前で保存してください。

Pythonで実現する画像ステガノグラフィ入門|stepicモジュールで画像にメッセージを隠す方法

なお、お好みの任意の画像を使用しても問題ありません。その場合は、画像のパスをダブルクォーテーションで囲んで指定するだけでOKです。

画像を開いて表示する

>>> img = Image.open('logo.png')
>>> img.show()

Image.open()関数を使うことで、ステガノグラフィの対象となる画像ファイルを開くことができます。さらに.show()関数を呼び出すと、以下のようにポップアップ形式で画像が表示されます。

Pythonで実現する画像ステガノグラフィ入門|stepicモジュールで画像にメッセージを隠す方法

メッセージをエンコードして隠す

次に、stepicモジュールを使って、メッセージをASCII値に基づく8ビットのバイナリデータとして画像に埋め込みます。エンコードには.encode()関数を使用し、この関数は「画像」と「メッセージ」の2つの引数を受け取ります。

エンコード後は、.save()関数を使って、隠しメッセージが含まれた画像を元のファイル名で保存します。

>>> img1 = stepic.encode(img, b'Tutorialspoint')
>>> img1.save('logo.png', 'PNG')

エンコード済み画像の確認

それでは、エンコードされた画像を表示してみましょう。

>>> img1 = Image.open('logo.png')
>>> img1.show()

Pythonで実現する画像ステガノグラフィ入門|stepicモジュールで画像にメッセージを隠す方法

2つの画像を見比べても、見た目上の変化には気づかないでしょう。これは、メッセージが画像内部に隠されており、直接目視では確認できないためです。

隠したメッセージをデコードして検証する

メッセージが正しくエンコードされているかを確認するには、以下のコードを実行します。

>>> im2 = Image.open('logo.png')
>>> message_hidden = stepic.decode(im2)
>>> print(message_hidden)

出力結果

'Tutorialspoint'

stepicモジュールに組み込まれたデコーダーによって、画像に隠されていたメッセージが正しく復元・表示されました。

まとめ

本記事では、Python 3.x以降で利用可能なstepicモジュールとPILライブラリを使った、画像ベースのステガノグラフィの基本について学びました。わずか数行のコードで、画像にテキストメッセージを目に見えない形で埋め込み、後から復元できることを確認できました。セキュリティ用途にとどまらず、電子透かしなどへの応用も期待できる興味深い技術なので、ぜひご自身でも試してみてください。

  1. Pythonでフォトモザイクを実装する方法をわかりやすく解説

    フォトモザイク(Photomosaic)とは、1枚の画像を正方形のグリッドに分割し、その各マスを別の画像や色のブロックに置き換える技法です。離れた場所から見ると元の画像がはっきりと見えますが、近づいて観察すると、さまざまな色の小さなブロックが集まって構成されていることが分かります。この記事では、Pythonの「photomosaic」というモジュールを使って、簡単にフォトモザイク画像を作成する方法をご紹介します。photomosaicモジュールのインストールまずは以下のコマンドでphotomosaicモジュールをインストールします。依存関係としてscikit-learnモジュールも同時にダウン

  2. PythonのSunPyライブラリで太陽画像をプロットする方法

    Pythonでは、SunPyというパッケージを使って太陽画像を作成・表示することができます。SunPyには、各地の太陽観測所や太陽研究機関が提供する陽子フラックスや電子フラックスなど、さまざまな太陽観測データが含まれています。 SunPyは、以下のコマンドで簡単にインストールできます。 pip install sunpy AIA画像とは ここではサンプルとしてAIA画像をプロットします。AIA(Atmospheric Imaging Assembly:大気圏撮像装置)は、NASAの太陽観測衛星SDO(Solar Dynamics Observatory)に搭載された観測機器の一つで、太陽大気を