Google の reCAPTCHA について調べてみた

botと人間を区別するためのCAPTCHAシステムの一種である、GoogleのreCAPTCHAについて調べてみました。
2023.03.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。prismatix事業部Devチームの中島です。 今回はGoogleのreCAPTCHAについて調べてみました。

概要 - Google reCAPTCHAとは

reCAPTCHAとは、CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)の一種で、2007年にカーネギーメロン大学ピッツバーグ本校にて開発されたシステムを2009年にGoogleが買い取りました。

以下のようなチェックボックスや「○○のタイルをすべて選択してください」のような画像を選択するモーダルをみたことある人も多いかと思いますが、あれのことです(もっとも、後述のV3やEnterpriseの場合はチェックボックス自体表示されなくなっていますが)。

reCAPTCHA V2 のキャプチャ

botによる不正なアクセスを防ぐために用いられ、ログイン画面やお問い合わせフォームなどに設置されることが多いです。

種類

V1

すでにサービス提供終了済み。 歪んだ文字列の内容を読み取ってフォームに記入することで認証を行うものです(歪んだ文字列、人間でも読み取れないことよくありましたよね・・・)。

V2

V2には、さらに、

  • 「私はロボットではありません」チェックボックス
  • 非表示 reCAPTCHA バッジ
  • reCAPTCHA Android

の3種類があります。

「私はロボットではありません」チェックボックス

個人的に一番馴染み深いパターンです。 このパターンのreCAPTCHA V2が設置されていると、以下のようなチェックボックスが表示されます。

reCAPTCHA V2のキャプチャ

Googleは、このチェックボックスをクリックする際のユーザーの行動を分析し、人間かどうかを判断します。 判断できない場合、以下のように「○○のタイルをすべて選択してください」のような画像を選択するモーダルが表示されます。

reCAPTCHA V2のキャプチャ

非表示 reCAPTCHA バッジ

このパターンのreCAPTCHA V2が設置されている場合は、Googleがバックグラウンドで人間かどうかを判断するので、ユーザーがチェックボックスをクリックする必要はありません。 Googleが人間だと判断できない場合は、「私はロボットではありません」チェックボックスパターンと同様、「○○のタイルをすべて選択してください」のような画像を選択するモーダルが表示されます。

reCAPTCHA Android

Androidアプリ向けのパターンです。このパターンでは、reCAPTCHA APIとして、デバイス認証やセーフブラウジングなどのサービスを通じてモバイルアプリを保護する「Google SafetyNet」の一部として提供されます。

V3

reCAPTCHA V3では、V2の「非表示 reCAPTCHA バッジ」と同様、チェックボックスは表示されず、Googleがバックグラウンドで判定を行います。

V2の「非表示 reCAPTCHA バッジ」との違いは、V3ではリクエストに対して通過・拒否を返すのではなく、0.0〜1.0のスコアを返す点です。1.0に近いほど人間である可能性が高く、0.0に近いほどbotである可能性が高い、ということになります。

スコアに応じてどのような処理を行うかはreCAPTCHAを設置したアプリケーション側で実装する必要があります。例えば、スコアが一定の値以下であれば追加のMFA認証やメール確認を要求する、などの処理を実装することも可能です。

reCAPTCHAのresponseのsuccessの値のみを持って通過・拒否の判定をするのではなく、スコアの値に応じて判定を行う必要があることに注意が必要です。

Enterprise

EnterproseではV3のようなスコアによる検証と、チェックボックスによる検証のどちらも選択できます(ただしチェックボックスはモバイル プラットフォームには対応していない)。

Enterpriseでは加えて、Google Cloud が提供する組み込みのウェブ アプリケーション ファイアウォール(WAF)での保護や、多要素認証(MFA)のサポートなど様々な機能を使用することができます。

料金

V2, V3

1か月あたり最大100万評価までは無料です。 1秒あたり1,000回または1ヶ月あたり100万回を超える呼び出しを実行する場合は、reCAPTCHA Enterpriseを使用するか、例外承認のリクエストをする必要があります。

Enterprise

誤解されがちですが、Enterpriseでも1か月あたり最大100万評価までは無料です。100万回を超えると、料金表に応じて料金がかかります。

機能の比較

機能 V2 V3 Enterprise
チェックボックスによる検証 ×
スコアによる検証 ×
WAFによる保護 × ×
多要素認証(MFA)のサポート(セキュリティ審査が必要) × ×
パスワード漏洩の検出 × ×
アカウント防御(セキュリティ審査が必要) × ×
不正行為の防止(セキュリティ審査が必要) × ×
スコアの粒度(セキュリティ審査が必要) × 4段階 11段階

まとめ

Google reCAPTCHAにはいくつかの種類がありますが、V1からの変遷を見ていると、文字識別やチェックボックスなどのユーザーに煩わしさを与えてしまう操作を極力減らしながら、botを排除する方向へとシフトしてきているのがわかります。 Google reCAPTCHAの進化に今後も注目していきたいです。