一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于对称密码的状态数字签名方法及系统与流程

2021-11-03 12:48:00 来源:中国专利 TAG:


1.本公开属于网络空间安全技术领域,尤其涉及一种基于对称密码的状态数字签名方法及系统。


背景技术:

2.数字签名是保障网络空间安全的关键技术之一,用于鉴别数据的真实性及完整性,具有不可伪造性、不可抵赖性、可转移性,广泛应用金融、政务、教育、医疗等领域。但是随着量子计算机技术研究的迅速发展,当前被广泛应用的数字签名方案的安全性受到量子计算的潜在威胁。为了防御未来量子计算的可能攻击,美国、欧盟等启动具备抗量子计算机攻击能力的新一代密码算法的研究计划,其中包括抗量子计算的数字签名方案。在各类抗量子计算数字签名方案中,基于对称密码的数字签名picnic备受瞩目。katz、kolesnikov与wang(参见jonathan katz,vladimir kolesnikov,and xiao wang.improved non

3.interactive zero knowledge with applications to post

quantum signatures.in acm sigsac conference on computer and communications security,pp.525

537.acm press,2018.)进一步改进了“picnic”所基于的零知识证明技术,并应用于数字签名“picnic”系列算法中,极大提升了picnic算法的整体性能;picnic目前为美国nist后量子密码竞赛第三轮候选算法。
4.但是,与基于格困难问题的数字签名相比,基于对称密码的数字签名仍然存在签名长度较大的问题。


技术实现要素:

5.本公开为了解决上述问题,本发明提出一种基于对称密码的状态数字签名方法及系统,本公开在签名者与验证者存在多次签名需求的场景下,可显著降低签名长度,提升多次签名和验证的性能。
6.为了实现上述目的,本发明是通过如下的技术方案来实现:
7.第一方面,本公开提供了一种基于对称密码的状态数字签名方法,包括以下步骤:
8.步骤s01:获取分组密码电路及首次签名消息,进行预处理并完成首次签名;
9.步骤s02:将分组密码电路分解为第一分组密码电路和第二分组密码电路;
10.步骤s03:后续签名基于首次签名状态,并结合随机掩码复用技术,对步骤s02中的第二分组密码电路应用零知识证明;
11.步骤s04:结合签名消息,利用fiat

shamir转换技术对步骤s03中的第二分组密码电路零知识证明进行转化,生成签名;
12.步骤s05:针对后续签名消息,重复步骤s03

步骤s04,依次生成后续签名。
13.进一步的,步骤s01中预处理采用预处理“mpc

in

the

head”协议,协议分为预处理阶段和在线阶段两个阶段。
14.所述预处理阶段为整个电路的每条输入线路和所有乘法门的输出线路分配随机
掩码,并为每个参与方分配对应的随机掩码份额;如果门电路是异或门,每个参与方在本地计算掩码份额的异或;如果门电路是乘法门,每个参与方的输入线路拥有两个掩码份额,并且需要为参与方设置辅助信息。
15.所述在线阶段运行虚拟的安全多方计算协议,每个参与方都持有含掩码的输入值以及各自的掩码份额;如果门电路是异或门,每个参与方自行计算线路的输出结果;如果门电路是乘法门,每个参与方计算份额,对所有参与方通过公开各自份额重构,得到电路最终输出结果。
16.所述步骤s03中,计算步骤s02中第一分组密码电路,并对计算后的第一分组密码电路使用掩码隐藏,获得状态存储,用于后续多次签名输入信息的计算。
17.对后序签名的相关掩码进行重新随机化,前一次签名为后一次签名提前生成需要的随机数,用于计算后续签名;每次签名结束后,签名者与验证者双方更新各自内部状态,作为下一次签名者与验证者的输入。所述第二分组密码电路规模显著小于分组密码电路规模。
18.第二方面,本公开第一方面所述的基于对称密码的状态数字签名方法,包括预处理模块、证明模块和转化模块:
19.所述预处理模块,被配置为:获取分组密码电路及首次签名消息,进行预处理并完成首次签名;将所述分组密码电路分解为第一分组密码电路和第二分组密码电路;
20.证明模块,被配置为:后续签名基于首次签名状态,并结合随机掩码复用技术,对所述预处理模块中的第二分组密码电路应用零知识证明;
21.转化模块,被配置为:结合签名消息,利用fiat

