パスワードハッシュデコーダー
パスワードハッシュはソルトと設定可能なワークファクターを持つ一方向関数を使用して資格情報を安全に保存します。このツールはModular Crypt Format(MCF)、PHC String Format、LDAPスキームのハッシュを自動検出して解析し、アルゴリズム、パラメータ、ソルト、ハッシュ出力、セキュリティ評価を表示します。
仕様
よくあるユースケース
- データベースがパスワードに使用しているハッシュアルゴリズムの特定
- ペネトレーションテストやセキュリティレビューでのパスワードハッシュセキュリティの監査
- bcryptコストファクターとArgon2パラメータがOWASP推奨事項を満たしているか検証
- LDAPディレクトリのパスワード保存スキームの理解
- ハッシュ形式とパラメータの検査による認証問題のデバッグ
機能
- MCF($1$、$2b$、$5$、$6$、$sha1$、$apr1$)、PHC($argon2id$、$scrypt$、$pbkdf2$)、LDAP({SSHA}、{SHA}、{MD5})形式の自動検出
- アルゴリズム、バリアント、パラメータ(コスト、ラウンド、メモリ、並列度)、ソルト、ハッシュ出力の表示
- セキュリティ評価: 危険(MD5/ソルトなし)、弱い(SHA-1/低コスト)、中程度(SHA-crypt)、強い(bcrypt 12+/argon2/scrypt)
- 色分けされたセキュリティ評価と推奨事項
- ハッシュエンコーディングフォーマットの表示(base64、hexなど)
- 複数行入力からの複数ハッシュの解析
- ハッシュのビット長とエンコーディングフォーマットの表示
- 各アルゴリズムの関連仕様へのリンク
例
ヒント
- bcryptコストファクター12以上がOWASPで推奨されています。各増分で計算時間が2倍になります。
- Argon2idが現在のベストプラクティスです。サイドチャネル耐性(argon2i)とGPU耐性(argon2d)を組み合わせています。
- LDAP {SSHA}はソルト付きSHA-1です。{SHA}よりは良いですが依然として高速ハッシュです。bcryptまたはArgon2に移行してください。
- エンコードパネルからのパスワードハッシュ出力を貼り付けて、ここでデコード・検証できます。
解説 パスワードハッシュデコーダー
パスワードハッシングは、パスワードを平文ではなく一方向暗号ハッシュとして保存する実践です。ユーザーがパスワードを設定すると、システムはそれをハッシュ化してハッシュを保存します。ログイン時に、システムは送信されたパスワードをハッシュ化し、結果を保存されたハッシュと比較します。ハッシュ関数は一方向であるため、ハッシュデータベースを取得した攻撃者はパスワードを直接復元できません。
モダンなパスワードハッシュアルゴリズムはブルートフォース攻撃に耐えるため、意図的に遅くメモリを大量に使用します。bcryptは設定可能なコストファクターを使用し、各増分で計算時間が2倍になります。Argon2(2015年パスワードハッシングコンペティションの優勝者)はGPUベースの攻撃に耐えるため設定可能なメモリ使用量を追加します。scryptも同様に大量のメモリを要求します。これらの「スローハッシュ」は速度のために設計された高速ハッシュ(MD5、SHA-256)とは根本的に異なり、パスワード保存には不適切です。
パスワードハッシュは移植性のために標準化された文字列フォーマットを使用します。Modular Crypt Format(MCF)は$区切り文字を使用します: bcryptは$2b$12$...、SHA-256-cryptは$5$、SHA-512-cryptは$6$です。PHC String Format(Argon2で使用)は名前付きパラメータを追加します: $argon2id$v=19$m=65536,t=3,p=4$salt$hash。LDAPシステムはスキームプレフィックスを使用します: {SSHA}、{PBKDF2}。
各ハッシュにはソルト(ハッシュ化前にパスワードと組み合わされるランダムデータ)が含まれており、同一のパスワードが異なるハッシュを生成することを保証します。ソルトがなければ、攻撃者は事前計算されたレインボーテーブルを使用して一般的なパスワードハッシュを即座に検索できます。ソルトはハッシュとともに保存され(秘密ではありません)、各パスワードに対してランダムに生成されます。
新しいアプリケーションにはOWASPが推奨するArgon2idが現在のベストプラクティスです。Argon2がフレームワークで利用できない場合、コストファクター12以上のbcryptが次善の選択肢で、scryptも許容されます。MD5、SHA-1、プレーンSHA-256はパスワードに使用すべきではありません。高速すぎて、モダンGPUで毎秒数十億回の試行でブルートフォースされる可能性があります。特にMD5は高速チェックサムアルゴリズムとして設計されたものであり、パスワード保存用ではなく、既知の衝突脆弱性もあります。ソルトなしのMD5ハッシュもレインボーテーブル攻撃に対して脆弱です。
bcryptコストファクター($2b$の後の数値)は計算時間を制御する指数です。コスト10は2^10 = 1,024イテレーション、コスト12は2^12 = 4,096イテレーションを意味し、コスト10の4倍遅くなります。OWASPはコスト12を最小値として推奨しています。各増分で時間が2倍になるため、10から12への増加はハッシュ化をサーバーと攻撃者の両方にとって4倍遅くします。
ソルトとペッパーはパスワードセキュリティにおいて異なる役割を果たします。ソルトはハッシュとともに保存されるランダムデータで、パスワードごとに一意であり、同一のパスワードが異なるハッシュを生成することを保証します。ソルトは秘密ではありません。ペッパーはすべてのパスワードに適用される秘密鍵(通常はHMAC経由)で、データベースとは別にアプリケーション設定またはハードウェアセキュリティモジュールに保存されます。データベースが侵害されてもペッパーが侵害されなければ、攻撃者はソルトがあってもハッシュをクラックできません。両方を使用することで多層防御が提供されます。