CN111147246B - 一种基于sm2的多方协同签名方法及系统 - Google Patents
一种基于sm2的多方协同签名方法及系统 Download PDFInfo
- Publication number
- CN111147246B CN111147246B CN202010100376.5A CN202010100376A CN111147246B CN 111147246 B CN111147246 B CN 111147246B CN 202010100376 A CN202010100376 A CN 202010100376A CN 111147246 B CN111147246 B CN 111147246B
- Authority
- CN
- China
- Prior art keywords
- communication terminal
- terminal device
- signature
- elliptic curve
- user
- 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
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/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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于SM2的多方协同签名方法及系统,属于数字签名技术领域。该方法包括:得到多个通信端装置各自的子私钥作为用户的多方私钥,并利用用户的多方私钥生成用户公钥;利用所述用户公钥将待签名消息M生成消息摘要e,并基于SM2根据所述消息摘要e生成第一部分签名;利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名,得到消息M的完整签名。同时公开了与该签名方法构成同一发明构思的签名系统。本发明解决了现有技术难以保证用户私钥独立签名时的密钥安全性问题。
Description
技术领域
本发明涉及数字签名技术领域,尤其涉及一种基于SM2的多方协同签名方法及系统。
背景技术
随着国家大力推广国产自主密码算法的战略,公钥密码标准算法SM2在金融、电力、交通等重要信息系统获得了广泛应用。随着移动互联网的普及,以及以区块链为基础的数字货币的应用,需要多方对某个文件进行联合签名(有时也称为多重签名,门限签名),比如企业中的多个领导或机构对于文件的电子签章,联盟链中多机构的联合签名,以及数字货币中的的钱包保护等。
现在多方签名的方式主要是以用户各自的私钥进行签名,这样签名值就会随着签名者数量的增加而增加,而已有的一些多重签名方案是通过其它方式另行设计,与现在的国家标准SM2完全不同,安全性没有保证且不符合对密码算法使用的要求。另外,用户各自私钥独立签名,在移动终端中存在使用存储密钥泄露的风险。
发明内容
鉴于上述的分析,本发明旨在提供一种基于SM2的多方协同签名方法及系统,以解决现有多方签名技术难以保证用户各自私钥独立签名时密钥安全性及不符合国家标准的密码算法使用要求问题。
本发明的目的主要是通过以下技术方案实现的:
一方面,本发明提供了一种基于SM2的多方协同签名方法,包括以下步骤:得到多个通信端装置各自的子私钥作为用户的多方私钥,并利用用户的多方私钥生成用户公钥;利用所述用户公钥将待签名消息M生成消息摘要e,并基于SM2根据所述消息摘要e生成第一部分签名;利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名,得到消息M的完整签名。
进一步地,所述通信端装置的数量为m;所述得到多个通信端装置各自的子私钥作为用户的多方私钥包括:
若用户私钥未确定,m个通信端装置分别随机产生位于[1,n-1]之间的随机数,所产生的m个随机数作为m个通信端装置各自的子私钥d1,d2,…,dm-1,dm;
若用户私钥已确定,m-1个通信端装置分别随机产生位于[1,n-1]之间的随机数,所产生的m-1个随机数作为m-1个通信端装置各自的子私钥d1,d2,…,dm-1,第m个通信端装置根据公式dm=d1 -1d2 -1...dm-1 -1(d+1)modn计算得到子私钥dm;其中,d为用户私钥,d∈[1,n-2],n为G的阶,G为SM2的椭圆曲线基点,mod为求模运算。
进一步地,所述利用用户的多方私钥生成用户公钥包括:第1个通信端装置根据公式P1=[d1]G计算得到椭圆曲线点P1,并将P1发送给第2个通信端装置;对于第2个通信端装置至第m-1个通信端装置,依次执行Pi=[di]Pi-1,i=2……m,并将Pi发送给第i+1个通信端装置,直至第m个通信端装置接收到Pm-1,并根据公式P=[dm]Pm-1-G计算得到用户公钥P;其中,G为SM2的椭圆曲线基点。
进一步地,第m个通信端装置基于SM2根据所述消息摘要e生成第一部分签名r,并将第一部分签名r发送给第1个通信端装置;
第m个通信端装置至第2个通信端装置依次根据自身产生的随机数、接收的ti和子私钥dm分别计算ti-1直至得到t1发送给第1个通信端;其中,ti-1为第i个通信端装置计算得到后传送给第i-1个通信端装置的参数,i=m,m-1,…,2,tm=r;
第1个通信端装置根据自身产生的随机数、接收的t1和第一部分签名r生成第二部分签名s,得到消息M的完整签名(r,s)。
进一步地,利用所述用户公钥将待签名消息M生成消息摘要e包括:
第m个通信端装置将杂凑Z和待签名消息M拼接后输入密码杂凑函数后得到消息摘要e,公式如下:
e=H256(Z||M);
其中,H256()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑。
进一步地,所述基于SM2根据所述消息摘要e生成第一部分签名包括:
第m个通信端装置根据公式(x,y)=[dm]Rm-1+[km]G计算得到椭圆曲线点(x,y),若(x,y)≠O则根据公式r=(e+x)modn计算得到r;若r不等于0则作为第一部分签名r;
其中,dm为第m个通信端装置的子私钥,km为第m个通信端装置产生的随机数,km∈[1,n-1],Rm-1为第m-1个通信端装置计算得到的椭圆曲线点,G为SM2的椭圆曲线基点,n为G的阶,mod为求模运算。
进一步地,所述第m-1个通信端装置计算得到椭圆曲线点Rm-1的过程如下:
第1个通信端装置根据公式R1=[k1]G计算得到满足椭圆曲线方程的椭圆曲线点R1,并将R1发送给第2个通信端装置;对于第2个通信端装置到第m-1个通信端装置,依次执行Ri=[di]Ri-1+[ki]G,将满足椭圆曲线方程的椭圆曲线点Ri发送给第i+1个通信端装置,直至计算得到满足椭圆曲线方程的椭圆曲线点Rm-1发送给第m个通信端装置;其中,di为第i个通信端装置的子私钥,ki为第i个通信端装置产生的随机数,ki∈[1,n-1],i=2,3,…,m-1,G为SM2的椭圆曲线基点。
进一步地,所述利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名包括:
第m个通信端装置至第2个通信端装置依次根据自身产生的随机数、接收的ti和子私钥dm通过如下公式计算得到不等于0的ti-1直至得到t1:
ti-1=dm -1(ki+ti)modn;
其中,dm为第m个通信端的子私钥,ki为第i个通信端装置产生的随机数,ki∈[1,n-1],i=m,m-1,…,2,n为G的阶,mod为求模运算;
若t1不等于0且r不等于0,则第1个通信端根据自身产生的随机数、接收的t1和第一部分签名r通过如下公式生成s:
s=(d1 -1(k1+t1)-r)modn;
其中,d1为第1个通信端的子私钥,k1为第1个通信端产生的随机数,k1∈[1,n-1],n为G的阶,mod为求模运算;若s不等于0,则得到完整签名(r,s)并输出。
进一步地,m个通信端装置共享SM2的椭圆曲线参数E(Fp)、(p,a,b,G,n,h),其中,椭圆曲线E为定义在包含p个元素的素域Fp上的椭圆曲线,E(Fp)为Fp上椭圆曲线E的包括无穷远点O的所有有理点组成的集合,a和b为Fp中的元素,G为椭圆曲线E上n阶的基点,h为余因子。
另一方面,本发明提供了一种基于SM2的多方协同签名系统,其特征在于,包括多个通信端装置,用于生成并存储各自的子私钥;其中,所述通信端装置的数量为m;
所述各自的子私钥为用户的多方私钥,用于生成用户公钥;
第m个通信端装置,用于基于SM2根据待签名消息M的消息摘要e生成第一部分签名r;
第m个通信端装置到第2个通信端装置,依次用于根据自身产生的随机数、接收的ti和子私钥dm分别计算ti-1直至得到t1;其中,ti-1为第i-1个通信端装置接收到的第i个通信端装置计算输出参数,i=m,m-1,…,2,tm=r;
第1个通信端装置,用于接收第一部分签名r和t1,并根据自身产生的随机数、接收的t1和第一部分签名r生成第二部分签名s,得到消息M的完整签名。
本技术方案有益效果如下:本发明实施例采用将用户私钥分割存放的多方协同签名方案,即将私钥分割存放于多个通信端装置,在进行SM2签名运算时,多个通信端装置利用各自存放的子私钥进行签名运算,最后由一个通信端装置来合成签名,在整个运算过程中不会泄露私钥的任何信息,各个通信端装置也不会获取到其它端存放的任何子私钥,从而有效避免了因单个设备的密钥管理不善而导致私钥泄露。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例的基于SM2的多方协同签名方法的流程图。
图2为本发明实施例的通信端装置计算得到椭圆曲线点的流程图。
图3为本发明实施例的通信端装置生成第二部分签名的流程图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
缩略语和关键术语:
Fp:包含p个元素的素域。
E(Fp):Fp上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。
(p,a,b,G,n,h):SM2算法的曲线参数,其中,p为一个256比特长度的素数;a和b为Fp中的元素,用于定义Fp上的一条椭圆曲线E;G为基点,用坐标表示G=(xG,yG);n为G的阶;h为余因子。
Hv():消息摘要长度为v比特的密码杂凑函数,该杂凑函数使用SM3。
IDA:用户A的身份标识。
ENTLA:IDA的长度,ENTLA的长度为2个字节;
mod n:模n运算。
O:椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。
PA:用户A的公钥,用坐标表示PA=(xA,yA)。
x||y:x与y的拼接,其中x、y是比特串或字节串。
Z:关于用户的身份标识、部分椭圆曲线系统参数和用户公钥的杂凑值,具体为Z=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)。
[k]P:椭圆曲线上点P的k倍点,即,k是正整数。
本发明的技术基础:假设用户身份为U,其用户公钥为P,其用户私钥为d,用户私钥分割存放于m(m≥2)个通信端装置,分别称为端1、端2、…、端m,每个通信端装置对应的私钥分割分别为d1,d2,...,dm-1,dm,这里d∈[1,n-2],di∈[1,n-1],i=1,2,3,…,m-1,m。
本发明的一个具体实施例,如图1所示,公开了一种基于SM2的多方协同签名方法,包括以下步骤:
S1,得到多个通信端装置各自的子私钥作为用户的多方私钥,并利用用户的多方私钥生成用户公钥;
S2,利用所述用户公钥将待签名消息M生成消息摘要e,并基于SM2根据所述消息摘要e生成第一部分签名;
S3,利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名,得到消息M的完整签名。
由上述步骤可见,本发明技术方案的多方协同签名包含用户公私钥对生成和签名计算两个过程。与现有技术相比,本发明实施例采用多方联合协同签名的方案,将用户私钥分割存储于多个通信端装置,可以用于数字货币的钱包保护,也可以用于企事业单位多个领导和部门的联合签名,同时可以用于移动端等设备私钥的保护。在进行SM2签名运算时,多个通信端装置利用各自存放的子私钥进行签名运算,最后由一个通信端装置来合成签名。本技术方案的有益效果是在整个运算过程不会泄露私钥的任何信息,各个通信端装置也不会获取到其它端存放的任何私钥信息,从而有效避免了因单个设备端的密钥管理不善而导致私钥泄露。
本发明的一个具体实施例,所述通信端装置的数量为m;所述得到多个通信端装置各自的子私钥作为用户的多方私钥包括:
若用户私钥未确定,m个通信端装置分别随机产生位于[1,n-1]之间的随机数,所产生的m个随机数作为m个通信端装置各自的子私钥d1,d2,…,dm-1,dm;
需要说明的是,装置1到装置m分别随机生成d1,d2,…,dm-1,dm,这时对应的用户私钥d=(d1d2...dm-1)modn。
若用户私钥已确定,m-1个通信端装置分别随机产生位于[1,n-1]之间的随机数,所产生的m-1个随机数作为m-1个通信端装置各自的子私钥d1,d2,…,dm-1,第m个通信端装置根据公式dm=d1 -1d2 -1...dm-1 -1(d+1)modn计算得到子私钥dm;其中,d为用户私钥,d∈[1,n-2],n为G的阶,G为SM2的椭圆曲线基点,mod为求模运算。
本发明的一个具体实施例,所述利用用户的多方私钥生成用户公钥包括:第1个通信端装置根据公式P1=[d1]G计算得到椭圆曲线点P1,并将P1发送给第2个通信端装置;对于第2个通信端装置至第m-1个通信端装置,依次执行Pi=[di]Pi-1,i=2……m,并将Pi发送给第i+1个通信端装置,直至第m个通信端装置接收到Pm-1,并根据公式P=[dm]Pm-1-G计算得到用户公钥;其中,G为SM2的椭圆曲线基点。
优选地,用户公钥生成方法为:
1:端1计算P1=[d1]G,并将P1发送给端2;
2:对于端i=2,3,…,m-1,执行:
2.1:计算Pi=[di]Pi-1;
2.2:将Pi发送给端i+1;
3:端m计算用户公钥P=[dm]Pm-1-G。
本发明的一个具体实施例,第m个通信端装置基于SM2根据所述消息摘要e生成第一部分签名r,并将第一部分签名r发送给第1个通信端装置;
第m个通信端装置至第2个通信端装置依次根据自身产生的随机数、接收的ti和子私钥dm分别计算ti-1直至得到t1发送给第1个通信端;其中,ti-1为第i个通信端装置计算得到后传送给第i-1个通信端装置的参数,i=m,m-1,…,2,tm=r;
第1个通信端装置根据自身产生的随机数、接收的t1和第一部分签名r生成第二部分签名s,得到消息M的完整签名(r,s)。
本发明的一个具体实施例,利用所述用户公钥将待签名消息M生成消息摘要e包括:
第m个通信端装置将杂凑Z和待签名消息M拼接后输入密码杂凑函数后得到消息摘要e,公式如下:
e=H256(Z||M);
其中,H256()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑。
需要说明的是,消息摘要e的计算可在m个通信端装置中任意一个,若非第m个通信端计算时,只需要将e传送第m个通信端装置即可。
本发明的一个具体实施例,所述基于SM2根据所述消息摘要e生成第一部分签名包括:
第m个通信端装置根据公式(x,y)=[dm]Rm-1+[km]G计算得到椭圆曲线点(x,y),若(x,y)≠O则根据公式r=(e+x)modn计算得到r;若r不等于0则作为第一部分签名r;
其中,dm为第m个通信端装置的子私钥,km为第m个通信端装置产生的随机数,km∈[1,n-1],Rm-1为第m-1个通信端装置计算得到的椭圆曲线点,G为SM2的椭圆曲线基点,n为G的阶,mod为求模运算。
具体地,私钥分割存放于m(m≥2)个通信端装置,每个通信端装置对应的子私钥分别为d1,d2,…,dm-1,dm。m方联合对消息M进行签名,联合签名的过程分为第一部分签名的计算过程和第二部分签名的计算过程,其中第一部分签名r的计算过程如下:
1:端1产生随机数k1∈[1,n-1],计算R1=[k1]G;并将R1发送给端2;
2:对于端i=2,3,…,m-1,执行
2.1:产生随机数ki∈[1,n-1],计算Ri=[di]Ri-1+[ki]G;
2.2:将Ri发送给端i+1;
3:端m按照SM2的描述计算e=H256(Z||M),并将e转换为整数;随机产生km∈[1,n-1],计算(x,y)=[dm]R2+[km]G,计算r=(e+x)modn。
本发明的一个具体实施例,所述第m-1个通信端装置计算得到椭圆曲线点Rm-1的过程如下:
S21,第1个通信端装置根据公式R1=[k1]G计算得到满足椭圆曲线方程的椭圆曲线点R1,并将R1发送给第2个通信端装置;
S22,对于第2个通信端装置到第m-1个通信端装置,依次执行Ri=[di]Ri-1+[ki]G,将满足椭圆曲线方程的椭圆曲线点Ri发送给第i+1个通信端装置,直至计算得到满足椭圆曲线方程的椭圆曲线点Rm-1发送给第m个通信端装置;
其中,di为第i个通信端装置的子私钥,ki为第i个通信端装置产生的随机数,ki∈[1,n-1],i=2,3,…,m-1,G为SM2的椭圆曲线基点。
本发明的一个具体实施例,所述利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名包括:
S31,第m个通信端装置至第2个通信端装置依次根据自身产生的随机数、接收的ti和子私钥dm通过如下公式计算得到不等于0的ti-1直至得到t1:
ti-1=dm -1(ki+ti)modn;
其中,dm为第m个通信端的子私钥,ki为第i个通信端装置产生的随机数,ki∈[1,n-1],i=m,m-1,…,2,n为G的阶,mod为求模运算;
S32,若t1不等于0且r不等于0,则第1个通信端根据自身产生的随机数、接收的t1和第一部分签名r通过如下公式生成s:
s=(d1 -1(k1+t1)-r)modn;
其中,d1为第1个通信端的子私钥,k1为第1个通信端产生的随机数,k1∈[1,n-1],n为G的阶,mod为求模运算;若s不等于0,则得到完整签名(r,s)并输出。
具体地,联合签名的过程分为第一部分签名的计算过程和第二部分签名的计算过程,其中第二部分签名s的计算过程如下:
1:令tm=r;
2:对于端i=m,m-1,…,2,执行
2.1:计算ti-1=dm -1(ki+ti)modn;
2.2:将ti-1发送给端i-1;
3:端1计算s=(d1 -1(k1+t1)-r)modn。
以上第一部分签名的计算和第二部分签名的计算完成了对消息M的签名,签名值为(r,s)。
本发明的一个具体实施例,m个通信端装置共享SM2的椭圆曲线参数E(Fp)、(p,a,b,G,n,h),其中,椭圆曲线E为定义在包含p个元素的素域Fp上的椭圆曲线,E(Fp)为Fp上椭圆曲线E的包括无穷远点O的所有有理点组成的集合,a和b为Fp中的元素,G为椭圆曲线E上n阶的基点,h为余因子。
本发明的一个具体实施例,公开了一种基于SM2的多方协同签名系统,包括多个通信端装置,用于生成并存储各自的子私钥;其中,所述通信端装置的数量为m;
所述各自的子私钥为用户的多方私钥,用于生成用户公钥;
第m个通信端装置,用于基于SM2根据待签名消息M的消息摘要e生成第一部分签名r;
第m个通信端装置到第2个通信端装置,依次用于根据自身产生的随机数、接收的ti和子私钥dm分别计算ti-1直至得到t1;其中,ti-1为第i-1个通信端装置接收到的第i个通信端装置计算输出参数,i=m,m-1,…,2,tm=r;
第1个通信端装置,用于接收第一部分签名r和t1,并根据自身产生的随机数、接收的t1和第一部分签名r生成第二部分签名s,得到消息M的完整签名。
与现有技术相比,本发明实施例能够保护用户私钥的安全存储,将用户私钥分割存储,并且在多个存储方相互交互、协作计算签名,并且保证私钥不会泄露,任意方也不会由交互内容得到完整私钥。
具体用例来说,以m=3为例,进一步说明多方协同签名的执行过程。待签名的消息为M,为了获取消息M的数字签名(r,s),通信端A、通信端B、通信端C实现以下运算步骤。
(1)端A执行
A1:用产生随机数k1∈[1,n-1];
A2:计算椭圆曲线点R1=[k1]G,并将R1发送给端B;
(2)端B执行
B1:按SM2算法给出的方法,验证R1是否满足椭圆曲线方程,若不满足则报错并退出;
B2:用随机数发生器产生随机数k2∈[1,n-1];
B3:计算椭圆曲线点R2=[d2]R1+[k2]G,若R2=O则返回B2;否则将R2发送给端C;
(3)端C执行
C1:按SM2算法给出的方法,验证R2是否满足椭圆曲线方程,若不满足则报错并退出;
C2:按照SM2的描述计算e=H256(Z||M),并将e转换为整数;
C3:用随机数发生器产生随机数k3∈[1,n-1];
C4:计算椭圆曲线点(x,y)=[d3]R2+[k3]G,若(x,y)=O则返回C2;否则按SM2算法给出的方法将x的数据类型转换为整数;
C5:计算r=(e+x)modn,若r=0则返回C2;
C6:计算t=d3 -1(k3+r)modn,若t=0则返回C2;
C7:将r和t发送给端B;
(4)端B执行
B4:若r=0或t=0则报错并退出;
B5:计算u=d2 -1(k2+t)modn,若u=0则报错并退出;
B6:将r和u发送给端A;
(5)端A执行
A3:若r=0或u=0则报错并退出;
A4:计算s=(d1 -1(k1+u)-r)modn,若s=0则报错并退出;
A5:按SM2算法将r、s的数据类型转换为字节串,消息M的签名为(r,s)。
综上所述,本发明公开了一种基于SM2的多方协同签名方法及系统,该方法包括以下步骤:得到多个通信端装置各自的子私钥作为用户的多方私钥,并利用用户的多方私钥生成用户公钥;利用所述用户公钥将待签名消息M生成消息摘要e,并基于SM2根据所述消息摘要e生成第一部分签名;利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名,得到消息M的完整签名。本发明采用将私钥分割存放的多方协同签名方案,将私钥信息分割存放于多个存储端,在进行SM2签名运算时,多个存储端利用各自存放的私钥进行签名运算,最后由一端来合成签名,在整个运算过程中不会泄露私钥的任何信息,各个存储端也不会获取到其它端存放的任何私钥信息,从而有效避免了因单个设备的密钥管理不善而导致私钥泄露。
本领域技术人员可以理解,实现上述实施例中方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (5)
1.一种基于SM2的多方协同签名方法,其特征在于,包括以下步骤:
得到多个通信端装置各自的子私钥作为用户的多方私钥,并利用用户的多方私钥生成用户公钥,包括:第1个通信端装置根据公式P1=[d1]G计算得到椭圆曲线点P1,并将P1发送给第2个通信端装置;对于第2个通信端装置至第m-1个通信端装置,依次执行Pi=[di]Pi-1,i=2……m,并将Pi发送给第i+1个通信端装置,直至第m个通信端装置接收到Pm-1,并根据公式P=[dm]Pm-1-G计算得到用户公钥P;其中,G为SM2的椭圆曲线基点;
利用所述用户公钥将待签名消息M生成消息摘要e,并基于SM2根据所述消息摘要e生成第一部分签名,包括,所述通信端装置的数量为m,第m个通信端装置根据公式(x,y)=[dm]Rm-1+[km]G计算得到椭圆曲线点(x,y),若(x,y)≠O则根据公式r=(e+x)modn计算得到r;若r不等于0则作为第一部分签名r;其中,dm为第m个通信端装置的子私钥,km为第m个通信端装置产生的随机数,km∈[1,n-1],Rm-1为第m-1个通信端装置计算得到的椭圆曲线点,n为G的阶,mod为求模运算;所述第m-1个通信端装置计算得到椭圆曲线点Rm-1的过程如下:第1个通信端装置根据公式R1=[k1]G计算得到满足椭圆曲线方程的椭圆曲线点R1,并将R1发送给第2个通信端装置;对于第2个通信端装置到第m-1个通信端装置,依次执行Ri=[di]Ri-1+[ki]G,将满足椭圆曲线方程的椭圆曲线点Ri发送给第i+1个通信端装置,直至计算得到满足椭圆曲线方程的椭圆曲线点Rm-1发送给第m个通信端装置;其中,di为第i个通信端装置的子私钥,ki为第i个通信端装置产生的随机数,ki∈[1,n-1],i=2,3,…,m-1;
利用多个通信端装置产生的随机数、各自的子私钥和所述第一部分签名生成第二部分签名,得到消息M的完整签名,包括:第m个通信端装置基于SM2根据所述消息摘要e生成第一部分签名r,并将第一部分签名r发送给第1个通信端装置;
第m个通信端装置至第2个通信端装置依次根据自身产生的随机数、接收的ti和子私钥di分别计算ti-1直至得到t1发送给第1个通信端;其中,ti-1为第i个通信端装置计算得到后传送给第i-1个通信端装置的参数,i=m,m-1,…,2,tm=r;通过如下公式计算得到不等于0的ti-1直至得到t1:ti-1=di -1(ki+ti)modn;其中,di为第m个通信端的子私钥,ki为第i个通信端装置产生的随机数,ki∈[1,n-1],i=m,m-1,…,2,n为G的阶,mod为求模运算;
若t1不等于0且r不等于0,则第1个通信端装置根据自身产生的随机数、接收的t1和第一部分签名r如下公式生成生成s:
s=(d1 -1(k1+t1)-r)modn;
其中,d1为第1个通信端的子私钥,k1为第1个通信端产生的随机数,k1∈[1,n-1],n为G的阶,mod为求模运算;若s不等于0,则得到消息M的完整签名(r,s)。
2.根据权利要求1所述的方法,其特征在于,所述得到多个通信端装置各自的子私钥作为用户的多方私钥包括:
若用户私钥未确定,m个通信端装置分别随机产生位于[1,n-1]之间的随机数,所产生的m个随机数作为m个通信端装置各自的子私钥d1,d2,...,dm-1,dm;
若用户私钥已确定,m-1个通信端装置分别随机产生位于[1,n-1]之间的随机数,所产生的m-1个随机数作为m-1个通信端装置各自的子私钥d1,d2,...,dm-1,第m个通信端装置根据公式dm=d1 -1d2 -1...dm-1 -1(d+1)modn计算得到子私钥dm;其中,d为用户私钥,d∈[1,n-2],n为G的阶,G为SM2的椭圆曲线基点,mod为求模运算。
3.根据权利要求1或2所述的方法,其特征在于,利用所述用户公钥将待签名消息M生成消息摘要e包括:
第m个通信端装置将杂凑Z和待签名消息M拼接后输入密码杂凑函数后得到消息摘要e,公式如下:
e=H256(Z||M);
其中,H256()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑。
4.根据权利要求1或2所述的方法,其特征在于,m个通信端装置共享SM2的椭圆曲线参数E(Fp)、(p,a,b,G,n,h),其中,椭圆曲线E为定义在包含p个元素的素域Fp上的椭圆曲线,E(Fp)为Fp上椭圆曲线E的包括无穷远点O的所有有理点组成的集合,a和b为Fp中的元素,G为椭圆曲线E上n阶的基点,h为余因子。
5.一种基于SM2的多方协同签名系统,其特征在于,所述系统用以实现权利要求1-4任一项所述的基于SM2的多方协同签名方法,包括多个通信端装置,用于生成并存储各自的子私钥;
所述各自的子私钥为用户的多方私钥,用于生成用户公钥;
第m个通信端装置,用于基于SM2根据待签名消息M的消息摘要e生成第一部分签名r;
第m个通信端装置到第2个通信端装置,依次用于根据自身产生的随机数、接收的ti和子私钥di分别计算ti-1直至得到t1;其中,ti-1为第i-1个通信端装置接收到的第i个通信端装置计算输出参数,i=m,m-1,…,2,tm=r;
第1个通信端装置,用于接收第一部分签名r和t1,并根据自身产生的随机数、接收的t1和第一部分签名r生成第二部分签名s,得到消息M的完整签名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010100376.5A CN111147246B (zh) | 2020-02-18 | 2020-02-18 | 一种基于sm2的多方协同签名方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010100376.5A CN111147246B (zh) | 2020-02-18 | 2020-02-18 | 一种基于sm2的多方协同签名方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111147246A CN111147246A (zh) | 2020-05-12 |
CN111147246B true CN111147246B (zh) | 2023-08-08 |
Family
ID=70527743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010100376.5A Active CN111147246B (zh) | 2020-02-18 | 2020-02-18 | 一种基于sm2的多方协同签名方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111147246B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111754233B (zh) * | 2020-06-29 | 2023-11-07 | 兴唐通信科技有限公司 | 基于多方签名的电子支付方法和系统 |
CN112003693B (zh) * | 2020-07-31 | 2021-08-27 | 大陆云盾电子认证服务有限公司 | 一种基于sm2的多方参与数字签名方法及系统 |
CN112152808B (zh) * | 2020-09-27 | 2022-11-11 | 成都国泰网信科技有限公司 | 一种基于sm2算法的多方协同数字签名方法 |
CN112152807B (zh) * | 2020-09-27 | 2022-11-11 | 成都国泰网信科技有限公司 | 一种基于sm2算法的两方协同数字签名方法 |
CN112311772B (zh) * | 2020-10-12 | 2022-06-14 | 华中师范大学 | 基于Hyperledger的跨域证书管理系统及方法 |
CN112737777B (zh) * | 2020-12-29 | 2023-01-10 | 北京百度网讯科技有限公司 | 基于密钥的门限签名和验签方法、装置、设备和介质 |
CN113259095B (zh) * | 2021-04-27 | 2022-12-20 | 博雅中科(北京)信息技术有限公司 | 协同公钥生成方法、多方协同签名方法和系统 |
CN113158176B (zh) * | 2021-06-02 | 2022-08-02 | 工业信息安全(四川)创新中心有限公司 | 基于sm2签名的公钥解析方法、装置、设备及存储介质 |
CN113468580B (zh) * | 2021-07-23 | 2022-08-09 | 建信金融科技有限责任公司 | 多方协同签名的方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683102A (zh) * | 2013-11-29 | 2015-06-03 | 上海复旦微电子集团股份有限公司 | 一种sm2签名计算方法和装置 |
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN107248909A (zh) * | 2017-03-16 | 2017-10-13 | 北京百旺信安科技有限公司 | 一种基于sm2算法的无证书安全签名方法 |
CN108199835A (zh) * | 2018-01-19 | 2018-06-22 | 北京江南天安科技有限公司 | 一种多方联合私钥解密方法及系统 |
CN109450640A (zh) * | 2018-10-24 | 2019-03-08 | 成都卫士通信息产业股份有限公司 | 基于sm2的两方签名方法及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
-
2020
- 2020-02-18 CN CN202010100376.5A patent/CN111147246B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683102A (zh) * | 2013-11-29 | 2015-06-03 | 上海复旦微电子集团股份有限公司 | 一种sm2签名计算方法和装置 |
CN107248909A (zh) * | 2017-03-16 | 2017-10-13 | 北京百旺信安科技有限公司 | 一种基于sm2算法的无证书安全签名方法 |
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN108199835A (zh) * | 2018-01-19 | 2018-06-22 | 北京江南天安科技有限公司 | 一种多方联合私钥解密方法及系统 |
CN109450640A (zh) * | 2018-10-24 | 2019-03-08 | 成都卫士通信息产业股份有限公司 | 基于sm2的两方签名方法及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111147246A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111147246B (zh) | 一种基于sm2的多方协同签名方法及系统 | |
Menezes et al. | Handbook of applied cryptography | |
CN111314089B (zh) | 一种基于sm2的两方协同签名方法及解密方法 | |
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
CN110011802B (zh) | 一种高效的sm9两方协同生成数字签名的方法及系统 | |
CN113364576B (zh) | 一种基于区块链的数据加密存证与共享方法 | |
US10333719B2 (en) | Production of cryptographic signatures | |
Wang et al. | Privacy-preserving public auditing for data storage security in cloud computing | |
Liu et al. | Privacy-preserving outsourced calculation on floating point numbers | |
US8422670B2 (en) | Password authentication method | |
TWI807125B (zh) | 用以分配數位簽署資料之份額的電腦實施系統及方法 | |
WO2006024042A2 (en) | Provisional signature schemes | |
Noether et al. | Monero is not that mysterious | |
US11616641B2 (en) | Computer implemented system and method for sharing a common secret | |
CN112422288A (zh) | 一种抗能量分析攻击的基于sm2算法的两方协同签名方法 | |
CN111010285A (zh) | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 | |
Ruan et al. | Provably leakage-resilient password-based authenticated key exchange in the standard model | |
CN111147254B (zh) | 两方协同的EdDSA数字签名生成方法和装置 | |
CN113918979A (zh) | 基于移动key密钥保护技术的sm2签名方法 | |
CN111723405A (zh) | 一种去中心化的多重数字签名/电子签章方法 | |
Huang et al. | Dynamic Group Signature Scheme on Lattice with Verifier-local Revocation | |
CN114205081B (zh) | 一种保护用户隐私的盲协同签名方法 | |
Fugkeaw et al. | Proxy-assisted digital signing scheme for mobile cloud computing | |
CN116015679B (zh) | 政务云基于sm2数字签名的多云管理认证系统 | |
Sain et al. | An improved two factor user authentication framework based on captcha and visual secret sharing |
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 |