ソルト (暗号)
暗号理論におけるソルト(Salt)とは、パスワードやパスフレーズなどのデータをハッシュ化する際に、一方向性関数の入力に加えるランダムなデータのことである。ソルトはパスワードをストレージに保存する際の保護に利用される。 歴史的にはパスワードが平文のままシステムに保存されていたこともあったが、時代を経るにつれ、パスワードに対する攻撃への保護策が開発されていった。ソルトはその一つである。
ソルトはパスワードごとにランダムに生成される。よくある方法では、ソルトと平文のパスワード(または、ソルトとキーストレッチを施したあとのパスワード)を文字列結合した上で、暗号学的ハッシュ関数に入力し、その出力をソルトとともにデータベースへ保存する(平文のパスワードは保存しない)。パスワードをハッシュ化することで、認証にあたって平文のパスワードを保存しておく必要がなくなる。これにより、保存していた認証情報が漏洩しても、平文のパスワードが漏れることはなくなる。
ソルトを使うことで、辞書攻撃やレインボーテーブルを使った攻撃に対抗できる。ソルトの値は人間が記憶しておく必要はないため、ユーザーの負担を増やさずに、攻撃を成功させるために必要なレインボーテーブルのサイズを実現不可能なほど大きくできる。ソルトには毎回異なる値が使われるため、よく使われるパスワードを使っていた場合や、いろいろなサイトでパスワードを使い回していた場合でも、ソルトを加えたハッシュ値はそれぞれ別々になる。
暗号学的なソルトは、Unixの認証情報からインターネットセキュリティまで、現代的なコンピュータシステムで幅広く使われている。
ソルトはノンスの概念とも強く関連している。