令和3年(2021年)春期の情報処理安全確保支援士試験「午後Ⅰ 問1:認証システムの開発」を解説します。Sサービス・Tサービス・利用者の役割を整理し、ID連携、要求する権限、stateによるセッションの確認を問題文に沿って読み解きます。
まず自分の解答と、その根拠になる本文・図の箇所をメモしてから、解答例と比べてください。この記事は当時の問題の学習用解説です。現在の試験構成や、本番サービスのOAuth実装手順とは分けて読んでください。
情報処理安全確保支援士(SC) 問題文|問1
さめじん解説に入る前に、まずは問題文を読みましょう!
情報処理安全確保支援士の午後問題を攻略するには、長文問題である文章を短時間で読み、内容を理解できるようになる必要があります。
その力を身に付けるには、練習あるのみです!
当記事では「IPA公式:情報処理安全確保支援士 令和3年春期 午後Ⅰ問題」「IPA公式:情報処理安全確保支援士 令和3年春期 午後Ⅰ解答例」を引用元として使っております。












問題画像の文字が小さい場合は、上のIPA公式PDFを開いて拡大してください。以下の問題・解答画像は同PDFからの引用で、解説用画像には強調などの加工を含みます。


Tサービスで認証し、Sに与える権限を確認する。
認可コードをトークンと交換し、許可されたTの情報へアクセスする。
認可コードやトークンを発行し、権限の範囲でアカウント情報を提供する。
IPAの本問とRFC 6749を基に当ブログが整理した図です。Tサービスが認可サーバとリソースサーバの役割を担います。
情報処理安全確保支援士(SC) 解答例&解説|問1


設問1




多要素認証の実装をSサービス側に用意しなくてよい。
設問1(1)は、下線①である「S認証モジュールの代わりにTサービスとのID連携を利用することにはどのような利点と欠点があるか」の利点に関して、具体的に述べる問題です。



この問題の解答に必要な情報は[Sサービスの改修]の段落に2か所、記載されております。
- Sサービスの認証モジュールの認証方式を多要素認証にする方がよいとアドバイスを受けたが、その対処が課題であった。
- そこで多要素認証などの機能をもつT社のサービスとSサービスとをID連携する改修をCEOのX氏に提案した。
上記2つを30文字以内でまとめると「多要素認証の実装をSサービス側に用意しなくてよい。」となります。
Sサービスが多要素認証を実装する課題と、Tサービスが既にもつ機能を結び付けます。「何を自前で用意しなくてよくなるか」を、指定された字数に収めるのがポイントです。


Tサービスの障害時にSサービスを利用できない
設問1(2)は、下線①である「S認証モジュールの代わりにTサービスとのID連携を利用することにはどのような利点と欠点があるか」の可用性の欠点に関して、具体的に述べる問題です。



ここでいう可用性とは、Sサービスを障害やメンテナンスよる中断・利用停止させずに稼働できることであります。
現在のSサービスの可用性は、Sサービス単体での可用性ですが、TサービスとのID連携により、Sサービスの可用性だけでなく、Tサービスの可用性の影響も受けるため、Tサービスの障害発生やメンテナンスによるTサービスの中断が発生すると、Sサービスが正常であったとしても、利用者はSサービスを利用できなくなります。
この内容を30文字以内で簡潔にまとめると「Tサービスの障害時にSサービスを利用できない」となります。


【a】ア
【b】イ
【c】ウ





設問1(3)は、リソースを利用する側・提供する側・権限を許可する人を分けて考えます。
SサービスはTサービスの情報へアクセスするクライアントです。Tサービスはその情報を提供し、利用者は自分の情報へのアクセスを許可するリソースオーナーに当たります。
したがって、【a】はア:Sサービス、【b】はイ:Tサービス、【c】はウ:利用者です。「利用者が、Tサービスの情報へアクセスする権限をSサービスに与える」と読み直すと、付与先を取り違えにくくなります。


【α】(え)



【α】には、【c:利用者】は【a:Sサービス】に与える権限をどのタイミングで確認するかを答える問題です。
図2で唯一、当てはまるのは、そのまんまですが「(え):認証、権限付与の確認」となります。
設問2




【d】ウ
【e】ア


この設問は[一つ目の問題]に記載されてある「Sサービスにログインしていない利用者が攻撃者の用意した罠サイトにアクセスすると、図4中に示す…」の攻撃の仕組みについて解答する問題です。





まずは考えやすい【e】から取り組みます。SサービスからTサービスへの【e】に対して、アクセストークンの応答があります。
これを図2で探してみると、【e】は「(き)アクセストークンの要求」と対応していることが分かります。
同様に【d】についても図2から探すと「(お)、(か)の認可コード」が対応していることが分かります。
あとは記号を間違えないように解答すれば得点できます!


・ファイルのアップロード:攻撃者
・ファイルのダウンロード:攻撃者



この設問は「下線②:利用者が攻撃を受けているとは知らずにSサービスにファイルをアップロードすると、そのファイルを攻撃者にダウンロードされてしまう」おそれがある。という文章の中で出てくるファイルのアップロードとダウンロードがTサービスの誰のアカウントによって行われるかを答える問題です。
下線②の前には設問2(1)にも出てきた「Sサービスにログインしていない利用者が攻撃者の用意した罠サイトにアクセスすると、図4中に示す…」に気付いたうえで図4を読むと攻撃者のアカウントでログインしていることが図4中の「認証、権限付与の確認」から読み取ることができ、その状態でファイルをアップロードしていることから、まずアップロードは「攻撃者」のアカウントによって実施されていることが分かります。
また、ファイルのダウンロードに関しても下線②に示す通りで「攻撃者」となります。


【β】(い)
【γ】(か)









まずは、βについて考えてみましょう!
問題文では、Sサービスが推測困難なstateを付け、戻ってきたメッセージが、そのstateを付けたときと同じセッションかを確認します。送信相手の名前だけを比べる対策ではありません。
図2では(い)の認可要求を送るときにstateをセッションと対応付け、(か)の認可コードを受け取ったときに、返されたstateとその対応関係を検証します。したがってβは(い)、γは(か)です。
攻撃者が始めた認可処理の結果を、別の利用者のセッションで受け入れないための確認です。RFC 6749の10.12節も、推測困難な値と利用者側の状態を結び付けるCSRF対策を説明しています。これは本問の解説であり、stateの照合だけで現在のOAuth実装全体が安全になるという意味ではありません。
設問3




(エ)







それぞれの権限について考えてみましょう!
(ア) 問1の問題文の序盤に「また、Sサービス内でメッセージや”いいね”を送信できる。」という記載があります。よって、Tサービスに要求する権限は不要と判断できます。
(イ) (ア)と同様にTサービスに要求する権限は不要と判断できます。
(ウ) 利用者に代わってTサービスへ投稿する権限です。本問のSサービスはTサービスのアカウント情報を使ってID連携するため、投稿権限まで求める必要はありません。
(エ) Tサービスに登録されたアカウント名などをSサービスが取得するための権限です。利用者の認可を受けて、SサービスがTサービスの情報へアクセスする権限を得るので、必要最小限の権限として(エ)を選びます。権限の付与先をTサービスと逆にしないようにしましょう。


S認証モジュールに利用者IDとパスワードを登録していないS会員


SサービスとTサービスとのID連携については、問1の問題文の序盤にある[Sサービスの改修]の中に以下の記述があります。





上記を要約するとID連携した後のS会員を2種類に分けることができます。
- TサービスとのID連携の対象外となる既存S会員
- TサービスとのID連携の対象となる新規S会員



ここで「TサービスとのID連携の対象となる新規S会員」と答えたいところですが、もう少し考えてみましょう!
既存S会員は、S認証モジュールを用いて認証を行うのでSサービス利用することが可能です!
それに対して、新規S会員は、S認証モジュールに利用者IDとパスワードを登録せず、Tサービスでのアカウントを用いる必要があります。
TサービスとのID連携を一時停止すると、S認証モジュールに利用者IDとパスワードを登録していない会員は、代わりの認証手段を使えません。この条件を述べたものが、上のIPA公式解答例です。
設問4


Tサービスで認証されたS会員のT-IDが、Sサービス内に登録されていることを確認する。





この問題を解くには図2にこっそり隠れてある以下の注記を読み解く必要があります!


この内容から、全面改修によるS認証モジュールを停止した後は、全てのS会員がT-IDをSサービスに登録した状態となります。
また、図2の(こ)のメッセージにより、Tサービスから取得するT-IDをSサービス内に登録済みであるか?により、利用者を認証することになります。
よって、この設問の答えは「Tサービスで認証されたS会員のT-IDが、Sサービス内に登録されていることを確認する。」となります。
解答の根拠を説明できる教材を選ぶ


問題集を追加する前に、今ある教材で「図のどこが根拠か」「別の権限ではなぜ不要か」まで説明できるかを確認しましょう。解説が足りなければ、目次・サンプル・対象年度を比べて補う教材を選びます。
以下は午後対策の教材候補です。購入前に販売先で版・収録問題・価格を確認してください。現在の試験への対応範囲は、発行年だけで判断せず、出版社の案内やサンプルも確認しましょう。
参考書・問題集を役割ごとに比べたい方は、次の記事も参考にしてください。


まとめ:役割・権限・セッションを分けて復習する


本問の振り返りは、①誰がどの情報を利用するか、②そのために必要な最小限の権限は何か、③認可処理と利用者のセッションをどう対応付けるか、の3点です。正解の記号だけでなく、問題文の条件を使って説明してみてください。