shamir转换技术对步骤s03中的第二分组密码电路零知识证明进行转化,生成签名。
22.第三方面,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现第一方面中所述的一种基于对称密码的状态数字签名方法。
23.第四方面,本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现第一方面中所述的一种基于对称密码的状态数字签名方法。
24.与现有技术相比,本公开的有益效果为:
25.本公开提供的数字签名方案适用于签名者与验证者存在多次签名需求的场景,如在区块链应用场景中,本签名方案的部分公开状态信息可存储于历史区块中,用以加速后续区块签名及验证,同时降低签名长度;在完成初次签名后,后续签名与现有picnic签名方案相比,具有更快的签名和验证的速度以及更短的签名长度。
附图说明
26.构成本实施例的一部分的说明书附图用来提供对本实施例的进一步理解,本实施例的示意性实施例及其说明用于解释本实施例,并不构成对本实施例的不当限定。
27.图1为本公开实施例1的签名者进行签名的流程图;
28.图2为本公开实施例1的验证者进行验证的流程图;
29.图3为本公开实施例1的签名者和验证者状态更新的流程图;
30.图4为本公开实施例1的签名者执行电路的结构图;
31.图5为本公开实施例1的预处理阶段异或门的结构图;
32.图6为本公开实施例1的预处理阶段乘法门的结构图;
33.图7为本公开实施例1的多次数字签名流程图;
34.图8为本公开实施例1的进行优化的二叉树结构图。
具体实施方式:
35.下面结合附图与实施例对本公开作进一步说明。
36.应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
37.实施例1:
38.本实施例中,在katz、kolesnikov与wang的预处理“mpc

in

the

head技术(kkw)基础上,结合分组密码结构特点,将分组密码电路分解为第一分组密码电路和第二分组密码电路两部分;定义分组密码f(x)=f2·
f1(x)=f2(y1)=y,其中第一分组密码电路f1(x)=y1,令c表示f对应的电路,第二分组密码电路c
(2)
表示f2对应的电路,f2对应电路c
(2)
规模显著小于c;在完成首次签名后,后续签名基于首次签名状态,并结合随机掩码复用技术,对于c
(2)
应用零知识证明,在不泄露任何关于x、y1信息的情况下,说服验证者相信证明者确实知道x,且确保f2知识可提取;利用fiat

shamir转换技术将上述c
(2)
零知识证明进一步转化为规模更小的数字签名方案;在后续的每次签名及验证算法中,签名者与验证者各自更新内部状态,基于前一次签名后的状态更新,实现当前签名长度压缩及性能提升。
39.本实施例中提出的基于对称密码的状态数字签名方案在第1次签名中执行c的电路证明,输出相关证明作为第一次签名;在第t(t>1)次签名中执行c
(2)
的电路证明,其中每个实例包含l次并行执行,输出相关证明作为第t次证明。在第1次签名中,令z
α
表示电路c在输入w后线路α对应的值,签名者的掩码为λ
α
∈{0,1},计算得到电路的含掩码的输入值签名者在第1次签名得到时需要将作为状态存储,用于后续多次签名输入信息的计算;为了保障多次签名不会造成秘密泄露,需对后序签名的相关掩码进行重新随机化,其中第i次签名需要为第i 1次签名提前生成需要的随机数seed
δ
,用于计算后续签名;每次签名结束后,签名者与验证者双方需更新各自内部状态,作为下一次签名/验证的输入。
40.本实施例中利用的预处理“mpc

in

the

head”协议分为两个阶段:预处理阶段和在线阶段。
41.具体的,预处理阶段为整个电路的每条输入线路和所有乘法门的输出线路分配随机掩码,并为每个参与方分配对应的随机掩码份额(假设共有n个“虚拟”参与方);电路门的输入线路记为α和β,输出线路记为γ。
42.(1)如果门电路是异或门,每个“虚拟”参与方可以本地计算掩码份额的异或,即
43.(2)如果门电路是乘法门,每个“虚拟”参与方的输入线路拥有两个掩码份额[λ
α
]、

β
],为每个参与方随机生成份额[λ
α,β
]在协议执行阶段使用。利用该方式生成的掩码份额并不能保证为了确保{λ
α,β
}份额的正确性,需要为第n个参与方设置辅助信息aux,使得
[0044]
在第1次签名中,每个参与方拥有一个长度为κ比特的种子{seed
i
∈{0,1}
k
}
i∈[n]
,每个参与方利用自己的种子seed
i
生成执行多方安全计算协议时需要的掩码份额和随机数,最后一个参与方拥有辅助信息aux
n
;在第1次签名过程中,保留计算得到对应的随机掩码值利用随机掩码值和seed
δ
计算得到下一次签名的输入随机掩码;以第二次签名为例,签名运行c
(2)
电路证明,利用seed
δ
生成l次电路c
(2)
证明执行用到的随机掩码差值{δ
(u)
}
u∈[l]
,第一次执行的输入随机掩码为每个参与方利用生成第一次执行的输入掩码份额为了确保份额的正确性,需要为最后一个参与方添加一个辅助比特corr,满足与方添加一个辅助比特corr,满足将辅助比特corr存入aux
n
中。设state表示参与方在预处理阶段的状态信息,针对前n

1个参与方,令{state
i
=seed
i
}
i∈[1,...,n

1]
,用于协议执行时生成针对第n个参与方,令state
n
=seed
n
||aux
n
,用于协议执行时生成[λ
α
]
n
和[λ
α,β
]
n

[0045]
在线阶段,签名者模拟运行安全多方计算协议,假设每个虚拟参与方都持有含掩码的输入值以及各自的掩码份额;假设α和β是两条输入线路,分别对应和输出线路是γ,每个参与方需要计算线路的输出结果
[0046]
(1)如果门电路是异或门,每个参与方可自行计算
[0047]
(2)如果门电路是乘法门,每个参与方计算(2)如果门电路是乘法门,每个参与方计算所有参与方通过公开各自份额[s]重构得到s,因为和可以得到得到电路最终输出结果后,可通过公开对应λ
γ
验证z
γ
正确性。
[0048]
第1次签名的在线阶段计算含有掩码的输入值将发送给每个虚拟参与方;对于每个门电路按照上述方式执行c电路证明。在获得计算结果时存储状态用于计算后续签名的输入信息;在第t(t>1)次签名时,签名者首先利用第1次签名状态信息和第t

1(t>1)次签名生成的seed
δ
计算本次签名的输入值,然后完成电路c
(2)
证明。
[0049]
实施例2:
[0050]
本实施例提供了一种基于对称密码的状态数字签名系统,应用了实施例1中基于对称密码的状态数字签名方法,包括预处理模块、证明模块和转化模块:
[0051]
所述预处理模块,被配置为:预处理首次签名,获取分组密码电路;将所述分组密码电路分解为第一分组密码电路和第二分组密码电路;
[0052]
证明模块,被配置为:后续签名基于首次签名状态,并结合随机掩码复用技术,对所述预处理模块中的第二分组密码电路应用零知识证明;
[0053]
转化模块,被配置为:利用fiat

shamir转换技术对所述证明模块中的第二分组密码电路零知识证明进行转化。
[0054]
实施例3:
[0055]
本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1所述的基于对称密码的状态数字签名方法。
[0056]
实施例4:
[0057]
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1所述的基于对称密码的状态数字签名方法。
[0058]
实施例5:
[0059]
密钥生成:输入安全参数κ,签名者通过预设转换函数gen生成一对公私钥(pk,sk),其中pk=y,sk=w,满足c(w)=y,c为公开的分组密码电路描述。方案初始化t=1,签名者s的状态sstate
t


,验证者v的状态vstate
t



[0060]
如图1所示,本实施的签名阶段为:输入(sk,message),
[0061]
q1、承诺阶段:
[0062]
q11、签名者s均匀随机的选择salt
t
∈{0,1}
k
和伪随机生成器种子
[0063]
q12、如果t=1,针对每个实例j∈[m]:
[0064]
q12a、签名者s均匀随机的选择伪随机生成器主种子并利用生成:
[0065]
seed
j,1,t
,r
j,1,t
,...,seed
j,n,t
,r
j,n,t

[0066][0067]
...,
[0068][0069]
q12b、签名者s根据上述kkw方法计算aux
j,n,t
∈{0,1}
|c|
。针对i∈[n

1],令state
j,i,t
=seed
j,i,t
;令state
j,n,t
=seed
j,n,t
||aux
j,n,t

[0070]
q12c、签名者s利用生成
[0071]
q12d、针对每个i∈[n],签名者s计算com
j,i,t
=com(state
j,i,t
,r
j,i,t
,salt
t
),其中com为承诺方案。
[0072]
q12e、签名者s利用{state
j,i,t
}
i∈[n]
按照以下方式执行:
[0073]
(1)对于电路c的每一条输入线路α,利用seed
j,i,t
生成掩码{λ
j,α,t
}。
[0074]
(2)计算包含掩码的输入值即其中w
α
表示w对应输入线路α的值。
[0075]
(3)根据c的kkw电路证明在线阶段,运行n个参与方的安全多方计算协议π
full
,每
个参与方生成消息msgs
j,i,t

[0076]
(4)令执行c电路的中间值为其中z
j,α,inter
为计算c(w)过程中线路α产生的中间状态值,λ
j,α,inter
为线路α的掩码值)。
[0077]
q12f、签名者s利用杂凑函数h计算h
j,t
=h(com
j,1,t
,...,com
j,n,t
)和
[0078]
q12g、签名者s利用为c
(2)
电路的每条输入线路生成
[0079]
(1)针对所有u∈[l],i∈[n

1],签名者s利用为c
(2)
电路的每条输入线路生成随机掩码份额并计算满足满足
[0080]
(2)针对所有u∈[l],i∈[n

1],令令
[0081]
q12h、签名者s计算和和
[0082]
q12i、签名者s计算h
t
=h(h
1,t
,...,h
m,t
),h

t
=h(h

1,t
,...,h

m,t
)和
[0083]
q13、如果t>1,针对j∈c:
[0084]
q13a、签名者s均匀随机选择伪随机生成器主种子并利用生成:
[0085][0086]
...,
[0087][0088]
q13b、签名者s利用生成
[0089]
q13c、签名者s利用按照以下方式执行c
(2)
证明在线阶段:
[0090]
(1)计算掩码后的c
(2)
电路输入值即
[0091]
(2)根据c
(2)
电路的kkw在线证明,运行n个参与方的安全多方计算协议π
part
,每个参与方生成消息
[0092]
q13d、签名者s计算
[0093][0094]
q13e、签名者s利用为c
(2)
电路的每条输入线路生成随机掩码差值
[0095]
(1)针对所有u∈[l],i∈[n

1],签名者s利用为c
(2)
电路的每条输入线路生成并计算满足
[0096][0097]
(2)对于所有u∈[l],i∈[n

1],令令
[0098]
q13f、假设c={j1,...,j
τ
},签名者s计算和和
[0099]
q13g、签名者s计算和
[0100]
q2、挑战阶段:
[0101]
q21、如果t=1,签名者s计算生成一个均匀随机的大小为τ的集合c∈[m]和p
t
={p
j,t
}
j∈c
(其中p
j,t
∈[n])。
[0102]
q22、如果t>1,签名者s计算生成一个均匀随机的(其中)。
[0103]
q3、响应阶段:签名者s发送salt
t
和给验证者v;
[0104]
q31、如果t=1,对于j∈[m]/c,签名者s发送h

