一种基于SM3和SM4的签名方法技术

技术编号:38645903 阅读:77 留言:0更新日期:2023-08-31 18:36
本发明专利技术公开了一种基于SM3和SM4的签名方法。本方法为:1)构造伪随机数发生器生成密钥流;2)根据随机的私钥sk=sk0||sk1,利用伪随机数发生器将sk0扩展为T个签名密钥;将每个签名密钥通过杂凑函数计算得到Merkle树的T个叶子节点,根据Merkle树生成公钥pk;3)对于消息M,生成签名种子值S并计算M的杂凑值H;然后根据子集种子值D=Hash(S||H)生成伪随机数流;将伪随机数流按照大端序拆分成2K个未签名整数值并从中选取K个值作为索引值;4)根据K个索引从T个签名密钥中选取K个签名密钥;5)根据所选K个签名密钥确定出K个叶子节点与S拼接得到签名。本发明专利技术大大提高了签名和验签效率。本发明专利技术大大提高了签名和验签效率。本发明专利技术大大提高了签名和验签效率。

【技术实现步骤摘要】
一种基于SM3和SM4的签名方法


[0001]本专利技术属于网络安全
,涉及一种签名方法,尤其涉及一种基于SM3和SM4的签名方法。

技术介绍

[0002]基于杂凑函数的签名方案是使用杂凑函数来实现签名和验证的数字签名方案。与传统的数字签名方案不同,基于杂凑函数的签名方案仅需要进行少量的杂凑计算,并且不需要使用复杂的算法,从而使签名和验证的速度更快。一般地,基于杂凑函数的签名方案需要经过密钥生成、签名、验证等步骤。
[0003]现有的基于杂凑函数的签名方案尺寸大,且签名和验签效率低。

技术实现思路

[0004]针对现有技术中存在的问题,本专利技术的目的在于提供一种基于SM3和SM4的签名方法,不仅填补了签名方案的国产化空白,而且提高了签名效率。
[0005]本专利技术的技术方案为:
[0006]一种基于SM3和SM4的签名方法,其步骤包括:
[0007]1)构造伪随机数发生器SM4

256

CTR生成密钥流;所述伪随机数发生器输入为256
‑<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SM3和SM4的签名方法,其步骤包括:1)构造伪随机数发生器SM4

256

CTR生成密钥流;所述伪随机数发生器输入为256

bit密钥,用于对伪随机数发生器的计数器进行加密,加密算法为SM4,计数器为初始值为0000

0000的16

bit的值;每次得到一个随机数,计数器的值自加1;2)根据随机的私钥sk=sk0||sk1,sk0、sk1各256

bit;利用伪随机数发生器SM4

256

CTR将sk0扩展为T个256

bit签名密钥ek0,ek1,

,ek
T
‑1;将每个签名密钥通过杂凑函数计算,得到Merkle树的T个叶子节点L
i
=Hash(ek
i
),i=0,

,T

1;根据所述Merkle树中第c层内每两相邻节点计算得到第c

1层中该两相邻节点对应的父节点,直到第log2C层;将第log2C层上的C个节点作为公钥pk;C为Merkle树中子树的数量,T为2的幂次,K小于T,C小于T;3)对于待签名的消息M,生成签名种子值S=Hash(sk1||Hash(M))并计算消息M的杂凑值H=Hash(M);然后计算子集种子值D=Hash(S||H);将D输入伪随机数生成器SM4

256

CTR,输出一长度为64K

bit的伪随机数流;将所述伪随机数流按照大端序拆分成32

bit长度的2K个未签名整数值N0,N1,

,N
2K
‑1;从该2K个未签名整数值中选取K个值作为索引值V0,

,V
K
‑1;4)根据所选K个索引值V0,

,V
K
‑1从T个签名密钥中选取K个签名密钥5)根据所选K个签名密钥通过杂凑函数计算L
i
=Hash(ek
i
),i=0,

,T

1确定出K个叶子节点将该K个叶子节点的兄弟节点与签名种子值S拼接,得到签名sig;6)从所述Merkle树的最底层开始直到第...

【专利技术属性】
技术研发人员:孙思维刘田雨牛钟锋周妍张志宇闫海伦
申请(专利权)人:中国科学院大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1