Salt (ソルト)

暗号技術において、ソルトはパスワードがハッシュされる前に追加されるランダムなデータです。これにより、攻撃者はパスワードとそれに対応する事前に計算されたハッシュのテーブルを用いて、ハッシュからパスワードを導くことが不可能になります。

攻撃者がパスワードの保存されたデータベースに侵入する危険性があるので、パスワードは決して平文のまま保存されるべきではありません。一般的にパスワードはハッシュ化され、そのハッシュの結果が保存されます。ハッシュ関数が暗号的に安全であれば、もし攻撃者が保存されたハッシュにアクセスできたとしても、ハッシュからパスワードを導くことは現実的ではありません。

ハッシュからパスワードを導くために、攻撃者は以下のような事前にハッシュが計算されたテーブル (レインボーテーブルとも呼ばれる) からハッシュに対応するパスワードを検索することができます。

パスワード ハッシュ
pa55w0rd 56965E2A...
abcdef BEF57EC7...
letmein 1C8BFE8F...

これらのテーブルは非常に大きい可能性もありますが、テーブルの検索は高速で実行されるため、このような攻撃は効果的です。

ハッシュ化する前にランダムなソルトを加えることで、ハッシュはパスワードだけでなく、ソルトと組み合わせて計算されるため、この攻撃は無効となります。

パスワードと異なり、ソルトは秘密にしておく必要はなく、ソルトが加えられたのちにハッシュ化されたパスワードと一緒にデータベースに保存することができます。