Argon2 - 暗号化全般

暗号化全般 | IT用語集

Argon2とは

Argon2は、2015年のPassword Hashing Competition(PHC)で優勝した、現在推奨されるパスワードハッシュアルゴリズムです。ルクセンブルク大学のAlex Biryukovらによって設計され、メモリハード関数としてGPUやASICによる攻撃に対して強い耐性を持ちます。

Argon2には3つのバリアントがあります:

  • Argon2d:サイドチャネル攻撃に弱いが、GPU攻撃に最も強い
  • Argon2i:サイドチャネル攻撃に強い
  • Argon2id:✅ 推奨。両者のハイブリッド

Argon2idのパラメータ

  • メモリサイズ:使用するメモリ量(KiB)
  • 反復回数:時間コスト
  • 並列度:同時に使用するスレッド数
  • ソルト:16バイト以上のランダム値
  • ハッシュ長:出力長(32バイト推奨)

AIエンジニアとしての実体験

新規のAIサービスでユーザー認証を実装する際、Argon2idを採用しています:

from argon2 import PasswordHasher, Type

# Argon2idハッシャーの初期化
ph = PasswordHasher(
    time_cost=3,        # 反復回数
    memory_cost=65536,  # 64MB
    parallelism=4,      # 4スレッド
    hash_len=32,        # 32バイト出力
    type=Type.ID        # Argon2id
)

# パスワードのハッシュ化
hash = ph.hash("my_secure_password")

# パスワードの検証
try:
    ph.verify(hash, "my_secure_password")
    print("認証成功")
except:
    print("認証失敗")

OWASPの推奨パラメータ

用途メモリ反復並列度
最小構成19MiB21
推奨構成46MiB11
高セキュリティ64MiB34

最新動向(2026年)

RFC 9106の標準化

2021年にArgon2はRFC 9106として標準化されました。多くのプログラミング言語でライブラリが提供されています。

bcryptからの移行

既存のbcryptハッシュは、ユーザーのログイン時にArgon2idで再ハッシュすることで段階的に移行できます。

トラブル事例と対策

⚠️ メモリ不足エラー

症状:コンテナ環境でメモリ不足

対策:コンテナのメモリ制限を確認し、Argon2のメモリパラメータを調整。

権威あるリソース

関連用語

📝 関連ブログ記事

【2026年最新】OpenSSLの深刻な問題とは?

よくある質問(FAQ)

Q. Argon2とは何ですか?

Argon2は2015年のPassword Hashing Competition(PHC)で優勝したパスワードハッシュアルゴリズムです。メモリハード設計により、専用ASICやGPUを使ったブルートフォース攻撃を困難にします。バリアントとしてArgon2i(サイドチャネル攻撃対策)、Argon2d(GPU攻撃対策)、Argon2id(両方対策の推奨版)があります。

Q. ArgOn2とbcrypt・scryptの違いは何ですか?

bcryptは1999年から使われる古典的アルゴリズムで、メモリ使用量が固定(4KB)のため現代のGPU攻撃に対して弱くなっています。scryptはメモリハードですが、パラメータ設定が複雑です。Argon2idはメモリ使用量・並列度・イテレーション数を柔軟に設定でき、OWASPが2024年時点で第一推奨するアルゴリズムです。

Q. Argon2のパスワードハッシュをPythonで実装するには?

pip install argon2-cffiでインストール後、from argon2 import PasswordHasherでPasswordHasherクラスを使います。ph = PasswordHasher(); hash = ph.hash('パスワード'); ph.verify(hash, '入力パスワード') という形で利用できます。デフォルトパラメータはOWASPの推奨値に設定されているため、特別な理由がなければデフォルトのまま使用を推奨します。

Q. bcryptからArgon2へ移行すべきですか?

既存システムのbcryptが最新コストパラメータで動作していれば、直ちに移行する必要はありません。新規システムや大規模リファクタリングの機会があればArgon2idへの移行を推奨します。移行時は、ユーザーの次回ログイン時にパスワードを再ハッシュする段階的移行が一般的です。

セキュリティ実装のご相談