web-dev-qa-db-ja.com

ソルトラウンドとは何ですか?また、ソルトはどのようにBcryptに保存されますか?

私が作成しているノードアプリ用にBcryptを構成しようとしていますが、ソルトに関するいくつかの質問があります。

  • ソルト「ラウンド」とは何ですか?たとえば、githubドキュメント( https://github.com/kelektiv/node.bcrypt.js/ )では、10のソルトラウンドを使用します。これは正確に何を意味しますか?

  • Bcryptによって生成されるソルトは常に同じですか?たとえば、ユーザーのハッシュされたパスワードをDBに保存している場合、パスワードのハッシュに使用したソルトはすべてのパスワードで同じですか?

  • 塩はどのように保存されますか?潜在的な攻撃から安全ですか?

23
doctopus
  1. 「塩のラウンド」では、実際にはコストファクターを意味します。コストファクターは、単一のBCryptハッシュの計算に必要な時間を制御します。コスト係数が高いほど、より多くのハッシュラウンドが実行されます。コスト係数を1増やすと、必要な時間が2倍になります。より多くの時間が必要であるほど、総当たり攻撃はより困難になります。
  2. ソルトはランダムな値であり、計算ごとに異なる必要があるため、パスワードが同じであっても、結果が同じになることはほとんどありません。
  3. 通常、ソルトは結果のハッシュ文字列に読み取り可能な形式で含まれます。したがって、ハッシュ文字列を保存すると、ソルトも保存されます。詳細については、こちらをご覧ください answer .
27
martinstoeckli