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の推奨パラメータ
| 用途 | メモリ | 反復 | 並列度 |
|---|---|---|---|
| 最小構成 | 19MiB | 2 | 1 |
| 推奨構成 | 46MiB | 1 | 1 |
| 高セキュリティ | 64MiB | 3 | 4 |
最新動向(2026年)
RFC 9106の標準化
2021年にArgon2はRFC 9106として標準化されました。多くのプログラミング言語でライブラリが提供されています。
bcryptからの移行
既存のbcryptハッシュは、ユーザーのログイン時にArgon2idで再ハッシュすることで段階的に移行できます。
トラブル事例と対策
⚠️ メモリ不足エラー
症状:コンテナ環境でメモリ不足
対策:コンテナのメモリ制限を確認し、Argon2のメモリパラメータを調整。
