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

一种面向大数据和区块链应用的数字签名聚合方法与流程

2022-02-22 22:35:47 来源:中国专利 TAG:


1.本发明涉及密码技术,尤其涉及聚合数字签名方法。具体而言,聚合签名指的是这样一种技术:将多个独立生成的签名聚合起来,以减少签名存储的空间,并加快签名验证的时间。


背景技术:

2.预备知识和符号标示
3.记g为一个有限群g

中的一个循环子群,其中记g

的阶为n,g的阶为q,g是g的生成元,记1g为g

的单位元,记g/1g为g中除了1g之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q|=160,其中|q|表示的是以2进制表示的q的长度),一般而言,|q|表示系统的安全参数。记zq为数字集合{0,1,

,q-1},记为数字集合{1,

,q-1}。在下面的背景技术描述中,采用乘法表示(multiplicative representation)群上的操作,即g

和g为乘法群。这只是为了表述上的方便,所有有关背景技术的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,对于乘法群上的操作,指数上的操作是对q求模,而群上元素的操作是对n或n 1求模或其它操作以保证操作的结果是g

或g中的元素;比如g
x
通常指的是g
x mod q
,g
xgy
通常表示的是g
xgy
∈g

,x y∈zq和xy∈zq表示的是x y mod q和xy mod q。为了表述的方便起见,假定参数g,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。假定离散对数假设在g上成立,即给定x=g
x
∈g(其中x从zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由x求出x。在下面的叙述中使用“^”符号(比如,)来标示一个用户或设备或程序的逻辑或“区别性”的身份(identity),比如一个名字,一个设备或程序序列号,一个email或ip地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含于一个数字证书。记{

}为一个信息或数值的集合。对于一个集合与一个数值的操作意味着对集合中的每一个元素都执行与该数值的同样操作。对于所有的运算符如果一个操作数是一个集合或向量是对该集合或向量中的每一个元素执行该运算符操作从,结果也是一个集合或向量。
4.哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}
*
中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}
*
表示的是所有0-1串的集合。哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换,这儿“单向”指的是给定一个函数的输出求出其输入或前像是困难的,“抗碰撞(collision-resistant)”指的是给定一个输入难以找到另外一个不同的输入使得哈希函数在这两个不同输入上的输出相同。哈希函数范围可以非常广泛:从一个简单的混合(mixing)函数到一个具有伪随机输出性质的函数。具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机圣谕(random oracle)”。有几个哈希函
数在密码学中被广泛使用:比如md5将任意长度的数据转换为一个128-位的0-1串,而另一个常用的哈希函数sha的输出是160位的0-1串。
5.对于h:{0,1}
*
→zq
的转换函数。典型地,其输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}
*
中的0-1串,然后将h作用在该转化后的0-1串输入上从而得到一个zq中的数值(典型地,zq中的数值亦用2进制表示)。特别地,h可以是哈希函数。在应用中,转换函数的所有输入首先转换为0-1串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联结后的0-1串从而得到输出。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。比如,以转换函数h为例,设x为一个字符串,记x
(2)
为x的2进制0-1串编码表示;设s={s1,

,s
t
},t≥0,为t个字符串的集合,记为s1,s2,

,s
t
的2进制0-1串编码表示,则1串编码表示,则其中“||”表示的是字符串联结操作符。注意联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于若其中si,1≤i≤t,是空串,则串,则
6.假定签名者,记为有一个签名公钥u,签名公钥u与签名者身份a的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查的身份的有效性以及u的有效性,然后对做一个数字签名,并将以及可信第三方的签名形成一个针对公钥证书,记为但是在区块链和去中心化应用中,并没有中心化的机构对用户身份和其公钥进行绑定。
7.数字签名方法是密码技术的主要应用之一。基于离散对数的数字签名方案主要有schnorr签名方案和国际数字签名标准(digital signature standard(dss))方案。聚合签名指的是这样一种技术:将多个独立生成的签名聚合起来,以减少签名存储的空间,并加快签名验证的时间。
8.schnorr签名方案运作如下:
9.签名公钥pk:u=g-w
∈g,其中其中,g是有限群g

