‹ ぱすてく

情報処理安全確保支援士試験

令和2年度 10月 午後Ⅱ(旧試験)

令和2年度 10月に実施された情報処理安全確保支援士試験 午後Ⅱの全2問(記述式)の全設問に,運営者が独自に書いた解説を付けています。事例本文のどこが根拠になるかを示し,IPA の解答例・採点講評と並べています。

この試験について:情報処理安全確保支援士試験について

この年度を解いてみる

問1 百貨店における Web サイトの統合

百貨店における Web サイトの統合に関する次の記述を読んで,設問 1〜5 に答えよ。

C 社は,半年ほど前に旧 A 社と旧 B 社が合併してできた会社である。旧 B 社が存続会社となり,旧 A 社の事業を承継した上で,C 社に改称した。C 社は,旧 A 社の 10 店舗の百貨店(以下,A 百貨店という)と,旧 B 社の 5 店舗の百貨店(以下,B 百貨店という)を運営している。

C 社は,旧 A 社が発行していたクレジットカードの会員向け Web サイト(以下,サイト P という),A 百貨店の取扱商品を販売するオンラインストア Web サイト(以下,サイト Q という),及び旧 B 社のポイントカードを保有する会員向け Web サイト(以下,サイト R という)を運営している。

合併後,旧 A 社クレジットカードの B 百貨店での利用を促進したり,旧 B 社ポイントカードの A 百貨店での利用を可能にしたりするなど,両社の顧客サービスの融合に力を入れている。表 1 は,サイト P,Q,R の概要である。

3 列の表(サイト名,機能,利用者 ID)。サイト P:機能は,・利用明細の表示,・クレジットカード利用ポイントの残高確認,商品又は他社のポイントとの交換申請,・各種申請書類の送付依頼,・アカウント管理(新規登録,パスワード変更,登録事項変更など)。利用者 ID は,英数字 8〜16 字の文字列を利用者が設定する。サイト Q:機能は,・A 百貨店の商品の購入,・購入履歴の表示,・アカウント管理(新規登録,パスワード変更,決済用クレジットカード登録など)。利用者 ID は,英数字 8〜16 字の文字列を利用者が設定する。サイト R:機能は,・ポイント獲得履歴,利用履歴の表示,・ポイント獲得履歴から購買傾向を分析し,傾向に基づいたお買い得情報の表示,・キャンペーンへの応募,応募履歴の表示,・アカウント管理(新規登録,パスワード変更,パスワード失念時の処理など)。利用者 ID は,ポイントカードに記載されている数字 8 桁の会員番号が割り当てられる。
表 1 各サイトの概要

〔機器の集約と運用作業の効率化〕

C 社では,運用作業を効率化するために,別々の場所に設置されていた各サイトを構成する機器を 1 か所のデータセンタに集約するとともに,これらの機器を管理する Web 管理課を新設した。機器集約後のネットワーク構成は図 1 のとおりである。

インターネットは FW-1 に接続されている。FW-1 の下に,サイト P(LDAP-P,FW-P,Web-P),サイト Q(LDAP-Q,FW-Q,Web-Q),サイト R(LDAP-R,FW-R,Web-R)の三つのサイトがあり,各サイトでは LDAP サーバ,FW,Web サーバがこの順に並んで接続されている。FW-1 は各サイトの Web サーバ(Web-P,Web-Q,Web-R)に接続される。各サイトの FW(FW-P,FW-Q,FW-R)は L2SW に接続される。L2SW には監視サーバ,管理コンソール,及び FW-2 が接続され,FW-2 の先に Web 管理課 LAN がある。凡例:FW はファイアウォール,Web-P,Q,R は Web サーバ P,Q,R,LDAP-P,Q,R は LDAP サーバ P,Q,R,L2SW はレイヤ 2 スイッチ。注記:FW-1 では,サイト P,Q,R 相互間の通信を禁止している。
図 1 機器集約後のネットワーク構成(抜粋)

サイト P,Q,R は,それぞれ独立して運営されている。いずれのサイトも,アカウント情報はサイトごとに設置した LDAP サーバのユーザエントリとして管理しており,ログイン時の認証には,各 LDAP サーバのユーザエントリ内の利用者 ID とパスワードを利用している。

〔サイト間でのアカウントの共通利用〕

C 社では経営戦略の一環として,三つのサイトで収集した情報から顧客の購買傾向を分析することにした。そこで,サイト P,Q,R でクロス分析などの手法を用いて購買傾向を分析する上で,各サイト間で同一の顧客を特定するために,サイト P,Q,R 相互間でのアカウントの共通利用を実現することにした。

アカウントの共通利用では,次の三つの利用方法のいずれかを各顧客に選択してもらうことにした。

顧客がアカウントの紐付けを設定すれば,子アカウントの代わりに親アカウントを用いて各サイトにログインできる。

〔アカウントの共通利用の設計〕

Web 管理課の J 主任は,アカウントの共通利用の設計を任された。J 主任は,アカウントの共通利用を実現するために,次の四つを行うことにした。

画面:「サイト Q の利用者 ID」の入力欄,「サイト Q のパスワード」の入力欄,[紐付け]ボタンがある。注記:サイト P にログイン済みである。[紐付け]ボタンが押された場合の処理は次のとおり。(i) Web-P の Web アプリが,LDAP-Q に問合せて,入力されたサイト Q の利用者 ID とパスワードを用いて認証を行う。(ii) 認証に失敗したら,エラー画面を表示する。(iii) Web-P の Web アプリが,LDAP-P の該当するユーザエントリの siteQid 属性に,サイト Q の利用者 ID を書き込んで完了画面を表示する。
図 2 サイト P におけるサイト Q のアカウントの紐付けの画面と処理内容
5 列の表(項番,送信元,宛先,プロトコル,動作)。項番 1:送信元は監視サーバ,管理コンソール,Web 管理課 LAN,宛先は Web-P,LDAP-P,プロトコルは管理用プロトコル,動作は許可。項番 2:送信元は Web-Q,Web-R,宛先は LDAP-P,プロトコルは LDAP,動作は許可。項番 3:送信元は Web-P,宛先は[ a ],プロトコルは[ b ],動作は許可。項番 4〜14 は省略(…)。項番 15:送信元は全て,宛先は全て,プロトコルは全て,動作は拒否。注記 1 FW-P は,ステートフルパケットインスペクション型である。注記 2 項番が小さいルールから順に,最初に合致したルールが適用される。注記 3 項番 4〜14 には,LDAP に関するルールは記述されていない。
表 2 変更後の FW-P のルール

〔個人情報の取扱い〕

J 主任は,C 社の法務担当の M さんに,アカウントの共通利用について説明し,個人情報の取扱いの観点から問題がないかどうか相談した。M さんは,合併前後の個人情報の利用目的の内容について確認した。

確認後,M さんは,アカウントの共通利用には,顧客に対して利用目的の変更を通知して,同意を得る必要があると指摘した。

指摘を受け,J 主任は,顧客がアカウントの共通利用を選択したときに,個人情報の利用目的の変更を通知するとともに,変更後の利用目的を明示して同意を得る機能を加えることにした。

〔コードレビュー〕

アカウントの共通利用の設計を終えた J 主任は,サイト P の Web アプリの改修に着手した。

図 3 及び図 4 は,サイト P のアカウントにサイト Q のアカウントを紐付ける場合のサイト P 上での紐付け処理の Java ソースコードである。

利用者が,サイト P にログイン後,図 2 の画面を操作し,“紐付け”ボタンをクリックした場合,図 4 の行番号 101 の siteID にサイトの識別文字列として“siteQ”が代入された状態で図 4 のコードの実行が開始される。図 4 のコードが正常に終了したら,紐付けが完了したことを表示する。

Java のソースコード(行番号 1〜38)。(省略)// パッケージ宣言,インポート宣言 // インポート宣言には,javax.naming.NamingException を含む。
1: public class AccountLink {
2:     boolean childChecked;  // 子アカウントの利用者 ID のチェック完了フラグ
3:     String childSite;  // 子アカウントのサイトの識別文字列
4:     String childID;  // 子アカウントの利用者 ID
5:     String childPW;  // 子アカウントのパスワード
6:     String parentID;  // 親アカウントの利用者 ID
7:     public static final int NO_ERROR = 0;  // 正常終了コード
8:     public static final int ERROR_SITE_UNAVAILABLE = -101;  // エラーコード
9:     public static final int ERROR_ID_OR_PW = -102;  // エラーコード
10:    public static final int ERROR_LINK_FAILED = -103;  // エラーコード
11:    public AccountLink(String site, String id, String pw, String loginID) {
12:        childChecked = false;
13:        childSite = site;
14:        childID = id;
15:        childPW = pw;
16:        parentID = loginID;
17:    }
18:    public int checkChild() throws NamingException {
        // サイトの識別文字列のチェック
19:        childChecked = childSite.equals("siteQ") || childSite.equals("siteR");
20:        if (!childChecked) {  // サイトの識別文字列が正当でなかった場合
21:            return ERROR_SITE_UNAVAILABLE;
22:        }
23:        switch (childSite) {
24:        case "siteQ":
25:            try {
                // 認証情報チェック
26:                if (siteQAuth(childID, childPW) == NO_ERROR) {
27:                    childChecked = true;  // 認証成功
28:                } else {
29:                    childChecked = false;  // 認証失敗
30:                }
31:            } catch (NamingException e) {  // 認証が実行できなかった場合
32:                throw e;
33:            }
34:            if (!childChecked) {
35:                return ERROR_ID_OR_PW;
36:            } else {
37:                return NO_ERROR;
38:            }
図 3 Web-P の Web アプリにおける AccountLink のクラス定義
Java のソースコード(行番号 39〜47)。
39:        case "siteR":
            (省略)// サイト R に対して認証を行い,結果に応じて ERROR_ID_OR_PW 又は // NO_ERROR を返して終了する。
40:        default:
            (省略)// ERROR_SITE_UNAVAILABLE を返して終了する。
41:        }
42:    }
43:    public int makeLink() throws NamingException {
        (省略)// LDAP-P 上の parentID のユーザエントリの属性 siteQid 又は siteRid // に childID を書き込む。
44:    }
45:    private int siteQAuth(String qID, String qPW) throws NamingException {
        (省略)// 認証情報を確認し,認証成功なら NO_ERROR を,認証失敗なら NO_ERROR // 以外の値を返す。必要な通信ができないなど,認証そのものが実行 // できない場合,例外 NamingException を投げる。
46:    }
    (省略)// その他のメソッドなどの定義
47: }
図 3 Web-P の Web アプリにおける AccountLink のクラス定義(続き)
Java のソースコード(行番号 101〜115)。
101: AccountLink idPair = new AccountLink(siteID, userID, userPassword, loginId);
    // 各変数には次の内容が代入されている。
    // siteID には,紐付けるアカウントのサイトの識別文字列
    // userID には,紐付けるアカウントの利用者 ID
    // userPassword には,紐付けるアカウントのパスワード
    // loginId には,現在サイト P にログインしている利用者 ID
102: int result = AccountLink.NO_ERROR;
103: for (int retryCount = 1; retryCount < 4; retryCount++) {
104:     try {
            // サイトの識別文字列,利用者 ID/パスワードの組みを確認する。
105:         result = idPair.checkChild();
106:         if (result == AccountLink.NO_ERROR) {
107:             break;
108:         } else {
                (省略)// result の値に従った適切な処理を実施する。
109:         }
110:     } catch (NamingException e) {
            (省略)// 再試行のために,一定時間待つ。
111:     }
112: }
113: if (!idPair.childChecked) {
114:     return AccountLink.ERROR_LINK_FAILED;
115: }
図 4 Web-P の Web アプリにおける AccountLink のメソッドを呼んでいる部分
Java のソースコード(行番号 116〜119)。
116: try {
117:     idPair.makeLink();  // アカウントの紐付けを実施する。
118: } catch (NamingException e) {
        (省略)// 例外処理
119: }
図 4 Web-P の Web アプリにおける AccountLink のメソッドを呼んでいる部分(続き)

J 主任は,情報処理安全確保支援士(登録セキスペ)の K 主任とともにコードレビューを実施した。K 主任は,次のような特定の状況では,サイト P のある利用者のアカウントに,サイト Q の他人のアカウントが紐付いてしまうと指摘した。

K 主任は,図 3 の 32 行目前後に着目し,iという修正案を提示した。

〔サイト R でのインシデント〕

リリースに向けて準備を進めていたところ,インシデント発生の報告があった。発端は,ある顧客からの指摘で,その内容は,“サイト R のキャンペーン応募履歴を見たら,3 月のキャンペーンに応募したことになっているが,身に覚えがない。3 月にはサイト R に一度もアクセスしていないはずだ。”というものであった。

J 主任が,サイト R のアクセスログを確認したところ,次のことが分かった。

図 5 は,サイト R のパスワード失念時の操作画面である。

二つの画面。左の画面:「会員番号」の入力欄,「誕生日(月日)」の月と日の入力欄,[登録済みのメールアドレスに現在のパスワードをメールで送信]ボタン,[登録済みのメールアドレスでメールが受信できない場合]ボタンがある。[登録済みのメールアドレスでメールが受信できない場合]ボタンから右の画面へ実線の矢印が伸びる。右の画面:「新たなメールアドレス」の入力欄と,[新たなメールアドレスに現在のパスワードをメールで送信]ボタンがある。注記:実線の矢印は当該画面の入力フォームに適切な値を入力してボタンがクリックされたときの遷移を示す。
図 5 サイト R のパスワード失念時の操作画面

J 主任は,攻撃者がパスワード失念時の処理を悪用して,会員番号及び誕生日を総当たりで入力し,たまたま合致した当該顧客のアカウントを乗っ取ったものと判断した。J 主任は,このインシデントについて Web 管理課の L 課長に報告した。L 課長は旧 A 社出身で,この報告でサイト R のパスワード失念時の操作を初めて知った。次は,その報告の時の L 課長と J 主任の会話である。

〔アカウントの共通利用の設計の見直し〕

J 主任は,次のように全面的に設計を見直し,承認を得た。

図 6 は,Web Browser SSO Profile の基本的な通信の流れである。

利用者の Web ブラウザ,SP,IdP の三者のシーケンス図。上から順に,利用者の Web ブラウザから SP へ「ログインが必要な SP のリソースへのアクセス要求」,SP から Web ブラウザへ「SP から IdP への認証要求」,(1) Web ブラウザでの転送(折り返し)の時点,Web ブラウザから IdP へ「転送された認証要求」,(2) Web ブラウザと IdP の間の「認証のための通信」(双方向)の時点,IdP から Web ブラウザへ「IdP から SP への認証応答」,(3) Web ブラウザでの転送(折り返し)の時点,Web ブラウザから SP へ「転送された認証応答」,SP から Web ブラウザへ「認証応答に基づいた SP のリソース」,(4) 最後に Web ブラウザがリソースを受け取る時点。(1)〜(4) は図の左側に記された時点を示す。
図 6 Web Browser SSO Profile の基本的な通信の流れ

図 7 は,紐付け済みのサイト S のアカウントでサイト Q にログインするときの画面遷移図である。

三つの画面(あ),(い),(う)。(あ):ID と パスワードの入力欄,[サイト Q の ID でログイン]ボタン,リンク「サイト S の ID でのログインはこちら」。このリンクから(い)へ破線の矢印が伸びる。(い):ID とパスワードの入力欄,[ログイン]ボタン,リンク「アカウントを作成する」。[ログイン]ボタンから(う)へ実線の矢印が伸びる。(う):「ログインしました。ようこそ,サイト Q へ」の表示と,サイト Q のトップメニュー。注記 1 画面内の“ID”は,利用者 ID を指す。注記 2 実線の矢印は当該画面の入力フォームに適切な値を入力してボタンがクリックされたときの遷移を示す。破線の矢印はリンクがクリックされたときの遷移を示す。
図 7 サイト S のアカウントでサイト Q にログインするときの画面遷移図

図 8 は,サイト Q のアカウントとサイト S のアカウントを紐付けるときの画面遷移図である。

六つの画面(え)〜(け)。(え):ID とパスワードの入力欄,[サイト Q の ID でログイン]ボタン,リンク「サイト S の ID でのログインはこちら」。[サイト Q の ID でログイン]ボタンから(お)へ実線の矢印が伸びる。(お):「ログインしました。ようこそ,サイト Q へ」の表示,サイト Q のトップメニュー,リンク「サイト S の ID と紐付け」。このリンクから(か)へ破線の矢印が伸びる。(か):ID とパスワードの入力欄,[ログイン]ボタン,リンク「アカウントを作成する」。このリンクから(き)へ破線の矢印が伸び,[ログイン]ボタンから(く)へ実線の矢印が伸びる。(き):氏名,メールアドレス,ID,パスワード,パスワード(確認用)の入力欄と[アカウントを作成]ボタン。このボタンから(く)へ実線の矢印が伸びる。(く):「サイト Q のアカウント“○○○”と,サイト S のアカウント“△△△”を紐付けました。」の表示とリンク「サイト Q のトップメニューへ」。このリンクから(け)へ破線の矢印が伸びる。(け):「ログインしました。ようこそ,サイト Q へ」の表示と,サイト Q のトップメニュー。注記 1 画面内の“ID”は,利用者 ID を指す。注記 2 実線の矢印は当該画面の入力フォームに適切な値を入力してボタンがクリックされたときの遷移を示す。破線の矢印はリンクがクリックされたときの遷移を示す。
図 8 サイト Q のアカウントとサイト S のアカウントを紐付けるときの画面遷移図

〔見直し後のアカウント共通利用の提供開始〕

C 社は,サイト P,Q,R の改修とサイト S の開発を完了して,アカウント共通利用の提供を開始し,順調に運用を続けた。サイト P,Q,R のアカウントの廃止,及びサイト S のアカウントへの統合を目指している。この統合が実現すれば,図 7 の(あ)や,図 8 の(え),(お)などの画面は不要となり,より使いやすいサイトを実現できる。

出題趣旨(IPA)

情報システムの構築時にはリスク分析を行うが,運用開始後の改修時やほかのシステムとの機能統合時にはリスク分析が行われていない場合が見受けられる。リスク分析は,システムのセキュリティを確保するための重要な工程の一つであり,ここで不備があると後続の工程に悪影響を及ぼす。本問では,企業の合併に伴う複数のWebサイトの統合を題材に,リスク分析を行う能力,及びWebアプリケーションプログラムにおけるセキュアプログラミングの能力を問う。

採点講評(問全体・IPA)

問1では,企業の合併に伴う複数のWebサイトの統合を題材に,リスク分析と,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。全体として,正答率は平均的であった。

設問と解答例

設問1 解答欄2つ

表 2 中のa,bに入れる適切な字句を答えよ。

〔a〕解答例

  • LDAP-P,LDAP-Q,LDAP-R

〔b〕解答例

  • LDAP
解説

本文の根拠

図 2 処理内容(i)

Web-P の Web アプリが,LDAP-Q に問合せて,入力されたサイト Q の利用者 ID とパスワードを用いて認証を行う。

図 3 行番号 39

サイト R に対して認証を行い,結果に応じて ERROR_ID_OR_PW 又は

表 2 注記 3

項番 4〜14 には,LDAP に関するルールは記述されていない。

表 2 は変更後の FW-P のルールで,項番 3 は送信元が Web-P の許可ルールである。Web-P で動く Web アプリは,サイト P のログインに加えて,アカウントを紐付けるときに,図 2 のとおり LDAP-Q に問い合わせて子アカウントの認証を行う。サイト R の子アカウントも,図 3 の行番号 39 のとおり同じように認証する。紐付け先の親アカウントは LDAP-P に保存するので,Web-P から LDAP-P,LDAP-Q,LDAP-R の三つの LDAP サーバへの通信が必要になる。したがって a は LDAP-P,LDAP-Q,LDAP-R,b は LDAP である。

図 1 のとおり,Web-P から LDAP-Q・LDAP-R へは FW-P を通り,L2SW を介して FW-Q・FW-R を通る経路になる。表 2 の注記 3 は項番 4〜14 に LDAP のルールが無いとしているので,LDAP の許可は項番 3 に全て書く必要があり,ここに書かなければ最後の項番 15 で拒否される。項番 2 は逆向き(Web-Q,Web-R から LDAP-P)の許可で,サイト P から他サイトへの通信は項番 3 でなければ許可されない。

字数制限は無いが,a は三つの LDAP サーバを全て挙げる点が間違えやすい。LDAP-P だけ,又は LDAP-Q・LDAP-R だけでは,紐付けか認証のどちらかが通らなくなる。

採点講評(IPA)

設問1aは,正答率が低かった。サイトPを運用するために,Web-PからLDAP-Pへの通信が必要だという点を考慮できていない解答が多かった。ファイアウォールの設定は,セキュリティ確保の基本なので,細心の注意を払う必要があることに留意してほしい。

設問2 70字以内

〔個人情報の取扱い〕について,旧 A 社と旧 B 社の合併による C 社への事業承継に伴って取得した個人情報の取扱いに関し,個人情報保護法に定められている禁止事項は何か。70 字以内で述べよ。

解答例

  • 本人の同意を得ないで,承継前における当該個人情報の利用目的の達成に必要な範囲を超えて,当該個人情報を取り扱ってはならない。
解説

本文の根拠

〔個人情報の取扱い〕

M さんは,合併前後の個人情報の利用目的の内容について確認した。

〔個人情報の取扱い〕

確認後,M さんは,アカウントの共通利用には,顧客に対して利用目的の変更を通知して,同意を得る必要があると指摘した。

問われているのは,合併による事業承継で取得した個人情報について,個人情報保護法が禁止していることである。解答例は“本人の同意を得ないで,承継前における当該個人情報の利用目的の達成に必要な範囲を超えて,当該個人情報を取り扱ってはならない。”である。事業を承継した C 社は,承継前の利用目的の範囲内でしか個人情報を使えず,その範囲を超えて使うには本人の同意が要る,という意味である。

本文でも,M さんは合併前後の利用目的を確認したうえで,アカウントの共通利用には利用目的の変更を通知して同意を得る必要があると指摘している。サイト P,Q,R のアカウントを紐付けて購買傾向を分析する使い方は,旧 A 社・旧 B 社で取得したときの利用目的に当たらない可能性があるため,同意が要る。

字数は 70 字以内で,解答例は 61 字である。“本人の同意を得ない”と“承継前の利用目的の達成に必要な範囲を超えて取り扱う”の二つの条件を残し,“禁止”で文末をそろえる。

採点講評(IPA)

設問2は正答率がやや低く,設問4は正答率が平均的であった。消費者向けのWebサイトでは,個人情報を取り扱うことが多いので,個人情報保護に関する法規制について,よく理解してほしい。

設問3(1) 解答欄4つ

本文中のc,d,f,gに入れる適切な字句を,解答群の中から選び,記号で答えよ。 解答群 ア idPair.checkChild() イ idPair.childChecked ウ idPair.childID エ idPair.childPW オ idPair.childSite カ idPair.makeLink() キ idPair.parentID ク idPair.siteQAuth() ケ NamingException コ return ERROR_ID_OR_PW サ return NO_ERROR

〔c〕解答例

  • ウ

〔d〕解答例

  • ア

〔f〕解答例

  • ケ

〔g〕解答例

  • イ
解説

本文の根拠

図 3 行番号 19

