応用情報技術者 2022年 春期 午前2 問38
問題文
チャレンジレスポンス認証方式に該当するものはどれか。
選択肢
ア:固定パスワードを、TLS による暗号通信を使い、クライアントからサーバに送信して、サーバで検証する。
イ:端末のシリアル番号を、クライアントで秘密鍵を使って暗号化し、サーバに送信して、サーバで検証する。
ウ:トークンという機器が自動的に表示する、認証のたびに異なる数字列をパスワードとしてサーバに送信して、サーバで検証する。
エ:利用者が入力したパスワードと、サーバから受け取ったランダムなデータとをクライアントで演算し、その結果をサーバに送信して、サーバで検証する。(正解)
🔒 解説は解答すると表示されます
チャレンジレスポンス認証【午前2解説】
正解の理由
チャレンジ・レスポンス認証は、認証時にサーバが一意のランダム値(チャレンジ、nonce)を送り、クライアントがそのチャレンジと自身の秘密情報を用いて演算した値(レスポンス)を返し、サーバ側で同様の演算により照合する方式です。選択肢のうち、サーバから受け取ったランダムなデータと利用者パスワードをクライアントで演算して結果を送る構成はまさにこの方式を示しているため、エが正解です。チャレンジを用いる点が決定的に重要で、これによりリプレイ攻撃に強く、サーバに平文のパスワードを送らない方式が実現されます。
解法ステップ
- 問題文の各選択肢で「サーバがランダムなデータ(チャレンジ)を送っているか」「クライアントがそれに応答して演算を行っているか」を探す。
- チャレンジが存在し、クライアント側で秘密情報と組み合わせて演算し、その結果を返している記述があればチャレンジ・レスポンス方式である。
- チャレンジが無く、クライアントが単に固定値やトークンで生成された値を送るものはワンタイムパスワード(OTP)や固定認証であり、チャレンジ・レスポンスではないと判定する。
この問題では、上記1〜2の条件を満たすのが エ の記述のみです。
選択肢別の誤答解説
- ア: 固定パスワードを TLS で送る方式。TLS が通信を守るが、認証プロトコル自体は固定パスワード送信であり、サーバからのチャレンジ・レスポンスを用いていないため該当しない。リプレイやサーバ側のパスワード保護の観点で弱点がある(平文送信しない点は救済になっているが方式分類としては違う)。
- イ: 端末のシリアル番号をクライアントの秘密鍵で暗号化して送る方式。これは「所有証明」や「署名」に近いが、サーバが事前にランダムチャレンジを出していないためチャレンジ・レスポンスとは呼べない。静的データの暗号化はリプレイ対策が不足する(対策としてはチャレンジやタイムスタンプの導入が必要)。
- ウ: トークンが自動表示する毎回異なる数字列(ワンタイムパスワード)を送る方式。これは TOTP/HOTP のようなチャレンジを必要としないワンタイムパスワード方式であり、サーバ側のチャレンジに応答する構造ではないためチャレンジ・レスポンス方式ではない。トークンがチャレンジを受け取って応答するタイプ(チャレンジ-レスポンストークン)とは区別される。
- エ: 利用者の入力したパスワードとサーバからのランダムデータをクライアントで演算し、その結果を返す記述は、まさにチャレンジの存在とその応答による検証を示しているため正解。チャレンジを用いることでリプレイ耐性やパスワード非送信性が確保される。
よくある誤解
- OTP(ワンタイムパスワード)は全てチャレンジ・レスポンスだと思い込む誤り。TOTP/HOTP はサーバとトークンが時間やカウントで同期して独立にコードを生成する「チャレンジ不要」の方式であり、チャレンジ・レスポンスとは別物です。一方で、サーバのチャレンジにトークンが応答する「チャレンジ-レスポンストークン」も存在します(種類を区別して理解すること)。
- Kerberos を単純にチャレンジ・レスポンスの代表例とする誤り。Kerberos はチケットやタイムスタンプを使う認証フレームワークで、用途や仕組みが異なるので「場合によっては異なる」と明確化して扱うべきです。
- 「秘密鍵で暗号化すれば常に安全」ではない点。静的な値をそのまま送るとリプレイ攻撃を受ける可能性があるため、チャレンジやタイムスタンプを組み合わせることが重要です。
補足コラム
チャレンジ・レスポンス方式の典型例と特徴
- 代表的プロトコル例:CHAP(Challenge-Handshake Authentication Protocol)、SRP(Secure Remote Password)、S/Key(ワンタイムパスワード系だがチャレンジを用いる実装も存在)。これらはサーバ発行のチャレンジとクライアント側の秘密を組み合わせてレスポンスを生成します。
- 一般的なレスポンス生成例(概念式): ここで K はクライアントの秘密、nonce はサーバが発行するランダム値、HMAC はハッシュベースの MAC。
- 実装上の注意点:チャレンジは十分に長くランダムで一意であること、サーバ側は期待されるレスポンスを同じ方法で計算して比較すること、及び中間者(MitM)攻撃やリプレイに対する追加対策(相互認証、TLS併用など)を設けることが重要です。
簡単な Python 例(概念):
import hmac, hashlib
def make_response(secret_key: bytes, nonce: bytes) -> str:
return hmac.new(secret_key, nonce, hashlib.sha256).hexdigest()
FAQ
Q1: TOTP はチャレンジ・レスポンスですか?
A1: いいえ。TOTP(Time-based OTP)は時間同期に基づく方式で、サーバがその都度チャレンジを送っていないためチャレンジ・レスポンスとは分類されません。
A1: いいえ。TOTP(Time-based OTP)は時間同期に基づく方式で、サーバがその都度チャレンジを送っていないためチャレンジ・レスポンスとは分類されません。
Q2: Kerberos はチャレンジ・レスポンスに含まれますか?
A2: Kerberos はチケットやタイムスタンプを用いる認証フレームワークであり、必ずしも典型的なチャレンジ・レスポンス方式とは言えません。設計目的や手順が異なりますので区別して理解してください。
A2: Kerberos はチケットやタイムスタンプを用いる認証フレームワークであり、必ずしも典型的なチャレンジ・レスポンス方式とは言えません。設計目的や手順が異なりますので区別して理解してください。
Q3: トークンでもチャレンジ・レスポンスできますか?
A3: はい。トークンにも「チャレンジを受け取り応答するタイプ(challenge-response token)」と「独立にコードを生成するTOTP/HOTPタイプ」があるため、トークンの種類を確認する必要があります。
A3: はい。トークンにも「チャレンジを受け取り応答するタイプ(challenge-response token)」と「独立にコードを生成するTOTP/HOTPタイプ」があるため、トークンの種類を確認する必要があります。
関連キーワード: チャレンジレスポンス, nonce, HMAC, OTP, TOTP, HOTP, CHAP, SRP, S/Key, リプレイ対策

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

