Bcryptとは?
Bcryptは、1999年にNiels ProvosとDavid MazièresによってBlowfish暗号に基づいて設計されたパスワードハッシュ関数です。パスワードを安全に保存するために最も推奨されるアルゴリズムの1つです。MD5やSHA-256のような高速ハッシュアルゴリズムとは異なり、Bcryptは意図的に低速で計算コストが高くなっています。
Bcryptの重要な革新は、その適応型コスト係数です。ハードウェアが高速化するにつれて、コスト係数を増加させることができます。
Bcryptの仕組み
ソルト生成。 Bcryptはパスワードごとに自動的にランダムな16バイトのソルトを生成します。
コスト係数。 コスト係数は実行される反復回数を決定します。コスト10は2^10 = 1,024回の反復を意味します。
Blowfish統合。 BcryptはBlowfish暗号を使用し、大幅なメモリと計算を必要とします。
Bcryptハッシュは通常次のようになります:
$2b$10$3euPcmQFCiblsZeEu5s7p.9vHnhJ3X7e3Qh7vA7z6YnF5qX5Q5aK
Bcryptが推奨される理由
適応型難易度。 計算能力に応じてコスト係数を増加させます。
統合ソルティング。 ソルトを別途管理する必要はありません。
広範なサポート。 Bcryptは事実上すべてのプログラミング言語で利用可能です。
広範な監査。 20年にわたる暗号解析で実用的な脆弱性は見つかっていません。
Bcryptのベストプラクティス
- コスト係数10-12を使用してください。
- 常に最新リビジョンを使用してください(
$2a$ではなく$2b$)。 - Bcryptを自分で実装しないでください。 検証済みのライブラリを使用してください。
- HTTPSと組み合わせてください。
Bcryptハッシュをオンラインで生成する
無料のBcrypt Generatorを使用すると、設定可能なコスト係数でパスワードを即座にハッシュ化できます。テストデータベースを設定する開発者や実装を検証する方に最適です。