第9章 Web関連技術
CAPTCHA

CAPTCHAが提供する機能はユーザ認証機能そのものではない。システム要件として自動化された大量アクセスを避けたい機能がある場合、その前に設けることを検討する価値はある。

CAPTCHAとは

CAPTCHA とは "Completely Automated Public Turing test to tell Computers and Humans Apart" の略であり、「人間とマシンを判別するチューリングテスト」のことである。

CAPTCHA は、ブラウザ以外の自動化されたWebクライアントによって大量のリクエストを投入されては困る案件において、相手がマシンでないことを確かめる目的で用いられる。例えば、会員登録フォームやメッセージ投稿フォームのようなケースが挙げられる。

Webアプリケーションで用いられる CAPTHCA には、歪められノイズが加えられた画像から 文字列を読み取るよう、ユーザに求めるものが多い。

captcha
図2-2: CAPCHA

 

CAPTCHA の効果と弊害

かつて CAPTCHA は、プログラムからの大量自動投稿等を防ぐ効果があった。

しかし現在では、画像に対する文字列自動認識の技術が向上し、効果は減少した。これに対抗すべく、より難解な画像を用いるサイトもある。

一方、判読の難易度を上げ過ぎると、正規のユーザにも「敷居が高く」なり、サイトから人々を遠ざけてしまう。

 

■CAPTCHA は認証ではない

しばしば「CAPTCHA認証」という言葉が用いられが、CAPTCHA 単独ではユーザ認証の手段になりえない。

CAPTCHA を用いてできることは、うまくいっても、対話の相手が人間であることを確かめられるのみである。相手がユーザ本人であるか否かはまったく分からない。

相手が本人であることを確認するには、パスワード等の「シークレット」や、ほかの認証アイテムが必要である。

 

CAPTCHA はパスワード破り対策にならない

本人認証の場面で、ユーザIDとパスワードの提示に加え、CAPTCHA への回答を求めるサイトがある。

これはたいてい、オンラインでパスワードを突き止めようとする攻撃(総当たり攻撃、辞書攻撃)をやりにくくすることを意図したものである。

しかし、ゆがみの少ない画像であればプログラムによる自動認識が可能であり、攻撃の 速度はそれほど落ちない懸念がある。

かといって、ゆがみを多くすれば人間にとっても判読が困難になり、ログインできない利用者も出てくる。

オンラインでパスワードを突き止めようとする攻撃に対しては、認証失敗が繰り返されている事象を検出し、それが集中しているユーザIDやパスワードを一定時間受け付けない(ロックアウトする)ことの方が効果を期待できる。

ただし、認証失敗の連続を検出する方法は、ユーザIDとパスワードの対を一回しか試行しない「リスト攻撃」には効果がない。

 

CAPTCHA 技術の動向

文字列の判読を求める「文字列 CAPTCHA」や、画像の判別を求める「画像 CAPTCHA」の方式は、もはや限界にきていると言われている。すなわち、マシンによる自動判別が可能であるか、人間にとっても判別困難であるかのどちらかでしかなくなりつつあるのである。

(作業中)