【密码学百科】密钥派生函数:HKDF、PBKDF2、Argon2 与密码存储

💡 原文中文,约21200字,阅读约需51分钟。
📝

内容提要

密钥派生函数(KDF)和密码哈希函数在密码学中至关重要。KDF用于从原始秘密材料生成安全密钥,解决密钥分离、拉伸和熵提取等问题。HKDF是重要的KDF,分为提取和扩展两个阶段,确保输出密钥均匀随机。密码哈希函数用于安全存储用户密码,现代算法如Argon2、bcrypt和scrypt强调内存困难性以抵御攻击。选择合适的参数和工程实践对密码安全至关重要。

🎯

关键要点

  • 密钥派生函数(KDF)用于从原始秘密材料生成安全密钥,解决密钥分离、拉伸和熵提取等问题。

  • HKDF是重要的KDF,分为提取和扩展两个阶段,确保输出密钥均匀随机。

  • 密码哈希函数用于安全存储用户密码,现代算法如Argon2、bcrypt和scrypt强调内存困难性以抵御攻击。

  • 选择合适的参数和工程实践对密码安全至关重要。

  • 密钥分离是密码学的基本原则,确保不同用途的密钥相互独立。

  • 密钥拉伸通过密码学安全的方式将有限的熵拉伸到所需的长度。

  • HKDF的提取阶段将非均匀分布的输入密钥材料压缩为伪随机密钥,扩展阶段将其扩展为任意长度的输出密钥材料。

  • 密码哈希函数的设计目标是在离线攻击模型下保护用户密码,强调代价参数的可调性。

  • PBKDF2、bcrypt和scrypt是常用的密码哈希函数,各自有不同的优缺点。

  • Argon2是当前最先进的密码哈希函数,具有灵活的参数空间和可证明的内存困难性。

  • 密码存储的工程实践包括盐值生成、参数调优和迁移策略,确保密码安全性和用户体验。

延伸问答

什么是密钥派生函数(KDF)?

密钥派生函数(KDF)用于从原始秘密材料生成安全密钥,解决密钥分离、拉伸和熵提取等问题。

HKDF的工作原理是什么?

HKDF分为提取和扩展两个阶段,提取阶段将非均匀分布的输入密钥材料压缩为伪随机密钥,扩展阶段将其扩展为任意长度的输出密钥材料。

为什么密码哈希函数需要慢速设计?

密码哈希函数设计为慢速是为了抵御离线攻击,防止攻击者快速尝试大量密码。

Argon2与其他密码哈希函数相比有什么优势?

Argon2被认为是最先进的密码哈希函数,具有灵活的参数空间和可证明的内存困难性,适用于多种安全需求。

PBKDF2的主要局限性是什么?

PBKDF2对GPU和ASIC攻击缺乏抵抗力,因为它的每次迭代只需要极少的内存,攻击者可以并行运行多个实例。

如何选择合适的密码哈希参数?

选择密码哈希参数应基于实际测量,设定目标延迟并逐步调整参数,以确保在用户体验和安全性之间取得平衡。

➡️

继续阅读