密码学
Argon2
别称: Argon2id, PHC 冠军
定义
现代的内存密集型口令哈希与密钥派生函数,在 2015 年口令哈希竞赛中胜出,并由 RFC 9106 标准化。
Argon2 是由 Biryukov、Dinu 与 Khovratovich 设计的内存密集型密钥派生与口令哈希函数,获得了 2015 年 Password Hashing Competition 冠军,并由 RFC 9106 标准化。它有三种变体:Argon2d(数据相关,速度最快但易受侧信道攻击)、Argon2i(数据无关,抗侧信道)以及推荐的混合变体 Argon2id。可调参数包括内存代价、时间(迭代次数)、并行度与输出长度,内存密集特性使得 GPU/ASIC 大规模破解在经济上极不划算。Argon2 是新系统中口令存储与 KDF 用例的推荐默认算法;OWASP 建议使用 Argon2id,至少 19 MiB 内存、t=2、并行度 1。
示例
- 使用 Argon2id(m=64 MiB,t=3,p=1)存储用户口令。
- 在磁盘加密工具中从口令派生对称加密密钥。
相关术语
密钥派生函数(KDF)
从口令、共享密钥或主密钥等秘密素材派生出一个或多个强加密密钥的密码学函数。
bcrypt
基于 Blowfish 密钥编排、带可调成本参数的自适应口令哈希函数,由 Provos 与 Mazières 于 1999 年提出。
scrypt
由 Colin Percival 于 2009 年设计、由 RFC 7914 标准化的基于口令的内存密集型 KDF,用于口令哈希,也作为部分加密货币的工作量证明算法。
PBKDF2
由 PKCS #5 / RFC 8018 定义的基于口令的密钥派生函数,使用可配置迭代次数和盐反复调用一个伪随机函数。
盐(Salt)
在口令哈希之前与之拼接的唯一随机值,用于抵御彩虹表并使每个用户的哈希都不同。
密码学哈希函数
将任意长度输入映射为固定长度摘要的确定性单向函数,具备抗碰撞、抗原像和抗第二原像三大安全性质。