暗号化アルゴリズムでハッシュする前に、新しく作成したパスワードをソルトしています。乱数関数を使用してソルトを生成します。
ソルトが数字のみ(文字なし)で構成されている場合、セキュリティを危険にさらしていますか、それともまったく違いはありませんか?
暗号化アルゴリズムでハッシュする前に、新しく作成したパスワードをソルトしています。乱数関数を使用してソルトを生成します。
ソルトが数字のみ(文字なし)で構成されている場合、セキュリティを危険にさらしていますか、それともまったく違いはありませんか?
ソルトは一意であり(理想的には世界中のすべてのパスワードに対して)、予測不可能である必要があります。決定論的コンピューターでできる最善のことは、乱数を取得し、戻り値がほぼ一意であることを期待することです。したがって、可能な組み合わせが多ければ多いほど、塩がユニークである可能性が高くなります。
一部のハッシュアルゴリズムは、受け入れられる文字の数とアルファベットを定義します。たとえば、PHPのBCryptは、このアルファベットから22文字を含むソルトを想定しています。
./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0〜9の文字だけでなく、アルファベットのすべての文字を使用して、可能な限り多くの組み合わせを取得します。もちろん、小さなアルファベット(0-9)の長いソルトは、大きなアルファベット(0-9、az、...)の短いソルトと同じくらい多くの組み合わせを持つことができます。
短くするには、可能なすべての文字と、ハッシュアルゴリズムが期待する数の文字を使用します。
PS:BCryptのような鍵導出関数を使用する場合(そして実際にそうすべきです)、ハッシュの前にパスワードをソルトすることはできません。代わりに、ハッシュ関数にソルトを渡す必要があります。