CAPTCHA の仕組み

あなたはコンピューターを使用して、地元の会場でコンサートを見るチケットを購入しています。チケットを購入する前に、まずテストに合格する必要があります。この種のテストはCAPTCHAです。 CAPTCHA という用語は、Completely Automated Public Turing Test to Tell Computers and Humans Apart の頭字語です。

これは難しいテストではありません。実際、それが重要なのです。人間のユーザーにとって、テストはシンプルで簡単なものである必要があります。しかし、コンピュータの場合、このテストを解くのはほぼ不可能なはずです。 CAPTCHA の目的は、悪意のあるボットを識別することです。人間のユーザーは問題なく通過できるはずです。

CAPTCHA テストは、ヒューマン インタラクション プルーフ () の一種としても知られています。おそらく多くの Web サイトでこれらのテストを見たことがあるでしょう。 CAPTCHA の最も一般的な形式は、いくつかの歪んだ文字の画像です。正しい一連の文字をフォームに入力するのはあなたの仕事です。あなたの文字が歪んだ画像内の文字と一致すれば、テストに合格です。

もう 1 つの一般的なタイプは画像 CAPTCHA です。画像 CAPTCHA テストには、一般的なシーンの一連の写真が含まれます。これには、高速道路、市街路、公園などが含まれる場合があります。ユーザーは、街路灯、消火栓、自転車などの特定の物体が含まれる写真のみを選択するように求められます。適切な写真を選択すると、テストに合格します。

画像認識キャプチャは通常、テキストベースのキャプチャよりもボットが解読するのが困難です。歪んだ画像やぼやけた画像は、ボットの認識技術を簡単に妨害してしまう可能性があるため、さらに効果的です。人間のみが解決できる CAPTCHA を慎重に作成することが重要です。

なぜ人間とコンピューターを区別できるテストを作成する必要があるのでしょうか?それは、システムを悪用しようとする人々のせいです。彼らは、サイトを実行しているコンピューターの弱点を悪用したいと考えています。これらの個人はおそらくインターネット上のすべての人々の少数派ですが、彼らの行動は何百万ものユーザーとウェブサイトに影響を与える可能性があります。

たとえば、無料の電子メールサービスは、自動化されたプログラムからのアカウント要求によって攻撃される可能性があります。この自動プログラムは、数百万人にスパムメールを送信する大規模な試みの一部である可能性があります。 CAPTCHA テストは、どのユーザーが本物の人間で、どのユーザーがコンピューター プログラムであるかを識別するのに役立ちます。

CAPTCHA テストの興味深い点の 1 つは、テストを設計する人が、テストが失敗しても必ずしも動揺するわけではないということです。 CAPTCHA テストが失敗するには、誰かがコンピュータにテストの解決方法を教える方法を見つけなければならないからです。言い換えれば、あらゆる CAPTCHA の失敗は、実際には人工知能の進歩なのです。

次のセクションでは、CAPTCHA とは何なのかを詳しく見てみましょう。

こんにちは、プログラムです!

CAPTCHA プログラムの皮肉の 1 つは、CAPTCHA アプリケーションが、答えがわかっていないと解決できないテストを生成できることです。

CAPTCHA とチューリング テスト

ビジュアル CAPTCHA の写真。

CAPTCHA テクノロジーの基礎は、チューリング テストと呼ばれる実験にあります。現代コンピューティングの父とも呼ばれるアラン・チューリングは、機械が人間と同じように考えることができるか、あるいは考えているように見えるかどうかを調べる方法としてこのテストを提案しました。古典的なテストは模倣のゲームです。このゲームでは、尋問者が 2 人の参加者に一連の質問をします。参加者の 1 人は機械、もう 1 人は人間です。尋問者は参加者を見ることも聞くこともできず、どちらがどちらであるかを知る方法がありません。質問者が応答に基づいてどの参加者がマシンであるかを判断できない場合、そのマシンはチューリング テストに合格します。

もちろん、CAPTCHA の目標は、人間は簡単に合格できるが、機械は合格できないテストを作成することです。 CAPTCHA アプリケーションが異なるユーザーに異なる CAPTCHA を表示できることも重要です。視覚的な CAPTCHA がすべてのユーザーに同じ静止画像を表示した場合、スパマーがフォームを見つけて文字を解読し、正しい答えを自動的に入力するようにアプリケーションをプログラムするまでに、それほど時間はかかりません。

