Webサイトでログインしたり、コメントを書いたりしようとすると、写真が並んだパネルが現れ、横断歩道や信号機、バスなどの画像を選ばされることがある。
利用者がロボットでないかを判断する、CAPTCHAという仕組みだ。ここで出題される問題が、年々難しくなっているのはなぜなのか。これが今回の疑問だ。
※この記事は『Mac Fan 2020年10月号』に掲載されたものです。
「私はロボットではありません」の目的は? CAPTHAと呼ばれる認証システム
「私はロボットではありません」で、適切に画像を選ぶのは意外に難しい。ロボットではなく、人間がアクセスしていることを確かめるためのものだとわかっていても苦戦し、自分の知能はロボット以下か…と情けなくなることがある。

このような認証の仕組みは「CAPTCHA」(Completely Automated Public Turing Test to tell Computer and Humans Apart、コンピュータと人間を識別する完全自動化公開チューリングテスト、キャプチャ)と呼ばれる。
ボットなどを使ってメールアカウントを不正に大量取得したり、ブログなどへスパムコメントを書き込んだり、ネットアンケートへの不正投票をしたり、パスワードリスト攻撃をしたりすることなどを防ぐ手段だ。
もし、CAPTCHAがなければ、スクリプトを書いてボットを作成し、コメント欄に大量投稿をして嫌がらせをしたり、リソースを逼迫させて運営を妨害することができてしまう。
現在では、Googleが提供している「reCAPTCHA」が広く使われているようだ。
かつては「歪んだ文字列」だった。しかし突破する技術が生まれ、CAPTCHAは次のステップへ
当初は、歪んだ文字列やノイズの乗った文字列を人間に読み取らせ、タイプ入力させる方法が使われていた。これに啓発されたのが米カーネギーメロン大学の研究チームで、書籍のOCR(光学文字認識)によるデジタル化に貢献できるのではないかと考えた。


つまり、OCRで読み取りができなかった単語をCAPTCHAに出題することで、スパム防止と書籍デジタル化の両方に貢献しようとしたのだ。そして、このreCAPTCHAプロジェクトは2009年にGoogleに買収され、Googleブックスの書籍デジタル化などに役立てられた。
ところが、このreCAPTCHAはすぐに研究者たちに破られてしまう。性能の高いOCRエンジンやスペルチェッカーをかませることによって、ボットが自動的に歪んだ文字を読み取って入力できるようになったからだ。
また、事前に文字列画像の歪みを補正したり、ノイズを除去してから、OCRとスペルチェックを行う手法なども開発され、文字列型CAPTCHAはほとんど効力がなくなってしまった。
続く人間と人工知能の知恵比べ
そこで「reCAPTCHA v2」として考案されたのが、パネル画像から横断歩道や信号機の画像を選ばせるタイプのものだ。しかし、これもすでにコロンビア大学の研究者などによって突破されている。
当初はさまざまな飲み物、たとえばワインやビール、コーヒーなどの画像が表示され、そこからワインの写真を選べというような出題が多かった。
これを突破するためには、機械学習で各画像のラベルを付ける。各画像に対して、「wine/glass」「coffee/cup」「beer/glass」のラベルを確定し、そこから求められている「wine」を選ぶというシンプルな手法だ。正答率は70%を超え、1枚の画像を判別するのにかかる時間は平均19秒程度になったという。
横断歩道は超難問。間違え続けると、ボットだけでなく筆者も排除された気になる
このような方法が開発されたために、reCAPTCHAでは、簡単にラベル付けができない画像が用いられるようになった。風景写真の中から、「横断歩道」「信号機」「バス」「消火栓」「階段」などを選ばせるものだ。
実際に試してみると、これがなかなか難しい。たとえばバス全体ではなく、一部しか写っていないことも多く、バスなのかトラックなのか判断しづらい。また、横断歩道などは最難関の問題で、単なる車線なのか、横断歩道なのか判断がつかない。

不正解だった場合は次の問題が出題され、再挑戦できるようになっているが、何問も連続すると途中で嫌になってくる。ボットを排除するだけでなく、人まで排除してしまっているように思えてならない。
“人間にだけ”解ける。CAPTCHAで利用する作問の難
このようなCAPTCHAには、人は簡単に解けるが、人工知能には簡単には解けない問題が適している。しかし、近年の人工知能の能力の進化ぶりは目覚ましく、なかなかうまい出題を誰も思いつけないでいる。
アイデアレベルでは、4コマ漫画の4つのコマをランダムに並べ、正しい順番に並べるというものもあるようだ。
また、猫の3Dモデルが表示され、左前足のところにマークがつけてある。解答画像では、異なる角度で表示される3Dモデルが表示され、マークが正しく左前足にあるものを選ぶというものも提案されている。
このような問題は、確かに人間には簡単に解けるが、人工知能にとっては難易度が高い。
“人の力を借りて”CAPTCHAを突破する。「リレー攻撃」という手法
しかし、これも無効にする攻撃方法が知られている。それがリレー攻撃だ。
まず、ダミーのサイトを作っておく。ポルノ映像やコンテンツの違法ダウンロードができるなど、倫理観に反するサイトであることが多い。そして、攻撃対象のCAPTCHAをリレーして、この下品なダミーサイトに中継するのだ。
ポルノ映像などを手に入れたい人は、CAPTCHAを解かなければならないが、その回答結果は攻撃対象のサイトに中継される。つまり、攻撃対象のCAPTCHAを、ポルノ映像を餌に人間に解かせてしまうという手法だ。
新発想のCapy CAPTCHA。パズルのピースをはめるなど、“動き”でボットを見極める
面白い発想をしたのがCapy CAPTCHAだ。それは、ジグゾーパズルの1ピースを正しくはめる、画像から果物を選ばせて皿の上に載せるというもの。

人工知能も解けるように思えるが、Capy CAPTCHAはピースの動かし方を見ている。ボットは、等速で迷いなくピースを動かしてしまう。一方、人間の場合は速度は一定でないほか、ふらつきもある。この行動の違いから、ボットか人間かを見極めるわけだ。
GoogleのreCAPTCHAもこのような方向に進み、現在のv3では不可視CAPTCHAと呼ばれる方式が採用された。セキュリティの問題からロジックは非公開だが、それまでの行動(どのWebをどのぐらいの時間見たか、カーソルの動きなど)から人間かどうかのスコアを算出。送信ボタンを押した段階で、人間かロボットを判定する。
仮に人間がボットと判断されてしまっても、表示される画像パネル形式のCAPTCHAをクリアすればいい。
有用だが有料化されたreCAPTCHA。我々が横断歩道や信号機に悩まされる日々は、まだまだ続きそう
ただし、同時にreCAPTCHAは一部有料になってしまった。GoogleはreCAPTCHAを無償提供をしてきたが、1秒あたり1000件、1カ月あたり100万件を超えて利用する企業に対しては、課金をするようになった。
アクセスの多いサイトでは、このコストもバカにならない。そのため、代替のサービスを探すところが増え始めている。
ボット対策としては、不可視CAPTCHAが最良のソリューションだ。しかし経済的な事情で、私たちはまだまだ横断歩道や信号機に悩まされなければならないかもしれない。
おすすめの記事
著者プロフィール

牧野武文
フリーライター/ITジャーナリスト。ITビジネスやテクノロジーについて、消費者や生活者の視点からやさしく解説することに定評がある。IT関連書を中心に「玩具」「ゲーム」「文学」など、さまざまなジャンルの書籍を幅広く執筆。