Argon2生成ツール
ランダムな16バイトのソルトを使い、メモリ、反復回数、並列度、ハッシュ長を指定してArgon2idパスワードハッシュを生成します。メモリは最大64 MiB、反復回数は最大4回です。デフォルトはOWASPの基準である19 MiB、2回に設定されています。このツールは$argon2id$v=19$で始まる標準のPHC文字列を返し、PHP、libsodium、argon2ライブラリで検証できます。パスワードが表示されることはありません。
よくある質問
Argon2とは何ですか?
Argon2は2015にPassword Hashing Competitionで優勝し、RFC 9106で規定されています。Argon2idはサイドチャネル攻撃とGPU攻撃の両方に耐性を持つハイブリッド方式です。パスワード保存には、OWASPとRFCがこの方式を推奨しています。
メモリ、反復回数、並列度の設定は何を意味しますか?
メモリは各ハッシュで使用するMiB数、反復回数はそのメモリ上で処理を繰り返す回数、並列度はレーン数を指定します。メモリと反復回数を増やすと、攻撃者がパスワードを推測するコストが高くなります。このツールでは、メモリは1~64 MiB、反復回数は1~4回、並列度は1~4に設定できます。
どの設定を使えばよいですか?
デフォルトは19 MiB、反復回数2回、レーン数1で、Argon2idにおけるOWASPの最小値です。PHPのデフォルトは64 MiB、反復回数4回で、ここでも同じ設定を再現できます。本番環境では、ログイン1回あたりにサーバーが割り当てられる範囲で、できるだけ多くのメモリを使用してください。
メモリと反復回数に上限があるのはなぜですか?
各ハッシュは指定した量のメモリを実際に割り当て、共有サーバー上で各パスを実行します。上限を64 MiB、4回にすることで、一般的な本番環境の設定に対応しつつ、各リクエストの処理を1秒未満に抑えています。
出力文字列には何が含まれますか?
$argon2id$v=19$m=19456,t=2,p=1$の後にソルトとハッシュが続く形式の結果には、方式、バージョン、KiB単位のメモリ量、反復回数、レーン数が記載されています。ソルトとハッシュはパディングなしのBase64で表されます。検証時にはすべてのパラメーターが読み取られるため、文字列全体を保存してください。
ハッシュが毎回異なるのはなぜですか?
リクエストごとに新しいランダムな16バイトのソルトを使うため、同じパスワードでも毎回異なる文字列が生成されます。正しいパスワードを使えば、どの文字列も正しく検証できます。
ハッシュ長を選べますか?
はい。16~64バイトから選択でき、デフォルトは32バイトです。タグを長くしても推測は難しくならないため、パスワードの保存には32バイトで十分です。
これらのハッシュを受け入れるシステムはどれですか?
PHP password_verify、libsodiumのcrypto_pwhash_str_verify、Node.js用のargon2パッケージ、Python用のargon2-cffi、Spring SecurityはいずれもPHC文字列形式を読み取ります。このサイトのArgon2 Verifierも検証できます。
パスワードは保存または返却されますか?
いいえ。パスワードはハッシュの計算中にメモリ上でのみ使用され、レスポンスから除外されます。ログに記録されたり、保存されたりすることはありません。
Argon2iまたはArgon2dのハッシュを生成できますか?
いいえ。このツールは、パスワードに推奨されるバリアントであるArgon2idのみを生成します。Argon2 Verifierでは、Argon2iとArgon2dのハッシュも検証できます。