bcryptは、遅く計算コストが高くなるよう設計されたパスワードハッシング関数で、ブルートフォース攻撃に強い耐性を持ちます。パスワードを安全に保存するための業界標準です。
bcryptの仕組み
bcryptはBlowfish暗号をソルトとコストファクターと共に使用します。コストファクター(ラウンド)はアルゴリズムが実行する反復回数を決定し、1増えるごとに計算時間が2倍になり、攻撃を指数関数的に困難にします。
なぜbcryptを使うのか
高速なMD5/SHA(パスワードには不適)とは異なり、bcryptは意図的に遅く設計されています。これによりブルートフォース攻撃が実用的でなくなります。コスト10は2^10(1,024)回の反復を意味し、約100msのハッシング時間がかかります。ログインには無視できる時間ですが、攻撃者が数十億のパスワードを試すには致命的です。
セキュリティのベストプラクティス
ほとんどのアプリケーションではコスト10-12を使用してください。コスト10が現在推奨される最低値です。パスワードにMD5やSHA-1を決して使用しないでください。これらは破られています。平文パスワードを決して保存しないでください。パスワードハッシングには常にbcrypt、Argon2、またはscryptを使用してください。