読み方 : ビークリプト

bcrypt

概要

bcryptとは、パスワードを安全に保存するためのハッシュ関数の一つ。入力されたパスワードから固定長ハッシュ値を生成し、辞書攻撃総当たり攻撃に対する耐性を確保する。
bcryptのイメージ画像

パスワードにランダムな「ソルト値」(salt)を付加してからハッシュ化を行う。ソルトは同じパスワードでも毎回異なる値が生成され、同一のパスワードでも異なるハッシュ値が得られる。これにより、複数の利用者が同じパスワードを使用していても保存されるハッシュは一致せず、攻撃者がハッシュ値からパスワードを推測することがより困難になる。

出力は60文字の文字列で、アルゴリズムの識別子、コストファクター(反復回数)、ソルトハッシュ値が一つの文字列に結合された形式になっている。ドル記号($)で要素を区切った「$2b$12$...」という文字列で、「$2b$」がアルゴリズムバージョン、「12」がコストファクターを示す。ソルトは22文字で、自動的に生成されて埋め込まれるため、開発者が個別に管理する必要はない。

「コストファクター」(ワークファクターとも呼ばれる)は2の冪乗ハッシュ関数の反復回数を指定する設定値で、値を1増やすと計算時間が約2倍になる。機器の性能にもよるが、コストファクター10では数十~数百ミリ秒、12では数百ミリ秒程度の計算時間になることが多い。サーバの性能が向上しても、コストファクターを引き上げることで攻撃者が総当たりで試行する際のコストを高い水準に維持できる。

1999年にニールス・プロヴォス(Niels Provos)氏とデービッド・マジエレス(David Mazières)氏が発表した。Blowfish暗号をベースとした独自のアルゴリズムを使用しており、単純なSHA-256MD5によるハッシュ値とは異なり、意図的に計算コストが高くなるよう設計されている。RubyのDevise、PHPのpassword_hash関数、Node.jsのbcryptjsライブラリなど、多くのプログラミング言語フレームワークで利用でき、パスワード管理における標準的な手法として採用されている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。