【情報処理安全確保支援士試験 令和4年度 春期 午後2 問2 No.5】
情報処理安全確保支援士試験 令和4年度 春期 午後2 問2
【出典:情報処理安全確保支援士試験 令和4年度 春期 午後2 問2(一部、加工あり)】
[企画チームからの要望]
Cさんは、企画チームから要望を受けた。要望は、T社が運営しているメッセージ投稿サイト(以下、T社投稿サイトという)とX社動画サーバとを連携させ、T社投稿サイトの認証サーバを用いた認証機能、及びT社投稿サイトの投稿サーバへの自動投稿機能をX社動画サーバに追加したいというものだった。この要望に対応することで、T社投稿サイトのアカウントをもつ動画サービスの会員は、T社投稿サイトにログインすればX社動画サーバも利用できる。また、X社動画サーバに動画を投稿すると、”動画の概要”がT社投稿サイトに自動で投稿されるようにもできる。Cさんは、T社投稿サイトとX社動画サーバの連携方法について、F氏に助言を求めた。次は、その際のF氏とCさんの会話である。
F氏:OpenID Connect(以下、OIDCという)を用いれば、T社投稿サイトとX社動画サーバを連携できます。例えば、図10のような流れです。
F氏:認可コードフローの場合、IDトークンは、図10中の(u)で送付されます。IDトークンは、JSON Web Token形式で表現され、ヘッダ、ペイロード、署名の三つの部分で構成されます。署名は、ヘッダとペイロードに対して、T社投稿サイトの認証サーバの秘密鍵を使って作成します。署名アルゴリズムは、ヘッダにおいて指定します。ヘッダ、ペイロード、署名は、それぞれ(v)でエンコードされます。
Cさん:T社投稿サイトでのセキュリティ対策について確認することはありますか。
F氏:ハイブリッドフローを用いる場合、stateパラメタのほか、nonce値を実装しているかを確認すべきです。まず、nonce値を生成し、(w)に含めて送信します。次に、送られてきた(x)に含まれるnonce値を検証することで、攻撃者によるIDトークンの不正利用を防ぐことができます。
Cさん:分かりました。
システム部は、T社投稿サイトと動画サービスとを、OIDCで連携することに決め、X社動画サーバの改修に着手した。
r:X社動画サーバ、s:T社投稿サイトの認証サーバ、t:T社投稿サイトの投稿サーバ
図10で示されるT社投稿サイトとX社動画サーバの連携について改めて問題文を確認します。
- T社投稿サイトの認証サーバを用いた認証機能、及びT社投稿サイトの投稿サーバへの自動投稿機能をX社動画サーバに追加する
- T社投稿サイトのアカウントをもつ動画サービスの会員は、T社投稿サイトにログインすればX社動画サーバも利用できる
- X社動画サーバに動画を投稿すると、”動画の概要”がT社投稿サイトに自動で投稿されるようにもできる
この内容から図10の流れを確認していくと、まず⑶⑷の認証機能を行う(S)のは、T社投稿サイトの認証サーバであることが分かります。
そして、最後の「APIを使った”動画の概要”の投稿」は、X社動画サーバ(r)からT社投稿サイトの投稿サーバ(t)への通信でしょう。
u:⑻
「認可コードフローの場合、IDトークンは、図10中の(u)で送付されます。」
OIDC(OpenID Connect)について理解できていなくても、問題文からヒントを探していけば解ける問題は多いので、諦めずに臨みましょう。
IDトークンについては、「IDトークンは、JSON Web Token形式で表現され、ヘッダ、ペイロード、署名の三つの部分で構成されます。署名は、ヘッダとペイロードに対して、T社投稿サイトの認証サーバの秘密鍵を使って作成します。」とあるように、T社投稿サイトの認証サーバ(s)で作成されることが分かります。
T社投稿サイトの認証サーバ(s)で作成されるのは、図10の⑶認証要求、⑺トークン要求がありますが、IDトークンは⑺が該当し、⑻トークン応答で送付されるのでしょう。
v:base64url
「ヘッダ、ペイロード、署名は、それぞれ(v)でエンコードされます。」
JSON web Token形式のエンコード方式についての知識問題です。
正解はbase64urlですが、これはbase64(←電子メールで使われ、元のデータを64個の文字(a-z,A-Z,0-9,+,/)とパディング(データの余った部分を詰める)として=を使う)をURL中で利用できる文字に変更したものです。(+を-、/を_、=を削除)
w:認証要求、x:IDトークン
「まず、nonce値を生成し、(w)に含めて送信します。次に、送られてきた(x)に含まれるnonce値を検証することで、攻撃者によるIDトークンの不正利用を防ぐことができます。」
こちらもnonce値に関する知識問題ですが、諦めずに取り組みましょう。
目的は攻撃者によるIDトークンの不正利用で、X社動画サーバとT社投稿サイトで正規に発行されたデータをやり取りする仕組みとしてnonce値を使うということでしょう。
図10の流れから、最初にX社動画サーバでnonce値を生成し、T社投稿サイトからの応答データ中にnonce値を含めることで、一連の正規な通信であるかどうかを検証できそうです。
したがって、X社動画サーバで生成したnonce値を⑵リダイレクトに含めて利用者に送信し、利用者はT社認証サーバへの⑶認証要求にnonce値を含めて送信。
そして、T社認証サーバが⑻トークン応答に当該nonce値を含めてX社動画サーバに送信することで、X社動画サーバでnonce値が正規なものであるかどうかを検証することができます。