ネットワークスペシャリスト・情報処理安全確保支援士に、最短・最速で合格する方法という記事を以前投稿しました。
最短・最速で合格する方法に沿ったかたちで問題解説を行っていきます。
今回は情報処理安全確保支援士の令和3年度 春季 午後Ⅰ 問1について解説を行います。
出題ジャンル:OAuth
出題されているジャンルとしてはOAuth(オーオース)です。
OAuthはサービス間の連携を行う仕組みのことです。
あるサービスにログインもしくはアカウントを新規作成する際に、
『Googleアカウントを使用する』、『Yahoo!アカウントを使用する』みたいに、
他社のサービスと連携することで認証を行うものです。
その他にもInstagramで投稿する際に、
一緒にTwitterなどへも投稿することができるというものもOAuthの一種です。
OAuthという単語だけ聞くと分かりづらいですが、
具体例を聞くとイメージしやすいかと思います。
今回の問題は『OAuth』を知らなくても、
論理的に考えてあげることで解答することができます。
情報処理安全確保支援士の午後問題は国語の問題であると、
証明することができる問題となっています。
設問1 (1)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_1png-1024x171.png)
ID連携することの利点を問われています。
問題文を読んでいきます。
![](https://shanai-neet.com/wp-content/uploads/2021/08/スクリーンショット-2021-08-08-23.02.01.jpg)
『多要素認証にする方がよいとのアドバイスを受けたが、その対処が課題であった』、
『多要素認証などの機能をもつT社のTサービスとSサービスをID連携する改修』、
という部分から、脆弱性診断の結果多要素認証にすべきとの診断結果でしたが、
S認証モジュールを改修するのではなく、
Tサービスと連携することで多要素認証を実現すると読み取れます。
そこで一つ疑問が生じます。
なぜS認証モジュールを改修しないのでしょうか。
改修しない(できない)考えられる理由として、
・開発力・技術力がない
連携することで多要素認証を開発・提供しなくてよい
仮に開発できたとしても脆弱性対応などで改修が必要となる
運用面でも負荷がかかり続ける
・コスト・資金的に厳しい
これらの点を総じてあげることで、
『自社で多要素認証を開発・提供しなくてよいという利点(25文字)』
という答えが導き出せるかと思います。
設問1 (2)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_2.png)
逆にID連携することの欠点を問われています。
従来はSサービスのみでしたが、
今後はTサービス(認証)、Sサービスのように2サービス絡むことになります。
2サービス絡むことで障害ポイントが増えます。
この点から、
『Tサービスの障害時にSサービスも影響を受けること(24文字)』
という答えが導き出せるかと思います。
状況は異なりますが、AWSなどに障害が発生すると、
ソシャゲや企業のWebサイトが閲覧不可能になります。
オンプレ環境つまりAWSを使用していなければ、
AWSの障害が発生したところで影響を受けませんが、
AWSを使用していたがために影響を受けたというようなイメージです。
この問題に関しては仮にこの考えやイメージを導くことができなくても、
文章からも解答を導くことができます。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_2_2.png)
少し先ですが、[二つ目と三つ目の問題]のところで、
『TサービスとのID連携を一時的に停止し、S認証モジュールだけで認証することにした。ただし、このとき一部のS会員はSサービスを利用できなくなる』
と記載があるので、Tサービスに障害が発生したらどうなる?と考えることで、
答えを導き出すことができるかと思います。
設問1 (3)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_3.png)
この問題は主語と目的語から判断することができるまさに国語の問題です。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_3_2.png)
空白の文章中に、『aはbが提供するリソースにアクセスできる。』と記載があります。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_3_3.png)
図2のシーケンスを確認すると、
SサービスがTサービスのアカウント名(リソース)の要求を行っています。
この点から『a=Sサービス(ア)』、『b=Tサービス(イ)』と判断し、
残った『c=利用者(ウ)』ということが導き出せるかと思います。
設問1 (4)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_4.png)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_4_2.png)
『c(利用者)はa(Sサービス)に与える権限を図2中のαの通信の際に確認する』、
と記載があります。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問1_4_3.png)
利用者とSサービスの通信の際に権限を確認しているようなものはあるかと、
図2を確認してみると『(え)認証、権限付与の確認』と記載がありますので、
こちらがそのまま答えとなります。
設問2 (1)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_1.png)
図2と図4を照らし合わせながら確認をしていきます。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_1_2.png)
図2ではTサービスから認可コードが送られてきたら、
利用者はSサービスにリダイレクトして送付を行っています。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_1_3.png)
図4でも『リダイレクト』の記載があるように、
『d=認可コード(ウ)』と判断できるかと思います。
認可コードを受け取ったSサービスが次に何を行っているかというと、
図2では『アクセストークンの要求』が行われていますので、
図4でも同じように『e=アクセストークンの要求(ア)』と判断できます。
設問2 (2)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_2.png)
問題文中や図中に登場する人物としては、
利用者か攻撃者しかいませんのでこの2択になります。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_2_2.png)
『Sサービスにログインしていない利用者が攻撃者の用意した罠サイトにアクセスすると』と記載がありますので、利用者はSサービスにログインをしていません。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_2_3.png)
図4を確認すると利用開始など認証のシーケンスを行っているのは攻撃者です。
攻撃者の認可コードを利用者に送信して、
利用者としてはあたかも自分がログインしているかのようにみせられています。
アップロードを行っているのは利用者ですが、
アカウント自体は『攻撃者』のアカウントを使用していますので、
アップロード、ダウンロードともに、
『攻撃者』のアカウントで行っているということが解答できます。
設問2 (3)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_3.png)
何が問題なのかというと、
Sサービスに認証を依頼した人とSサービスに認可コードを送る人が違うという点が問題です。
認証を依頼する人と認可コードを送る人が、
同一人物であるということを証明する仕組みが問われています。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_3_3.png)
認証の依頼から認可コードの送付までに、
Sサービスと利用者がやり取りする通信は以下の3つです。
- (あ)利用開始 利用者→Sサービス
- (い)認可の要求 Sサービス→利用者
- (か)認可コード 利用者→Sサービス
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問2_3_2.png)
『Sサービスがstateパラメタをβを送信する際に付与する』と記載がありますので、
『β=(い)認可の要求』であることがわかります。
『Sサービスはγを受信する際に』と記載がありますので、
通信の方向的には(あ)、(か)が当てはまりますが、
認可コードを送信しているのは、当然ですが『γ=(か)認可コード』です。
通信の順番的にも(あ)の段階ではstateパラメタを受け取っていませんので、
『γ=(か)認可コード』であるということが判断できます。
設問3 (1)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問3_1.png)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問3_1_2.png)
図2を確認します。
SサービスとTサービスで行われている通信は以下の4つです。
- (き)アクセストークンの要求 Sサービス→Tサービス
- (く)アクセストークン Tサービス→Sサービス
- (け)アカウント名の要求 Sサービス→Tサービス
- (こ)アカウント名 Tサービス→Sサービス
この中でSサービスがTサービスに対してリソースにアクセスしようとしているものは、
『(け)アカウント目の要求』のみとなっています。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問3_1_1.png)
図3を確認します。
先程の4つの通信と該当するのは、
『(エ)利用者のアカウント名、電子メールなど登録情報を取得する権限』、
のみあればよいということがわかります。
設問3 (2)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問3_2.png)
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問3_2_1.png)
Tサービスとの連携を停止しているときに、
Sサービスを使用できない会員を問われています。
会員について整理すると3種類の会員があることがわかります。
- Tサービス連携前に登録した既存会員:S認証モジュールを使用
- Tサービス連携後に登録した会員:Tサービスを連携して認証
- これから新規登録しようとする会員:Tサービスを連携して登録、認証
Tサービスが停止することで影響を受ける会員としては、
『Tサービス連携後に登録した会員』と『これから新規登録しようとする会員』ですので、
『Tサービス連携後に会員登録した会員と新規登録しようとする会員(30文字)』と導き出すことができます。
設問4
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問4.png)
最後の問題となりますが、
この問題もよく問題文を読めば解答を作ることができます。
![](https://shanai-neet.com/wp-content/uploads/2021/08/設問4_1.png)
図2の注記に、初回つまり新規登録する際は、
『Tサービスから取得したアカウント名(以下、T-IDという)をSサービス内に登録する』、『2回目以降のSサービスの利用の場合、初回に登録されたT-IDを確認する』、
と記載があります。
この点から『Tサービスから取得したT-IDと、Sサービスに登録されているT-IDを比較して一致することを確認する。(50文字)』
注記は一見見逃しがちですが、
わざわざかくほどのものですので、見逃さずにしっかりと読みましょう。
公式解答との比較
完答ではないかもしれませんが、7割〜8割程度の答えを導き出すことができたかと思います。
予想配点は個人的の独断と偏見で記載していますので、あくまで参考程度と思ってください。
配点 |
|||
設問1 (1) | 自社で多要素認証を開発・提供しなくてよいという利点(25文字) | 多要素認証の実装をSサービス側に用意しなくてよい。 | 5点 |
設問1 (2) | Tサービスの障害時にSサービスも影響を受けること(25文字) | Tサービスの障害時にSサービスを利用できない。 | 5点 |
設問1 (3) | a:ア b:イ c:ウ |
a:ア b:イ c:ウ |
各2点 |
設問1 (4) | α:え | α:え | 3点 |
設問2 (1) | d:ウ e:ア |
d:ウ e:ア |
各2点 |
設問2 (2) | アップロード:攻撃者 ダウンロード:攻撃者 |
アップロード:攻撃者 ダウンロード:攻撃者 |
各3点 |
設問2 (3) | β:い γ:か |
β:い γ:か |
各2点 |
設問3 (1) | エ | エ | 3点 |
設問3 (2) | Tサービス連携後に会員登録した会員と新規登録しようとする会員(30文字) | S認証モジュールに利用者IDとパスワードを登録していないS会員 | 6点 |
設問4 | Tサービスから取得したT-IDとSサービスに登録されているT-IDを比較して一致することを確認する。(50文字) | Tサービスで認証されたS会員のT-IDが、Sサービス内に登録されていることを確認する | 8点 |
引用元
問題および解答例に関しては、独立行政法人 情報処理推進機構(IPA)より引用しています。