实现基于国密SM3的密钥派生(KDF)
前言
密钥派生函数(KDF):密钥派生函数是指从一个共享的秘密比特串中派生密钥数据,在密钥协商过程中,密钥派生函数作用在密钥交换所获取的共享的秘密比特串上,从中产生所需的会话密钥或进一步加密所需的密钥数据。
常见的密钥派生函数包括:
- HKDF:是HMAC-based KDF的缩写,即基于HMAC的KDF。
- PBKDF2:是一个简单的从密码派生密钥的KDF,它可以抵抗字典攻击和彩虹表攻击。
- Bcrypt:是一个开始被淘汰的密码学KDF。它提供可配置的迭代次数,但使用恒定的内存,因此相对来说,比较容易被硬件加速密码破解器所破解,在抗GPU攻击和抗ASIC攻击上已经不再安全。
- Scrypt:是一个强密码学KDF,它是一种内存密集型算法,目标是抵抗GPU攻击、ASIC攻击和FPGA攻击(高效密码破解硬件)。
- Argon2也是一个强密码学KDF,抗GPU攻击、ASIC攻击和FPGA攻击,且效果比Scrypt更好。
SM3:SM3是中华人民共和国政府采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。
在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示