公開日:2007年6月28日
独立行政法人情報処理推進機構
セキュリティセンター
本ページの情報は2007年6月時点のものです。
記載の資料は資料公開当時のもので、現在は公開されていないものも含みます。
CAPTCHAが提供する機能はユーザ認証機能そのものではない。システム要件として自動化された大量アクセスを避けたい機能がある場合、その前に設けることを検討する価値はある。
CAPTCHA とは "Completely Automated Public Turing test to tell Computers and Humans Apart" の略であり、「人間とマシンを判別するチューリングテスト」のことである。
CAPTCHA は、ブラウザ以外の自動化されたWebクライアントによって大量のリクエストを投入されては困る案件において、相手がマシンでないことを確かめる目的で用いられる。例えば、会員登録フォームやメッセージ投稿フォームのようなケースが挙げられる。
Webアプリケーションで用いられる CAPTHCA には、歪められノイズが加えられた画像から 文字列を読み取るよう、ユーザに求めるものが多い。
かつて CAPTCHA は、プログラムからの大量自動投稿等を防ぐ効果があった。
しかし現在では、画像に対する文字列自動認識の技術が向上し、効果は減少した。これに対抗すべく、より難解な画像を用いるサイトもある。
一方、判読の難易度を上げ過ぎると、正規のユーザにも「敷居が高く」なり、サイトから人々を遠ざけてしまう。
しばしば「CAPTCHA認証」という言葉が用いられが、CAPTCHA 単独ではユーザ認証の手段になりえない。
CAPTCHA を用いてできることは、うまくいっても、対話の相手が人間であることを確かめられるのみである。相手がユーザ本人であるか否かはまったく分からない。
相手が本人であることを確認するには、パスワード等の「シークレット」や、ほかの認証アイテムが必要である。
本人認証の場面で、ユーザIDとパスワードの提示に加え、CAPTCHA への回答を求めるサイトがある。
これはたいてい、オンラインでパスワードを突き止めようとする攻撃(総当たり攻撃、辞書攻撃)をやりにくくすることを意図したものである。
しかし、ゆがみの少ない画像であればプログラムによる自動認識が可能であり、攻撃の速度はそれほど落ちない懸念がある。
かといって、ゆがみを多くすれば人間にとっても判読が困難になり、ログインできない利用者も出てくる。
オンラインでパスワードを突き止めようとする攻撃に対しては、認証失敗が繰り返されている事象を検出し、それが集中しているユーザIDやパスワードを一定時間受け付けない(ロックアウトする)ことの方が効果を期待できる。
ただし、認証失敗の連続を検出する方法は、ユーザIDとパスワードの対を一回しか試行しない「リスト攻撃」には効果がない。
文字列の判読を求める「文字列 CAPTCHA」や、画像の判別を求める「画像 CAPTCHA」の方式は、もはや限界にきていると言われている。すなわち、マシンによる自動判別が可能であるか、人間にとっても判別困難であるかのどちらかでしかなくなりつつあるのである。