CAPTCHA

提供: フリー百科事典『ウィキペディア(Wikipedia)』

(Captcha から転送)
CAPTHCAの例。人間はこれを「HTKEHS」と認識できるが、機械にとっては困難である。

CAPTCHA(キャプチャ)は チャレンジ/レスポンス型テストの一種で、応答者がコンピュータでないことを確認するために使われる。

この用語はカーネギーメロン大学のLuis von Ahn、マヌエル・ブラム、Nicholas J. Hopper、IBMのJohn Langfordによって2000年に造られた。CAPTCHAという語は「Completely Automated Public Turing test to tell Computers and Humans Apart」(コンピュータ人間を区別する完全に自動化された公開チューリングテスト)の人為的頭文字である。

目次

[編集] 概要

もっとも一般的な画像によるCAPTCHAの場合、次のように画像に記されている文字や数字を読み取ることができるか否かによって人間と機械を判別する。

  1. CAPTCHAシステムは、ランダムな文字や数字の列を画面に表示する。表示される文字は歪んでいたり一部が覆い隠されていたりして、機械が自動的に読み取ることは難しい。
  2. ユーザーは画面に描かれている文字の列を読み取り、同じ文字列をシステムに入力する。
  3. システムが表示した文字列とユーザーが打ち込んだ文字列が一致していれば、ユーザーは歪んだ画像を認識する能力を持っていると考えられる。システムはそのユーザーが人間であると推測する。

コンピュータがテストを監督することから、人間が監督する標準的なチューリングテストとの対比として、CAPTCHAはときに逆チューリングテストとも呼ばれる。

[編集] 起源

CAPTCHAはもともと、1997年AltaVistaのAndrei Broderとその同僚たちによって、ボットが彼らの検索エンジンURLを追加するのを防ぐために開発された。彼らは画像をOCRによる攻撃に耐えられるようにする方法を探していた。ブラザー工業スキャナの取扱説明書には、OCRの結果を改善するためには均質な活字面、無地の背景を用いるよう薦められていた。そこで彼らは取扱説明書に「OCR認識の結果を悪くする」と書いてある条件を真似て最初のCAPTCHAを作り出した。Broderによれば、CAPTCHAは検索エンジンへのスパム追加を95%削減できたという。

[編集] 用途

CAPTCHAはボット (bot) が種々のコンピュータのサービスを使うのを防ぐために使われる。 応用用途として挙げられることとして、ボットがオンライン投票に参加したり、(後でスパムを送るために使われるかもしれない)無料メールアカウントに登録するのを防ぐことなどがある。さらに最近では、ボットが生成するスパムを防ぐために、メールメッセージが配達される前に(未承認の)送り主がCAPTCHAテストに通るのを要求することなどがある。

[編集] 特徴

定義より、CAPTCHAは以下の特徴を持っている:

  • CAPTCHAは自動化されている。テストを管理運用するにあたって人間の介在をほとんど(あるいは全く)必要としない。これはテストにおける人間の管理や介入の必要性を避けることができ、コストや信頼性においても明らかに有益である。
  • 使用されるアルゴリズムは多くの場合公開される。ただし、特許によって妨げられるかもしれない。これが規定されているのは、CAPTCHAの突破には、リバースエンジニアリングなどの手法を用いて達成できるような単なる(秘密の)アルゴリズムの発見よりも、人工知能(AI)の分野における難問の解決法を要求する、ということが必要なためである。

[編集] アクセシビリティ

アクセシビリティ」も参照

視覚認識の問題に基づくCAPTCHAは、視覚障害を持ったユーザが保護されたリソースにアクセスする際の妨げとなる。CAPTCHAは機械可読ではないように設計されているので、スクリーンリーダのような支援ツールでも解釈できない。

しかし、CAPTCHAが視覚的である必要はない。 例えば音声認識のように、人工知能によって解くのが困難な問題であれば、CAPTCHAとして使うことができる。ユーザが音声認識問題を選択できるようなCAPTCHAの実装もある。しかしながら、音声(聴覚)CAPTCHAの開発は画像(視覚)CAPTCHAよりも後れを取っており、あまり普及はしていない。また、テキストの意味を理解させるような問題もCAPTCHAとして用いることができる。例えば、論理パズルや常識問題などである。

視力に問題のない人にとってさえ、複雑化する認知ソフトウェアに対抗して設計された新世代のCAPTCHAは解くのが困難なこともある。その対策として、ユーザが別の問題を選択できるようにすることが一般的である。

W3Cによる論文[1]ではCAPTCHAのアクセシビリティ上の問題点がいくつか示されている。

[編集] 回避策

CAPTCHAを回避するために、囮ウェブサイトでユーザを集め、彼らを騙してCAPTCHAの問題を解かせるという手法がとられることがある。

ユーザがスパマーの開設した囮ウェブサイトを訪れると、スパマーのサーバーは攻撃対象のサーバーにアクセスし、アカウント取得等の処理を開始する。そして攻撃対象のCAPTCHAをダウンロードし、囮ウェブサイトにアクセスするためのCAPTCHAとしてユーザに提示する。ユーザは、CAPTCHAが再利用されるとは知らずに、正しい回答を提供する。そしてスパマーはその回答を利用し、攻撃対象のCAPTCHAを突破することができる。

また、大量の人員を雇い、彼らに解かせるという手法もある。W3Cの論文[1]には、「そのようなオペレータは一時間に数百のCAPTCHAを解読できる」とある。一方、この手法は経済的に実行不能であるとする指摘もある[2]

MoriらはIEEE CVPR'03において、最も有名なCAPTCHAの一つであるEZ-Gimpyを打ち破る手法を詳述した論文[3]を発表し、その手法は92%の的中率であると検証された。また、より複雑であまり広く普及していないGimpyプログラムが、同じ手法により33%の的中率で打ち破られた。しかし、彼らのアルゴリズムが実際に実装され、利用されているかどうかについては、現時点でははっきりしていない。

機械による解読も巧妙になってきている。PWNtchaのようなプロジェクトによって、広く普及していたCAPTCHAの解読精度が目覚ましく進歩し、結果としてより精巧なCAPTCHAの発展に貢献した。

文字認識技術や囮ウェブサイトによらず、既知のCAPTCHA画像のセッションIDを再利用するという手法もある[4]

[編集] 脚注

[編集] 外部リンク

ウィキメディア・コモンズ

[編集] CAPTCHAの実装

[編集] Python

[編集] Java

[編集] PHP

[編集] Perl

[編集] Classic ASP

[編集] .NET

[編集] Ruby

[編集] Smalltalk

[編集] CAPTCHAサービス

  • CAPTCHA Service Free service, supports reload button, audio and smart captcha technology.
  • captcha.jp , 日本語によるCAPTCHAサービス
  • captchas.net, Free CAPTCHA Service (image and audio)
  • address-protector.com, A way to avoid email spam; you give it your email address, it gives you a link which when clicked will show a captcha which when 'passed' will show your email address.

[編集] CAPTCHA突破