SC Workbook
科目 A-2 · セキュリティ

DB 漏えいに備えるペッパー

Web サービスでは,利用者のパスワードを,利用者ごとにランダムなソルトを用いて Argon2id でハッシュ化し,ソルトとともに DB に保存している。SQL インジェクションや DB のバックアップの流出によって DB の内容だけが漏えいした場合でも,攻撃者が推測したパスワードをハッシュ値と照合できないようにしたい。追加する対策として,最も適切なものはどれか。

  1. アソルトの長さを 16 バイトから 64 バイトに延ばし,事前計算したハッシュ値の表による解析を一層困難にする。
  2. イ全利用者に共通の秘密値(ペッパー)を DB とは別のシークレット管理サービスや HSM に保管し,ハッシュ化の際に組み合わせる。
  3. ウソルトをハッシュ値と同じテーブルではなく,同じ DB 内のアクセス権限を分けた別のテーブルに保存する。
  4. エ同一の利用者 ID で一定回数ログインに失敗した場合に,その ID を一定時間ロックする。
正解と解説を見る

正解 イ

この問題の基礎知識

  • ソルトは利用者ごとのランダムな値でハッシュ値とともに DB に保存され,同じパスワードでもハッシュ値を変えて事前計算による解析を防ぐが,秘密の値ではない。
  • DB を入手した攻撃者は,候補のパスワードをソルトとともにハッシュ化して保存値と比べるオフライン攻撃を行える。Argon2id などの計算コストの高い関数は,照合 1 回あたりの時間を増やす。
  • オンライン攻撃はサービスのログイン機能に対して試行する攻撃,オフライン攻撃は入手したハッシュ値に対して手元で照合する攻撃であり,アカウントロックは前者にだけ効く。
アソルトの長さを 16 バイトから 64 バイトに延ばし,事前計算したハッシュ値の表による解析を一層困難にする。

ソルトはハッシュ値とともに DB に保存されるので,DB を入手した攻撃者はソルトを使って候補のパスワードを 1 件ずつ照合できる。ソルトを延ばしても事前計算への耐性が変わるだけで,この照合は防げない。

イ全利用者に共通の秘密値(ペッパー)を DB とは別のシークレット管理サービスや HSM に保管し,ハッシュ化の際に組み合わせる。正解

ペッパーは DB と分離して保管する秘密値なので,DB だけを入手した攻撃者はハッシュ値を計算できず,推測したパスワードを照合できない。OWASP は,SQL インジェクションやバックアップの入手で DB だけが漏えいした場合の追加の防御として挙げている。

ウソルトをハッシュ値と同じテーブルではなく,同じ DB 内のアクセス権限を分けた別のテーブルに保存する。

SQL インジェクションではアプリケーションの DB 接続の権限で読める範囲が漏えいし,照合に使うソルトのテーブルも通常は読める。バックアップの流出では DB 全体が流出するので,テーブルを分けても照合は防げない。

エ同一の利用者 ID で一定回数ログインに失敗した場合に,その ID を一定時間ロックする。

アカウントロックは,ログイン画面に対するオンラインの推測攻撃を抑える対策である。漏えいしたハッシュ値に対するオフラインの照合はサービスを経由しないので,試行回数の制限は効かない。

検証用の出典出典照合済み
OWASP Password Storage Cheat Sheet / OWASP Authentication Cheat Sheet
照合の根拠(6 件)
問題 ID A2-SEC-0615 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。