登録なしで、Spine の学習体験を試す

Spine は、資格試験の過去問を本番の出題形式に沿って解答し、記述式・論述式は採点基準(ルーブリック)に基づく AI 採点でフィードバックを受けられる学習サービスです。このページでは、令和6年度 秋期 応用情報技術者試験 午後問題の問1(情報セキュリティ・必須問題)を、登録なしでそのまま解けます。

  1. 下の問題文を読み、選択式・記述式の設問に答える
  2. 「答え合わせ」を押すと、選択式は自動採点、記述式は模範解答・解説・採点基準を表示
  3. 記述式が実際にどう AI 採点されるかはAI採点例(初回回答 → 改善 → 得点変化)で確認する

出典: 令和6年度 秋期 応用情報技術者試験 午後問題 問1(独立行政法人 情報処理推進機構(IPA))。解説と採点基準は Spine が独自に作成したものです。

情報セキュリティ(必須問題) ・ 令和6年度 秋期 応用情報技術者試験 午後問題 問1

パスワードはなぜハッシュ化するのか — 攻撃と対策を事例で説明できるようにする

科目B(旧 午後試験)の情報セキュリティは、選択の余地がない全員必須の分野です。本問は、新規開発した販売 Web サイトのペネトレーションテスト結果を題材に、パスワードの保管方法(ハッシュ化)、それを破る攻撃(総当たり・レインボーテーブル攻撃)、そして強化策(ソルト・ペッパー)までを一続きの事例として問います。用語を知っているだけでは得点できず、「その対策でなぜ攻撃が成立しなくなるのか」を制限字数内で言語化できるかが試されます。

この問題で学べること

  • パスワードをハッシュ値で保存する理由 — 一方向性(ハッシュ値から元のパスワードを割り出すことの困難さ)が、漏えい時に何を守るか
  • 使用できる文字種と桁数からパスワードの組合せ総数を概算し、総当たり攻撃の現実性を見積もる方法
  • ソルトとペッパーの違い — 「どこに保存されるか」の違いが、会員テーブルを窃取された場合の耐性の差になる
  • 「25字以内」「35字以内」の制限字数で、問われている特性・理由だけを過不足なく書き切る記述の型

記述式の採点観点

本問の記述式設問を、Spine の AI 採点は「知識・理解度(内容)」と「論理性(構造)」の 2 観点で採点します。観点ごとの配点と評価レベルの定義(採点基準)は、下の代表設問について解答前から全文を公開しており、ほかの設問についても答え合わせ後に設問単位で表示されます。この採点基準は IPA の公式採点ではなく、公表されている模範解答・出題趣旨をもとに Spine が独自に作成したものです。

採点基準のプレビューと、よくある誤答の例 — 設問1

代表として、設問1(パスワードをハッシュ化して保存するメリットを 25 字以内で説明する設問)の採点基準を、 解答前から全文公開します。ほかの設問の採点基準・模範解答は答え合わせ後に設問ごとに表示されます。

AI採点で使われる採点基準(本設問・配点3点)

知識・理解度(内容) 2点
  • 2点 ハッシュ値から元のデータを割り出すことが困難であるという一方向性の特性を正しく理解し、記述している。
  • 1点 パスワードがわからないことには触れているが、ハッシュ値の特性(割り出しの困難さ)についての説明が不十分である。
  • 0点 ハッシュ値の特性について誤った理解を示している、または未解答。
論理性(構造) 1点
  • 1点 情報漏えい時のメリットとして、パスワードが保護される論理構造が明確に示されている。
  • 0点 メリットとしての論理構造が不明確、または破綻している。
  • 0点 未解答または無関連な記述。

この設問で多いのが「パスワードが暗号化されて読めなくなるから。」という回答です。方向は合っていますが、 上の「知識・理解度」の観点が 1 点評価にとどまり、合計 2/3 点になります。用語の正確さ(暗号化 ≠ ハッシュ化)と、問われている「特性」の明示で 2/3 → 3/3。

採点前後の比較(AI採点例)で減点理由とフィードバックを見る →

問1必須問題・配点20点

Webサイトのセキュリティに関する次の記述を読んで、設問に答えよ。

F社は、日用雑貨を製造・販売する中堅企業である。このたび、販路拡大を目的として自社製品を販売するWebサイト(以下、本システムという)を新規に開発した。本システムは、D社クラウドサービス上に構築しており、Webサーバとデータベース(以下、DBという)サーバから成り、D社クラウドサービスが提供するファイアウォール(以下、FWという)及びWebアプリケーションファイアウォール(以下、WAFという)を経由してインターネットからアクセスされる予定である。
本システムの開発環境のネットワーク構成(抜粋)を図1に示す。なお、本システムはリリース前であり、F社開発環境の特定のIPアドレスからだけアクセスできるようにFWで制限している。

図1 本システムの開発環境のネットワーク構成(抜粋)
図1 本システムの開発環境のネットワーク構成(抜粋)

本システムの主な仕様を次に示す。

  • 会員登録時に自動で発行される会員番号と会員が設定したパスワードをログインフォームに入力してログインする。商品の購入はログイン後に行う。
  • パスワードとして使用できる文字は、英数字に一部の記号を加えた70種類である。
  • パスワードは、6字以上16字以下で設定する。
  • 会員テーブルは、会員番号、メールアドレス、パスワードのハッシュ値、姓、名、住所、電話番号の7フィールドで構成されている。パスワードのハッシュ値は、会員が設定したパスワードをハッシュ関数によってハッシュ化したものである。

F社情報セキュリティ部のG部長は、本システムのリリース前にペネトレーションテストを実施することを決定し、H主任をリーダーに任命した。H主任は、セキュリティベンダーであるU社に本システムのペネトレーションテストの実施を依頼した。

ペネトレーションテストは、U社内のPCからインターネット、FW及びWAFを経由して本システムにアクセスする経路で実施した。

ペネトレーションテスト期間中は、FW及びWAFに対して次の変更を行った。

  • FWに対する変更
    通信を許可するアクセス元IPアドレスとして、ペネトレーションテストに用いるU社のIPアドレスを追加する。
  • WAFに対する変更
    攻撃を検知した際には、通信の遮断は行わず、検知したことだけを記録する。

〔ペネトレーションテストの結果〕

ペネトレーションテストの結果、次の手順(以下、本シナリオという)で会員のパスワードが推測されて、不正にアクセスされてしまうことが確認された。

  1. SQLインジェクション攻撃によって会員テーブルのデータを取得する。このとき取得した会員テーブルのデータ(抜粋)を表1に示す。
  2. レインボーテーブル攻撃によって、手順1で取得した会員テーブル中のパスワードのハッシュ値から元のパスワードを推測する。
  3. 推測したパスワードを利用して、会員になりすまして本システムにログインする。
表1 取得した会員テーブルのデータ(抜粋)
表1 取得した会員テーブルのデータ(抜粋)

稼働中のシステムのログインフォームに対してパスワードを総当たりで試行するa攻撃では、システム側で試行回数に制限を設けて対策することができるが、レインボーテーブル攻撃ではそれができない。

H主任は、本システムの修正方針を整理するために、SQLインジェクション攻撃及びレインボーテーブル攻撃への対策を検討することにした。なお、ペネトレーションテスト期間中にWAFでSQLインジェクション攻撃が検知できていたが、仮に対策の一つが破られても他の対策で攻撃を防ぐという考え方に基づき、攻撃への対策をWAFだけに頼らず本システム自体でも行うことにした。

〔SQLインジェクション攻撃への対策の検討〕

本システムのソースコードを調査したところ、一部の処理で外部からの入力値をそのままSQL文に埋め込んでいる箇所が存在していた。そこで、対策として、bを利用する方式を採用することにした。この方式では、外部からの入力値が埋め込まれる箇所を専用の記号に置き換えたSQL文の雛形をあらかじめ作成しておき、専用の記号で置き換えた箇所にDB管理システム側で外部からの入力値を割り当てる。

〔レインボーテーブル攻撃への対策の検討〕

本システムでは会員のパスワードをハッシュ化して保存しているが、パスワードそのものにハッシュ関数を1回適用しただけであったので、レインボーテーブル攻撃に対して脆弱であった。そこで、パスワードをハッシュ化する際に、次の三つの処理を組み合わせて実施することにした。

  1. ソルトを用いた処理
    • パスワードをハッシュ化する際に、ソルトを付加した上でハッシュ化する。
    • ソルトとして、会員ごとに異なるランダムな文字列を用意し、会員テーブルに格納する。
  2. ペッパーを用いた処理
    • パスワードをハッシュ化する際に、ペッパーを付加した上でハッシュ化する。
    • ペッパーとして、全ての会員に共通のランダムな文字列を用意し、Webサーバ内の外部からアクセスできない安全な領域に格納する。
  3. ストレッチング
    • ハッシュ関数を複数回適用する。

さらに、ハッシュ化処理の変更に加えて、会員が設定可能なパスワード長を10字以上64字以下に変更した。本システムにおいて、パスワード長が10字の場合、6字の場合と比べてパスワードとして使用可能な文字列のパターン数がc倍になるのでレインボーテーブル攻撃がより困難になる。

H主任は、これらの対策を取りまとめてG部長に報告し、承認された。

設問1

設問1

本文中の下線①について、会員のパスワードをハッシュ関数でハッシュ化して保存することは、情報漏えいの脅威に対してメリットがある。それは、ハッシュ値にどのような特性があるからか。25字以内で答えよ。

文字数:0/25空白除く:0行数:1

設問2

設問2

本文中の下線②について、会員テーブルのデータが漏えいした場合、情報セキュリティの3要素のどれが直接的に侵害されたといえるか。漢字3字で答えよ。

文字数:0/3空白除く:0行数:1

設問3

本文中のabに入れる適切な字句を解答群の中から選び、記号で答えよ。

空欄a
空欄b

設問4

設問4

本シナリオによって、表1に示す会員テーブルのデータが窃取され、会員番号“21717202”の会員のパスワードが推測され不正アクセスを受けたとすると、推測されたパスワードを利用して不正アクセスを受けるおそれが最も強い他の会員は誰か。該当する会員の会員番号を解答群の中から選び、記号で答えよ。

設問5

設問5

本文中の下線③の考え方を、漢字4字で答えよ。

文字数:0/4空白除く:0行数:1
(1)

本文中の下線④について、ペッパーを付加してハッシュ化することで本シナリオにおいてレインボーテーブル攻撃が困難になる理由を、ソルトを用いた処理との違いに着目して35字以内で答えよ。

文字数:0/35空白除く:0行数:1
(2)

本文中のcに入れる適切な数を、x^yのような指数を用いた表記で答えよ。

選択式は自動採点されます。記述式は模範解答・解説・採点基準が表示されます。

フル模擬試験・過去問ドリルを、登録なしでそのまま試せます

「無料で始める」からすぐに、全問セットの模擬試験・試験タイマー・過去問ドリルを利用できます。 記述式の AI 採点とフィードバックは、無料のアカウント登録(Freeプラン)でご利用いただけます。