ホーム > 情報処理安全確保支援士試験 > 2012年 秋期
情報処理安全確保支援士試験 2012年 秋期 午前2 問20
HTTPの認証機能を利用するクライアント側の処理として,適切なものはどれか。
ア:ダイジェスト認証では,利用者IDとパスワードを“:“で連結したものを,MD5を使ってエンコードしAuthorizationヘッダで指定する。
イ:ダイジェスト認証では、利用者IDとパスワードを“.”で連結したものを,SHAを使ってエンコードしAuthorizationヘッダで指定する。
ウ:ベーシック認証では,利用者IDとパスワードを“:”で連結したものを,BASE64でエンコードしAuthorizationヘッダで指定する。(正解)
エ:ベーシック認証では,利用者IDとパスワードを“:”で連結したものを,エンコードせずにAuthorizationヘッダで指定する。
解説
HTTPの認証機能を利用するクライアント側の処理【午前2 解説】
要点まとめ
- 結論:ベーシック認証では利用者IDとパスワードを「:」で連結し、BASE64でエンコードしてAuthorizationヘッダに指定します。
- 根拠:HTTPベーシック認証の仕様(RFC 7617)により、認証情報は「ユーザ名:パスワード」の形式でBASE64エンコードされます。
- 差がつくポイント:ダイジェスト認証とベーシック認証の違いを正確に理解し、エンコード方法や連結文字の違いを押さえることが重要です。
正解の理由
選択肢ウは、ベーシック認証のクライアント側処理を正確に表しています。ベーシック認証では、ユーザIDとパスワードを「:」で連結し、その文字列をBASE64でエンコードしてAuthorizationヘッダにセットします。これにより、サーバはAuthorizationヘッダをデコードして認証情報を取得します。
よくある誤解
ダイジェスト認証とベーシック認証の違いを混同し、エンコード方法や連結文字を誤って覚えてしまうことが多いです。特に、ベーシック認証でMD5やSHAを使うという誤解がよく見られます。
解法ステップ
- HTTP認証の種類(ベーシック認証とダイジェスト認証)を確認する。
- ベーシック認証は「ユーザID:パスワード」をBASE64エンコードする仕様であることを思い出す。
- ダイジェスト認証はMD5ハッシュを用いるが、連結文字や処理方法が異なることを理解する。
- 選択肢の記述と仕様を照らし合わせて正しいものを選ぶ。
選択肢別の誤答解説
- ア: ダイジェスト認証はMD5を使うが、「:」で連結した文字列をそのままMD5でエンコードするわけではなく、nonceやリクエスト情報も含めた複雑なハッシュ計算を行います。
- イ: ダイジェスト認証で「.」で連結しSHAを使うのは誤りです。SHAは標準仕様では使われず、連結文字も「:」が一般的です。
- ウ: ベーシック認証の正しい処理を示しており、正解です。
- エ: ベーシック認証で認証情報をエンコードせずに送信することはなく、必ずBASE64エンコードが必要です。
補足コラム
HTTP認証には主にベーシック認証とダイジェスト認証があります。ベーシック認証は実装が簡単ですが、BASE64は暗号化ではなく単なるエンコードなので安全性は低いです。一方、ダイジェスト認証はハッシュを用いてパスワードを直接送信しないため、より安全性が高いとされています。
FAQ
Q: ベーシック認証のBASE64エンコードは安全ですか?
A: BASE64は暗号化ではなく単なるエンコードなので、通信が暗号化されていない場合は盗聴のリスクがあります。HTTPSと併用が推奨されます。
A: BASE64は暗号化ではなく単なるエンコードなので、通信が暗号化されていない場合は盗聴のリスクがあります。HTTPSと併用が推奨されます。
Q: ダイジェスト認証はどのようにパスワードを保護していますか?
A: パスワードを直接送信せず、nonceやリクエスト情報と組み合わせたMD5ハッシュを送信することで安全性を高めています。
A: パスワードを直接送信せず、nonceやリクエスト情報と組み合わせたMD5ハッシュを送信することで安全性を高めています。
関連キーワード: HTTP認証, ベーシック認証, ダイジェスト認証, Authorizationヘッダ, BASE64エンコード, MD5ハッシュ