
Image courtesy of Google reCAPTCHA. All Rights Reserved by Google LLC.
「私はロボットではありません」。ネット検索時に時々見かける文言だと思います。
これは、ウェブサイトにアクセスしたユーザが人間であることを確認するために導入されています。
「私はロボットではありません」認証は「reCAPTCHA認証」と呼ばれており、スパムメールの送信や不正ログインなど、悪意のある攻撃からウェブサイトを守るために使用されています。その使いやすさから、利用率が一番高いCAPTCHA認証となっています。
しかし、ユーザにとっては「私はロボットではありません」認証が表示される度に、画像や音声などの認証をパスする必要があるため、決して気持ちのよいものではありません。
本記事では「私はロボットではありません」(reCAPTCHA)認証の仕組み、なぜ「私はロボットではありません」(reCAPTCHA)認証が表示されるのか、その問題点や代替技術について説明します。また、繰り返し「私はロボットではありません」(reCAPTCHA)認証が表示される場合の原因と回避方法も説明します。
「私はロボットではありません」を回避して、快適なネットライフを送りましょう!
そもそもCAPTCHA認証って何?

CAPTCHA認証とは、ウェブサイトに表示される、テキストや画像を使用した自動認証テストのことです。CAPTCHA認証を使用することにより、ウェブサイトのセキュリティを強化できます。
CAPTCHAとは「Completely Automated Public Turing test to tell Computers and Humans Apart」(完全に自動化された公開チューリングテスト)の略語であり、コンピュータと人間を区別するためのテストを意味します。チューリングテストは、このテストの発案者であるアラン・チューリング氏の名前からきています。
アラン・チューリング氏は、コンピュータ科学の父、人工知能(AI)の父として知られています。
CAPTCHA認証は、ウェブサイトのフォーム(複数の入力項目をひとまとめにしたもの。フォーム単位でサーバに送信)にスパムメッセージを入れて送信するボットや悪意のあるスクリプトから保護する目的で使用されています。
以下に、CAPTCHA認証の基本的な仕組み、CAPTCHA認証が解決しようとする問題、CAPTCHA認証が使用される理由を説明します。
CAPTCHA認証の基本的な仕組み
CAPTCHA認証は、画像やテキストの認証テストを通じて、ユーザが人間であることを確認する仕組みになっています。これは、専門用語で、「チャレンジ/レスポンス型テスト」や「チャレンジ/レスポンス型認証」と呼ばれています。
通常、CAPTCHAは、表示された文字や数字を正しく入力する、あるいは画像中の特定のオブジェクトを選択する、あるいは複雑な問題に対する回答を提供するといった形式をとります。これらの認証テストは、通常、人間にとっては比較的容易に解決できるものですが、ボットや自動化されたスクリプトにとっては解決が困難であるため、CAPTCHAを通過することができません。
CAPTCHA認証が解決しようとする問題
CAPTCHA認証は、ボットやスクリプトによる自動化された攻撃やスパムメッセージの送信を防ぐためのものです。
スパムメッセージには、悪意あるサイトへのURLが含まれることが多く、ウェブサイトのユーザやオーナにとってはサイトの信頼に関わる大きな問題です。
CAPTCHA認証を導入することにより、スパムメッセージ送信を自動化する攻撃者の特定と攻撃を阻止できます。その結果、ユーザが安心してアクセスできるウェブサイトを構築できます。
CAPTCHA認証が使用される理由
CAPTCHA認証が使用される理由は、ウェブサイトのセキュリティを強化するためです。
CAPTCHA認証により、自動化されたスパムメッセージの送信を防ぎ、ウェブサイトのユーザやオーナを保護できます。また、CAPTCHA認証は、機械学習のトレーニングデータの収集、デジタルアーカイブのオンライン化など、認証以外の用途にも使用されています。
CAPTCHA認証は、上記の通り、ウェブサイトのセキュリティを強化するために使用されています。なお、ダークウェブでは、セキュリティ機関によるダークウェブの実態調査を行いにくくするため、CAPTCHA認証を使用(悪用)しているサイトが多い実態があります。
ダークウェブに関する詳細は「ダークウェブの入り方 - 闇のベールに包まれた漆黒エリアへようこそ」をご確認ください。
「私はロボットではありません」 - reCAPTCHA認証とは?

Image courtesy of Google reCAPTCHA. All Rights Reserved by Google LLC.
「私はロボットではありません」(reCAPTCHA認証)は、2007年にカーネギー・メロン大学により開発され、以降は多くのバージョンアップを経て、多くのウェブサイトで広く使用されています。
ここでは「GoogleがreCAPTCHAを開発した背景」と「reCAPTCHA認証の基本的な仕組み」について説明します。
GoogleがreCAPTCHAを開発した背景
reCAPTCHA認証は、2007年にカーネギー・メロン大学で開発され、2009年9月にGoogleが買収。今の組織となっています。
reCAPTCHA認証は、本の内容をデジタル化するプロジェクトで発生した問題を解決するために開発されました。当時、進行中だったGoogleブックスというプロジェクトは、紙の本をデジタル化するために、数百万ものスキャンされたページがありました。
しかし、OCR(Optical Character Recognition)ソフトウェアでスキャンしたテキストの正確性を確保することは難しく、OCRソフトウェアが正しくテキストを認識するためには、テキストがクリアな画像に表示されている必要がありました。多くの場合、スキャンされたテキストには汚れや歪みがあり、OCRソフトウェアによりうまく認識できないケースが多発していました。
カーネギー・メロン大学の研究者は、この問題に対処するため、人間が解読できないような歪んだテキストをOCRソフトウェアがスキャンした内容から取得、人間に回答させる「テキストのデジタル化作業」を支援するreCAPTCHAを開発しました。
reCAPTCHA認証は、人間とボットを区別するためのCAPTCHA認証という形式を採用しました。OCRソフトウェアが認識できないような歪んだテキストを自動生成し、ユーザがテキストを解読→答えを入力することにより、人間であることを証明します。
これにより「OCRが判別できない文字や単語をユーザに答えてもらい、半自動的にデジタル化できる」ことに加え、「ユーザ認証もできる」、正に一石二鳥な認証機能として、広く普及しました。Googleが一定の上限までは「無料で利用できる」様にしたことも、普及を後押ししたと考えられています。
reCAPTCHA認証の基本的な仕組み
Googleが開発したreCAPTCHA認証は、上記の通り、一般的なCAPTCHA認証の形式を採用しています。
reCAPTCHA認証は、歪んだテキストを表示する画像を生成し、ユーザに表示します。ユーザは、画像に表示されたテキストを入力して、自分が人間であることを証明します。
GoogleがreCAPTCHA認証で採用している画像は、一見するとランダムな文字列に見えますが、実際には、上記の通り、Googleのデジタル化プロジェクトに使用した古い書籍から抽出した単語や文章を使用しています。reCAPTCHA認証は、これまでversion 1~version 3までリリースされています。
version 1は、1つの単語の画像を表示して、ユーザに単語を入力してもらう形式でした。
version 2は、2つの単語が画像に表示され、それぞれの単語を正しく入力することが必要となりました。これは、1つの単語をOCRソフトウェアで認識できなくても、もう1つの単語を正しく認識することができる様になり、より正確な結果を得られるようになったためです。
version 3は、Advanced Risk Analysis(ARA)技術により更に改良。ARAは、ユーザの行動に関する複数の要素を分析し、ボットである可能性がある場合、より難しい認証テストを表示するように設定します。
また、reCAPTCHA認証は、Invisible reCAPTCHAという形式も採用しており、ユーザが認証テストを意識せずに実行できるようになっています。
reCAPTCHA認証は、多言語対応もしており、ウェブサイトのセキュリティを強化し、スパムや不正アクセスを防止するための貴重なツールとして、広く使用されています。
CAPTCHA認証の種類

Image courtesy of JimThatcher.com.
CAPTCHA認証には、数多くの種類があります。
以下に、一般的に使用される「文字ベース」、「画像ベース」、「音声ベース」、「数学的な問題ベース」、「reCAPTCHA」、「hCaptcha」、「GeeTest」それぞれの認証について説明します。
文字ベースのCAPTCHA認証
文字ベースのCAPTCHA認証は、最も一般的なCAPTCHA認証の1つです。ユーザに、表示された文字/数字を入力してもらい、表示されている文字/数字と入力内容が一致しているかを確認します。
文字ベースのCAPTCHA認証は、実装が簡単なため、多くのウェブサイトで使用されています。しかし、すでに高精度のOCR技術を備えたボットが確認されているため、十分なセキュリティ対策とは言い難くなっています。
画像ベースのCAPTCHA認証
画像ベースのCAPTCHA認証では、ユーザに、表示した画像内のテキスト/数字/物体で、正しいものを選択してもらいます。
画像ベースのCAPTCHA認証は、OCRへの耐性があるため、文字ベースのCAPTCHA認証よりもセキュリティは高くなっています。しかし、画像により、人間が確認しづらいものがあり、正解するまでに時間がかかる場合があります。
音声ベースのCAPTCHA認証