中的一个循环子群,g是g的生成元;记zq为数字集合{0,1

,q-1},为数字集合{1

,q-1},q为一个大的素数。令h:{0,1}
*
→zq
为一个抗碰撞的哈希函数。
10.签名私钥sk:w。
11.签名的生成:记m∈{0,1}
*
为需要签名的信息,{0,1}
*
表示的是所有0-1串的集合。令h:{0,1}
*
→zq
为一个抗碰撞的哈希函数。
12.从zq中随机选取临时私钥r,计算临时公钥a=gr∈g;
13.计算e=h(a,m);计算z=r ew∈zq;将(e,z)作为对m的签名。
14.签名的验证:得到{m,(e,z)}以及签名公钥u后,签名验证者验证是否h(gzue,m)=e。若h(gzue,m)=e则接受签名,否则拒绝。
15.数字签名标准(dss)方案运作如下:
16.签名公钥:u=gw∈g,其中
17.签名私钥:w。
18.签名的生成:记m∈{0,1}
*
为需要签名的信息。令h:{0,1}
*
→zq
为一个抗碰撞的哈希函数。令f:g
′→zq
是一个转换函数。一般而言,若(p是个素数),f直接可以是“mod q”操作;若g

是定义在有限域上的一个椭圆曲线群(即:a∈g表示椭圆曲线上的一个点(x,y)),f(a)=x。签名者做如下计算:
19.从zq中随机选取r,计算a=gr∈g,
20.计算d=f(a);e=h(m);
21.计算将(d,z)作为对m的签名。
22.签名的验证:得到{m,(d,z)}以及签名公钥u后,签名验证者如下验证签名的有效性:
23.计算
24.验证若则接受签名,否则拒绝。
25.gamma签名方案运作如下:
26.签名公钥pk:u=g-w
∈g,其中
27.签名私钥sk:w。
28.签名的生成:记m∈{0,1}
*
为需要签名的信息,{0,1}
*
表示的是所有0-1串的集合。令h:{0,1}
*
→zq
为一个抗碰撞的哈希函数。令f:g
′→zq
是一个转换函数。一般而言,若(p是个素数),f直接可以是“mod q”操作;若g

是定义在有限域上的椭圆曲线群(即:a∈g表示椭圆曲线上的一个点(x,y)),f(a)=x,f也可以是一个哈希函数;从zq中随机选取临时私钥r,计算临时公钥a=gr∈g;计算d=f(a);计算e=h(pk,m);计算z=dr ew∈zq;将(d,z)作为对m的签名。
29.签名的验证:得到{m,(d,z)}以及签名公钥u后,签名验证者检查z∈zq,计算e=h(m),签名验证者验证是否若则接受签名,否则拒绝。
30.schnorr签名方案、数字签名标准(dss)和gamma签名方案应用于签名聚合的可能性:已有的研究表明dss签名方案不适合做签名聚合。而已有的研究成果表明schnorr签名用于聚合签名时也不安全,这是通过具体的攻击来表明的。赵运磊等基于gamma签名曾给出一个聚合gamma-签名,但是近期聚合gamma-签名在学术界被找到有效的亚指数攻击。因此,如何在一般的有限循环群上构建聚合签名是长期未解决的公开问题,本发明给出的高效聚合签名方案是第一个基于一般有限群的聚合签名方案,并可一般性适用到基于fiat-shamir转换得到的签名方案比如基于格的dilithium签名及其变体,并且我们方法得到的聚合签名方案具有可证明安全保证。所发明的聚合签名方法在区块链和密码货币领域具有重要应用。


技术实现要素:

