哈希密码算法Argon2
Argon2 是一种密码哈希函数,是 2015 年 Password Hashing Competition (PHC) 的获胜者,被认为是当前最安全的哈希算法之一。
核心特点
- 抗 GPU/ASIC 攻击:设计时考虑了硬件加速攻击,通过大量内存需求来增加攻击成本
- 可调节参数:
memoryCost— 使用的内存量(KB)timeCost— 迭代次数parallelism— 并行线程数hashLength— 输出哈希长度
- 抗侧信道攻击:恒定时间操作
argon2变体
| 变体 | 特点 | 用途 |
|---|---|---|
| Argon2id | 混合 Type 2 和 Type 3 | 密码哈希(推荐) |
| Argon2i | 内存访问与密码无关 | 密钥派生 |
| Argon2d | 内存访问与密码相关 | 加盐 |
Argon2id 是最推荐的变体,它结合了 Type 2(抗 GPU 攻击)和 Type 3(抗侧信道攻击)的优点。
Python 示例
1 | from argon2 import PasswordHasher |
安全建议
- 始终使用 Argon2id 作为密码哈希
- 默认参数:时间开销 3,内存开销 65536 KB,并行度 4
- 定期升级:随着硬件发展,适时增加参数值
- 不要自己实现:使用经过审计的库,不要手写