一种抗量子计算攻击的默克尔树签名方法技术

技术编号:33066636 阅读:10 留言:0更新日期:2022-04-15 09:57
本发明专利技术公开了一种抗量子计算攻击的默克尔树签名方法,涉及数字签名技术、密码电路设计技术,属于信息安全领域。系统可分为签名子系统和验证子系统两部分。其中签名子系统包括PN序列随机数生成模块、HASH函数核心运算模块等;验证子系统包括消息摘要生成模块、一次性签名验证模块、HASH函数核心运算模块、默克尔树根节点验证模块、综合判断模块。本发明专利技术提出的默克尔树签名系统及其实现方法,大幅降低了硬件资源消耗,并提升了系统数据处理速率,在后量子时代国家安全、金融安全、个人财产与数据安全、电子商务等信息安全领域具有广泛的应用场景。用场景。

【技术实现步骤摘要】
一种抗量子计算攻击的默克尔树签名方法


[0001]本专利技术涉及数字签名技术、密码电路设计技术,属于信息安全领域,具体涉及一种抗量子计算攻击的默克尔树签名系统及其实现方法。

技术介绍

[0002]随着计算机技术、通信技术的飞速发展,信息安全问题受到人们的高度重视。近几十年,以RSA、ECC、Diffie-Hellman为代表的公钥密码体制在非对称加密与数字签名等方面发挥着重要的作用,逐渐成为互联网与信息基础设施的核心安全协议,在军事、政治、经济、生活等方面均有广泛且关键的应用,在个人、企业和政府的安全通讯中形成了牢不可破的壁垒。上述现行公钥密码体制的安全性主要依赖于大数分解、离散对数的数学难题,而量子计算机的高并行性和量子算法对现行公钥体制形成了严重的威胁,量子计算机相关技术的高速发展令当今信息社会感受到一种前所未有的紧迫感。1997年,Shor提出了shor量子算法,使得在多项式时间内求解大数分解、离散对数等数学难题成为可能,给出了破解现行公钥密码体制的量子计算理论依据,而2017年11月IBM成功研制出50量子比特的量子计算原型机,使量子计算从理论向应用迈出了一大步。若依托数千量子比特的量子计算机具体实施量子计算攻击,能够轻易破解上述应用广泛的现行公钥密码和签名算法。
[0003]当前用于抵抗量子计算攻击的签名方法主要包括基于格上的困难问题的签名方法和基于多变量二次方程求解难题的签名方法,然而国内外现行的技术存在以下几点不足:(1)数字签名有小概率会失败;(2)签名效率较低;(3)秘钥存储空间较大。/>
技术实现思路

[0004]本专利技术的目的是为了解决上述问题,提出一种抗量子计算攻击的默克尔树签名系统及其实现方法。
[0005]本专利技术的一种抗量子计算攻击的默克尔树签名系统,可分为签名子系统和验证子系统两部分。其中签名子系统包括PN序列随机数生成模块、HASH函数核心运算模块、伪随机数生成器PRNG、签名-验证密钥对生成与存储模块、默克尔树公钥运算模块、计数器模块、消息摘要生成模块、一次性签名模块;而验证子系统包括消息摘要生成模块、HASH函数核心运算模块、一次性签名验证模块、默克尔树根节点验证模块、综合判断模块。
[0006]本专利技术的一种抗量子计算攻击的默克尔树签名系统的实现方法,其中签名实现方法包括以下几个步骤:
[0007]步骤一:通过PN序列随机数生成模块生成HASH函数的随机参数;
[0008]步骤二:通过伪随机数生成器PRNG,使用种子生成签名与验证秘钥序列;
[0009]步骤三:使用签名与验证秘钥序列生成默克尔树的根节点值,作为签名系统的公钥;
[0010]步骤四:查询计数器模块,得到本次签名秘钥的坐标值;
[0011]步骤五:根据本次签名秘钥的坐标值,计算用于本次签名的签名秘钥、验证秘钥和
默克尔树验证路径的节点值;
[0012]步骤六:通过消息摘要生成模块处理待签名消息,生成消息摘要;
[0013]步骤七:利用步骤五产生的签名秘钥、验证秘钥和默克尔树验证路径的节点值,对步骤六的消息摘要进行一次性签名;
[0014]步骤八:计数器模块加1,指向下一次的签名秘钥。
[0015]其中验证实现方法包括以下几个步骤:
[0016]步骤一:通过消息摘要生成模块处理待签名消息,生成消息摘要;
[0017]步骤二:通过一次性签名验证模块验证消息摘要的一次性签名部分的有效性;
[0018]步骤三:通过默克尔树根节点验证模块判断验证秘钥的有效性;
[0019]步骤四:通过综合判断模块判断本次签名的整体有效性。
[0020]本专利技术的优点在于:
[0021](1)默克尔树签名系统的安全性可以归结于HASH函数的安全性,即HASH函数的单向性和强抗碰撞性。而量子计算对于HASH函数并不存在有效的攻击算法,因此该系统相比现行的RSA、ECC等公钥密码体制和签名算法,在后量子安全时代具备更强的安全性;
[0022](2)默克尔树签名系统的公钥是默克尔树的根节点值,而私钥是伪随机数生成器PRNG 的初始种子,因此其秘钥空间大幅低于其他抗量子安全系统。同时,传统的基于HASH函数的一次性签名方法每个签名-验证秘钥对只能进行一次签名,而本专利技术的默克尔树签名系统通过PRNG可以扩展出大量签名与验证秘钥对,可以根据实际需求完成大量的一次性签名,可扩展性强;
[0023](3)默克尔树签名系统的主要操作集中在HASH函数运算,在高速实现的硬件电路中, HASH函数核心运算模块可以高效复用,因此该系统的硬件资源消耗较低,而签名速度较高,
[0024](4)相较于其他类型的抗量子计算签名方法,默克尔树签名系统的签名成功率为100%。
附图说明
[0025]图1是本专利技术的签名子系统的整体结构示意图;
[0026]图2是本专利技术的验证子系统的整体结构示意图;
[0027]图3是伪随机数生成器PRNG的结构示意图;
[0028]图4是默克尔树结构示意图;
[0029]图5是默克尔树根节点验证路径示意图;
[0030]图6是本专利技术提供的签名方法流程图;
[0031]图7是本专利技术提供的验证方法流程图。
[0032]图1和图2中:
[0033]1-PN序列随机数生成模块
ꢀꢀ
2-HASH函数核心运算模块 3-伪随机数生成器PRNG
[0034]4-签名-验证密钥对生成与存
ꢀꢀ
5-默克尔树公钥运算模块
ꢀꢀ
6-计数器模块
[0035]储模块
[0036]7-消息摘要生成模块
ꢀꢀ
8-一次性签名模块
ꢀꢀ
9-消息摘要生成模块
[0037]10-一次性签名验证模块
ꢀꢀ
11-HASH函数核心运算模块
ꢀꢀ
12-默克尔树根节点验证
模块
[0038][0039]13-综合判断模块
具体实施方式
[0040]下面将结合附图和实施例对本专利技术作进一步的详细说明。
[0041]本专利技术是一种抗量子计算攻击的默克尔树签名系统,可分为签名子系统和验证子系统两部分。如图1所示,其中签名子系统包括PN序列随机数生成模块、HASH函数核心运算模块、伪随机数生成器PRNG、签名-验证密钥对生成与存储模块、默克尔树公钥运算模块、计数器模块、消息摘要生成模块、一次性签名模块;如图2所示,验证子系统包括消息摘要生成模块、一次性签名验证模块、HASH函数核心运算模块、默克尔树根节点验证模块、综合判断模块。
[0042]PN序列随机数生成模块1通过256位的线性反馈移位寄存器产生PN256随机序列,并将该256位的伪随机数D
10
发送至HASH函数核心运算模块2作为HASH函数的随机输入参数,从而保证HASH函数的可变性和语义安全性,同时将伪随机本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种抗量子计算攻击的默克尔树签名系统,其特征在于,可分为签名子系统和验证子系统两部分。其中签名子系统包括PN序列随机数生成模块、HASH函数核心运算模块、伪随机数生成器PRNG、签名-验证密钥对生成与存储模块、默克尔树公钥运算模块、计数器模块、消息摘要生成模块、一次性签名模块;验证子系统包括消息摘要生成模块、一次性签名验证模块、HASH函数核心运算模块、默克尔树根节点验证模块、综合判断模块;PN序列随机数生成模块1通过256位的线性反馈移位寄存器产生PN256随机序列,并将该256位的伪随机数D
10
发送至HASH函数核心运算模块2作为HASH函数的随机输入参数,从而保证HASH函数的可变性和语义安全性,同时将伪随机数D
10
发送至验证子系统的HASH函数核心运算模块11;HASH函数核心运算模块2是签名子系统中通过硬件电路高速实现HASH函数的核心部件,其接收来自PN序列随机数生成模块1的伪随机数D
10
作为HASH函数的核心参数,其分别接收到默克尔树公钥运算模块5、一次性签名验证模块8发送来的HASH函数运算待处理数据D
50
和D
80
,进行HASH运算后分别发送处理结果D
20
、D
21
至默克尔树公钥运算模块5和一次性签名验证模块8;伪随机数生成器PRNG 3接收到D
Seed0
并以此为初始随机种子SEED0用于生成大量的签名秘钥,如图3。伪随机数生成器PRNG 3的核心是伪随机数产生单元PRNG,PRNG的运算逻辑可以表示为PRNG:{0,1}
n

