認証の世界も「AI対AI」の戦いに? botを見破る技術「CAPTCHA」のハナシ

11月11日(月)7時0分 ITmedia NEWS

 ほとんどの人が日常的に行っている、ログイン(サインイン)などの認証作業。認証で利用したパスワードが漏えいして第三者からの不正アクセスを受ける被害も多く、認証をめぐるセキュリティの問題は後を絶ちません。こうした課題を解決するには、サービス提供者が対策するだけでなく、サービスの利用者も正しい知識を持っておくことが必要でしょう。
 本連載では、認証の仕組みや課題、周辺の情報について、できるだけ分かりやすくお伝えしていきます。
 前回までの記事で、本人を特定するために使われる認証の三要素(知識・所有物・生体)を用いた認証方式について、一通り紹介しました。今回からは、不正アクセスを防ぐのに役立つ認証関連の技術を紹介していきます。
 会員制サービスの登録時などに、不自然な線や模様で隠されたり、ゆがんでいたりする文字の画像を見たことはありませんか。そうした読みにくい文字を判読してフォームに入力するという一連の手続きは「CAPTCHA」と呼ばれ、不正アクセスを防ぐ目的で使われています。
 今回は、CAPTCHAの基本的な知識と現状について紹介します。本記事の執筆に当たり、CAPTCHA製品を展開するCapyの松本悦宜さん(情報セキュリティ担当エンジニア)に話を伺い、参考にさせていただきました。
●CAPTCHAは何のためにある?
 CAPTCHAは、コンピュータプログラムによる自動操作(いわゆるbot)によるサービス利用を防ぐための技術です。「画像で作られたゆがんだ文字は、人間には判読できるがbotには判読できない。なので、正しく入力できた場合は人間で、正しく入力できない場合はbotである」という論理が前提となっています。
 CAPTCHAはどういった所で使われているのでしょうか。例えば、サービスへのログインページがあります。ブルートフォースアタック、リバースブルートフォースアタック(※1)、パスワードリスト攻撃など、botが手当たり次第にログインを試すのを防ぐためです。
※1:リバースブルートフォースアタックは、パスワードを「password」「12345678」「qwertyui」など、よく使われていそうなものに固定して、いろいろなIDを試す不正ログインの手口。複数回のパスワード入力ミスでアクセスを制限するアカウントロックを回避できる。ブルートフォースアタックがIDを固定してパスワードを総当たりで試すことから、「リバース」と表現している
 サービスの会員登録ページでも使われています。botがむやみやたらに会員登録を行い、実体がないアカウントが本来想定していない方法や目的でサービスを利用することを防ぎます。新規登録できないと分かったIDは攻撃対象になる恐れがありますが、botに繰り返し登録させないことでこれも防げます。
 会員登録やログインをしなくても送信できる問い合わせ・アンケートフォームなどでは、botによるむやみな送信を防ぎます。サービスログイン後の、限定生産品や興行のチケット購入ページに採用されていることもあります。こうしたページでは、転売目的の業者などがbotを利用して、人間では到底不可能な頻度で購入を試みることを防いでくれます。
 上記のケースでは、bot利用者はアカウントを正規の方法で作成・ログインしているため、「不正アクセス」ではありません。ただし、botを利用して購入することを、利用規約などで禁止しているサービスはあります(※2)。
※2:「チケットぴあ」の利用規約では、「第12条:(禁止事項)」において、botの利用を禁止している。興行チケットの場合は「チケット不正転売禁止法」で「本来の販売価格以上の価格で、業として行う有償譲渡」を禁じていて、「興行主等が、興行入場券の適正な流通が確保されるよう必要な措置を講ずる努力義務」がある。
 昨今のスマートフォンゲームでは、最初にもらえるアイテムがランダムで決まる場合に、望むものがもらえるまで何度もゲームをやり直す「リセマラ」(リセットマラソン)と呼ばれるプレイ方法があります。このリセマラをbotが自動的に行うのを防ぐためにCAPTCHAを使うケースもあります。
●どんなCAPTCHAがある?
 CAPTCHAは、人間には解決できるがbotには解決できない問題であれば、「画像化されたゆがんだ文字」でなくても構いません。
 画像認識技術が発達して一般化していくにつれ、簡単なゆがませ方や装飾方法ではbot対策にならなくなってきたので、文字画像に複雑な処理を加えることも多くなってきました。その結果、人間でも間違えることが増え、何度も入力させられることにストレスを感じてサービスの利用をやめる人が出てしまう問題も起きています。そのため、botには正解しづらく、人間には文字の判読や入力の手間が掛からないCAPTCHAが求められているのです。
 Googleでは、風景画像を分割して表示し、「自動車」「標識」などがどのスペースに写っているかを指定するシステム「reCAPTCHA」を提供しています。
 しかし、たまに「棒の部分は標識に含むの?」「どう見ても自動車が走っていないのだけど」などと指摘したくなるような風景画像が表示され、ストレスを感じてしまうこともあります。下記の記事では、そのような例が紹介されています。