すべてではありませんが、ほとんどの CAPTCHA は視覚的なテストに依存しています。コンピューターは、視覚データの処理に関して人間のような高度な技術を欠いています。私たちはコンピューターよりも簡単に画像を見てパターンを見つけることができます。人間の心は、パターンが存在しない場合でもパターンを認識することがあります。これをパレイドリアと呼びます。雲の中の形や月の顔を見たことがありますか?それはあなたの脳がランダムな情報をパターンや形状に関連付けようとしているということです。

ただし、最新の CAPTCHA のすべてが視覚的なパターンに依存しているわけではありません。実際、視覚的な CAPTCHA に代わる手段を用意することが重要です。そうしないと、Web ページ管理者が視覚障害のあるユーザーから権利を剥奪される危険があります。視覚テストの代替手段の 1 つは、聴覚テストです。音声 CAPTCHA は通常、一連の音声文字または数字をユーザーに提示します。番組が発言者の音声を歪めることは珍しいことではなく、また、番組の録音に背景雑音が含まれることもよくあります。これは音声認識プログラムを阻止するのに役立ちます。

もう 1 つのオプションは、読者に短いテキストの一節を解釈するよう求める CAPTCHA を作成することです。文脈に応じた CAPTCHA は読者にクイズを出し、理解力をテストします。コンピューター プログラムはテキストの一節からキーワードを抽出することはできますが、それらの単語が実際に何を意味するかを理解することはあまり得意ではありません。

次のセクションでは、CAPTCHAを使用して脈ありかどうかを確認するサイトの種類を詳しく見ていきます。

ごめんなさい、もう一度読みます

CAPTCHA では、人間ですら解読できないほど歪んだ画像や音声が表示されることがあります。そのため、多くの CAPTCHA アプリケーションでは、新しい CAPTCHA を生成して再試行するオプションがユーザーに提供されています。 2回目は1回目ほど混乱しないことを願っています。

CAPTCHA を使用する人

CAPTCHA を含む Web フォームの写真。

CAPTCHA の一般的な用途の 1 つは、オンライン投票の検証です。実際、以前の Slashdot 世論調査は、世論調査機関が調査にフィルターを実装しなかった場合に何が問題となるかを示す例として役立ちます。

1999 年にスラッシュドットは、コンピュータ サイエンスで最も優れたプログラムを提供する大学院を訪問者に尋ねるアンケートを発表しました。カーネギーメロン大学とマサチューセッツ工科大学の 2 つの大学の学生は、それぞれの学校に繰り返し投票するためのボットと呼ばれる自動プログラムを作成しました。これら 2 校は数千票を獲得しましたが、他の学校はそれぞれ数百票しか得られませんでした。世論調査に投票できるプログラムを作成することが可能であれば、そもそもオンライン世論調査の結果をどうやって信頼できるのでしょうか? CAPTCHA フォームは、プログラマによるポーリング システムの悪用を防ぐのに役立ちます。

Web サイトの登録フォームでは CAPTCHA が使用されることがよくあります。たとえば、Hotmail、 Yahoo!などの無料の Web ベースの電子メール サービスです。 MailまたはGmail を使用すると、電子メール アカウントを無料で作成できます。通常、ユーザーはアカウントを作成するときに個人情報を提供する必要がありますが、サービスは通常この情報を検証しません。彼らは CAPTCHA を使用して、スパマーがボットを使用して何百ものスパムメール アカウントを生成するのを阻止しようとします。

TicketMaster などのチケット ブローカーも CAPTCHA アプリケーションを使用します。これらのアプリケーションは、チケットダフ屋が大規模なイベントのチケットを大量に購入してサービスを攻撃するのを防ぐのに役立ちます。何らかのフィルターがなければ、ダフ屋がボットを使用して数秒のうちに何百、何千ものチケット注文を行うことが可能です。チケットが入手可能になってから数分後にイベントが完売するため、正規の顧客が犠牲になります。その後、ダフ屋はチケットを額面以上に売ろうとします。 CAPTCHA アプリケーションはスキャルピングを防止しませんが、大規模なチケットのスキャルピングをより困難にします。

