見出し画像

【解答例&解説】令和6年度 春期 情報処理安全確保支援士試験 午後 問4

情報処理安全確保支援士試験の、解答例とオリジナル解説を公開します。
あくまでも解答例ですので、正解はIPAのサイト(2024年7月2日正午公開)で確認してくださいね。
この記事の最終更新日は、2024年6月8日です。
皆さまの解答例、ご意見も参考にしたいので、コメントお待ちしております。


■解答例

設問1(1)a ア
設問1(2)b personal
設問1(3)c 4
設問2(1)d 5
設問2(2)e チェック例外 又は NoSuchAlgorithmException
設問2(3)システム運用担当者
      情報 氏名、住所、電話番号、メールアドレス
      場所 エ
設問2(3)システム開発者
      情報 氏名、住所、電話番号、メールアドレス
      場所 オ
設問2(4)f SHA-256
設問2(5)g ソースコード ?
       又は
       処理内容 処理を異常終了させる
設問2(6)h finally
設問2(7) ア

■解説

設問1(1)a

解答:ア
解説:問題文のヒントから考える問題
重要情報が記録されているCSVファイルを閲覧できてはいけない人〔 a 〕が閲覧できてしまう。〔 a 〕は誰?という設問です。
問題文〔 a 〕の前後にヒント(解答への制約)が無いか確認します。

よく読むと「問題に対する対策」と「保険的対策」の2つの対策を行っています。〔 a 〕がcsvファイルを閲覧できてしまう対策として「表2のbatchappduserのグループを変更する」と書いてあるため、〔 a 〕の解答には、batchappduserのグループ変更が関係することがわかります。

解答群は5個用意されています。

そもそも、重要情報を見てもいい人といけない人を確認しましょう。
問題文表1のNo.18ですね。

重要情報取扱運用者は重要情報を参照するため、解答群エとオは除外。
正解はア、イ、ウのいづれかになる。
次に、「システム運用担当者」と「システム開発者」と問題文のヒントの「batchappuser」のアカウント設定を表2と表3で確認します。

システム開発者は、データ連携機能が動作する本番バッチサーバへアクセス権が無いため、解答はアになりそうです。
さらに問題文ヒントの「batchappuser」についてヒントを探します。
図1に、ヒントになりそうなことが書いてあります。
Linuxを知らない人には、意味がわかりませんね。
わからない場合は、解答は「ア」にして次の設問に進みましょう。

細かい説明は省略しますが、パーミッションとは、権限設定のことです。
「770」の各数値は、オーナー、グループ、その他ユーザの各権限を表します。
パーミッション770とは、
7 オーナーは、読む・書く・実行、全て権限あり
7 グループも、読む・書く・実行、全て権限あり
0 その他ユーザ、読む・書く・実行、全て権限なし
パーミッション660とは、
6 オーナーは、読む・書く、権限あり。実行権限なし
6 グループも、読む・書く、権限あり。実行権限なし
0 その他ユーザ、読む・書く・実行、全て権限なし
です。

すなわち、表2に戻ると、「batchappuser」が所属する「operation」に同じく所属している「システム運用担当者」は、csvファイルを閲覧する権限があることがわかります。やっぱり答えは「ア」です。

設問1(2)b

解答:personal
解説:問題文のヒントから考える問題
設問1(1)で確認したことより、「batchappuser」が所属するグループの変更先は、「operation」より権限が低く、本番環境へのアクセス権は必要な「personal」になります。

設問1(3)c

解答:4
解説:問題文から抜粋問題
表4のNo.3でcsvファイルを暗号化して、そのcsvファイルを読み込むのはNo.4です。読み込んでDB更新しているので、復号が必要です。

設問2(1)d

解答:5
解説:知識問題
プログラミング知識の必要な問題ですね。
プログラミング知識が無くても正解できるように、ヒントを探します。

[ e ]が発生すると、パスワードが平文で~と記載されています。
ということは、[ e ]が発生しなければ、パスワードは暗号化されていると考えられます。図3の中で暗号化に関係しそうな箇所を探すと、5行目に"SHA-1"が見つかります。("SHA-1"がハッシュ関数だという知識は必要)
プログラミングがわからなければ「5」で解答しましょう。

次に図3ソースコードの解答に関連する部分を確認しましょう。

必要な知識① try とは?

引用:Java入門 try文
https://www.javadrive.jp/start/exception/index2.html

必要な知識② NoSuchAlgorithmException とは?
指定されたアルゴリズムが使用できない場合に発生するチェック例外です。

必要な知識③ execute とは?
「呼び出す」とか「実行する」ですね。

必要な知識④ DBコネクションオブジェクト とは?
データベース接続を管理するオブジェクトです。プログラムからデータベースに接続するときに必要です。データベースへの接続から切断までの手順を管理・実行します。

必要な知識①と②の組み合わせで、以下のように考えて解答します。
5行目のSHA-1ハッシュ値生成が正常に行われたのかのチェックで、
チェック例外が発生(NoSuchAlgorithmException)した場合、パスワードが平文でユーザマスタに登録されてしまう。
[ d ]5
[ e ]チェック例外 又は NoSuchAlgorithmException

設問2(2)e

解答:チェック例外 又は NoSuchAlgorithmException
解説:知識問題
解説は、設問2(1)d 参照。

設問2(3)

解答:システム運用担当者
   情報 氏名、住所、電話番号、メールアドレス
   場所 エ
解答:システム開発者
   情報 氏名、住所、電話番号、メールアドレス
   場所 オ
解説:問題文から抜粋問題
・情報について
アクセスが禁止されている情報は、図2と表1No.5を比較して確認します。
ユーザマスタテーブルのパスワードは、ハッシュ値のためアクセスできないと考えます。

・場所について
プログラム実行に関するデータ保存場所を表1で確認します。

No.1 プログラムは、APサーバに実装される。
No.15 APサーバのプログラムは、APログをログサーバに転送する。
    ログサーバはAPログをテキストファイルで保存する。
No.16 APサーバの標準出力はAPサーバの/var/log/serverlog配下の
    テキストファイルに出力する
・APサーバの/var/log/serverlog
 オーナーはwebappuser
 パーミッション 774
パーミッション774とは、
7 オーナーは、読む・書く・実行、全て権限あり
7 グループも、読む・書く・実行、全て権限あり
4 その他ユーザ、読む・実行、権限あり。書く権限無し
・APサーバの/var/log/serverlog配下のテキストファイル
 オーナーはwebappuser
 パーミッション 664
パーミッション660とは、
6 オーナーは、読む・書く、権限あり。実行権限なし
6 グループも、読む・書く、権限あり。実行権限なし
4 その他ユーザ、読む・実行、権限あり。書く権限無し
つまり、参照は誰でもできるということですね。
 
次に、システム運用管理者とシステム開発者がアクセスできる場所を確認します。再び、表2を確認。

システム運用管理者は、APサーバにアクセスできます。
システム開発者は、本番ログサーバにアクセスできます。
これらのことより、
システム運用管理者がデータにアクセスできる場所は「エ」
システム開発者がデータにアクセスできる場所は、「オ」

設問2(4)f

解答:SHA-256
解説:知識問題
SHA-1に変わるものと言えば、SHA-256という知識問題。
SHA-256は、ハッシュ関数の中で、実装のしやすさ、処理速度、安全性などの面で優れており、最も普及しています。

設問2(4)g ソースコードまたは処理内容

解答:処理を異常終了させる
解説:知識問題
[ g ]の上に「//回復不能な例外発生」のコメントがあるため、これ以上処理できないため、異常終了ですね。プログラミングの知識問題です。

設問2(6)h

解答:finally
解説:知識問題
設問2(1)の「必要な知識① try とは?」で説明した、try,
catch,に続く[ h ]が空欄になっています。
tryでのチェック結果に関係なく、必ず実行する処理の記述が考えられます。

引用:Java入門 必ず実行する処理の記述(try..catch..finally)
https://www.javadrive.jp/start/exception/index3.html

tryでのチェック結果に関係なく、必ず実行する処理とは何か?
下記問題の対策ですね。

設問2(7)

解答:ア
解説:知識問題
これもプログラミングの知識問題。

レインボーテーブル攻撃とは、ハッシュ値から元の平文を解読する攻撃のひとつです。あらかじめハッシュ値と平文候補を準備しておき、ハッシュ値の総当たり攻撃を行う手法です。

ソルト(salt)は元の平文に任意の文字列を追加してハッシュ化する手法です。 ハッシュ値から平文を解読されにくくなるため、レインボーテーブル攻撃対策になります。
設問のヒント
①saltは32バイト固定長
②ユーザーマスターテーブルの定義に変更はない
から解答を考えます。
が、ヒントだけからは答えは出せません………。

プログラミングのわかる方へ、解説をお願いします。m(_ _)m


最後までお読みいただきありがとうございました。
少しでも参考になれば幸いです。

■更新履歴

2024/4/21(日) 試験日
2024/6/8(日) 作成・公開


この記事が気に入ったらサポートをしてみませんか?