コンテンツにスキップ

CAPTCHA

出典: フリー百科事典『ウィキペディア(Wikipedia)』
初期のCAPTCHAの例。
人間はこれを「HTKEHS」と認識できるが、機械にとっては困難である。

CAPTCHAキャプチャチャレンジ/レスポンス型テスト英語版の一種で、応答者がコンピュータではなく生身の人間であることを確認するために使われる。

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

この用語はカーネギーメロン大学ルイス・フォン・アンマヌエル・ブラム、ニコラス・J・ホッパー、IBMのジョン・ラングフォードによって2000年に造られた。CAPTCHA という語は「completely automated public Turing test to tell computers and humans apart」(コンピュータ人間を区別する完全に自動化された公開チューリングテスト)の人為的頭字語である。

認知ソフトウェアに対抗するために難化が繰り返された結果、既に人間の認識が困難になるほど難化しており、本来の目的を果たせていない場合がある(「過剰な難化」の節を参照)。

概要

[編集]

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

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

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

また、複数の画像の中から指定された画像を全て選ぶ「私はロボットではありません」と呼ばれるものも存在する[1]

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

起源

[編集]

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

用途

[編集]

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

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

特徴

[編集]

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

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

アクセシビリティ

[編集]

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

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

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

回避策

[編集]

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

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

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

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

機械による解読も巧妙になってきている。PWNtchaのようなプロジェクトによって、広く普及していた CAPTCHA の解読精度が目覚ましく進歩し、結果として CAPTCHA を過剰に難化させることとなった。

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

過剰な難化

[編集]

視力に問題のない人にとってさえ、知能化が進む認知ソフトウェアに対抗して設計された新世代の CAPTCHA は解くことが著しく困難である。すでに無視できないほどの人数の認識能力を上回っており、結果として人間の応答すら遮断してしまっている。

CAPTCHA を認識できなかった人々は応答を諦めているものと考えられ、そのような人々にとって過剰に難化した CAPTCHA は単なる障害でしかない。

他、正しい文字を入力しても、弾かれることがある。

脚注

[編集]

関連項目

[編集]

外部リンク

[編集]

CAPTCHA の実装

[編集]

Python

[編集]

Java

[編集]

PHP

[編集]

Perl

[編集]

Classic ASP

[編集]

.NET

[編集]

Ruby

[編集]

Smalltalk

[編集]

CAPTCHA サービス

[編集]

CAPTCHA 突破

[編集]