「CAPTCHA」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m r2.7.2+) (ロボットによる 変更: sv:Robotfilter
Loveless (会話 | 投稿記録)
m r2.7.3) (ロボットによる 変更: fi:Kuvavarmennus
136行目: 136行目:
[[es:Captcha]]
[[es:Captcha]]
[[fa:کپچا]]
[[fa:کپچا]]
[[fi:Kuvavarmennus (tietotekniikka)]]
[[fi:Kuvavarmennus]]
[[fr:CAPTCHA]]
[[fr:CAPTCHA]]
[[gl:CAPTCHA]]
[[gl:CAPTCHA]]

2012年10月4日 (木) 13:22時点における版

CAPTCHAの例。
人間はこれを「HTKEHS」と認識できるが、機械にとっては困難である。

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

ウィキペディアにおいても、ログインしていない状態(匿名)のユーザが外部リンクを追加する際、スパムの防止のためこの種の認証が用いられる。

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

概要

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

  1. CAPTCHAシステムは、ランダムな文字や数字の列を画面に表示する。表示される文字は歪んでいたり一部が覆い隠されていたりして、機械が自動的に読み取ることは難しい。
  2. ユーザーは画面に描かれている文字の列を読み取り、同じ文字列をシステムに入力する。
  3. システムが表示した文字列とユーザーが打ち込んだ文字列が一致していれば、ユーザーは歪んだ画像を認識する能力を持っていると考えられる。システムはそのユーザーが人間であると推測する。
  4. システムにアクセスできる人間を日本語使用者に限定したい場合、画像の文字種をひらがなカタカナに限定する。
  5. 応用として、画像の文字種でアラビア数字のみを入力させる場合、アラビア数字そのものではなく読み方をひらがな・カタカナで表示する(例:123456 → イチ に サン よん ご ロク)。
アラビア数字だと、言語を問わずほとんどの人間が読めるが、ひらがな・カタカナまで読める日本国外人口はそれほど多くないため、日本国外からのアクセスを大幅に抑制できる。

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

CAPTCHAは日本語では「画像認証」とも呼ばれている。

起源

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

用途

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

また、CAPTCHAは人間のリソースを使うこととなるが、この労力を「人間であることの確認」以外にも文書の電子化に使うというreCAPTCHAプロジェクトも行われている。

特徴

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

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

アクセシビリティ

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

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

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

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

他、文字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.
  • 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突破