令和4年度 情報処理安全確保支援士 午前Ⅱ 問1 パスワードのハッシュ化

Tech

style_prompt

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

令和4年度 情報処理安全確保支援士 午前Ⅱ 問1 パスワードのハッシュ化

パスワードのハッシュ化におけるソルトの役割を問う問題です。同一パスワードから異なるハッシュ値を生成し、解析を困難にする仕組みを理解します。

【問題】 パスワードをハッシュ化して保存するとき、ソルト(Salt)を用いる目的はどれか。

ア 同じパスワードに対して、生成されるハッシュ値が異なるようにする。 イ ハッシュ関数のアルゴリズムを推測されないようにする。 ウ ハッシュ値から元のパスワードを復号できるようにする。 エ パスワードの文字数を増やして、ハッシュ関数の計算負荷を軽減する。

【解説】 ソルト(Salt)とは、パスワードをハッシュ化する直前に、元のパスワードに付加するランダムなデータのことです。

  1. 同一パスワードの保護: 複数の利用者が同じパスワードを設定していても、利用者ごとに異なるソルトを付加することで、最終的にデータベースに保存されるハッシュ値が異なります。

  2. 攻撃への耐性: あらかじめ「パスワード」と「ハッシュ値」の対応表を用意しておく「レインボーテーブル攻撃」などのオフライン攻撃を困難にします。

graph LR
    A[Password] --> D[Concatenate]
    B["Salt / Random Data"] --> D
    D --> E["Hash Function"]
    E --> F["Stored Hash Value"]

【選択肢の吟味】

選択肢 判定 解説
正解 ソルトは利用者ごとに異なる値を付加するため、同じパスワードでもハッシュ値が変わります。
誤り ハッシュアルゴリズム(SHA-256等)自体は公開されていることが前提であり、隠蔽を目的としません。
誤り ハッシュ関数は不可逆(一方向性)であるため、復号はできません。
誤り 文字数が増えると計算量はむしろ増加し、計算負荷を軽減する効果はありません。

【ポイント】

  • ソルト:レインボーテーブル攻撃(辞書攻撃の高速版)への有効な対策。

  • ストレッチング:ハッシュ化を数千〜数万回繰り返すことで、試行時間を稼ぐ手法。

  • 一方向性:ハッシュ値から元のデータを算出することが極めて困難である性質。

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました