Argon2 ハッシュ生成

無料オンライン Argon2 ハッシュ生成 ツール。100% ローカル処理 — データは端末の外に出ません。

General
Password Hashing / KDF
Specialized
Deprecated
KiB
iterations

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攻撃に効果的に対抗します。

OWASP推奨: Argon2idは OWASPパスワードストレージチートシートで推奨されているアルゴリズムです。Argon2dのGPU耐性とArgon2iのサイドチャネル攻撃耐性を組み合わせ、最も包括的なセキュリティ保護を提供します。すべての新規プロジェクトのパスワード保存に推奨します。

使用手順

Argon2はパスワードハッシュと検証の2つの操作をサポートしています:

1. モード選択パスワードをハッシュするには「暗号化」モード、パスワードを検証するには「復号化」モードを選択
2. パスワード入力ハッシュまたは検証するパスワードを入力ボックスに入力
3. ハッシュ計算「ハッシュ計算」ボタンをクリック、Argon2が自動的にランダムソルトを生成してハッシュを計算
4. 結果保存完全なハッシュ文字列(アルゴリズムパラメータ、ソルト、ハッシュを含む)をコピーしてデータベースに保存
5. パスワード検証検証時は元のパスワードと完全なハッシュ文字列を入力、システムが自動的にパラメータを抽出して検証
プライバシー保護: すべての計算はブラウザ内でローカルに実行され、データはサーバーにアップロードされることなく、完全にオフラインで処理されます。

アルゴリズムの特徴

Argon2はパスワード保存専用に設計されており、以下の独自の利点があります:

メモリハード大量のメモリ(デフォルト64MB)が必要で、GPUやASIC攻撃を非常にコスト高にします
調整可能なコスト時間コスト(反復回数)、メモリコスト、並列度を調整して異なるセキュリティニーズに対応
サイドチャネル耐性Argon2iとArgon2idはキャッシュタイミング攻撃やその他のサイドチャネル攻撃に耐性があります
自動ソルト生成ランダムソルト生成が組み込まれており、手動でのソルト管理が不要
バージョン管理ハッシュ文字列にアルゴリズムバージョンとパラメータが含まれ、将来のアップグレードと移行が容易
パラメータ設定: Argon2のセキュリティはパラメータ設定に依存します。OWASPの推奨:メモリコスト ≥ 47MB(m=47104)、時間コスト ≥ 1反復(t=1)、並列度 = 1(p=1)。サーバーのパフォーマンスが許す場合は、メモリコストを64MB以上に増やしてください。 低すぎるパラメータの使用は避けてください、セキュリティが低下します。

3つのバリアントの比較

Argon2には異なるシナリオに適した3つのバリアントがあります:

Argon2dデータ依存型、最もGPU/ASIC耐性が高いが、サイドチャネル攻撃に脆弱、暗号通貨マイニングに適している
Argon2iデータ非依存型、サイドチャネル耐性があるが、GPU耐性はやや弱い、パスワードハッシュに適している
Argon2idハイブリッドモード(推奨)、両方の利点を組み合わせ、GPUとサイドチャネルの両方に耐性、すべてのシナリオに適している
推奨選択: 特別なニーズがない限り、常に Argon2id を使用してください。OWASP、NIST、暗号学の専門家が一致して推奨しており、最も包括的なセキュリティ保護を提供します。

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のメモリハード特性により、データベースが侵害されてもユーザーパスワードを保護し、総当たり攻撃を非常にコスト高にします。

Recommended Configuration:
  • ✅ Argon2id(OWASP推奨、優先)
  • bcrypt(クラシックな選択、コストファクター ≥ 12)
  • PBKDF2-SHA256(≥ 600k反復)
  • ❌ SHA-256、MD5などの汎用ハッシュは使用しないでください
推奨:APIキーハッシュ

APIキー(APIトークン、アクセスキーなど)は通常データベースに保存する必要がありますが、平文で保存すべきではありません。Argon2を使用してAPIキーをハッシュすることで、データベースが侵害されても攻撃者は元のキーを取得できません。検証時はユーザーが提供したキーをハッシュして比較します。注意:APIキーは通常ランダムに生成された高エントロピー文字列であるため、Argon2パラメータを適度に削減(例:t=1、m=32MB)してパフォーマンスを向上させることができます。

Recommended Configuration:
  • ✅ Argon2id(高セキュリティ)
  • bcrypt(パフォーマンスとセキュリティのバランス)
  • SHA-256 + ソルト(高エントロピーキーに使用可能)
  • 💡 クエリを高速化するためにハッシュプレフィックスインデックスの使用を検討
推奨:暗号通貨ウォレット

暗号通貨ウォレットは秘密鍵を保護するためにパスワードが必要です。Argon2d(データ依存型)を使用してユーザーパスワードから暗号化キーを導出し、そのキーで秘密鍵を暗号化します。Argon2dのGPU耐性により、ウォレットパスワードの総当たり攻撃が非常にコスト高になります。注意:ウォレットシナリオでは通常Argon2idではなくArgon2dを使用します。サイドチャネル攻撃リスクが低く、GPU耐性がより重要だからです。

Recommended Configuration:
  • ✅ Argon2d(GPU耐性、ウォレット推奨)
  • ✅ Argon2id(より包括的なセキュリティ)
  • scrypt(クラシックな選択、Bitcoin Coreで使用)
  • 💡 より高いセキュリティのためにハードウェアウォレットと組み合わせる
推奨:ファイル暗号化キー導出

Argon2を使用してユーザーパスワードからファイル暗号化キーを導出します。ユーザーがパスワードを提供した後、Argon2が固定長のキー(例:256ビット)を生成し、そのキーを使用してファイルを暗号化します(例: AES-256-GCMを使用)。ソルトとArgon2パラメータはファイルヘッダーに保存され、復号化時にパラメータを抽出してキーを再導出します。このアプローチは暗号化アーカイブ(7-Zip、WinRARなど)やディスク暗号化(VeraCryptなど)で広く使用されています。

Recommended Configuration:
  • ✅ Argon2id(推奨)
  • ✅ Argon2i(サイドチャネル耐性)
  • scrypt(クラシックな選択)
  • 💡 ソルトとパラメータをファイルヘッダーに保存
推奨:二要素認証バックアップコード

二要素認証(2FA)バックアップコードは、データベースが侵害された場合の悪用を防ぐためにハッシュして保存する必要があります。バックアップコードはランダムに生成された高エントロピー文字列(通常8〜16文字)であるため、低いArgon2パラメータ(例:t=1、m=32MB)を使用してパフォーマンスを向上させることができます。検証時はユーザーが入力したバックアップコードをハッシュして比較し、検証成功後は即座にバックアップコードを無効化します。

Recommended Configuration:
  • ✅ Argon2id(推奨)
  • bcrypt(より良いパフォーマンス)
  • SHA-256 + ソルト(高エントロピーバックアップコードに使用可能)
  • 💡 使用後すぐにバックアップコードを無効化
非推奨:リアルタイムパフォーマンス重視のシナリオ

Argon2の低速特性により、高頻度API認証、リアルタイムゲームログイン、IoTデバイス認証など、非常に高いパフォーマンスが必要なシナリオには適していません。これらのシナリオでは、リクエストごとにパスワードハッシュを使用するのではなく、トークンベースの認証(JWT、OAuthなど)やセッション管理を使用すべきです。Argon2はユーザーログイン時に一度だけ使用し、検証成功後にトークンを発行して、以降のリクエストはトークン認証を使用します。

Recommended Configuration:
  • ✅ 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と進捗インジケーターを組み合わせてユーザーエクスペリエンスを向上させます。

ディスカッション&フィードバック

0件のコメント
自分