Insomni'Hackで紹介されたAngeCryption

数日前、Insomni'Hackに参加してきました。私はDalvik実行ファイル内の隠しメソッドを見つけ出す方法に関する最新情報のプレゼンテーションを行いました。しかし今回の記事では私のプレゼンについてではなく、Ange Albertiniの「Angecryption」について話をしましょう。

Angecryptionでは、基本的にどのようなものでも好きなものに暗号化することが可能です(入力、出力フォーマットにいくらか制限がありますが、大抵は何でも使用できます)。

基本的にAnge Albertiniが書いた(Python)スクリプトに、自分で使いたい入力データ、出力データ、鍵を提供することになります。提供された鍵で暗号化された入力データと生成された初期化ベクトル(IV)が出力データに変換されるよう、スクリプトが入力データに含まれている情報を変えることなくデータ操作を行います(例えば、Anakin Skywalkerの画像であれば、Anakin Skywalkerの画像の状態を保ち、見た目も変わりません)。

このPythonスクリプトを私もAnakin SkywalkerとDarth Vadorの画像を使って試してみましたが、非常にうまくいきました。Anakinの画像がわずかに修正され(目で見てわかるようなものではありません)、IVが生成されました。そして(左側の)画像がAESで暗号化されると、(右側の)Darth Vadorの画像になります。逆にDarth Vadorを復号すると、Anakin Skywalkerが現れます。以下がその図解です。

試してみたい方は、ご自身でその仕組みを確認してみてください。

$ git clone https://github.com/cryptax/angepoc.git
$ cd angepoc/anakin
$ make all
python angecrypt-encrypt-anakin.py
Look at image angecrypt-darthvador.png: should be Darth Vador
python angecrypt-decrypt-vador.py
View image angedecrypt-anakin-skywalker.png: should be Anakin Skywalker

おもしろい!でも、使えるの?

暗号化された出力データを操作することが可能だということを示している点で、これは本当にすごいですね。何を暗号化しても「純粋なバイナリデータになってしまい、リーダブルなものにはならない」と言われたことはありませんか?Angecryptは理論においても実践においても、それが間違っていることを証明しています。

Angecryptionは楽しいだけでなく、ステガノグラフィにも使用できます。例えば、猫の画像をインターセプトしたとします。正しい鍵があれば、その猫が将来のビジネス戦略に関する情報を含む極秘のPDFに変換されるとは考えないですよね? 具体的に例を挙げれば、このテクニックはソーシャルネットワークの投稿の保護を目的とするサービス、Datarmineで使えるでしょう。知らない人たちに対しては、怪しまれることのない任意の画像を投稿内容として表示させ、適切な秘密鍵を持った人たちのみが画像を復号し、個人的な投稿を読むことができるようにすることが可能になります。

すごいですよね!

- the Crypto Girl

参考資料