Salt (ソルト)
暗号技術において、ソルトはパスワードがハッシュされる前に追加されるランダムなデータです。これにより、攻撃者はパスワードとそれに対応する事前に計算されたハッシュのテーブルを用いて、ハッシュからパスワードを導くことが不可能になります。
攻撃者がパスワードの保存されたデータベースに侵入する危険性があるので、パスワードは決して平文のまま保存されるべきではありません。一般的にパスワードはハッシュ化され、そのハッシュの結果が保存されます。ハッシュ関数が暗号的に安全であれば、もし攻撃者が保存されたハッシュにアクセスできたとしても、ハッシュからパスワードを導くことは現実的ではありません。
ハッシュからパスワードを導くために、攻撃者は以下のような事前にハッシュが計算されたテーブル (レインボーテーブルとも呼ばれる) からハッシュに対応するパスワードを検索することができます。
パスワード | ハッシュ |
---|---|
pa55w0rd | 56965E2A... |
abcdef | BEF57EC7... |
letmein | 1C8BFE8F... |
これらのテーブルは非常に大きい可能性もありますが、テーブルの検索は高速で実行されるため、このような攻撃は効果的です。
ハッシュ化する前にランダムなソルトを加えることで、ハッシュはパスワードだけでなく、ソルトと組み合わせて計算されるため、この攻撃は無効となります。
パスワードと異なり、ソルトは秘密にしておく必要はなく、ソルトが加えられたのちにハッシュ化されたパスワードと一緒にデータベースに保存することができます。