コンテンツへスキップ
uencoder

Salt

ソルトとは、パスワードのハッシュ化時に加えるランダムな値のことで、同一パスワードでも異なるハッシュを生成させ、レインボーテーブルやパスワードの一致検出を無効化する。

目的

同一パスワードでもユーザーごとにハッシュを一意にし、事前計算や一括比較を防ぐことを目的とする。

メカニズム

パスワードごとに一意なランダムソルト(16 バイト以上)を生成し、連結値 H(password || salt) をハッシュ化する。ソルトはハッシュと一緒に保存され(秘密にする必要はない)、検証時には保存済みソルトで再ハッシュ化して比較する。ソルトにより、レインボーテーブルはユーザー単位で作り直す必要が生じ、事実上不可能になる。

ユースケース

  • パスワードハッシュの保存
  • KDF(PBKDF2/scrypt)への入力
  • 暗号化における IV の類推
  • トークン生成

例

  • 入力
    password + random salt
    Output
    Unique hash

    Different per user

よくあるエラー

A global fixed salt (equivalent to no salt)
Generate a unique random salt per password

関連用語

関連ツール

References