retireSakiの日記

たぶん引退した?ソフトウエアエンジニアのブログ

reCAPTCHA v3 の概要そして本当に安全になるの?!

f:id:retireSaki:20181030155247p:plain

bot 対策として有名である reCAPTCHA が v3 が公開されていました。
reCAPTCHA は2009年にCoogleが買収したことで、Googleの無料サービスとして、さらに多くのサイトで認証ツールの1つとして利用されています。

チェックボタンと「私はロボットではありません」という文字列のボックスがあるアレです!!

f:id:retireSaki:20181030155440j:plain

reCAPTCHA は認証完了までに手間がありましたが、v3 ではこの作業を自動化しています。

極端にいうと、
v2 までは、ユーザーの動作による検証でしたが、
v3 では、それをシームレスな結果(コスト)を使ってサイトで行う。
という感じでしょうか。


◆ reCAPTCHA v3 は何が新しい?

もの凄く簡単にいうと、reCAPTCHAのリスク分析エンジンがbotの行動パターンと人間の行動パターンを比較することで、その怪しさをスコアという値にしてWebサイトに戻します。これによりサイト側が様々な適切な処理ができるようになります。
ぶっちゃけ、これまでの統計情報と機械学習を使って特定してしまおうということですね。

もう少し詳しく説明すると、

CAPTCHA入力やチェックなどのチャレンジを表示する代わりに、reCAPTCHA v3は、どのように疑わしいかを示すスコアを返します。

reCAPTCHA v3では、「Action」というタグを導入しています。
ユーザーの主要なステップを定義し、reCAPTCHAがリスク分析をコンテキストで実行できるようにするためのタグです。 reCAPTCHA v3はユーザーの行動を妨害しないので、reCAPTCHA v3を複数のページに追加することをお勧めします。
reCAPTCHAの適応型リスク分析エンジンが、Webサイト上のさまざまなページのアクティビティを調べることで、より正確に攻撃者のパターンを特定します。

このスコアを使用する方法は3つあります。

まず、ユーザーが通過するタイミングや、2つの要素認証や電話による検証など、さらなる検証が必要な場合を決定するしきい値を設定することできます。

次に、reCAPTCHAがアクセスできないユーザープロファイルやトランザクション履歴などの独自のシグナルとスコアを組み合わせることができます。

さらに、reCAPTCHAスコアを悪用の対応をするために、マシン学習モデルを訓練するための信号の1つとして使用できます。


◆ reCAPTCHA v3 のスコアの使い方]

スコアは、1.0 (非常に良い)〜0.0 (ボットの可能性が高い)となります。

  <script>
  grecaptcha.ready(function() {
    grecaptcha.execute('reCAPTCHA_site_key', {action: 'homepage'});
  });
  </script>

※ grecaptcha.ready() は、reCAPTCHAライブラリがロードされるとすぐに関数を実行されます。


1) action について
"homepage"
 スクレイパーをフィルタリングする際に、管理コンソールでトラフィックの一貫したビューを表示する。
"login"
 スコアが低い場合、攻撃を防ぐために2つの要素認証または電子メールの検証が必要とする。
"social"
 悪意のあるユーザーからの未解決の友だちリクエストを制限し、危険であるコメントを送る。
"e-commerce"
 正式な取引する前に判断することで、危険な取引を特定する。

スコアのしきい値のデフォルトは0.5です。

2) フロントエンド サンプル

<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>
  <script>
  grecaptcha.ready(function() {
      grecaptcha.execute('reCAPTCHA_site_key', {action: 'homepage'}).then(function(token) {
         ...
      });
  });
  </script>

詳細は、reCAPTCHA v3 開発情報ページを参照してください。(リンクは下にあります)


◆ reCAPTCHA v3 と bot の戦いは?

しかしこれは、botbot らしい行動を取ったときのみ判断できるということでもあります。
bot の種類によってもかなり差がありますが、bot作成者がこれに対応しようとするならば、それらしきホストを使って人間の行動を模したbotを作成しますよね。
人間特有の間、ゆらぎなどを多少のあいまいさやランダム性を付与しながら自動化するだけ(実際はもっと複雑ですw)ですから、botプログラムは多少大きくなりますが、比較的簡単なプログラムで済むでしょう。
悪さをするための bot ではないですが、同じようなデバッグ用のプログラムを作ったことがあります。それなりの時間はかかりますが、それほどという感じではありませんでしたので、bot作成者が対抗するプログラムを作成するためにかかる時間はそれほどかからないでしょう。
今までの reCAPTCHA と同様に、bot作者とのいたちごっこになることは言うまでもありません。


◆ reCAPTCHA v3 は利用に値するの?

しかし、現在使用されているbotの全てがCPTCHA v3に対応するわけでもないと思いますので、效果は期待できるでしょう。
また、エンドユーザーが認証せずにすむメリットの大きさも大きいです。

新しい試みということもあり、様子をみながら導入することをお勧めします。
また、よりスコアの正確性を増やすためにも、より多くのページにタグを設置すると良いでしょう。



● reCAPTCHA v3 公式ページ
www.google.com

● reCAPTCHA v3 開発情報ページ
reCAPTCHA v3  |  reCAPTCHA  |  Google Developers

注目記事

「Amazon.co.jpアソシエイト」または「[乙の名称を挿入]は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。