31.本发明提供一种面向大数据和区块链应用的数字签名聚合方法,其中,令pki,ski,pk
′i,sk
′i,mi,zi,si为数据集合,i≥1为正整数;对于
这儿pki代表签名公钥其可固定也可以每次签名而不同,传统的数字签名pki是相对固定的,但是在多重签名、环签名等应用中pki作为一个数据集合可以每次签名发生变化,ski代表签名私钥,pk
′i代表签名临时公钥,sk
′i代表签名临时私钥,mi代表签名的消息,其中为任意单向函数,其中是任意单向函数,对于不同的i这些单向函数可以相同或不同;对于传统的数字签名和盲签名等,签名公钥可以包含一个单向函数,而对环签名、多重签名、多方签名、群签名、门限签名、聚合签名、adaptor签名等,签名公钥可以是一个集合其生成可以包含多个单向函数;待聚合的签名si包含数据zi,并且签名验证有步骤基于一个公式或其等价变体,其中fi是一个同态函数输入至少包含zi,是辅助输入其可为空,ωi是一个函数其可为复合函数即其本身又可以调用其它转换或哈希函数,是辅助输入其可为空;由si、mi和pki可以有效计算出pk
′i,和/或,由si、mi和pk
′i可以有效计算出pki;以schnorr签名为例其中g是群生成元,h是一个哈希函数;令ei=h(pki,pk
′i,mi);schnorr签名可以有三种等价的形式:签名包含(zi,ei),此时签名验证包含:利用求出pk
′i,然后验证是否ei=h(pki,pk
′i,mi);或者,签名包含(zi,pk
′i),此时签名验证包含:得到ei=h(pki,pk
′i,mi)然后验证是否或者,在某些应用中为了增强隐私保护的需求,签名公钥不公开传输,签名包含(zi,ei,pk
′i),此时签名验证包含:利用求出pki,然后验证是否ei=h(pki,pk
′i,mi);这儿,每一个消息和签名对(mi,si)称为是合法的如果其正确通过了签名验证;每一个消息和签名对(mi,si)可以是由有一个签名者单独产生,也可以是多个用户交互协作产生比如盲签名、群签名、多重签名、门限和多方签名等,签名公钥也可以包含多个用户公钥比如环签名等;
32.给定n≥1个待聚合的消息和签名对:{(m1,s1),(m2,s2),...,(mn,sn)},其中n为正整数,从中得到或蕴含签名公钥集合签名临时公钥集合签名消息集合其中集合l
pk
,l
pk

和lm的部分或全部可以是多重集合,即其中若干元素可以相等;对于每一组验证有效的数据{pki,mi,si,pk
′i}执行如下关键操作:}执行如下关键操作:其中是一个转换函数其输入包括数据集合l和di其集合包含的元素的顺序可以任意(在实际应用中,一般是一个密码哈希函数,但也可以有更多得实现方式比如或等),是辅助信息,di是数据集合且对于不同的i值di不同,l=f
l
(l
pk
,l
pk

lm)其中f
l
是一个承诺转换函数满足输出数据集合l是对{l
pk
,l
pk

lm}的一个承诺,即:没有多项式时间的算法能以不可忽略的概率输出{l
pk
,l
pk

lm}≠{l

pk
,l

pk

l
′m}使得f
l
(l
pk
,l
pk

lm)=f
l
(l

pk
,l

pk

l
′m);比如,从数据集合l可以把l
pk
,l
pk

lm的部分或全体恢复出来,或者l直接包含{l
pk
,l
pk

lm}或其全体或部分的哈希,或者包含{(pk1,m1,s1),(pk2,m2,s2),...,(pkn,mn,sn)},或者{(m1,s1),(m2,s2),...,(mn,sn)}如果
(mi,si)可以恢复出(pki,pk
′i),1≤i≤n,或者{(h(pk1),m1,s1),(h(pk2),m2,s2),...,(h(pkn),mn,sn)},或者{(pk1,m1,h(pk
′1)),(pk2,m2,h(pk
′2)),...,(pkn,mn,h(pk
′n))},或者{e1=h(pk1,m1,s1),e2=h(pk2,m2,s2),...,en=h(pkn,mn,sn)},或者{e1=h(pk1,m1,pk
′1),e2=h(pk2,m2,pk
′2),...,en=h(pkn,mn,pk
′n)},或者{e1=h(m1,s1),e2=h(m2,s2),...,en=h(mn,sn)},或者形成一个链式哈希h(en,h(e
n-1
,h(e
n-2
,h(...h(e2,e1))...)))其中ei可以是上述任意形式,或者或者e1 e2

