数字签名方法及验证方法、设备、存储介质与流程

专利2022-06-29  70


本发明涉及区块链和加密技术领域,尤其涉及一种数字签名方法及验证方法、设备、存储介质。



背景技术:

当前已知的数字签名算法,比如schnorr签名算法(美国专利u.s.pat.no.4,995,082),或gregorymaxwell等人所开发的musig签名方案(文献“simpleschnorrmulti-signatureswithapplicationstobitcoin”)被认为是纯公钥模型下的安全的签名方案,纯公钥模型的意思是签名方案的安全性只依赖于一个且唯一一个要求,即每个签名者必须拥有一个合格的公钥,该公钥由签名者独立生成。这些签名方案都有一个基本的要求,即签名者必须知道私钥,否则无法执行签名。

commitment方案是一个基本的密码学原语,它允许使用者将一个数值以一种方式置入一个盒子中,以便没有人可以窥探该数值的实际值(即隐藏特性),但是使用者自己无法用两种不同的方式来拆解这个盒子(即绑定特性)。多个数值在执行各自的commitment以后,依然有办法可以证明所置入的这些数值之间所满足的一些数学关系而无需揭示任何关于这些数值本身的具体值,即commitment具备零知识证明特性。

为了支持交易的隐私保护功能,一些区块链项目采用pedersencommitment(由torbenprydspedersen开发,见文献“non-interactiveandinformation-theoreticsecureverifiablesecretsharing”)作为交易输入和输出格式,从而使得交易金额数值得以隐藏。pedersencommitment的定义是:给定两个生成元g和h,并使得h的离散对数解无人知晓,即没有人知道一个数值y使得h=gy,取一个随机的用户私钥x,一个用以隐藏数值a的标准的pedersencommitment构造方式可以定义为:c=gxha

pedersencommitment具有完美隐藏特性和计算绑定特性,现有技术中,pedersencommitment有很多替代方案,如timeruffing等人开发的switchcommitment方案(见文献“switchcommitments:asafetyswitchforconfidentialtransactions”),switchcommitment的绑定特性介于计算绑定和统计绑定之间。再如elgamalcommitment方案,具有完美绑定特性和计算隐藏特性,一个典型的elgamalcommitment可以定义为(gxha,hx),其前半部分就是一个pedersencommitment。

以上commitment方案都有一个共同特点,即commitment本身就是/或包含一个椭圆曲线点,即一个公钥,该公钥虽然必有一个对应的私钥然而却无人知晓。因而也就不能直接将commitment作为签名验证公钥用于现有的任何一种数字签名方案。

在比特币及其它一些相似的区块链技术中,针对utxo(unspenttransactionoutput)可以直接根据指定的公钥(或一个公钥哈希,或脚本哈希等)提供签名信息来证明所有权。然而在采用pedersencommitment作为输入输出的区块链中,commitment创建者的公钥信息隐藏于commitment中使得验证者无法知晓,而commitment本身虽然也是一个公钥但创建者却无从知晓其私钥,因而现有技术中的签名方案无法直接应用。

针对pedersencommitment作为输入输出的方案,现有技术中存在一种签名方法,仅在其commit数值为0(即公式gxha中的a为0)的特定条件下适用,即采用输出commitment和输入commitment的差作为签名验证公钥(因为值分量为0)。然而该特定条件下的签名方法需要交易发送者和交易接收者的协作,即要完成这个交易的创建必须要双方的一个交互式签名过程,这个过程显然比单方的签名方式要慢得多也复杂得多,而且对终端用户而言使用较为困难。



技术实现要素:

本发明实施例提供一种数字签名方法及验证方法、设备、存储介质,给应用pedersencommitment方案的区块链提供一种签名和验证方法,在保证签名安全性的前提下,可以提高签名的便捷性。

本发明实施例第一方面提供了一种数字签名方法,可包括:

采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机值e,e=hash(r,c,m),其中,签名验证公钥c=gxha,x是签名者的私钥,a是一个隐藏的数值,g是群的生成元,h是群的一个元素,群为一个p阶循环群;

基于随机值e计算中间参数u,v;

采用随机数r和中间参数u,v组成待签名消息的签名(r,u,v)。

进一步的,随机数其中,k1和k2为两个互不相关的随机数,且p为一个k比特正整数。

进一步的,中间参数u=k1 exmodp,v=k2 eamodp。

