CAPTCHA

導入

CAPTCHAが提供する機能はユーザ認証機能そのものではない。システム要件として自動化された大量アクセスを避けたい機能がある場合、その前に設けることを検討する価値はある。


CAPTCHAキャプチャチャレンジ/レスポンス型テスト英語版)の一種で、応答者がコンピュータでないことを確認するために使われる。


CAPTCHAとreCAPTCHAはユーザーが実際にはボットであるかどうかを判定します。 これらのテストは悪意のあるボットの活動を止めことに役立ちますが、けして完全な仕組みではありません。


今回のテーマは『キャプチャ認証』です。CAPTCHAとも言われています。『キャプチャ認証』あるいは『CAPTCHA』(以下、CAPTCHA)という言葉は知らなくても、皆さんは既に見かけたことや実際に使用してみたことがあるかもしれません。

『CAPTCHA』とは簡単に説明すると人間が操作したのか、あるいはプログラムなどを使用して自動的・機械的に実行されたのかを区別するための機能です。主に『CAPTCHA』を見かける部分としては、ログイン認証部分にユーザIDやパスワードとともに設定されている場合、掲示板などの投稿機能部分に設定されている場合などがあります。









とは

CAPTCHA とは “Completely Automated Public Turing test to tell Computers and Humans Apart” の略であり、「人間とマシンを判別するチューリングテスト」のことである。

CAPTCHA は、ブラウザ以外の自動化されたWebクライアントによって大量のリクエストを投入されては困る案件において、相手がマシンでないことを確かめる目的で用いられる。例えば、会員登録フォームやメッセージ投稿フォームのようなケースが挙げられる。

Webアプリケーションで用いられる CAPTHCA には、歪められノイズが加えられた画像から 文字列を読み取るよう、ユーザに求めるものが多い。


もっとも一般的な画像によるCAPTCHAの場合、次のように画像に記されている文字や数字を読み取ることができるか否かによって人間と機械を判別する。

  1. CAPTCHA システムは、ランダムな文字や数字の列を画面に表示する。表示される文字は歪んでいたり一部が覆い隠されていたりして、機械が自動的に読み取ることは難しい。
  2. ユーザーは画面に描かれている文字の列を読み取り、同じ文字列をシステムに入力する。
  3. システムが表示した文字列とユーザーが打ち込んだ文字列が一致していれば、ユーザーは歪んだ画像を認識する能力を持っていると考えられる。システムはそのユーザーが人間であると推測する。
  4. システムにアクセスできる人間を日本語使用者に限定したい場合、画像の文字種をひらがなカタカナに限定する。
  5. 応用として、画像の文字種でアラビア数字のみを入力させる場合、アラビア数字そのものではなく読み方をひらがな・カタカナで表示する(例:123456 → イチ に サン よん ご ロク)。

アラビア数字だと、言語を問わずほとんどの人間が読めるが、ひらがな・カタカナまで読める日本国外人口はそれほど多くないため、日本国外からのアクセスを大幅に抑制できる。

コンピュータがテストを監督することから、人間が監督する標準的なチューリングテストとの対比として、CAPTCHA はときに逆チューリングテストとも呼ばれる。

また、複数の画像の中から指定された画像を全て選ぶ「私はロボットではありません」と呼ばれるものも存在する[1]

CAPTCHA は日本語では「画像認証」とも呼ばれている。


ゆがんだ文字列の画像のような、人間には理解できるがプログラムでは解析しにくい情報を提示して、何が書かれているかを入力させ、正しく答えられているかチェックする仕組み。スパム目的などの機械アクセスを防ぐために利用されることが多い。


CAPTCHAテストは、オンラインユーザーが本当に人間であり、ボットではないかどうかを判断するように設計されています。CAPTCHAは「Completely Automated Public Turing test to tell Computers and Humans Apart(完全に自動化された、コンピューターと人間を区別する公開 チューリングテスト )」を表す頭字語です。ユーザーは、インターネット上で頻繁にCAPTCHAおよびreCAPTCHAテストに遭遇します。こうしたテストは、ボット管理活動の一つの方法ですが、このアプローチには欠点もあります。

CAPTCHAは自動化されたボットをブロックするように設計されていますが、CAPTCHA自体が自動化されています。Webサイト上の特定の場所にポップアップするようにプログラムされており、自動的にユーザーを合格または不合格にします。


「あれ? これ、前にもあったな」と思って調べてみると、このVicariousがCAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart:コンピュータと人を区別するための完全自動化チューリングテスト)を解読したという記事は2013年に出ていました。CAPTCHAというのがこの“グニャグニャ文字”の名前で、主にWebサイトで人間かロボットかを見分けるための技術です。


CAPTCHAが機能しているところは、実際、オンラインで何度も見たことがあるです。さまざまな形式がありますが、最も一般的なのは、目を凝らして解読する必要のある「歪んだテキスト」です。低解像度の写真のまとまりから特定の条件を満たす画像を選択するものもあります。画像を使ったCAPTCHAの例

画像を使ったCAPTCHAの例

これにより表示される課題は、人間であれば、ほとんど簡単にクリアすることができます。一方で、今日の高度なボットであっても、歪んだ言葉や画像の断片を理解することはできません。このようにして、テストをクリアできない場合には、サイト(またはCAPTCHAが保護するその他のもの)からブロックされます。

ウェブサイトのセキュリティと信頼性を損なう危険性のあるいくつものスキームでボットが使用されるため、この機能の存在価値は計り知れません。例えば、広く知られたハッキング手法であるブルートフォース攻撃は、サイトにログインできるまで、ボットを使用してログイン情報を何度も繰り返し入力します。

クロスサイトスクリプティング(XSS)というサイバー攻撃もあり、これは、ログインページやコメントセクションなどのフォームを介してサイトに悪質なコードを埋め込みます。これにより、サイトにマルウェアが保存されたり、情報が盗まれたり、様々な悪影響が及ぼされます。

ボットは、質の低いリンクでコメントセクションを埋め尽くすことにも使用されます。この被害を受けると、サイトの検索エンジン最適化(SEO)の観点からマイナスの影響があり、加えて、普通のユーザーによる閲覧の利便性が損なわれます。スパムが表示されることは「迷惑」の域を超え、ユーザーに対して「サイトが十分に保護されておらず、監視が不十分」だという印象すら与えます。

ユーザーが情報を入力できる全ての場所(ありとあらゆるフォーム)は、ボットによる攻撃に対して脆弱です。そこで、フォーム送信前にCAPTCHAを要求することで、「人間を装ったアクセス」をはじいたり、悪意のあるコードがサイトに挿入されるのを防いだりすることができます。


普段、会員制のインターネットサービスを利用する際に、ログイン画面でユーザーIDとパスワードだけでなく、「画像として表示されている文字列」の入力を求められたことはないでしょうか? これは一般的に「画像認証」と呼ばれる認証技術の一種で、人が画像を目で見て確認し、そこに描かれている文字列を読み取って入力することで、ログイン操作を行っているのがコンピュータではなく人間であることを担保するという技術です。

他人のユーザーIDとパスワードを不正利用し、本人になりすましてシステムにアクセスして情報を窃取する「なりすまし攻撃」においては、人間ではなく不正ソフトウェアがログイン操作を行います。そこでは人の目が介在しないため、画像の内容を認識して認証をパスすることができず、結果的になりすまし攻撃は成功しません。

この技術は、標的型攻撃対策として企業の重要な情報資産を守る上でも有効です。画像認証をパスしない限り、業務システムやファイルサーバーへアクセスできないようにしておけば、たとえマルウェアが社内ネットワークへ侵入しても重要データへはアクセスできないため、標的型攻撃の被害を水際で防ぐことができます。

この認証技術は正式には「CAPTCHA認証」と呼ばれ、現在さまざまなWebサイトやアプリケーションで実装が進んでおり、着実に成果を上げています。ただし今さら言うまでもなく、標的型攻撃対策を含めたセキュリティ対策においては、終わりのない「いたちごっこ」が常に繰り広げられています。ある対策技術が登場すると、それを突破するための攻撃手法がすぐに編み出されます。CAPTCHA認証に関しても決して例外ではなく、ログイン画面で提示される画像を認識し、その中に含まれている文字列を自動的に読み取ることができるマルウェアも登場しています。