e
n mod q,或者如果签名和/或消息是以merkle树(比如在btc中)或merkle-patricia树或verkle树(比如在eth中)则将树根中的值作为承诺值l,等等;在具体实施中根据待聚合签名的具体形式灵活采用方便的承诺形式,建议便验证待聚合签名的同时进行链式哈希;上述h是一个密码哈希函数,对于不同的输入可以应用不同的哈希函数,上面用一个哈希函数仅仅是为了描述方便起见。为了描述的方便起见,在后续说明中我们简单令l={l
pk
,l
pk

lm}。对于不同的i,函数可以不同,并且对于部分i,可以是常数函数;可以是常数函数;其中是一个转换函数其输入包括zi,hi,是辅助信息;其中是一个转换函数其输入包括输入顺序可以任意,是辅助信息;聚合签名包括或蕴含:l
pk
,l
pk

lm,及aux
agg
,其中顺序任意,aux
agg
是辅助信息比如系统参数、用户身份标识等信息;
33.聚合签名验证:所述聚合签名验证者收到聚合签名其包含或蕴含之后,对聚合签名进行验证,并输出验证结果;
34.系统参数、所有单向函数转换函数及其输入顺序、所有辅助输入信息具体内容或者是固定的并被所有的用户事先获知,或者在方法运行之前或之中被交换和协商;对于所有的运算符如果一个操作数是一个集合或向量是对该集合或向量中的每一个元素执行该运算符操作从,结果也是一个集合或向量。
35.如上所述的方法,待聚合的签名既可以是传统数字签名机制中单独签名用户所生成的签名,也可以是盲签名、环签名、多重签名、多方签名、门限签名、群签名、adaptor signature等,也可以本身是一个用本方法生成的一个聚合签名;对于这些签名变体,签名或密钥生成过程通常需要运行交互协议生成,和/或签名公钥和签名临时公钥可以是一个集合,z也可以是一个集合。
36.如上所述的方法,单向函数和包含定义在群g上基于离散对数的单向函数,私钥取自zq={0,1,2,...,q-1}其中q是整数,群g的生成元记为g,群g既可以定义在数域上也可定义在椭圆曲线上;也可定义在椭圆曲线上;其中hi是一个哈希函数其输入顺序任意输出属于zq的一个子集或者hi是一个常数函数,对于不同的i,hi可以是同一个哈希函数或同一个常数函数,和也可以相同;也可以相同;其中f
zh
是一个转换函数输入包含z
ihi
和辅助输入包含的线性组合。
37.如上所述的方法,zi是sk
′i和ski的线性组合:zi=disk
′i eiski,这儿sk
′i和ski签名者不一定必须知道而通过单向函数存在即可比如在环签名应用中;其中
其中是一个可以为常数的转换函数,输入包括pki,pk
′i,mi,是辅助输入;是辅助输入;其中是一个可以为常数的转换函数,输入包括pki,pk
′i,mi,是辅助输入;聚合签名验证者收到聚合签名其包括或蕴含之后验证聚合签名的方法包括:判断是否成立,其中fv是一个输入包含l
pk
,l
pk

lm,aux
agg
的函数。
38.如上所述的方法,对于schnorr类型签名的聚合,其基础签名包括:di=1,其中包含或或h是一个抗碰撞的哈希函数其输入顺序可以任意;或者对于这种情况签名者的公钥可以从si以及签名消息mi恢复出来;zi=sk
′i sk
iei mod q,或zi=sk

i-sk
iei mod q,或zi=-(sk
′i sk
iei
)mod q,或zi=-(sk

i-sk
iei
)mod q;或;zi=ski sk

iei mod q,或zi=sk
i-sk

iei
mod q,或zi=-(ski sk

iei
)mod q,或zi=-(sk
i-sk

iei
)mod q;hi=hi(f
l
(l
pk
,l
pk

lm),di),其中对于部分i∈{1,2...,n}hi可以是常数;可以是常数;其中bi=1或bi=-1。
39.如上所述的方法,对于gamma或俄罗斯数字签名标准ec-rdsa类型签名的聚合,其基础签名包括:或或其中包含ei和/或di,h是一个抗碰撞的哈希函数其输入顺序可以任意;或者对于这种情况签名者的公钥可以从si以及签名消息mi恢复出来;zi=sk

