Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 069

Argon2

审核人Cybersecurity entrepreneur & security researcher

Argon2 是什么?

Argon2现代的内存密集型口令哈希与密钥派生函数,在 2015 年口令哈希竞赛中胜出,并由 RFC 9106 标准化。


Argon2 是由 Biryukov、Dinu 与 Khovratovich 设计的内存密集型密钥派生与口令哈希函数,在 2015 年的 Password Hashing Competition 中胜出,并由 RFC 9106 标准化。它有三种变体:Argon2d(数据相关索引,速度最快,但其内存访问模式依赖于密钥,因而会通过侧信道泄露信息)、Argon2i(数据无关索引,抗侧信道,但对时间-内存权衡攻击的抵抗力较弱),以及推荐使用的 Argon2id(一种混合变体,在第一遍的前半段使用 Argon2i 索引,其后改用 Argon2d)。

它的安全性来自于填满一大块在整个计算过程中都必须保留的内存。这种内存密集性是相较于旧方案的关键优势:GPU 或 ASIC 破解器可以并行运行成千上万个廉价的哈希核心,但却无法廉价地为每个核心提供数百兆字节(MiB)的高速 RAM,因此 Argon2 对每次猜测所抬高的成本远超 PBKDF2,甚至超过 bcrypt(后者仅使用约 4 KiB)。可调参数包括内存代价(m)、时间/迭代次数(t)、并行度(p)与输出长度。

RFC 9106 推荐了两套配置:高内存方案为 m=2 GiB、t=1、p=4,内存受限方案为 m=64 MiB、t=3、p=4。OWASP 的《Password Storage Cheat Sheet》给出了一个保守的 Web 服务器基线:Argon2id,m=19456(19 MiB),t=2,p=1。务必为每个口令搭配唯一的随机盐值,并根据自身的延迟预算来调整参数。

flowchart LR
  P[口令] --> H[Argon2id]
  S[唯一随机盐值] --> H
  PARAMS[m 内存代价<br/>t 迭代次数<br/>p 并行度] --> H
  H --> MEM[填满大块内存<br/>内存密集]
  MEM --> O[派生哈希或密钥]
  MEM -. 抬高成本 .-> GPU[GPU 或 ASIC 破解<br/>变得昂贵]

示例

  1. 01

    使用 Argon2id(m=64 MiB,t=3,p=1)存储用户口令。

  2. 02

    在磁盘加密工具中从用户口令短语派生对称加密密钥。

常见问题

Argon2 是什么?

现代的内存密集型口令哈希与密钥派生函数,在 2015 年口令哈希竞赛中胜出,并由 RFC 9106 标准化。 它属于网络安全的 密码学 分类。

Argon2 是什么意思?

现代的内存密集型口令哈希与密钥派生函数,在 2015 年口令哈希竞赛中胜出,并由 RFC 9106 标准化。

如何防御 Argon2?

针对 Argon2 的防御通常结合技术控制与运营实践,详见上方完整定义。

Argon2 还有哪些其他名称?

常见的别称包括: Argon2id, PHC 冠军。

相关术语

另见