CAPTCHA の誕生 - 人間であることを証明せよ

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) は、2000 年にカーネギーメロン大学の Luis von Ahn らによって命名されました。名前が示すとおり、アラン・チューリングが 1950 年に提唱した「チューリングテスト」の逆転版です。チューリングテストは「機械が人間のように振る舞えるか」を問いますが、CAPTCHA は「あなたが人間であることを機械に証明せよ」と問います。

この記事では、歪んだ文字の解読から画像認識、そして「何もしなくていい」認証まで、CAPTCHA の 25 年にわたる進化と、それを突破し続けるボットとの終わりなき攻防を辿ります。

第 1 世代: 歪んだ文字を読め (2000 年代前半)

初期の CAPTCHA は、ランダムな文字列を歪ませ、ノイズを加えた画像を表示し、ユーザーにその文字列を入力させるものでした。人間の視覚認識能力は歪んだ文字を読み取れるが、当時の OCR (光学文字認識) 技術では困難 - という前提に基づいていました。

なぜ歪んだ文字だったのか

2000 年代初頭、Web サービスはボットによる大量のアカウント作成、スパム投稿、チケットの買い占めに悩まされていました。Yahoo! は無料メールアカウントの自動作成を防ぐために、最初期の CAPTCHA を導入した企業の一つです。

歪んだ文字の CAPTCHA は、以下の手法で OCR を妨害しました。

  • 文字の回転、拡大縮小、波状変形
  • 背景へのノイズ線やドットの追加
  • 文字同士の重なり (セグメンテーションの困難化)
  • フォントのランダム化

突破の歴史

しかし、OCR 技術の進歩は CAPTCHA の設計者の想定を上回りました。2003 年には、機械学習を用いた攻撃が一部の CAPTCHA を 90% 以上の精度で突破できることが示されました。CAPTCHA の歪みを強くすれば機械は読めなくなりますが、人間にとっても読みにくくなるというジレンマが生じました。

reCAPTCHA v1 - 書籍のデジタル化に貢献した CAPTCHA

2007 年、CAPTCHA の発明者である Luis von Ahn は、CAPTCHA に費やされる人間の労力を有効活用するアイデアを思いつきました。それが reCAPTCHA です。

reCAPTCHA v1 は、2 つの単語を表示します。1 つは答えが分かっている「検証用」の単語、もう 1 つは OCR で読み取れなかった書籍のスキャン画像から切り出した「未知の」単語です。ユーザーが検証用の単語を正しく入力すれば人間と判定され、同時に未知の単語の入力結果が書籍のデジタル化に活用されます。

この仕組みにより、reCAPTCHA は 1 日あたり約 2 億回の CAPTCHA 解答を書籍のデジタル化に転用しました。New York Times の過去 130 年分のアーカイブや、Google Books のプロジェクトに貢献したとされています。2009 年に Google が reCAPTCHA を買収し、Google Street View の住所表示の読み取りにも応用されました。

reCAPTCHA v2 - 「私はロボットではありません」の裏側

2014 年に登場した reCAPTCHA v2 は、チェックボックスをクリックするだけの「No CAPTCHA reCAPTCHA」を導入しました。「私はロボットではありません」のチェックボックスをクリックするだけで認証が完了する - あの体験です。

チェックボックスの裏で何が起きているか

チェックボックスのクリックは、認証の入口にすぎません。Google は、クリックの瞬間までに収集した膨大な行動データを分析して、人間かボットかを判定しています。

  • マウスの動き: 人間のマウスカーソルは微妙に揺れながら移動する。ボットは直線的に、一定速度で移動する傾向がある
  • クリックの座標とタイミング: チェックボックスのどの位置をクリックしたか、ページ読み込みからクリックまでの時間
  • ブラウザ環境: ブラウザフィンガープリント、プラグイン、画面解像度、タイムゾーン
  • Cookie と閲覧履歴: Google アカウントにログインしているか、過去の reCAPTCHA の解答履歴
  • IP アドレスのレピュテーション: IP レピュテーションが低い場合、追加の検証が要求される

これらのシグナルを総合的に評価し、リスクスコアが低ければチェックボックスだけで通過できます。リスクスコアが高い場合は、画像選択チャレンジ (「信号機を含む画像をすべて選択してください」) が表示されます。

画像選択チャレンジの二重の目的

画像選択チャレンジもまた、reCAPTCHA v1 と同様に二重の目的を持っています。ユーザーの回答は、Google の画像認識モデル (自動運転車の物体認識など) の学習データとしても活用されています。「横断歩道を選択してください」「バスを選択してください」というチャレンジは、まさに自動運転に必要な物体認識の訓練データです。

reCAPTCHA v3 - 見えない CAPTCHA

2018 年に登場した reCAPTCHA v3 は、ユーザーに一切のインタラクションを求めません。ページのバックグラウンドで動作し、ユーザーの行動を継続的に分析して 0.0 (ボットの可能性が高い) から 1.0 (人間の可能性が高い) のスコアを返します。

サイト運営者は、このスコアに基づいて独自のアクションを設定できます。例えば、スコアが 0.5 以下なら追加認証を要求する、0.3 以下ならアクセスをブロックする、といった具合です。

プライバシーの懸念

reCAPTCHA v3 は、ユーザーの行動を広範に追跡するため、プライバシーの観点から批判を受けています。

  • ページ上のすべてのマウス操作、キーボード入力、スクロール行動が Google に送信される
  • Google アカウントの Cookie が判定に使用されるため、Google にログインしているユーザーが有利になる
  • VPNTor を使用するプライバシー意識の高いユーザーほど、ボットと判定されやすい

この問題を受けて、Cloudflare は 2021 年に「Turnstile」という代替 CAPTCHA サービスを発表し、プライバシーに配慮した認証を提供しています。

CAPTCHA を突破するビジネス

CAPTCHA の進化に対抗して、CAPTCHA を突破するサービスも産業化しています。

CAPTCHA 解答ファーム

発展途上国の低賃金労働者が、リアルタイムで CAPTCHA を解答するサービスが存在します。2Captcha、Anti-Captcha などのサービスは、API 経由で CAPTCHA 画像を送信すると、数秒以内に人間が解答を返します。料金は 1,000 件あたり数ドル程度です。

機械学習による突破

深層学習の進歩により、画像認識 CAPTCHA の突破精度は飛躍的に向上しました。2019 年の研究では、reCAPTCHA v2 の画像チャレンジを 85% 以上の精度で突破できる機械学習モデルが報告されています。皮肉なことに、Google 自身が提供する画像認識 API を使って Google の CAPTCHA を突破する手法も存在します。

CAPTCHA の未来 - 人間であることの証明はますます難しくなる

生成 AI の急速な進歩により、テキスト、画像、音声のいずれにおいても、機械と人間の区別はますます困難になっています。従来の CAPTCHA の前提 - 「人間にはできるが機械にはできないタスク」 - が成立しなくなりつつあります。

今後の認証は、単一のチャレンジではなく、行動パターンの継続的な分析、デバイスの信頼性評価、パスキーなどの暗号学的な証明を組み合わせた多層的なアプローチに移行していくと考えられます。

次に「私はロボットではありません」のチェックボックスをクリックするとき、その裏側で繰り広げられている人間とボットの攻防戦を思い出してみてください。CAPTCHA の判定に使われる IP アドレスやブラウザフィンガープリントがどのように見えているか、IP 確認さんで確認してみるのも面白いでしょう。

Web セキュリティの歴史と技術を学びたい方には、Web セキュリティの入門書が参考になります。

この記事の関連用語

CAPTCHA 人間とボットを区別するための自動テスト。歪んだ文字の入力、画像選択、行動分析など、世代ごとに手法が進化している。 ボット 自動化されたプログラムで、人間の操作を模倣してタスクを実行する。検索エンジンのクローラーから悪意のあるスパムボットまで用途は多様。 ブラウザフィンガープリント ブラウザの設定、プラグイン、フォント、画面解像度などの属性情報を組み合わせて、ユーザーを一意に識別する技術。 Cookie Web サイトがユーザーのブラウザに保存する小さなデータ。セッション管理やユーザー設定の記憶に使われる。 IP アドレス インターネット上のデバイスを識別するための数値アドレス。CAPTCHA の判定にも IP レピュテーションが参照される。