応用情報技術者試験の令和6年度 秋季試験 午後 問1:セキュリティの解説を行ってきます。
出題テーマ:ペネトレーションテスト
出題テーマは『ペネトレーションテスト』です。
擬似的な攻撃を行うペネトレーションテストを主題として、ハッシュ、SQLインジェクションに関して出題されていました。
問題の半数ぐらいは知識が必要な問題であり、セキュリティの基本的用語からハッシュやSQLインジェクションの基本的な知識が必要な問題でした。
設問1
知識の問題です。
下線①として、『パスワードのハッシュ値は、会員が設定したパスワードをハッシュ関数によってハッシュ化したものである。』とあります。
ハッシュ化するというのは、元の値を一定の計算手順で固定長の値に変換することを指します。
例えば『aaa』という値をハッシュ関数を用いてハッシュ化してあげると、『9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0(※SHA256)』という値になります。
ハッシュの特性として、元の値が一緒なら毎回同じハッシュ値になります。
同じ『aaa』という文字列を入力した際は毎回同じ『9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0』という結果になります。
なので、ハッシュ化した状態で保存していても、会員が入力したパスワードをハッシュ化し、保存されているハッシュ化した値と比較して一致すればパスワードが合っていると判断することができますので、ログインなどの動作を問題なく行うことができます。
もう1つハッシュの特性として、ハッシュ値から元の値を推測することは難しくなっています。
『aaa』をハッシュ化した『9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0』という値から元の『aaa』を推測することは難しくなっています。
会員のパスワードをハッシュ関数でハッシュ化した状態で保存することで、仮にこの値が漏えいしてしまっても、攻撃者はハッシュ化した状態から元のパスワードを推測することが難しいので、パスワード自体は漏えいしていない・悪用されないということになります。
ということで解答例は、『ハッシュ化した値から元の値を推測するのが難しいこと(25文字)』と考えることができます。
設問2
知識の問題です。
下線②としては、『SQLインジェクション攻撃によって会員テーブルのデータを取得する。』とあります。
情報セキュリティの3要素とは『機密性・完全性・可用性』です。
機密性は情報のアクセスに関することで、その情報へのアクセスを許可された人だけがアクセス可能かを表しています。
完全性は情報が正確であることを指し、改ざんされていないかなどを表しています。
可用性は情報が必要になったときに利用できるかで、バックアップや冗長化などをして必要なときに情報を利用できる状態にしておくことを表しています。
本来会員テーブルはざっくりと言えばF社内のみアクセス可能な情報ですが、SQLインジェクション攻撃により第三者によって取得されてしまう・アクセスされてしまうというわけですので、解答は『機密性』となります。
設問3
知識の問題です。
【a】の部分として、『パスワードを総当りで試行する【a】攻撃』とあります。
解答は『a:オ ブルートフォース』です。
【b】の部分として、『本システムのソースコードを調査したところ、一部の処理で外部からの入力値をそのままSQL文に埋め込んでいる箇所が存在していた。そこで、対策として、【b】を利用する方式を採用することにした。この方式では、外部からの入力値が埋め込まれる箇所を専用の記号に置き換えたSQL文の雛形をあらかじめ作成しておき、専用の記号で置き換えた箇所にDB管理システム側で外部からの入力値を割り当てる。』とあります。
解答は『b:カ プレースホルダ』です。
プレースホルダはSQLインジェクションへの基本的な対策です。
プレースホルダはSQL文中の変動する箇所に使用し、入力された値をただの値として処理します。
本来数字を入力すべきところに、攻撃者がSQL文などの不正な値が入力してSQLインジェクション攻撃を試みても、ただの値として処理されるため正しくないSQL文としてエラーが表示されます。
設問4
表1をみますと、会員番号”21717202″と会員番号”30781985″のハッシュ値が一致していることがわかります。
ハッシュ値が一致しているということは同じパスワードが設定されているということです。
なので、会員番号”21717202″のパスワードが推測されてしまった場合に不正アクセスを受ける可能性が高いのは、同じハッシュ値・同じパスワードである会員”30781985″であると考えることができます。
ということで解答は『イ:30781985』となります。
設問5
知識の問題です。
下線③として、『仮に対策の一つが破られても他の対策ので攻撃を防ぐという考え方』とあります。
解答は『多層防御』となります。
下線の通りですが、多層防御は複数のセキュリティ対策を組み合わせて防御を行うことです。
設問6 (1)
設問1でハッシュ値から元の値を推測するのは難しいと言いましたが、実は可能な場合があります。
それがレインボーテーブル攻撃です。
レインボーテーブルは元の値(平文)とハッシュ値の対応表です。
レインボーテーブルをどうやって作るかですが、簡単なのは『aaa』と入力した際のハッシュ値を記録し、同じ用に『bbb』と入力した際のハッシュ値も記録することを繰り返していくこと挙げられます。
もっと効率が良い作成方法がありますが、本題から逸れるため省略しますので、気になる方は調べてみてください。
このレインボーテーブルからハッシュ値を検索し、対応する元の値を知ることができます。
ソルト・ペッパーを用いた処理自体は問題を解くにあたって必要ではないのですが、『aaa』をハッシュ化するだけですと、攻撃者が『aaa』をハッシュ化して同じ値となればパスワードが『aaa』であると推測できてしまいます。
『aaa+推測が難しい文字(ソルトorペッパー)』を加えてハッシュ化することで、『aaa』だけでハッシュ化した場合と別のハッシュ値となりますので、攻撃者は推測が難しい文字部分を知らなければハッシュ値からパスワードを推測することがより困難になります。
ソルトの重要な部分は、『ソルトとして、会員ごとに異なるランダムな文字列を用意し、会員テーブルに格納する。』とあります。
一方でペッパーを用いた処理では、『ペッパーとして、全ての会員に共通のランダムな文字列を用意し、Webサーバ内の外部からアクセスできない安全な領域に格納する。』とあります。
ハッシュ化の際にソルトかペッパーを付与するところまでは一緒なのですが、その付与したものの保存場所が異なるというわけです。
ペネトレーションテストの結果に戻ると、下線②に『SQLインジェクション攻撃によって会員テーブルのデータを取得する。』とありました。
つまり、ソルトは会員テーブルに格納されていますので、会員テーブルを窃取されたら一緒に窃取されてしまいます。
一方でペッパーはWebサーバ内の外部からアクセスできない安全な領域に格納されていますので、会員テーブルを窃取されても、一緒には窃取されません。
ということで、解答例は『会員テーブルのデータを窃取されてもペッパーは窃取されないため(30文字)』と考えることができます。
設問6 (2)
計算問題です。
【c】の部分として、『会員が設定可能なパスワード長を10字以上64字以下に変更した。本システムにおいて、パスワード長が10字の場合、6字の場合と比べてパスワードとして使用可能な文字列のパターンが【c】倍になる』とあります。
パスワードとして使用できる文字は、『英数字に一部の記号を加えた70種類である。』とあります。
1文字目は70通り、2文字目も70通り、・・・10文字目も70通りですので、パスワード長が10字の場合は70^10通りあります。
同じ用にパスワード長が6字の場合は70^6通りあります。
後は指数の計算で、70^10÷70^6=70^4となりますので、解答は『c:70^4』となります。
公式解答例との比較・予想配点
出題テーマは『ペネトレーションテスト』でした。
ペネトレーションテストを出題としてハッシュ、SQLインジェクションに関して出題されていました。
セキュリティの概要、ハッシュ値やSQLインジェクションに関する基本的な知識が必要な問題も出題されていました。
知識が必要な問題もありましたが、出題された内容に関しては最早必須知識と言ってもいいかと思いますので、わからない問題があれば覚えておくようにしましょう。
難易度としては『普通』だったかと思います。
配点 |
|||
設問1 | ハッシュ化した値から元の値を推測するのが難しいこと(25文字) | ハッシュ値からパスワードの割出しは難しい。 | 4点 |
設問2 | 機密性 | 機密性 | 2点 |
設問3 | a:オ b:カ |
a:オ b:カ |
各2点 |
設問4 | イ | イ | 2点 |
設問5 | 多層防御 | 多層防御 | 2点 |
設問6 (1) | 会員テーブルのデータを窃取されてもペッパーは窃取されないため(30文字) | 会員テーブルの窃取だけではペッパーを得ることができないから | 4点 |
設問6 (2) | 70^4 | 70^4 | 2点 |
引用元
問題および解答例に関しては、『独立行政法人 情報処理推進機構(IPA)』より引用しています。

YouTube解説動画
公開まで少々お待ち下さい。
応用情報技術者試験解説
その他の年度、問題は『こちら』にてまとめています。
