令和5年度 情報処理安全確保支援士 午前Ⅱ 問1 パスワードのソルト

Tech

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

令和5年度 情報処理安全確保支援士 午前Ⅱ 問1 パスワードのソルト

本問はパスワードハッシュ化における「ソルト」の役割を問うている。レインボーテーブル攻撃への有効な対策原理を理解することが解法の核となる。

パスワードをハッシュ化して保存するときに,ソルトを用いる目的はどれか。

ア 同じパスワードに対して,利用者ごとに異なるハッシュ値が生成されるようにする。 イ ハッシュ値から元のパスワードを復元できるようにする。 ウ パスワードの長さを擬似的に長くして,総当たり攻撃にかかる時間を短縮する。 エ 利用者がパスワードを忘れたときに,管理者がパスワードを教えられるようにする。

【解説】

ソルト(Salt)とは、パスワードをハッシュ化する際、パスワード文字列の前後に追加する任意のデータのことです。

ハッシュ関数は同一の入力に対して常に同一の出力を返す(決定的である)性質があります。そのため、複数のユーザーが同じパスワード(例: “password123″)を使用している場合、ソルトなしではデータベース上のハッシュ値もすべて同一になります。

$$ H = \text{hash}(\text{password} + \text{salt}) $$

ソルトを使用することで、以下のプロセスが実現されます。

graph TD
    UserP["ユーザーのパスワード"] --> Combine["結合"]
    Salt["一意のソルト"] --> Combine
    Combine --> HashFunc["ハッシュ関数"]
    HashFunc --> StoredHash["固有のハッシュ値"]
    style StoredHash fill:#f9f,stroke:#333,stroke-width:2px

これにより、攻撃者が事前に計算した「パスワードとハッシュ値の対応表(レインボーテーブル)」を利用した攻撃を無効化、あるいは困難にさせます。

【選択肢の吟味】

選択肢 判定 解説
正解 利用者ごとに異なるソルトを付与することで、同一パスワードでもハッシュ値を分散させ、レインボーテーブル攻撃を防ぐ。
誤り ハッシュ関数は不可逆性を持ち、ソルトの有無にかかわらず復元は困難である。復元が必要な場合は暗号化を用いるべきである。
誤り 総当たり攻撃の時間を「短縮」させることは攻撃者にとってのメリットであり、セキュリティ対策の目的ではない。
誤り ソルトを用いてもハッシュ化の不可逆性は維持されるため、管理者が元のパスワードを知ることはできない。

【ポイント】

  • レインボーテーブル対策: 事前計算済みのハッシュリストの有効性を失わせる。

  • 一意性の確保: 同一パスワードの利用者間でも、生成されるハッシュ値を異なるものにする。

  • 不可逆性の維持: ソルトはパスワードの復元を可能にするためのものではない。

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

コメント

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