进一步的,签名验证公钥c的计算公式的形式不变的前提下,公式c=gxha中签名者的私钥x可以变为x′,且x′=x hash(gxha,jx)modp,其中,j是群中选定的一个元素。

进一步的,签名验证公钥c可以取自elgamalcommitment(gxha,hx)的前半部分。

进一步的,当一笔数字交易中含有至少两个交易输入时,签名验证公钥c为所有交易输入对应的子签名验证公钥ci的聚合,即其中,n是总的交易输入个数,且签名验证公钥c的形式仍为gxha,其中,

本发明实施例第二方面提供了一种数字签名装置,可包括:

哈希运算模块,用于采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机值e,e=hash(r,c,m),其中,签名验证公钥c=gxha,x是签名者的私钥,a是一个隐藏的数值,g是群的生成元,h是群的一个元素,群为一个p阶循环群;

中间参数计算模块,用于基于随机值e计算中间参数u,v;

签名生成模块,用于采用随机数r和中间参数u,v组成待签名消息的签名(r,u,v)。

进一步的,随机数其中,k1和k2为两个互不相关的随机数,且p为一个k比特正整数。

进一步的,中间参数u=k1 exmodp,v=k2 eamodp。

进一步的,签名验证公钥c的计算公式的形式不变的前提下,公式c=gxha中签名者的私钥x可以变为x′,且x′=x hash(gxha,jx)modp,其中,j是群中选定的一个元素。

进一步的,签名验证公钥c可以取自elgamalcommitment(gxha,hx)的前半部分。

进一步的,当一笔数字交易中含有至少两个交易输入时,签名验证公钥c为所有交易输入对应的commitment(子签名验证公钥ci)的聚合,即其中,n是总的交易输入个数,且签名验证公钥c的形式仍为gxha,其中,

本发明实施例第三方面提供了一种基于上述的签名方法的验证方法,可包括:

基于中间参数u,v计算验证参数s,s=guhv

若等式s=rce成立,则确认针对待签名消息m的签名验证通过。

本发明实施例第四方面提供了一种基于上述的签名方法的验证装置,可包括:

验证参数计算模块,用于基于中间参数u,v计算验证参数s,s=guhv

签名验证模块,用于若等式s=rce成立,则确认针对待签名消息m的签名验证通过。

本发明实施例第五方面提供了一种计算机设备,该设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述方面的数字签名方法和/或基于该签名方法的验证方法。

本发明实施例第六方面提供了一种计算机存储介质,该计算机存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述方面的数字签名方法和/或基于该签名方法的验证方法。

本发明的有益效果为:通过选取一个随机数然后使用这个r生成一个随机值e,再将这个e得到签名的中间参数u和v,最后组成(r,u,v)即为签名,对应的该签名的验证公钥为c,签名验证者只需要对这个签名计算一个验证参数s=guhv,验证s=rce等式成立即为签名验证通过,采用本方案在保证签名安全性的前提下,提高了签名的便捷性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数字签名方法的流程示意图;

图2是本发明实施例提供的一种基于数字签名方法的验证方法的流程示意图;

图3是本发明实施例提供的一种数字签名及验证方法的流程示意图;

图4是本发明实施例提供的数字签名及验证的过程示意图;

图5是本发明实施例提供的一种数字签名装置的结构示意图;

图6是本发明实施例提供的一种基于数字签名方法的验证装置的结构示意图;

图7是本发明实施例提供的一种计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含,术语“第一”和“第二”仅是为了区别命名,并不代表数字的大小或者排序。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

需要说明的是,本发明提供的数字签名方法及基于该签名方法的验证方法可以应用于采用pedersencommitment方案的区块链加密的场景中。

本发明实施例中,数字签名装置及基于该签名方法的验证装置可以是一种计算机设备,该计算机设备可以是平板电脑、pc(personalcomputer,个人计算机)等终端,也可以是其它具备计算处理能力的电子设备。

在本发明的第一个实施例中,如图1所示的数字签名方法至少可以包括以下几个步骤:

s101,采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机值e。

需要说明的是,在签名的过程中,设备会产生一个随机的私钥并可以计算其对应的公钥x=gx。进而,可以将数值a隐于其中,计算签名验证公钥c=gxha,其中,是签名者的私钥,a是一个隐藏的数值,g是群的生成元,h是群的一个元素,群为一个p阶循环群。

