シリアルナンバーやパスワードが写った画像の公開時によく利用される「モザイク処理」は、文字を判読不能にするため安全に思えます。しかし、実はモザイク処理には元画像の文字列を突き止めることができる「落とし穴」が存在します。画像の文字列に施されたモザイクを簡単に外せるツール「
本当にモザイク処理を外すことができるのか、実際にDepixを使って確かめてみます。Depixの動作にはPythonが必要なので、まずはPythonをインストールします。 にアクセスして「Download Python 3.9.0」をクリック。
「ファイルを保存」をクリックし、インストーラーをダウンロードします。
ダウンロードしたインストーラーをダブルクリックして実行。
「Add python 3.9 to PATH」にチェックを入れて「Install Now」をクリックします。
インストールが完了したら「Close」でウィンドウを閉じます。これでPythonのインストールは完了しました。
続いてGitHubからDepixをダウンロードします。 の「Code」をクリックして「Download ZIP」をクリック。
ダウンロードした圧縮ファイルを解凍ソフトで解凍。これでDepixを使える状態になりました。
今回Depixでモザイクを外す画像は以下。この画像からはどのような文字が書かれているのかまったくわかりません。
コマンドプロンプトを起動し、以下のようにコマンドを実行します。
python Depixを解凍したフォルダのパス\depix.py -p モザイクを外したい画像.png -s Depixを解凍したフォルダのパス\images\searchimages\debruinseq_notepad_Windows10_closeAndSpaced.png -o out.png
実行して3分ほど待つと、以下のような画像が出力されました。「Hello from the other side」と書かれていることがわかります。
Depixを開発したSipke Mellema氏は、モザイクを外す仕組みについて以下のように解説しています。ブロックによる画像のモザイク処理は、まず画像をブロックごとに区切り、そのブロック内の色の平均値でブロックを塗りつぶすことで行われています。元の情報が失われているので、モザイク処理後の画像から元画像を直接復元することはできません。
Depixは以下のような「テキストのスクリーンショット」からモザイク後の画像を生成して、生成した画像をモザイク後の画像と照合しているとのこと。モザイク処理後の画像から元画像を復元しているわけではなく、生成した画像とモザイク後の画像が一致すれば、元画像の文字を突き止めることができるという仕組みです。この発想は にも応用されています。
Depixで利用されている考え方は にも使われています。「実装者が破る方法を知らないセキュリティ構造は突破されないという思い込みは、セキュリティによくある落とし穴です」とMellema氏はコメントしています。
ちなみに、Depixでモザイクを外せる画像は非常に限られているようで、試しに以下のような画像にモザイクをかけて入力したところ、まったくモザイクを外すことができませんでした。