CAPTCHAは何を確かめる仕組みか、本人認証との違いを整理
情報セキュリティマネジメント試験 2022年 サンプル問題 問25 / セキュリティ › 情報セキュリティ
過去問にチャレンジ
Webサイトで利用されるCAPTCHAに該当するものはどれか。
- ア
人からのアクセスであることを確認できるよう,アクセスした者に応答を求め,その応答を分析する仕組み
- イ
不正なSQL文をデータベースに送信しないよう,Webサーバに入力された文字列をプレースホルダに割り当ててSQL文を組み立てる仕組み
- ウ
利用者が本人であることを確認できるよう,Webサイトから一定時間ごとに異なるパスワードを要求する仕組み
- エ
利用者が本人であることを確認できるよう,乱数をWeb サイト側で生成して利用者に送り,利用者側でその乱数を鍵としてパスワードを暗号化し,Web サイトに送り返す仕組み
会話形式の解説
講師今回はCAPTCHAが何をする仕組みかを問う問題です。選択肢ごとに「何を確認しようとしているのか」に注目すると、見分けやすくなります。
受験者CAPTCHAは、会員登録のときに歪んだ文字を入力させられるものですよね。ログインの画面でも見るので、本人確認の一種だと思っていました。
講師そこが混同しやすいところです。CAPTCHAは、アクセスしているのが人間なのか自動プログラムなのかを見分ける仕組みです。特定の個人を確かめる本人認証ではありません。
受験者そうすると、「人からのアクセスであることを確認できるよう、応答を求めて分析する」という説明が当てはまりそうです。
講師そのとおりです。たとえば歪んだ文字の読み取りや画像の選択といった課題を出し、人間らしい応答かどうかで判定します。これが正解です。
受験者ほかの選択肢のうち、プレースホルダを使ってSQL文を組み立てる仕組みは、認証の話ではないように見えます。
講師はい。入力された文字列をプレースホルダ、つまりSQL文の中にあらかじめ用意した値の差し込み口に割り当てる方式は、バインド機構と呼ばれます。SQLインジェクションへの対策で、人間かどうかの判別とは関係ありません。
受験者一定時間ごとに異なるパスワードを求める仕組みは、ワンタイムパスワードですね。「利用者が本人であることを確認できるよう」と書いてあるので、目的が違います。
講師よく読めています。最後の、サイトが生成した乱数を鍵にしてパスワードを暗号化して返す仕組みはどうでしょう。
受験者相手に問いかけて応答を確かめる点はCAPTCHAに似ている気がして、少し迷いました。
講師そこが引っかけです。これはチャレンジレスポンス認証で、問いかけと応答を使いますが、確かめているのは利用者本人かどうかです。CAPTCHAは人間かどうかを確かめるので、目的で区別します。
受験者つまり、「本人であることを確認」と書かれた選択肢は外せて、「人間かどうか」を確かめる説明がCAPTCHAということですね。
講師そうです。補足すると、CAPTCHAは会員登録や投稿フォームに置いて、自動プログラムによる大量の不正登録やスパム投稿を防ぐために使われます。歪んだ文字を読ませる従来の方式は、プログラムによる文字認識が進んだため以前ほど有効ではなくなりました。今は画像を選ばせる方式やパズル型、操作の挙動を解析する方式なども使われています。
まとめ
CAPTCHAは、Webサイトにアクセスしているのが人間か自動プログラムかを判別する仕組みで、アクセスした者に課題への応答を求め、その応答を分析して判定します。特定の個人を確かめる本人認証ではないため、「利用者が本人であることを確認」と書かれたワンタイムパスワードやチャレンジレスポンス認証の説明は当てはまりません。プレースホルダでSQL文を組み立てる仕組みは、SQLインジェクション対策です。問いかけと応答を使う点が似ているチャレンジレスポンス認証とは、「人間かどうか」と「本人かどうか」という目的の違いで区別するのがポイントです。
解答・解説
正解はアです
この問題のテーマ
CAPTCHAが何をする仕組みかを問う問題です。似た言い回しの「本人であることの確認」とは目的が違う点を見分けられるかがポイントです。
解き方の考え方
CAPTCHAは、アクセスしているのが人間か自動プログラムかを見分ける仕組みです。まず各選択肢が「何を確認しようとしているか」を見ます。イはSQL文の組み立て方の話で、認証とは関係がありません。ウとエは「利用者が本人であること」を確認する認証方式です。人間かどうかを判別する説明はアだけなので、アを選べます。
選択肢ごとの解説
- ○ア 人からのアクセスであることを確認できるよう,アクセスした者に応答を求め,その応答を分析する仕組み人からのアクセスであることを確かめるため、アクセスした者に応答を求めて、その応答を分析するという説明は、CAPTCHAの説明そのものです。歪んだ文字の読み取りや画像の選択といった課題を出し、人間らしい応答かどうかで判定します。
- ×イ 不正なSQL文をデータベースに送信しないよう,Webサーバに入力された文字列をプレースホルダに割り当ててSQL文を組み立てる仕組み入力された文字列をプレースホルダに割り当ててSQL文を組み立てる説明は、バインド機構の説明です。これはSQLインジェクションへの対策で、アクセスしているのが人間かどうかを判別するものではありません。
- ×ウ 利用者が本人であることを確認できるよう,Webサイトから一定時間ごとに異なるパスワードを要求する仕組み一定時間ごとに異なるパスワードを求める説明は、ワンタイムパスワードです。利用者が本人であることを確認する認証方式なので、人間か機械かを見分けるCAPTCHAとは目的が違います。
- ×エ 利用者が本人であることを確認できるよう,乱数をWeb サイト側で生成して利用者に送り,利用者側でその乱数を鍵としてパスワードを暗号化し,Web サイトに送り返す仕組みサイト側が生成した乱数を利用者に送り、利用者がその乱数を鍵にしてパスワードを暗号化して返す説明は、チャレンジレスポンス認証です。これも利用者本人を確認するための認証で、CAPTCHAには当たりません。
補足
エのチャレンジレスポンス認証も「相手に問いかけて応答を確かめる」点ではCAPTCHAと似ているため、ひっかかりやすい選択肢です。何を確認するためか(人間かどうか、それとも本人かどうか)で区別してください。なお、歪んだ文字画像を読ませる従来の方式は、プログラムによる文字認識が進んだため以前ほど有効ではなくなりました。現在は、画像を選ばせる方式やパズル型、操作の挙動を解析する方式なども使われています。
POINT
- CAPTCHAは、アクセスしているのが人間か自動プログラムかを判別する仕組みです。
- CAPTCHAは特定の個人を確かめる本人認証ではないので、「本人であることを確認」と書かれた選択肢は外せます。
- 会員登録や投稿フォームに置き、自動プログラムによる大量の不正登録やスパム投稿を防ぐために使われます。
- プレースホルダによるSQL文の組立てはSQLインジェクション対策、時間ごとに変わるパスワードはワンタイムパスワード、乱数を使った応答はチャレンジレスポンス認証です。
