CyberGlossary

暗号

bcrypt

別称: EksBlowfish ハッシュ, Provos-Mazières bcrypt

定義

Blowfish 暗号の鍵スケジューリングを基にした適応的パスワードハッシュ関数で、1999 年に Provos と Mazières が設計した。

bcrypt は 1999 年に Niels Provos と David Mazières が発表したパスワードハッシュ方式で、改変版 Blowfish 鍵スケジュール(EksBlowfish)を用い、ソルト付きパスワードから 192 ビットのハッシュを導出します。コストパラメーター(鍵セットアップ反復数の log2)を調整することで、ハードウェアの進化に合わせて作業量を時間とともに増やせます。入力長は 72 バイトに固定されており、メモリ使用量も小さいため、メモリ消費型の関数と比べて GPU/ASIC 攻撃に弱いという欠点があります。現在も広く使われており、コスト 12 以上であればパスワード保存にも許容されますが、新規システムでは Argon2id や scrypt が望ましい選択肢です。

  • Django や Spring Security はデフォルトで bcrypt(コスト 12)を用いてユーザーパスワードを保存する。
  • 典型的な bcrypt ハッシュは $2b$12$ で始まり、22 文字のソルトと 31 文字のダイジェストが続く。

関連用語