PBKDF2 vs Argon2:密钥派生函数如何选择
PBKDF2 vs Argon2密钥派生函数如何选择密钥派生函数的作用人类记忆的密码和加密算法需要的密钥之间存在一道鸿沟你的主密码可能是 “MyCat2024!”而 AES-256 需要的是一个 256-bit 的二进制密钥——形如0x7f3b9c...的 32 字节序列。密钥派生函数Key Derivation Function, KDF就是这道鸿沟的桥梁。它接受一个可变长度的密码和一个随机盐值salt输出一个固定长度的密钥。关键的不是转换本身而是这个转换过程的计算成本——KDF 必须足够慢让攻击者无法在合理时间内暴力破解。一个不安全的 KDF如简单的 SHA-256 哈希可以在现代 GPU 上每秒尝试数十亿次密码而一个设计良好的 KDF 会将这个速度压低到每秒几千次甚至更低。PBKDF2 的原理和工作方式PBKDF2Password-Based Key Derivation Function 2由 RSA 实验室的 B. Kaliski 在 2000 年提出定义在 RFC 2898 中。它的工作方式直截了当将密码和盐值拼接计算一次 HMAC通常基于 SHA-256。将上一次的输出作为输入再计算一次 HMAC。重复上述过程迭代次数由参数指定。迭代次数是 PBKDF2 的核心参数。100,000 次迭代意味着计算一个密钥需要执行 100,000 次 HMAC 操作。对于合法用户解密时等待一次几百毫秒的延迟完全可以接受但对于尝试数十亿密码的攻击者这个成本就变得不可承受。PBKDF2 的主要局限是它的每一步运算都是纯 CPU 密集型的对内存消耗极低。这意味着攻击者可以使用 GPU 或专用 ASIC 芯片并行计算大量候选密码大幅降低单次尝试的有效成本。Argon2 的原理和优势Argon2 是 2015 年密码哈希竞赛Password Hashing Competition的获胜者专门为抵抗 GPU 和 ASIC 暴力破解而设计。它与 PBKDF2 的根本区别在于Argon2 不仅消耗 CPU 时间还大量消耗内存。Argon2 的核心优势抗 GPU 并行GPU 拥有大量核心但每个核心的内存极有限。Argon2 要求每次计算占用例如 64MB 内存一块拥有 16GB 显存的 GPU 最多只能并行 256 次尝试远低于 PBKDF2 下数万次的并行度。抗 ASIC设计专用芯片攻击 PBKDF2 只需要计算单元和极少内存。而攻击 Argon2 需要在芯片上集成大量内存制造成本呈指数级增长。可调参数Argon2 提供三个可调参数——迭代时间t、内存消耗m、并行度p允许开发者根据目标平台精确平衡安全性与性能。Argon2 分为两个变体Argon2d抗 GPU 更强和 Argon2i抗侧信道攻击更强。Argon2id 结合了两者优势是目前推荐使用的变体。为什么 DeepSeal 选择 PBKDF2既然 Argon2 在安全性上有明显优势为什么 DeepSeal 仍然选择 PBKDF2这个决定基于三个实际考量跨平台兼容性DeepSeal 需要在 macOS、Windows 和 Linux 三个平台上运行并保持加密数据格式的互操作。PBKDF2 是几乎所有平台和语言的密码学库都原生支持的算法而 Argon2 的原生支持在不同平台上参差不齐。引入 Argon2 意味着要么依赖第三方 C 库增加构建复杂度和潜在的安全审计负担要么用纯语言实现性能无法保证。经过 NIST 认证PBKDF2 是 NIST SP 800-132 推荐的标准密钥派生函数。虽然 NIST 认证不代表绝对安全但它意味着经过了广泛的安全审查和长期的实战验证。对于一款加密产品来说选择被广泛审查的算法是一种保守但负责任的做法。100K 迭代在现代硬件上足够安全PBKDF2-SHA256 在 100,000 次迭代下单次派生在消费级 CPU 上需要约 100-200ms。以最常见的弱密码8 位字母数字为例攻击者使用单块 RTX 4090 GPU 的暴力破解速度约为每秒 150 万次尝试破解一个 8 位字母数字密码仍需约 600 年。对于大多数个人用户的威胁模型这是足够的。未来可能迁移到 Argon2 的条件我们没有排除未来迁移到 Argon2 的可能性。迁移条件包括主流操作系统和密码学库如 WebCrypto API、System Security.framework、CommonCrypto原生支持 Argon2id。GPU 计算能力的增长使 PBKDF2 在合理迭代次数下的安全裕度显著降低。出现可靠的跨平台 Argon2 绑定库经过独立安全审计。迁移时我们会在数据库中记录每条记录使用的 KDF 类型支持 PBKDF2 和 Argon2 并存用户修改密码时自动升级到 Argon2无需一次性迁移所有数据。安全是持续演进的过程不是一次性的选择。当条件成熟时我们会毫不犹豫地升级。原文地址https://hypergrad.cn/blog-pbkdf2-argon2.htmlDeepSeal — 本地加密笔记你的隐私只有你说了算https://hypergrad.cn

相关新闻