CAPTCHA
出典: フリー百科事典『ウィキペディア(Wikipedia)』
CAPTCHA(キャプチャ、"Completely Automated Public Turing test to tell Computers and Humans Apart"; コンピュータと人間を区別する完全に自動化された公開チューリングテスト)は チャレンジ/レスポンス型テストの一種で、ユーザが人間であるかどうかを決定する計算処理に使われる。この用語はカーネギーメロン大学のLuis von Ahn、マヌエル・ブラム、Nicholas J. Hopper、IBMのJohn Langfordによって2000年に造られた。日本でよく使われる「画像認証」はその一つ。
目次 |
[編集] 概要
もっとも一般的な画像によるCAPTCHAの場合、次のように画像に記されている文字や数字を読み取ることができるか否かによって人間と機械を判別する。
- CAPTCHAシステムは、ランダムな文字や数字の列を画面に表示する。表示される文字は歪んでいたり一部が覆い隠されていたりして、機械が自動的に読み取ることは難しい。
- ユーザーは画面に描かれている文字の列を読み取り、同じ文字列をシステムに入力する。
- システムが表示した文字列とユーザーが打ち込んだ文字列が一致していれば、ユーザーは歪んだ画像を認識する能力を持っていると考えられる。システムはそのユーザーが人間であると推測する。
コンピュータがテストを監督することから、人間が監督する標準的なチューリングテストとの対比として、CAPTCHAはときに逆チューリングテストとも呼ばれる。
[編集] 起源
CAPTCHAはもともと、1997年にAltaVistaのAndrei Broderとその同僚たちによって、ボットが彼らの検索エンジンにURLを追加するのを防ぐために開発された。彼らは画像をOCRによる攻撃に耐えられるようにする方法を探していた。ブラザー工業のスキャナの取扱説明書には、OCRの結果を改善するためには均質な活字面、無地の背景を用いるよう薦められていた。そこで彼らは取扱説明書に「OCR認識の結果を悪くする」と書いてある条件を真似て最初のCAPTCHAを作り出した。Broderによれば、CAPTCHAは検索エンジンへのスパム追加を95%削減できたという。
[編集] 用途
CAPTCHAはボット (bot) が種々のコンピュータのサービスを使うのを防ぐために使われる。 応用用途として挙げられることとして、ボットがオンライン投票に参加したり、(後でスパムを送るために使われるかもしれない)無料メールアカウントに登録するのを防ぐことや、そしてもっと最近では、ボットが生成するスパムを防ぐために、メールメッセージが配達される前に(未承認の)送り主がCAPTCHAテストに通るのを要求することなどがある。
[編集] 特徴
定義より、CAPTCHAは以下の特徴を持っている:
- CAPTCHAは自動化されている。テストを管理運用するにあたって人間の介在をほとんど(あるいは全く)必要としない。これはテストにおける人間の管理や介入の必要性を避けることができ、コストや信頼性においても明らかに有益である。
- 使用されるアルゴリズムは多くの場合公開される。ただし、特許によって妨げられるかもしれない。これが規定されているのは、CAPTCHAの突破には、リバースエンジニアリングなどの手法を用いて達成できるような単なる(秘密の)アルゴリズムの発見よりも、人工知能(AI)の分野における難問の解決法を要求する、ということが必要なためである。
[編集] CAPTCHA画像の例
上記の画像の内容は、恐らく「HTKEHS」と読めるであろう。
[編集] アクセシビリティ
アクセシビリティも参照。
テキストを読むこと(あるいは他の視覚認識の課題)に基づくCAPTCHAは、視覚障害を持ったユーザが保護されたリソースにアクセスすることを妨げる。しかし、CAPTCHAが視覚的である必要はない。 例えば音声認識のような人工知能の難問であれば、何でもCAPTCHAの基礎として使うことができる。ユーザが音声CAPTCHAを選択できるようなCAPTCHAの実装もある。しかしながら、音声(聴覚)CAPTCHAの開発は画像(視覚)CAPTCHAよりも後れを取っているようなので、現状では有効ではないかもしれない。何かのテキストの意味を理解するような、他の種類の課題もCAPTCHAとして用いることができる。例えば、論理パズルや常識問題、パスワードそのものでなくパスワードの構成法を教える、などである。しかし、このような方法についても、対抗手段に対する対策はほとんど研究されていない。
視力の無いユーザ(例えば盲目のユーザ)にとって、画像CAPTCHAは重大な問題を提起している。CAPTCHAは機械可読ではないように設計されているので、スクリーンリーダのような一般的な支援工学のツールでは解釈できない。CAPTCHAはよく新規登録の際に使われる(例えばeBayやYahoo!)ので、この問題が完全にアクセスを遮断しないとも限らない。
視力に問題のない人でさえ、複雑化する認知ソフトウェアにうち勝つように設計された新世代のCAPTCHAは理解が困難であったり、理解不能であったりする。後述するサイトのCAPTCHAデモの一部も、全てではないにせよ多くの人にとって判読不能である。
W3Cによる論文Inaccessibility of Visually-Oriented Anti-Robot Tests(日本語訳: 視覚型アンチロボットテストのアクセシビリティ欠如問題)ではCAPTCHAのアクセシビリティの問題がいくつか概説されている。
[編集] 回避策
無料メールプロバイダの中には、アカウント登録時にCAPTCHAを使ってスパマーが大量のアカウントを自動的に獲得するのを阻止しているところもある。スパマーはこの制限を回避する為に、嘘の口実を作って人間のユーザにCAPTCHAを単に提示し、人間の応答を使ってメールアカウントを獲得するのである。
その方法を行うためには、スパマーは人間ユーザがアクセスしたいウェブサイトを管理しなければならない。(例えばポルノサイト)ユーザがスパマーのポルノサイトに行くと、サーバは無料メールプロバイダの新しいアカウント登録を開始する。そしてプロバイダのCAPTCHAをダウンロードし、ポルノサイトへアクセスするためのCAPTCHAとしてユーザに提示する。ユーザは、CAPTCHAが再利用されるとは知らずに、正しい回答を提供する。そしてスパマーのソフトウェアはメールアカウントの登録を完了することができる。俗に「エロ・グリッド・コンピューティング」と呼ばれる。
CAPTCHA突破はまた、それを解読するために雇われた人間のオペレータを中継することによっても可能である。下に挙げたW3Cの論文には、「そのようなオペレータは一時間に数百のCAPTCHAを解読できる」とある(読みづらくしてあるとはいえ文字を読むだけなのだから当然ではあるが)。それにも関わらず、[1]のようにこの突破手法はまだ経済的に実行不能であるとする指摘もある。
MoriらはIEEE CVPR'03において最も有名なCAPTCHAの一つのEZ-Gimpyを打ち破る手法を詳述した論文を発表し、その手法は92%の的中率であると検証された。また、より複雑であまり広く普及していないGimpyプログラムが、同じ手法により33%の的中率で打ち破られた。しかし、彼らのアルゴリズムが"野生で"実装されて存在しているかどうかについては、現時点でははっきりしていない。
CAPTCHAに対する自動攻撃もまた巧妙になってきている。PWNtchaのようなプロジェクトは、広く用いられていたCAPTCHAの突破に関して目覚ましい進歩を遂げ、より精巧なCAPTCHAへの移行に貢献した。
OCRや無料ポルノサイトによらずにCAPTCHAを回避する方法もある; 単に既知のCAPTCHA画像のセッションIDを再利用するのである。puremango.co.ukのdetailed information about this type of attackを見よ。
[編集] 外部リンク
- The CAPTCHA Project
- Inaccessibility of Visually-Oriented Anti-Robot Tests: Problems and Alternatives W3C勧告。題名を日本語にすれば、「視覚によるロボット排除テストの視覚障害者への問題:問題と回避方法」である。
- PARCのサイトにあるCAPTCHAの歴史。
- US Patent for CAPTCHA, patent #6,195,698 この文書が作成された時点では未だ「CAPTCHA」という呼び名は考案されていなかった。
[編集] CAPTCHAの実装
[編集] Python
- PyCaptcha CAPTCHAを実装するPythonモジュールのコレクション
- Python Module at CAPTCHAs.net are providing a python module to simplify the task of writing a web application using CAPTCHAs.net.
[編集] Java
- The JCAPTCHA Project, Captchaの定義と統合のためのオープンソースのJavaフレームワーク
- The reCAPTCHA Project, Javaによる実装
- The simple CAPTCHA Project, a new open-source Java implementation.
- Proposal and source code for an audio based CAPTCHA written in Java.
[編集] ColdFusion
- The Alagad Captcha, 100% ColdFusionネイティブなColdFusionコンポーネント
[編集] PHP
- CryptograPHP a free powerful implementation, PHPによる実装
- VeriWord, PHPによる実装
- Image Verification Tutorial, PHP + GDによる実装(Planet Source Code)
- Image Verification, PHP + GDによる実装
- Auditor, PHP + GDによる実装
- tacs, PHP + GDによる実装
- freeCap 1.4, PHP + GD implementation with multiple fonts and hammering protection, distributed under the GPL
- Forms generation and validation class with a plug-in to implement a CAPTCHA validation input
- PEAR's Text_CAPTCHA, a PHP implementation.
- tEABAG_3D CAPTCHA, by OCR Research Team. 3D captchas using PHP4 + GD.
- GOTCHA!, yet another captcha using PHP4 + GD.
- CAPTCHAPHP, data: URLs, readable riddle in alt= for visually impaired users and not OCR-safe
- Block AutoSubmit, Implementation that works with newer and older GD down to version 1.63.
- KCAPTCHA, PHP + GD, text-distortion.
[編集] Perl
- Authen::CAPTCHA, Perlによる実装
- GD::SecurityImage, Perlによる別の実装(GD + Image::Magick).
[編集] Classic ASP
- Poor man's CAPTCHA, a Classic ASP implementation using CSS, javascript and ASP.
[編集] .NET
- CAPTCHA Image, 解説・ソースコード付きの.NETによる実装(ASP.NET用)
- CAPTCHA Custom Control, ASP.NETのためのCAPTCHAサーバーコントロール
[編集] Ruby
- Ruby/CAPTCHA, GDを用いたRubyによる実装.
- CAPTCHA Tutorial for Ruby on Rails
- How to implement a CAPTCHA with Ruby on Rails and RMagick
[編集] Smalltalk
- SW2Captcha, a Smalltalk implementation using Morphic.
[編集] 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突破
- -PHP CAPTCHA SCRIPT
- Breaking CAPTCHAs without using OCR - OCRを用いないCAPTCHAの突破
- AC/DC - Automated CAPTCHA Defeater Code 上記サイトで説明されている方法を用いたCAPTCHAへの攻撃。オンラインのデモがあるが、ソースコードは公開されていない。
- How spammers crack captchas using free porn.
- Recognizing Objects in Adversarial Clutter: Breaking a Visual CAPTCHA Mori他。IEEEから刊行。IEEEの有償の会員のみが表示可能
- OCR Research Team defeats weak CAPTCHAs.
- Using AI to beat CAPTCHA and post comment spam
- PWNtcha - CAPTCHA decoder
- Defeating a simple CAPTCHA with OSS software

