【密码学百科】密钥派生函数:HKDF、PBKDF2、Argon2 与密码存储
内容提要
密钥派生函数(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攻击缺乏抵抗力,因为它的每次迭代只需要极少的内存,攻击者可以并行运行多个实例。
如何选择合适的密码哈希参数?
选择密码哈希参数应基于实际测量,设定目标延迟并逐步调整参数,以确保在用户体验和安全性之间取得平衡。