Image courtesy of JimThatcher.com.
音声ベースのCAPTCHA認証では、ユーザに音声で発音される単語や数字を入力してもらい、一致しているかを確認します。
音声ベースのCAPTCHA認証は、視覚障害を持つユーザへの対応やボットによる攻撃を回避するために使用されています。しかし、音声が聞き取りづらくて正解するまでに時間がかかったり、聴覚障害のユーザには対応できないため、100%有効な対策ではありません。
数学ベースのCAPTCHA認証
数学ベースのCAPTCHA認証は、ユーザに数学を解いて、正解かを確認します。
数学ベースのCAPTCHA認証は、簡単に生成でき、一定のレベルのセキュリティを保つことができます。しかし、数学に強いボットや攻撃者には、簡単に解読できてしまう可能性があります。
reCAPTCHA認証

Image courtesy of Google reCAPTCHA. All Rights Reserved by Google LLC.
reCAPTCHA認証は、上記の説明の通り、Googleが提供するCAPTCHA認証サービスです。
reCAPTCHA認証は、主にウェブサイトのログインやフォーム送信時に使用されます。通常のCAPTCHAと同様に、ユーザーにランダムなテキストや画像を表示して、人間であることを確認します。
reCAPTCHA認証には、これまでに説明したCAPTCHA認証よりも高度な技術を使用しており、ボットが自動的にテストをパスできない様になっています。例えば、ユーザが正しいテキストを入力するだけでなく、ブラウザのCookie情報やマウスの動きなど「様々な要素」を分析して、人間であることを確認します。
また、スパムボットなどの自動プログラムがreCAPTCHA認証を解析しづらくするため、定期的に複雑なアルゴリズムを更新しています。
reCAPTCHA認証は、ウェブサイトの利便性を向上させるため、画像認識、音声認識、ボタンをクリックするだけの簡単なテストなど、様々な形式で提供されています(時にはこれらを組み合わせて確認する場合もあります)。
「私はロボットではありません」ボックスは、reCAPCHA認証が出しています。
reCPATCHA認証は、1秒間に1000回(1ヶ月に100万回)以上のアクセスがある場合は有料となります。非営利団体が利用する場合は、無料で利用できます。
hCaptcha認証
hCaptchaは、Intuition Machines、Inc社が開発・提供しているしたCAPTCHA認証サービスです。
GoogleのreCAPTCHA認証サービスに代わるCAPTCHA認証サービスとしては、15%という市場シェアを獲得しています。hCpatcha認証は、人間とボットを区別するため、(画像の中から動物を選ぶ、文章の意味を理解し適切な単語を選ぶなど)人間にしか正解が分からない問題をユーザに与えて、ボットか人間かを判別します。
GeeTest認証
GeeTestは、中国製のCAPTCHA認証サービスです。
人間とボットを区別するため、画像認識とマウスの動きの解析を組み合わせた認証方法を採用しています。GeeTestは、画像の位置やタップの速度、マウスの移動速度などを分析し、人間とボットを区別します。
上記の様なCAPTCHA認証は、ウェブサイトのセキュリティを強化し、不正なアクセスを防止するために広く使用されています。しかし、CAPTCHA認証は完璧ではありません。
最近では、ボットやハッカーが高度なOCR技術や機械学習アルゴリズムを採用することにより、CAPTCHA認証を回避できる様になりました。そのため、Cloudflareの新システム「Turnstile」の様に、常に新しいCAPTCHA認証の形式を開発し、既存のCAPTCHA認証サービスを改善・改良する必要があります。
「私はロボットではありません」(reCAPTCHA認証)が表示される理由