childChecked = childSite.equals(

図 3 行番号 26

if (siteQAuth(childID, childPW) == NO_ERROR) {

図 4 行番号 105

result = idPair.checkChild();

図 4 行番号 113

if (!idPair.childChecked) {

K 主任が指摘した状況を順に追う。(1) 図 2 でサイト Q の利用者 ID に誤った ID を入力すると,図 4 の行番号 101 で作られる idPair の c に誤った ID が入る。AccountLink のコンストラクタは第 2 引数を childID に代入する(図 3 の行番号 14)ので,c は idPair.childID(ウ)である。(2) その状態で図 4 の行番号 105 が呼び出すのは idPair.checkChild()(ア)なので,d はア。

(3) checkChild() の行番号 19 は,サイトの識別文字列が正当なら childChecked を true にする。この時点で true になる。続く行番号 26 の siteQAuth で通信ができないなどの理由があると NamingException(ケ)が発生し,f はケ。この例外は checkChild() の外へ投げられ,図 4 の catch で再試行される。(4) 3 回とも同じ例外が出て,ループを抜けたときに行番号 113 で見る g は idPair.childChecked(イ)で,true のまま残っている。

コ(return ERROR_ID_OR_PW)やサ(return NO_ERROR)は戻り値で,代入先や発生するものではない。idPair.childPW(エ)は ID ではなくパスワードで,誤った ID が代入されるのは childID である点を取り違えない。

採点講評(IPA)

設問3と設問5では,Javaを題材として,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。いずれも正答率が高かった。情報処理安全確保支援士の重要な業務の一つに,セキュリティの観点でのソースコードレビューが挙げられる。ソースコードレビューは,開発チーム全体の技術レベルを向上させる効果的な方法なので,ぜひとも今後の業務に生かしてほしい。

設問3(2) 解答欄2つ

本文中のe,hに入れる適切な図 3 又は図 4 中の行番号を,解答群の中から選び,記号で答えよ。 解答群 ア 20 イ 23 ウ 26 エ 34 オ 105 カ 106 キ 117 ク 118

〔e〕解答例

  • ウ

〔h〕解答例

  • キ
解説

本文の根拠

図 3 行番号 26

if (siteQAuth(childID, childPW) == NO_ERROR) {

図 4 行番号 103

for (int retryCount = 1; retryCount < 4; retryCount++) {

図 4 行番号 117

idPair.makeLink();

e は,例外が発生する図 3 の行番号である。例外 NamingException を投げるのは siteQAuth(「必要な通信ができないなど,認証そのものが実行できない場合,例外 NamingException を投げる」)で,これを呼び出しているのは行番号 26 のウである。行番号 32 の throw e; は,catch した例外を呼出し元へ投げ直す行であり,発生源ではない。

h は,図 4 の行番号 113 の if が偽(childChecked が true)になったとき,行番号 114 の return を飛ばして進む先である。行番号 116〜117 の try の中で,idPair.makeLink() を呼び出して紐付けを実施するのは行番号 117(キ)である。行番号 118 は catch の行,行番号 105・106 はループの中の checkChild() の呼出しと戻り値の判定で,ここには進まない。

行番号 20(ア)や 34(エ)は,エラーコードを返すかどうかの判定である。例外の発生した行と,その後に進む行を分けて読むとよい。

採点講評(IPA)

設問3と設問5では,Javaを題材として,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。いずれも正答率が高かった。情報処理安全確保支援士の重要な業務の一つに,セキュリティの観点でのソースコードレビューが挙げられる。ソースコードレビューは,開発チーム全体の技術レベルを向上させる効果的な方法なので,ぜひとも今後の業務に生かしてほしい。

設問3(3) 解答欄1つ

本文中のiに入れる適切な処理内容を 50 字以内で具体的に述べよ。

〔i〕解答例

  • NamingExceptionを投げる前に,childCheckedをfalseにする
解説

本文の根拠

図 3 行番号 31〜32

throw e;

図 4 行番号 113

if (!idPair.childChecked) {

図 3 行番号 45 の注釈

必要な通信ができないなど,認証そのものが実行

原因は,行番号 19 で childChecked が true になった後,行番号 26 の認証が例外で終わると,childChecked が true のまま例外が投げられることにある。図 4 は 3 回の再試行のあとで childChecked だけを見て紐付けに進むため,認証を一度も成功していないのに紐付けられる。

そこで,図 3 の 32 行目 throw e; の前後で,例外を投げる前に childChecked を false に戻す。これで,認証が実行できなかったときは childChecked が false になり,図 4 の行番号 113 の判定で ERROR_LINK_FAILED を返し,紐付けに進まない。

字数は 50 字以内で,解答例は 43 字である。“例外を投げる前に”という順序と,“childChecked を false にする”という処理の二つを残す。変数名は英字をそのまま書き,false も省略しない。

採点講評(IPA)

設問3と設問5では,Javaを題材として,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。いずれも正答率が高かった。情報処理安全確保支援士の重要な業務の一つに,セキュリティの観点でのソースコードレビューが挙げられる。ソースコードレビューは,開発チーム全体の技術レベルを向上させる効果的な方法なので,ぜひとも今後の業務に生かしてほしい。

設問4(1) 解答欄1つ

本文中のjに入れる適切な内容を 40 字以内で述べよ。

〔j〕解答例

  • パスワードを,本人以外のメールアドレスに送ることができる
解説

本文の根拠

〔サイト R でのインシデント〕

パスワードを電子メール(以下,メールという)で未登録のメールアドレスに送信した記録がある。

図 5

[新たなメールアドレスに現在のパスワードをメールで送信]

L 課長が挙げた三つの問題のうち,一つ目は本人確認の情報(会員番号と誕生日)が少ないこと,二つ目はパスワードそのものをメールで送ることである。三つ目は,図 5 の右の画面にある。左の画面で“登録済みのメールアドレスでメールが受信できない場合”を選ぶと,右の画面で“新たなメールアドレス”を入力でき,そこへ現在のパスワードが送られる。

つまり,会員番号と誕生日さえ合えば,攻撃者は自分のメールアドレスを入力して,当該顧客のパスワードを受け取れる。アクセスログにも,パスワードを未登録のメールアドレスへ送信した記録があった。

字数は 40 字以内で,解答例は 28 字である。“パスワードを”“本人以外の(未登録の)メールアドレスに”“送ることができる”を残す。“登録済みでないメールアドレスに送れる”とだけ書いても意味は通るが,何が送られるのかを欠かさない。

採点講評(IPA)

設問2は正答率がやや低く,設問4は正答率が平均的であった。消費者向けのWebサイトでは,個人情報を取り扱うことが多いので,個人情報保護に関する法規制について,よく理解してほしい。

設問4(2) 解答欄1つ

本文中のkに入れる適切な内容を 40 字以内で述べよ。

〔k〕解答例

  • パスワードリセットのURLを,登録済みメールアドレスだけに送る
解説

本文の根拠

〔サイト R でのインシデント〕 L 課長

二つ目は,パスワードそのものをメールで送るという問題だ。

〔サイト R でのインシデント〕 L 課長

この方法では,一部の利用者はパスワード失念時にログインできなくなるが,その場合はコールセンタで対応することにしよう。

二つ目の問題(パスワードそのものをメールで送る)と三つ目の問題(本人以外のメールアドレスに送れる)を同時に解決する方法を考える。パスワードを送るのをやめ,パスワードをリセットするための URL を送る方式にすれば,パスワードそのものはメールに載らない。その URL の送り先を登録済みメールアドレスだけにすれば,本人以外のメールアドレスへは送れない。

登録済みのメールアドレスで受信できない利用者は,新たなメールアドレスへ送れなくなるので,パスワード失念時にログインできなくなる。L 課長の“一部の利用者はパスワード失念時にログインできなくなるが,その場合はコールセンタで対応する”という発言はこのことを指す。図 5 の右の画面(新たなメールアドレスの入力)を無くす改修になる。

字数は 40 字以内で,解答例は 31 字である。“パスワードリセットの URL を送る”と“登録済みメールアドレスだけ”の二つを残す。“パスワードを送らない”だけでは,三つ目の問題が解決しない。

採点講評(IPA)

設問2は正答率がやや低く,設問4は正答率が平均的であった。消費者向けのWebサイトでは,個人情報を取り扱うことが多いので,個人情報保護に関する法規制について,よく理解してほしい。

設問4(3) 解答欄2つ

本文中の下線①について,更に大きな被害とは何か。具体的な被害を二つ挙げ,それぞれ 30 字以内で述べよ。

〔①〕解答例

  • サイトPでポイントが不正に利用される。

〔②〕解答例

  • サイトQでA百貨店の商品が不正に購入される。

〔備考〕①,②は順不同

解説

本文の根拠

〔サイト間でのアカウントの共通利用〕(2)

サイト R のアカウントを親アカウントとし,サイト P,Q のアカウントを子アカウントとして,子アカウントを親アカウントに紐付ける。

〔サイト間でのアカウントの共通利用〕

顧客がアカウントの紐付けを設定すれば,子アカウントの代わりに親アカウントを用いて各サイトにログインできる。

表 1 サイト P の機能

クレジットカード利用ポイントの残高確認,商品又は他社のポイントとの交換申請

表 1 サイト Q の機能

A 百貨店の商品の購入

アカウントの共通利用では,旧 B 社の顧客向けに,サイト R のアカウントを親アカウントとし,サイト P,Q のアカウントを子アカウントとして紐付ける使い方がある。このとき,親アカウントでサイト P,Q にもログインできる。サイト R のパスワード失念時の処理の問題で R のアカウントが乗っ取られると,攻撃者は紐付けられたサイト P,Q にもログインできてしまう。

表 1 のとおり,サイト P ではクレジットカード利用ポイントの商品又は他社ポイントとの交換申請ができ,サイト Q では A 百貨店の商品を購入できる。したがって,サイト P でポイントが不正に利用される,サイト Q で A 百貨店の商品が不正に購入される,の二つが“更に大きな被害”になる。L 課長が,サイト R は乗っ取られても経済的利益を得にくいと言っている点との対比である。

字数は 30 字以内で,解答例は 1 件目が 19 字,2 件目が 22 字である。“どのサイトで”“何が”“不正に(される)”を残す。①と②は順不同で,どちらにどの被害を書いてもよい。

採点講評(IPA)

設問2は正答率がやや低く,設問4は正答率が平均的であった。消費者向けのWebサイトでは,個人情報を取り扱うことが多いので,個人情報保護に関する法規制について,よく理解してほしい。

設問5(1) 解答欄2つ

利用者の操作によって,図 7 のとおりに画面が遷移した場合,(い)(う)の画面は,図 6 の(1)〜(4)のどの時点で表示されるか。それぞれ,(1)〜(4)の記号で答えよ。

〔(い)〕解答例

  • (2)

〔(う)〕解答例

  • (4)
解説

本文の根拠

図 6

SP から IdP への認証要求

図 6

認証のための通信

図 6

認証応答に基づいた SP のリソース

図 7 の(あ)でリンク“サイト S の ID でのログインはこちら”をクリックすると,SP(サイト Q)から IdP(サイト S)への認証要求が Web ブラウザに返され,(1) の時点でブラウザが IdP へ転送する。その後,ブラウザと IdP が「認証のための通信」を行うのが (2) で,利用者が ID とパスワードを入力する画面(い)は IdP が返すもので,(2) の時点で表示される。

(い)で“ログイン”を押して認証が済むと,IdP から SP への認証応答が (3) でブラウザに転送され,(4) の時点で「認証応答に基づいた SP のリソース」,つまりサイト Q の画面(う)が表示される。したがって(い)は (2),(う)は (4) である。

(1) と (3) はブラウザが転送を行う一瞬の時点で,利用者に見える画面は表示されない点が間違えやすい。

採点講評(IPA)

設問3と設問5では,Javaを題材として,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。いずれも正答率が高かった。情報処理安全確保支援士の重要な業務の一つに,セキュリティの観点でのソースコードレビューが挙げられる。ソースコードレビューは,開発チーム全体の技術レベルを向上させる効果的な方法なので,ぜひとも今後の業務に生かしてほしい。

設問5(2) 解答欄3つ

利用者の操作によって,図 7 のとおりに画面が遷移した場合,(あ)(い)(う)の各画面では,どのサーバから送られた HTML を表示するか。それぞれ,答案用紙の“SP”,“IdP”のいずれかを○印で囲んで示せ。

〔(あ)〕解答例

  • SP

〔(い)〕解答例

  • IdP

〔(う)〕解答例

  • SP
解説

本文の根拠

〔アカウントの共通利用の設計の見直し〕

サイト S が,IdP(Identity Provider)となり,サイト P,Q,R は,SP(Service Provider)となる。

図 7 の(あ)

リンク「サイト S の ID でのログインはこちら」

本文のとおり,サイト S が IdP で,サイト P,Q,R が SP である。図 7 の(あ)は“サイト Q の ID でログイン”と,“サイト S の ID でのログインはこちら”のリンクがある画面で,サイト Q のログイン画面なので SP が送った HTML である。

(い)は,サイト S の ID を入力する画面で,図 6 の (2) の認証のための通信で IdP が提供するので IdP である。(う)は,認証後にサイト Q のトップメニューを含む画面で,SP のリソースなので SP である。

画面の見た目が似ていても,画面を提供するサーバが SP か IdP かは,どのサイトの ID を入力させる画面かで決まる。ID を確認する画面は IdP,サービスの画面は SP と整理する。

採点講評(IPA)

設問3と設問5では,Javaを題材として,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。いずれも正答率が高かった。情報処理安全確保支援士の重要な業務の一つに,セキュリティの観点でのソースコードレビューが挙げられる。ソースコードレビューは,開発チーム全体の技術レベルを向上させる効果的な方法なので,ぜひとも今後の業務に生かしてほしい。

設問5(3) 解答欄4つ

利用者の操作によって,図 8 の(え)(お)(か)(き)(く)(け)の順に画面が遷移した場合,(え)(か)(き)(く)の各画面では,どのサーバから送られた HTML を表示するか。それぞれ,答案用紙の“SP”,“IdP”のいずれかを○印で囲んで示せ。

〔(え)〕解答例

  • SP

〔(か)〕解答例

  • IdP

〔(き)〕解答例

  • IdP

〔(く)〕解答例

  • SP
解説

本文の根拠

図 8 の(お)

リンク「サイト S の ID と紐付け」

図 8 の(く)

「サイト Q のアカウント“○○○”と,サイト S のアカウント“△△△”を紐付けました。」

(え)は,サイト Q の ID でログインする画面なので SP である。サイト Q にログインした(お)の“サイト S の ID と紐付け”のリンクをクリックすると,(か)で ID とパスワードを入力する。これはサイト S のアカウントを確認する画面で,認証を行う IdP が提供する。

(か)の“アカウントを作成する”を選ぶと,サイト S のアカウントを新規に作る(き)が表示される。サイト S のアカウントを作成するのは IdP なので,(き)も IdP である。作成後に表示される(く)は,“サイト Q のアカウントとサイト S のアカウントを紐付けました”と告げる画面で,その後“サイト Q のトップメニューへ”戻るので,サイト Q(SP)の画面である。

解答例は,(え)SP,(か)IdP,(き)IdP,(く)SP である。図 8 の遷移のうち,サイト S のアカウントを確認・作成する部分が IdP,サイト Q に戻って結果を示す部分が SP という分け方を押さえる。

採点講評(IPA)

設問3と設問5では,Javaを題材として,Webアプリケーションプログラムにおけるセキュアプログラミングについて出題した。いずれも正答率が高かった。情報処理安全確保支援士の重要な業務の一つに,セキュリティの観点でのソースコードレビューが挙げられる。ソースコードレビューは,開発チーム全体の技術レベルを向上させる効果的な方法なので,ぜひとも今後の業務に生かしてほしい。

出典:令和2年度 10月 情報処理安全確保支援士試験 午後Ⅱ 問1(表記を一部改変)

問2 クラウドサービスを活用したテレワーク環境

クラウドサービスを活用したテレワーク環境に関する次の記述を読んで,設問 1〜6 に答えよ。

E 社は,従業員数 5,000 名の IT 企業である。E 社では,働き方改革の一環として,テレワーク環境を整備することになった。テレワーク環境について検討すべき重要なテーマの一つに,テレワーク環境経由での情報漏えいを起こさないためのセキュリティ確保がある。そこで,テレワーク環境の整備をシステム企画部長の指示の下,情報処理安全確保支援士(登録セキスペ)でもあるシステム企画部の F 次長,及び部下の G さんが担当することになった。

現在 E 社では,次のクラウドサービスを利用している。

E 社のネットワーク構成を図 1 に示す。

E 社の内部に,PC セグメント(PC と L2SW),DMZ(プロキシサーバと L2SW),サーバセグメント(L2SW に,ファイルサーバ,統合ログ管理サーバ,認証サーバ,認証情報同期サーバが接続)がある。PC セグメントの L2SW,DMZ の L2SW,サーバセグメントの L2SW は,それぞれ FW に接続されている。FW はインターネットに接続され,インターネットの先に SaaS-X と IDaaS-Y がある。凡例:FW はファイアウォール,L2SW はレイヤ 2 スイッチ。注 1)IDaaS-Y は SaaS-X の認証に利用している。
図 1 E 社のネットワーク構成(概要)

IDaaS-Y を用いても,社内と同じ利用者 ID とパスワードで認証できるように,サーバセグメントに設置した認証情報同期サーバを経由して認証サーバと IDaaS-Y の認証情報を同期している。

F 次長は,全社に展開する前に,まずテレワーク実証実験環境(以下,T 環境という)を構築し,一部の従業員(以下,実験に参加する従業員を実験メンバという)に実際に利用してもらい,結果を経営陣に報告することにした。

〔T 環境の要件〕

T 環境においては,E 社の従業員の多くが実施している次の業務を,自宅や出張先から実施できるようにすることにした。

F 次長は,業務 1〜3 を実施できるよう,T 環境を,次のように整備する方針とした。

F 次長は,T 環境におけるセキュリティ要件を,次のように定め,対応するための対策を検討した。

〔要件 1 への対応〕

要件 1 への対応として,モバイルデバイス管理基盤とデバイス用ソフトウェアを提供する W 社のクラウドサービス(以下,MDM-W という)を利用することにし,貸与するスマホとノート PC にデバイス用ソフトウェアをインストールすることにした。また,MDM-W の認証は,IDaaS-Y を利用することにした。

MDM-W は,ノート PC の脆弱性修正プログラム及びマルウェア対策ソフトのインストール並びにマルウェア定義ファイルの更新にも利用することにした。

〔要件 2 への対応〕

要件 2 への対応として,IDaaS-Y を利用することにした。

まず,IDaaS-Y が対応している 2 要素認証について調査した。パスワード方式による認証に追加可能なものは次の 4 方式であった。

費用を抑えたいが,SMS 方式及び自動音声方式は認証の都度料金が発生する。また,FIDO 方式は,FIDO 認証に対応したスマホが必要となるが,貸与予定のスマホは FIDO 認証に対応していない。そこで,スマホアプリ方式を採用することにした。

OTP アプリは事前に次のようにして設定する。

IDaaS-Y の OTP アプリ初期設定用の QR コードを表示する機能へのアクセスは,E 社の利用者 ID でログインするときには,②E 社のネットワークからのアクセスだけに制限することにした。

次に,IDaaS-Y と各クラウドサービス間の認証連携について検討した。ノート PC から VD へアクセスする際の,VD と IDaaS-Y との認証連携は,RADIUS で行うことにした。VD から SaaS-X にアクセスする際の,SaaS-X と IDaaS-Y との認証連携は,図 2 のように OpenID Connect の認可コードフローでこれまでと同様に行うことにした。VD から会議ツール Z にアクセスする際の,会議ツール Z と IDaaS-Y との認証連携は,図 3 のように Implicit フローで行うことにした。

シーケンス図。左から VD,SaaS-X,IDaaS-Y(認可エンドポイント,トークンエンドポイント,ユーザ情報エンドポイント)。上から順に,VD から SaaS-X へ「ログイン要求」,SaaS-X から VD へ「認証要求」,VD 内で折り返し,VD から認可エンドポイントへ「転送された認証要求」,VD と認可エンドポイントの間の双方向「認証処理」,認可エンドポイントから VD へ「認証応答」,VD 内で折り返し,VD から SaaS-X へ「転送された認証応答」。その下に,横長の枠[ a ],[ b ],[ c ],[ d ],[ e ],[ f ]が上から順に 6 段並ぶ。最後に SaaS-X から VD へ「ログイン完了」。
図 2 SaaS-X と IDaaS-Y との認証連携
シーケンス図。左から VD,会議ツール Z,IDaaS-Y(認可エンドポイント,トークンエンドポイント,ユーザ情報エンドポイント)。上から順に,VD から会議ツール Z へ「ログイン要求」,会議ツール Z から VD へ「認証要求」,VD 内で折り返し,VD から認可エンドポイントへ「転送された認証要求」,VD と認可エンドポイントの間の双方向「認証処理」,認可エンドポイントから VD へ「認証応答」,VD 内で折り返し,VD から会議ツール Z へ「転送された認証応答」。その下に,横長の枠[ d ]が 1 段ある。最後に会議ツール Z から VD へ「ログイン完了」。
図 3 会議ツール Z と IDaaS-Y との認証連携

〔要件 3 への対応〕

要件 3 への対応として,DaaS-V の利用時は,IDaaS-Y による 2 要素認証に加えて,クライアント証明書によるデバイス認証を DaaS-V で行うことにした。社内にプライベート認証局を構築し,当該認証局の証明書によるクライアント証明書の検証が行われるように DaaS-V を設定することにした。クライアント証明書は MDM-W を利用して,ノート PC の TPM(Trusted Platform Module)に格納することにした。

〔要件 4 への対応〕

要件 4 への対応として,VD からインターネットへのアクセスは,全て E 社のネットワークを経由させることによってアクセス先の制限とアクセスの監視を行うことにした。

また,VD とノート PC との間でクリップボード及びディスクの共有を禁止するように DaaS-V を設定することにした。G さんが設定してみたところ,ノート PC からは,VD の閲覧,キーボード及びマウスによる操作,並びにマイク及びスピーカによる会話しかできなくなることが確認できた。しかし,この設定であっても③利用者が故意に社内情報を持ち出すおそれがある。これについては,簡単には技術的対策ができないので,利用規程で禁止することにした。

〔要件 5 への対応〕

要件 5 への対応として,VD,ノート PC 及びスマホに対するマルウェア感染の対策を検討した。

VD では,電子メールの添付ファイル開封及び Web アクセスによるマルウェア感染のおそれがある。仮に VD がマルウェアに感染した場合に被害調査のためのディジタルフォレンジックスを行おうとしても,マルウェア感染した VD のディスクイメージを取得するのに時間が掛かったり,提供してもらえなかったりすることも考えられる。そこで DaaS-V がオプションとして提供している U 社のクラウド型エンドポイント検知対応サービス(以下,EDR-U という)も契約し,マルウェアの検知及び駆除並びに調査に必要な情報の常時収集をすることにした。

ノート PC については,自由な Web アクセスを許可した場合,マルウェアに感染するリスク,及び利用者が VD を利用中に④マルウェアが社内情報を取得して持ち出すリスクが高くなる。そこで,それらのリスクを低減するために,MDM-W では,ノート PC から T 環境へのアクセスだけを許可し,⑤T 環境内のアクセスも必要最小限にする設定を行うことにした。

スマホについては,自由な Web アクセスを許可した場合でもマルウェア感染のリスクは十分低いと考えられたので,追加の対応は行わないことにした。

〔要件 6 への対応〕

要件 6 への対応として,ノート PC,スマホ及び各クラウドサービスで認証ログ,操作ログの記録を有効化することにした。また,各クラウドサービスにおいて記録した認証ログ,操作ログを取り出すための Web API が用意されていたので,統合ログ管理サーバにログを取り込み,ログ監視を一元的に行うことにした。

要件 1〜6 に対応した T 環境のネットワーク構成を図 4 に示す。

E 社の内部は図 1 と同じ構成(PC セグメント,DMZ,サーバセグメント,FW)。FW はインターネットに接続される。インターネットの先に,SaaS-X,会議ツール Z,DaaS-V(内部に VD),MDM-W,IDaaS-Y,EDR-U がある。FW と DaaS-V の間はインターネット VPN(筒の記号)で接続されている。スマホは携帯電話回線でインターネットに接続され,スマホとノート PC は無線 LAN で接続される。凡例:筒の記号はインターネット VPN。注記:太線は T 環境構築に当たって追加されるものを示す(太線で描かれているのは,会議ツール Z,DaaS-V と VD,MDM-W,EDR-U,スマホ,ノート PC,及び FW と DaaS-V の間のインターネット VPN)。
図 4 T 環境のネットワーク構成(概要)

〔クラウドサービス固有の課題〕

T 環境で利用するクラウドサービスに脆弱性があれば,それを悪用する攻撃によって,E 社のセキュリティが侵害されるおそれがある。そこで,各クラウドサービスプロバイダ(以下,CSP という)に,脆弱性対策の状況についてのヒアリング及びサービスの基盤についての脆弱性検査を実施させてもらえないか確認した。そうしたところ,各 CSP ともヒアリングには対応するが,利用者による脆弱性検査は,サービス提供に影響を及ぼすおそれがあるので許可していないとの回答だった。そこで F 次長は,脆弱性検査を⑥別の方法とヒアリングで代替することにした。

〔実証実験の実施〕

各 CSP の脆弱性対策には大きな問題がなかった。そこで,図 4 の T 環境を構築し,システム企画部,人事部,営業部から実験メンバをそれぞれ 20 名ずつ計 60 名募った。実験メンバには,T 環境を利用できるように設定したスマホとノート PC を貸与し,期間を 3 か月間として,実証実験を開始した。

実証実験後,実験メンバにアンケートを採ったところ,多くの実験メンバから,これまでより利便性・生産性が向上したとの意見が集まった。また,二つの要望が出た。

〔公衆無線 LAN の利用〕

一つ目の要望は,出張の移動中又は宿泊先でスマホの通信回線が利用できなかった場合,公衆無線 LAN を利用したいというものである。国内の多くの公衆無線 LAN 環境では,無線 LAN アクセスポイントへの接続時に Web で利用者登録画面や利用規約同意画面が表示され,利用者が利用者情報を登録したり,利用規約への同意をしたりした後にインターネット接続が許可される仕組みになっている。ノート PC ではアクセス先を T 環境宛に制限していたので,これらの画面が表示されず,公衆無線 LAN を利用できなかったということであった。

そこで,F 次長は,ノート PC のアクセス先制限を緩和して利用者が公衆無線 LAN 環境に接続できるようにした場合のリスクを評価した。その結果,フィッシングサイトなどに誘導されるリスクが高まると考えられたが,仮に DaaS-V のフィッシングサイトで,利用者の入力が詐取されたとしても,その情報を悪用した不正アクセスは⑦検討済みの他の対策で防止できるので,ノート PC のアクセス先制限を緩和することにした。

〔業務文書のノート PC へのダウンロード〕

二つ目の要望(以下,要望 X という)は,営業部の実験メンバから,顧客を訪問した際の業務文書の閲覧・作成について挙がったものである。持込端末のインターネット接続が禁止されている顧客を訪問した際は,VD にアクセスできない。そこで,会社を出た後,訪問前にファイルサーバ上の営業資料をノート PC にダウンロードしておき,それを閲覧したり,ノート PC 上で顧客打合せの議事録の文書を作成し,訪問後,会社に戻る前にその文書をファイルサーバにアップロードしたりしたいということであった。

要望 X を実現すると,ノート PC に対する盗難・紛失時の情報漏えい対策が必要になる。次は,この件についての G さんと F 次長の会話である。

F 次長は,検討の結果,要望 X には原則として対応しないが,希望者には個別に申請してもらい,⑨申請が許可された利用者のノート PC については,E 社のネットワークとのインターネット VPN での接続を可能とする方針にした。

F 次長は,実証実験の結果,実験メンバからの要望及びそれへの対応,並びに残存するリスク及びその低減策についてシステム企画部長と経営陣に報告した。経営陣はテレワーク環境を全社に展開することを決めた。

設問 1(3)の中に示されている図(解答群)。左から VD,SaaS-X 又は会議ツール Z,IDaaS-Y(認可エンドポイント,トークンエンドポイント,ユーザ情報エンドポイント)の各ライフライン。ア:SaaS-X 又は会議ツール Z が自分自身で「トークンを検証」。イ:トークンエンドポイントから SaaS-X 又は会議ツール Z へ「トークン応答」。ウ:SaaS-X 又は会議ツール Z からトークンエンドポイントへ「トークン要求」。エ:トークンエンドポイントが自分自身で「認可コードを検証」。オ:ユーザ情報エンドポイントから SaaS-X 又は会議ツール Z へ「ユーザ情報応答」。カ:SaaS-X 又は会議ツール Z からユーザ情報エンドポイントへ「ユーザ情報要求」。

出題趣旨(IPA)

昨今,パブリッククラウドの活用が進んでいる。一方,パブリッククラウドを利用する上でのセキュリティ対策を利用者が適切に設計・設定していなかったことによる情報漏えい事故も多発している。また,ゼロトラストという概念をよく聞くようになった。それに基づけば,通信相手を常に認証する必要があるが,例えば多要素認証に対応した,クラウドサービスの認証基盤(IDaaS)やMDMなど,そのための技術,環境が整ってきている。本問では,働き方改革のためのマルチクラウドを活用したテレワーク環境の構築を題材に,クラウドサービス利用時のリスクを適切に評価する能力を問う。

採点講評(問全体・IPA)

問2では,働き方改革のためのマルチクラウドを活用したテレワーク環境の構築を題材に,クラウドサービス利用時のリスク評価について出題した。

設問と解答例

設問1(1)

本文中の下線①について,QR コードに含まれ,OTP アプリが OTP の生成に使用する情報を,解答群の中から選び,記号で答えよ。 解答群 ア cookie イ シェアードシークレット ウ シリアル番号 エ タイムスタンプ オ ディジタル署名 カ フィンガプリント

解答例

  • イ
解説

本文の根拠

〔要件 2 への対応〕

OTP アプリは TOTP(Time-Based One-Time Password Algorithm)に従って OTP を表示する。

〔要件 2 への対応〕

OTP アプリ初期設定用の QR コードを表示させる。

OTP アプリは TOTP に従って OTP を表示する。TOTP(RFC 6238)は HOTP(RFC 4226)の時間版で,カウンタ値の代わりに時刻から求めた値を使う。RFC 6238 は,OTP を作る側(prover)と確かめる側(verifier)が同じ秘密を共有することを要件としている。この共有された秘密が QR コードに含まれ,OTP アプリが OTP の生成に使う情報で,解答群ではシェアードシークレット(イ)である。

時刻はスマホ自身の時計から得られるので,QR コードに含める必要がない。第三者に推測されない秘密がなければ,誰でも同じ OTP を作れてしまうので,QR コードにそれが含まれていなければならない。

ア(cookie)はブラウザがサーバへ送る情報,ウ(シリアル番号)は機器の識別情報,エ(タイムスタンプ)は時刻情報で,いずれも OTP を他人が作れなくするための秘密にはならない。オ(ディジタル署名)とカ(フィンガプリント)は,真正性の確認や識別のための情報である。

採点講評(IPA)

設問1(1)は,正答率が低かった。知識として知らなくとも,ワンタイムパスワード生成に求められる要件から,QRコードには第三者に推測されない秘密情報が含まれている必要があると考えられれば解答できる問題であった。

設問1(2) 30字以内

本文中の下線②について,E 社のネットワークからのアクセスだけに制限しなかった場合,OTP についてどのような問題が起きると考えられるか。起きると考えられる問題を 30 字以内で述べよ。

解答例

  • 第三者のOTPアプリで不正にOTPを生成される。
解説

本文の根拠

〔T 環境の要件〕 要件 2

T 環境へのログインパスワードが見破られても,それだけでは不正アクセスできないように,2 要素認証を行う。

〔要件 2 への対応〕

IDaaS-Y の OTP アプリ初期設定用の QR コードを表示する機能へのアクセスは,E 社の利用者 ID でログインするときには

QR コードには OTP を作るための秘密が含まれている。この QR コードを表示する機能に,E 社のネットワーク以外(インターネット上のどこか)からもアクセスできるとすると,パスワードを知った攻撃者が,自分で QR コードを表示させ,自分の OTP アプリに読み込ませることができる。

こうなると,要件 2 の“ログインパスワードが見破られても,それだけでは不正アクセスできない”という 2 要素認証の目的が果たせない。攻撃者が自分の OTP アプリで正しい OTP を作れるからである。社内のネットワークに限れば,従業員でない第三者はこの機能に到達できない。

字数は 30 字以内で,解答例は 24 字である。“第三者の OTP アプリ”と“不正に OTP を生成される”の二つを残す。“なりすまされる”のように書くと,OTP についての問題という問いから外れる。

設問1(3) 解答欄6つ

図 2 及び図 3 中のa〜fに入れる適切な通信メッセージ又は処理を,解答群の中から選び,ア〜カの記号で答えよ。

〔a〕解答例

  • ウ

〔b〕解答例

  • エ

〔c〕解答例

  • イ

〔d〕解答例

  • ア

〔e〕解答例

  • カ

〔f〕解答例

  • オ
解説

本文の根拠

〔要件 2 への対応〕

VD から SaaS-X にアクセスする際の,SaaS-X と IDaaS-Y との認証連携は,図 2 のように OpenID Connect の認可コードフローでこれまでと同様に行うことにした。

〔要件 2 への対応〕

VD から会議ツール Z にアクセスする際の,会議ツール Z と IDaaS-Y との認証連携は,図 3 のように Implicit フローで行うことにした。

図 2 は認可コードフローである。「転送された認証応答」で SaaS-X は認可コードを受け取る。OpenID Connect Core 1.0 では,認可コードフローで,クライアントは認可コードを使ってトークンエンドポイントにトークンを要求する。したがって a は SaaS-X からトークンエンドポイントへの「トークン要求」(ウ),b はトークンエンドポイントでの「認可コードを検証」(エ),c は「トークン応答」(イ)の順になる。トークンを受け取った SaaS-X は d の「トークンを検証」(ア)を行い,e の「ユーザ情報要求」(カ),f の「ユーザ情報応答」(オ)で利用者の情報を得て,ログインを完了する。

図 3 は Implicit フローである。OpenID Connect Core 1.0 は,Implicit フローではトークンが全て認可エンドポイントから返され,トークンエンドポイントは使われないとしている。したがって,図 3 の「転送された認証応答」にはトークンが既に含まれ,会議ツール Z はそれを検証する(ア)だけで,ログイン完了に進む。

図 2 の d と図 3 の d はどちらも「トークンを検証」(ア)である。トークン要求(ウ)→認可コードの検証(エ)→トークン応答(イ)→トークンの検証(ア)→ユーザ情報要求(カ)→ユーザ情報応答(オ)の順序を押さえる。

採点講評(IPA)

設問1(3)は,正答率が高かった。発行された秘密情報(トークンや認可コード)をどのタイミングで検証すれば認証の安全性が担保されるかがよく理解されていた。

設問2 30字以内

本文中の下線③について,ノート PC を介して持ち出す方法を 30 字以内で具体的に述べよ。

解答例

  • 社内情報を表示した画面をカメラで撮影するという方法
解説

本文の根拠

〔要件 4 への対応〕

ノート PC からは,VD の閲覧,キーボード及びマウスによる操作,並びにマイク及びスピーカによる会話しかできなくなることが確認できた。

〔要件 4 への対応〕

VD とノート PC との間でクリップボード及びディスクの共有を禁止するように DaaS-V を設定することにした。

クリップボードとディスクの共有を禁止すると,VD の中のファイルをノート PC へコピーしたり,ノート PC に保存したりはできない。ノート PC からできるのは,VD の閲覧,キーボード・マウスによる操作,マイク・スピーカによる会話だけである。

その中で技術的に防げないのは,VD の画面そのものを見ることである。社内情報を表示した画面を,利用者が自分のカメラ(スマホなど)で撮影すれば,ノート PC を介して持ち出せる。本文が“簡単には技術的対策ができないので,利用規程で禁止する”としているのは,このような方法を指す。

字数は 30 字以内で,解答例は 25 字である。“社内情報を表示した画面を”“カメラで撮影する”の二つを残す。設問 3(1) はマルウェアによる持ち出しで,こちらは利用者自身による持ち出しという違いに注意する。

設問3(1) 35字以内

本文中の下線④について,マルウェアが社内情報を取得する方法を 35 字以内で具体的に述べよ。

解答例

  • 社内情報を表示した画面のスクリーンショットを取るという方法
解説

本文の根拠

〔要件 5 への対応〕

マルウェアが社内情報を取得して持ち出すリスク

〔要件 4 への対応〕

VD とノート PC との間でクリップボード及びディスクの共有を禁止するように DaaS-V を設定することにした。

ノート PC がマルウェアに感染した場合,要件 4 の対応(クリップボードとディスクの共有の禁止)で,マルウェアがファイルやクリップボードの内容を取得することは防がれている。それでも,ノート PC には VD の画面が表示されるので,マルウェアがその画面の内容を取得できる。

具体的には,マルウェアが,VD の画面を表示したノート PC のスクリーンショットを取って,社内情報を取得する。

字数は 35 字以内で,解答例は 29 字である。“社内情報を表示した画面の”“スクリーンショットを取る”の二つを残す。設問 2 の“カメラで撮影する”と異なり,こちらは,マルウェアがノート PC 上で行う動作である。

設問3(2)

本文中の下線⑤について,T 環境内のアクセスも必要最小限にする場合,許可するアクセス先を解答群の中から全て選び,記号で答えよ。 解答群 ア DaaS-V イ EDR-U ウ IDaaS-Y エ MDM-W オ SaaS-X カ 会議ツール Z

解答例

  • ア,ウ,エ
解説

本文の根拠

〔要件 5 への対応〕

ノート PC から T 環境へのアクセスだけを許可し

〔要件 1 への対応〕

また,MDM-W の認証は,IDaaS-Y を利用することにした。

〔要件 2 への対応〕

ノート PC から VD へアクセスする際の,VD と IDaaS-Y との認証連携は,RADIUS で行うことにした。

ノート PC が T 環境内でアクセスするのは,業務で VD を使うための DaaS-V(ア),ノート PC の設定・更新のための MDM-W(エ),それらの認証のための IDaaS-Y(ウ)である。MDM-W の認証は IDaaS-Y を利用し,ノート PC から VD へアクセスするときの認証も IDaaS-Y と連携するので,IDaaS-Y もアクセス先に含まれる。

SaaS-X(オ)と会議ツール Z(カ)は,VD の中から使うクラウドサービスで,ノート PC から直接アクセスする必要がない。EDR-U(イ)も,DaaS-V がオプションとして提供しているサービスで,VD を対象としている。したがって,ノート PC から許可するのは,ア,ウ,エである。

ノート PC から直接アクセスするクラウドサービスと,VD からアクセスするクラウドサービスを混同した解答が散見されたと,採点講評は述べている。誰が(ノート PC か VD か)アクセスするかを分けて考える。

採点講評(IPA)

設問3(2)は,正答率がやや低かった。ノートPCからアクセスするクラウドサービスと,仮想デスクトップからアクセスするクラウドサービスを混同した解答が散見された。

設問4 35字以内

本文中の下線⑥について,どのような方法か。35 字以内で述べよ。

解答例

  • セキュリティ対策についての第三者による監査報告書で確認するという方法
解説

本文の根拠

〔クラウドサービス固有の課題〕

利用者による脆弱性検査は,サービス提供に影響を及ぼすおそれがあるので許可していないとの回答だった。

〔クラウドサービス固有の課題〕

各 CSP ともヒアリングには対応する

各 CSP は,利用者が自分で脆弱性検査をすることを許可していない。そのため,脆弱性検査の代わりになる方法と,ヒアリングで確認することになる。自分で検査できないなら,CSP のセキュリティ対策を,第三者が確認した結果で確かめるのが現実的である。

そこで,CSP のセキュリティ対策についての第三者による監査報告書を入手して確認する,という方法になる。第三者が評価した結果なので,CSP 自身の説明(ヒアリング)だけよりも信頼できる。

字数は 35 字以内で,解答例は 34 字である。“セキュリティ対策についての”“第三者による監査報告書”“確認する”を残す。“自社で検査する”などは,本文が許可されないとしている方法なので,答えにならない。

設問5 35字以内

本文中の下線⑦について,該当する対策を本文中の用語を用いて 35 字以内で述べよ。

解答例

  • DaaS-Vでのクライアント証明書によるデバイス認証
解説

本文の根拠

〔公衆無線 LAN の利用〕

仮に DaaS-V のフィッシングサイトで,利用者の入力が詐取されたとしても,その情報を悪用した不正アクセスは

〔T 環境の要件〕 要件 3

T 環境へは,貸与するノート PC からだけログインできるようにする。

〔要件 3 への対応〕

クライアント証明書によるデバイス認証を DaaS-V で行うことにした。

公衆無線 LAN を使うと,フィッシングサイトに誘導され,利用者の入力(ID・パスワード,OTP など)が詐取されるおそれがある。しかし,その情報を使って攻撃者が別の端末から DaaS-V にログインしようとしても,要件 3 で定めた“貸与するノート PC からだけログインできる”仕組みで防げる。

それを実現するのが,要件 3 への対応として決めた,DaaS-V でのクライアント証明書によるデバイス認証である。クライアント証明書は MDM-W を使ってノート PC の TPM に格納するので,ノート PC 以外の端末は,詐取した情報を持っていても,証明書が無くてログインできない。

字数は 35 字以内で,解答例は 26 字である。“本文中の用語を用いて”と指定されているので,“クライアント証明書によるデバイス認証”をそのまま使い,“DaaS-V での”を付ける。2 要素認証(OTP)は,フィッシングで入力が詐取されると破られる可能性があるので,この問いの答えにしない。

設問6(1) 解答欄1つ

本文中のgに入れる適切な字句を,20 字以内で述べよ。

〔g〕解答例

  • パスワードの推測によってログイン
解説

本文の根拠

〔業務文書のノート PC へのダウンロード〕

ノート PC の盗難・紛失時の情報漏えい対策としては,OS に搭載されたディスク暗号化機能を使えばよいのではないでしょうか。

〔業務文書のノート PC へのダウンロード〕

紛失したノート PC を第三者に取得されたときに,

G さんが提案した OS のディスク暗号化機能は,ディスクの内容を暗号化し,利用者がログインすると復号される。F 次長は,紛失したノート PC を第三者が取得したときに,gされてディスクが復号されてしまうおそれがあるので,これだけでは不十分だとする。

ログインできればディスクは復号されるので,第三者が利用者のログイン用のパスワードを推測してログインすると,暗号化していても中身を読まれる。続く F 次長の対策は,ログインの方式を PIN コード(TPM を利用)に強制し,誤入力が続くと回復用パスワードが必要になるようにするもので,推測でのログインを防ぐ内容になっている。

字数は 20 字以内で,解答例は 16 字である。“パスワードの推測”と“ログイン”の二つを残す。単に“盗まれる”では,なぜ復号されるのかの説明にならない。

設問6(2) 25字以内

本文中の下線⑧について,利用者に設定させるとどのような問題が起きると考えられるか。起きると考えられる問題を 25 字以内で具体的に述べよ。

解答例

  • 容易に推測可能なPINコードを設定する。
解説

本文の根拠

〔業務文書のノート PC へのダウンロード〕

システム管理者が事前にランダムなものを設定する

〔業務文書のノート PC へのダウンロード〕

6 桁の数字だと総当たり攻撃で破られそうですが,大丈夫なのでしょうか。

下線⑧は,PIN コードを 6 桁の数字とし,システム管理者が事前にランダムなものを設定するとしている。管理者が設定するのは,利用者に設定させると問題があるからである。利用者は覚えやすい数字(誕生日,電話番号,同じ数字の並びなど)を選びがちで,第三者に推測されやすい。

6 桁の数字は組合せが少なく,推測されやすい PIN コードを使うと,誤入力が 5 回連続するまでの試行で当たるおそれがある。そのため,ランダムなものを管理者が設定する。

字数は 25 字以内で,解答例は 20 字である。“容易に推測可能な”と“PIN コードを設定する”の二つを残す。採点講評は,本問では PIN コードとパスワードが区別されていたのに取り違えた解答が散見されたとしているので,“パスワード”と書かない。

採点講評(IPA)

設問6(2)は,正答率がやや高かった。利用者に秘密情報を設定させるリスクがよく理解されていた。しかし,本問中ではPINコードとパスワードが明確に区別されていたのにもかかわらず,PINコードとパスワードを取り違えた誤った解答も散見された。

設問6(3) 30字以内

本文中の下線⑨について,DaaS-V へのアクセスと同等のセキュリティを実現するためには,FW の VPN 機能にどのような仕組みが必要か。必要な仕組みを 30 字以内で具体的に述べよ。

解答例

  • クライアント証明書によるデバイス認証を行う仕組み
解説

本文の根拠

〔業務文書のノート PC へのダウンロード〕

申請が許可された利用者のノート PC については,E 社のネットワークとのインターネット VPN での接続を可能とする

〔要件 3 への対応〕

クライアント証明書によるデバイス認証を DaaS-V で行うことにした。

DaaS-V へのアクセスでは,IDaaS-Y による 2 要素認証に加えて,クライアント証明書によるデバイス認証を DaaS-V で行い,貸与したノート PC だけがログインできるようにしている(要件 3)。下線⑨は,許可された利用者のノート PC を,FW の VPN 機能で E 社のネットワークと直接つなぐ方針である。

DaaS-V へのアクセスと同等のセキュリティにするには,VPN 接続でも同じ水準の認証が必要で,パスワードや OTP の認証だけでなく,ノート PC の TPM に格納したクライアント証明書によるデバイス認証を,FW の VPN 機能でも行えるようにする。

字数は 30 字以内で,解答例は 24 字である。“クライアント証明書による”“デバイス認証を行う”“仕組み”を残す。VPN の暗号化(インターネット VPN であること)は,既に前提に含まれているので,答えの中心にしない。

出典:令和2年度 10月 情報処理安全確保支援士試験 午後Ⅱ 問2(表記を一部改変)