こうしたマルウェアの高度化に対して、守る側もただ手をこまねいているだけではありません。画像中の文字列を歪めたり、あるいは線をかぶせて一部を隠すなどして、ソフトウェアが読み取りにくくする「難読化」の工夫が日々重ねられています。その結果、現在ではインターネットの安全な利用に欠かせない技術として広く定着しつつあります。


※「CAPTCHA」とは 「completely automated public Turing test to tell computers and humans apart」(コンピュータと人間を区別する完全に自動化された公開チューリングテスト)の頭文字を取って作られた言葉。「CAPTCHA」は、今行われている操作を「人間」が行っているかどうかを確認するためのものです。   これは、悪意を持った者(主にスパム業者)が、スパムメールなどの配信を目的として、Microsoftアカウントを大量に作成するプログラムが動作できないよう、その対策として設けられたのが、「CAPTCHA」(画像認証)なのです。   人間には、この画像にどのような文字が書かれているのかを判読することが可能ですが、コンピュータは、この画像に書かれている文字を基本的には判読することはできません。 その意味でも、コンピュータによる不正アカウントの作成や不正参加を防ぎ、運用側、利用する側の両方を守るためにも、この技術は必要とされています。しかし、最近では人間の判別さえ困難な「CAPTCHA」を採用するWebサイトも現れており、人間までもが排除されてしまう、と話題になっています。   あまりにも難解な「CAPTCHA」であると、パスワードのリセットも一苦労という状況にもなります。   その理由として、スパム業者が新たな「CAPTCHA」の画像を認知するマルウェアを開発し、サイト運営側は「CAPTCHA」の画像を難しくするという、いたちごっこが発生していると言われています。もし今後、Microsoftアカウントのパスワードのリセットをせざるを得なくなった際は、スパム業者のプログラムではなく、間違いなく、「人間」であることを証明する機会だと理解を頂き、文字入力してもらえればと思います。





H2候補

  • CAPTCHA の効果と弊害
  • ■CAPTCHA は認証ではない
  • CAPTCHA はパスワード破り対策にならない
  • CAPTCHA 技術の動向
  • CAPTCHAの仕組みは?
  • reCAPTCHAとは?
  • 画像認識reCAPTCHAテストの仕組みは?
  • 単一のチェックボックスを使用したreCAPTCHAテストの仕組みは?
  • ユーザーの操作なしでreCAPTCHAはどのように機能しますか?
  • CAPTCHAテストを起動するのは?
  • 悪意のあるボットを止めるにはCAPTCHAおよびreCAPTCHAだけで十分ですか?
  • ボットを止めるためにCAPTCHAやreCAPTCHAを使用する欠点とは?
  • CAPTCHAまたはreCAPTCHAの代わりに使用できるものは?
  • CAPTCHAとreCAPTCHAはどのように人工知能(AI)プロジェクトと関係していますか?
  • チューリングテストとは何ですか?チューリングテストはCAPTCHAテストとどのように関連していますか?
  • GoogleはすでにCAPTCHAを使っていない
  • Google reCAPTCHAとは
  • WordPressサイトにCAPTCHAを追加する方法(3つのステップ)
  • 歪んだ文字を入力するだけじゃない!様々な方式
  • CAPTCHAとセキュリティ脆弱性
  • CAPTCHAの解読・突破

まとめ

参考

  • https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/103.html#:~:text=CAPTCHA%20%E3%81%A8%E3%81%AF%20%22Completely%20Automated,%E3%83%86%E3%82%B9%E3%83%88%E3%80%8D%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82
  • https://ja.wikipedia.org/wiki/CAPTCHA
  • https://webtan.impress.co.jp/g/captcha
  • https://www.cloudflare.com/ja-jp/learning/bots/how-captchas-work/
  • https://www.itmedia.co.jp/enterprise/articles/1802/06/news009.html
  • https://kinsta.com/jp/blog/wordpress-captcha/
  • https://www.daj.jp/news/170224_01/
  • https://persol-tech-s.co.jp/corporate/security/article.html?id=20
  • https://www.pct.co.jp/cccolumn20170214-001

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です