idi
sk
iei mod q,或zi=sk

idi-sk
iei mod q,或zi=sk

iei
sk
idi
mod q,或zi=sk

iei-sk
idi mod q;或zi=-(sk

idi
sk
iei
)mod q,或zi=-(sk

idi-sk
iei
)mod q,或zi=-(sk

iei
sk
idi
)mod q,或zi=-(sk

iei-sk
idi
)mod q;hi=hi(f
l
(l
pk
,l
pk

lm),di),其中对于部分i∈{1,2...,n}hi可以是常数,可以是常数,其中bi=1或bi=-1。
40.如上所述的方法,其中,转换函数有如下实现方式:是一个哈希函数,或输出pk
′i的x-轴坐标值。
41.如上所述的方法,针对基于格的后量子签名dilithium及其变体,是基于格上的带错误学习问题lwe的单向函数或其变体,对于这种情况签名生产和签名聚合需要拒绝采样来保证输出的签名满足要求的分布特征。
42.发明方法涉及数学公式计算,对数学公式和发明方法的等价变形、变换或变体蕴含在本发明方法的权利要求中。权利要求包括部署发明方法的所有软件、硬件设备、存储系统、程序代码等。
具体实施方式
43.发明方法可以一般性地适用基于fiat-shamir的数字签名的聚合,包括基于格的数字签名dilithium及其变体。其核心思想如下:每个签名包含长期私钥和临时私钥线性组合的数值zi,其聚合签名包括,其聚合签名包括其中hi是一个关于所有待聚合签名所涉及的签名者的公钥身份信息、所有签名的消息、所有签名中包含或蕴含的临时公钥,以及针对每一个hi不同的标识值的哈希值。下面,我们聚焦针对schnorr签名和gamma签名的聚合方法的具体实施方式。
44.预备知识和符号标示:
45.聚合schnorr和聚合gamma签名方法和操作基于一个有限群g

中的一个循环子群g,其中记g

的阶为n,g的阶为q,g是g的生成元,记1g为g

的单位元,记g/1g为g中除了1g之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q|=160,其中|q|表示的是以2进制表示的q的长度)。记zq为数字集合{0,1,

,q-1},记为数字集合{1,

,q-1}。发明人在下面发明方法的描述中,采用乘法表示(multiplicative representation)群上的操作。即,g

和g为乘法群。这只是为了表述上的方便,所有发明方法的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,当用乘法群上的操作描述发明方法时,指数上的操作是对q求模,而群上元素的操作是对n或n 1求模或其它操作以保证操作的结果是g

或g中的元素;比如g
x
通常指的是g
x mod q
,g
xgy
通常表示的是g
xgy
∈g

,x y∈zq和xy∈zq表示的是x y mod q和xy mod q。为了表述的方便起见,假定参数g,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,我们将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。我们假定离散对数假设在g上成立,即给定x=g
x
∈g(其中x从zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由x求出x。发明人使用“^”符号(比如,)来标示一个用户或设备或程序的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序列号,一个emial或ip地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含或包含于一个数字证书。记{

}为一个信息或数值的集合,但是在公有区块链比如比特币中应用时一般没有公钥证书。
46.哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}
*
中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}
*
表示的是所有0-1串的集合。哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换,这儿“单向”指的是给定一个函数的输出求出其输入或前像是困难的,“抗碰撞(collision-resistant)”指的是给定一个输入难以找到另外一个不同的输入使得哈希函数在这两个不同输入上的输出相同。哈希函数范围可以非常广泛:从一个简单的混合(mixing)函数到一个具有伪随机输出性质的函数。具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机圣谕(random oracle)”。
47.聚合gamma签名方法具体实施方式:
48.令表示签名者,n表示系统中签名者的数目,的公钥为的私钥为ski=xi∈zq,(ski私钥也可以设置成-xi,设置成-xi的一个好处
是签名中的计算zi=disk

i-eiski=disk
′i eix
i mod q是加法,验证是用乘法,这些技巧在我们发明方法框架下可以灵活设置),其中xi从中随机选取;g是一个阶为n的有限群g