一部の Web ページには、訪問者がサイトにメッセージを投稿したり、Web 管理者に直接送信したりできるメッセージ ボードまたは連絡フォームが備わっています。スパムの雪崩を防ぐために、これらのサイトの多くはノイズを除去する CAPTCHA プログラムを備えています。 CAPTCHA は、失礼なメッセージを投稿したり、管理者に嫌がらせをしようとしているユーザーを阻止することはできませんが、ボットが自動的にメッセージを投稿するのを防ぐのには役立ちます。

CAPTCHA の最も一般的な形式では、訪問者はアプリケーションによって何らかの形で歪められた単語または一連の文字と数字を入力する必要があります。 CAPTCHA 作成者の中には、そのようなアプリケーションの価値を高める方法、つまり書籍のデジタル化を考え出した人もいました。 CAPTCHA reCAPTCHA と呼ばれるアプリケーションは、CAPTCHA フィールドのユーザー応答を利用して、スキャンされた紙の内容を検証します。コンピューターはデジタル スキャンから単語を常に識別できるとは限らないため、印刷されたページに何が書かれているかを人間が確認する必要があります。これにより、検索エンジンがスキャンされた文書の内容を検索してインデックスを作成できるようになります。

その仕組みは次のとおりです。 まず、reCAPTCHA プログラムの管理者が書籍をデジタル スキャンします。次に、reCAPTCHA プログラムはデジタル化された画像から 2 つの単語を選択します。アプリケーションはすでに単語の 1 つを認識しています。訪問者がその単語をフィールドに正しく入力すると、アプリケーションはユーザーが入力した 2 番目の単語も正しいとみなします。この 2 番目の単語は、アプリケーションが他のユーザーに提示する単語のプールに入ります。各ユーザーが単語を入力すると、アプリケーションはその単語を元の回答と比較します。最終的に、アプリケーションは単語を高い確実性で検証するのに十分な応答を受け取ります。その後、その単語は検証されたプールに入ることができます。

時間がかかるように思えますが、この場合、CAPTCHA は二重の役割を果たしていることに注意してください。デジタル化された本の内容を検証するだけでなく、Web フォームに記入する人々が実際に人間のユーザーであることも検証します。その結果、それらの人々は使いたいサービスにアクセスできるようになります。

次に、CAPTCHA を作成するプロセスを見ていきます。

CAPTCHAの作成

CAPTCHA を作成するための最初のステップは、人間と機械が情報を処理するさまざまな方法を調べることです。機械は一連の指示に従います。何かがこれらの命令の範囲外にある場合、マシンはそれを補うことができません。

CAPTCHA 設計者は、テストを作成するときにこれを考慮する必要があります。たとえば、メタデータ (人間には見えないが機械は読み取ることができるWeb上の情報) を調べるプログラムを構築するのは簡単です。ビジュアル CAPTCHA を作成し、画像のメタデータにソリューションが含まれている場合、CAPTCHA はすぐに破損します。

同様に、文字や数字を何らかの形で歪めない CAPTCHA を構築するのは賢明ではありません。歪みのない一連の文字はあまり安全ではありません。多くのコンピューター プログラムは、画像をスキャンして、文字や数字などの単純な形状を認識できます。

CAPTCHA を作成する 1 つの方法は、使用する画像とソリューションを事前に決定することです。このアプローチには、すべての CAPTCHA ソリューションを含むデータベースが必要ですが、テストの信頼性が損なわれる可能性があります。

Microsoft Research の専門家である Kumar Chellapilla 氏と Patrice Simard 氏によると、人間は特定の CAPTCHA を解決する成功率が 80% であるはずですが、マシンの成功率はわずか 0.01 であるはずです。スパム送信者がすべての CAPTCHA ソリューションのリストを見つけることができた場合、総当たり攻撃で CAPTCHA にあらゆる回答を攻撃するアプリケーションを作成することができます。データベースが優れた CAPTCHA の条件を満たすには、10,000 を超える CAPTCHA が必要になります。

他の CAPTCHA アプリケーションは、文字と数字のランダムな文字列を作成します。同じシリーズが二度手に入ることはまずありません。ランダム化を使用すると、ブルート フォース攻撃の可能性が排除されます。ボットが正しい一連のランダムな文字を入力する確率は非常に低くなります。文字列が長ければ長いほど、ボットが幸運を得る可能性は低くなります。

CAPTCHA は、単語を歪曲するためにさまざまなアプローチを採用しています。まるで溶けたガラスを通して単語を見ているかのように、奇妙な方法で文字を伸ばしたり曲げたりするものもあります。他の人は、文字の形を崩すために、棒のクロスハッチパターンの後ろに単語を置きます。同じ効果を実現するために、異なる色やドットのフィールドを使用するものもあります。最終的に、目標は同じです。コンピュータが CAPTCHA の内容を理解するのを非常に困難にすることです。

デザイナーは、人間が解決しやすいパズルや問題を作成することもできます。一部の CAPTCHA はパターン認識と外挿に依存しています。たとえば、CAPTCHA には一連の形状が含まれており、いくつかの選択肢のうちどの形状が論理的に次に来るかをユーザーに尋ねることがあります。このアプローチの問題は、すべての人間がこの種の問題を得意とするわけではなく、人間のユーザーの成功率が 80% を下回る可能性があることです。

次に、コンピュータが CAPTCHA をどのように破るかを見ていきます。

今私の声が聞こえますか?

多くの点で、音声 CAPTCHA は視覚的な CAPTCHA に似ています。データベースによるアプローチでは、CAPTCHA 作成者は、人物またはコンピュータが一連の文字を話すたびに事前に記録し、それらを適切なソリューションと照合する必要があります。ランダム化アプローチでは、作成者が各文字を個別に事前に記録し、アプリケーションが文字をランダムに並べて CAPTCHA を作成します。

CAPTCHA を破る

CAPTCHA プロジェクトの写真。

CAPTCHA を解読する際の課題は、メッセージの内容を理解することではありません。結局のところ、人間には少なくとも 80% の成功率が必要です。本当に難しい仕事は、人間の思考と同じような方法で情報を処理する方法をコンピューターに教えることです。多くの場合、CAPTCHA を破る人々は、コンピュータをより賢くすることに集中しているのではなく、CAPTCHA によって引き起こされる問題の複雑さを軽減することに集中しています。

英語の単語を表示する CAPTCHA を使用してオンライン Web フォームを保護したと仮定します。アプリケーションはフォントをわずかに歪め、文字を予期しない方法で伸縮させたり曲げたりします。さらに、CAPTCHA には単語の背後にランダムに生成された背景が含まれています。

この CAPTCHA を解読したいプログラマは、段階的に問題にアプローチすることができます。彼または彼女は、アルゴリズム、つまりマシンに特定の一連のステップを実行するように指示する一連の命令を作成する必要があります。このシナリオでは、1 つのステップとして、画像をグレースケールに変換することが考えられます。つまり、アプリケーションは画像からすべての色を削除し、CAPTCHA が採用する難読化レベルの 1 つを取り除きます。

次に、アルゴリズムは、白黒画像内のパターンを検出するようにコンピューターに指示します。プログラムは各パターンを通常の文字と比較し、一致するものを探します。プログラムが少数の文字しか照合できない場合、それらの文字を英単語のデータベースと相互参照する可能性があります。次に、可能性の高い候補者を送信フィールドに入力します。このアプローチは驚くほど効果的です。 100% 常に機能するわけではありませんが、スパム送信者にとって価値があるほど頻繁に機能する可能性があります。

より複雑な CAPTCHA についてはどうすればよいでしょうか? Gimpy CAPTCHA は、不規則な背景にワープしたフォントで 10 個の英単語を表示します。 CAPTCHA では単語がペアに配置され、各ペアの単語が互いに重なり合います。次に進むには、ユーザーは 3 つの正しい単語を入力する必要があります。このアプローチはどの程度信頼できるのでしょうか?

結局のところ、適切な CAPTCHA クラッキング アルゴリズムを使用しても、それほど信頼できるものではありません。 Greg Moe と Jitendra Malik は、Gimpy バ​​ージョンの CAPTCHA をクラックするアプローチの詳細を公開しました。彼らにとって役立った点の 1 つは、Gimpy のアプローチでは、ランダムな文字や数字の文字列ではなく、実際の単語が使用されていることです。これを念頭に置いて、モリ氏とマリク氏は、文字列の先頭と末尾を調べて単語を識別しようとするアルゴリズムを設計しました。また、Gimpy の 500 語辞書も使用しました。