・PLOG「reCAPTCHAの「私はロボットではありません」が難易度高すぎ問題」(PLAN)
 ソースコード共有サービス「GitHub」の会員登録時には、動物のイラストを回転させて、正しい位置に直すCAPTCHAが採用されています。動物のイラストが灰色とそのグラデーションで作られているのは、こういう色使いがbotには認識しづらいからなのでしょうか。
 中国の動画配信サービス「bilibili」(ビリビリ動画)の会員登録時に行うCAPTCHAは、風景イラストの中に表示した漢字を、イラストの上に表示した順番にクリックしていくタイプです。イラスト内に文字を隠す(人間には隠しているとは思えませんが)だけでなく、題目の漢字を少し傾けて表示することで、bot側に手間をかけさせています。さらに、ログイン時にはスライダーを使ってパズルを完成させるタイプの別のCAPTCHAが採用されています。
 今回お話を伺ったCapyでは、ジグソーパズルのピースをドラッグして画像を完成させる「パズルCAPTCHA」や、背景画像に合致したアイコンを選択して適した位置に移動させる「アバターCAPTHCA」を提供しています。クリックだけでなく、ドラッグが必要な所も他の例と違います。
 ここに挙げたCAPTCHAは、画像を利用しています。botには、画像を基に何かを判別することが困難だという特性があるためです。
●認証も「AI対AI」の時代に
 しかし、AIに問題と正解のパターンを大量に入力し、課題の解決方法を導き出させる機械学習は、文字タイプ以外のCAPTCHAに対しても脅威となり得るかもしれません。CAPTCHA側ではどのような対策しているのでしょうか。
 Capyの松本さんは「CAPTCHAの難易度を上げることで、botによる突破の確率は目に見えて減ります」といいます。
 「パズルCAPTCHAの場合だと、パズルピースの輪郭をぼやかしたり、移動するピースの数を増やしたりします。ただし、難易度を上げるとユーザーにとっても難しくなり、操作も増えるのでユーザビリティの低下につながります。サービス離脱率も上がってしまうかもしれません。難易度アップを安易に全てのユーザーに一律に適用するのは避け、接続してくるIPや利用環境など見て、通常のアクセスの場合は普通のCAPTCHAを、怪しい場合には難易度の高いCAPTCHAを表示する対応がお勧めです」(松本さん)
 Capyでは機械学習を用いてbotを検知する研究を行っているそうです。サービスにアクセスした後の振る舞いや、CAPTCHAを入力するタイミングなどを基にbotかどうかを判断します。パズルCAPTCHAやアバターCAPTCHAの場合だと、パズルピースやアバターを移動させる軌道も判断材料になるそうです。認証の分野でも「AI対AI」の戦いが既に始まっているのです。
 松本さんは「機械学習技術の発達が進むと、いつかはパズルCAPTCHAやアバターCAPTCHAも突破されるかもしれません。その時が来ることも考えて、別の認証システムの開発も進めています。とはいえ、不正利用者側が、機械学習を使うコストよりCAPCTHAを突破して得られる利益のほうがが大きいと考えるようになるまでは、CAPTCHAは残るでしょう」と説明する。
 CAPTCHAを突破できるbotを作るには、機械学習させるためのサンプルを集めて入力するコストをかける必要があります。いろいろな種類のCAPTCHAがあれば、不正利用者側でも、その分だけ対応するコストが増えるということです。人間には見た瞬間に正解が分かりストレスなく使えますが、botには判読が難しいようなCAPTCHAが多く登場すれば、セキュリティ向上につながるのかもしれません。
●「reCAPTCHA」は実は機械学習?
 CAPTCHAは、別の方法でも機械学習に利用されています。
 先述したreCAPTCHAは、もともとはCAPTCHAへの返答を紙の本をデジタル化に生かすシステムを指すものでした。現在ではGoogleがreCAPTCHAを買い取っており、「ユーザーの振る舞いを見て、CAPTCHAを行うか行わないかを判別する」ことも含めたシステムになっています。
 そして、このreCAPTCHAで出てくるCAPTCHAは、先ほど紹介したように「自動車」や「標識」など、道路上にあるモノや建造物を選択させるものばかりです。松本さんは「Googleが、reCAPTCHAに入力されたデータを機械学習に利用し、自動運転技術に転用しようとしているのではないか」と予想しています。
 reCAPTCHAで表示される画像には2タイプあって、左のように分割されたそれぞれのスペースに別の風景の写真を表示するものと、右のように1枚の風景写真を分割して表示するものがあります。
 左で得たデータと右で得たデータを併せて利用することで、「人間はどういった画像を自動車だと判断するか」ということを機械に学習させ、自動運転用AIを育てようとしているのかもしれません。
 「CAPTCHAで入力されたデータをリサイクルするreCAPTCHA」というもともとのreCAPTCHAの考え方にも合致していますし、「Googleっぽいな」とも感じます。
●ユーザーの状況や振る舞いを利用する「リスクベース認証」
 reCAPTCHAはユーザーの振る舞いを見てCAPTCHAを表示するかどうか判定しており、Capyはユーザーの接続環境によってCAPTCHAの難易度を変更する機能を提供しています。
 このようなユーザーの振る舞いや、接続環境などの情報を認証に利用する技術を「リスクベース認証」といい、現在さまざまなサービスの認証で採用が進んでいます。次回はこのリスクベース認証を中心に紹介したいと思います。

ITmedia NEWS

「世界」をもっと詳しく

「世界」のニュース

トピックス

BIGLOBE
トップへ