土曜日, 3月 01, 2008

CAPTCHA認証破りへの対抗策

 情報源がどこだったか忘れてしまったが、CAPTCHA認証をパターン認識技術で破り、フリーメールアカウントを多数取ってスパム送信に使うという手口が現れたらしい。30%以上の確率でCAPTCHA認証を突破できるくらいになっているそうである。
 よく使われているCAPTCHA認証は、ゆがんだ文字と汚れた背景の画像から文字を読み取らせるものであるが、パターン認識技術が進歩すれば、機械的に読み取れる確率は上がってくる。
 そこで、こんなCAPTCHA認証はどうだろうか。
 画像とその説明の言葉の組をたくさん用意しておく。

「王冠をかぶった女性」
「ネクタイをした男性」
「眠っている猫」
「リボンを付けた猫」
「炎が左になびいているろうそく」
「吹き消されたばかりのろうそく」
「前がつぶれた乗用車」
「横転した乗用車」

といった具合である。そして、数十個の画像を表示し、説明の言葉を数個表示して、該当する画像をチェックボックスで選ばせる。
 この認証を機械的に突破するには、高度な人工知能が必要である。今のパターン認識技術でも、画像を解析して「人の顔」という判断はできるだろう。しかし、「王冠をかぶった」、「ネクタイをした」などの修飾語付きの条件で判別するには、自然言語理解と超高度なパターン認識と膨大な知識データベースが必要である。それができる人工知能の実現はかなり先のことだろう。
 選択肢をでたらめに選んで突破する確率は、かなり低くできる。たとえば25個のうち5個選ばせるとしたら、選ぶ数は5個だという情報が得られていたとしても、突破できる確率は1/53130である。選ぶ数が機械的には知られにくいようにすれば、さらに突破の確率を低くできる。
 しかも、この方法なら、プログラムが難しくなることもない。また、認証手続きに文字入力が不要でマウス操作だけですむので、ユーザーには好まれるかもしれない。

8 件のコメント:

stealthinu さんのコメント...

その手の手法は、写真の枚数が少ない(数万枚程度とか)と、データベース化されることで突破されてしまう、という問題があるそうです。
ただ、マイクロソフトだかどこかで研究してるものでは、猫をライブカメラみたいなので撮っておいて(つまり写真が常に新たに作り出されている)、そこから問題出す、みたいなのでその問題を克服してる、というのもありました。

deo さんのコメント...

 え゛、どうやってデータベース化するんですか?自動的にやる方法って…

stealthinu さんのコメント...

そこは人手が必要になるはずです。
たぶん中国とかに外注してDB作らせるんではないでしょうか。
もしくは、ゲームとかアダルト画像とかで釣って、問題解かせる手法とか。
結局、問題作るほうも人間なので、そこは人力で対応可能な範囲になってしまうようです。
表示する写真を、CAPTCHAのように少しゆがませるとかすると良いのかも。

deo さんのコメント...

 人手使えばどんなCAPTCHAも破られちゃいますね。破るのが経済的に引き合わないならば使い物になる方法だと言っていいでしょう。
 日本人向けのCAPTCHA認証なら、「鎌倉の大仏の上にカラス」とか「豆腐を包丁で切り込んでいるところ」などのイラストを選ばせるというのはどうでしょ。自動翻訳しても外国人にはわかりにくい問題を用意することで相当安全になると思います。

stealthinu さんのコメント...

> 人手使えばどんなCAPTCHAも破られちゃいますね。
あ、そうなんですが、これの場合、一度DB作られてしまえば、その後はコスト無しで破られてしまう、というのが問題になると思います。
日本のスパマーのレベルは低いように思うので、日本人向けにしぼるなら、漢字のよみを画像で書いて変換してもらうとか、それでも十分いけると思います。

deo さんのコメント...

 DBの方式にもよりますが、単にビットマップデータとして比較する手口に対しては、毎回絵を数ピクセルずらすことで対抗できるでしょう。パターン認識を活用する手口に対しては、次から次へとイラストを追加することで対抗できると思います。たとえば「眠っている猫」については、左向きの猫、右向きの猫、こたつに入っている猫、日光の眠り猫という具合に。絵の意味付けを理解する人工知能にはコストがかかるでしょうから。

stealthinu さんのコメント...

> 毎回絵を数ピクセルずらす
ですね。これと似たような案で「表示する写真を、CAPTCHAのように少しゆがませる」を書いていました。

画像での認識は結構弱い、というのをどこで読んだんだっけ?と思ってブックマークから探してみました。
Radium Software Development - CAPTCHA
http://www.radiumsoftware.com/0611.html#061107
で、このエントリー中ですでに「PIX が十分な CAPTCHA となるには,ランダムに画像を歪ませる,あるいはノイズを混ぜる等して,自動的なマッチングを適用しにくい形にしなくてはならない。」と書かれてました orz

deo さんのコメント...

 なるほろ。背景に薄い色のピクセルをランダムにちりばめてその上にイラストの線画を重ねるのでもいいんですね。