Image courtesy of Google reCAPTCHA. All Rights Reserved by Google LLC.
reCATCHA認証が表示する「私はロボットではありません」がウェブサイトに表示される理由は、主に5つあります:
- リクエストの頻度が高い
- 疑わしいトラフィック パターン
- 普段は使用しないデバイスまたは場所からのアクセス
- 大量のテキストのコピペ
- 回答が間違っているため(終わらない理由はこれ)
いずれも、ボットや不正なアクセスの疑いを検知した時に表示されます。「私はロボットではありません」が表示される理由とその詳細を以下に示します:
リクエストの頻度が高い
ユーザが短い間に大量のリクエストを送信している場合は、ボットであるとみなされる可能性があります。この場合に、reCPATCHA認証が表示される場合があります。
疑わしいトラフィック パターン
reCAPTCHA認証は、データセンターやその他の疑わしいところからのアクセスなど、自動化されている疑いのあるアクセスパターンを検出できます。
クラウドサービスであるAzureやAWSなどは、インターネット上で使用するIPアドレスが公開されているため、これらの情報を使用して、疑わしいアクセス元を特定していると思われます。
普段は使用しないデバイスまたは場所からのアクセス
海外旅行や国内でも普段行かない場所へ行った時に「私はロボットではありません」を見た経験がある方も多いと思います。
ユーザが普段は使用していないデバイス、または場所からウェブサイトにアクセスしている場合、不審なアクセスの兆候だとみなされ、reCAPTCHA認証が表示される場合があります。
また、VPNを使用している場合、不特定多数のVPN利用者が、同じIPアドレスからインターネットにアクセスしている場合が多いため、googleなどの有名なサイトからみると、大量のリクエストが同一IPからきている様に見えます。
その結果、ウェブサイト側は、ボットから大量のアクセスや攻撃を受けていると認識して、reCAPTCHA認証を表示する場合があります。
この場合は、VPNを一時的に使用停止にして、ウェブサイトにアクセスする様にしてください(もしくは、reCAPTCHA認証のテストに合格して、ウェブサイトを使える様にしてください)。
Fiddlerなどのパケットキャプチャツールに関しても、通信経路やSSL証明書の扱いを変更するため、ウェブサイトから見ると、不正なアクセスに見えます。その結果、reCATPCHA認証が表示される場合があります。Fiddlerの詳細については「Telerik Fiddlerの使い方を一から説明します」をご確認ください。
この場合も、パケットキャプチャツールの使用を一旦停止して、ウェブサイトにアクセスする様にしましょう。
最近は、ブラウザの開発者モード(F12キーで起動)でHTTP通信の詳細を確認できる様になっています。HTTP通信の詳細を確認したい場合は、まずは、ブラウザの開発者モードを試せばよいと思います。
大量のテキストのコピペ
ユーザが大量のテキストをフォームにコピペした場合、自動化スクリプトを使用してデータを入力しているとみなされ、reCAPTCHA認証が表示される場合があります。
回答が間違っているため(終わらない理由はこれ)
reCAPTCHA認証が繰り返し表示される場合は、reCAPTCHA認証が表示する問題に正解していない可能性が高いです。
質問内容を再確認し、答える様にしましょう。
その他の不審な動作
reCPATCHA認証は、ウェブサーバにより拒否されたフォームを繰り返し送信しようとするなど、不審な動作によっても表示される場合があります。
reCPATCHA認証が表示され続ける場合、上記の様な行動・操作をしているのであれば、一度それを止めて、ウェブサイトにアクセスしてみてください。
CAPTCHA認証の問題点

CAPTCHA認証は、万能ではありません。
CAPTCHA認証を導入するだけで、ユーザの操作性の低下やソフトウェアに対するユーザの満足度が下がる傾向にあります。
また、CAPTCHA認証は、AI技術やOCR技術の発達により、ボットが認証を回避できる事例も報告されています。
CAPTCHA認証は、一般的に以下5つの問題を抱えているといわれています:
- ユーザーエクスペリエンスの低下
- 視覚障害者に対するアクセシビリティの問題
- OCR技術による攻撃への脆弱性
- AI(機械学習)による攻撃への脆弱性
- 人力認証の代替手段としての利用
ここでは、CAPTCHA認証が抱える上記5つの問題を詳細に説明します:
ユーザーエクスペリエンスの低下
CAPTCHA認証は、利用者にとって手間がかかることが多く、ユーザ満足度の低下につながります。特にCAPTCHA認証が複数回表示される場合は、利用者に大きなストレスを与えてしまいます。
視覚障害者に対するアクセシビリティの問題
CAPTCHA認証は、主に視覚的な課題を与えることにより、ユーザかボットかを判別します。そのため、視覚障害者にとっては操作しづらかったり、そもそも解決できない問題があります。
一部のCAPTCHA認証は、音声認証に対応している場合があります。しかし、そもそも音声認証で使用している音声そのものが、聴覚障害者にとっては分かりづらいという問題もあり、有効な解決策にはなっていません。
OCR技術による攻撃への脆弱性
OCR技術により、CAPTCHA認証を自動で解読することが可能です。そのため、CAPTCHA認証は、より複雑な形式に変更される場合があります。
しかし、それでも、OCR技術の更なる向上により、解読されるケースが増えています。
AI(機械学習)による攻撃への脆弱性
AI(機械学習)を使った攻撃事例は、年々増加する傾向にあります。
例えば、ニューラルネットワークを使うことにより、画像内の文字を読み取り、CAPTCHA認証を解決できるケースが出てきています。
こういったAI(機械学習)に対する有効な手立ては、現在のところないものと考えられています。
人力認証の代替手段としての利用
CAPTCHA認証は、機械的な攻撃を防ぐために設計されました。
これに対抗するため、攻撃する側もCAPTCHA認証を人間の力で突破しようとするケースがあります。
例えば、CAPTCHA認証を解くアルバイトがあります。これは、ボットが遭遇するCAPTCHA認証は、アルバイトが解いて、ボットは攻撃に集中できる仕組みとなっており、CAPTCHA認証の目的である「機械的な攻撃」を防ぐことができない事態が発生しています。
攻撃する側も、一定の人員が必要となりますが、これにより、CAPTCHA認証が突破できてしまう点は、今後大きな問題になる可能性があります。
CAPTCHAを使用しなくてもセキュリティを強化する方法

