簡単にするために、誰もがパスワードとして数字を使用していると想像してみましょう。
全員がパスワードとして8桁を使用する場合、それは1億の可能性です。システムを破壊しようとしている場合は、それらすべての可能性をハッシュする必要があります。「ハッシュのハッシュのハッシュ」がある場合でも、それらの1億の可能性をハッシュする必要があります-少し複雑な方法で。
ここで、4桁のソルトもあるとしましょう。現在、1億の可能性の代わりに1,000,000,000,000があります...潜在的な攻撃者に、3倍の作業ではなく、10,000倍の作業を与えました。
基本的に、ソルトは、すべての人のパスワードを人為的に長くして、辞書攻撃が機能しなければならないスペースを拡張する方法と考えてください。
編集:明確にするために、ソルトがプレーンテキストでも提供されていることを考えると、1つのハッシュを攻撃しようとする可能性は1億回しかありません。ただし、あるパスワードでこれらの可能性を試した後、攻撃者は別のパスワードを攻撃するための有用な情報を入手できないことを意味します。ソルトがないと、攻撃者は1億の可能性のある辞書を作成し、ハッシュのみを指定してデータベース内のすべてのパスワードを知ることができます。言い換えれば、塩はかさばりを防ぐのに役立ちます攻撃。また、辞書を事前に生成できないことも意味します。単一のパスワードを効果的に攻撃するには、事前にソルトを知っている必要があります。ソルトがなければ、ハッシュ自体にアクセスする前に、考えられるすべてのパスワードのハッシュを計算できます。