基于国密SM2算法的批量签名验证方法、装置、设备及介质
文献发布时间:2023-06-19 10:32:14
技术领域
本发明涉及信息技术领域,尤其涉及一种基于国密SM2算法的批量签名验证方法、装置、设备及介质。
背景技术
作为区块链的根基技术之一,数字签名可以保证信息的完整性,同时还具有不可否认性。具体地,签名者使用私钥和待签名的消息摘要来生成签名数据,此后任何签名数据的接收方可根据公开的验签算法和公钥来计算出消息摘要,若计算出来的消息摘要与待签名的消息摘要一致时,则可判断私钥所有者已授权该消息,同时该消息在被签名后无法被否认和修改。
批量验签技术用于一次验证多个数字签名,优异的批量验签算法需同时具有高安全性和比多次验签更快的计算速度。1998年Naccache等人提出了基于DSA算法的批量验签算法,主要思路是加入一组较小的随机数来验证多次验签运算叠加后的等式是否成立。这一算法思路随后也被应用于ECDSA算法中。
SM2椭圆曲线公钥密码算法为国内自主定义的商用密码算法,与ECDSA算法相同,它们的安全性都是基于对椭圆曲线离散对数问题的求解。在SM2算法中需要对待签名消息进行预处理,通过串接用户的自身特性来提高签名算法的整体安全性和不可否认性。然而,现有技术中,区块链在使用SM2算法只能进行单次验签,验签速度慢,在大量交易并发的业务场景下无法有效保证区块链的性能。
发明内容
本发明实施例提供了一种基于国密SM2算法的批量签名验证方法、装置、设备及介质,以解决现有国密SM2算法的验签速度慢的问题。
一种基于国密SM2算法的批量签名验证方法,包括:
通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名;
将基于国密SM2算法的待验签名添加至批量验签通道中的前段队列;
通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者计算所述验签批次对应的批量验签等式的第一数值和第二数值;
将所述验签批次及其第一数值作为一个验签任务或者将所述验签批次及其第一数值、第二数值作为一个验签任务,将所述验签任务添加至后段队列;
通过所述后段队列按照所述验签任务中的第一数值或第一数值和第二数值执行验签操作,输出所述验签批次的验签结果;
其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列以并行方式工作。
可选地,所述通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名包括:
获取待验签名,所述待验签名包括待验消息;
对所述待验消息进行规范性校验,当所述待验消息符合预设规范时,根据签名类型获取消息摘要;
对所述消息摘要进行基于国密SM2算法的标准性校验;
当所述消息摘要符合基于国密SM2算法的标准时,判断所述消息摘要中是否存在预设标志位;
若所述消息摘要中存在预设标志位时,将所述待验签名添加至批量验证通道;
若所述消息摘要中不存在预设标志位时,将所述待验签名添加至单验签通道。
可选地,所述批量验签通道中包括多个前段队列,所述将基于国密SM2算法的待验签名添加至批量验签通道中的前段队列包括:
对所述批量验签通道中的一个前段队列,判断所述前段队列中的待验签名个数是否小于预设的最小批量数;
当所述前段队列中的待验签名个数小于所述最小批量数时,将基于国密SM2算法的待验签名添加至所述前段队列的末尾,否则对所述批量验签通道中的下一个前段队列中的待验签名个数进行校验;
若所述批量验签通道中的所有前段队列的待验签名个数均大于或等于所述最小批量数时,获取待验签名个数最少的前段队列,将基于国密SM2算法的待验签名添加至所述待验签名个数最少的前段队列。
可选地,所述通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值包括:
当所述前段队列中的待验签名个数达到预设的批量验签数目时,以所述批量验签数目的待验签名作为一个验签批次,对所述验签批次的每一待验签名进行预处理,得到每一待验签名对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点;
根据每一待验签名对应的随机数、公钥以及批量验签等式的第一系数和第二系数,计算所述验签批次对应的批量验签等式的第一数值;或者
通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值和第二数值包括:
当所述前段队列中的待验签名个数达到预设的批量验签数目时,以所述批量验签数目的待验签名作为一个验签批次,对所述验签批次的每一待验签名进行预处理,得到每一待验签名对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点;
根据每一待验签名对应的随机数、公钥以及批量验签等式的第一系数和第二系数,计算所述验签批次对应的批量验签等式的第一数值;
根据每一待验签名对应的随机数、椭圆曲线点,计算所述验签批次对应的批量验签等式的第二数值。
可选地,所述批量验签通道中包括多个后段队列,所述将所述验签任务添加至后段队列包括:
获取验签任务个数最少的后段队列;
将所述验签任务添加至所述验签任务个数最少的后段队列。
可选地,所述通过所述后段队列按照所述验签任务中的第一数值执行验签操作,输出所述验签批次的验签结果包括:
当所述验签任务包括所述验签批次及其第一数值时,计算所述验签批次对应的批量验签等式的第二数值;
比较所述第一数值与所述第二数值,当所述第一数值与所述第二数值相同时,输出验签批次验证通过的信息;或者
所述通过所述后段队列按照所述验签任务中的第一数值和第二数值执行验签操作,输出所述验签批次的验签结果包括:
比较所述第一数值与所述第二数值,当所述第一数值与所述第二数值相同时,输出验签批次验证通过的信息。
可选地,所述待验签名包括签名数据(r
所述批量验签等式为:
其中,
一种基于国密SM2算法的批量签名验证装置,包括:
预处理模块,用于通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名;
第一排队模块,用于将基于国密SM2算法的待验签名添加至批量验签通道中的前段队列;
计算模块,用于通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者计算所述验签批次对应的批量验签等式的第一数值和第二数值;
第二排队模块,用于将所述验签批次及其第一数值作为一个验签任务或者将所述验签批次及其第一数值、第二数值作为一个验签任务,将所述验签任务添加至后段队列;
验签模块,用于通过所述后段队列按照所述验签任务中的第一数值或第一数值和第二数值执行验签操作,输出所述验签批次的验签结果;
其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列以并行方式工作。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述的基于国密SM2算法的批量签名验证方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的基于国密SM2算法的批量签名验证方法。
本发明实施例优化了国密SM2算法的验签方式,通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名;将预处理后的待验签名排入批量验签通道中的前段队列;然后通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者第一数值和第二数值;将所述验签批次及其第一数值排入后段队列;最后通过所述后段队列按照所述验签任务执行验签操作,输出验签批次的验签结果;其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列以并行方式工作;从而实现了国密SM2算法的批量验签,大大地提高了验签速度,有效地保证了大量交易并发的业务场景下区块链的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的基于国密SM2算法的批量签名验证方法的一流程图;
图2是本发明一实施例提供的基于国密SM2算法的批量签名验证方法中步骤S101的一流程图;
图3是本发明一实施例提供的基于国密SM2算法的批量签名验证方法中步骤S102的一流程图;
图4是本发明另一实施例提供的基于国密SM2算法的批量签名验证方法的一流程图;
图5是本发明另一实施例提供的基于国密SM2算法的批量签名验证方法的一流程图;
图6是本发明一实施例提供的基于国密SM2算法的批量签名验证方法中步骤S104的一流程图;
图7是本发明一实施例中基于国密SM2算法的批量签名验证装置的一原理框图;
图8是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为解决现有技术中区块链在使用国密SM2算法时只能逐次验签,验签速度慢,无法有效保障在大量交易并发的业务场景下的区块链性能,本发明实施例优化了基于国密SM2算法的验签方式,对待验签名进行批量验证,同时使流水线以并行方式工作,有效地提高了基于国密SM2算法的验签速度。以下将对本实施例提供的基于国密算法的批量签名验证方法进行详细的描述,如图1所示,所述基于国密SM2算法的批量签名验证方法包括:
在步骤S101中,通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名。
在本实施例中,hash队列用于从系统总线中获取待验签名,并对所述待验签名进行预处理,以过滤掉不符合规范和国密SM2算法标准的待验签名。
可选地,作为本发明的一个优选示例,如图2所示,所述步骤S101包括:
在步骤S201中,获取待验签名,所述待验签名包括待验消息。
在步骤S202中,对所述待验消息进行规范性校验,当所述待验消息符合预设规范时,根据签名类型获取消息摘要。
在这里,规范性校验是指判断待验签名是否使用符合国家密码管理局发布的椭圆曲线公钥密码算法规范。根据国际共用还是国内专用,椭圆曲线公钥密码算法分为国际标准和国家标准,本发明实施例通过对待验签名中的待验消息进行规范性校验,以判断所述待验签名是否符合国密算法规范。当所述待验消息符合国密算法规范时,则根据签名类型计算对应的消息摘要,即待验消息的哈希值e=H(m')。
在步骤S203中,对所述消息摘要进行基于国密SM2算法的标准性校验。
本发明实施例是对国密SM2算法进行批量校验。因此在本实施例中,标准性校验是指校验算法是否符合SM2算法的标准,以筛选出可进行批量校验的待验签名,便于后续进行标志位判断及提高标志位判断的效率。
在步骤S204中,当所述消息摘要符合基于国密SM2算法的标准时,判断所述消息摘要中是否存在预设标志位。
在这里,本发明实施例通过增加标志位,来区别需要进行批量验签的待验签名和需要进行单次验签的待验签名。当所述消息摘要符合基于国密SM2算法的标准时,继续判断所述消息摘要中是否存在预设的标志位。若所述摘要消息中存在预设标志位,则进入批量验签,执行步骤S205;否则,若所述摘要消息中不存在预设标志位,则进入单次验签,执行步骤S206。
在步骤S205中,若所述消息摘要中存在预设标志位时,将所述待验签名添加至批量验证通道。
在步骤S206中,若所述消息摘要中不存在预设标志位时,将所述待验签名添加至单验签通道。
进一步地,若经过步骤S203之后,所述消息摘要不符合基于国密SM2算法的标准时,则直接进入单次验签,将所述待验签名排入单验签通道。
本发明实施例通过对所述待验签名进行预处理,筛选出使用国密SM2算法的待验签名,作为预处理后的待验签名,为后续进行批量验签做准备,有利于提高批量验签的速度。
在步骤S102中,将基于国密SM2算法的待验签名添加至批量验签通道中的前段队列。
在本发明实施例中,所述批量验签通道包括若干个前段队列,每一个前段队列作为一个线程,用于进行参数预处理以及计算批量验签等式的第一数值。对于所述多个前段队列,本发明实施例通过对所述多个前段队列进行负载均衡,以提高参数预处理以及第一数值计算的速度。可选地,如图3所示,步骤S102还包括:
在步骤S301中,对所述批量验签通道中的一个前段队列,判断所述前段队列中的待验签名个数是否小于预设的最小批量数。
在这里,所述最小批量数是指一个前段队列在一个验签批次至少可同时进行验签的待验签名个数。在通过上述步骤S101得到预处理后的待验签名后,本发明实施例遍历所述批量验签通道中的每一个前段队列,统计前段队列当前正在排队的待验签名,得到前段队列对应的待验签名个数,并将所述待验签名个数与所述最小批量数进行比较,以找出当前较为空闲或者工作量较轻的前段队列。
在步骤S302中,当所述前段队列中的待验签名个数小于所述最小批量数时,将基于国密SM2算法的待验签名添加至所述前段队列的末尾,否则对所述批量验签通道中的下一个前段队列中的待验签名个数进行校验。
在比较过程中,当所述前段队列中的待验签名个数小于所述最小批量数时,表明所述前段队列较为空闲或者工作量较轻,则将预处理后的基于国密SM2算法的待验签名添加至所述前段队列的末尾,并结束遍历。
否则,所述前段队列中的待验签名个数大于或等于所述最小批量数时,则继续获取下一个前段队列,返回步骤S301,按照相同方式对所述下一个前段队列中的待验签名个数进行校验,直至遍历批量验签通道中的所有前段队列。
在步骤S303中,若所述批量验签通道中的所有前段队列的待验签名个数均大于或等于所述最小批量数时,获取待验签名个数最少的前段队列,将基于国密SM2算法的待验签名添加至所述待验签名个数最少的前段队列。
若遍历完所述批量验签通道中的所有前段队列后,所述前段队列中的待验签名个数均大于或等于所述最小批量数时,则比较所述前段队列对应的待验签名个数,从中选择待验签名个数最小值及其对应的前段队列,并将预处理后的基于国密SM2算法的待验签名添加至所述待验签名个数最小值对应的前段队列的末尾。
在这里,本发明实施例通过上述步骤S301至步骤S303对所述批量验签通道中的所有前段队列进行负载均衡,将预处理后的待验签名添加到当前较为空闲或者工作量较轻的前段队列,避免单个前段队列出现过载,有利于每一个前段队列最大程度地发挥作用,提高批量验签的安全性和可靠性。
在步骤S103中,通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者计算所述验签批次对应的批量验签等式的第一数值和第二数值。
在这里,为了实现批量验签过程中各阶段的并行工作,提高批量验签的速度,本发明实施例将批量验签通道划分为前段队列和后段队列。
作为本发明的一个优选示例,所述前段队列用于进行批量验签的预处理以及计算批量验签等式的第一数值。在这里,所述批量验签的预处理包括建立验签批次,计算验签批次中每一个待验签名的各项参数。可选地,作为本发明的一个优选示例,如图4所示,步骤S103包括:
在步骤S103a中,当所述前段队列中的待验签名个数达到预设的批量验签数目时,以所述批量验签数目的待验签名作为一个验签批次,对所述验签批次的每一待验签名进行预处理,得到每一待验签名对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点。
在这里,所述批量验签数目是指每一次批量验签时的待验签名个数。每一前段队列会统计本队列中当前正在排队的待验签名个数。当所述前段队列中的待验签名个数达到预设的批量验签数目时,则以队列中的所述待验签名作为一个验签批次,对每一个待验签名进行预处理,得到对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点。
本发明实施例采用基于国密SM2算法对消息进行签名,对于第i个待验签名,所述待验签名包括签名数据(r
在进行参数预处理时,本发明实施例采用64位的随机数s
在步骤S103b中,根据每一待验签名对应的随机数、公钥以及批量验签等式的第一系数和第二系数,计算所述验签批次对应的批量验签等式的第一数值。
在本发明实施例中,基于国密SM2算法的批量验签等式:
其中,
作为本发明的另一个优选示例,所述前段队列用于进行批量验签的预处理以及计算批量验签等式的第一数值和第二数值。在这里,所述批量验签的预处理包括建立验签批次,计算验签批次中每一个待验签名的各项参数。可选地,作为本发明的一个优选示例,如图5所示,步骤S103包括:
在步骤S103A中,当所述前段队列中的待验签名个数达到预设的批量验签数目时,以所述批量验签数目的待验签名作为一个验签批次,对所述验签批次的每一待验签名进行预处理,得到每一待验签名对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点。
在步骤S103B中,根据每一待验签名对应的随机数、公钥以及批量验签等式的第一系数和第二系数,计算所述验签批次对应的批量验签等式的第一数值。
其中,步骤S103A-S103B与图4实施例中所述的步骤S103a-S103b相同,具体请参见上述实施例的叙述,此处不再赘述。在本实施例中,所述步骤S103还包括:
在步骤S103C中,根据每一待验签名对应的随机数、椭圆曲线点,计算所述验签批次对应的批量验签等式的第二数值。
其中,所述第二数值是指基于国密SM2算法的批量验签等式中的等号另一边,即
在步骤S104中,将所述验签批次及其第一数值作为一个验签任务或者将所述验签批次及其第一数值、第二数值作为一个验签任务,将所述验签任务添加至后段队列。
如前所述,本发明实施例将批量验签通道划分为前段队列和后段队列,所述后段队列用于判断验签批次是否验证通过。在前段队列完成参数预处理,得到每一待验签名对应的随机数s
可选地,作为本发明的一个优选示例,如图6所示,所述步骤S104中所述的将所述验签任务添加至后端队列还包括:
在步骤S601中,获取验签任务个数最少的后段队列。
在这里,本发明实施例统计每一个后段队列中当前的排队情况,得到队列中当前正在排队的验签任务个数,然后比较每一后段队列的验签任务个数,得到验签任务个数最小值及其对应的后段队列,即当前较为空闲或者工作量较轻的后段队列。
在步骤S602中,将所述验签任务添加至所述验签任务个数最少的后段队列。
在得到验签任务个数最少的后段队列后,本发明实施例将前段队列计算出来的验签批次中的每一待验签名对应的随机数、椭圆曲线点以及批量验签等式的第一数值组合成一个验签任务,添加至所述验签任务个数最少的后段队列的末尾,从而完成对后段队列的调度。或者,将前段队列计算出的批量验签等式的第一数值和第二数值组成一个验签任务,添加至所述验签任务个数最少的后段队列的末尾,从而完成对后段队列的调度。
在这里,本发明实施例通过上述步骤S501至步骤S502对所述批量验签通道中的所有后段队列进行负载均衡,将验签任务,添加到当前较为空闲或者工作量较轻的后段队列,由所述后段队列执行验证判断,避免单个后段队列出现过载,有利于每一个后段队列最大程度地发挥作用,提高批量验签的安全性和可靠性。
在步骤S105中,通过所述后段队列按照所述验签任务中的第一数值或第一数值和第二数值执行验签操作,输出所述验签批次的验签结果。
在本发明实施例中,后段队列按照先进先出原则,根据队列中的每一个验签任务执行验签操作。
作为本发明的一个优选示例,如图4所示,所述步骤S105还包括:
在步骤S105a中,当所述验签任务包括所述验签批次及其第一数值时,计算所述验签批次对应的批量验签等式的第二数值。
在步骤S105b中,比较所述第一数值与所述第二数值,当所述第一数值与所述第二数值相同时,输出验签批次验证通过的信息。
本发明实施例通过所述后端队列按照验签任务计算该验签批次对应的批量验签等式的第二数值,其中,所述第二数值是指基于国密SM2算法的批量验签等式中的等号另一边,即
作为本发明的一个优选示例,如图5所示,所述步骤S105还包括:
在步骤S105A中,比较所述第一数值与所述第二数值,当所述第一数值与所述第二数值相同时,输出验签批次验证通过的信息。
其中,步骤S105A与上述步骤S105b相同,具体请参见上述实施例的叙述,此处不再赘述。
本发明实施例通过对批量验签流程拆分为多个阶段,包括规范性和标准型校验、参数预处理和第一数值计算、第二数值计算和验证判断,分别通过hash队列、批量验签通道中的前段队列、后段队列执行。其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列则可通过并行方式工作。比如在hash队列完成第i个验签批次的规范性和标准型校验后,所述第i个验签批次对应的待验签名会加入到前段队列,在所述前段队列可以对该第i个验签批次计算待验签名的各项参数和计算批量验签等式的第一数值或者第一数值和第二数值的同时,所述hash队列可以对第i+1个验签批次进行规范性和标准型校验;同理,当所述前段队列完成第i个验签批次的参数、第一数值的计算或者参数、第一数值和第二数值的计算后,所述第i个验签批次对应的参数和第一数值或者参数、第一数值和第二数值会加入到后段队列中,在所述后段队列对所述第i个验签批次进行验证判断的同时,所述前段队列可以对第i+1个验签批次进行参数、第一数值的计算或者参数、第一数值和第二数值的计算;从而实现了批量验签流程中的各个阶段的并行工作方式,有利于进一步提高批量验签的速度。
其中,所述批量验签等式的第二数值可以在前段队列完成计算,也可以在后段队列完成计算。若将所述批量验签等式的第二数值放在后段队列计算,能够有效地协调前段队列和后端队列的耗时,更有利于批量验签流程中的各个阶段的并行工作。
综上所述,本发明实施例优化了国密SM2算法的验签方式,通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名;将预处理后的待验签名排入批量验签通道中的前段队列;然后通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者第一数值和第二数值;将所述验签批次及其第一数值排入后段队列;最后通过所述后段队列按照所述验签任务执行对应的验签操作,输出验签批次的验签结果;其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列以并行方式工作;从而实现了国密SM2算法的批量验签,大大地提高了验签速度,有效地保证了大量交易并发的业务场景下区块链的性能。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种基于国密SM2算法的批量签名验证装置,该基于国密SM2算法的批量签名验证装置与上述实施例中基于国密SM2算法的批量签名验证方法一一对应。如图7所示,该基于国密SM2算法的批量签名验证装置包括预处理模块71、第一排队模块72、计算模块73、第二排队模块74、验签模块75。各功能模块详细说明如下:
预处理模块71,用于通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名;
第一排队模块72,用于将基于国密SM2算法的待验签名添加至批量验签通道中的前段队列;
计算模块73,用于通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者计算所述验签批次对应的批量验签等式的第一数值和第二数值;
第二排队模块74,用于将所述验签批次及其第一数值作为一个验签任务或者将所述验签批次及其第一数值、第二数值作为一个验签任务,将所述验签任务添加至后段队列;
验签模块75,用于通过所述后段队列按照所述验签任务中的第一数值或第一数值和第二数值执行验签操作,输出所述验签批次的验签结果;
其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列以并行方式工作。
可选地,所述预处理模块71包括:
获取单元,用于获取待验签名,所述待验签名包括待验消息;
第一校验单元,用于对所述待验消息进行规范性校验,当所述待验消息符合预设规范时,根据签名类型获取消息摘要;
第二校验单元,用于对所述消息摘要进行基于国密SM2算法的标准性校验;
标志判断模块,用于当所述消息摘要符合基于国密SM2算法的标准时,判断所述消息摘要中是否存在预设标志位;
添加单元,用于若所述消息摘要中存在预设标志位时,将所述待验签名添加至批量验证通道;若所述消息摘要中不存在预设标志位时,将所述待验签名添加至单验签通道。
可选地,所述批量验签通道中包括多个前段队列,所述第一排队模块72包括:
个数判断单元,用于对所述批量验签通道中的一个前段队列,判断所述前段队列中的待验签名个数是否小于预设的最小批量数;
第一排队单元,用于当所述前段队列中的待验签名个数小于所述最小批量数时,将基于国密SM2算法的待验签名添加至所述前段队列的末尾,否则对所述批量验签通道中的下一个前段队列中的待验签名个数进行校验;
第二排队单元,用于若所述批量验签通道中的所有前段队列的待验签名个数均大于或等于所述最小批量数时,获取待验签名个数最少的前段队列,将基于国密SM2算法的待验签名添加至所述待验签名个数最少的前段队列。
可选地,所述计算模块73包括:
参数计算单元,用于当所述前段队列中的待验签名个数达到预设的批量验签数目时,以所述批量验签数目的待验签名作为一个验签批次,对所述验签批次的每一待验签名进行预处理,得到每一待验签名对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点;
第一数值计算单元,用于根据每一待验签名对应的随机数、公钥以及批量验签等式的第一系数和第二系数,计算所述验签批次对应的批量验签等式的第一数值;或者,
所述计算模块73包括:
参数计算单元,用于当所述前段队列中的待验签名个数达到预设的批量验签数目时,以所述批量验签数目的待验签名作为一个验签批次,对所述验签批次的每一待验签名进行预处理,得到每一待验签名对应的随机数、公钥、批量验签等式的第一系数和第二系数、椭圆曲线点;
第一数值计算单元,用于根据每一待验签名对应的随机数、公钥以及批量验签等式的第一系数和第二系数,计算所述验签批次对应的批量验签等式的第一数值;
第二数值计算单元,用于根据每一待验签名对应的随机数、椭圆曲线点,计算所述验签批次对应的批量验签等式的第二数值。
可选地,所述批量验签通道中包括多个后段队列,第二排队模块74包括:
获取单元,用于获取验签任务个数最少的后段队列;
添加单元,用于将所述验签任务添加至所述验签任务个数最少的后段队列。
可选地,所述验签模块75包括:
第一计算单元,用于当所述验签任务包括所述验签批次及其第一数值时,计算所述验签批次对应的批量验签等式的第二数值;
比较单元,用于比较所述第一数值与所述第二数值,当所述第一数值与所述第二数值相同时,输出验签批次验证通过的信息;或者
所述验签模块75包括:
比较单元,用于比较所述第一数值与所述第二数值,当所述第一数值与所述第二数值相同时,输出验签批次验证通过的信息。
可选地,所述待验签名包括签名数据(r
所述批量验签等式为:
其中,
关于基于国密SM2算法的批量签名验证装置的具体限定可以参见上文中对于基于国密SM2算法的批量签名验证方法的限定,在此不再赘述。上述基于国密SM2算法的批量签名验证装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于国密SM2算法的批量签名验证方法。
在一个实施例中,提供了一种机器人,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
通过hash队列获取待验签名,对所述待验签名进行预处理,得到基于国密SM2算法的待验签名;
将基于国密SM2算法的待验签名添加至批量验签通道中的前段队列;
通过所述前段队列以队列中的若干个待验签名作为一个验签批次,计算所述验签批次对应的批量验签等式的第一数值或者计算所述验签批次对应的批量验签等式的第一数值和第二数值;
将所述验签批次及其第一数值作为一个验签任务或者将所述验签批次及其第一数值、第二数值作为一个验签任务,将所述验签任务添加至后段队列;
通过所述后段队列按照所述验签任务中的第一数值或第一数值和第二数值执行验签操作,输出所述验签批次的验签结果;
其中,对于同一验签批次,所述hash队列、前段队列和后段队列以顺行方式工作,对于不同验签批次,所述hash队列、前段队列和后段队列以并行方式工作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
- 基于国密SM2算法的批量签名验证方法、装置、设备及介质
- 一种基于国密SM2的无证书签名方法