これまでに説明した通り、CAPTHA認証はウェブサイトのセキュリティを強化するために必要なものです。
しかし、CAPTCHA認証に頼らなくてもよい場合があります。
CAPTCHA認証に頼らず、ウェブサイトのセキュリティを強化する方法を以下に示します:
- パスワードの強化
- 2要素認証の導入
- IPアドレスの制限
- セキュリティソフトウェアの導入
- 正しいプログラムの設計
ここでは、CAPTCHAを使用しなくてもセキュリティを強化する方法5つを詳細に説明します:
パスワードの強化
強力なパスワードポリシーを設定することにより、ユーザのアカウントが不正にアクセスされることから守ることができます。
パスワードの長さや文字の種類(英字大文字小文字や数字)、記号をパスワードに取り入れることにより、強度の高いパスワードを作成できます。これにより、ボットなどの攻撃を受けても、ユーザ情報を奪取されにくくなります。
2段階認証の導入
2段階認証を導入することにより、ユーザのログインがパスワードに加え、セキュリティトークンや生体認証による確認ができる様になります。これにより、ボットからの不正アクセスやデータ侵害のリスクを大幅に低減できます。
IPアドレスの制限
IPアドレスを制限することにより、特定のIPアドレスからのみアクセスできる様になります。これにより、ボットからの不正アクセスやDoS攻撃などのリスクを大幅に低減できます。
セキュリティソフトウェアの導入
ファイアウォール、ウイルス対策ソフト、不正アクセス検知ソフトなどのセキュリティソフトを導入することにより、ボットなどによる不正アクセスや攻撃から保護できます。
正しいプログラムの設計
セキュリティを考慮したプログラムの設計・コーディングにより、不正アクセスや脆弱性攻撃から保護できます。
例えば、SQLインジェクション、XSS(クロスサイトスクリプティング)、CSRF(クロスサイトリクエストフォージェリ)などの攻撃から、プログラムが保護されるように設計することが大切です。
IPA(情報処理推進機構)が公開している「安全なウェブサイトの作り方」を参考にすれば、安全なウェブサイトを構築できます。
CAPTCHA認証の将来

ボットの高度化やAI化が進むことにより、CAPTCHA認証は今後、AIを搭載した、より複雑なものになっていくことが予想されます。
しかし、技術的に複雑なものでも、人間を判別できる機能はより簡単に、ユーザの操作性を損ねない様にする必要があります。
セキュリティは、常に操作性を犠牲にするものですが、設計次第では、現在のreCAPTCHA認証の様に、ユーザの負担を著しく下げることもできます。
また、現在はウェブサイト単位で、CAPTCHA認証を行っていますが、今後は、ChromeやFirefoxなどのブラウザがCAPTCHA認証を行わなくてもよいセキュリティ対策を提供してくれる可能性もあります。
今すぐにCAPTCHA認証が不要になることはありませんが、新しい技術により、今後はボットが活動しにくくなる可能性があります。こうしたボット無効化の技術により、安全に、認証不要なウェブサイト運営・情報収集ができる日がくることが期待されます。
以上です。