パスワードハッシュジェネレーター
Bcrypt、Scrypt、Argon2アルゴリズムで安全なパスワードハッシュを生成・検証
Bcrypt オプション
値が高いほど安全ですが、計算時間が長くなります。推奨:10-12
結果
パスワードハッシュについて
パスワードハッシュは、ユーザーパスワードを固定長の文字列に変換する一方向暗号化技術です。通常のハッシュとは異なり、パスワードハッシュアルゴリズムはブルートフォース攻撃やレインボーテーブル攻撃に対抗するように特別に設計されています。
重要:プレーンテキストのパスワードを保存しないでください!ユーザーパスワードを保存する際は、常にパスワードハッシュアルゴリズム(Bcrypt、Scrypt、Argon2など)を使用してください。これらのアルゴリズムには、レインボーテーブル攻撃を効果的に防ぐためのソルト生成が組み込まれています。
アルゴリズム比較
| アルゴリズム | 年 | メモリ使用量 | GPU耐性 | 推奨 |
|---|---|---|---|---|
| Bcrypt | 1999 | 4KB | 中 | はい |
| Scrypt | 2009 | 設定可能 | 高 | はい |
| Argon2 | 2015 | 設定可能 | 非常に高い | 最適な選択 |
Bcryptについて
Bcryptは、1999年にNiels ProvosとDavid Mazièresによって設計された、Blowfish暗号に基づく適応型パスワードハッシュ関数です。ハードウェア性能の向上に合わせて増加できるコストファクターが含まれており、クラッキングへの耐性を維持します。Bcryptは最大72バイトのパスワードをサポートし、$2a$、$2b$、$2y$プレフィックスを持つ60文字のハッシュを生成します。
Scryptについて
Scryptは、2009年にColin Percivalによって設計されたパスワード派生関数で、計算に大量のメモリを必要とするメモリハードアルゴリズムとして特別に設計され、ASICやGPUの並列攻撃に効果的に対抗します。Scryptは暗号通貨(Litecoinなど)やパスワード保存に広く使用されています。パラメータN、r、pでCPUとメモリコストを調整できます。
Argon2について
Argon2は2015年のパスワードハッシュコンペティションの優勝者であり、現在利用可能な最も安全なパスワードハッシュアルゴリズムと考えられています。3つの変種があります:Argon2d(GPU耐性)、Argon2i(サイドチャネル耐性)、Argon2id(両方を組み合わせ、パスワードハッシュに推奨)。Argon2はメモリ、反復回数、並列度パラメータを設定できます。
パスワード保存のベストプラクティス
- Argon2idを最優先で使用し、利用できない場合はBcryptを使用
- プレーンテキストのパスワードを保存したり、パスワードハッシュにMD5/SHAを使用しない
- 十分に高いコストファクターを使用(Bcrypt ≥10、Argon2 memory ≥64MB)
- ハードウェアの進歩に合わせて定期的にハッシュアルゴリズムとパラメータを更新
- ユーザーに強力なパスワードの使用を要求するパスワードポリシーを実装