
Argon2は2015年7月、Password Hashing Competition(PHC)で優勝したパスワードハッシュ関数です。ルクセンブルク大学のAlex Biryukov、Daniel Dinu、Dmitry Khovratovichらが設計し、メモリ大量消費型(メモリハード)にすることでGPU・FPGA・ASICによる並列攻撃を実用的に困難にしました。従来のbcryptやPBKDF2がCPU時間だけを攻撃コストにしていたのに対し、Argon2はメモリ帯域も食い潰すため、攻撃者が安価な並列ハードウェアで効率良く解読することを妨げます。現在ではOWASPやIETF(RFC 9106)が新規システムのパスワード保存に第一選択として推奨しており、Argon2idが事実上の主流になっています。
この記事の目次
- メモリ・並列度・時間の3パラメータ
- Password Hashing Competition
- 現代Webサービスでの採用
- scrypt・bcrypt・PBKDF2との比較
- まとめ
メモリ・並列度・時間の3パラメータ

Argon2はメモリ量m(KiB単位)、時間コストt(反復回数)、並列度p(スレッド数)の3つを調整可能なパラメータとして持ちます。OWASPの2024年版ガイドラインでは、Argon2idでm=19456KiB(約19MiB)、t=2、p=1という設定が推奨基準として示されています。メモリブロックを大量に確保し、内部的にBlake2bハッシュで擬似乱数を生成しながらブロック間を依存させて埋めるため、GPU攻撃ではメモリ帯域がボトルネックとなり、CPU実装と比較した攻撃効率が大幅に下がります。
Argon2には3つのバリアントがあります。Argon2dはデータ依存メモリアクセスでGPU耐性が最も高い反面、サイドチャネル攻撃に弱く、Argon2iはデータ非依存アクセスでサイドチャネル耐性を持つ代わりに少しGPUに弱く、Argon2idは両者を組み合わせた折衷版です。RFC 9106(2021年)はパスワードハッシュ用途として明確にArgon2idを推奨しており、迷ったらArgon2idを選ぶのが定石になっています。
Password Hashing Competition

Password Hashing Competition(PHC)は、bcryptやscryptに代わる新しいパスワードハッシュ標準を選ぶため、Jean-Philippe Aumassonら有志が2013年に立ち上げた国際公募コンペです。AESコンペやSHA-3コンペと同じく、暗号学コミュニティに広く設計を募り、公開査読を経て安全性と性能を評価する透明なプロセスを採りました。2014年3月の締切までに世界中から24件の応募があり、yescrypt、Lyra2、Catena、Makwa、POMELO、battcryptなど多彩な候補が並びました。
委員会は2014年12月に9つのファイナリストへ絞り込み、サイドチャネル耐性、GPU/ASIC耐性、実装容易性、理論的安全性を半年かけて評価しました。2015年7月、ルクセンブルク大学のチームによるArgon2が優勝に選ばれ、yescryptとLyra2が特別言及(special recognition)を受けました。設計者のDmitry KhovratovichはNorbert Pramstallerと並ぶメモリハードハッシュの専門家で、Argon2の安全性証明にも貢献しています。PHCの成果は2021年9月にRFC 9106として標準化され、IETFの公式な技術仕様になりました。
現代Webサービスでの採用

Argon2は新規プロジェクトのデフォルト選択肢として急速に広がりました。PHP 7.2(2017年)からpassword_hash関数のPASSWORD_ARGON2Iが標準サポートされ、7.3でPASSWORD_ARGON2IDが追加されました。Rustのargon2クレート、Pythonのargon2-cffi、Goのgolang.org/x/crypto/argon2、Node.jsのargon2パッケージなど主要言語で実装が揃っています。GitLabは2019年にbcryptからArgon2idへ移行し、Mastodonの新規セットアップでもArgon2idがデフォルトになっています。
パスワード管理ツールの分野でも、1Passwordは2023年にPBKDF2-HMAC-SHA256からArgon2idへ移行し、Bitwardenも2023年からArgon2idを選択可能としました。KDF(Key Derivation Function)として、ユーザーのマスターパスワードからボルト復号鍵を導出する用途で、メモリハード性が攻撃者の負担を最大化するためです。OWASP Password Storage Cheat Sheetは、可能ならArgon2id、できなければscrypt、それでも難しい場合はbcryptという優先順位を明示しており、これが事実上の業界推奨になっています。
scrypt・bcrypt・PBKDF2との比較

Argon2の最大のライバルはColin Percivalが2009年に発表したscryptです。両者ともメモリハード設計ですが、scryptはRomix関数を使うシンプルな構造で、Litecoinなど暗号通貨のPoWでも採用されました。Argon2はscryptを参考にしつつ、サイドチャネル耐性を改善し、並列度パラメータを明示的に持つなど実装の自由度を高めています。安全性の理論解析もArgon2の方が進んでおり、新規プロジェクトでscryptを選ぶ理由は薄れています。
一方、FIPS 140認定を必要とする政府・金融用途ではPBKDF2が今も現役です。NIST SP 800-132で標準化されているのはPBKDF2だけで、Argon2はまだNIST標準ではないため、規制業界では選択肢が限られます。bcryptは25年以上の実績で「枯れている」という安心感があり、既存システムの保守としては有力ですが、新規開発でわざわざ選ぶ理由はほぼなくなりました。Argon2id一択という現在の相場観は、今後5〜10年は変わらないと見られています。
まとめ
Argon2は国際公募で選ばれた次世代パスワードハッシュであり、メモリハード設計でGPU/ASIC攻撃を実用的に困難にしました。RFC 9106として標準化され、OWASPが新規システムへ第一選択として推奨する今、パスワード保存とKDFの分野で名実ともに主役へと躍り出ています。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント