コンピューターを使用してチケットを購入し、地元の会場でコンサートを観戦しています。チケットを購入する前に、まずテストに合格する必要があります。それは難しいテストではありません-実際、それがポイントです。あなたにとって、テストは単純で簡単でなければなりません。しかし、コンピューターの場合、テストを解決することはほとんど不可能です。
この種のテストはCAPTCHAです。これは、コンピューターと人間を区別するための完全自動公開チューリングテストの頭字語です。それらは、ヒューマンインタラクションプルーフ(HIP)の一種としても知られています。おそらく、多くのWebサイトでCAPTCHAテストを見たことがあるでしょう。 CAPTCHAの最も一般的な形式は、いくつかの歪んだ文字の画像です。正しい一連の文字をフォームに入力するのはあなたの仕事です。あなたの文字が歪んだ画像の文字と一致する場合、あなたはテストに合格します。
なぜ誰かが人間とコンピューターを区別できるテストを作成する必要があるのでしょうか?これは、システムをゲームしようとしている人々のせいです。彼らは、サイトを実行しているコンピューターの弱点を悪用したいと考えています。これらの個人はおそらくインターネット上のすべての人々の少数派を構成していますが、彼らの行動は何百万ものユーザーやWebサイトに影響を与える可能性があります。たとえば、無料の電子メールサービスは、自動化されたプログラムからのアカウント要求によって攻撃されていることに気付く場合があります。その自動化されたプログラムは、何百万もの人々にスパムメールを送信するためのより大きな試みの一部である可能性があります。 CAPTCHAテストは、どのユーザーが本物の人間で、どのユーザーがコンピュータープログラムであるかを特定するのに役立ちます。
CAPTCHAテストの興味深い点の1つは、テストを設計する人が、テストが失敗したときに常に動揺しているとは限らないことです。これは、CAPTCHAテストが失敗するために、誰かがコンピューターにテストの解決方法を教える方法を見つけなければならないためです。言い換えれば、すべてのCAPTCHAの失敗は、実際には人工知能の進歩です。
次のセクションでは、CAPTCHAとは何かを詳しく見ていきましょう。
ご挨拶、プログラム!
CAPTCHAプログラムの皮肉の1つは、CAPTCHAアプリケーションが、答えを知らなければ解決できないテストを生成できることです。
- CAPTCHAとチューリングテスト
- CAPTCHAを使用するのは誰か
- CAPTCHAの作成
- CAPTCHAを壊す
- CAPTCHAと人工知能
CAPTCHAとチューリングテスト
CAPTCHAテクノロジーは、チューリングテストと呼ばれる実験に基づいています。現代のコンピューティングの父と呼ばれることもあるアランチューリングは、マシンが人間のように考えることができるかどうか、または考えているように見えるかどうかを調べる方法としてテストを提案しました。古典的なテストは模倣のゲームです。このゲームでは、質問者が2人の参加者に一連の質問をします。参加者の1人は機械で、もう1人は人間です。質問者は参加者を見たり聞いたりすることができず、どちらがどちらであるかを知る方法がありません。質問者が応答に基づいてどの参加者がマシンであるかを判断できない場合、マシンはチューリングテストに合格します。
もちろん、CAPTCHAの目標は、人間は簡単に合格できるが、機械は合格できないテストを作成することです。 CAPTCHAアプリケーションがさまざまなユーザーにさまざまなCAPTCHAを提示できることも重要です。ビジュアルCAPTCHAがすべてのユーザーに同じ静止画像を表示した場合、スパマーがフォームを見つけて文字を解読し、正しい答えを自動的に入力するようにアプリケーションをプログラムするまで、それほど時間はかかりません。
すべてではありませんが、ほとんどのCAPTCHAは視覚的なテストに依存しています。コンピュータは、視覚データの処理に関して、人間が持っているような洗練されたものを欠いています。コンピューターよりも簡単に画像を見てパターンを見つけることができます。人間の精神は、パターンが存在しない場合でもパターンを認識することがあります。これは、パレイドリアと呼ばれる癖です。雲の中の形や月の顔を見たことがありますか?それはあなたの脳がランダムな情報をパターンや形に関連付けようとしていることです。
ただし、すべてのCAPTCHAが視覚的なパターンに依存しているわけではありません。実際、視覚的なCAPTCHAに代わるものを用意することが重要です。そうしないと、Webサイト管理者は、視覚障害のあるWebユーザーの権利を剥奪するリスクを冒します。視覚的テストの代替案の1つは、可聴テストです。音声CAPTCHAは通常、一連の音声文字または数字をユーザーに提示します。プログラムが話者の声を歪めることは珍しいことではなく、プログラムが録音にバックグラウンドノイズを含めることも一般的です。これは、音声認識プログラムを阻止するのに役立ちます。
別のオプションは、読者に短い文章を解釈するように求めるCAPTCHAを作成することです。コンテキストCAPTCHAは、読者にクイズを出し、理解力をテストします。コンピュータプログラムは文章の中のキーワードを見つけることができますが、それらの単語が実際に何を意味するのかを理解するのはあまり得意ではありません。
次のセクションでは、CAPTCHAを使用して脈拍があるかどうかを確認するサイトの種類を詳しく見ていきます。
すみません、もう一度読みます
時々、CAPTCHAは非常に歪んだ画像や音を提示し、人間でさえそれを解読することはできません。そのため、多くのCAPTCHAアプリケーションは、新しいCAPTCHAを生成して再試行するオプションをユーザーに提供します。うまくいけば、2回目は1回目ほど混乱しないでしょう。
CAPTCHAを使用するのは誰か
CAPTCHAの一般的なアプリケーションの1つは、オンライン投票の検証です。実際、以前のスラッシュドットの世論調査は、世論調査員が調査にフィルターを実装しない場合に何がうまくいかない可能性があるかの例として役立ちます。1999年、Slashdotは、コンピュータサイエンスで最高のプログラムを備えた大学院を選択するよう訪問者に求める世論調査を発表しました。カーネギーメロン大学とMITの2つの大学の学生は、ボットと呼ばれる自動化されたプログラムを作成して、それぞれの学校に繰り返し投票しました。これらの2つの学校は数千票を獲得しましたが、他の学校はそれぞれ数百票しかありませんでした。プログラムを作成できる場合投票に投票できるのですが、どうすればオンラインの投票結果を信頼できるでしょうか。CAPTCHAフォームは、プログラマーがポーリングシステムを利用するのを防ぐのに役立ちます。
Webサイトの登録フォームでは、CAPTCHAを使用することがよくあります。たとえば、Hotmail、Yahoo!などの無料のWebベースの電子メールサービス。メールまたはGmailを使用すると、ユーザーは無料で電子メールアカウントを作成できます。通常、ユーザーはアカウントを作成するときにいくつかの個人情報を提供する必要がありますが、サービスは通常、この情報を確認しません。彼らはCAPTCHAを使用して、スパマーがボットを使用して何百ものスパムメールアカウントを生成するのを防ごうとしています。
TicketMasterのようなチケットブローカーもCAPTCHAアプリケーションを使用します。これらのアプリケーションは、チケットスカルパーが大規模なイベントの大量のチケット購入でサービスを攻撃するのを防ぐのに役立ちます。なんらかのフィルターがないと、スカルパーがボットを使用して数百または数千のチケット注文を数秒で行うことができます。チケットが入手可能になってから数分後にイベントが完売すると、正当な顧客が犠牲になります。次に、スキャルパーは額面を超えるチケットを販売しようとします。 CAPTCHAアプリケーションはスキャルピングを防止しませんが、大規模なチケットのスキャルピングをより困難にします。
一部のWebページには、訪問者がサイトにメッセージを投稿したり、Web管理者に直接送信したりできるメッセージボードまたは連絡フォームがあります。スパムの雪崩を防ぐために、これらのサイトの多くには、ノイズを除去するためのCAPTCHAプログラムがあります。 CAPTCHAは、失礼なメッセージを投稿したり、管理者に嫌がらせをしたりすることを決意した人を阻止しませんが、ボットがメッセージを自動的に投稿するのを防ぐのに役立ちます。
CAPTCHAの最も一般的な形式では、訪問者は、アプリケーションが何らかの方法で歪めた単語または一連の文字と数字を入力する必要があります。一部のCAPTCHA作成者は、そのようなアプリケーションの価値を高める方法を考え出しました。それは、本をデジタル化することです。 reCAPTCHAと呼ばれるアプリケーションは、CAPTCHAフィールドのユーザーの応答を利用して、スキャンされた紙の内容を確認します。コンピュータはデジタルスキャンから単語を常に識別できるとは限らないため、人間は印刷されたページの内容を確認する必要があります。次に、検索エンジンがスキャンされたドキュメントのコンテンツを検索してインデックスを作成することができます。
仕組みは次のとおりです。まず、reCAPTCHAプログラムの管理者が本をデジタルスキャンします。次に、reCAPTCHAプログラムは、デジタル化された画像から2つの単語を選択します。アプリケーションはすでに単語の1つを認識しています。訪問者がその単語をフィールドに正しく入力すると、アプリケーションは、ユーザーが入力した2番目の単語も正しいと見なします。その2番目の単語は、アプリケーションが他のユーザーに提示する単語のプールに入ります。各ユーザーが単語を入力すると、アプリケーションはその単語を元の回答と比較します。最終的に、アプリケーションは、単語を高い確実性で検証するのに十分な応答を受け取ります。その後、その単語は検証済みプールに入ることができます。
時間のかかるように聞こえますが、この場合、CAPTCHAは二重の義務を負っていることを忘れないでください。デジタル化された本の内容を確認するだけでなく、フォームに記入する人が実際に人であることも確認します。順番に、それらの人々は彼らが使用したいサービスへのアクセスを得ています。
次に、CAPTCHAの作成プロセスを見ていきます。
CAPTCHAの作成
CAPTCHAを作成するための最初のステップは、人間と機械が情報を処理するさまざまな方法を調べることです。マシンは一連の指示に従います。何かがそれらの指示の範囲外にある場合、マシンは補償することができません。 CAPTCHAの設計者は、テストを作成するときにこれを考慮に入れる必要があります。たとえば、メタデータ(人間には見えないが、マシンは読み取ることができるWeb上の情報)を調べるプログラムを簡単に作成できます。ビジュアルCAPTCHAを作成し、画像のメタデータにソリューションが含まれている場合、CAPTCHAはすぐに壊れます。
同様に、文字や数字をなんらかの方法で歪めないCAPTCHAを作成することは賢明ではありません。歪んでいない一連の文字は、あまり安全ではありません。多くのコンピュータプログラムは、画像をスキャンして、文字や数字などの単純な形状を認識できます。
CAPTCHAを作成する1つの方法は、使用する画像とソリューションを事前に決定することです。このアプローチでは、すべてのCAPTCHAソリューションを含むデータベースが必要であり、テストの信頼性が損なわれる可能性があります。MicrosoftResearchの専門家であるKumarChellapillaとPatriceSimardによると、人間は特定のCAPTCHAを解決するのに80%の成功率が必要ですが、マシンの成功率は0.01だけである必要があります[出典:ChellapillaとSimard ]。スパマーがすべてのCAPTCHAソリューションのリストを見つけることができた場合、彼または彼女は、ブルートフォース攻撃で考えられるすべての答えでCAPTCHAを攻撃するアプリケーションを作成できます。データベースは、優れたCAPTCHAの資格を満たすために、10,000を超える可能なCAPTCHAを必要とします。
他のCAPTCHAアプリケーションは、文字と数字のランダムな文字列を作成します。同じシリーズを2回入手することはほとんどありません。ランダム化を使用すると、ブルートフォース攻撃の可能性が排除されます。ボットが正しい一連のランダムな文字を入力する可能性は非常に低くなります。文字列が長いほど、ボットが幸運になる可能性は低くなります。
CAPTCHAは、単語を歪めるためにさまざまなアプローチを取ります。溶けたガラスを通して単語を見ているかのように、奇妙な方法で文字を伸ばしたり曲げたりするものもあります。他の人は、文字の形を壊すために、ハッチングされたバーのパターンの後ろに単語を置きます。同じ効果を達成するために、異なる色またはドットのフィールドを使用するものもあります。結局のところ、目標は同じです。コンピューターがCAPTCHAの内容を理解するのを非常に困難にすることです。
デザイナーは、人間が簡単に解けるパズルや問題を作成することもできます。一部のCAPTCHAは、パターン認識と外挿に依存しています。たとえば、CAPTCHAには一連の形状が含まれていて、いくつかの選択肢の中から論理的に次に来る形状をユーザーに尋ねる場合があります。このアプローチの問題は、すべての人間がこの種の問題に対応しているわけではなく、人間のユーザーの成功率が80%を下回る可能性があることです。
次に、コンピューターがCAPTCHAを破壊する方法を見ていきます。
あなたは今私を聞くことができますか?
多くの点で、可聴CAPTCHAは視覚的なCAPTCHAに似ています。データベースアプローチでは、CAPTCHAの作成者は、すべての一連の文字を話す人またはコンピューターを事前に録音してから、適切なソリューションと照合する必要があります。ランダム化されたアプローチでは、作成者は各文字を個別に事前に記録し、アプリケーションは文字をランダムにつなぎ合わせてCAPTCHAを作成します。
CAPTCHAを壊す
CAPTCHAを破る際の課題は、メッセージの内容を理解することではありません。結局のところ、人間は少なくとも80%の成功率を持っている必要があります。本当に難しいのは、人間の考え方と同じように情報を処理する方法をコンピューターに教えることです。多くの場合、CAPTCHAを破る人々は、コンピューターをよりスマートにすることではなく、CAPTCHAによって引き起こされる問題の複雑さを軽減することに集中します。
英語の単語を表示するCAPTCHAを使用してオンラインフォームを保護したとしましょう。アプリケーションはフォントをわずかに歪ませ、予測できない方法で文字を伸ばしたり曲げたりします。さらに、CAPTCHAには、単語の背後にランダムに生成された背景が含まれています。
このCAPTCHAを破りたいプログラマーは、段階的に問題に取り組むことができます。彼または彼女はアルゴリズムを書く必要があります-特定の一連のステップに従うようにマシンに指示する一連の命令。このシナリオでは、1つのステップは画像をグレースケールに変換することかもしれません。つまり、アプリケーションは画像からすべての色を削除し、CAPTCHAが採用している難読化のレベルの1つを取り除きます。
次に、アルゴリズムは、白黒画像のパターンを検出するようにコンピュータに指示する場合があります。プログラムは、各パターンを通常の文字と比較して、一致するものを探します。プログラムがいくつかの文字にしか一致しない場合、それらの文字を英語の単語のデータベースと相互参照する可能性があります。次に、可能性のある候補者を送信フィールドにプラグインします。このアプローチは驚くほど効果的です。100%は機能しない可能性がありますが、スパマーにとって価値のある十分な頻度で機能する可能性があります。
より複雑なCAPTCHAはどうですか?Gimpy CAPTCHAは、不規則な背景間のワープフォントで10個の英単語が表示されます。CAPTCHAは単語をペアで配置し、各ペアの単語は互いに重なります。ユーザーが先に進むには、正しい3つの単語を入力する必要があります。このアプローチはどの程度信頼できますか?
結局のところ、適切なCAPTCHAクラッキングアルゴリズムでは、それほど信頼性は高くありません。 GregMoriとJitendraMalikは、CAPTCHAのGimpyバージョンをクラックするためのアプローチを詳しく説明した論文を公開しました。彼らを助けた一つのことは、Gimpyのアプローチが文字と数字のランダムな文字列ではなく実際の単語を使用することでした。これを念頭に置いて、MoriとMalikは、文字列の最初と最後を調べることによって単語を識別しようとするアルゴリズムを設計しました。彼らはまた、Gimpyの500語の辞書を使用しました。
MoriとMalikは、アルゴリズムを使用して一連のテストを実行しました。彼らは、アルゴリズムがGimpy CAPTCHAの単語を33%の確率で正しく識別できることを発見しました[出典:Mori andMalik ]。それは完璧にはほど遠いですが、重要でもあります。スパマーは、ボットが毎分数百回CAPTCHAを破壊するように設定した場合、試行の3分の1しか成功しない余裕があります。
CAPTCHAの発明者は、彼らの努力がハッカーによって取り上げられていることに腹を立てると思うかもしれませんが、あなたは間違っているでしょう。次のセクションでその理由を確認してください。
電子耳
オーディオCAPTCHAも絶対確実ではありません。2008年の春、ハッカーがGoogleのオーディオCAPTCHAシステムを打ち負かす方法を考え出したという報告がありました。オーディオCAPTCHAをクラックするには、CAPTCHAのデータベースに各キャラクターを表すサウンドのライブラリを作成する必要があります。歪みによっては、同じキャラクターに複数の音が出る場合がありますのでご注意ください。各サウンドを分類した後、スパマーはさまざまな音声認識ソフトウェアを使用して、オーディオCAPTCHAを解釈します[出典:Networkworld ]。
CAPTCHAと人工知能
カーネギーメロン大学のルイスフォンアンは、CAPTCHAの発明者の1人です。 2006年の講演で、フォンアンは、CAPTCHAなどと人工知能(AI)の分野との関係について話しました。 CAPTCHAはスパマーやハッカーとその目標の間の障壁であるため、これらの人々はCAPTCHAの破壊に時間とエネルギーを費やしています。彼らの成功は、機械がより洗練されていることを意味します。誰かがCAPTCHAを打ち負かすために機械を教える方法を理解するたびに、私たちは人工知能に一歩近づきます。
人々がCAPTCHAを回避する新しい方法を見つけると、フォンアンのようなコンピューター科学者はAIの分野における他の課題に対処するCAPTCHAを開発します。 CAPTCHAの一歩後退は、AIにとっても一歩前進です。すべての敗北は、勝利でもあります[出典:HumanComputation ]。
しかし、Web管理者はどうですか?彼らはフォンアンの哲学がそれほど魅力的であるとは思わないかもしれません。彼らの観点からすると、彼らは依然として大きな問題、つまりスパマーやハッカーに対処しなければなりません。 Webサイトを管理したり、オンライン投票を作成したりする人は、いくつかのCAPTCHAシステムがもはや効果的ではないことに注意する必要があります。どのCAPTCHAアプリケーションがまだ信頼できるかについて少し調査することが重要です。そして、このテーマについて最新の状態に保つことも同様に重要です。 1つのCAPTCHAシステムに障害が発生した場合、管理者は自分のサイトからコードを削除して、別のバージョンに置き換える必要がある場合があります。
CAPTCHAの設計者は、細心の注意を払う必要があります。コンピュータがより洗練されるにつれて、テスト方法も進化しなければなりません。しかし、テストが進化して、人間が適切な成功率でCAPTCHAを解決できなくなると、システム全体が失敗します。答えには、テキストのゆがみやゆがみが含まれない場合があります。ユーザーは、数式を解いたり、短編小説に関する質問に答えたりする必要があります。そして、これらのテストがより複雑になるにつれて、ユーザーの興味を失うリスクがあります。最初に二次方程式を解かなければならない場合でも、メッセージボードに返信を投稿したい人は何人いますか?
2014年、Google(2009年にreCAPTCHAを買収)は従来のサービスの段階的廃止を開始しました。代わりに、「私はロボットじゃない」という言葉のチェックボックスをオンにするように求められました。これは「キャプチャなし」と呼ばれていました。2017年、Googleは、キャプチャなしを削除することを発表しました。代わりに、このサービスは、画面上のポインターの移動方法に気付いたり、ブラウジングの習慣を分析して、自分が人間かロボットかを判断するなどの手法に依存します。これはInvisiblereCAPTCHAと呼ばれます。疑わしいと思われる場合(おそらく実際にはロボットである場合)、さらなる検証として解決すべき古いreCAPTCHAの課題の1つが表示されます[出典:Titcomb ]。
多くの詳細情報
関連記事
- コードブレーカーのしくみ
- スパムのしくみ
- スパイウェアのしくみ
- JAVAのしくみ
- コンピュータウイルスのしくみ
- 暗号化のしくみ
- Gmailの仕組み
- Googleのしくみ
- ハッカーのしくみ
- インターネット検索エンジンのしくみ
- コンピュータアルゴリズムとは何ですか?
- コンピュータのような論理マシンはどのようにして乱数を生成できますか?
その他のすばらしいリンク
- グワップ
- CAPTCHAの公式サイト
- ReCAPTCHA
ソース
- シェラピラ、クマール、パトリス・シマール。「機械学習を使用して視覚的なヒューマンインタラクションプルーフ(HIPS)を破る。」マイクロソフトリサーチ。(2008年8月6日)http://research.microsoft.com/~kumarc/pubs/chellapilla_nips04.pdf
- チュー、モニカ、JDタイガー。「協調フィルタリングCAPTCHA」。ヒューマンインタラクティブプルーフ:第2回国際ワークショップ。2005.(2008年8月4日)http://www.cs.berkeley.edu/~tygar/papers/Collaborative_filtering_CAPTCHAs.pdf
- ジョンスマ、カール。「GoogleのオーディオCAPTCHAを壊します。」Computerworld。2008年5月2日。(2008年8月4日)http://www.networkworld.com/news/2008/050208-breaking-googles-audio.html
- レイデン、ジョン。「スパマーはGmailCAPTCHAをクラックします。」登録簿。2008年2月25日。(2008年8月5日)http://www.theregister.co.uk/2008/02/25/gmail_captcha_crack/
- 森、グレッグ、ジテンドラ・マリク。「ビジュアルCAPTCHAを壊します。」サイモンフレイザー大学。(2008年8月4日)http://www.cs.sfu.ca/~mori/research/gimpy/
- オッピー、グラハム、デビッドダウ。「チューリングテスト。」スタンフォード哲学百科事典。2003年4月9日。(2008年8月5日)http://plato.stanford.edu/entries/turing-test/
- トンプソン、クライヴ。「特定のタスクでは、皮質は依然としてCPUを上回っています。」有線。2007年6月25日。(2008年8月5日)http://www.wired.com/techbiz/it/magazine/15-07/ff_humancomp
- Vaughan-Nichols、StevenJ。「CAPTCHAがどのようにゴミ箱に入れられたか」Computerworld。2008年7月15日。(2008年8月5日)http://www.computerworld.com.au/index.php/id;489635775;fp;;fpid;
- フォンアン、ルイス。「ヒューマンコンピューティング」。GoogleTechTalks。2006年7月26日。(2008年8月6日)http://video.google.com/videoplay?docid=-8246463980976635143
- フォンアン、ルイス、マヌエルブラム、ジョンラングフォード。「人間とコンピューターを自動的に区別する」ACMの通信。2004年2月。47、No。2(2008年8月4日)http://www.cs.cmu.edu/~biglou/captcha_cacm.pdf
- フォンアン、ルイス、マヌエルブラム、ジョンラングフォード。「セキュリティのためのハードAI問題の使用」。コンピュータサイエンス学部-カーネギーメロン大学。(2008年8月4日)http://www.captcha.net/captcha_crypt.pdf
- W3Cワーキンググループノート。「CAPTCHAにアクセスできません。」W3C。2005年11月23日。(2008年8月4日)http://www.w3.org/TR/turingtest/