暗号
Argon2
別称: Argon2id, PHC 優勝アルゴリズム
定義
2015 年の Password Hashing Competition で優勝し、RFC 9106 に標準化された、メモリ消費型の最新パスワードハッシュ関数兼 KDF。
Argon2 は Biryukov、Dinu、Khovratovich が設計したメモリ消費型の鍵導出・パスワードハッシュ関数で、2015 年の Password Hashing Competition で優勝し、RFC 9106 として標準化されました。3 つの変種があり、Argon2d はデータ依存で高速ですがサイドチャネルに弱く、Argon2i はデータ非依存でサイドチャネル耐性を持ち、推奨の Argon2id はその両者を組み合わせたハイブリッドです。メモリコスト、時間(反復回数)、並列度、出力長が調整可能で、メモリ難度の高さにより GPU や ASIC を用いた大規模クラッキングが経済的に高コストになります。新規システムにおけるパスワード保存と KDF 用途の推奨デフォルトであり、OWASP は Argon2id をメモリ 19 MiB 以上・t=2・並列度 1 で利用することを推奨しています。
例
- ユーザーパスワードを Argon2id(m=64 MiB、t=3、p=1)で保存する。
- ディスク暗号化ツールでパスフレーズから対称鍵を導出する。
関連用語
鍵導出関数(KDF)
パスワードや共有秘密、マスター鍵などの秘密入力から、1 つまたは複数の強力な暗号鍵を導出する暗号関数。
bcrypt
Blowfish 暗号の鍵スケジューリングを基にした適応的パスワードハッシュ関数で、1999 年に Provos と Mazières が設計した。
scrypt
2009 年に Colin Percival が設計し RFC 7914 で標準化された、メモリ消費型のパスワードベース KDF。パスワードハッシュや一部の暗号通貨の Proof-of-Work に利用される。
PBKDF2
PKCS #5 / RFC 8018 で定義されたパスワードベースの鍵導出関数で、設定可能な反復回数とソルトを用いて擬似乱数関数を繰り返し適用する。
ソルト
ハッシュ計算前にパスワードへ付加する一意のランダム値で、レインボーテーブルを無効化し各ユーザーのハッシュを別物にする仕組み。
暗号学的ハッシュ関数
任意長の入力を固定長のダイジェストへ写す決定的な一方向関数で、衝突耐性・原像耐性・第二原像耐性を備える。