本文へスキップ

bcryptとは?

びーくりぷと

bcryptとは、パスワードを安全に保存するために設計された、計算コストを調整できる暗号ハッシュ関数です。

bcryptは、1999年にNiels ProvosとDavid Mazièresが設計したパスワードハッシュ関数です。Blowfish暗号を基盤とし、パスワードの平文を安全なハッシュ値に変換して保存するために広く使われています。

bcryptの最大特徴は「コストファクター(ワークファクター)」と呼ばれるパラメータです。このパラメータを増やすことでハッシュ計算にかかる時間を意図的に増大させることができます。ハードウェアが高速化しても、コストファクターを上げることで総当たり攻撃(ブルートフォース)の難易度を維持できるという設計思想です。

bcryptが安全とされる主な理由は以下のとおりです。

  • ソルト(ランダムな付加データ)を自動的に生成・埋め込む
  • 同じパスワードでも毎回異なるハッシュ値が生成される
  • レインボーテーブル攻撃が無効化される
  • GPUによる並列計算に不向きな設計になっている

出力されるハッシュ文字列にはコストファクターとソルトが含まれているため、検証時にパラメータを別途管理する必要がありません。現代のWebアプリケーションでは、ユーザーのパスワードをデータベースに保存する際の標準的な手法の一つとして、RubyのBCrypt gemやPHPのpassword_hash()関数などで広く採用されています。

使い方・例文

Webサービスに会員登録する際、入力したパスワードはサーバー側でbcryptによってハッシュ化されてから保存されるため、データベースが流出しても元のパスワードは簡単には復元されません。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語