解答例は公式サイトを確認していますので、間違いはないと思います。
解説については自分の記憶に入り込みやすい形で書いているので、満点解説とは限りません。
思考回路をなるべく文字に起こしておりますので、お役に立てれば幸いです。
重要ワード
- CSRF(クロスサイトリクエストフォージェリ)
「認証されたものしか操作できるはずがない画面」が悪意のあるユーザーから意図しない動作を引き起こされてしまうこと。攻撃者はログインしている人しか操作できないはずの命令を思い通りにすることで目的を果たす(パスワードの変更、SNSでの危険な予告、勝手なネット購入など) - RFC6749
OAuth 2.0を定義した技術仕様書。OAuth 2.0は、ユーザーがサービスを使用する際に安全に利用するための認証プロトコルです。RFC 6749には、クライアントとサーバの間で使用される認可フロー、アクセストークンのタイプのオススメ仕様などが記載されています。 - stateパラメタ
stateパラメータとは、Webサービスを使用した認証プロセス中に、クライアントがサーバーに渡す一時的なパラメータのことです。stateパラメータは、クライアントが詳細な情報を記録したものでまず、「認可の要求時」にサーバーに送付するときに利用します。その後、リクエストを行った後に受け取る認証コードの中でも利用されます。両者が一致したとき、リクエストが本物であることを確認するために利用されます。
解答・解説
認証システム開発についての問題です。
設問1 [Sサービスの改修]について
(1)本文中の下線①について、S社の課題に即した利点を30字以内で具体的に述べよ
解答:多要素認証の実装をSサービス側に用意しなくてよい。
解説
QCDのうちCost(費用)やDelivery(納期)に対してメリットが大きいというニュアンスが解答に組み込まれていれば問題ないと考えています。多要素認証を一から開発する手間を考えると費用が膨大にかかってしまうことを「想像」して解答しました。
(2)本文中の下線①について、可用性の観点での欠点を30字以内で述べよ
解答:T サービスの障害時に S サービスを利用できない。
解説
外部サービスを利用した際に可用性が問題に上がることはしばしばありますね。メールサーバ等の障害で利用できなくなるケースは多々あると思います。
(3)本文中のa~cに入れる適切な字句を解答群から選び、記号で答えよ
解答:a:ア(Sサービス)、b:イ(Tサービス)、c:ウ(利用者)
解説
a:図1に各主体の説明が記載されており、Sサービスについては下記の通りです。
Sサービス:Tサービスでのアカウント名を要求する
図1 Oauthを用いた許可における3つの主体の説明
リクエストは「S→T」、もしくは「利用者→S」「利用者→T」の3方向に絞られます。この時、問題文を読み進めると[a]に利用者が入ると違和感があることに気が付けると思いますので、一旦[a]にはSサービスが入ると仮定して進めていきます。
b:消去法で考えます。
c:問題文中では[c]が[a]に必要な権限を与えると記載されています。図2のシーケンス図にもある通り、権限付与のやり取りをしているのは「利用者」「Tサービス」の2つですので、権限の設定は社内から行なうのが妥当でしょうから[c]には利用者が入ります。
(4)本文中のaに入れる適切な字句を、図2中の(あ)~(こ)から選び、記号で答えよ
解答:え
解説
(3)の[c]の解説にもある通り、権限のやり取りをしているのは一箇所しかありませんので、(え)が適切です。
設問2[1つ目の問題]について
(1)図4中のd,eに入れる適切な字句を解答群から選び、記号で答えよ
解答:d:ウ(認可コード)e:ア(アクセストークンの要求)
解説
[1つ目の問題]は、CSRFのリスクがあるということです。(CSRFについては重要ワードを参照)。認可コードとトークンはどちらも検証に利用される情報ですが、下記の点に注意すると選択肢が絞れるでしょう。
認可コード・・・利用者がWebサービスに安全に接続できるための情報。「サーバ→クライアント」への有効性の確認に使われる。
トークン・・・Webサービスを利用して特定のアクションを実行する際の識別子。有効性の確認として「サードパーティー」とのやり取りに使われる。
この違いを理解していなくても、攻撃者が間に入っただけで正常系と変わらないので間違えない気がしますが。。
(2)本文中の下線②について、ファイルのアップロードと、ファイルのダウンロードは、それぞれTサービスの誰のアカウントによって行われるか。それぞれ6字以内で答えよ
解答:ファイルのアップロード: 攻撃者
ファイルのダウンロード: 攻撃者
解説
前提から話しますが、当攻撃(CSRF攻撃)はサードパーティーのアカウントを作成していることが攻撃成功の必要条件ではないと思っております。最低でも攻撃対象の情報収集が出来ていれば「攻撃対象のパスワード変更」くらいは成功するはずです。
ただし今回の場合、図4にて「攻撃者→Sサービスへの利用開始」「攻撃者→Tサービスへの認可の要求」というフローがありますので攻撃者はTサービスのアカウントを所持しているという仮説は問題文から読み取ることができます。
以上のことから、攻撃対象者は知らずのうちに攻撃者のアカウントを利用してSサービスとTサービスを利用しており、ファイルの入出力も攻撃者のアカウントを利用していると考えることが出来ます。
(3)本文中のβ、γに入れる適切な字句を、図2中の(あ)~(こ)から選び記号で答えなさい
解答:β:い(認可の要求) γ:か(認可コード)
解説
CSRF攻撃に対しての回避策は2つあり、(3)では1つめの「stateパラメータ」の設置について問われています。stateパラメータについては重要ワードにも記載しておりますが、その意義については下記のサイトが非常に勉強になりますので、確認してみてください。
設問3[2つ目と3つ目の問題]について
(1)本文中の下線③について、必要最低限の権限を図3中のあ~えから1つ選び、記号で答えよ
解答:エ(利用者のアカウント名、電子メールアドレスなど登録情報を取得する権限)
解説
サードパーティー製のTサービスの利用用途はアカウント管理のみであるため、「いいねを送信する権限」や「投稿する権限」は必要ない。
(2)本文中の下線④に該当するS会員を35字以内で答えよ
解答:S認証モジュールに利用者IDとパスワードを登録していないS会員
解説
Tサービスでのログイン認証を構築した以後はS認証モジュールは利用していませんので、S認証モジュールにはその情報は格納されていないはずです。
文章中では「改修によってS認証モジュールを用いないS会員の登録・・・を目指す」と記載されています。
その点に着目して解答すれば良いと思います。
設問4本文中の下線⑤について
(1)本文中の下線⑤について、SサービスとTサービスを連携して、どのように利用者認証を実現しているのか。実現の方法を50字以内で答えよ
解答:Tサービスで認証されたS会員のT-IDが、Sサービス内に登録されていることを確認する
解説
図2の注記が解答のヒントになるでしょうか。初回と2回目以降の動きは下記のようになります
初回・・・希望者がTサービスでT-IDを取得して、Sサービス内に登録する
2回目以降・・・(Sサービス内に登録されている)既に存在するT-IDとログイン時のT-IDを確認する
終わりに
以上で、令和3年秋期 午後Ⅱ 問1 の解説を終わります。
もし、考え方等で意見がありましたらコメントで教えてください!
コメント