在一种实现方式中,设备可以选择一个随机数r,并采用哈希算法对待签名消息m、签名验证公钥c和随机数r进行哈希运算得到一个随机值e,即e=hash(r,c,m)。

在一种优选的实现方式中,预先选定的随机数其中,k1和k2为两个互不相关的随机数,且p为一个k比特正整数。

在可选实施例中,在保证签名验证公钥c的计算公式的形式不变的前提下,公式c=gxha中签名者的私钥x可以变形为x′。优选的x′=x hash(gxha,jx)modp,其中,j是群中选定的一个元素。

需要说明的是,当一笔数字交易中含有至少两个交易输入时,可以将所有交易输入对应的commitment(子签名验证公钥ci)逐个聚合成为一个单个的c,即其中,n是总的交易输入个数,且签名验证公钥c的形式仍为gxha,其中,可以理解的是,xi和ai来自各个ci。

s102,基于随机值e计算中间参数u,v。

具体实现中,设备可以基于上述随机值e计算数字签名过程中的中间参数u,v。例如,可以将e乘以签名者的私钥x然后加上k1得到u,将这个e乘以commit数值a然后加上k2从而得到v。

在一种优选的实现方式中,中间参数u=k1 exmodp,v=k2 eamodp。

需要说明的是,在保证签名安全性及快捷性的前提下,其他任何产生中间参数的方法均落在本发明的保护范围内。

s103,采用随机数r和中间参数u,v组成待签名消息的签名(r,u,v)。

在一种可选的实现方式中,本发明的签名方法可以用于解决比特币地址重用的问题,比特币可将同样的地址用于多个交易,从而引发隐私泄漏问题甚至可能违反某些合理的消费者保护法条款。现有的解决地址重用问题的方案是使用“确定性”钱包从而提供多个钱包地址,但需要时不时地向付款人更新地址信息,过程较复杂且容易出现地址更新延迟。在本申请实施例中,可以通过修改交易格式解决上述问题,以比特币的pay-to-pubkeyhash交易类型为例,如果使用本申请的签名方案,其交易格式可以修订为:

scriptpubkey:op_dupop_hash160<commithash>op_equalverifyop_checksig

scriptsig:<sig><commit>

这样一来,比特币地址就可以放心地重复使用了,因为本方案隐藏了比特币的实际地址,只需要将commit值a用作一个类似收款码的秘密数字在链外通知收款人用其进行收款即可。

在本申请的第二个实施例中,如图2所示的基于上述数字签名方法的验证方法至少可以包括以下几个步骤:

s201,基于中间参数u,v计算验证参数s。

具体实现中,验证参数s=guhv

s202,若等式s=rce成立,则确认针对待签名消息m的签名验证通过。

为验证签名是否通过,设备可以验证等式guhv=rce是否成立,如果不成立则签名验证不通过,否则可以确认针对待签名消息m的签名验证是通过的。

需要说明的是,基于pedersencommitment的计算绑定特性,验证guhv=rce等价于并行验证也就是说本发明的签名验证方案等价于现有技术中musig多签名方案的两个部分签名的验证,因此本发明的签名方案具有与musig签名方案同等的安全性。

在本发明实施例中,首先选取一个随机数然后使用这个r生成一个随机值e,通过将这个e得到签名的中间参数u和v,最后组成(r,u,v)即为签名,对应的该签名的验证公钥为c。签名验证者只需要对这个签名计算一个验证参数s=guhv,验证s=rce等式成立即为签名验证通过,采用本方案在保证签名安全性的前提下,提高了签名的便捷性。

在本发明的第三个实施例中,如图3所示包括了数据签名和验证的全过程:

s301,采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机e。

s302,基于随机值e计算中间参数u,v。

s303,采用随机数r和中间参数u,v组成待签名消息的签名(r,u,v)。

s304,基于中间参数u,v计算验证参数s。

s305,若等式s=rce成立,则确认针对待签名消息m的签名验证通过。

为更清楚的展示数据签名和验证的过程,图4给出了签名和验证的全过程示意图,图中的签名及验证过程已在上述方法实施例中进行了介绍,此处不再详述。

在本发明实施例中,首先选取一个随机数然后使用这个r生成一个随机值e,通过将这个e得到签名的中间参数u和v,最后组成(r,u,v)即为签名,对应的该签名的验证公钥为c。签名验证者只需要对这个签名计算一个验证参数s=guhv,验证s=rce等式成立即为签名验证通过,采用本方案在保证签名安全性的前提下,提高了签名的便捷性。

下面将结合附图5和附图6,对本发明实施例提供的数字签名装置及验证装置进行详细介绍。需要说明的是,附图5所示的数字签名装置,用于执行本发明图1、图3和图4所示实施例的方法,附图6所示的验证装置,用于执行本发明图2、图3和图4所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1-图4所示的实施例。

请参见图5,为本发明实施例提供了一种数字签名装置的结构示意图。如图5所示,本发明实施例的数字签名装置10可以包括:哈希运算模块101、中间参数计算模块102和签名生成模块103。如图6所示,本发明实施例的验证装置20可以包括:验证参数计算模块201和签名验证模块202。

哈希运算模块101,用于采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机值e,e=hash(r,c,m),其中,签名验证公钥c=gxha,x是签名者的私钥,a是一个隐藏的数值,g是群的生成元,h是群的一个元素,群为一个p阶循环群。

中间参数计算模块102,用于基于随机值e计算中间参数u,v。

签名生成模块103,用于采用随机数r和中间参数u,v组成待签名消息的签名(r,u,v)。

在可选实施例中,随机数其中,k1和k2为两个互不相关的随机数,且p为一个k比特正整数。

在可选实施例中,中间参数u=k1 exmodp,v=k2 eamodp。

在可选实施例中,签名验证公钥c的计算公式的形式不变的前提下,公式c=gxha中签名者的私钥x变为x′,且x′=x hash(gxha,jx)modp,其中,j是群中选定的一个元素。

在可选实施例中,签名验证公钥c可取自elgamalcommitment(gxha,hx)的前半部分。

在可选实施例中,当一笔数字交易中含有至少两个交易输入时,签名验证公钥c为所有交易输入对应的commitment(子签名验证公钥ci)的聚合,即其中,n是总的交易输入个数,且签名验证公钥c的形式仍为gxha

验证参数计算模块201,用于基于中间参数u,v计算验证参数s,s=guhv

签名验证模块202,用于若等式s=rce成立,则确认针对待签名消息m的签名验证通过。

需要说明的是,本实施例中各模块详细执行过程可以参见上述方法实施例中的描述,此处不再赘述。

在本发明实施例中,首先选取一个随机数然后使用这个r生成一个随机值e,通过将这个e得到签名的中间参数u和v,最后组成(r,u,v)即为签名,对应的该签名的验证公钥为c。签名验证者只需要对这个签名计算一个验证参数s=guhv,验证s=rce等式成立即为签名验证通过,采用本方案在保证签名安全性的前提下,提高了签名的便捷性。

本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图4所示实施例的方法步骤,具体执行过程可以参见图1-图4所示实施例的具体说明,在此不进行赘述。

本申请实施例还提供了一种计算机设备。如图7所示,计算机设备30可以包括:至少一个处理器301,例如cpu,至少一个网络接口304,用户接口303,存储器305,至少一个通信总线302,可选地,还可以包括显示屏306。其中,通信总线302用于实现这些组件之间的连接通信。其中,用户接口303可以包括触摸屏、键盘或鼠标等等。网络接口304可选的可以包括标准的有线接口、无线接口(如wi-fi接口),通过网络接口304可以与服务器建立通信连接。存储器305可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器,存储器305包括本发明实施例中的flash。存储器305可选的还可以是至少一个位于远离前述处理器301的存储系统。如图7所示,作为一种计算机存储介质的存储器305中可以包括操作系统、网络通信模块、用户接口模块以及程序指令。

需要说明的是,网络接口304可以连接接收器、发射器或其他通信模块,其他通信模块可以包括但不限于wifi模块、蓝牙模块等,可以理解,本发明实施例中计算机设备也可以包括接收器、发射器和其他通信模块等。

处理器301可以用于调用存储器305中存储的程序指令,并使计算机设备30执行以下操作:

采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机值e,e=hash(r,c,m),其中,签名验证公钥c=gxha,x是签名者的私钥,a是一个隐藏的数值,g是群的生成元,h是群的一个元素,群为一个p阶循环群;

基于随机值e计算中间参数u,v;

