Web アプリケーションでは、/dev/urandom から数バイトを読み取って、パスワードをハッシュするためのランダムなソルトを取得しています。
ハッシュする前にソルトをbase64にするのは良いですか? base64 エンコーディングでは末尾に = が追加されることがあるため、既知のプレーンテキスト攻撃が発生する可能性があります。しかし、ソルトはデータベースに保存されているため、問題はないかもしれません。それとも間違っていますか?
これはアプリケーションのセキュリティに影響しますか?
Web アプリケーションでは、/dev/urandom から数バイトを読み取って、パスワードをハッシュするためのランダムなソルトを取得しています。
ハッシュする前にソルトをbase64にするのは良いですか? base64 エンコーディングでは末尾に = が追加されることがあるため、既知のプレーンテキスト攻撃が発生する可能性があります。しかし、ソルトはデータベースに保存されているため、問題はないかもしれません。それとも間違っていますか?
これはアプリケーションのセキュリティに影響しますか?
ほとんどの場合、おそらくそうではありません。パスワードを復号化するにはソルトを知る必要があるため、攻撃者はハッシュ化されたパスワードと使用されたソルトの両方を取得できると想定できます。あなたのソルトが現在防御しているのは、レインボーテーブルベースの攻撃と作業量の増加だけです(パスワードn
と比較するために、各平文を1回ではなく何回もハッシュする必要があるため).n
あなたの塩が適度な長さである限り、あなたはおそらく大丈夫です.
いいえ、安全ではありません。
ユーザーのパスワードにはハッシュ関数を使用しないでください。代わりに、PBKDF2 や scrypt などのパスワードベースのキー派生関数を適切な回数の反復で使用して、ハッシュを遅くし、ブルートフォース攻撃のリスクを軽減する必要があります。
Web アプリケーションに PHP を使用している場合: