CN114065233A - 一种面向大数据和区块链应用的数字签名聚合方法 - Google Patents

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

Info

Publication number
CN114065233A
CN114065233A CN202110682543.6A CN202110682543A CN114065233A CN 114065233 A CN114065233 A CN 114065233A CN 202110682543 A CN202110682543 A CN 202110682543A CN 114065233 A CN114065233 A CN 114065233A
Authority
CN
China
Prior art keywords
signature
function
signatures
mod
aggregated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110682543.6A
Other languages
English (en)
Inventor
赵之祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN114065233A publication Critical patent/CN114065233A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种面向大数据和区块链应用的数字签名聚合方法。针对每个签名包含长期私钥和临时私钥线性组合的数值zi,特别是基于Fiat‑Shamir转换机制的的数字签名,提供了一种数字签名聚合方法:其聚合签名包括
Figure DSA0000245104020000011
Figure DSA0000245104020000012
其中hi是一个关于所有待聚合签名所涉及的签名者的公钥身份信息、所有签名的消息、所有签名中包含或蕴含的临时公钥,以及针对每一个hi不同的标识值的承诺值。

Description

一种面向大数据和区块链应用的数字签名聚合方法
技术领域
本发明涉及密码技术,尤其涉及聚合数字签名方法。具体而言,聚合签名指的是这样一种技术:将多个独立生成的签名聚合起来,以减少签名存储的空间,并加快签名验证的时间。
背景技术
预备知识和符号标示
记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},记
Figure BSA0000245104040000011
为数字集合{1,…,q-1}。在下面的背景技术描述中,采用乘法表示(multiplicative representation)群上的操作,即G′和G为乘法群。这只是为了表述上的方便,所有有关背景技术的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(compositemoduli)等。一般而言,对于乘法群上的操作,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G′或G中的元素;比如gx通常指的是gx mod q,gxgy通常表示的是gxgy∈G′,x+y∈Zq和xy∈Zq表示的是x+y mod q和xy mod q。为了表述的方便起见,假定参数G,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。假定离散对数假设在G上成立,即给定X=gx∈G(其中x从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。在下面的叙述中使用“^”符号(比如,
Figure BSA0000245104040000012
)来标示一个用户或设备或程序的逻辑或“区别性”的身份(identity),比如一个名字,一个设备或程序序列号,一个email或IP地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含于一个数字证书。记{…}为一个信息或数值的集合。对于一个集合与一个数值的操作意味着对集合中的每一个元素都执行与该数值的同样操作。对于所有的运算符如果一个操作数是一个集合或向量是对该集合或向量中的每一个元素执行该运算符操作从,结果也是一个集合或向量。
哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{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串。
对于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,…,st},t≥0,为t个字符串的集合,记
Figure BSA0000245104040000021
为s1,s2,…,st的2进制0-1串编码表示,则
Figure BSA0000245104040000022
Figure BSA0000245104040000023
其中“||”表示的是字符串联结操作符。注意
Figure BSA0000245104040000024
联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于
Figure BSA0000245104040000025
若其中si,1≤i≤t,是空串,则
Figure BSA0000245104040000026
Figure BSA0000245104040000027
假定签名者,记为
Figure BSA0000245104040000031
有一个签名公钥U,签名公钥U与签名者身份A的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查
Figure BSA0000245104040000032
的身份的有效性以及U的有效性,然后对
Figure BSA0000245104040000033
做一个数字签名,并将
Figure BSA0000245104040000034
以及可信第三方的签名形成一个针对
Figure BSA0000245104040000035
公钥证书,记为
Figure BSA0000245104040000036
但是在区块链和去中心化应用中,并没有中心化的机构对用户身份和其公钥进行绑定。
数字签名方法是密码技术的主要应用之一。基于离散对数的数字签名方案主要有Schnorr签名方案和国际数字签名标准(Digital Signature Standard(DSS))方案。聚合签名指的是这样一种技术:将多个独立生成的签名聚合起来,以减少签名存储的空间,并加快签名验证的时间。
Schnorr签名方案运作如下:
签名公钥pk:U=g-w∈G,其中
Figure BSA0000245104040000037
其中,G是有限群G′中的一个循环子群,g是G的生成元;记Zq为数字集合{0,1…,q-1},
Figure BSA0000245104040000038
为数字集合{1…,q-1},q为一个大的素数。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。
签名私钥sk:w。
签名的生成:记m∈{0,1}*为需要签名的信息,{0,1}*表示的是所有0-1串的集合。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。
从Zq中随机选取临时私钥r,计算临时公钥a=gr∈G;
计算e=h(a,m);计算z=r+ew∈Zq;将(e,z)作为对m的签名。
签名的验证:得到{m,(e,z)}以及签名公钥U后,签名验证者验证是否h(gzUe,m)=e。若h(gzUe,m)=e则接受签名,否则拒绝。
数字签名标准(DSS)方案运作如下:
签名公钥:U=gw∈G,其中
Figure BSA0000245104040000039
签名私钥:w。
签名的生成:记m∈{0,1}*为需要签名的信息。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。令f:G′→Zq是一个转换函数。一般而言,若
Figure BSA00002451040400000310
(p是个素数),f直接可以是“modq”操作;若G′是定义在有限域上的一个椭圆曲线群(即:a∈G表示椭圆曲线上的一个点(x,y)),f(a)=x。签名者做如下计算:
从Zq中随机选取r,计算a=gr∈G,
Figure BSA0000245104040000041
计算d=f(a);e=h(m);
计算
Figure BSA0000245104040000042
将(d,z)作为对m的签名。
签名的验证:得到{m,(d,z)}以及签名公钥U后,签名验证者如下验证签名的有效性:
计算
Figure BSA0000245104040000043
验证
Figure BSA0000245104040000044
Figure BSA0000245104040000045
则接受签名,否则拒绝。
Gamma签名方案运作如下:
签名公钥pk:U=g-w∈G,其中
Figure BSA0000245104040000046
签名私钥sk:w。
签名的生成:记m∈{0,1}*为需要签名的信息,{0,1}*表示的是所有0-1串的集合。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。令f:G′→Zq是一个转换函数。一般而言,若
Figure BSA0000245104040000047
(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的签名。
签名的验证:得到{m,(d,z)}以及签名公钥U后,签名验证者检查z∈Zq,计算e=h(m),签名验证者验证是否
Figure BSA0000245104040000048
Figure BSA0000245104040000049
则接受签名,否则拒绝。
Schnorr签名方案、数字签名标准(DSS)和Gamma签名方案应用于签名聚合的可能性:已有的研究表明DSS签名方案不适合做签名聚合。而已有的研究成果表明Schnorr签名用于聚合签名时也不安全,这是通过具体的攻击来表明的。赵运磊等基于Gamma签名曾给出一个聚合Gamma-签名,但是近期聚合Gamma-签名在学术界被找到有效的亚指数攻击。因此,如何在一般的有限循环群上构建聚合签名是长期未解决的公开问题,本发明给出的高效聚合签名方案是第一个基于一般有限群的聚合签名方案,并可一般性适用到基于Fiat-Shamir转换得到的签名方案比如基于格的Dilithium签名及其变体,并且我们方法得到的聚合签名方案具有可证明安全保证。所发明的聚合签名方法在区块链和密码货币领域具有重要应用。
发明内容
本发明提供一种面向大数据和区块链应用的数字签名聚合方法,其中,令PKi,SKi,PK′i,SK′i,Mi,Zi,Si为数据集合,i≥1为正整数;对于
Figure BSA0000245104040000051
Figure BSA0000245104040000052
这儿pki代表签名公钥其可固定也可以每次签名而不同,传统的数字签名pki是相对固定的,但是在多重签名、环签名等应用中pki作为一个数据集合可以每次签名发生变化,ski代表签名私钥,pk′i代表签名临时公钥,sk′i代表签名临时私钥,mi代表签名的消息,
Figure BSA0000245104040000053
其中
Figure BSA0000245104040000054
为任意单向函数,
Figure BSA0000245104040000055
其中
Figure BSA0000245104040000056
是任意单向函数,对于不同的i这些单向函数可以相同或不同;对于传统的数字签名和盲签名等,签名公钥可以包含一个单向函数,而对环签名、多重签名、多方签名、群签名、门限签名、聚合签名、adaptor签名等,签名公钥可以是一个集合其生成可以包含多个单向函数;待聚合的签名si包含数据zi,并且签名验证有步骤基于一个公式
Figure BSA0000245104040000057
或其等价变体,其中fi是一个同态函数输入至少包含zi
Figure BSA0000245104040000058
是辅助输入其可为空,Ωi是一个函数其可为复合函数即其本身又可以调用其它转换或哈希函数,
Figure BSA0000245104040000059
是辅助输入其可为空;由si、mi和pki可以有效计算出pk′i,和/或,由si、mi和pk′i可以有效计算出pki;以Schnorr签名为例
Figure BSA00002451040400000510
其中g是群生成元,H是一个哈希函数;令ei=H(pki,pk′i,mi);Schnorr签名可以有三种等价的形式:签名包含(zi,ei),此时签名验证包含:利用
Figure BSA00002451040400000511
求出pk′i,然后验证是否ei=H(pki,pk′i,mi);或者,签名包含(zi,pk′i),此时签名验证包含:得到ei=H(pki,pk′i,mi)然后验证是否
Figure BSA00002451040400000512
或者,在某些应用中为了增强隐私保护的需求,签名公钥不公开传输,签名包含(zi,ei,pk′i),此时签名验证包含:利用
Figure BSA00002451040400000513
求出pki,然后验证是否ei=H(pki,pk′i,mi);这儿,每一个消息和签名对(mi,si)称为是合法的如果其正确通过了签名验证;每一个消息和签名对(mi,si)可以是由有一个签名者单独产生,也可以是多个用户交互协作产生比如盲签名、群签名、多重签名、门限和多方签名等,签名公钥也可以包含多个用户公钥比如环签名等;
给定n≥1个待聚合的消息和签名对:{(m1,s1),(m2,s2),...,(mn,sn)},其中n为正整数,从中得到或蕴含签名公钥集合
Figure BSA0000245104040000061
签名临时公钥集合
Figure BSA0000245104040000062
签名消息集合
Figure BSA0000245104040000063
其中集合Lpk,Lpk′和Lm的部分或全部可以是多重集合,即其中若干元素可以相等;对于每一组验证有效的数据{pki,mi,si,pk′i}执行如下关键操作:
Figure BSA0000245104040000064
Figure BSA0000245104040000065
其中
Figure BSA0000245104040000066
是一个转换函数其输入包括数据集合L和Di其集合包含的元素的顺序可以任意(在实际应用中,
Figure BSA0000245104040000067
一般是一个密码哈希函数,但也可以有更多得实现方式比如
Figure BSA0000245104040000068
Figure BSA0000245104040000069
等),
Figure BSA00002451040400000610
是辅助信息,Di是数据集合且对于不同的i值Di不同,L=FL(Lpk,Lpk′Lm)其中FL是一个承诺转换函数满足输出数据集合L是对{Lpk,Lpk′Lm}的一个承诺,即:没有多项式时间的算法能以不可忽略的概率输出{Lpk,Lpk′Lm}≠{L′pk,L′pk′L′m}使得FL(Lpk,Lpk′Lm)=FL(L′pk,L′pk′L′m);比如,从数据集合L可以把Lpk,Lpk′Lm的部分或全体恢复出来,或者L直接包含{Lpk,Lpk′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(en-1,H(en-2,H(...H(e2,e1))...)))其中ei可以是上述任意形式,或者
Figure BSA00002451040400000611
或者e1+e2+…+en mod q,或者如果签名和/或消息是以Merkle树(比如在BTC中)或Merkle-Patricia树或Verkle树(比如在ETH中)则将树根中的值作为承诺值L,等等;在具体实施中根据待聚合签名的具体形式灵活采用方便的承诺形式,建议便验证待聚合签名的同时进行链式哈希;上述H是一个密码哈希函数,对于不同的输入可以应用不同的哈希函数,上面用一个哈希函数仅仅是为了描述方便起见。为了描述的方便起见,在后续说明中我们简单令L={Lpk,Lpk′Lm}。对于不同的i,函数
Figure BSA0000245104040000071
可以不同,并且对于部分i,
Figure BSA0000245104040000072
可以是常数函数;
Figure BSA0000245104040000073
Figure BSA0000245104040000074
其中
Figure BSA0000245104040000075
是一个转换函数其输入包括zi,hi
Figure BSA0000245104040000076
是辅助信息;
Figure BSA0000245104040000077
其中
Figure BSA0000245104040000078
是一个转换函数其输入包括
Figure BSA0000245104040000079
输入顺序可以任意,
Figure BSA00002451040400000710
是辅助信息;聚合签名包括或蕴含:Lpk,Lpk′Lm
Figure BSA00002451040400000711
及auxagg,其中顺序任意,auxagg是辅助信息比如系统参数、用户身份标识等信息;
聚合签名验证:所述聚合签名验证者
Figure BSA00002451040400000712
收到聚合签名其包含或蕴含
Figure BSA00002451040400000713
之后,对聚合签名进行验证,并输出验证结果;
系统参数、所有单向函数转换函数及其输入顺序、所有辅助输入信息具体内容或者是固定的并被所有的用户事先获知,或者在方法运行之前或之中被交换和协商;对于所有的运算符如果一个操作数是一个集合或向量是对该集合或向量中的每一个元素执行该运算符操作从,结果也是一个集合或向量。
如上所述的方法,待聚合的签名既可以是传统数字签名机制中单独签名用户所生成的签名,也可以是盲签名、环签名、多重签名、多方签名、门限签名、群签名、adaptorsignature等,也可以本身是一个用本方法生成的一个聚合签名;对于这些签名变体,签名或密钥生成过程通常需要运行交互协议生成,和/或签名公钥和签名临时公钥可以是一个集合,z也可以是一个集合。
如上所述的方法,单向函数
Figure BSA00002451040400000714
Figure BSA00002451040400000715
包含定义在群G上基于离散对数的单向函数,私钥取自Zq={0,1,2,...,q-1}其中q是整数,群G的生成元记为g,群G既可以定义在数域上也可定义在椭圆曲线上;
Figure BSA00002451040400000716
Figure BSA00002451040400000717
其中Hi是一个哈希函数其输入顺序任意输出属于Zq的一个子集或者Hi是一个常数函数,对于不同的i,Hi可以是同一个哈希函数或同一个常数函数,
Figure BSA00002451040400000718
Figure BSA00002451040400000719
也可以相同;
Figure BSA00002451040400000720
Figure BSA00002451040400000721
其中Fzh是一个转换函数输入包含zihi和辅助输入
Figure BSA00002451040400000722
包含
Figure BSA00002451040400000723
的线性组合。
如上所述的方法,zi是sk′i和ski的线性组合:zi=disk′i+eiski,这儿sk′i和ski签名者不一定必须知道而通过单向函数存在即可比如在环签名应用中;其中
Figure BSA00002451040400000724
其中
Figure BSA00002451040400000725
是一个可以为常数的转换函数,输入包括pki,pk′i,mi
Figure BSA00002451040400000726
是辅助输入;
Figure BSA00002451040400000727
Figure BSA0000245104040000081
其中
Figure BSA0000245104040000082
是一个可以为常数的转换函数,输入包括pki,pk′i,mi
Figure BSA0000245104040000083
是辅助输入;聚合签名验证者收到聚合签名其包括或蕴含
Figure BSA0000245104040000084
之后验证聚合签名的方法包括:判断
Figure BSA0000245104040000085
是否成立,其中FV是一个输入包含Lpk,Lpk′Lm
Figure BSA0000245104040000086
auxagg的函数。
如上所述的方法,对于Schnorr类型签名的聚合,其基础签名包括:di=1,
Figure BSA0000245104040000087
其中
Figure BSA0000245104040000088
包含
Figure BSA0000245104040000089
Figure BSA00002451040400000810
Figure BSA00002451040400000811
H是一个抗碰撞的哈希函数其输入顺序可以任意;或者
Figure BSA00002451040400000812
对于这种情况签名者的公钥可以从si以及签名消息mi恢复出来;zi=sk′i+skiei mod q,或zi=sk′i-skieimod q,或zi=-(sk′i+skiei)mod q,或zi=-(sk′i-skiei)mod q;或;zi=ski+sk′iei mod q,或zi=ski-sk′ieimod q,或zi=-(ski+sk′iei)mod q,或zi=-(ski-sk′iei)mod q;hi=Hi(FL(Lpk,Lpk′Lm),Di),其中对于部分i∈{1,2...,n}hi可以是常数;
Figure BSA00002451040400000813
Figure BSA00002451040400000814
其中bi=1或bi=-1。
如上所述的方法,对于Gamma或俄罗斯数字签名标准EC-RDSA类型签名的聚合,其基础签名包括:
Figure BSA00002451040400000815
Figure BSA00002451040400000816
Figure BSA00002451040400000817
其中
Figure BSA00002451040400000818
包含ei和/或di,H是一个抗碰撞的哈希函数其输入顺序可以任意;或者
Figure BSA00002451040400000819
对于这种情况签名者的公钥可以从si以及签名消息mi恢复出来;zi=sk′idi+skiei mod q,或zi=sk′idi-skiei mod q,或zi=sk′iei+skidimod q,或zi=sk′iei-skidi mod q;或zi=-(sk′idi+skiei)mod q,或zi=-(sk′idi-skiei)mod q,或zi=-(sk′iei+skidi)mod q,或zi=-(sk′iei-skidi)mod q;hi=Hi(FL(Lpk,Lpk′Lm),Di),其中对于部分i∈{1,2...,n}hi可以是常数,
Figure BSA00002451040400000820
Figure BSA00002451040400000821
其中bi=1或bi=-1。
如上所述的方法,其中,转换函数
Figure BSA00002451040400000822
有如下实现方式:
Figure BSA00002451040400000823
是一个哈希函数,或
Figure BSA00002451040400000824
输出pk′i的x-轴坐标值。
如上所述的方法,针对基于格的后量子签名Dilithium及其变体,
Figure BSA00002451040400000825
是基于格上的带错误学习问题LWE的单向函数或其变体,对于这种情况签名生产和签名聚合需要拒绝采样来保证输出的签名满足要求的分布特征。
发明方法涉及数学公式计算,对数学公式和发明方法的等价变形、变换或变体蕴含在本发明方法的权利要求中。权利要求包括部署发明方法的所有软件、硬件设备、存储系统、程序代码等。
具体实施方式
发明方法可以一般性地适用基于Fiat-Shamir的数字签名的聚合,包括基于格的数字签名Dilithium及其变体。其核心思想如下:每个签名包含长期私钥和临时私钥线性组合的数值zi,其聚合签名包括
Figure BSA0000245104040000091
Figure BSA0000245104040000092
其中hi是一个关于所有待聚合签名所涉及的签名者的公钥身份信息、所有签名的消息、所有签名中包含或蕴含的临时公钥,以及针对每一个hi不同的标识值的哈希值。下面,我们聚焦针对Schnorr签名和Gamma签名的聚合方法的具体实施方式。
预备知识和符号标示:
聚合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},记
Figure BSA0000245104040000093
为数字集合{1,…,q-1}。发明人在下面发明方法的描述中,采用乘法表示(multiplicative representation)群上的操作。即,G′和G为乘法群。这只是为了表述上的方便,所有发明方法的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,当用乘法群上的操作描述发明方法时,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G′或G中的元素;比如gx通常指的是gx mod q,gxgy通常表示的是gxgy∈G′,x+y∈Zq和xy∈Zq表示的是x+ymod q和xy mod q。为了表述的方便起见,假定参数G,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,我们将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。我们假定离散对数假设在G上成立,即给定X=gx∈G(其中x从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。发明人使用“^”符号(比如,
Figure BSA0000245104040000101
)来标示一个用户或设备或程序的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序列号,一个emial或IP地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含或包含于一个数字证书。记{…}为一个信息或数值的集合,但是在公有区块链比如比特币中应用时一般没有公钥证书。
哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}*表示的是所有0-1串的集合。哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换,这儿“单向”指的是给定一个函数的输出求出其输入或前像是困难的,“抗碰撞(collision-resistant)”指的是给定一个输入难以找到另外一个不同的输入使得哈希函数在这两个不同输入上的输出相同。哈希函数范围可以非常广泛:从一个简单的混合(mixing)函数到一个具有伪随机输出性质的函数。具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机圣谕(random oracle)”。
聚合Gamma签名方法具体实施方式:
Figure BSA0000245104040000102
表示签名者,n表示系统中签名者的数目,
Figure BSA0000245104040000103
的公钥为
Figure BSA0000245104040000104
的私钥为ski=xi∈Zq,(ski私钥也可以设置成-xi,设置成-xi的一个好处是签名中的计算zi=disk′i-eiski=disk′i+eixi mod q是加法,验证是用乘法,这些技巧在我们发明方法框架下可以灵活设置),其中xi
Figure BSA0000245104040000105
中随机选取;g是一个阶为N的有限群G′中的一个阶为素数q的循环子群G的生成元。这儿我们令G′是定义在Fp上的椭圆曲线的点构成,其中p是一个素数。系统参数{G′,G,g,q},转换函数h,f,
Figure BSA0000245104040000106
以及辅助输入
Figure BSA0000245104040000107
或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前或之中被交换和协商。令mi∈{0,1}*
Figure BSA0000245104040000108
待签名的信息,
Figure BSA0000245104040000109
表示签名聚合者,
Figure BSA00002451040400001010
表示聚合签名验证者,所述方法包括:
由所述签名者
Figure BSA00002451040400001011
计算ei=h(mi,pki)或
Figure BSA00002451040400001012
或ei=h(mi),其中h:{0,1}*→Zq是一个从{0,1}*到Zq的抗碰撞的哈希函数;由所述签名者
Figure BSA00002451040400001013
Figure BSA00002451040400001014
随机选取得的临时私钥sk′i,计算得到临时公钥
Figure BSA0000245104040000111
和di=f(pk′i)∈Zq,其中f是将pk′i的x-轴坐标值进行输出,或者f是一个抗碰撞的哈希函数(其可与h相同);由所述签名者
Figure BSA0000245104040000112
计算zi=disk′i+eiskimod q;由所述签名者
Figure BSA0000245104040000113
将(mi,pki)和签名
Figure BSA0000245104040000114
发送或者广播出去;或者由所述签名者
Figure BSA0000245104040000115
将(mi,pki)和签名
Figure BSA0000245104040000116
发送或者广播出去;其中,如果pki可以从mi和si恢复出,则签名者可以不发送pki,比如ei=h(mi)和
Figure BSA0000245104040000117
Figure BSA0000245104040000118
其中,
Figure BSA0000245104040000119
是一个空集或者仅包含
Figure BSA00002451040400001110
的全部或部分信息可以通过
Figure BSA00002451040400001111
恢复出来。
所述签名聚合者
Figure BSA00002451040400001112
设置四个初始变量{Lpk,Lm,Lpk′,z},其中Lpk,Lm,Lpk′为初始化为空的集合(为了描述简单起见,我们直接令承诺值L为{Lpk,Lm,Lpk′},当然我们可以采取更多在发明内容中描述的灵活的方式),z初始化为0;由所述签名聚合者
Figure BSA00002451040400001113
令得到所述签名者
Figure BSA00002451040400001114
的公钥pki(其中pki可能是从消息mi和签名si恢复出来的)、消息mi和签名si之后,1≤i≤n其中n是一个整数,根据Gamma-签名的验证方法对每个签名进行验证并得到pk′i。若验证不成功则拒绝该签名并放弃对其进行聚合;对每一个验证成功的签名,将pki增加到Lpk,将mi增加到Lm,将pk′i增加到Lpk′。对所有验证成功的签名,进行如下聚合操作。下面为了描述方便起见,我们假设收到的签名都验证成功并参与聚合。令Lpk={pk1,...,pkn},Lpk′={pk′1,...,pk′n},Lm={m1,...,mn},这儿pk′i可以用其x-轴坐标和另一个标记其y-轴正负号和/或奇偶性的值来简洁表示和存储,Lpk是多重集合其中可能有元素重复:对于i≠j可能pki=pkj。对于每一组签名验证成功并参与聚合的签名数据{pki,mi,si,pk′i}执行如下关键操作:
Figure BSA00002451040400001115
Figure BSA00002451040400001116
其中
Figure BSA00002451040400001117
是一个转换函数其可与f或h相同且可以存在部分i∈{1,2,…,n}使得
Figure BSA00002451040400001118
为常数函数,
Figure BSA00002451040400001119
可以为空。在具体实现中,一般令一个i∈{1,2,…,n}使得hi=1;l是一个整数,在具体实现中为了高效实现可以令l<|q|,比如l=|q|/2,其中|q|为q的二进制长度;为了验证的高效性,可以先用哈希函数计算所有的hi然后令最大或最小的那个hi设置成为常数1;对于不为常数的hi,其取值可以取自Zq的一个子集,比如
Figure BSA00002451040400001123
Figure BSA00002451040400001124
其中1是一个整数;这儿,为了简单起见,我们直接令Di=i,当然其有各种不同的形式只要保证对于不同的i值Di不同即可,比如可令Di={pki,pk′i,mi};
Figure BSA00002451040400001120
最后,
Figure BSA00002451040400001121
输出
Figure BSA00002451040400001122
其中元素顺序可以任意组合。上述的验证和聚合过程步骤的顺序不是严格的,若干验证和聚合过程步骤的顺序可以调换和组合,其顺序对签名及聚合的生成和验证的正确性不关键。
所述聚合签名验证者
Figure BSA0000245104040000121
得到
Figure BSA0000245104040000122
后,用和签名者约定的同样的方法计算得到di∈Zq,ei∈Zq,hi∈Zq,1≤i≤n,验证
Figure BSA0000245104040000123
以及计算验证是否
Figure BSA0000245104040000124
若验证通过则接受该聚合签名否则拒绝。上述的验证过程步骤的顺序不是严格的,若干验证过程和步骤的顺序可以调换和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省时间。另外,验证一般包含对公钥或临时公钥格式的检查(比如确认他们是群G中的元素,在PKI环境下还涉及验证公钥证书的有效性等。
聚合Schnorr签名方法具体实施方式:
Figure BSA0000245104040000125
1≤i≤n,表示签名者,n表示系统中签名者的数目,
Figure BSA0000245104040000126
的公钥为
Figure BSA0000245104040000127
的私钥为ski=xi∈Zq,(ski私钥也可以设置成-xi,设置成-xi的一个好处是签名中的计算zi=disk′i-eiski=disk′i+eixi mod q是加法,验证是用乘法,这些技巧在我们发明方法框架下可以灵活设置),其中xi
Figure BSA0000245104040000128
中随机选取;g是一个阶为N的有限群G′中的一个阶为素数q的循环子群G的生成元。这儿我们令G′是定义在Fp上的椭圆曲线的点构成,其中p是一个素数。系统参数{G′,G,g,q},转换函数h,f,
Figure BSA0000245104040000129
以及辅助输入
Figure BSA00002451040400001210
或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前或之中被交换和协商。令mi∈{0,1}*
Figure BSA00002451040400001211
待签名的信息,
Figure BSA00002451040400001212
表示签名聚合者,
Figure BSA00002451040400001213
表示聚合签名验证者,所述方法包括:
由所述签名者
Figure BSA00002451040400001214
Figure BSA00002451040400001215
随机选取得的临时私钥sk′i,计算得到临时公钥
Figure BSA00002451040400001216
由所述签名者
Figure BSA00002451040400001217
计算ei=h(mi,pki,pk′i)或
Figure BSA00002451040400001218
Figure BSA00002451040400001219
或ei=h(mi,pk′i),其中h:{0,1}*→Zq是一个从{0,1}*到Zq的抗碰撞的哈希函数;由所述签名者
Figure BSA00002451040400001220
计算zi=sk′i+eiski mod q;由所述签名者
Figure BSA00002451040400001221
将(mi,pki)和签名
Figure BSA00002451040400001222
发送或者广播出去;或者由所述签名者
Figure BSA00002451040400001223
将(mi,pki)和签名
Figure BSA00002451040400001224
Figure BSA00002451040400001225
发送或者广播出去,其中,如果pki可以从mi和si恢复出,则签名者可以不发送pki,比如ei=h(mi,pk′i)和
Figure BSA00002451040400001226
这时签名者可以不公开发送pki;其中,
Figure BSA00002451040400001227
是一个空集或者仅包含ei∈Zq,pk′i的全部或部分信息可以通过
Figure BSA00002451040400001228
恢复出来。
所述签名聚合者
Figure BSA00002451040400001229
设置四个初始变量{Lpk,Lm,Lpk′,z},其中Lpk,Lm,Lpk′为初始化为空的集合(为了描述简单起见,我们直接令承诺值L为{Lpk,Lm,Lpk′},当然我们可以采取更多在发明内容中描述的灵活的方式),z初始化为0;由所述签名聚合者
Figure BSA0000245104040000131
令得到所述签名者
Figure BSA0000245104040000132
的公钥pki(其中pki可能是从消息mi和签名si恢复出来的)、消息mi和签名si之后,1≤i≤n其中n是一个整数,根据Schnorr-签名的验证方法对每个签名进行验证并得到pk′i。若验证不成功则拒绝该签名并放弃对其进行聚合;对每一个验证成功的签名,将pki增加到Lpk,将mi增加到Lm,将pk′i增加到Lpk′。对所有验证成功的签名,进行如下聚合操作。下面为了描述方便起见,我们假设收到的签名都验证成功并参与聚合。令Lpk={pk1,...,pkn},Lpk′={pk′1,...,pk′n},Lm={m1,...,mn},这儿pk′i可以用其x-轴坐标和另一个标记其y-轴正负号和/或奇偶性的值来简洁表示和存储,Lpk是多重集合其中可能有元素重复:对于i≠j可能pki=pkj。对于每一组签名验证成功并参与聚合的签名数据{pki,mi,si,pk′i}执行如下关键操作:
Figure BSA0000245104040000133
的一个子集,其中
Figure BSA0000245104040000134
是一个转换函数其可与哈希函数h相同且可以存在部分i∈{1,2,…,n}使得
Figure BSA0000245104040000135
为常数函数,
Figure BSA0000245104040000136
可以为空。在具体实现中,一般令一个i∈{1,2,…,n}使得hi=1。为了验证的高效性,可以先用哈希函数计算所有的hi然后令最大或最小的那个hi设置成为常数1;对于不为常数的hi,其取值可以取自Zq的一个子集,比如
Figure BSA0000245104040000137
其中l是一个整数;在具体实现中为了高效实现可以令l<|q|,比如l=|q|/2,其中|q|为q的二进制长度;
Figure BSA0000245104040000138
最后,
Figure BSA0000245104040000139
输出
Figure BSA00002451040400001310
其中元素顺序可以任意组合。上述的验证和聚合过程步骤的顺序不是严格的,若干验证和聚合过程步骤的顺序可以调换和组合,其顺序对签名及聚合的生成和验证的正确性不关键。
所述聚合签名验证者
Figure BSA00002451040400001311
得到
Figure BSA00002451040400001312
后,用和签名者约定的同样的方法计算得到ei∈Zq,hi∈Zq,1≤i≤n,验证
Figure BSA00002451040400001313
以及计算验证是否
Figure BSA00002451040400001314
若验证通过则接受该聚合签名否则拒绝。上述的验证过程步骤的顺序不是严格的,若干验证过程和步骤的顺序可以调换和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省时间。另外,验证一般包含对公钥或临时公钥格式的检查(比如确认他们是群G中的元素,在PKI环境下还涉及验证公钥证书的有效性等。
基于Schnorr的盲签名聚合具体实施方式:基于Schnorr的盲签名需要交互产生,但是最终输出的签名仍然是Schnorr签名类型,可以利用基于Schnorr签名的聚合方式进行聚合。这种聚合技术可以应用到使用盲签名的区块链系统比如DASH币系统。
多方签名和门限签名聚合实施方式:多方签名和门限签名的公钥一般和传统签名相当,但是私钥通过分布式协议产生由多个用户共同保管。由于最终产出的签名仍然类似传统签名,如果签名是Schnorr或Gamma签名类型的,仍然可以采用本发明方法进行聚合。
多重签名聚合实施方式:多重签名一般是通过交互的方式产生,涉及多个用户的签名公钥(即:签名公钥和签名私钥都是一个集合)。对于某些多重签名方案比如基于Schnorr签名的MuSig2等,其支持公钥聚合,聚合公钥其是多个用户公钥的一个函数(对应的私钥是多个用户签名私钥的函数),最终输出的多重签名可以视作为该聚合公钥的一个传统Schnorr或Gamma类型的签名,因此可以用本发明方法对多个多重签名进行聚合。
环签名聚合方式:环签名的签名公钥是多个用户签名公钥的一个集合,基于离散对数的环签名的基本类似是包括多个{z1,z2,...,zk}以及若干临时签名公钥(通常是一个)或者哈希值,k≥1,验证是针对一个特定的zi进行,1≤i≤k(通常令i=1),而要验证这个指定的zi需要进行一个环形的运算和哈希链得到与这个特定的zi对应的临时签名公钥或哈希值。一般而言,这个特定的zi既是环型操作的起点也是终点。这时,需要说明的是,真正进行签名操作的用户不一定知道zi对应的私钥。对多个环签名的聚合是对每个环签名中的指定的zi(一般是环操作的起点和终点)用本发明方法进行聚合。这时,对于
Figure BSA0000245104040000141
Lpk,Lpk′中的每一个元素实际上都是一个集合,
Figure BSA0000245104040000142
可以包含没有参与聚合的签名其它部分比如没有参与聚合的zj。在基于门罗币的区块链系统中,为了防止双花,实际签名者会准备两个签名公钥X=gx∈G,I=HI(X)x,实际上签名私钥又是由自己(交易接受者)的两个私钥和交易发送者生成的交易公钥(transaction publickey)通过一个函数计算得到。这时,一个单独的签名对应用用∑AND来同时证明知道X和I的离散对数,然后用Fiat-Shamir转换得到签名,这时一个单独的签名中临时公钥和z都是元素集合(包含至少2个元素),然后对参与环签名的其它用户用∑OR协议和环签名机制得到最终的环签名。对于门罗币区块链系统中,对多个环签名的聚合是对每个环签名中的指定的zi(一般是环操作的起点和终点)用本发明方法进行聚合时,由于zi是一个集合,zihi是hi与zi中的每个元素进行聚合,
Figure BSA0000245104040000143
对应集合或向量的加法,
Figure BSA0000245104040000144
是一个集合,
Figure BSA0000245104040000145
得到也是一个集合或向量,是对
Figure BSA0000245104040000146
中的每一个元素做基为g的指数运算。
在本发明方法的具体实施中,如果待聚合的签名数量比较大,可以分成若干组,每组内的签名聚合采用本发明方法聚合,其得到的本组的聚合签名本身又作为一个待聚合的签名并与其它组得到的聚合签名进行聚合。
此外,对于adaptor签名,以及BIP-341和BIT-342所描述的Taproot更新,将应用Schnorr签名,因此本发明方法描述的聚合Schnorr签名方案可以应用到Taproot更新。
本发明给出一个高效的聚合数字签名方法,这是目前已知的唯一一种基于一般性有限群且可证明安全的聚合签名方法,解决了这个领域长期未解决的公开问题。所发明的新的数字签名方法可大幅缩小签名的存储空间和减少验证时间,可一般性地应用于需要签名聚合的应用中,特别有利于大数据聚合和区块链及密码货币领域应用。

Claims (8)

1.一种面向大数据和区块链应用的数字签名聚合方法,其中,令PKi,SKi,PK′i,SK′i,Mi,Zi,Si为数据集合,i≥1为正整数;对于
Figure FSA0000245104030000011
Figure FSA0000245104030000012
这儿pki代表签名公钥其可固定也可以每次签名而不同,传统的数字签名pki是相对固定的,但是在多重签名、环签名等应用中pki作为一个数据集合可以每次签名发生变化,ski代表签名私钥,pk′i代表签名临时公钥,sk′i代表签名临时私钥,mi代表签名的消息,
Figure FSA0000245104030000016
其中
Figure FSA0000245104030000017
为任意单向函数,
Figure FSA0000245104030000018
其中
Figure FSA0000245104030000019
是任意单向函数,对于不同的i这些单向函数可以相同或不同;对于传统的数字签名和盲签名等,签名公钥可以包含一个单向函数,而对环签名、多重签名、多方签名、群签名、门限签名、聚合签名、adaptor签名等,签名公钥可以是一个集合其生成可以包含多个单向函数;待聚合的签名si包含数据zi,并且签名验证有步骤基于一个公式
Figure FSA00002451040300000110
或其等价变体,其中fi是一个同态函数输入至少包含zi
Figure FSA00002451040300000111
是辅助输入其可为空,Ωi是一个函数其可为复合函数即其本身又可以调用其它转换或哈希函数,auxΩi是辅助输入其可为空;由si、mi和pki可以有效计算出pk′i,和/或,由si、mi和pk′i可以有效计算出pki;每一个消息和签名对(mi,si)可以是由有一个签名者单独产生,也可以是多个用户交互协作产生比如盲签名、群签名、多重签名、门限和多方签名等,签名公钥也可以包含多个用户公钥比如环签名等;
给定n≥1个待聚合的消息和签名对:{(m1,s1),(m2,s2),...,(mn,sn)},其中n为正整数,从中得到或蕴含签名公钥集合
Figure FSA0000245104030000013
签名临时公钥集合
Figure FSA0000245104030000014
签名消息集合
Figure FSA0000245104030000015
其中集合Lpk,Lpk′和Lm的部分或全部可以是多重集合,即其中若干元素可以相等;对于每一组数据{pki,mi,si,pk′i}执行如下关键操作:
Figure FSA00002451040300000114
Figure FSA00002451040300000113
其中
Figure FSA00002451040300000112
是一个转换函数其输入包括数据集合L和Di其集合包含的元素的顺序可以任意,
Figure FSA00002451040300000115
是辅助信息,Di是数据集合且对于不同的i值Di不同,数据集合L=FL(Lpk,Lpk′Lm)其中FL是一个承诺转换函数满足输出数据集合L是对{Lpk,Lpk′Lm}的一个承诺,即:没有多项式时间的算法能以不可忽略的概率输出{Lpk,Lpk′Lm}≠{L′pk,L′pk′L′m}使得FL(Lpk,Lpk′Lm)=FL(L′pk,L′pk′L′m);对于不同的i,函数
Figure FSA00002451040300000218
可以不同,并且对于部分i,1≤i≤n,
Figure FSA0000245104030000021
可以是常数函数;
Figure FSA0000245104030000022
其中
Figure FSA0000245104030000023
是一个转换函数其输入包括
Figure FSA0000245104030000024
Figure FSA0000245104030000025
是辅助信息;
Figure FSA0000245104030000026
Figure FSA0000245104030000027
其中
Figure FSA0000245104030000028
是一个转换函数其输入包括
Figure FSA0000245104030000029
输入顺序可以任意,
Figure FSA00002451040300000210
是辅助信息;聚合签名包括或蕴含:Lpk,Lpk′Lm
Figure FSA00002451040300000211
及auxagg,其中顺序任意,auxagg是辅助信息比如系统参数、用户身份标识等信息;
聚合签名验证:所述聚合签名验证者
Figure FSA00002451040300000212
收到聚合签名其包含或蕴含
Figure FSA00002451040300000213
之后,对聚合签名进行验证,并输出验证结果;
系统参数、所有单向函数转换函数及其输入顺序、所有辅助输入信息具体内容或者是固定的并被所有的用户事先获知,或者在方法运行之前或之中被交换和协商;对于所有的运算符如果一个操作数是一个集合或向量是对该集合或向量中的每一个元素执行该运算符操作从,结果也是一个集合或向量。
2.如权利要求1所述的方法,待聚合的签名既可以是传统数字签名机制中单独签名用户所生成的签名,也可以是盲签名、环签名、多重签名、多方签名、门限签名、群签名、adaptor签名等,也可以本身是一个用本方法生成的一个聚合签名;对于这些签名变体,签名或密钥生成过程通常需要运行交互协议生成,和/或签名公钥和签名临时公钥可以是一个集合,z也可以是一个集合。
3.如权利要求2所述的方法,单向函数
Figure FSA00002451040300000219
Figure FSA00002451040300000220
包含定义在群G上基于离散对数的单向函数,私钥取自Zq={0,1,2,...,q-1}其中q是整数,群G的生成元记为g,群G既可以定义在数域上也可定义在椭圆曲线上;
Figure FSA00002451040300000221
其中Hi是一个哈希函数其输入顺序任意输出属于Zq的一个子集或者Hi是一个常数函数,对于不同的i,Hi可以是同一个哈希函数或同一个常数函数,
Figure FSA00002451040300000222
Figure FSA00002451040300000223
也可以相同;
Figure FSA00002451040300000214
其中Fzh是一个转换函数输入包含zihi和辅助输入
Figure FSA00002451040300000215
Figure FSA00002451040300000216
包含
Figure FSA00002451040300000217
的线性组合。
4.如权利要求3所述的方法,zi是sk′i和ski的线性组合:zi=disk′i+eiski,这儿sk′i和ski签名者不一定必须知道而是通过单向函数存在即可比如在环签名应用中;其中
Figure FSA00002451040300000224
其中
Figure FSA00002451040300000225
是一个可以为常数的转换函数,输入包括pki,pk′i,mi
Figure FSA00002451040300000226
是辅助输入;
Figure FSA00002451040300000324
其中
Figure FSA00002451040300000325
是一个可以为常数的转换函数,输入包括pki,pk′i,mi
Figure FSA00002451040300000326
是辅助输入;聚合签名验证者收到聚合签名其包含或蕴含
Figure FSA0000245104030000031
之后验证聚合签名的方法包括:判断
Figure FSA0000245104030000032
是否成立,其中FV是一个输入包含Lpk,Lpk′Lm
Figure FSA0000245104030000033
auxagg的函数。
5.如权利要求4所述的方法,对于Schnorr类型签名的聚合,其基础签名包括:
Figure FSA0000245104030000034
其中
Figure FSA0000245104030000035
包含
Figure FSA0000245104030000036
Figure FSA0000245104030000037
H是一个抗碰撞的哈希函数其输入顺序可以任意;或者
Figure FSA0000245104030000038
对于这种情况签名者的公钥可以从si以及签名消息mi恢复出来;zi=sk′i+skiei mod q,或zi=sk′i-skiei mod q,或zi=-(sk′i+skiei)mod q,或zi=-(sk′i-skiei)mod q;或;zi=ski+sk′iei mod q,或zi=ski-sk′iei mod q,或zi=-(ski+sk′iei)modq,或zi=-(ski-sk′iei)mod q;hi=Hi(FL(Lpk,Lpk′Lm),Di)其中对于部分i∈{1,2...,n}hi可以是常数,
Figure FSA0000245104030000039
Figure FSA00002451040300000310
Figure FSA00002451040300000311
其中bi=1或bi=-1。
6.如权利要求4所述的方法,对于Gamma或俄罗斯数字签名标准EC-RDSA类型签名的聚合,其基础签名包括:
Figure FSA00002451040300000312
Figure FSA00002451040300000313
Figure FSA00002451040300000314
Figure FSA00002451040300000315
Figure FSA00002451040300000316
其中
Figure FSA00002451040300000317
包含ei和/或di,H是一个抗碰撞的哈希函数其输入顺序可以任意;或者
Figure FSA00002451040300000318
Figure FSA00002451040300000319
对于这种情况签名者的公钥可以从si以及签名消息mi恢复出来;zi=sk′idi+skiei mod q,或zi=sk′idi-skiei mod q,或zi=sk′iei+skidi mod q,或zi=sk′iei-skidi mod q;或zi=-(sk′idi+skiei)mod q,或zi=-(sk′idi-skiei)mod q,或zi=-(sk′iei+skidi)mod q,或zi=-(sk′iei-skidi)mod q;hi=Hi(FL(Lpk,Lpk′Lm),Di)其中对于部分i∈{1,2...,n}hi可以是常数,
Figure FSA00002451040300000320
Figure FSA00002451040300000321
Figure FSA00002451040300000322
其中bi=1或bi=-1。
7.如权利要求4所述的方法,其中,转换函数
Figure FSA00002451040300000327
有如下实现方式:
Figure FSA00002451040300000328
是一个哈希函数,或
Figure FSA00002451040300000329
输出pk′i的x-轴坐标值。
8.如权利要求2所述的方法,针对基于格的后量子签名Dilithium及其变体,
Figure FSA00002451040300000323
是基于格上的带错误学习问题LWE的单向函数或其变体,对于这种情况签名生产和签名聚合需要拒绝采样来保证输出的签名满足要求的分布特征。
CN202110682543.6A 2021-05-26 2021-06-18 一种面向大数据和区块链应用的数字签名聚合方法 Pending CN114065233A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN2021105811440 2021-05-26
CN202110581144 2021-05-26
CN202110645193 2021-06-09
CN2021106451936 2021-06-09

Publications (1)

Publication Number Publication Date
CN114065233A true CN114065233A (zh) 2022-02-18

Family

ID=80233250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110682543.6A Pending CN114065233A (zh) 2021-05-26 2021-06-18 一种面向大数据和区块链应用的数字签名聚合方法

Country Status (1)

Country Link
CN (1) CN114065233A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115865324A (zh) * 2022-11-16 2023-03-28 深圳职业技术学院 一种基于后量子多重签名的区块链多级授权方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115865324A (zh) * 2022-11-16 2023-03-28 深圳职业技术学院 一种基于后量子多重签名的区块链多级授权方法及系统
CN115865324B (zh) * 2022-11-16 2024-02-09 深圳职业技术学院 一种基于后量子多重签名的区块链多级授权方法及系统

Similar Documents

Publication Publication Date Title
CN108650097B (zh) 一种高效的聚合数字签名方法
CN108809658B (zh) 一种基于sm2的身份基的数字签名方法与系统
CN108551392B (zh) 一种基于sm9数字签名的盲签名生成方法及系统
CN108667626B (zh) 安全的两方协作sm2签名方法
CN109474422B (zh) 一种多方协同产生sm2数字签名的方法
CN107707358B (zh) 一种ec-kcdsa数字签名生成方法及系统
CN101547099B (zh) 基于椭圆曲线的自认证签名方法与装置
US6490352B1 (en) Cryptographic elliptic curve apparatus and method
CN109714153B (zh) 一种高效的聚合签名方法
CN112446052B (zh) 一种适用于涉密信息系统的聚合签名方法及系统
CN113300856B (zh) 一种可证安全的异构混合签密方法
CN107171788B (zh) 一种基于身份且签名长度恒定的在线离线聚合签名方法
CN106936584B (zh) 一种无证书公钥密码系统的构造方法
CN108337092B (zh) 用于在通信网络中执行集体认证的方法和系统
CN114117547B (zh) 一种基于预计算表的sm9数字签名加速生成方法以及数字签名加速验证方法
CN104618098B (zh) 一种集合成员关系判定的密码学构造方法及系统
CN109687969A (zh) 一种基于密钥共识的格基数字签名方法
CN102064940A (zh) 一种在线/离线高效的数字签名方法
CN114065233A (zh) 一种面向大数据和区块链应用的数字签名聚合方法
CN112511314A (zh) 一种基于身份的可恢复消息盲签名生成方法
CN108667619B (zh) 一种sm9数字签名的白盒实现方法与装置
CN112217629B (zh) 一种云存储公开审计方法
CN114285576A (zh) 一种非对的在线离线签密方法
CN105049451B (zh) 生成数字签名的方法和验证数字签名的方法
CN117499039B (zh) 基于椭圆曲线公钥密码算法的区块链签名方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination