SC Workbook
科目 A-2 · セキュリティ

ID トークンの差替え攻撃

RP A と RP B は,同じ OP を利用する OpenID Connect の RP である。攻撃者は,自らが運営する RP B に利用者をログインさせ,OP が RP B 向けに発行した ID トークンを入手した。この ID トークンを RP A に提示して,利用者になりすまそうとしている。ID トークンは OP が数分前に発行したもので,OP の正当なデジタル署名が付いている。RP A がこの攻撃を検知するために確認すべき事項として,最も適切なものはどれか。

  1. アiss クレームの値が,利用している OP の発行者識別子と完全に一致すること
  2. イOP が公開している公開鍵を用いて,ID トークンのデジタル署名を検証できること
  3. ウiat クレームが示す発行時刻が,現在時刻から大きく離れていないこと
  4. エaud クレームに自らの client_id が含まれ,信頼しない受信者が含まれていないこと
正解と解説を見る

正解 エ

この問題の基礎知識

  • OpenID Connect では,OP(OpenID プロバイダ)が利用者を認証し,RP(リライングパーティ)向けに認証結果を表す ID トークンを JWT 形式で発行する。
  • ID トークンの主なクレームには,iss(発行者),sub(利用者の識別子),aud(発行先の RP の client_id),exp(有効期限),iat(発行時刻),nonce(リプレイ攻撃対策の値)がある。
  • デジタル署名の検証で確かめられるのは,トークンが正当な発行者によって作られ改ざんされていないことであり,そのトークンがどの受信者に向けて発行されたかは別のクレームで確かめる。
アiss クレームの値が,利用している OP の発行者識別子と完全に一致すること

iss の検証は,信頼する OP 以外が発行したトークンを拒否するためのものである。この ID トークンは RP A も利用している同じ OP が発行したものなので,iss は一致し,攻撃を検知できない。

イOP が公開している公開鍵を用いて,ID トークンのデジタル署名を検証できること

署名の検証は,トークンが OP によって発行され改ざんされていないことを確かめるものである。RP B 向けのトークンも同じ OP の正当な署名をもつので,検証は成功し,攻撃を検知できない。

ウiat クレームが示す発行時刻が,現在時刻から大きく離れていないこと

iat は発行から時間がたち過ぎたトークンを拒否するために使えるが,この ID トークンは数分前に発行されたものなので,許容範囲内として受け入れられてしまう。

エaud クレームに自らの client_id が含まれ,信頼しない受信者が含まれていないこと正解

aud には ID トークンの発行先の RP の client_id が入る。RP B 向けのトークンの aud は RP B の client_id なので,RP A は自らが受信者でないことから拒否できる。OpenID Connect Core はこの検証を必須としている。

検証用の出典出典照合済み
OpenID Connect Core 1.0 incorporating errata set 2(3.1.3.7 ID Token Validation,16.11 Token Substitution) / RFC 7519 JSON Web Token (JWT)
照合の根拠(5 件)

トークンは同じ OP が数分前に正当に署名して発行したので iss・署名・iat の検証はすべて通り,RP A と RP B で異なるのは aud(発行先の client_id)だけである。

問題 ID A2-SEC-0513 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。