SM9使用的密钥导出函数

 

SM9使用的密钥导出函数是H1和H2函数的前四步,详情参见在第2部分 数字签名算法 5.4.2节密码杂凑函数。

两个密钥导出函数的差异在SM3杂凑时的首字节不同,H1和H2分别使用0x01和0x02作为首字节。以下记H1和H2函数对应的密钥导出函数为KDF1和KDF2

函数:K = KDF1 (Z, klen) 和 K = KDF2 (Z, klen)

功能:SM9使用的的密钥导出函数

输入参数:

  1. Z:KDF所需的数据。
  2. klen:导出密钥的比特长度。

内部参数:

  1. HASH:伪随机函数,这里选中SM3。
  2. hlen:HASH函数的输出长度,即SM3输出长度256比特。
  3. int(i):计数器i的32比特大端表示。

返回数据:

  1. K:导出密钥。

执行步骤:

步骤1

步骤2n>2exp(32)-1,返回错误标识。

步骤3一个字节tag的取值为:KDF1中tag=0x01,KDF2中tag=0x02。

步骤3for i = 1,2,..., n

                  K(i) = HASH (tag || Z || int(i))

步骤4返回K = MSB(K(1) || K(2) || ... || K(n), klen)。(取串的最左边kLen比特)。

图  SM9使用的KDF的执行流程图

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/83592112