情報処理安全確保支援士 2015年 春期 午後1 問03
パスワードへの攻撃に関する次の記述を読んで、設問1~4に答えよ。
Z社は、従業員数300名の衣料品販売企業であり、インターネット上で衣料品を購入できるショッピングサイト(以下、Zサイトという)を7年前から運営している。Zサイトは、携帯電話、スマートフォン及びPCを対象としたサイトであり、オンライン決済にはクレジットカードを採用している。クレジットカード情報は会員情報として保存せずに、決済の都度入力してもらう方式にしている。利用者は、会員登録をすれば、購入金額に応じたポイントをためて、購入代金への充当や、他社のギフト券への交換ができる。Zサイトの現在の会員数は約400万人である。
Zサイトの会員の利用者IDは、会員のメールアドレスであり、パスワードは、携帯電話での利便性を考慮し、数字6桁の固定長となっている。同じ日の0時から24時の間に連続5回認証に失敗した利用者IDは、アカウントロック状態となり、翌日にその状態が解除される仕組みとなっている。
〔不正アクセスの発生〕
ある日、Zサイトの問合せ窓口の担当者から、Zサイトの運用を担当しているシステム運用部のA主任に連絡があり、ポイントが勝手にギフト券に交換されたという被害の連絡を、会員11名から受けたことが報告された。報告を受けたA主任がログサーバを調査したところ、特定のIPアドレスから、Zサイトの会員ページへのログイン試行が、短時間のうちに大量に発生していたことが分かった。A主任は、上司であるB部長の指示の下、全会員に事象を告知するとともに、経営陣の承認を経てZサイトを緊急閉鎖し、以前にセキュリティ診断を依頼したことがあるY社に、この不正アクセスの調査を依頼した。大量のログイン試行のログを表1に示す。

〔不正アクセスの調査結果〕
3日後、Y社による、不正アクセスの詳細な調査が終了した。次は、A主任がB部長に調査結果を報告した際の会話である。
A主任:Y社の調査によると、パスワードを固定した上で、約70万個の文字列を次々に利用者IDとして入力し、ログインを試行するという攻撃があったとのことでした。試行された利用者IDのうち、7万個については、利用者IDとして実在していました。また、実際に560件の利用者IDについては、不正ログインまで成功しており、さらに、130件については、ポイントが不正に交換されていました。
B部長:ポイントが不正交換された会員への連絡は済んでいるのかね。
A主任:はい、不正交換された会員を含め、不正ログインされた会員への個別連絡と、全会員への注意喚起は完了しています。
B部長:分かった。経営陣には私から報告しておく。
A主任:不正ログインされた会員に対して、パスワードリセットを実施したいのですが、よろしいでしょうか。
B部長:Zサイトの再開までにはパスワードリセットも必須だが、それよりも、今回のような攻撃は今後も繰り返される可能性があるので、Y社に依頼して、現在のZサイトのアカウント管理の問題点を調査してもらってくれ。パスワードリセットとZサイトの再開時期については、問題点の調査結果を見た上で考えることにする。
A主任:分かりました。それでは再度Y社に調査を依頼します。
A主任は、早速Y社に調査を依頼し、当日中にY社による調査が開始された。
〔問題点の調査結果と改善案〕
調査開始から4日後、Zサイトのアカウント管理における問題点の調査結果の報告がY社からあり、複数の問題点が存在することが分かった。Y社が報告したZサイトのアカウント管理の主要な問題点を図1に示す。
また、Y社は、これらの問題点についてそれぞれ図2の改善案を提示した。
A主任は、これらの改善案を実施するためのシステム改修の見積作業に取り掛かった。
〔暫定再開の検討〕
見積りの結果、ハッシュ値の保存に必要な領域が、1アカウント当たり16バイトからaバイトに変更されるのに加え、ソルトの保存領域の追加などの改修やディスクの増設が必要となり、再開まで3か月掛かることが分かった。A主任は、そのことをB部長に相談したところ、3か月間のZサイト閉鎖は、経営上の影響が非常に大きいので、何らかの対応を行った上で暫定再開する方法をY社と検討するよう指示を受けた。次はその時の、A主任とY社のC氏との会話である。
A主任:システム改修の3か月間、Zサイトを閉鎖することは、当社にとって影響が非常に大きいことから、何らかの対応を行った上で暫定再開させたいのですが、良い方法はないでしょうか。
C氏 :経営上の影響を考えると暫定再開はやむを得ないですね。図3のようなパスワードに対する攻撃(以下、パスワード攻撃という)を検知し対応する仕組みを導入し、攻撃を検知した場合は都度対応する運用とした上で、暫定再開する方法はいかがでしょうか。ただし、暫定再開に当たっては、不正ログインされた会員のパスワードリセットを忘れずに実施してください。また、ポイントの交換については、システム改修が完了するまで停止した方が良いと思います。

A主任:分かりました。ところで、三つの方法は、それぞれどのようなパスワード攻撃を検知することができるのですか。
C氏 :方法(ア)では、パスワード総当たり攻撃や辞書攻撃を検知します。方法(イ)では、今回の攻撃のように、同一IPアドレスからのリバースブルートフォース攻撃を検知します。方法(ウ)で、cから行われるパスワード攻撃を検知します。ただし、どの方法も、攻撃を 100%検知できるというわけではありません。
A主任:分かりました。それらの対応であれば1週間でできそうです。
A主任は、暫定再開に向けた作業を行い、1週間後、Zサイトを暫定再開した。
〔本格再開の検討〕
A主任は、本格再開に向けた作業を確認するために、再び C氏に相談した。次はその時の A主任と C氏との会話である。
A主任:パスワード攻撃の監視と対応を継続すれば、システム改修にもう少し時間を掛けてもよいのではないかと考えているのですが。
C氏 :それは危険です。実は問題が幾つかあります。例えば、パスワード攻撃には、方法(ア)~(ウ)を組み合わせても検知できないものがあります。現行のパスワード強度と改善後のパスワード強度を比較評価するため、その攻撃が行われた場合に、どのくらいの時間で攻撃が成功するかを計算してみましょう。
C氏は、方法(ア)~(ウ)を組み合わせても検知されずに行われるパスワード攻撃が成功するまでの所要時間を、図4のように説明した。

A主任:なるほど、暫定期間を延ばすと、検知を擦り抜けて不正ログインされる可能性が十分に現実的になるということですね。それでは、パスワード強度の変更とパスワード保存方法の変更が完了したことを条件として本格再開の時期を設定します。他に気をつけることはありますか。
C氏:会員には②他のサイトで使っていないパスワードを設定してもらうよう注意喚起した方がいいですね。
A主任:分かりました。
A主任は、Zサイトの本格開に向けたシステム改修計画をまとめ、B部長とともに経営陣の承認を取り、3か月後に本格再開を果たした。
設問1:
図2中の下線①は、ハッシュ値が保存されているファイルが漏えいした場合に、そのファイルに保存されたハッシュ値からパスワードが推測されることを防ぐための方法である。ソルトを用いることによって防ぐことができる攻撃方法を、60字以内で具体的に述べよ。
模範解答
多くの文字列のハッシュ値を計算したものと、漏えいしたファイル中のハッシュ値を突合し、パスワードを推測する攻撃
解説
解答の論理構成
- 問題文は、図2の下線①として「アカウントごとにソルトを設定し、ソルトとパスワードを結合したものをSHA-256ハッシュ関数でハッシュ化して保存する」と明示しています。
- ソルトを付与しない場合、同一のパスワードは同じハッシュ値になるため、攻撃者は前もって膨大な文字列とそのハッシュ値の対応表を作成し、漏えいファイル内のハッシュ値と照合するだけでパスワードを導出できます。
- ソルトを加えると、同じパスワードでもハッシュ値が利用者ごとに変わり、事前計算表(レインボーテーブルなど)が無効化されます。
- したがって、ソルトが防ぐ攻撃は「漏えいしたハッシュ値を、あらかじめ計算しておいた多数のハッシュ値と突合してパスワードを推測する攻撃」です。これを具体的に述べれば模範解答と一致します。
誤りやすいポイント
- 「総当たり攻撃(ブルートフォース)」と混同しがちですが、ソルトはオフライン総当たり自体を不可能にするわけではなく、事前計算表を無効化する点が本質です。
- 「辞書攻撃」とだけ書くと漠然として減点対象になる場合があります。漏えいファイルと突合する“事前計算”のプロセスを明記しましょう。
- 「ハッシュ化しているから安全」と早合点しがちですが、ソルト無しハッシュは同一パスワードが同一ハッシュになる弱点を忘れがちです。
FAQ
Q: レインボーテーブル攻撃と辞書攻撃は違うのですか?
A: 辞書攻撃はパスワード候補を順に試す方法の総称です。レインボーテーブル攻撃は、辞書攻撃を効率化するために“事前計算表”を用いてハッシュ値を一気に照合する特殊形態です。
A: 辞書攻撃はパスワード候補を順に試す方法の総称です。レインボーテーブル攻撃は、辞書攻撃を効率化するために“事前計算表”を用いてハッシュ値を一気に照合する特殊形態です。
Q: ソルトがあればブルートフォースも防げますか?
A: 防げません。ソルトは「事前計算」を無効化するだけで、攻撃者が各ソルトごとにハッシュを計算しながら総当たりすれば理論上突破可能です。そのためキーストレッチやペッパーなど追加策が推奨されます。
A: 防げません。ソルトは「事前計算」を無効化するだけで、攻撃者が各ソルトごとにハッシュを計算しながら総当たりすれば理論上突破可能です。そのためキーストレッチやペッパーなど追加策が推奨されます。
Q: ソルトはどこに保存すればよいですか?
A: 一般的にはハッシュ値と同じレコード内に保存して問題ありません。極秘情報ではなく、“一意に異なる”ことと“十分な長さ”が重要です。
A: 一般的にはハッシュ値と同じレコード内に保存して問題ありません。極秘情報ではなく、“一意に異なる”ことと“十分な長さ”が重要です。
関連キーワード: ソルト、レインボーテーブル攻撃、ハッシュ関数、事前計算攻撃、パスワードクラック
設問2:〔暫定再開の検討〕について、(1)〜(3)に答えよ。
(1)本文中のaに入れる適切な数値を答えよ。
模範解答
a:32
解説
解答の論理構成
- 【問題文】には
「ハッシュ値の保存に必要な領域が、1アカウント当たり16バイトからaバイトに変更される」
とあります。 - 同じ段落の直前で Y 社が示した改善案として
「①アカウントごとにソルトを設定し、ソルトとパスワードを結合したものをSHA-256ハッシュ関数でハッシュ化して保存する」
と明記されています。 - SHA-256 は 256 bit のハッシュ値を生成します。
256 bit ÷ 8 = 32 byte です。 - したがって 16 byte(旧方式)→ 32 byte(新方式)に拡張されるので
a = 32 となります。
誤りやすいポイント
- 「SHA-256 のハッシュ値は 64 文字」と思い込み、byte ではなく 16進文字列表現の長さ(64 文字)をそのまま 64 byte と勘違いする。
- SHA-1(20 byte)や MD5(16 byte)のサイズと混同して暗記している。
- “ソルトを追加するのでソルト分も合計する”と誤解して 32+α としてしまう。設問は「ハッシュ値の保存領域」だけを問うている。
FAQ
Q: SHA-256 を Base64 で保存した場合のサイズは何バイトですか?
A: Base64 化すると 256 bit は 文字(改行なし)になり、44 byte が必要です。ただし本問は raw バイナリで格納する前提なので 32 byte です。
A: Base64 化すると 256 bit は 文字(改行なし)になり、44 byte が必要です。ただし本問は raw バイナリで格納する前提なので 32 byte です。
Q: ソルトのサイズは解答に影響しませんか?
A: 設問は「ハッシュ値の保存に必要な領域」のみを聞いています。ソルト領域は別途増設する前提なので計算対象外です。
A: 設問は「ハッシュ値の保存に必要な領域」のみを聞いています。ソルト領域は別途増設する前提なので計算対象外です。
Q: SHA-256 以外の 256 bit ハッシュ関数でも答えは同じですか?
A: はい。256 bit 出力であれば同じ 32 byte になります。
A: はい。256 bit 出力であれば同じ 32 byte になります。
関連キーワード: SHA-256, ソルト、ハッシュ値、パスワード強度
設問2:〔暫定再開の検討〕について、(1)〜(3)に答えよ。
(2)図3中のbに入れる適切な字句を、30字以内で述べよ。
模範解答
b:単位時間当たりの同一IPアドレスからのログイン試行数
解説
解答の論理構成
- 図3「方法(イ)」には
「システム運用部は、当該IPアドレスからの接続をファイアウォールのルール設定で遮断する。」
とあります。遮断対象が“当該IPアドレス”であることから、“同一IPアドレス”を軸にした指標を設定する方針と分かります。 - さらに「方法(ア)で検知されない場合に対処するために」とあり、方法(ア)が
「単位時間当たりのアカウントロックされた会員の数」
をしきい値とする対策であるため、方法(イ)は異なる観点──IPアドレス単位の大量試行──を監視する意図だと推定できます。 - 攻撃シナリオでも「同一 IP アドレスからのリバースブルートフォース攻撃」という説明があり、まさに短時間に同じ送信元から多数の試行が行われるケースを検知したいと述べています。
- 以上より、空欄 b に入るのは「単位時間当たりの同一IPアドレスからのログイン試行数」と判断できます。
誤りやすいポイント
- 方法(ア)と(イ)の違いを混同し、同一の指標(アカウントロック件数)を二度書いてしまう。
- 「IP アドレス」を落として「ログイン試行数」だけを書き、不正確な表現になる。
- 「単位時間」を抜かして期間を限定しない回答にし、しきい値の概念を欠落させる。
FAQ
Q: IP アドレス単位の監視はなぜ必要ですか?
A: ユーザ ID を変えながら同じ IP から短時間に多数試行する“リバースブルートフォース攻撃”を、アカウントロック数では検知できないためです。
A: ユーザ ID を変えながら同じ IP から短時間に多数試行する“リバースブルートフォース攻撃”を、アカウントロック数では検知できないためです。
Q: 方法(イ)の通知後に遮断するのはなぜファイアウォールですか?
A: 同一 IP からの大量試行はネットワーク層で一括遮断する方が早く、アプリケーション改修より運用面で即時対応できるためです。
A: 同一 IP からの大量試行はネットワーク層で一括遮断する方が早く、アプリケーション改修より運用面で即時対応できるためです。
Q: 単位時間は具体的に何分が望ましいですか?
A: システムの通常負荷を踏まえて決めますが、一般には 1 分~5 分程度が多く、運用監視で調整します。
A: システムの通常負荷を踏まえて決めますが、一般には 1 分~5 分程度が多く、運用監視で調整します。
関連キーワード: リバースブルートフォース、しきい値監視、ファイアウォール遮断、アカウントロック
設問2:〔暫定再開の検討〕について、(1)〜(3)に答えよ。
(3)本文中及び図4中のcに入れる適切な字句を、15字以内で答えよ。
模範解答
c:多数のIPアドレス
解説
解答の論理構成
-
まず、方法(イ)の目的を確認します。本文には
「C氏 :方法(イ)では、今回の攻撃のように、同一 IP アドレスからのリバースブルートフォース攻撃を検知します。」
とあり、方法(イ)は“同一 IP アドレス”に着目した検知です。 -
つぎに、空欄cが現れる二つの文を引用します。
・「方法(ウ)で、cから行われるパスワード攻撃を検知します。」
・「(iii) 方法(イ)で検知されないよう、cから攻撃」 -
「方法(イ)で検知されないよう」に攻撃するには、同一 IP アドレスに依存しない=IP を分散させる必要があります。したがってcは“IP アドレスが一つではない”ことを示す語になります。
-
攻撃者が多数の IP アドレスを使えば、単一 IP ごとのしきい値では検知できません。方法(ウ)はそのように“IP アドレスを分散した攻撃”を総量で検知する仕組みなので、cには
「多数のIPアドレス」
が最も適合します。
誤りやすいポイント
- 「海外IPアドレス」など地理的属性に注目してしまう。検知ロジックは地理ではなく“分散度”です。
- 「異なる利用者ID」や「複数端末」といった利用者側の多様性と勘違いする。しきい値を回避する鍵は IP の分散である点を押さえましょう。
- 方法(イ)と方法(ウ)の違いがあいまいなまま暗記しようとすると混同しやすいです。役割分担(IP 単位 vs 全体量)で整理すると覚えやすくなります。
FAQ
Q: 方法(ウ)はなぜ“単位時間当たりのログイン失敗数”で検知するのですか?
A: 攻撃元が「多数のIPアドレス」に分散すると、IP ごとの失敗数は低く抑えられます。そこで全体の失敗総数に着目することで、分散攻撃をまとめて検知できます。
A: 攻撃元が「多数のIPアドレス」に分散すると、IP ごとの失敗数は低く抑えられます。そこで全体の失敗総数に着目することで、分散攻撃をまとめて検知できます。
Q: 同一 IP アドレスの大量アクセスも方法(ウ)で検知できますか?
A: 可能ですが、同一 IP なら先に方法(イ)がしきい値超過で検知する設計になっています。方法(ウ)は主に方法(イ)をすり抜ける分散型を補完します。
A: 可能ですが、同一 IP なら先に方法(イ)がしきい値超過で検知する設計になっています。方法(ウ)は主に方法(イ)をすり抜ける分散型を補完します。
Q: “多数のIPアドレス”は具体的に何個以上を指しますか?
A: 本文は具体数を示しておらず、しきい値設定はシステム運用部が決めます。重要なのは「単一 IP では検知できないほど IP をばらけさせる」という概念です。
A: 本文は具体数を示しておらず、しきい値設定はシステム運用部が決めます。重要なのは「単一 IP では検知できないほど IP をばらけさせる」という概念です。
関連キーワード: ブルートフォース、分散攻撃、リバースブルートフォース、アカウントロック、IPアドレス
設問3:
図4中のd〜fに入れる適切な数式又は実際の値を答えよ。
模範解答
d:
e:
f:
解説
解答の論理構成
-
数字 6 桁パスワードの全組合せ
- 【問題文】には「パスワードは、携帯電話での利便性を考慮し、数字6桁の固定長」とあります。
- 10 個の数字(0〜9)を 6 文字並べるので
- よって d = 10^6 です。
-
最短日数 e の算出
- 図4の条件で、攻撃者が 1 日に試行できる回数は 5,000 件です。
- 全組合せ 1,000,000 通りを 5,000 件/日で割ると
- よって e = 200(日)となります。
-
文字種 80 種・8 桁パスワードの全組合せ
- 図2「英大文字、英小文字、数字及び記号の80種」と「最小文字数を8文字」を用います。
- 80 種の文字を 8 文字並べると
- したがって f = 80^8 です。
誤りやすいポイント
- 10⁶ を「6×10」や「10×6」と勘違いしてしまう。桁数と指数の区別に注意。
- e の計算で 5,000 回/日を 50,000 回/日と読み違えて 20 日と誤答するケースが多い。
- 80^8 を「(80×8)」や「80×8^8」と書くミス。指数は全体に掛かることを確認する。
FAQ
Q: 200 日は“最短”とありますが“平均”ではないのですか?
A: 図4では「少なくとも 200 日掛かる」と書かれており、平均日数はその半分より長いと説明されています。したがって e には最短日数 200 を記入します。
A: 図4では「少なくとも 200 日掛かる」と書かれており、平均日数はその半分より長いと説明されています。したがって e には最短日数 200 を記入します。
Q: 80^8 は具体的にいくつの値ですか?
A: 80^8 ≒ 1.68×10^15 通りです。試験では計算値まで書く必要はなく、式のままでも正解になります。
A: 80^8 ≒ 1.68×10^15 通りです。試験では計算値まで書く必要はなく、式のままでも正解になります。
Q: 文字種 80 種はどのように構成されていますか?
A: 英大文字 26、英小文字 26、数字 10、記号 18 などを合わせて 80 種という設定です(具体的な内訳は問題文の記述に依存します)。
A: 英大文字 26、英小文字 26、数字 10、記号 18 などを合わせて 80 種という設定です(具体的な内訳は問題文の記述に依存します)。
関連キーワード: パスワード強度、ブルートフォース攻撃、ソルト、ハッシュ関数
設問4:
本文中の下線②は、どのような攻撃による被害を避けるための注意喚起か。攻撃方法を45字以内で具体的に述べよ。
模範解答
他のサイトから流出した利用者IDとパスワードの組合せによるパスワード攻撃
解説
解答の論理構成
- 会話文で C 氏は会員への注意喚起として「②他のサイトで使っていないパスワードを設定してもらうよう注意喚起」と述べています。
- 同一パスワードを複数サイトで使い回すと、あるサイトから「利用者IDとパスワード」が漏えいした際、攻撃者は別のサイトでも同じ組合せを試すだけで不正ログインできます。
- このように「流出済みの認証情報を使って別サービスへ一斉ログインを試みる」手口を一般に“リスト型攻撃(クレデンシャルスタッフィング)”と呼びます。
- したがって、設問が求める具体的な攻撃方法は
「他のサイトから流出した利用者IDとパスワードの組合せによるパスワード攻撃」
となります。
誤りやすいポイント
- 「辞書攻撃」や「ブルートフォース攻撃」と混同しやすいですが、漏えい済みの正しい組合せを使う点が決定的に異なります。
- 「パスワードリスト攻撃」と書く際、攻撃対象のサイトを限定する表現にしてしまうと意図が狭まり失点します。
- 「IDのみを総当たりするリバースブルートフォース攻撃」と取り違えないよう、出発点が“他サイトでの漏えい”であることに着目しましょう。
FAQ
Q: 同一パスワードを避ければ、リスト型攻撃は完全に防げますか?
A: 完全ではありませんが、少なくとも他サイトから流用された認証情報での不正ログインを大幅に抑止できます。併せて多要素認証など追加対策が望まれます。
A: 完全ではありませんが、少なくとも他サイトから流用された認証情報での不正ログインを大幅に抑止できます。併せて多要素認証など追加対策が望まれます。
Q: 「パスワードリスト攻撃」と「クレデンシャルスタッフィング」は名称が違うだけですか?
A: ほぼ同義語です。どちらも漏えいした ID・パスワードのリストを転用して複数サイトへログインを試行する攻撃を指します。
A: ほぼ同義語です。どちらも漏えいした ID・パスワードのリストを転用して複数サイトへログインを試行する攻撃を指します。
関連キーワード: リスト型攻撃、クレデンシャルスタッフィング、認証情報漏えい、パスワード使い回し