j,t
;对于j∈c,签名者s发送和给验证者v。
[0105]
q32、如果t>1,对于j∈c,u∈[l],签名者s发送和给验证者v。
[0106]
输出签名如下:
[0107]
如果t=1,则如果t=1,则
[0108]
如果t>1,则
[0109][0110]
验证阶段:输入公钥pk,消息message及签名σ,
[0111]
如图2所示,验证者v将进行以下检查,所有检查都通过则验证成功:
[0112]
t1、如果t=1:
[0113]
t1a、对于j∈c,验证者v利用和salt
t
计算然后计算h
j,t
=h(com
j,1,t
,...,com
j,n,t
)。t1b、对于j∈c,验证者v利用和salt
t
计算
[0114]
t1c、对于j∈[m]/c,验证者v利用和计算h
j,t
和然后计算h
t
=h(h
1,t
,...,h
m,t
)和
[0115]
t1d、对于j∈c,验证者v利用和模拟n个参与方执行多方安全计算协议π
full
,计算得到和输出结果y

。检查y是否等于y’,并计算以及h

t
=h(h

1,t
,...,h

m,t
)。
[0116]
t1e、验证者v检查
[0117]
t2、如果t>1,
[0118]
t2a、对于j∈c,验证者v利用和salt
t
计算计算以及
[0119]
t2b、对于j∈c,u∈[l],验证者v利用和模拟n个参与方执行多方安全计算协议π
part
,计算得到和输出结果y

。检查y是否等于y’,并计算,并计算以及
[0120]
t2c、验证者v检查
[0121]
状态更新
[0122]
如图3所示,签名者s和验证者v每次完成签名及验证后,需要更新各自状态以便加速后续签名生成及验证:
[0123]
u1、签名者s设置
[0124][0125]
u2、验证者v设置
[0126][0127]
u3、签名者s和验证者v设置t=t 1。
[0128]
如图4所示,为签名者在签名的实例中,每次执行包含n个虚拟参与方输入和输出,并且每个输入线路都有一个掩码份额。每次执行对应的电路中包含异或门或乘法门,针对
每个门电路具体执行方式如上所述,在图5和图6中展示了本发明预处理阶段异或门和乘法门的执行结构图。
[0129]
图7展示了本发明状态数字签名流程图,第1次签名中执行c电路,其中每个实例包含1次执行,并为第2次签名预先生成随机数,并在本次数字签名过程结束后更新状态信息;在第t(t>1)次签名中执行c
(2)
电路,其中每个实例包含l次执行,需要为第t 1次签名预先生成随机数,并在本次数字签名过程结束后更新状态信息。通过多次执行c
(2)
电路以及需对相关掩码进行重新随机化,在多次数字签名中提高速度、减小大小。
[0130]
图8展示了本发明采用的二叉树结构图,假设隐藏的种子为seed4,如果不采用二叉树的结构进行优化,则需要发送除了seed4的7个种子;采用二叉树结构进行优化后,需要发送3个种子,分别是:seed
*
的右孩子、seed1的父节点和seed3;采用这样的结构可以减小数字签名大小。
[0131]
本公开所提供的数字签名方案适用于签名者与验证者存在多次签名需求的场景,如在区块链应用场景中,本签名方案的部分公开状态信息可存储于历史区块中,用以加速后续区块签名及验证,同时降低签名长度。在完成初次签名后,后续签名与现有picnic签名方案相比,具有更高的签名和验证速度以及更短的签名长度,以下为签名长度及性能对比表。
[0132]
表2:ρ=128时签名长度及性能对比表
[0133][0134]
表3:ρ=256时签名长度及性能对比表
[0135][0136]
以上所述仅为本实施例的优选实施例而已,并不用于限制本实施例,对于本领域的技术人员来说,本实施例可以有各种更改和变化。凡在本实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本实施例的保护范围之内。
[0137]
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献