采用随机数r和中间参数u,v组成待签名消息的签名(r,u,v)。

在一些实施例中,随机数其中,k1和k2为两个互不相关的随机数,且p为一个k比特正整数。

在一些实施例中,中间参数u=k1 exmodp,v=k2 eamodp。

在一些实施例中,签名验证公钥c的计算公式的形式不变的前提下,公式c=gxha中签名者的私钥x变为x′,且x′=x hash(gxha,jx)modp,其中,j是群中选定的一个元素。

在一些实施例中,签名验证公钥c可取自elgamalcommitment(gxha,hx)的前半部分。

在一些实施例中,当一笔数字交易中含有至少两个交易输入时,签名验证公钥c为所有交易输入对应的commitment(子签名验证公钥ci)的聚合,即其中,n是总的交易输入个数,且签名验证公钥c的形式仍为gxha

进一步的,设备30还用于:

基于中间参数u,v计算验证参数s,s=guhv

若等式s=rce成立,则确认针对待签名消息m的签名验证通过。

在本发明实施例中,首先选取一个随机数然后使用这个r生成一个随机值e,通过将这个e得到签名的中间参数u和v,最后组成(r,u,v)即为签名,对应的该签名的验证公钥为c。签名验证者只需要对这个签名计算一个验证参数s=guhv,验证s=rce等式成立即为签名验证通过,采用本方案在保证签名安全性的前提下,提高了签名的便捷性。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。


技术特征:

1.一种数字签名方法,其特征在于,包括:

采用哈希算法对待签名消息m、签名验证公钥c和预先选取的随机数r进行哈希运算得到随机值e,e=hash(r,c,m),其中,签名验证公钥c=gxha,x是签名者的私钥,a是一个隐藏的数值,g是群的生成元,h是群的一个元素,群为一个p阶循环群;

基于所述随机值e计算中间参数u,v;

采用所述随机数r和所述中间参数u,v组成所述待签名消息的签名(r,u,v)。

2.根据权利要求1所述的签名方法,其特征在于,所述随机数其中,k1和k2为两个互不相关的随机数,且p为一个k比特正整数。

3.根据权利要求2所述的签名方法,其特征在于,所述中间参数u=k1 exmodp,v=k2 eamodp。

4.根据权利要求1所述的签名方法,其特征在于,所述签名验证公钥c的计算公式的形式不变的前提下,公式c=gxha中签名者的私钥x变为x′,且x′=x hash(gxha,jx)modp,其中,j是群中选定的一个元素。

5.根据权利要求1所述的签名方法,其特征在于,所述签名验证公钥c取自elgamalcommitment(gxha,hx)的前半部分。

6.根据权利要求1所述的签名方法,其特征在于,当一笔数字交易中含有至少两个交易输入时,所述签名验证公钥c为所有交易输入对应的子签名验证公钥ci的聚合,即其中,n是总的交易输入个数,且所述签名验证公钥c的形式仍为gxha

7.一种基于权利要求1-6任一项所述的签名方法的验证方法,其特征在于,包括:

基于所述中间参数u,v计算验证参数s,s=guhv

若等式s=rce成立,则确认针对所述待签名消息m的签名验证通过。

8.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一项所述的数字签名方法和/或权利要求7所述的验证方法。

9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一项所述的数字签名方法和/或权利要求7所述的验证方法。

技术总结
本发明公开一种数字签名和验证方法及装置、存储介质,主要解决采用Pedersen commitment作为签名验证公钥的签名问题。其中方法包括签名的过程:针对Pedersen commitment C=gxha(该C即为对应的签名验证公钥),采用哈希算法对待签名消息m、签名验证公钥C和预先选取的随机数R进行哈希运算得到一个随机值e,e=Hash(R,C,m),然后基于随机值e计算中间参数u,v,再采用随机数R和中间参数u,v组成待签名消息m的一个签名(R,u,v);还包括签名后的验证过程:基于中间参数u,v计算验证参数S,S=guhv;若等式S=RCe成立,则确认针对待签名消息m的签名验证通过。采用本发明,给应用Pedersen commitment方案的区块链提供一种签名和验证方法,在保证签名安全性的前提下,可以提高签名的便捷性。

技术研发人员:余志刚
受保护的技术使用者:余志刚
技术研发日:2020.01.16
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-20757.html

最新回复(0)