CAPTCHAは何を確かめる?本人認証との違いを整理
情報セキュリティマネジメント試験 平成31年度春期 午前 問21 / セキュリティ › 情報セキュリティ
過去問にチャレンジ
Webサイトで利用されるCAPTCHAに該当するものはどれか。
- ア
人からのアクセスであることを確認できるよう,アクセスした者に応答を求め,その応答を分析する仕組み
- イ
不正なSQL文をデータベースに送信しないよう,Webサーバに入力された文字列をプレースホルダに割り当ててSQL文を組み立てる仕組み
- ウ
利用者が本人であることを確認できるよう,Webサイトから一定時間ごとに異なるパスワードを要求する仕組み
- エ
利用者が本人であることを確認できるよう,乱数を Web サイト側で生成して利用者に送り、利用者側でその乱数を鍵としてパスワードを暗号化し,Web サイトに送り返す仕組み
会話形式の解説
講師今回はCAPTCHAの問題です。注目してほしいのは、各選択肢が「何を確認している仕組みか」という点です。
受験者CAPTCHAは、ログインのときに歪んだ文字を入力させられるものですよね。ログイン画面で見かけるので、本人確認の一種だと思っていました。
講師そこが混同しやすいところです。CAPTCHAが判定するのは、操作しているのが人なのか、プログラムによる自動処理なのか、という点です。「誰が」操作しているかは確かめていません。
受験者人か機械か、ですか。そうすると、アクセスした者に応答を求めて、その応答を分析するという説明が当てはまりそうです。
講師そのとおりです。人には答えやすく、自動処理には答えにくい課題を出して、その応答から人による操作かどうかを判断します。歪んだ文字の入力がまさにその例です。
受験者一定時間ごとに異なるパスワードを求める仕組みも、自動処理を防げそうなので少し迷いました。
講師それはワンタイムパスワードの一種です。目的は利用者が本人かどうかを確かめる本人認証なので、CAPTCHAとは違います。選択肢にも「本人であることを確認できるよう」と書かれていますね。
受験者乱数を鍵にしてパスワードを暗号化して送り返す仕組みにも、同じ言い回しがあります。こちらも本人認証ということですか。
講師はい。サイト側が送った乱数、つまりチャレンジを使ってパスワードを加工し、送り返させるチャレンジレスポンス認証です。パスワードをそのまま送らずに本人を確認する方式で、やはりCAPTCHAとは目的が異なります。
受験者残りのプレースホルダを使ってSQL文を組み立てる仕組みは、データベースの話なので別物だと思いました。
講師正しい判断です。これは入力値をプレースホルダに結び付けるバインド機構の説明で、SQLインジェクション、つまり不正なSQL文を実行させる攻撃への対策です。人と機械を見分けるものではありません。
受験者整理すると、CAPTCHAは人か機械かの判定、ワンタイムパスワードとチャレンジレスポンス認証は本人認証、プレースホルダへのバインドはSQLインジェクション対策ということですね。
講師よくまとまっています。補足すると、CAPTCHAはアカウントの自動登録やスパム投稿を抑えるために使われます。文字入力のほか、条件に合う画像を選ばせる方式や、利用者の行動を解析する方式もありますが、自動処理を完全に排除できるわけではありません。CAPTCHAの問題では「本人であることを確認」という言い回しが、本人認証の選択肢を見分ける手がかりになります。
まとめ
CAPTCHAは、操作しているのが人なのかプログラムによる自動処理なのかを見分ける仕組みで、人には答えやすく機械には答えにくい課題への応答を分析します。操作している個人の身元を確かめるものではありません。一定時間ごとに変わるワンタイムパスワードや、乱数を使ってパスワードを加工するチャレンジレスポンス認証は本人認証の技術です。プレースホルダに入力値をバインドする方法はSQLインジェクション対策です。選択肢の「本人であることを確認」という言い回しが、本人認証とCAPTCHAを見分ける手がかりになります。
解答・解説
正解はアです
この問題のテーマ
CAPTCHAが何のための仕組みかを理解し、SQLインジェクション対策や本人認証の技術と区別できるかを問う問題です。
解き方の考え方
まず、CAPTCHAの目的を思い出します。CAPTCHAは「人の操作かプログラムによる自動処理か」を見分けるもので、「誰が操作しているか」を確かめるものではありません。そこで各選択肢が何を確認しているかを見ます。人か機械かを判定している説明を選べば、ほかの選択肢は除外できます。
選択肢ごとの解説
- ○ア 人からのアクセスであることを確認できるよう,アクセスした者に応答を求め,その応答を分析する仕組みアの「アクセスした者に応答を求め、その応答を分析する」という説明は、CAPTCHAの仕組みそのものです。画像の中の歪んだ文字を入力させるなど、人には答えやすく自動処理には答えにくい課題を出し、その応答から人による操作かどうかを判断します。
- ×イ 不正なSQL文をデータベースに送信しないよう,Webサーバに入力された文字列をプレースホルダに割り当ててSQL文を組み立てる仕組みイの、入力された文字列をプレースホルダに割り当ててSQL文を組み立てる仕組みは、バインド機構(プリペアドステートメント)の説明です。これはSQLインジェクションへの対策であり、人と機械を見分けるものではありません。
- ×ウ 利用者が本人であることを確認できるよう,Webサイトから一定時間ごとに異なるパスワードを要求する仕組みウの、一定時間ごとに異なるパスワードを使う仕組みは、ワンタイムパスワードの一種です。目的は利用者が本人かどうかを確かめる本人認証なので、CAPTCHAには当たりません。
- ×エ 利用者が本人であることを確認できるよう,乱数を Web サイト側で生成して利用者に送り、利用者側でその乱数を鍵としてパスワードを暗号化し,Web サイトに送り返す仕組みエの、サイト側が送った乱数を使ってパスワードを加工し、送り返させる仕組みは、チャレンジレスポンス認証です。パスワードをそのまま送らずに本人を確認する方式で、CAPTCHAとは目的が異なります。
補足
CAPTCHAには、文字の入力のほかに、条件に合う画像を選ばせる方式や、利用者の行動を解析する方式もあります。ただし、自動処理を完全に排除できるわけではありません。ウやエのように「本人であることを確認」と書かれた選択肢は本人認証の説明なので、CAPTCHAの問題ではこの言い回しが見分けるときの手がかりになります。
POINT
- CAPTCHAは、人の操作とプログラムによる自動処理を見分けるための仕組みです。
- CAPTCHAが判定するのは人か機械かであり、操作している個人の身元を証明するものではありません。
- CAPTCHAは、アカウントの自動登録やスパム投稿を抑えるために使われます。
- プレースホルダ(バインド機構)はSQLインジェクション対策で、ワンタイムパスワードとチャレンジレスポンス認証は本人認証の技術です。
