簡単にモザイク処理を無効化できる「Depix」でモザイクをかけた文字列を突き止めてみた(転載)


シリアルナンバーやパスワードが写った画像の公開時によく利用される「モザイク処理」は、文字を判読不能にするため安全に思えます。しかし、実はモザイク処理には元画像の文字列を突き止めることができる「落とし穴」が存在します。画像の文字列に施されたモザイクを簡単に外せるツール「Depix」は、その落とし穴からモザイク処理によるセキュリティを突破しています。

GitHub - beurtschipper/Depix: Recovers passwords from pixelized screenshots
https://github.com/beurtschipper/Depix

Recovering passwords from pixelized screenshots
https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema

本当にモザイク処理を外すことができるのか、実際にDepixを使って確かめてみます。Depixの動作にはPythonが必要なので、まずは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でモザイクを外せる画像は非常に限られているようで、試しに以下のような画像にモザイクをかけて入力したところ、まったくモザイクを外すことができませんでした。

バックアップ