ソルトは、一方向にハッシュしたいパスワード(または他のシークレット)に追加される値です。これは、提供された特定のパスワードに対してその位置と値が一貫している限り、パスワードの前、後、または内部のどこかにある可能性があることを意味します。
これにより、攻撃者がハッシュを知らない限り、辞書攻撃(基本的にはソルトなしで事前にハッシュされた一般的なパスワードの辞書)が一方向のパスワードを「推測」するために使用されるのを軽減できます。すべてのパスワードのハッシュが異なる場合、攻撃者がパスワードを解読するために最適化された辞書を作成することは非常に困難です(パスワードごとに辞書が必要であり、各パスワードのどこにソルトが配置されているかも知る必要があります)。 。
もちろん、これらすべてを適用するには、攻撃者は最初にパスワードのハッシュを持っている必要があります。これは、入力プロンプトからパスワードを推測してパスワードを攻撃することとは何の関係もありません。
特にMySQLに関して、パスワードをハッシュするときにソルトを提供する場合は、そのソルトがどこかにあったことを記録してください。次に、ユーザーが認証を試みると、記録されたソルト値をパスワードと組み合わせます(crypt
の呼び出し中) たとえば)、結果のハッシュが一致する場合は、正しいパスワードを入力しています。 (パスワードのハッシュが逆になることは決してないので、一方向であることに注意してください。)