Argon2 ハッシュ生成
無料オンライン Argon2 ハッシュ生成 ツール。100% ローカル処理 — データは端末の外に出ません。
Verify: input format is "password|hash"
結果がここに表示されます...
入力 → ハッシュを計算
Usage Guide
Argon2について
Argon2は2015年のPassword Hashing Competitionの優勝アルゴリズムで、ルクセンブルク大学によって設計されました。現在最も安全なパスワードハッシュアルゴリズムであり、OWASPやNISTなどの権威ある組織がパスワード保存に推奨しています。Argon2には3つのバリアント(Argon2d:GPU耐性、Argon2i:サイドチャネル耐性、Argon2id:ハイブリッドモード、推奨)があります。従来のハッシュアルゴリズムとは異なり、Argon2は計算コストとメモリ消費量を調整でき、ブルートフォース攻撃、GPU攻撃、ASIC攻撃に効果的に対抗します。
使用手順
Argon2はパスワードハッシュと検証の2つの操作をサポートしています:
アルゴリズムの特徴
Argon2はパスワード保存専用に設計されており、以下の独自の利点があります:
3つのバリアントの比較
Argon2には異なるシナリオに適した3つのバリアントがあります:
FAQ
Q: Argon2とbcrypt/PBKDF2の違いは何ですか?
A: Argon2:モダンなアルゴリズム(2015年)、メモリハード、GPU/ASIC耐性、OWASPが推奨。 bcrypt:クラシックなアルゴリズム(1999年)、計算ハード、中程度のGPU耐性、広く使用されているがArgon2に徐々に置き換えられている。 PBKDF2:標準アルゴリズム(2000年)、計算ハード、GPU攻撃に脆弱、セキュリティのために非常に高い反復回数(≥ 600k)が必要。 パフォーマンス比較:同じセキュリティレベルで、Argon2は bcryptより2〜3倍速く、PBKDF2より10倍以上速い。 推奨:新規プロジェクトにはArgon2idを使用し、既存プロジェクトは徐々にArgon2に移行してください。
Q: Argon2のパラメータはどのように設定すべきですか?
A: OWASPの推奨設定: メモリコスト(m):47104 KB(約47MB)、サーバーのパフォーマンスが良ければ64MB以上に増やせます。 時間コスト(t):1〜3反復、通常1で十分。 並列度(p):1(シングルスレッド)、並列攻撃を避ける。 ハッシュ長:32バイト(256ビット)。 チューニング方法:開発環境でテストし、単一ハッシュが0.5〜1秒かかることを確認してからサーバーのパフォーマンスに基づいて調整。 注意:パラメータが高いほどセキュリティが高まりますが、サーバー負荷と応答時間が増加します。
Q: なぜArgon2はSHA-256よりパスワード保存に適しているのですか?
A: SHA-256 は高速計算のために設計された汎用ハッシュ関数であり、パスワード保存シナリオでは致命的な弱点です。GPUは毎秒数十億のSHA-256ハッシュを計算でき、ソルトを使用しても総当たり攻撃に脆弱です。 Argon2の利点:1) 低速設計:単一ハッシュに0.5〜1秒かかり、総当たり速度を劇的に低下させる。2) メモリハード:大量のメモリ(64MB)が必要で、GPUやASICは並列攻撃ができない。3) 調整可能なコスト:ハードウェアが向上するにつれてパラメータを増やしてセキュリティを維持できる。 結論:パスワード保存には専用のパスワードハッシュアルゴリズム(Argon2、bcrypt、PBKDF2)を使用し、汎用ハッシュ関数(SHA-256、MD5)は使用しないでください。
Q: Argon2ハッシュ文字列のフォーマットは何ですか?
A: Argon2はPHC(Password Hashing Competition)文字列フォーマットを使用します:$argon2id$v=19$m=65536,t=3,p=1$saltbase64$hashbase64。
コンポーネントの意味: $argon2id:アルゴリズムバリアント(id/i/d)。 v=19:アルゴリズムバージョン(現在は19)。 m=65536,t=3,p=1:メモリコスト(KB)、時間コスト(反復回数)、並列度。 saltbase64:Base64エンコードされたソルト(16バイト)。 hashbase64:Base64エンコードされたハッシュ(32バイト)。
利点:すべてのパラメータが自己完結しており、検証に追加のストレージが不要で、将来のアップグレードが容易。
Q: bcryptからArgon2に移行するにはどうすればよいですか?
A: 段階的移行アプローチ:1) デュアル検証:bcrypt検証ロジックを維持しながら、新規ユーザーとパスワード変更にArgon2を使用。2) 透過的アップグレード:ユーザーがログインする際、まず bcryptで検証し、成功したら即座にArgon2で再ハッシュしてデータベースを更新。3) 識別子フィールド:ハッシュアルゴリズムの種類(bcrypt/argon2)を識別するデータベースフィールドを追加。4) 完全移行:一定期間後(例:6ヶ月)、ほとんどのアクティブユーザーが移行済みになったら、残りのユーザーにパスワードリセットを強制できます。 注意:bcryptとArgon2は異なるハッシュフォーマットを持ち、プレフィックスで自動識別できます($2a$ vs $argon2id$)。
Q: ブラウザでArgon2は遅すぎませんか?
A: Argon2の設計目標は低速計算であり、これはセキュリティの保証であり欠陥ではありません。WebAssemblyを使用してブラウザでArgon2を計算すると、単一ハッシュに0.5〜1秒かかりますが、ユーザーエクスペリエンスへの影響は最小限です(パスワード入力後1秒待つことは許容範囲)。 最適化の提案:1) 非同期計算:Web Workersを使用してバックグラウンドで計算し、UIのブロックを避ける。2) 進捗インジケーター:“暗号化中...”メッセージを表示してユーザーエクスペリエンスを向上。3) パラメータ調整:ブラウザ環境ではメモリコストを適度に削減できます(例:32MB)が、OWASPの最小推奨値(47MB)を下回らないようにしてください。 注意:サーバー側の検証も同じ計算時間が必要であり、これがArgon2のコアセキュリティメカニズムです。
Use Cases
推奨:ユーザーパスワード保存
これはArgon2の主要なユースケースです。ユーザーが登録またはパスワードを変更する際、Argon2idを使用してパスワードをハッシュしてデータベースに保存します。ログイン時に保存されたハッシュ文字列を取り出し、同じパラメータでユーザーが入力したパスワードをハッシュして結果を比較します。Argon2のメモリハード特性により、データベースが侵害されてもユーザーパスワードを保護し、総当たり攻撃を非常にコスト高にします。
推奨:APIキーハッシュ
APIキー(APIトークン、アクセスキーなど)は通常データベースに保存する必要がありますが、平文で保存すべきではありません。Argon2を使用してAPIキーをハッシュすることで、データベースが侵害されても攻撃者は元のキーを取得できません。検証時はユーザーが提供したキーをハッシュして比較します。注意:APIキーは通常ランダムに生成された高エントロピー文字列であるため、Argon2パラメータを適度に削減(例:t=1、m=32MB)してパフォーマンスを向上させることができます。
推奨:暗号通貨ウォレット
暗号通貨ウォレットは秘密鍵を保護するためにパスワードが必要です。Argon2d(データ依存型)を使用してユーザーパスワードから暗号化キーを導出し、そのキーで秘密鍵を暗号化します。Argon2dのGPU耐性により、ウォレットパスワードの総当たり攻撃が非常にコスト高になります。注意:ウォレットシナリオでは通常Argon2idではなくArgon2dを使用します。サイドチャネル攻撃リスクが低く、GPU耐性がより重要だからです。
- ✅ Argon2d(GPU耐性、ウォレット推奨)
- ✅ Argon2id(より包括的なセキュリティ)
- scrypt(クラシックな選択、Bitcoin Coreで使用)
- 💡 より高いセキュリティのためにハードウェアウォレットと組み合わせる
推奨:ファイル暗号化キー導出
Argon2を使用してユーザーパスワードからファイル暗号化キーを導出します。ユーザーがパスワードを提供した後、Argon2が固定長のキー(例:256ビット)を生成し、そのキーを使用してファイルを暗号化します(例: AES-256-GCMを使用)。ソルトとArgon2パラメータはファイルヘッダーに保存され、復号化時にパラメータを抽出してキーを再導出します。このアプローチは暗号化アーカイブ(7-Zip、WinRARなど)やディスク暗号化(VeraCryptなど)で広く使用されています。
- ✅ Argon2id(推奨)
- ✅ Argon2i(サイドチャネル耐性)
- scrypt(クラシックな選択)
- 💡 ソルトとパラメータをファイルヘッダーに保存
推奨:二要素認証バックアップコード
二要素認証(2FA)バックアップコードは、データベースが侵害された場合の悪用を防ぐためにハッシュして保存する必要があります。バックアップコードはランダムに生成された高エントロピー文字列(通常8〜16文字)であるため、低いArgon2パラメータ(例:t=1、m=32MB)を使用してパフォーマンスを向上させることができます。検証時はユーザーが入力したバックアップコードをハッシュして比較し、検証成功後は即座にバックアップコードを無効化します。
非推奨:リアルタイムパフォーマンス重視のシナリオ
Argon2の低速特性により、高頻度API認証、リアルタイムゲームログイン、IoTデバイス認証など、非常に高いパフォーマンスが必要なシナリオには適していません。これらのシナリオでは、リクエストごとにパスワードハッシュを使用するのではなく、トークンベースの認証(JWT、OAuthなど)やセッション管理を使用すべきです。Argon2はユーザーログイン時に一度だけ使用し、検証成功後にトークンを発行して、以降のリクエストはトークン認証を使用します。
- ✅ JWT + HMAC-SHA256(高パフォーマンス)
- ✅ Session + Cookie(従来のアプローチ)
- ✅ OAuth 2.0(標準プロトコル)
- ❌ 高頻度シナリオでArgon2を使用しないでください
ベストプラクティスの推奨事項
- Argon2idはパスワード保存の最良の選択であり、すべての新規プロジェクトに推奨します。既存プロジェクトはbcrypt/PBKDF2からArgon2に徐々に移行すべきです。
- パラメータ設定はOWASPの推奨に従ってください:m ≥ 47MB、t ≥ 1、p = 1。サーバーのパフォーマンスが良ければ、メモリコストを64MB以上に増やすことができます。
- 高頻度シナリオでArgon2を使用しないでください。高パフォーマンスのためにトークン認証(JWT、Session)と組み合わせるべきです。
- bcryptから移行する際は段階的アプローチを使用してください:bcrypt検証を維持し、新規ユーザーとパスワード変更にArgon2を使用し、ログイン時に透過的にアップグレードします。
- ブラウザ環境ではWebAssemblyを使用してArgon2を計算し、Web Workersと進捗インジケーターを組み合わせてユーザーエクスペリエンスを向上させます。