中的一个阶为素数q的循环子群g的生成元。这儿我们令g

是定义在f
p
上的椭圆曲线的点构成,其中p是一个素数。系统参数{g

,g,g,q},转换函数h,f,以及辅助输入或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前或之中被交换和协商。令mi∈{0,1}
*
为待签名的信息,表示签名聚合者,表示聚合签名验证者,所述方法包括:
49.由所述签名者计算ei=h(mi,pki)或或ei=h(mi),其中h:{0,1}
*
→zq
是一个从{0,1}
*
到zq的抗碰撞的哈希函数;由所述签名者在随机选取得的临时私钥sk
′i,计算得到临时公钥和di=f(pk
′i)∈zq,其中f是将pk
′i的x-轴坐标值进行输出,或者f是一个抗碰撞的哈希函数(其可与h相同);由所述签名者计算zi=disk
′i eiskimod q;由所述签名者将(mi,pki)和签名发送或者广播出去;或者由所述签名者将(mi,pki)和签名发送或者广播出去;其中,如果pki可以从mi和si恢复出,则签名者可以不发送pki,比如ei=h(mi)和)和其中,是一个空集或者仅包含的全部或部分信息可以通过恢复出来。
50.所述签名聚合者设置四个初始变量{l
pk
,lm,l
pk

,z},其中l
pk
,lm,l
pk

为初始化为空的集合(为了描述简单起见,我们直接令承诺值l为{l
pk
,lm,l
pk

},当然我们可以采取更多在发明内容中描述的灵活的方式),z初始化为0;由所述签名聚合者令得到所述签名者的公钥pki(其中pki可能是从消息mi和签名si恢复出来的)、消息mi和签名si之后,1≤i≤n其中n是一个整数,根据gamma-签名的验证方法对每个签名进行验证并得到pk
′i。若验证不成功则拒绝该签名并放弃对其进行聚合;对每一个验证成功的签名,将pki增加到l
pk
,将mi增加到lm,将pk
′i增加到l
pk

。对所有验证成功的签名,进行如下聚合操作。下面为了描述方便起见,我们假设收到的签名都验证成功并参与聚合。令l
pk
={pk1,...,pkn},l
pk

