Argon2プレイグラウンド
メモリ、反復回数、並列度、ソルト、シークレットを指定して、Argon2id・Argon2i・Argon2dのハッシュを計算。PHC文字列での出力と照合に対応しています。
メモリ 19 MiB
鍵付きハッシュ(Argon2 の K 入力)。エンコード済み文字列には保存されないため、検証時にも必要です。
Argon2(RFC 9106)は Password Hashing Competition の優勝アルゴリズムです。推奨は Argon2id、OWASP の最低値は m=19 MiB, t=2, p=1 です。ブラウザー内で hash-wasm(WebAssembly)により計算します。
パスワードをハッシュと照合
すべてブラウザ内で実行されます。データがアップロードされることはありません。
Argon2プレイグラウンドとは?
Password Hashing Competition の優勝アルゴリズムであるArgon2(RFC 9106)でパスワードをハッシュ化し、バリアント、反復回数、メモリ、並列度、ハッシュ長、ソルトのエンコード、任意のシークレットキーまで、すべてのパラメータを指定できます。結果は生の16進数と標準のPHC文字列で表示されます。
Argon2プレイグラウンドの使い方
- パスワードを入力し、バリアントを選びます(Argon2idを推奨)。
- 反復回数 (t)、メモリ (KiB)、並列度 (p)、ハッシュ長を設定します。
- ソルトをテキスト、16進数、Base64のいずれかで入力するか、空のままにして16バイトのランダムなソルトを使います。
- ハッシュ化をクリックし、エンコード済み文字列または生の16進数をコピーして、下のパネルで照合します。
例
Password password, salt somesalt (text), Argon2id, t=2, m=65536, p=1, 32 bytes
$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc
リファレンスのargon2 CLIやargon2-cffiと同じ結果になります。
Argon2プレイグラウンドを使うべき場面
パラメータの調整、リファレンスベクターの再現、libsodium、argon2-cffi、PHPのpassword_hashなどのライブラリが生成したArgon2ハッシュのデバッグに使います。メモリ設定を大きくすると、スマートフォンでは遅くなったり失敗したりすることがあります。
Argon2プレイグラウンドの仕組み
Argon2は、BLAKE2bから導出したブロックでmKiBのメモリを埋め、そのメモリをt回走査します。アドレス指定はArgon2dではデータ依存、Argon2iではデータ非依存、Argon2idではそのハイブリッドです。出力は、パディングなしのBase64を使った $argon2id$v=19$m=…,t=…,p=…$<salt>$<hash> の形式にエンコードされます。計算はブラウザ内のhash-wasm(WebAssembly)で行われ、任意のシークレットは鍵付きハッシュの入力Kであり、文字列には含まれません。
一般的な使用例
- サーバーのメモリと反復回数の設定の選定
- Argon2のテストベクターの再現
- 別のライブラリが生成したPHC文字列の照合
- Argon2のパラメータがコストにどう影響するかの説明
よくある質問
OWASPはどのパラメータを推奨していますか?
Argon2idで、m=19 MiB以上、t=2、p=1、または m=46 MiB、t=1、p=1 のような同等のトレードオフです。
Argon2id、Argon2i、Argon2dのどれを使うべきですか?
パスワードのハッシュ化にはArgon2idです。Argon2dはサイドチャネル攻撃に弱く、Argon2iはGPUによるトレードオフ攻撃に対して弱くなります。
ここでは並列度を上げると速くなりますか?
いいえ。ブラウザはレーンを順番に計算します。ただしパラメータは結果を変えるため、サーバーで使う値と一致させる必要があります。