パスワードハッシュ:bcrypt, scrypt, Argon2 徹底解説
パスワードハッシュの基礎:bcrypt, scrypt, Argon2 を理解する パスワードハッシュの基礎:bcrypt, scrypt, Argon2 を理解する ウェブサイトやアプリケーションでユーザー名とパスワードを扱う際、パスワードを平文で保存することは絶対に避けるべきです。なぜなら、ハッキングによってパスワードが漏洩すれば、全てのユーザーアカウントが危険にさらされるからです。そこで用いられるのが、パスワードハッシュと呼ばれる技術です。本記事では、代表的なパスワードハッシュアルゴリズムである bcrypt , scrypt , Argon2 について解説します。 パスワードハッシュとは? パスワードハッシュとは、ユーザーが入力したパスワードを、一方向関数と呼ばれる関数に通して生成されたハッシュ値(文字列)のことです。このハッシュ値は、元のパスワードとは決して逆方向に復元できないため、ハッキングによるパスワードの漏洩を防ぐ効果があります。データベースに保存するのは、ハッシュ値のみです。 bcrypt (Block Cipher Algorithm for Password-based Cryptography) bcrypt は、2005年にデイビッド・ボウマンによって開発された、非常に実績のあるパスワードハッシュアルゴリズムです。計算コストが高く、攻撃に対する耐性があるため、多くのウェブアプリケーションで利用されています。 bcrypt は、キーとソルト(ランダムな文字列)を組み合わせてハッシュ値を生成します。ソルトを使用することで、同じパスワードでも異なるハッシュ値が生成され、レインボーテーブル攻撃(ハッシュ値を大量に保存したリストを攻撃する手法)を効果的に防ぐことができます。 scrypt (Single External Memory Programming Language Cryptographic Algorithm) scrypt は、2002年にエヴァン・リードによって開発されたパスワードハッシュアルゴリズムです。 bcrypt と同様に、キーとソルトを使用しますが、メモリ量をパラメータとして指定できる点が特徴です。このパラメータによって、より多くのメモリを消費するため、CPUパワーの低い...