CN110535635B - 一种支持信息隐藏的协同签名方法与系统 - Google Patents
一种支持信息隐藏的协同签名方法与系统 Download PDFInfo
- Publication number
- CN110535635B CN110535635B CN201910657002.0A CN201910657002A CN110535635B CN 110535635 B CN110535635 B CN 110535635B CN 201910657002 A CN201910657002 A CN 201910657002A CN 110535635 B CN110535635 B CN 110535635B
- Authority
- CN
- China
- Prior art keywords
- signature
- party
- calling party
- cooperative
- caller
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Power Engineering (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种支持信息隐藏的协同签名方法与系统,参与方包括调用方和协作方,该方法包括以下步骤:1)签名参数初始化;2)生成调用方和协作方的密钥,所述密钥包括:协作方的私钥、协作方的公钥、调用方的私钥、调用方的公钥和用户公钥;3)生成签名。本发明中,调用方和协作方分别存储SM2子私钥部分,协同完成消息的签名操作;任何一方无法获取完整的SM2私钥信息。本发明中,调用方不会将待签名消息的明文、摘要信息或最终签名泄露给协作方,有效地保护了用户隐私信息;同时该方案相比于盲签名方案,计算和通信开销较小,有利于进行实际部署和应用。
Description
技术领域
本发明涉及信息安全技术,尤其涉及一种支持信息隐藏的协同签名方法与系统。
背景技术
公钥密码算法能够用于生成信息的数字签名,具体地,拥有私钥的实体能够生成消息的数字签名,其他实体使用相应公钥可验证签名的正确性。为防止攻击者生成合法的数字签名,需要保证私钥不被泄露。
目前,已有多种协同签名方案用于提高私钥的安全性。该类方案的特点是:没有任何实体拥有或能够恢复出完整的私钥信息,多个实体分别拥有子私钥信息用于生成子签名部分,最终多个子签名合成完整的签名信息。但是,该类方案中,待签名消息的明文信息或其摘要信息将被泄露给除调用方外的协作方,使得用户隐私面临泄露的风险。
盲签名方案能够使得数字签名生成者在不知道待签名消息及摘要的情形下,生成相应的数字签名,从而保护用户隐私信息。但是,盲签名方案中,调用方需要对待签名消息进行盲化处理,并对数字签名生成者返回的结果进行去盲化,以生成最终的数字签名;从而,盲签名方案中,调用方计算开销较大,无法大规模应用部署。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种支持信息隐藏的协同签名方法与系统。
本发明解决其技术问题所采用的技术方案是:一种支持信息隐藏的协同签名方法,参与方包括调用方和协作方,包括以下步骤:
1)签名参数初始化
产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
2)生成调用方和协作方的密钥
2.1)协作方产生一个位于[1,n-1]之间的随机数D1,将产生的随机数D1作为协作方的私钥;
协作方计算D1在Fq上的逆元D1-1mod n;计算对应的公钥P1=D1 -1[*]G,将计算结果P1发送给调用方;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
2.2)调用方产生一个位于[1,n-1]之间的随机数D2作为私钥,计算D2在Fq上的逆元D2 -1mod n;计算对应的公钥P2=D2 -1[*]G,将计算结果P2发送给协作方;
2.3)协作方计算W1=D1 -1[*]P2,存储计算结果W1;协作方计算P=W1[-]G,将计算结果P作为公钥公开;其中,[-]表示椭圆曲线点减运算;
2.4)调用方计算W2=D2 -1[*]P1,存储计算结果W2,调用方计算P=W2[-]G将计算结果P作为公钥;
3)生成签名过程
3.1)调用方发起协同签名请求;
3.2)协作方在接收到调用方发起的协同签名请求时,根据W1生成第一部分签名Q1,并将Q1返回给调用方;其中,第一部分签名Q1由协作方产生一个位于[1,n-1]之间的随机数k1,并计算Q1=k1[*]W1;
3.3)调用方生成待签名消息M的消息摘要e,根据Q1、W2和e生成第二部分签名r,并根据D2和r生成第三部分签名s2,将s2发送给协作方;
3.4)协作方根据D1和s2生成第四部分签名s1,并返回给调用方;s1=k1+D1*s2modn;
3.5)调用方根据r和s1计算s,生成完整签名(r,s)并输出。
按上述方案,所述步骤3.3)调用方生成待签名消息M的消息摘要e采用以下方法:将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,即:M'=Z||M,||表示拼接;e=Hash(M');其中,Z表示调用方和协作方共同的身份标识,Hash()表示预设的密码杂凑函数。
按上述方案,所述步骤3.3)中第二部分签名r的生成过程如下:
调用方产生两个位于[1,n-1]之间的随机数k2、k3,并计算k2[*]G[+]Q1[+]k3[*]W2,得到计算结果(x1,y1),即:k2∈[1,n-1];k3∈[1,n-1];(x1,y1)=k2[*]G[+]Q1[+]k3[*]W2,其中,[+]表示椭圆曲线点加运算,[*]表示椭圆曲线点乘运算;
调用方计算x1+e mod n,将计算结果作为r,即:r=x1+e mod n;若r等于0,则调用方重新产生随机数k2、k3,并重新计算(x1,y1)和r,直到r不等于0为止。
按上述方案,所述步骤3.3)中第三部分签名s2的生成过程如下:
s2=D2*(r+k2)mod n。
按上述方案,所述步骤3.3)中s的计算过程如下:s=s1+k3-r mod n;若s等于0或等于n-r,则重新产生k3,并重新执行相关步骤并计算s。
一种支持信息隐藏的协同签名系统,参与方包括调用方和协作方,包括:
签名参数初始化模块,用于产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
密钥生成模块,用于生成调用方和协作方的密钥;具体过程如下:
1)协作方产生一个位于[1,n-1]之间的随机数D1,将产生的随机数D1作为协作方的私钥;
协作方计算D1在Fq上的逆元D1-1mod n;计算对应的公钥P1=D1 -1[*]G,将计算结果P1发送给调用方;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
2)调用方产生一个位于[1,n-1]之间的随机数D2作为私钥,计算D2在Fq上的逆元D2 -1mod n;计算对应的公钥P2=D2 -1[*]G,将计算结果P2发送给协作方;
3)协作方计算W1=D1 -1[*]P2,存储计算结果W1;协作方计算P=W1[-]G,将计算结果P作为公钥公开;其中,[-]表示椭圆曲线点减运算;
4)调用方计算W2=D2 -1[*]P1,存储计算结果W2,调用方计算P=W2[-]G将计算结果P作为公钥;
签名生成模块,用于生成待签名消息M的签名;过程如下:
1)调用方发起协同签名请求;
2)协作方在接收到调用方发起的协同签名请求时,根据W1生成第一部分签名Q1,并将Q1返回给调用方;其中,第一部分签名Q1由协作方产生一个位于[1,n-1]之间的随机数k1,并计算Q1=k1[*]W1;
3)调用方生成待签名消息M的消息摘要e,根据Q1、W2和e生成第二部分签名r,并根据D2生成第三部分签名s2,将s2发送给协作方;
其中,第二部分签名r的生成过程如下:
调用方产生两个位于[1,n-1]之间的随机数k2、k3,并计算k2[*]G[+]Q1[+]k3[*]W2,得到计算结果(x1,y1),即:k2∈[1,n-1];k3∈[1,n-1];(x1,y1)=k2[*]G[+]Q1[+]k3[*]W2,其中,[+]表示椭圆曲线点加运算,[*]表示椭圆曲线点乘运算;
调用方计算x1+e mod n,将计算结果作为r,即:r=x1+e mod n;若r等于0,则调用方重新产生随机数k2、k3,并重新计算(x1,y1)和r,直到r不等于0为止;
第三部分签名s2的生成过程如下:
s2=D2*(r+k2)mod n;
4)协作方根据D1和s2生成第四部分签名s1,并返回给调用方;s1=k1+D1*s2mod n;
5)调用方根据r和s1生成完整签名(r,s)并输出,其中,s=s1+k3-r mod n;若s等于0或等于n-r,则重新产生k3,并重新执行相关步骤并计算s。
按上述方案,所述签名生成模块中步骤3)调用方生成待签名消息M的消息摘要e采用以下方法:将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,即:M'=Z||M,||表示拼接;e=Hash(M');其中,Z表示调用方和协作方共同的身份标识,Hash()表示预设的密码杂凑函数。
本发明产生的有益效果是:本发明中,调用方和协作方分别存储子私钥信息,协同完成对消息的签名,任何一方无法获取完整的私钥信息或独自生成正确的数字签名,提高了私钥的安全性。而且,在进行数字签名时,调用方不需要将待签名信息或其摘要值泄露给协作方,有效地保护了用户隐私信息;且整个方案中不需要复杂的盲化和去盲化操作,能够有效降低计算开销,有利于在实际系统中进行应用部署。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的方法流程图;
图2是本发明实施例的调用方和协作方密钥生成过程示意图;
图3是本发明实施例的调用方和协作方生成待签名消息M的完整签名的过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,一种支持信息隐藏的协同签名方法,包括以下步骤:
步骤11:协作方生成自身的子私钥D1,调用方生成自身的子私钥D2;
步骤12:调用方发起协同签名请求;
步骤13:协作方在接收到调用方发起的协同签名请求时,根据W1生成第一部分签名Q1,并将Q1返回给调用方;
步骤14:调用方生成待签名消息M的消息摘要e,根据Q1、W2和e生成第二部分签名r,并根据D2生成第三部分签名s2,将s2发送给协作方;
步骤15:协作方根据D1和s2生成第四部分签名s1,并返回给调用方;
步骤16:调用方根据r和s1生成完整签名并输出。
通过步骤12~16所示过程,即可生成待签名消息M的完整签名。
协作方和调用方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E上n阶的基点,各参数的具体取值等均根据SM2算法预先设定。
协作方和调用方分别生成自身的子私钥D1和D2,双方合作完成初始化过程。
相应地,图2为本发明调用方和协作方初始化过程示意图,如图2所示,包括以下步骤21~26。
步骤21:协作方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D1。即有:D1∈[1,n-1]。
步骤22:调用方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D2。即有:D2∈[1,n-1]。
步骤23:协作方计算D1在Fq上的逆元D1 -1mod n,mod表示求模运算;计算D1 -1[*]G,将计算结果P1发送给调用方,即有:P1=D1 -1[*]G,其中,[*]表示椭圆曲线点乘运算。
步骤24:调用方计算D2在Fq上的逆元D2 -1mod n;计算D2 -1[*]G,将计算结果P2发送给协作方,即有:P2=D2 -1[*]G。
步骤25:协作方计算D1 -1[*]P2,存储计算结果W1,即有:W1=D1 -1[*]P2;计算W1[-]G,将计算结果P作为公钥公开,即有:P=W1[-]G,其中,[-]表示椭圆曲线点减运算。
步骤26:调用方计算D2 -1[*]P1,存储计算结果W2,即有:W2=D2 -1[*]P1;计算W2[-]G,将计算结果作为公钥公开。
需要说明的是,上述步骤21~26的表示方式仅为举例说明,并不用于限制各步骤的执行顺序,在实际应用中,可根据实际需要设定各步骤的执行顺序,只要最终能够得到所需的结果即可,后续涉及到的各示意图中同样如此,不再赘述。
图3为本发明调用方和协作方生成待签名消息M的完整签名的过程示意图,如图3所示,包括以下步骤31~310。
步骤31:调用方发起协同签名请求。
步骤32:协作方产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1发送给调用方。即有:k1∈[1,n-1];Q1=k1[*]W1,其中[*]表示椭圆曲线点乘运算。
步骤33:调用方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,其中,Z表示调用方和协作方共同的身份标识,Hash()表示预定的密码杂凑函数。
即有:M'=Z||M,||表示拼接;e=Hash(M')。
步骤34:调用方产生两个位于[1,n-1]之间的随机数k2、k3,并计算k2[*]G[+]Q1[+]k3[*]W2,得到计算结果(x1,y1)。即有:k2∈[1,n-1];k3∈[1,n-1];(x1,y1)=k2[*]G[+]Q1[+]k3[*]W2,其中,[+]表示椭圆曲线点加运算,[*]表示椭圆曲线点乘运算。
步骤35:调用方计算x1+e mod n,将计算结果作为r。即有:r=x1+e mod n,其中,mod表示求模运算。若r不等于0,则执行步骤36,若r等于0,则调用方可重新产生k2、k3,并重新计算得到(x1,y1)和r,直到r不等于0为止。
步骤36:若r不等于0,则调用方计算D2*(r+k2)mod n,将计算结果作为s2。即有:s2=D2*(r+k2)mod n。
步骤37:调用方将s2发送给协作方。
步骤38:协作方计算k1+D1*s2mod n,得到计算结果s1。即有:s1=k1+D1*s2mod n。协作方将s1发送给调用方。
步骤39:调用方计算s1+k3-r mod n,得到计算结果s。即有:s=s1+k3-r modn。若s等于0或等于n-r,则可从重新产生k3,并将与此相关的步骤重新执行,若s不等于0且不等于n-r,则执行步骤310。
步骤310:若s不等于0且不等于n-r,则调用方将(r,s)作为完整签名输出。
上述各步骤中涉及到的各随机数k1、k2、k3等均为整数。
基于上述方法,本发明同时公开了一种支持信息隐藏的协同签名系统,参与方包括调用方和协作方,包括:
签名参数初始化模块,用于产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
密钥生成模块,用于生成调用方和协作方的密钥;具体过程如下:
1)协作方产生一个位于[1,n-1]之间的随机数D1,将产生的随机数D1作为协作方的私钥;
协作方计算D1在Fq上的逆元D1-1mod n;计算对应的公钥P1=D1 -1[*]G,将计算结果P1发送给调用方;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
2)调用方产生一个位于[1,n-1]之间的随机数D2作为私钥,计算D2在Fq上的逆元D2 -1mod n;计算对应的公钥P2=D2 -1[*]G,将计算结果P2发送给协作方;
3)协作方计算W1=D1 -1[*]P2,存储计算结果W1;协作方计算P=W1[-]G,将计算结果P作为公钥公开;其中,[-]表示椭圆曲线点减运算;
4)调用方计算W2=D2 -1[*]P1,存储计算结果W2,调用方计算P=W2[-]G将计算结果P作为公钥;
签名生成模块,用于生成待签名消息M的签名;过程如下:
1)调用方发起协同签名请求;
2)协作方在接收到调用方发起的协同签名请求时,根据W1生成第一部分签名Q1,并将Q1返回给调用方;其中,第一部分签名Q1由协作方产生一个位于[1,n-1]之间的随机数k1,并计算Q1=k1[*]W1;
3)调用方生成待签名消息M的消息摘要e,根据Q1、W2和e生成第二部分签名r,并根据D2生成第三部分签名s2,将s2发送给协作方;
其中,第二部分签名r的生成过程如下:
调用方产生两个位于[1,n-1]之间的随机数k2、k3,并计算k2[*]G[+]Q1[+]k3[*]W2,得到计算结果(x1,y1),即:k2∈[1,n-1];k3∈[1,n-1];(x1,y1)=k2[*]G[+]Q1[+]k3[*]W2,其中,[+]表示椭圆曲线点加运算,[*]表示椭圆曲线点乘运算;
调用方计算x1+e mod n,将计算结果作为r,即:r=x1+e mod n;若r等于0,则调用方重新产生随机数k2、k3,并重新计算(x1,y1)和r,直到r不等于0为止;
第三部分签名s2的生成过程如下:
s2=D2*(r+k2)mod n;
4)协作方根据D1和s2生成第四部分签名s1,并返回给调用方;s1=k1+D1*s2mod n;
5)调用方根据r和s1生成完整签名(r,s)并输出,其中,s=s1+k3-r mod n;若s等于0或等于n-r,则重新产生k3,并重新执行相关步骤并计算s。
其中,签名生成模块中步骤3)调用方生成待签名消息M的消息摘要e采用以下方法:将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,即:M'=Z||M,||表示拼接;e=Hash(M');其中,Z表示调用方和协作方共同的身份标识,Hash()表示预设的密码杂凑函数。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (7)
1.一种支持信息隐藏的协同签名方法,参与方包括调用方和协作方,其特征在于,包括以下步骤:
1)签名参数初始化
产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
2)生成调用方和协作方的密钥,所述密钥包括:协作方的私钥、协作方的公钥、调用方的私钥、调用方的公钥和用户公钥;
2.1)协作方产生一个位于[1,n-1]之间的随机数D1,将产生的随机数D1作为协作方的私钥;
协作方计算D1在Fq上的逆元D1 -1mod n;计算对应的公钥P1=D1 -1[*]G,将计算结果P1发送给调用方;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
2.2)调用方产生一个位于[1,n-1]之间的随机数D2作为私钥,计算D2在Fq上的逆元D2 - 1mod n;计算对应的公钥P2=D2 -1[*]G,将计算结果P2发送给协作方;
2.3)协作方计算W1=D1 -1[*]P2,存储计算结果W1;协作方计算P=W1[-]G,将计算结果P作为用户公钥公开;其中,[-]表示椭圆曲线点减运算;
2.4)调用方计算W2=D2 -1[*]P1,存储计算结果W2,调用方计算P=W2[-]G将计算结果P作为公钥;
3)生成签名过程
3.1)调用方发起协同签名请求;
3.2)协作方在接收到调用方发起的协同签名请求时,根据W1生成第一部分签名Q1,并将Q1返回给调用方;其中,第一部分签名Q1由协作方产生一个位于[1,n-1]之间的随机数k1,并计算Q1=k1[*]W1;
3.3)调用方生成待签名消息M的消息摘要e,根据Q1、W2和e生成第二部分签名r,并根据D2和r生成第三部分签名s2,将s2发送给协作方;
3.4)协作方根据D1和s2生成第四部分签名s1,并返回给调用方;s1=(k1+D1*s2)mod n;
3.5)调用方根据r和s1计算s,生成完整签名(r,s)并输出。
2.根据权利要求1所述的支持信息隐藏的协同签名方法,其特征在于,所述步骤3.3)调用方生成待签名消息M的消息摘要e采用以下方法:将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,即:M'=Z||M,||表示拼接;e=Hash(M');其中,Z表示调用方和协作方共同的身份标识,Hash()表示预设的密码杂凑函数。
3.根据权利要求1所述的支持信息隐藏的协同签名方法,其特征在于,所述步骤3.3)中第二部分签名r的生成过程如下:
调用方产生两个位于[1,n-1]之间的随机数k2、k3,并计算k2[*]G[+]Q1[+]k3[*]W2,得到计算结果(x1,y1),即:k2∈[1,n-1];k3∈[1,n-1];(x1,y1)=k2[*]G[+]Q1[+]k3[*]W2,其中,[+]表示椭圆曲线点加运算,[*]表示椭圆曲线点乘运算;
调用方计算(x1+e)mod n,将计算结果作为r,即:r=(x1+e)mod n;若r等于0,则调用方重新产生随机数k2、k3,并重新计算(x1,y1)和r,直到r不等于0为止。
4.根据权利要求3所述的支持信息隐藏的协同签名方法,其特征在于,所述步骤3.3)中第三部分签名s2的生成过程如下:
s2=(D2*(r+k2))mod n。
5.根据权利要求3所述的支持信息隐藏的协同签名方法,其特征在于,所述步骤3.5)中s的计算过程如下:s=(s1+k3-r)mod n;若s等于0或等于n-r,则重新产生k3,并重新执行步骤3.3)至3.5)计算s。
6.一种支持信息隐藏的协同签名系统,参与方包括调用方和协作方,其特征在于,包括:
签名参数初始化模块,用于产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
密钥生成模块,用于生成调用方和协作方的密钥;具体过程如下:
1)协作方产生一个位于[1,n-1]之间的随机数D1,将产生的随机数D1作为协作方的私钥;
协作方计算D1在Fq上的逆元D1 -1mod n;计算对应的公钥P1=D1 -1[*]G,将计算结果P1发送给调用方;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
2)调用方产生一个位于[1,n-1]之间的随机数D2作为私钥,计算D2在Fq上的逆元D2 -1modn;计算对应的公钥P2=D2 -1[*]G,将计算结果P2发送给协作方;
3)协作方计算W1=D1 -1[*]P2,存储计算结果W1;协作方计算P=W1[-]G,将计算结果P作为公钥公开;其中,[-]表示椭圆曲线点减运算;
4)调用方计算W2=D2 -1[*]P1,存储计算结果W2,调用方计算P=W2[-]G将计算结果P作为公钥;
签名生成模块,用于生成待签名消息M的签名;过程如下:
1)调用方发起协同签名请求;
2)协作方在接收到调用方发起的协同签名请求时,根据W1生成第一部分签名Q1,并将Q1返回给调用方;其中,第一部分签名Q1由协作方产生一个位于[1,n-1]之间的随机数k1,并计算Q1=k1[*]W1;
3)调用方生成待签名消息M的消息摘要e,根据Q1、W2和e生成第二部分签名r,并根据D2生成第三部分签名s2,将s2发送给协作方;
其中,第二部分签名r的生成过程如下:
调用方产生两个位于[1,n-1]之间的随机数k2、k3,并计算k2[*]G[+]Q1[+]k3[*]W2,得到计算结果(x1,y1),即:k2∈[1,n-1];k3∈[1,n-1];(x1,y1)=k2[*]G[+]Q1[+]k3[*]W2,其中,[+]表示椭圆曲线点加运算,[*]表示椭圆曲线点乘运算;
调用方计算(x1+e)mod n,将计算结果作为r,即:r=(x1+e)mod n;若r等于0,则调用方重新产生随机数k2、k3,并重新计算(x1,y1)和r,直到r不等于0为止;
第三部分签名s2的生成过程如下:
s2=(D2*(r+k2))mod n;
4)协作方根据D1和s2生成第四部分签名s1,并返回给调用方;s1=(k1+D1*s2)mod n;
5)调用方根据r和s1生成完整签名(r,s)并输出,其中,s=(s1+k3-r)mod n;若s等于0或等于n-r,则重新产生k3,并重新执行相关步骤并计算s。
7.根据权利要求6所述的支持信息隐藏的协同签名系统,其特征在于,所述签名生成模块中步骤3)调用方生成待签名消息M的消息摘要e采用以下方法:将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,即:M'=Z||M,||表示拼接;e=Hash(M');其中,Z表示调用方和协作方共同的身份标识,Hash()表示预设的密码杂凑函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910657002.0A CN110535635B (zh) | 2019-07-19 | 2019-07-19 | 一种支持信息隐藏的协同签名方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910657002.0A CN110535635B (zh) | 2019-07-19 | 2019-07-19 | 一种支持信息隐藏的协同签名方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110535635A CN110535635A (zh) | 2019-12-03 |
CN110535635B true CN110535635B (zh) | 2022-06-17 |
Family
ID=68660670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910657002.0A Active CN110535635B (zh) | 2019-07-19 | 2019-07-19 | 一种支持信息隐藏的协同签名方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110535635B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971405B (zh) * | 2019-12-06 | 2022-06-14 | 支付宝(杭州)信息技术有限公司 | 多方协同的sm2签名、解密方法及其系统 |
CN113259109A (zh) * | 2020-02-11 | 2021-08-13 | 旭尔权(北京)科技有限公司 | 一种用于签发隐式数字证书的协作式计算方法和系统 |
CN113765670B (zh) * | 2020-06-03 | 2024-01-26 | 成都天瑞芯安科技有限公司 | 无证书的可信任密钥生成方法与系统 |
CN114079564A (zh) * | 2020-08-11 | 2022-02-22 | 旭尔权(北京)科技有限公司 | 向两方协作式用户部件签发隐式数字证书的计算方法和系统 |
CN114205081B (zh) * | 2021-12-03 | 2023-12-19 | 中国科学院大学 | 一种保护用户隐私的盲协同签名方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
CN108989047A (zh) * | 2018-07-19 | 2018-12-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与系统 |
CN109245903A (zh) * | 2018-09-29 | 2019-01-18 | 北京信安世纪科技股份有限公司 | 双方协同生成sm2算法的签名方法、装置及存储介质 |
CN109818730A (zh) * | 2019-03-06 | 2019-05-28 | 矩阵元技术(深圳)有限公司 | 盲签名的获取方法、装置和服务器 |
WO2019137566A2 (en) * | 2019-04-29 | 2019-07-18 | Alibaba Group Holding Limited | Methods and devices for validating transaction in blockchain system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5239849B2 (ja) * | 2008-12-26 | 2013-07-17 | 富士通株式会社 | 電子署名方法、電子署名プログラムおよび電子署名装置 |
-
2019
- 2019-07-19 CN CN201910657002.0A patent/CN110535635B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
CN108989047A (zh) * | 2018-07-19 | 2018-12-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与系统 |
CN109245903A (zh) * | 2018-09-29 | 2019-01-18 | 北京信安世纪科技股份有限公司 | 双方协同生成sm2算法的签名方法、装置及存储介质 |
CN109818730A (zh) * | 2019-03-06 | 2019-05-28 | 矩阵元技术(深圳)有限公司 | 盲签名的获取方法、装置和服务器 |
WO2019137566A2 (en) * | 2019-04-29 | 2019-07-18 | Alibaba Group Holding Limited | Methods and devices for validating transaction in blockchain system |
Non-Patent Citations (4)
Title |
---|
Secure Communication and the Leak Proof Positioning Technology of Wireless Sensor Based on Region Partition;Xu Min etal.;《International Conference on Electromechanical Control Technology and Transportation》;20151231;全文 * |
SM2密码算法使用规范;中国国家标准化委员会;《中华人民共和国国家标准》;20171229;全文 * |
一种有效的基于身份的隐藏签名认证方案;侍伟敏;《华中科技大学学报(自然科学版)》;20111031;第39卷(第10期);全文 * |
基于双线性对的无证书群签名方案的研究;陈亚萌;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20181231(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110535635A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535635B (zh) | 一种支持信息隐藏的协同签名方法与系统 | |
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN109274503B (zh) | 分布式协同签名方法及分布式协同签名装置、软盾系统 | |
CN108989047B (zh) | 一种基于sm2算法的通信双方协同签名方法与系统 | |
CN109088726B (zh) | 基于sm2算法的通信双方协同签名及解密方法和系统 | |
US10015019B2 (en) | Production of cryptographic signatures | |
CN110011803B (zh) | 一种轻量级sm2两方协同生成数字签名的方法 | |
CN109450640B (zh) | 基于sm2的两方签名方法及系统 | |
CN110535636B (zh) | 一种轻量级的基于sm2算法的协同签名方法与装置 | |
CN113158258B (zh) | 一种基于椭圆曲线的协同签名方法、装置和系统 | |
CN112187469B (zh) | 一种基于密钥因子的sm2多方协同数字签名方法和系统 | |
CN111010285B (zh) | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 | |
CN112632630A (zh) | 一种基于sm2的协同签名计算方法及装置 | |
CN117118617B (zh) | 一种基于模分量同态的分布式门限加解密方法 | |
CN113742670A (zh) | 多方协同解密方法和装置 | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
CN109962783B (zh) | 基于递进计算的sm9数字签名协同生成方法及系统 | |
EP4423968A1 (en) | Threshold signature scheme | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及系统 | |
CN108964923B (zh) | 隐藏私钥的交互式sm2签名方法、系统和终端 | |
CN110401524B (zh) | 一种借助同态加密的包含秘密的数的协同生成方法及系统 | |
CN110943826B (zh) | 一种基于sm2算法的拆分密钥签名方法与系统 | |
CN116865970A (zh) | 基于国密算法的多方协同密钥产生和数字签名方法及系统 | |
CN117134900A (zh) | 一种实现非对称加密的结构及控制方法 | |
CN111274613B (zh) | 迭代式sm2数字签名生成方法、系统、介质和设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |