【そると】

ソルト とは?

最終更新:
💡 同じパスワードでも、計算を使い回しにくくする

パスワードのハッシュ計算に使う、保存するパスワードごとに異なるランダムな値。事前計算への対策と、推測攻撃への限界を説明します。

📌 このページのポイント
ソルト:同じパスワードでも別のハッシュ同じパスワードを登録した2人の例利用者A同じパスワード+ ソルトA(別の乱数)ハッシュAソルトも保存方式・設定も利用者B同じパスワード+ ソルトB(別の乱数)ハッシュBソルトも保存方式・設定も処理にはArgon2idなど専用方式を使うソルトは秘密ではない。利用者ごとに変える事前計算を使い回しにくくする
別々のソルトを使う登録例です。パスワード専用のハッシュ方式と適切なコスト設定を使い、平文パスワードは保存しません。ソルトだけで総当たりを防ぐものではありません。
ひよこ ひよこ
パスワードに塩を振るって、どういうこと?
ペンギン先生 ペンギン先生
ハッシュを計算するとき、ソルトというランダムな値も入力に使うんだ。保存するパスワードごとに違う値を使い、同じパスワードでも計算結果を使い回しにくくするよ。
ひよこ ひよこ
何の攻撃を難しくするの?
ペンギン先生 ペンギン先生
候補のパスワードからあらかじめ作ったハッシュの一覧を、そのまま使う攻撃への対策になる。異なるソルトごとに計算が必要だから、一回の計算を多くの利用者へ使い回すことも妨げるんだ。
ひよこ ひよこ
ソルトは、隠さなくてよい?
ペンギン先生 ペンギン先生
ソルト自体は秘密にする値ではなく、ハッシュと一緒に保存するよ。ログイン時には、保存したソルトと同じ方式・条件で計算して、結果を照合できるようにするんだ。
ひよこ ひよこ
公開しても、パスワードは絶対分からない?
ペンギン先生 ペンギン先生
絶対に推測できないわけではないよ。漏れたハッシュに候補を計算して比べる攻撃は残る。専用のパスワードハッシュ方式と適切な計算コストも大切で、ソルトだけで安全とは言えないんだ。
ひよこ ひよこ
Argon2idなら、何もしなくてよい?
ペンギン先生 ペンギン先生
仕様としてはソルトが必要だよ。広く使われるライブラリには自動で生成・管理するものがあるけれど、使うAPIの説明を確認しよう。方式の名前だけで、生成や保存が必ず自動になるわけではないね。
もっと詳しく知りたい人へ

SHA-256へランダムな文字を足せば十分?

ソルトだけでは、一回の推測を計算する速さは十分に抑えられません。OWASPは高速なSHA-256をパスワード保存に使うことを勧めず、Argon2idなどの専用方式を案内しています。

ペッパーとの違いは?

ペッパーは追加の防御として使う秘密の値で、パスワードのデータベースとは別に保管します。公開してよいソルトと、秘密を守るペッパーは役割が違います。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ソルト」って出てきたら「パスワードのハッシュ計算に加える、使い回しを妨げるランダムな値」と思えばだいたいOK!
📖 おまけ:英語の意味
「Salt」 = 塩
💬 ここではパスワードの保存に使う、ハッシュ計算の入力の一つを指します。

参考資料

← 用語集にもどる