最終更新:
CAPTCHA の文字数設計 - 人間と機械を分ける文字列の科学
Web サイトにログインしようとしたら、歪んだ文字列を読み取って入力するよう求められた経験は誰にでもあるでしょう。あの歪んだ文字列は通常 4〜8 文字。なぜこの文字数なのか、考えたことはありますか。短すぎればボットに突破され、長すぎれば人間が離脱する。CAPTCHA の文字数設計は、セキュリティとユーザビリティの綱引きの産物です。この記事では、CAPTCHA の文字数がどのように決められてきたのか、その背後にある科学と歴史を解説します。
CAPTCHA とは何か - 名前に隠された意味
CAPTCHA は「Completely Automated Public Turing test to tell Computers and Humans Apart」の頭文字を取った造語です。日本語に訳すと「コンピュータと人間を区別するための完全自動化された公開チューリングテスト」。この呼び名は 2003 年に発表された論文で、ルイス・フォン・アンらによって与えられました。
この名前自体が 74 文字 (スペース含む) という長さで、CAPTCHA が解決しようとしている問題の複雑さを象徴しています。チューリングテストは本来、人間が機械を評価するものですが、CAPTCHA はその逆 - 機械が人間を評価するテストです。
初期 CAPTCHA の文字数設計
2000 年代初頭の CAPTCHA は、歪んだ英数字を画像として表示し、ユーザーに入力させる方式が主流でした。この時代の標準的な文字数は 6〜8 文字です。
| 文字数 | 組み合わせ数 (英数字 36 種) | ボットの突破確率 (ランダム推測) | 人間側の負担 |
|---|---|---|---|
| 4 文字 | 約 168 万通り | 1/1,679,616 | 一目で覚えて打ち切れる |
| 6 文字 | 約 21.8 億通り | 1/2,176,782,336 | 画像を一度見返す程度 |
| 8 文字 | 約 2.8 兆通り | 1/2,821,109,907,456 | 見返しと打ち間違いが増える |
| 10 文字 | 約 3,656 兆通り | 1/3,656,158,440,062,976 | 数文字ずつ分けて写す作業になる |
4 文字でもランダム推測による突破確率は 168 万分の 1 と十分に低いのですが、ボットは画像認識 (OCR) を使って文字を読み取るため、ランダム推測よりはるかに高い精度で突破を試みます。そのため、OCR の認識精度を下げるために文字を歪ませ、さらに文字数を増やしてセキュリティを確保していました。
しかし、文字数を増やすと人間の側も確実に打てなくなります。歪んだ文字では 0 と O、1 と l、2 と Z の判別が難しく、文字数が増えればその判断を何度も繰り返すことになるためです。1 文字でも読み違えれば全体が不正解になる仕様なので、失敗確率は文字数の増加に対して直線的ではなく、加速的に増えます。やり直しが重なればフォームの離脱率が上昇します。フォーム入力のバリデーション設計でも触れていますが、ユーザーに過度な負担をかける入力フォームは、コンバージョン率を著しく低下させます。
なぜ 6〜8 文字で止まるのか - 「見て、覚えて、打つ」の構造
CAPTCHA の入力は、単なるタイピングではなく「画像を見る → 一時的に覚える → キーボードへ写す」という 3 段構えの作業です。人間の一時的な記憶は無限ではないため、一度に写せる量を超えると、画像と入力欄の間で視線を往復させる回数が増えます。往復のたびに「どこまで打ったか」を数え直す必要があり、そこで脱落や重複が生まれます。
ここで効くのは文字数そのものより「まとまりの数」です。ランダムな英数字は 1 文字ずつが独立したまとまりなので、8 文字なら 8 個を抱えることになります。一方、意味のある単語なら数文字がひとかたまりとして扱えるため、同じ文字数でも体感の負担は小さくなります。CAPTCHA が意味のない文字列を使う以上、負担は文字数にほぼ比例して増えていきます。
| 文字数 | 見て打つときの負担 | ユーザー体験 | セキュリティ |
|---|---|---|---|
| 3〜4 文字 | 視線の往復なしで写せる | 快適だが簡単すぎる | 低い (OCR で容易に突破) |
| 5〜6 文字 | 往復は 1 回程度 | ストレスが少ない | 中程度 |
| 7〜8 文字 | 往復が前提になる | やや負担を感じる | 高い |
| 9 文字以上 | 数文字ずつ区切って写す | 強いストレス・離脱増加 | 非常に高いが実用的でない |
結果として、セキュリティとユーザビリティのバランスが取れる 6〜8 文字が CAPTCHA の標準的な文字数として定着しました。パスワードの文字数と安全性の記事で解説した通り、パスワードでも「覚えやすさ」と「安全性」のトレードオフが存在しますが、CAPTCHA はパスワードと違って「一度きりの入力」であるため、記憶の負担はさらに大きくなります。
reCAPTCHA v1 - 認証の労力を書籍のデジタル化に回す
2007 年、CAPTCHA の発明者の一人であるルイス・フォン・アンは、CAPTCHA に費やされる人間の労力を有効活用するアイデアを思いつきました。それが reCAPTCHA です。
reCAPTCHA v1 は、2 つの単語を表示します。1 つは答えが分かっている検証用の単語、もう 1 つは OCR で読み取れなかった書籍のスキャン画像から切り出した単語です。ユーザーが 2 つの単語を入力すると、検証用の単語で人間であることを確認しつつ、もう 1 つの単語の読み取り結果を書籍のデジタル化に活用します。
このシステムは大規模に機能しました。2010 年には Facebook や Twitter などへの導入が進み、1 日あたり 1 億件を超える CAPTCHA が表示される規模に達しています。The New York Times のアーカイブのデジタル化にも reCAPTCHA が使われました。認証という「捨てられていた数秒」を集めて、機械が読めなかった文字を人間が埋めるという発想の転換です。
reCAPTCHA v1 の文字数は通常 2 単語で合計 8〜15 文字程度。従来の CAPTCHA より文字数が多くなりましたが、「単語」という意味のある塊で提示されるため、ランダムな文字列よりも記憶しやすく、正答率は比較的高く維持されました。
reCAPTCHA v2 - 文字数ゼロの革命
2014 年、Google は reCAPTCHA v2 を発表しました。「I'm not a robot」(私はロボットではありません) というチェックボックスをクリックするだけで認証が完了する、画期的なシステムです。
ユーザーが入力する文字数はゼロ。チェックボックスをクリックする動作だけで、マウスの軌跡、クリックの速度、ブラウザの情報、Cookie の履歴など、数百の信号を分析して人間かボットかを判定します。
| CAPTCHA の世代 | ユーザーが入力する文字数 | 求められる操作 | つまずきやすい点 |
|---|---|---|---|
| 初期 CAPTCHA (2000 年代) | 6〜8 文字 | 歪んだ文字の判読と入力 | 0 と O、1 と l の判別で迷う |
| reCAPTCHA v1 (2007 年) | 8〜15 文字 (2 単語) | 2 単語の入力 | 語として読めるが入力量は多い |
| reCAPTCHA v2 (2014 年) | 0 文字 (チェックのみ) | チェックボックスのクリック | 疑われると画像選択に回される |
| reCAPTCHA v3 (2018 年) | 0 文字 (完全不可視) | 操作なし (背後で判定) | 低スコア時の代替手段をサイト側が用意していないと詰む |
| 画像選択型 (v2 のフォールバック) | 0 文字 (画像クリック) | 該当する画像のクリック | 境界が曖昧な画像で判断に迷う |
reCAPTCHA v2 が判定に失敗した場合 (ボットの疑いがある場合) は、画像選択型のチャレンジが表示されます。「信号機を含む画像をすべて選択してください」というあの画面です。ここでも文字入力は不要ですが、判定に足りなければ何度も出題が続くため、体験としては初期 CAPTCHA と大差ありません。
reCAPTCHA v3 とスコアベース判定
2018 年に登場した reCAPTCHA v3 は、ユーザーに一切の操作を求めません。ページの閲覧行動をバックグラウンドで分析し、0.0 (ボットの可能性が高い) から 1.0 (人間の可能性が高い) のスコアを返します。
サイト運営者はこのスコアに基づいて、閾値 (例えば 0.5) を設定し、スコアが低いユーザーにだけ追加の認証を求めることができます。文字数設計の観点からは、reCAPTCHA v3 は「文字数ゼロ」の究極形です。ユーザーは CAPTCHA の存在すら意識しません。
ただし、reCAPTCHA v3 にはプライバシーの懸念があります。ユーザーの行動を常時監視してスコアリングする仕組みは、GDPR (EU 一般データ保護規則) との整合性が問われています。この懸念から、Cloudflare Turnstile や hCaptcha といった代替サービスが台頭しています。
文字認識 AI との軍拡競争
CAPTCHA の歴史は、文字認識 AI との軍拡競争の歴史でもあります。CAPTCHA が文字を歪ませれば、AI がその歪みを学習して突破する。CAPTCHA がさらに歪みを強くすれば、人間にも読めなくなる。このジレンマが、テキストベースの CAPTCHA を衰退させました。
逆転が数字で示されたのは 2013 年から 2014 年にかけてです。Google の研究チームが公開した深層学習の論文は、reCAPTCHA の最も難しい部類の歪んだ文字に対して 99.8% の認識精度を報告しました。人間の側は歪みを強くするほど読めなくなるのに、機械はほぼ取りこぼさない。「人間には読めるが機械には読めない」という設計の前提そのものが崩れたわけです。この逆転が、テキスト入力型から画像選択型・行動分析型への移行を加速させました。
| 年代 | CAPTCHA の防御策 | 機械側の突破手法 | 力関係 |
|---|---|---|---|
| 2000〜2005 年 | 文字の歪み (軽度) | テンプレートマッチング | 人間が明確に優位 |
| 2005〜2010 年 | 文字の重なり・背景ノイズ | 文字の切り分け + OCR | 歪みを強めて何とか対抗 |
| 2010〜2014 年 | 極度の歪み・線の追加 | 深層学習 (CNN) | 機械が追い越す (最難関で 99.8% の報告) |
| 2014 年以降 | 画像選択・行動分析 | 画像認識・人間らしい操作の模倣 | 勝負の場が文字以外へ移る |
深層学習 (ディープラーニング) の登場が転換点でした。畳み込みニューラルネットワーク (CNN) は、歪んだ文字画像からパターンを学習する能力に優れており、人間が読めないほど歪んだ文字でも高精度で認識できます。CAPTCHA の設計者は「人間には読めるが機械には読めない」文字列を作ろうとしていましたが、AI の進化がその前提を崩してしまったのです。
CAPTCHA ファーム - 人間を使った突破ビジネス
技術的な突破とは別に、「CAPTCHA ファーム」と呼ばれるビジネスも存在します。安価な労働力を集め、人間が CAPTCHA を解いて答えを返すサービスです。料金は 1,000 件あたり 1 ドルを下回る水準まで下がっており、人間の手間そのものが極端に安く売買されています。
CAPTCHA ファームに対しては、文字数を増やしても効果がありません。人間が解いているため、文字数に関係なく突破されます。reCAPTCHA v3 のような行動分析型は、CAPTCHA ファームに対しても一定の効果があります。ファームの作業者は短時間に大量の CAPTCHA を解くため、その行動パターン (解答速度が一定、マウスの動きが機械的) がスコアに反映されるためです。
アクセシビリティと文字数の問題
テキストベースの CAPTCHA は、視覚障害者にとって大きなバリアでした。歪んだ文字画像はスクリーンリーダーで読み取れないため、音声 CAPTCHA が代替手段として提供されていました。
音声 CAPTCHA は、雑音の中で数字やアルファベットを読み上げ、ユーザーに入力させる方式です。聞き取りにくくするための雑音が人間の聞き取りも同時に妨げるうえ、聞き直しには再生し直しが必要で、視覚版より失敗しやすい代替手段でした。文字数を減らせば機械にも解かれやすくなるため、視覚版と同じジレンマがそのまま持ち込まれています。
エラーメッセージの設計の記事で触れた通り、ユーザーが操作に失敗したときの体験設計は重要です。CAPTCHA の失敗は特にフラストレーションが大きく、「自分が人間であることを証明できない」という不条理な状況に陥ります。reCAPTCHA v3 のような不可視型 CAPTCHA は、このアクセシビリティ問題を根本的に解決する方向性として評価されています。
CAPTCHA の未来 - 文字数はゼロへ
CAPTCHA の進化は、「ユーザーが入力する文字数を減らす」方向に一貫して進んできました。6〜8 文字 → 2 単語 → チェックボックス → 完全不可視。この流れは今後も続くでしょう。
| サービス | 方式 | ユーザー操作 | プライバシー |
|---|---|---|---|
| reCAPTCHA v3 | 行動分析 (スコアベース) | 不要 | Google に行動データを送信 |
| Cloudflare Turnstile | ブラウザチャレンジ | 不要 (まれにインタラクション) | 行動データを収集しない |
| hCaptcha | 画像選択 + 行動分析 | 画像選択 (場合による) | データ収集を最小化 |
| Apple Private Access Token | デバイス認証 | 完全不要 | Apple のデバイス情報のみ |
Apple の Private Access Token は、デバイスレベルで人間であることを証明する仕組みで、Web サイト側には一切のユーザー情報を渡しません。この方式が普及すれば、CAPTCHA という概念自体が過去のものになる可能性があります。
CAPTCHA の文字数設計の歴史は、「人間と機械の境界線をどこに引くか」という問いの変遷でもあります。かつてはその境界線が「歪んだ 6 文字を読めるかどうか」にありました。今やその境界線は、マウスの動かし方やスクロールのパターンといった、文字数では測れない領域に移っています。文字を数えることで人間性を証明する時代は、静かに終わりを迎えつつあるのです。