{0,1}
n
×
{0,1}
n
,在图3中的第一行中,SEED
i
经过PRNG运算得到SEED
i+1
,即第一行由初始随机种子SEED0逐个生成种子序列SEED
i
(i=1,2,3,

,2
H-1),总共可以生成2
H
个种子,本发明中H指默克尔树的高度;而在图3的第i列中,由随机种子SEED
i
逐个生成签名秘钥的分量x
i,0
、x
i,1
、x
i,2


、x
i,n-1
,而上述分量组成了一个签名秘钥X
i
=(x
i,0
,x
i,1
,x
i,2
,

,x
i,n-1
),总共可以产生共2
H
个签名秘钥D
30
,并将D
30
发送至签名-验证密钥对生成与存储模块4。因为通过D
Seed0
可以扩展出所有的签名秘钥,所以D
Seed0
作为签名系统的私钥KEY_sec安全保存。伪随机数生成器PRNG3接收到签名-验证密钥对生成与存储模块4发送来的签名秘钥的查询坐标值D
40
,并将D
40
请求的签名秘钥D
31
发送给签名-验证密钥对生成与存储模块4;签名-验证密钥对生成与存储模块4接收来自伪随机数生成器PRNG3发送来的2
H
个签名秘钥D
30
,并通过HASH单向函数运算模块对D
30
进行处理生成验证秘钥Y
i
=(y
i,0
,y
i,1
,y
i,2
,

,y
i,n-1
),其中y
i,j
=f(x
i,j
)(i=0,1,2,3,

,2
H-1;j=0,1,2,

,n-1),其中单向函数f表示为f:{0,1}
n

{0,1}
n
。签名子系统初始化阶段,签名-验证密钥对生成与存储模块4将所有的验证秘钥集合发送至默克尔树公钥运算模块5,用于计算签名系统的公钥KEY_pub。在签名子系统执行一次性签名阶段,签名-验证密钥对生成与存储模块4将签名秘钥坐标值的查询请求D
41
发送给计数器模块,从而接收来自计数器模块反馈的签名秘钥的坐标值D
60
=s,根据D
60
确定本次签名所需的签名秘钥的坐标值并向伪随机数生成器PRNG3发送签名秘钥的查询坐标值D
40
,从而接收伪随机数生成器PRNG3发送来的签名秘钥D
31
。签名-验证密钥对生成与存储模块4将用于一次性签名的数据D
42
=(s,X
s
,Y
s
,Y
s
到默克尔根节点的途经节点在同一父节点之下的兄弟节点值)发送至一次性签名模块8;默克尔树公钥运算模块5用于计算签名系统的公钥,如图4所示。其接收到签名-验证密钥对生成与存储模块4发送来的验证秘钥集合按照图4中的结构
生成默克尔树的根节点值,作为签名系统的公钥D
51
=KEY_pub,同时将KEY_pub广播给所有用户。以图4中高度H=3的默克尔树为例,具体根节点值的运算过程如下:v
0,j
=hash(Y
j
),v
h,j
=hash(v
h-1,2j
||v
h-1,2j+1
),1≤h≤H,0≤j<2
H-h
,这里v
h,j
表示默克尔树中高度为h,坐标为j的节点值,hash为哈希函数,||表示拼接。在此过程中,默克尔树公钥运算模块5将所有需要HASH运算的需求D
50
发送至HASH函数核心运算模块2,从而获得HASH函数核心运算模块2反馈回来的HASH计算结果D
20
;计数器模块6接收到签名-验证密钥对生成与存储模块4关于签名秘钥坐标值的查询请求D
41
,并向签名-验证密钥对生成与存储模块4反馈本次签名所使用的签名秘钥的坐标值D
60
。在每次一次性签名完成后,计数器模块6的内部寄存器s=s+1,即坐标值+1指向下一个待使用的签名秘钥;消息摘要生成模块7接收待签名的消息数据D
in_sign
=m,并通过特定的HASH函数对其进行处理得到消息摘要D
70
=d=(d
n-1
,d
n-2
,

,d0)发送至一次性签名模块8;一次性签名模块8接收消息摘要生成模块7发来的消息摘要D
70
=d=(d
n-1
,d
n-2
,

,d0),接收到签名-验证密钥对生成与存储模块4发来的用于一次性签名的信息D
42
=(s,X
s
,Y
s
,Y
s
到默克尔根节点验证的途经节点在同一父节点之下的兄弟节点值),接收到默克尔树公钥运算模块5发送来的签名系统的公钥D
51
=KEY_pub。通过对摘要d进行签名,得到消息签名得到消息签名通过Y
s
到默克尔根节点验证的途经节点在同一父节点之下的兄弟节点值,计算Y
s
到默克尔树根节点的验证路径P=(p1,p2,

,p
H-1
),其中,这里h=0,1,

,H-1,符号/表示整数相除求整数商,符号表示下取整。如图5所示,以高度H=3的默克尔树为例,P=(v
0,5
,v
1,3
,v
2,0
,v
3,5
)。最后,签名子系统输出完整的默克尔树数字签名D
out_sign
=(m,s,e
s
,Y
s
,P);消息摘要生成模块9接收到消息的数字签名D
out_sign
=(m,s,e
s
,Y
s
,P)中的m,并通过与签名子系统同样的HASH函数对消息m进行处理得到消息摘要D
90
=g=(g
n-1
,g
n-2
,

,g0)发送至一次性签名验证模块10;一次性签名验证模块10接收到消息摘要生成模块9发来的消息摘要D
90
=g=(g
n-1
,g
n-2
,

,g0),接收到到消息的数字签名D
out_sign
=(m,s,e
s
,Y
s
,P)中的s、e
s
和Y
s
,通过计算并检验等式是否成立,从而验证一次性签名e
s
的有效性,即确认e
s
是否由验证秘钥Y
s
对应的签名秘钥X
s
签名所得,若成立,则表示签名e
s
有效,否则无效。将一次性签名e
s
的验证结果D
100
发送给综合判断模块13;HASH函数核心运算模块11是验证子系统中通过硬件电路高速实现HASH函数计算的核心部件,其接收来自PN序列随机数生成模块1的伪随机数作为HASH函数的核心参数,其接收到默克尔树根节点验证模块12发送来的HASH函数运算待处理数据D
120
,进行HASH运算后发送处理结果D
110
至默克尔树根节点验证模块12;默克尔树根节点验证模块12接收到消息的数字签名D
out_sign
=(m,s,e
s
,Y
s
,P)中的P和Y
s
,接收来自默克尔树公钥运算模块5发来的签名系统的公钥D
51
=KEY_pub。如图5,通过P=(p1,p2,

,p
H-1
)按照默克尔树根节点的计算方法计算根节点值Merkel,T0=hash(Y
s
),若
则T
h
=hash(T
h-1
||p
h-1
),若则T
h
=hash(p
h-1
||T
h-1
),这里1≤h≤H,最后得到,Merkel=T
H
。若Merkel=KEY_pub成立,则说明Y
s
是一个有效的验证秘钥,否则无效,将一次性验证秘钥Y
s
的判断结果D
121
发送至综合判断模块13;综合判断模块13接收来自一次性签名验证模块10的一次性签名e
s
的验证结果D
100
和来自默克尔树根节点验证模块12的一次性验证秘钥Y
s
的判断结果D
121
。当且仅当D
100
和D
121
均验证成功,则判定该签名验证成功,否则其中任意一个结果失败,则视为该签名验证失败。综合判断模块13输出判定结果D
out_verify
,表示签名的整体有效性。2.根据权利要求1所述的一种抗量子计算攻击的默克尔树签名系统,其特征在于,PN序列随机数生成模块1通过256位的线性反馈移位寄存器产生PN256随机序列,并将该256位的伪随机数D
10
发送至HASH函数核心运算模块2作为HASH函数的随机输入参数,从而保证HASH函数的可变性和语义安全性,同时将伪随机数D
10
发送至验证子系统的HASH函数核心运算模块11。3.根据权利要求1所述的一种抗量子计算攻击的默克尔树签名系统,其特征在于,HASH函数核心运算模块2是签名子系统中通过硬件电路高速实现HASH函数的核心部件,其接收来自PN序列随机数生成模块1的伪随机数D
10
作为HASH函数的核心参数,其分别接收到默克尔树公钥运算模块5、一次性签名验证模块8发送来的HASH函数运算待处理数据D
50
和D
80
,进行HASH运算后分别发送处理结果D
20
、D
21
至默克尔树公钥运算模块5和一次性签名验证模块8。4.根据权利要求1所述的一种抗量子计算攻击的默克尔树签名系统,其特征在于,伪随机数生成器PRNG 3接收到D
Seed0
并以此为初始随机种子SEED0用于生成大量的签名秘钥,如图3。伪随机数生成器PRNG 3的核心是伪随机数产生单元PRNG,PRNG的运算逻辑可以表示为PRNG:{0,1}
n