モリ氏とマリク氏は、アルゴリズムを使用して一連のテストを実行しました。彼らは、アルゴリズムが Gimpy CAPTCHA 内の単語を 33% の確率で正しく識別できることを発見しました。これは完璧には程遠いですが、重要なことでもあります。スパマーは、毎分数百回 CAPTCHA を破るようにボットを設定した場合、試行の 3 分の 1 しか成功しない可能性があります。

CAPTCHA の発明者たちは、自分たちの努力の成果がハッカーによってばらばらにされることに腹を立てるだろうと思うかもしれませんが、それは間違いです。その理由については、次のセクションで説明します。

電子耳

音声 CAPTCHA も完全に安全というわけではありません。 2008 年の春、ハッカーが Google の音声 CAPTCHA システムを破る方法を見つけたという報告がありました。音声 CAPTCHA を解読するには、CAPTCHA のデータベース内の各文字を表す音声のライブラリを作成する必要があります。ディストーションによっては、同じキャラクターに複数のサウンドが存在する可能性があることに注意してください。各音声を分類した後、スパマーはさまざまな音声認識ソフトウェアを使用して音声 CAPTCHA を解釈します。

CAPTCHAと人工知能

CAPTCHA の写真。 

カーネギーメロン大学のルイス・フォン・アンは、CAPTCHA の発明者の 1 人です。 2006 年の講演で、フォン・アン氏は CAPTCHA などと人工知能 (AI) の分野との関係について話しました。 CAPTCHA はスパマーやハッカーとその目的との間の障壁であるため、これらの人々は CAPTCHA を破るために時間と労力を費やしています。彼らの成功は、マシンがより洗練されていることを意味します。誰かが CAPTCHA を破るように機械に教える方法を発見するたびに、私たちは人工知能に一歩近づきます。

人々が CAPTCHA を回避する新しい方法を見つけるにつれて、フォン・アン氏のようなコンピューター科学者は AI 分野の他の課題に対処する CAPTCHA を開発しています。 CAPTCHA にとっては一歩後退しても、AI にとっては前進であり、すべての敗北は敗北でもあります。

しかし、Web 管理者はどうでしょうか?彼らはフォン・アンの哲学をそれほど魅力的に感じないかもしれない。彼らの視点から見ると、彼らは依然としてスパマーとハッカーという大きな問題に対処しなければなりません。 Web サイトを管理したり、オンライン投票を作成したりする人は、いくつかの CAPTCHA システムが有効ではなくなっていることに注意する必要があります。

どの CAPTCHA アプリケーションが依然として信頼できるかについて少し調査することが重要です。そして、このテーマについて常に最新の情報を入手し続けることも同様に重要です。 1 つの CAPTCHA システムに障害が発生した場合、管理者はサイトからコードを削除し、別のバージョンに置き換える必要がある場合があります。

CAPTCHA デザイナーは紙一重の判断を迫られます。コンピューターがより高度になるにつれて、テスト方法も進化する必要があります。しかし、人間がまともな成功率で CAPTCHA を解決できないところまでテストが進化すると、システム全体が機能しなくなります。答えには、テキストの歪みや変形が含まれない場合があります。ユーザーは、数式を解くか、短編小説に関する質問に答える必要があるかもしれません。そして、これらのテストが複雑になるにつれて、ユーザーの興味を失うリスクがあります。まず二次方程式を解かなければならない場合でも、掲示板に返信したいと思う人がどれだけいるでしょうか?

2014 年、Google (2009 年に reCAPTCHA を買収) は、従来のサービスの段階的廃止を開始しました。その代わりに、「私はロボットではありません」という言葉が書かれたボックスにチェックを入れるように求められました。これは「No CAPTCHA」と呼ばれていました。で、Google は No CAPTCHA を廃止すると発表しました。代わりに、このサービスは、ユーザーが画面上のポインターをどのように動かすかに注目したり、閲覧習慣を分析してユーザーが人間であるかロボットであるかを判断するなどの技術に依存します。これを といいます。疑わしいと思われる場合 (おそらく実際にはロボットである可能性があります)、さらなる検証として解決すべき古い reCAPTCHA の課題の 1 つが表示されます。