はじめに
ステガノグラフィとは、秘密のメッセージを「ばれないように、こっそりと」隠す技術である。画像メディアに対するステガノグラフィのPythonパッケージは見つかるのだが、音メディア系はちょっと見当たらなかったので、試しにPythonで書いてみたということ。
今回の実装はステガノグラフィ技術の中でも一番簡単なLSB置換法に基づくものである。LSBとは最下位ビットのことを指す。音の各サンプル点における振幅値(整数)の最下位ビットは相対的に重要度が低いと考えられるので、ここに情報を埋め込む、すなわち振幅値のLSBをメッセージのビットで置き換えるわけである。
準備
1. ステガノグラフィのPythonパッケージsteganoをインストール
pip install stegano
2. soundfile, numpy, scipyをインストール
3. メッセージを隠したいwavを用意
Pythonスクリプト
今回は秘密のメッセージを文字列として与えることにした(『Hello, World!』)。以下のコードではwavの入力まわりのつくりがまだ甘いが。隠したメッセージはきちんと復元できるのがポイントである。
$ python stegano_lsb.py Hidden message is "Hello, World!"