{0,1}
n
×
{0,1}
n
,在图3中的第一行中,SEED
i
经过PRNG运算得到SEED
i+1
,即第一行由初始随机种子SEED0逐个生成种子序列SEED
i
(i=1,2,3,

,2
H-1),总共可以生成2
H
个种子,本发明中H指默克尔树的高度;而在图3的第i列中,由随机种子SEED
i
逐个生成签名秘钥的分量x
i,0
、x
i,1
、x
i,2


、x
i,n-1
,而上述分量组成了一个签名秘钥X
i
=(x
i,0
,x
i,1
,x
i,2
,

,x
i,n-1
),总共可以产生共2
H
个签名秘钥D
30
,并将D
30
发送至签名-验证密钥对生成与存储模块4。因为通过D
Seed0
可以扩展出所有的签名秘钥,所以D
Seed0
作为签名系统的私钥KEY_sec安全保存。伪随机数生成器PRNG3接收到签名-验证密钥对生成与存储模块4发送来的签名秘钥的查询坐标值D
40
,并将D
40
请求的签名秘钥D
31
发送给签名-验证密钥对生成与存储模块4。5.根据权利要求1所述的一种抗量子计算攻击的默克尔树签名系统,其特征在于,签签名-验证密钥对生成与存储模块4接收来自伪随机数生成器PRNG3发送来的2
H
个签名秘钥D
30
,并通过HASH单向函数运算模块对D
30
进行处理生成验证秘钥Y
i
=(y
i,0
,y
i,1
,y
i,2
,

,y
i,n-1
),其中y
i,j
=f(x
i,j
)(i=0,1,2,3,

,2
H-1;j=0,1,2,

,n-1),其中单向函数f表示为f:{0,1}
n

{0,1}
n
。签名子系统初始化阶段,签名-验证密钥对生成与存储模块4将所有的验证秘钥集合发送至默克尔树公钥运算模块5,用于计算签名系统的公钥KEY_pub。在签名子系统执行一次性签名阶段,签名-验证密钥对生成与存储模块4将签名秘钥坐标值的查询请求D
41
发送给计数器模块,从而接收来自计数器模块反馈的签名秘钥的坐标值D
60
=s,根据D
60
确定本次签名所需的签名秘钥的坐标值并向伪随机数生成器
PRNG3发送签名秘钥的查询坐标值D
40
,从而接收伪随机数生成器PRNG3发送来的签名秘钥D
31
。签名-验证密钥对生成与存储模块4将用于一次性签名的数据D
42
=(s,X
s
,Y
s
,Y
s
到默克尔根节点的途经节点在同一父节点之下的兄弟节点值)发送至一次性签名模块8。6.根据权利要求1所述的一种抗量子计算攻击的默克尔树签名系统,其特征在于,默克尔树公钥运算模块5用于计算签名系统的公钥,如图4所示。其接收到签名-验证密钥对生成与存储模块4发送来的验证秘钥集合按照图4中的结构生成默克尔树的根节点值,作为签名系统的公钥D
51
=KEY_pub,同时将KEY_pub广播给所有用户。以图4中高度H=3的默克尔树为例,具体根节点值的运算过程如下:v
0,j
=hash(Y
j
),v
h,j
=hash(v
h-1,2j
||v
h-1,2j+1
),1≤h≤H,0≤j<2
H-h
,这里v
h,j
表示默克尔树中高度为h,坐标为j的节点值,hash为哈希函数,||表示拼接。在此过程中,默克尔树公钥运算模块5将所有需要HASH运算的需求D
50
发送至HASH函数核心运算模块2,从而获得HASH函数核心运算模块2反馈回来的HASH计算结果D
20
。7.根据权利要求1所述的一种抗量子计算攻击的默克尔树签名系统,其特征在于,计数器模块6接收到签名-验证密钥对生成与存储模块4关于签名秘钥坐标值的查询请求D
41
,并向签名-验证密钥对生成与存储模块4...

【专利技术属性】
技术研发人员:邱望洁袁波
申请(专利权)人:苏州鸿链信息科技有限公司
类型:发明
国别省市:

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

1