={pk
′1,...,pk
′n},lm={m1,...,mn},这儿pk
′i可以用其x-轴坐标和另一个标记其y-轴正负号和/或奇偶性的值来简洁表示和存储,l
pk
是多重集合其中可能有元素重复:对于i≠j可能pki=pkj。对于每一组签名验证成功并参与聚合的签名数据{pki,mi,si,pk
′i}执行如下关键操作:操作:其中是一个转换函数其可与f或h相同且可以存在部分i∈{1,2,

,n}使得为常数函数,可以为空。在具体实现中,一般令一个i∈{1,2,

,n}使得hi=1;l是一个整数,在具体实现中为了高效实现可以令l<|q|,比如l=|q|/2,其中|q|为q的二进制长度;为了验证的高效性,可以先用哈希函数计算所有的hi然后令最大或最小的那个hi设置成为常数1;对于不为常数的hi,其取值可以取自zq的一个子集,比如的一个子集,比如其中1是一个整数;这儿,为了简单起见,我们直接令di=i,当然其有各种不同的形式只要保证对于不同的i值di不同即可,比如可令di={pki,pk
′i,mi};最后,输出其中元素顺序可以任意组合。上
述的验证和聚合过程步骤的顺序不是严格的,若干验证和聚合过程步骤的顺序可以调换和组合,其顺序对签名及聚合的生成和验证的正确性不关键。
51.所述聚合签名验证者得到后,用和签名者约定的同样的方法计算得到di∈zq,ei∈zq,hi∈zq,1≤i≤n,验证以及计算验证是否若验证通过则接受该聚合签名否则拒绝。上述的验证过程步骤的顺序不是严格的,若干验证过程和步骤的顺序可以调换和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省时间。另外,验证一般包含对公钥或临时公钥格式的检查(比如确认他们是群g中的元素,在pki环境下还涉及验证公钥证书的有效性等。
52.聚合schnorr签名方法具体实施方式:
53.令1≤i≤n,表示签名者,n表示系统中签名者的数目,的公钥为的私钥为ski=xi∈zq,(ski私钥也可以设置成-xi,设置成-xi的一个好处是签名中的计算zi=disk

i-eiski=disk
′i eix
i mod q是加法,验证是用乘法,这些技巧在我们发明方法框架下可以灵活设置),其中xi从中随机选取;g是一个阶为n的有限群g

中的一个阶为素数q的循环子群g的生成元。这儿我们令g

是定义在f
p
上的椭圆曲线的点构成,其中p是一个素数。系统参数{g

,g,g,q},转换函数h,f,以及辅助输入或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前或之中被交换和协商。令mi∈{0,1}
*
为待签名的信息,表示签名聚合者,表示聚合签名验证者,所述方法包括:
54.由所述签名者在随机选取得的临时私钥sk
′i,计算得到临时公钥由所述签名者计算ei=h(mi,pki,pk
′i)或)或或ei=h(mi,pk
′i),其中h:{0,1}
*
→zq
是一个从{0,1}
*
到zq的抗碰撞的哈希函数;由所述签名者计算zi=sk
′i eisk
i mod q;由所述签名者将(mi,pki)和签名发送或者广播出去;或者由所述签名者将(mi,pki)和签名)和签名发送或者广播出去,其中,如果pki可以从mi和si恢复出,则签名者可以不发送pki,比如ei=h(mi,pk
′i)和这时签名者可以不公开发送pki;其中,是一个空集或者仅包含ei∈zq,pk
′i的全部或部分信息可以通过恢复出来。
55.所述签名聚合者设置四个初始变量{l
pk
,lm,l
pk

,z},其中l
pk
,lm,l
pk

为初始化为空的集合(为了描述简单起见,我们直接令承诺值l为{l
pk
,lm,l
pk

},当然我们可以采取更多在发明内容中描述的灵活的方式),z初始化为0;由所述签名聚合者令得到所述签名者的公钥pki(其中pki可能是从消息mi和签名si恢复出来的)、消息mi和签名si之后,1≤i≤n其中n是一个整数,根据schnorr-签名的验证方法对每个签名进行验证并得到pk
′i。若验证不成功则拒绝该签名并放弃对其进行聚合;对每一个验证成功的签名,将pki增加到l
pk
,将mi增加到lm,将pk
′i增加到l
pk

。对所有验证成功的签名,进行如下聚合操作。下面为了描述方便起见,我们假设收到的签名都验证成功并参与聚合。令l
pk
={pk1,...,pkn},l
pk


{pk
′1,...,pk
′n},lm={m1,...,mn},这儿pk
′i可以用其x-轴坐标和另一个标记其y-轴正负号和/或奇偶性的值来简洁表示和存储,l
pk
是多重集合其中可能有元素重复:对于i≠j可能pki=pkj。对于每一组签名验证成功并参与聚合的签名数据{pki,mi,si,pk
′i}执行如下关键操作:的一个子集,其中是一个转换函数其可与哈希函数h相同且可以存在部分i∈{1,2,

,n}使得为常数函数,可以为空。在具体实现中,一般令一个i∈{1,2,

,n}使得hi=1。为了验证的高效性,可以先用哈希函数计算所有的hi然后令最大或最小的那个hi设置成为常数1;对于不为常数的hi,其取值可以取自zq的一个子集,比如其中l是一个整数;在具体实现中为了高效实现可以令l<|q|,比如l=|q|/2,其中|q|为q的二进制长度;最后,输出其中元素顺序可以任意组合。上述的验证和聚合过程步骤的顺序不是严格的,若干验证和聚合过程步骤的顺序可以调换和组合,其顺序对签名及聚合的生成和验证的正确性不关键。
56.所述聚合签名验证者得到后,用和签名者约定的同样的方法计算得到ei∈zq,hi∈zq,1≤i≤n,验证以及计算验证是否若验证通过则接受该聚合签名否则拒绝。上述的验证过程步骤的顺序不是严格的,若干验证过程和步骤的顺序可以调换和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省时间。另外,验证一般包含对公钥或临时公钥格式的检查(比如确认他们是群g中的元素,在pki环境下还涉及验证公钥证书的有效性等。
57.基于schnorr的盲签名聚合具体实施方式:基于schnorr的盲签名需要交互产生,但是最终输出的签名仍然是schnorr签名类型,可以利用基于schnorr签名的聚合方式进行聚合。这种聚合技术可以应用到使用盲签名的区块链系统比如dash币系统。
58.多方签名和门限签名聚合实施方式:多方签名和门限签名的公钥一般和传统签名相当,但是私钥通过分布式协议产生由多个用户共同保管。由于最终产出的签名仍然类似传统签名,如果签名是schnorr或gamma签名类型的,仍然可以采用本发明方法进行聚合。
59.多重签名聚合实施方式:多重签名一般是通过交互的方式产生,涉及多个用户的签名公钥(即:签名公钥和签名私钥都是一个集合)。对于某些多重签名方案比如基于schnorr签名的musig2等,其支持公钥聚合,聚合公钥其是多个用户公钥的一个函数(对应的私钥是多个用户签名私钥的函数),最终输出的多重签名可以视作为该聚合公钥的一个传统schnorr或gamma类型的签名,因此可以用本发明方法对多个多重签名进行聚合。
60.环签名聚合方式:环签名的签名公钥是多个用户签名公钥的一个集合,基于离散对数的环签名的基本类似是包括多个{z1,z2,...,zk}以及若干临时签名公钥(通常是一个)或者哈希值,k≥1,验证是针对一个特定的zi进行,1≤i≤k(通常令i=1),而要验证这个指定的zi需要进行一个环形的运算和哈希链得到与这个特定的zi对应的临时签名公钥或哈希值。一般而言,这个特定的zi既是环型操作的起点也是终点。这时,需要说明的是,真正进行签名操作的用户不一定知道zi对应的私钥。对多个环签名的聚合是对每个环签名中的指定的zi(一般是环操作的起点和终点)用本发明方法进行聚合。这时,对于
l
pk
,l
pk

中的每一个元素实际上都是一个集合,可以包含没有参与聚合的签名其它部分比如没有参与聚合的zj。在基于门罗币的区块链系统中,为了防止双花,实际签名者会准备两个签名公钥x=g
x
∈g,i=hi(x)
x
,实际上签名私钥又是由自己(交易接受者)的两个私钥和交易发送者生成的交易公钥(transaction public key)通过一个函数计算得到。这时,一个单独的签名对应用用∑
and
来同时证明知道x和i的离散对数,然后用fiat-shamir转换得到签名,这时一个单独的签名中临时公钥和z都是元素集合(包含至少2个元素),然后对参与环签名的其它用户用∑
or
协议和环签名机制得到最终的环签名。对于门罗币区块链系统中,对多个环签名的聚合是对每个环签名中的指定的zi(一般是环操作的起点和终点)用本发明方法进行聚合时,由于zi是一个集合,z
ihi
是hi与zi中的每个元素进行聚合,对应集合或向量的加法,是一个集合,得到也是一个集合或向量,是对中的每一个元素做基为g的指数运算。
61.在本发明方法的具体实施中,如果待聚合的签名数量比较大,可以分成若干组,每组内的签名聚合采用本发明方法聚合,其得到的本组的聚合签名本身又作为一个待聚合的签名并与其它组得到的聚合签名进行聚合。
62.此外,对于adaptor签名,以及bip-341和bit-342所描述的taproot更新,将应用schnorr签名,因此本发明方法描述的聚合schnorr签名方案可以应用到taproot更新。
63.本发明给出一个高效的聚合数字签名方法,这是目前已知的唯一一种基于一般性有限群且可证明安全的聚合签名方法,解决了这个领域长期未解决的公开问题。所发明的新的数字签名方法可大幅缩小签名的存储空间和减少验证时间,可一般性地应用于需要签名聚合的应用中,特别有利于大数据聚合和区块链及密码货币领域应用。
再多了解一些

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

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

相关文献