CN113259095B - 协同公钥生成方法、多方协同签名方法和系统 - Google Patents

协同公钥生成方法、多方协同签名方法和系统 Download PDF

Info

Publication number
CN113259095B
CN113259095B CN202110460801.6A CN202110460801A CN113259095B CN 113259095 B CN113259095 B CN 113259095B CN 202110460801 A CN202110460801 A CN 202110460801A CN 113259095 B CN113259095 B CN 113259095B
Authority
CN
China
Prior art keywords
participant
signature value
participants
party
nth
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
Application number
CN202110460801.6A
Other languages
English (en)
Other versions
CN113259095A (zh
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.)
Boya Zhongke Beijing Information Technology Co ltd
Original Assignee
Boya Zhongke Beijing Information Technology Co ltd
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 Boya Zhongke Beijing Information Technology Co ltd filed Critical Boya Zhongke Beijing Information Technology Co ltd
Priority to CN202110460801.6A priority Critical patent/CN113259095B/zh
Publication of CN113259095A publication Critical patent/CN113259095A/zh
Application granted granted Critical
Publication of CN113259095B publication Critical patent/CN113259095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种协同公钥生成方法、多方协同签名方法和系统,其中方法包括:N个参与方中的每个参与方分别生成自身私钥;第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给第三参与方,如此类推,直至第N参与方接收到N‑1个参与方的协同准公钥时,根据自身私钥和N‑1个参与方的协同准公钥计算N个参与方的协同准公钥;根据N个参与方的协同准公钥计算协同公钥。由此,能够提高协同公钥生成速度,且可以实现更多参与方协同生成协同公钥。

Description

协同公钥生成方法、多方协同签名方法和系统
技术领域
本发明涉及信息安全技术领域,尤其涉及一种多方协同签名时的协同公钥生成方法、多方协同签名方法和系统。
背景技术
数字签名是公钥密码体系中重要的一部分,满足完整性、防篡改、抗抵赖等安全需求,在很多场合有着重要的作用。现有数字签名应用多基于安全密钥载体(如智能USBKey、智能卡、蓝牙key等),用户密钥保存在安全密钥载体内,安全密钥载体由用户自行保管并设置使用密码,当需要签名时,用户将安全密钥载体连接到电脑进行签名操作。
随着移动应用的推广,越来越多的数字签名应用由电脑端迁移至移动端(如手机、平板电脑等),基于安全密钥载体的数字签名需要用户携带安全密钥载体及其与移动端的通信转换头,导致用户体验差,因此去除移动端数字签名的安全密钥载体,并实现安全合规的数字签名是当前亟待解决的问题。
相关技术中,提供了一种分布式签名方法,但是该方法在生成协同公钥时,多倍点运算耗时达到3T(T表示一次多倍点运算耗时),协同公钥生成速度慢;同时,现有分布式签名方法,只支持两个参与方(一个协同签名客户端,一个协同签名服务端),不支持两个参与方以上(一个协同签名客户端,多个协同签名服务端)的场景。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种多方协同签名时的协同公钥生成方法,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合。
本发明的第二个目的在于提出一种多方协同签名方法。
本发明的第三个目的在于提出一种多方协同签名系统。
为达到上述目的,本发明第一方面实施例提出了一种多方协同签名时的协同公钥生成方法,多方包括N个参与方,其中,N为大于等于2的整数,方法包括:N个参与方中的每个参与方分别生成自身私钥;N个参与方中的第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给N个参与方中的第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给N个参与方中的第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至N个参与方中的第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥;根据N个参与方的协同准公钥计算协同公钥。
根据本发明实施例的多方协同签名时的协同公钥生成方法,通过第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥,最后根据N个参与方的协同准公钥计算协同公钥。由此,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合。
根据本发明的一个实施例,协同公钥根据以下公式计算:
P1=[d1+1]G,P2=[d2+1]P1,P3=[d3+1]P2,…,PN=[dN+1]PN-1,P=PN–G;
其中,P为协同公钥,d1、d2、d3、…、dN分别为所述第一参与方的自身私钥、所述第二参与方的自身私钥、所述第三参与方的自身私钥、…、所述第N参与方的自身私钥,P1为所述第一参与方的公钥,P2、P3、…、PN分别为所述两个参与方的协同准公钥、所述三个参与方的协同准公钥、…、所述N个参与方的协同准公钥,G为椭圆曲线E上的n阶基点。
根据本发明的一个实施例,当N等于2时,第二参与方直接计算协同公钥P=[d2+1]P1–G,其中,d2为第二参与方的私钥,P1=[d1+1]G,d1为第一参与方的私钥,G为椭圆曲线E上的n阶基点。
为达到上述目的,本发明第二方面实施例提出了一种多方协同签名方法,包括:上述的协同公钥生成方法,生成协同公钥;N个参与方中的第一参与方对待签名信息进行预处理,获得消息摘要,并将消息摘要发送给N个参与方中的第N参与方;第一参与方生成第一随机数,并根据第一随机数计算第一参与方的第一签名值,以及将第一参与方的第一签名值发送给N个参与方中的第二参与方,第二参与方生成第二随机数,并根据自身私钥、第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,以及将第二参与方的第一签名值发送给N个参与方中的第三参与方,如此类推,直至N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,生成第N随机数,并根据自身私钥、第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值;第N参与方对第N参与方的第一签名值和消息摘要计算得到待签名消息第一签名值;在确定待签名消息第一签名值不为零时,第N参与方将待签名消息第一签名值发送给第一参与方;第N参与方根据待签名消息第一签名值、第N随机数和自身私钥计算第N参与方的第二签名值,并将第N参与方的第二签名值发送给N个参与方中的第N-1参与方,第N-1参与方根据第N参与方的第二签名值、第N-1随机数和自身私钥计算第N-1参与方的第二签名值,并将第N-1参与方的第二签名值发送给N个参与方中的第N-2参与方,如此类推,直至第一参与方接收到第二参与方的第二签名值时,根据第二参与方的第二签名值、待签名消息第一签名值、第一随机数和自身私钥计算待签名消息第二签名值;在确定待签名消息第二签名值不为零时,第一参与方将待签名消息第一签名值和待签名消息第二签名值作为协同签名结果。
根据本发明实施例的多方协同签名方法,通过上述的协同公钥生成方法,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合;同时,通过第一参与方对待签名信息进行预处理,获得消息摘要,并将消息摘要发送给第N参与方,以及根据自己生成的第一随机数计算第一参与方的第一签名值,并将第一参与方的第一签名值发送给第二参与方,第二参与方根据自身私钥、自己生成的第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,并将第二参与方的第一签名值发送给第三参与方,如此类推,直至第N参与方根据自身私钥、自己生成的第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值,并对第N参与方的第一签名值和消息摘要计算得到待签名消息第一签名值,以及在确定待签名消息第一签名值不为零时,第N参与方将待签名消息第一签名值发送给第一参与方,并根据待签名消息第一签名值、自己生成的第N随机数和自身私钥计算第N参与方的第二签名值,并将第N参与方的第二签名值发送给第N-1参与方,第N-1参与方根据第N参与方的第二签名值、自己生成的第N-1随机数和自身私钥计算第N-1参与方的第二签名值,并将第N-1参与方的第二签名值发送给第N-2参与方,如此类推,直至第一参与方根据第二参与方的第二签名值、待签名消息第一签名值、自己生成的第一随机数和自身私钥计算待签名消息第二签名值,并在确定待签名消息第二签名值不为零时,将待签名消息第一签名值和待签名消息第二签名值作为协同签名结果,由此,获得的待签名消息第二签名值仅有一个第二签名值来源于其它参与方,使得签名过程中交互的数据更少,且可以实现更多参与方协同签名,以提高密钥的安全性,满足对密钥保护要求高的场合。
根据本发明的一个实施例,第一参与方的第一签名值V1=[k1]G,第二参与方的第一签名值V2=(1+d2)*(V1+[k2]G),…,第N-1参与方的第一签名值VN-1=(1+dN-1)*(VN-2+[kN-1]G),第N参与方的第一签名值VN=(1+dN)*(VN-1+[kN]G),其中,k1、k2、…、kN-1、kN分别为第一随机数、第二随机数、…、第N-1随机数、第N随机数,d2、d3、…、dN-1、dN分别为第二参与方的自身私钥、第三参与方的自身私钥、…、第N-1参与方的自身私钥、第N参与方的自身私钥,G为椭圆曲线E上的n阶基点,*表示模乘运算。
根据本发明的一个实施例,第N参与方的第二签名值WN=[kN+r*(1+dN)-1]modn,第N-1参与方的第二签名值WN-1=[kN-1+WN*(1+dN-1)-1]modn,…,第二参与方的第二签名值W2=[k2+W3*(1+d2)-1]modn,待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,k1、k2、…、kN-1、kN分别为第一随机数、第二随机数、…、第N-1随机数、第N随机数,d1、d2、…、dN-1、dN分别为第一参与方的自身私钥、第二参与方的自身私钥、…、第N-1参与方的自身私钥、第N参与方的自身私钥,r为待签名消息第一签名值,*表示模乘运算,mod表示求模运算,(1+dN)-1、(1+dN-1)-1、…、(1+d2)-1、(1+d1)-1分别为(1+dN)在有限域Fq上的模n的逆元、(1+dN-1)在有限域Fq上的模n的逆元、…、(1+d2)在有限域Fq上的模n的逆元、(1+d1)在有限域Fq上的模n的逆元。
为达到上述目的,本发明第三方面实施例提出了一种多方协同签名系统,包括N个参与方,其中,N为大于等于2的整数,N个参与方中的每个参与方分别生成自身私钥;N个参与方中的第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给N个参与方中的第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给N个参与方中的第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至N个参与方中的第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥;第N参与方根据N个参与方的协同准公钥计算协同公钥。
根据本发明实施例的多方协同签名系统,通过第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥,最后根据N个参与方的协同准公钥计算协同公钥。由此,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合。
根据本发明的一个实施例,第N参与方根据以下公式计算协同公钥:
P1=[d1+1]G,P2=[d2+1]P1,P3=[d3+1]P2,…,PN=[dN+1]PN-1,P=PN–G;
其中,P为所述协同公钥,d1、d2、d3、…、dN分别为第一参与方的自身私钥、第二参与方的自身私钥、第三参与方的自身私钥、…、第N参与方的自身私钥,P1为第一参与方的公钥,P2、P3、…、PN分别为两个参与方的协同准公钥、三个参与方的协同准公钥、…、N个参与方的协同准公钥,G为椭圆曲线E上的n阶基点。
根据本发明的一个实施例,N个参与方中的第一参与方对待签名信息进行预处理,获得消息摘要,并将消息摘要发送给N个参与方中的第N参与方;第一参与方生成第一随机数,并根据第一随机数计算第一参与方的第一签名值,以及将第一参与方的第一签名值发送给N个参与方中的第二参与方,第二参与方生成第二随机数,并根据自身私钥、第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,以及将第二参与方的第一签名值发送给N个参与方中的第三参与方,如此类推,直至N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,生成第N随机数,并根据自身私钥、第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值;第N参与方对第N参与方的第一签名值和消息摘要计算得到待签名消息第一签名值;在确定待签名消息第一签名值不为零时,第N参与方将待签名消息第一签名值发送给第一参与方;第N参与方根据待签名消息第一签名值、第N随机数和自身私钥计算第N参与方的第二签名值,并将第N参与方的第二签名值发送给N个参与方中的第N-1参与方,第N-1参与方根据第N参与方的第二签名值、第N-1随机数和自身私钥计算第N-1参与方的第二签名值,并将第N-1参与方的第二签名值发送给N个参与方中的第N-2参与方,如此类推,直至第一参与方接收到第二参与方的第二签名值时,根据第二参与方的第二签名值、待签名消息第一签名值、第一随机数和自身私钥计算待签名消息第二签名值;在确定待签名消息第二签名值不为零时,第一参与方将待签名消息第一签名值和待签名消息第二签名值作为协同签名结果。
根据本发明的一个实施例,第一参与方的第一签名值V1=[k1]G,第二参与方的第一签名值V2=(1+d2)*(V1+[k2]G),…,第N-1参与方的第一签名值VN-1=(1+dN-1)*(VN-2+[kN-1]G),第N参与方的第一签名值VN=(1+dN)*(VN-1+[kN]G),其中,k1、k2、…、kN-1、kN分别为第一随机数、第二随机数、…、第N-1随机数、第N随机数,d2、d3、…、dN-1、dN分别为第二参与方的自身私钥、第三参与方的自身私钥、…、第N-1参与方的自身私钥、第N参与方的自身私钥,G为椭圆曲线E上的n阶基点,*表示模乘运算。
根据本发明的一个实施例,第N参与方的第二签名值WN=[kN+r*(1+dN)-1]modn,第N-1参与方的第二签名值WN-1=[kN-1+WN*(1+dN-1)-1]modn,…,第二参与方的第二签名值W2=[k2+W3*(1+d2)-1]modn,待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,k1、k2、…、kN-1、kN分别为第一随机数、第二随机数、…、第N-1随机数、第N随机数,d1、d2、…、dN-1、dN分别为第一参与方的自身私钥、第二参与方的自身私钥、…、第N-1参与方的自身私钥、第N参与方的自身私钥,r为待签名消息第一签名值,*表示模乘运算,mod表示求模运算,(1+dN)-1、(1+dN-1)-1、…、(1+d2)-1、(1+d1)-1分别为(1+dN)在有限域Fq上的模n的逆元、(1+dN-1)在有限域Fq上的模n的逆元、…、(1+d2)在有限域Fq上的模n的逆元、(1+d1)在有限域Fq上的模n的逆元。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1为根据本发明一个实施例的多方协同签名时的协同公钥生成方法的流程图;
图2为根据本发明一个实施例的多方协同签名方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例提出的多方协同签名时的协同公钥生成方法、多方协同签名方法和系统。
图1为根据本发明一个实施例的多方协同签名时的协同公钥生成方法的流程图。其中,多方包括N个参与方,N为大于等于2的整数,参考图1所示,该多方协同签名时的协同公钥生成方法可包括以下步骤:
步骤S101,N个参与方中的每个参与方分别生成自身私钥。
例如,N个参与方中的每个参与方可采用随机数生成方式分别生成自身私钥。作为一个具体示例,N个参与方可共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上的n阶基点,每个参与方可随机选择一个位于[1,n-2]之间的大整数作为自身私钥。
步骤S102,N个参与方中的第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给N个参与方中的第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给N个参与方中的第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至N个参与方中的第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥。
步骤S103,根据N个参与方的协同准公钥计算协同公钥。
作为一个具体示例,当N等于2时,即多方包括第一参与方A1(如协同签名客户端)和第二参与方A2(如协同签名服务端)时,第一参与方A1和第二参与方A2可共享SM2算法的椭圆曲线参数E(Fq)、G和n,其中,第一参与方A1可随机选择一个位于[1,n-2]之间的大整数d1作为第一参与方A1的自身私钥,第二参与方A2可随机选择一个位于[1,n-2]之间的大整数d2作为第二参与方A2的自身私钥。
而后,第一参与方A1根据自身私钥d1计算第一参与方A1的公钥,即计算自身公钥,可选的,第一参与方A1的公钥P1=[d1+1]G,并将公钥P1发送给第二参与方A2
第二参与方A2根据自身私钥d2和第一参与方的公钥P1计算两个参与方的协同准公钥P2,可选的,第二参与方A2计算获得的两个参与方的协同准公钥P2=[d2+1]P1
最后,第二参与方A2根据两个参与方的协同准公钥P2计算协同公钥P,可选的,协同公钥P=P2–G=[d2+1]P1–G,该协同公钥P即为协同签名对应的实际公钥。
需要说明的是,基于SM2算法的公钥生成时间主要消耗在多倍点运算上,求逆运算以及点加运算与其相比,可以忽略不计,因此可以基于多倍点运算推算出上述示例的协同公钥生成的大致耗时。根据协同公钥P的计算公式可知,协同公钥P仅包括两个多倍点运算:P1和[d2+1]P1,多倍点运算耗时为2T(T表示一次多倍点运算耗时),相较于相关技术中的多倍点耗时达到3T的方法而言,本申请的协同公钥生成方法有效降低了多倍点运算耗时,提高了协同公钥生成速度,协同公钥计算更快。
作为另一个具体示例,当N为大于2的整数时,即多方包括第一参与方A1(如协同签名客户端)、第二参与方A2(如第一协同签名服务端)、第三参与方A3(如第二协同签名服务端)、...、第N参与方时AN(如第N-1协同签名服务端),N个参与方可共享SM2算法的椭圆曲线参数E(Fq)、G和n,其中,第一参与方A1可随机选择一个位于[1,n-2]之间的大整数d1作为第一参与方A1的自身私钥,第二参与方A2可随机选择一个位于[1,n-2]之间的大整数d2作为第二参与方A2的自身私钥,第三参与方A3可随机选择一个位于[1,n-2]之间的大整数d3作为第三参与方A3的自身私钥,...,第N参与方AN可随机选择一个位于[1,n-2]之间的大整数dN作为第N参与方AN的自身私钥。
而后,第一参与方A1根据自身私钥d1计算第一参与方A1的公钥,即计算自身公钥,可选的,第一参与方A1的公钥P1=[d1+1]G,并将公钥P1发送给第二参与方A2
第二参与方A2根据自身私钥d2和第一参与方的公钥P1计算两个参与方的协同准公钥P2,即计算包括第一参与方A1和第二参与方A2的协同准公钥,可选的,第二参与方A2计算获得的两个参与方的协同准公钥P2=[d2+1]P1,并将两个参与方的协同准公钥P2发送给第三参与方A3
第三参与方A3根据自身私钥d3和两个参与方的协同准公钥P2计算三个参与方的协同准公钥P3,即计算包括第一参与方A1至第三参与方A3的协同准公钥,可选的,第三参与方A3计算获得的三个参与方的协同准公钥P3=[d3+1]P2,并将三个参与方的协同准公钥P3发送给第四参与方A4
按照上述方式依次类推。
第N-1参与方AN-1根据自身私钥dN-1和N-2个参与方的协同准公钥PN-2计算N-1个参与方的协同准公钥PN-1,即计算包括第一参与方A1至第N-1参与方AN-1的协同准公钥,可选的,第N-1参与方AN-1计算获得的N-1个参与方的协同准公钥PN-1=[dN-1+1]PN-2,并将N-1个参与方的协同准公钥PN-2发送给第N参与方AN
第N参与方AN根据自身私钥dN和N-1个参与方的协同准公钥PN-1计算N个参与方的协同准公钥PN,即计算包括第一参与方A1至第N参与方AN的协同准公钥,可选的,第N参与方AN计算获得的N个参与方的协同准公钥PN=[dN+1]PN-1
最后,第N参与方AN根据N个参与方的协同准公钥PN计算协同公钥P,可选的,协同公钥P=PN–G=[dN+1]PN-1–G,该协同公钥P即为协同签名对应的实际公钥。
在该示例中,可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合,也就是说,本申请的协同公钥生成方法可扩展支持更多参与方来协同产生公钥,当用户对密钥保护要求较高时,可根据密钥保护要求设置两个以上的协同签名服务端,进而实现三方及以上共同完成公钥生成,保证签名的安全性。
综上所述,根据本发明实施例的多方协同签名时的协同公钥生成方法,通过第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将第两个参与方的协同准公钥发送给第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥,最后根据N个参与方的协同准公钥计算协同公钥。由此,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合。
图2为根据本发明一个实施例的多方协同签名方法的流程图,参考图2所示,该多方协同签名方法可包括以下步骤:
步骤S201,生成协同公钥。
具体的,可以通过前述协同公钥生成方法生成协同公钥,具体参考前述,这里不再赘述。通过前述协同公钥生成方法生成协同公钥,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合。
步骤S202,N个参与方中的第一参与方对待签名信息进行预处理,获得消息摘要,并将消息摘要发送给N个参与方中的第N参与方。
可选的,可以通过哈希算法对待签名信息M进行预处理,以获得消息摘要e。
步骤S203,第一参与方生成第一随机数,并根据第一随机数计算第一参与方的第一签名值,以及将第一参与方的第一签名值发送给N个参与方中的第二参与方,第二参与方生成第二随机数,并根据自身私钥、第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,以及将第二参与方的第一签名值发送给N个参与方中的第三参与方,如此类推,直至N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,生成第N随机数,并根据自身私钥、第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值。
可选的,N个参与方可共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上的n阶基点,每个参与方可随机选择一个位于[1,n-1]之间的数作为自己的随机数。
步骤S204,第N参与方对第N参与方的第一签名值和消息摘要计算得到待签名消息第一签名值。
步骤S205,在确定待签名消息第一签名值不为零时,第N参与方将待签名消息第一签名值发送给第一参与方。
根据本发明的一个实施例,在确定待签名消息第一签名值为零时,第一参与方重新生成第一随机数,并根据第一随机数计算第一参与方的第一签名值,以及将第一参与方的第一签名值发送给N个参与方中的第二参与方,第二参与方重新生成第二随机数,并根据自身私钥、第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,以及将第二参与方的第一签名值发送给N个参与方中的第三参与方,如此类推,直至N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,重新生成第N随机数,并根据自身私钥、第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值,以及对第N参与方的第一签名值和消息摘要计算获得待签名消息第一签名值。
步骤S206,第N参与方根据待签名消息第一签名值、第N随机数和自身私钥计算第N参与方的第二签名值,并将第N参与方的第二签名值发送给N个参与方中的第N-1参与方,第N-1参与方根据第N参与方的第二签名值、第N-1随机数和自身私钥计算第N-1参与方的第二签名值,并将第N-1参与方的第二签名值发送给N个参与方中的第N-2参与方,如此类推,直至第一参与方接收到第二参与方的第二签名值时,根据第二参与方的第二签名值、待签名消息第一签名值、第一随机数和自身私钥计算待签名消息第二签名值。
步骤S207,在确定待签名消息第二签名值不为零时,第一参与方将待签名消息第一签名值和待签名消息第二签名值作为协同签名结果。
根据本发明的一个实施例,在确定待签名消息第二签名值为零时,第一参与方重新生成第一随机数,并根据第一随机数计算第一参与方的第一签名值,以及将第一参与方的第一签名值发送给N个参与方中的第二参与方,第二参与方重新生成第二随机数,并根据自身私钥、第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,以及将第二参与方的第一签名值发送给N个参与方中的第三参与方,如此类推,直至N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,重新生成第N随机数,并根据自身私钥、第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值,以及对第N参与方的第一签名值和消息摘要计算获得待签名消息第一签名值。
作为一个具体示例,当N等于2时,即多方包括第一参与方A1(如协同签名客户端)和第二参与方A2(如协同签名服务端)时,第一参与方A1和第二参与方A2可共享SM2算法的椭圆曲线参数E(Fq)、G和n,其中,第一参与方A1和第二参与方A2可通过前述协同公钥生成方法生成协同公钥P并发布,具体参考前述,这里不再赘述。
在协同签名时,第一参与方A1对待签名信息M进行预处理,获得消息摘要e,并随机选择一个位于[1,n-1]之间的数作为第一随机数k1,以及根据第一随机数k1计算第一参与方A1的第一签名值V1,可选的,第一参与方A1的第一签名值V1=[k1]G,而后将第一签名值V1和消息摘要e发送给第二参与方A2
第二参与方A2随机选择一个位于[1,n-1]之间的数作为第二随机数k2,并根据自身私钥d2(可以是协同公钥生成时第二参与方A2生成的自身私钥)、第二随机数k2和第一参与方A1的第一签名值V1计算第二参与方A2的第一签名值V2,可选的,第二参与方A2的第一签名值V2=(1+d2)*(V1+[k2]G),其中,*表示模乘运算。
而后,第二参与方A2对第二参与方A2的第一签名值V2和消息摘要e进行计算获得待签名消息第一签名值r。可选的,可记V=V2,V的坐标为(x1,y1),根据x1和e可计算获得待签名消息第一签名值r=(x1+e)modn,其中,mod表示求模运算。接着,第二参与方A2判断待签名消息第一签名值r是否为零,若为零,则返回第一参与方A1随机选择一个位于[1,n-1]之间的数作为第一随机数k1的步骤;若不为零,则根据待签名消息第一签名值r、第二随机数k2和自身私钥d2计算第二参与方A2的第二签名值W2,可选的,第二参与方A2的第二签名值W2=[k2+r*(1+d2)-1]modn,其中,(1+d2)-1为(1+d2)在有限域Fq上的模n的逆元。而后,第二参与方A2将待签名消息第一签名值r和第二签名值W2发送给第一参与方A1
第一参与方A1根据第二参与方A2的第二签名值W2、待签名消息第一签名值r、第一随机数k1和自身私钥d1(可以是协同公钥生成时第一参与方A1生成的自身私钥)计算待签名消息第二签名值s。可选的,待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,(1+d1)-1为(1+d1)在有限域Fq上的模n的逆元。接着,第一参与方A1判断待签名消息第二签名值s是否为零,若为零,则返回第一参与方A1随机选择一个位于[1,n-1]之间的数作为第一随机数k1的步骤;若不为零,则将待签名消息第一签名值r和待签名消息第二签名值s作为协同签名结果,可选的,可对待签名消息第一签名值r和待签名消息第二签名值s合成以获得最终协同签名结果。
在该示例中,计算获得的待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,仅有W2来源于其它参与方(如协同签名服务端),该W2的数据长度为32字节,相较于相关技术中的分布式签名方法中获得的签名值中存在两个变量来源于签名代理中心,其中每个变量的数据长度均为32字节,本申请的签名方法在签名过程中交互的数据更少,从而降低交互时长,提高签名值生成速度,降低签名时长。
作为另一个具体示例,当N为大于2的整数时,即多方包括第一参与方A1(如协同签名客户端)、第二参与方A2(如第一协同签名服务端)、第三参与方A3(如第二协同签名服务端)、...、第N参与方时AN(如第N-1协同签名服务端),N个参与方可共享SM2算法的椭圆曲线参数E(Fq)、G和n,其中,N个参与方可通过前述协同公钥生成方法生成协同公钥P,具体参考前述,这里不再赘述。
在协同签名时,第一参与方A1对待签名信息M进行预处理,获得消息摘要e,并将消息摘要e发送给第N参与方AN。另外,第一参与方A1还随机选择一个位于[1,n-1]之间的数作为第一随机数k1,并根据第一随机数钥k1计算第一参与方A1的第一签名值V1,可选的,第一参与方A1的第一签名值V1=[k1]G,而后将第一签名值V1发送给第二参与方A2
第二参与方A2随机选择一个位于[1,n-1]之间的数作为第二随机数k2,并根据自身私钥d2(可以是协同公钥生成时第二参与方A2生成的自身私钥)、第二随机数k2和第一参与方A1的第一签名值V1计算第二参与方A2的第一签名值V2,可选的,第二参与方A2的第一签名值V2=(1+d2)*(V1+[k2]G),其中,*表示模乘运算,并将第一签名值V2发送给第三参与方A3
第三参与方A3随机选择一个位于[1,n-1]之间的数作为第三随机数k3,并根据自身私钥d3(可以是协同公钥生成时第三参与方A3生成的自身私钥)、第三随机数k3和第二参与方A2的第一签名值V2计算第三参与方A3的第一签名值V3,可选的,第三参与方A3的第一签名值V3=(1+d3)*(V2+[k3]G),其中,*表示模乘运算,并将第一签名值V3发送给第四参与方A4
按照上述方式依次类推。
第N-1参与方AN-1随机选择一个位于[1,n-1]之间的数作为第N-1随机数kN-1,并根据自身私钥dN-1(可以是协同公钥生成时第N-1参与方AN-1生成的自身私钥)、第N-1随机数kN-1和第N-2参与方AN-2的第一签名值VN-2计算第N-1参与方AN-1的第一签名值VN-1,可选的,第N-1参与方AN-1的第一签名值VN-1=(1+dN-1)*(VN-2+[kN-1]G),其中,*表示模乘运算,并将第一签名值VN-1发送给第N参与方AN
第N参与方AN随机选择一个位于[1,n-1]之间的数作为第N随机数kN,并根据自身私钥dN(可以是协同公钥生成时第N参与方AN生成的自身私钥)、第N随机数kN和第N-1参与方AN-1的第一签名值VN-1计算第N参与方AN的第一签名值VN,即计算自身第一签名值,可选的,第N参与方AN的第一签名值VN=(1+dN)*(VN-1+[kN]G),其中,*表示模乘运算。而后,第N参与方AN对第N参与方AN的第一签名值VN和消息摘要e进行计算获得待签名消息第一签名值r。可选的,可记V=VN,V的坐标为(x1,y1),根据x1和e可计算获得待签名消息第一签名值r=(x1+e)modn,其中,mod表示求模运算。接着,第N参与方AN判断待签名消息第一签名值r是否为零,若为零,则返回第一参与方A1随机选择一个位于[1,n-1]之间的数作为第一随机数k1的步骤;若不为零,则根据待签名消息第一签名值r、第N随机数kN和自身私钥dN计算第N参与方AN的第二签名值WN,可选的,第N参与方AN的第二签名值WN=[kN+r*(1+dN)-1]modn,其中,(1+dN)-1为(1+dN)在有限域Fq上的模n的逆元。而后,第N参与方AN将待签名消息第一签名值r发送给第一参与方A1,并将第二签名值WN发送给第N-1参与方AN-1
第N-1参与方AN-1根据第N参与方的第二签名值WN、第N-1随机数kN-1和自身私钥dN-1计算第N-1参与方的第二签名值WN-1,可选的,第N-1参与方的第二签名值WN-1=[kN-1+WN*(1+dN-1)-1]modn,其中,(1+dN-1)-1为(1+dN-1)在有限域Fq上的模n的逆元,并将第二签名值WN-1发送给第N-2参与方AN-2
第N-2参与方AN-2根据第N-1参与方的第二签名值WN-1、地N-2随机数kN-2和自身私钥dN-2计算第N-2参与方的第二签名值WN-2,可选的,第N-2参与方的第二签名值WN-2=[kN-2+WN-1*(1+dN-2)-1]modn,其中,(1+dN-2)-1为(1+dN-2)在有限域Fq上的模n的逆元,并将第二签名值WN-2发送给第N-3参与方AN-3
按照上述方式依次类推。
第三参与方A3根据第四参与方的第二签名值W4、第三随机数k3和自身私钥d3计算第三参与方的第二签名值W3,可选的,第三参与方的第二签名值W3=[k3+W4*(1+d3)-1]modn,其中,(1+d3)-1为(1+d3)在有限域Fq上的模n的逆元,并将第二签名值W3发送给第二参与方A2
第二参与方A2根据第三参与方的第二签名值W3、第二随机数k2和自身私钥d2计算第二参与方的第二签名值W2,可选的,第二参与方的第二签名值W2=[k2+W3*(1+d2)-1]modn,其中,(1+d2)-1为(1+d2)在有限域Fq上的模n的逆元,并将第二签名值W2发送给第一参与方A1
第一参与方A1根据第二参与方的第二签名值W2、待签名消息第一签名值r、第一随机数k1和自身私钥d1计算待签名消息第二签名值s。可选的,待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,(1+d1)-1为(1+d1)在有限域Fq上的模n的逆元。接着,第一参与方A1判断待签名消息第二签名值s是否为零,若为零,则返回第一参与方A1随机选择一个位于[1,n-1]之间的数作为第一随机数k1的步骤;若不为零,则将待签名消息第一签名值r和待签名消息第二签名值s作为协同签名结果,可选的,可对待签名消息第一签名值r和待签名消息第二签名值s合成以获得最终协同签名结果。
在该示例中,可以实现更多参与方协同签名,以提高密钥的安全性,满足对密钥保护要求高的场合,也就是说,本申请的协同签名方法可扩展支持更多参与方来协同签名,当用户对密钥保护要求较高时,可根据密钥保护要求设置两个以上的协同签名服务端,进而实现三方及以上共同完成签名,保证数字签名的安全性。
需要说明的是,在上述示例中,N个参与方中的每个参与方产生的随机数和第一签名值,在使用完成后,将对其进行销毁。
综上所述,根据本发明实施例的多方协同签名方法,通过上述的协同公钥生成方法,不仅能够有效降低多倍点运算耗时,提高协同公钥生成速度,而且可以实现更多参与方协同生成协同公钥,以提高密钥的安全性,满足对密钥保护要求高的场合;同时,通过上述协同签名获得的待签名消息第二签名值仅有一个第二签名值来源于其它参与方,使得签名过程中交互的数据更少,从而降低交互时长,提高签名值生成速度,降低签名时长,且可以实现更多参与方协同签名,以提高密钥的安全性,满足对密钥保护要求高的场合。
另外,本发明的实施例还提供一种多方协同签名系统,该多方协同签名系统包括N个参与方,其中,N为大于等于2的整数。
其中,N个参与方中的每个参与方分别生成自身私钥;N个参与方中的第一参与方根据自身私钥计算第一参与方的公钥,并将第一参与方的公钥发送给N个参与方中的第二参与方,第二参与方根据自身私钥和第一参与方的公钥计算两个参与方的协同准公钥,并将两个参与方的协同准公钥发送给N个参与方中的第三参与方,第三参与方根据自身私钥和两个参与方的协同准公钥计算三个参与方的协同准公钥,并将三个参与方的协同准公钥发送给N个参与方中的第四参与方,如此类推,直至N个参与方中的第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和N-1个参与方的协同准公钥计算N个参与方的协同准公钥;第N参与方根据N个参与方的协同准公钥计算协同公钥。
根据本发明的一个实施例,第N参与方根据以下公式计算协同公钥:
P1=[d1+1]G,P2=[d2+1]P1,P3=[d3+1]P2,…,PN=[dN+1]PN-1,P=PN–G;
其中,P为所述协同公钥,d1、d2、d3、…、dN分别为所述第一参与方的自身私钥、所述第二参与方的自身私钥、所述第三参与方的自身私钥、…、所述第N参与方的自身私钥,P1为所述第一参与方的公钥,P2、P3、…、PN分别为所述两个参与方的协同准公钥、所述三个参与方的协同准公钥、…、所述N个参与方的协同准公钥,G为椭圆曲线E上的n阶基点。
根据本发明的一个实施例,N个参与方中的第一参与方对待签名信息进行预处理,获得消息摘要,并将消息摘要发送给N个参与方中的第N参与方;第一参与方生成第一随机数,并根据第一随机数计算第一参与方的第一签名值,以及将第一参与方的第一签名值发送给N个参与方中的第二参与方,第二参与方生成第二随机数,并根据自身私钥、第二随机数和第一参与方的第一签名值计算第二参与方的第一签名值,以及将第二参与方的第一签名值发送给N个参与方中的第三参与方,如此类推,直至N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,生成第N随机数,并根据自身私钥、第N随机数和第N-1参与方的第一签名值计算第N参与方的第一签名值;第N参与方对第N参与方的第一签名值和消息摘要计算得到待签名消息第一签名值;在确定待签名消息第一签名值不为零时,第N参与方将待签名消息第一签名值发送给第一参与方;第N参与方根据待签名消息第一签名值、第N随机数和自身私钥计算第N参与方的第二签名值,并将第N参与方的第二签名值发送给N个参与方中的第N-1参与方,第N-1参与方根据第N参与方的第二签名值、第N-1随机数和自身私钥计算第N-1参与方的第二签名值,并将第N-1参与方的第二签名值发送给N个参与方中的第N-2参与方,如此类推,直至第一参与方接收到第二参与方的第二签名值时,根据第二参与方的第二签名值、待签名消息第一签名值、第一随机数和自身私钥计算待签名消息第二签名值;在确定待签名消息第二签名值不为零时,第一参与方将待签名消息第一签名值和待签名消息第二签名值作为协同签名结果。
根据本发明的一个实施例,第一参与方的第一签名值V1=[k1]G,第二参与方的第一签名值V2=(1+d2)*(V1+[k2]G),…,第N-1参与方的第一签名值VN-1=(1+dN-1)*(VN-2+[kN-1]G),第N参与方的第一签名值VN=(1+dN)*(VN-1+[kN]G),其中,k1、k2、…、kN-1、kN分别为第一随机数、第二随机数、…、第N-1随机数、第N随机数,d2、d3、…、dN-1、dN分别为第二参与方的自身私钥、第三参与方的自身私钥、…、第N-1参与方的自身私钥、第N参与方的自身私钥,G为椭圆曲线E上的n阶基点,*表示模乘运算。
根据本发明的一个实施例,第N参与方的第二签名值WN=[kN+r*(1+dN)-1]modn,第N-1参与方的第二签名值WN-1=[kN-1+WN*(1+dN-1)-1]modn,…,第二参与方的第二签名值W2=[k2+W3*(1+d2)-1]modn,待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,k1、k2、…、kN-1、kN分别为第一随机数、第二随机数、…、第N-1随机数、第N随机数,d1、d2、…、dN-1、dN分别为第一参与方的自身私钥、第二参与方的自身私钥、…、第N-1参与方的自身私钥、第N参与方的自身私钥,r为待签名消息第一签名值,*表示模乘运算,mod表示求模运算,(1+dN)-1、(1+dN-1)-1、…、(1+d2)-1、(1+d1)-1分别为(1+dN)在有限域Fq上的模n的逆元、(1+dN-1)在有限域Fq上的模n的逆元、…、(1+d2)在有限域Fq上的模n的逆元、(1+d1)在有限域Fq上的模n的逆元。
需要说明的是,关于本申请中多方协同签名系统的描述,请参考本申请中关于多方协同签名时的协同公钥生成方法和多方协同签名方法的描述,具体这里不再赘述。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (5)

1.一种多方协同签名方法,其特征在于,所述多方包括N个参与方,其中,N为大于等于2的整数,所述方法包括:
所述N个参与方中的每个参与方分别生成自身私钥;
所述N个参与方中的第一参与方根据自身私钥计算所述第一参与方的公钥,并将所述第一参与方的公钥发送给所述N个参与方中的第二参与方,所述第二参与方根据自身私钥和所述第一参与方的公钥计算两个参与方的协同准公钥,并将所述两个参与方的协同准公钥发送给所述N个参与方中的第三参与方,所述第三参与方根据自身私钥和所述两个参与方的协同准公钥计算三个参与方的协同准公钥,并将所述三个参与方的协同准公钥发送给所述N个参与方中的第四参与方,如此类推,直至所述N个参与方中的第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和所述N-1个参与方的协同准公钥计算N个参与方的协同准公钥;
根据所述N个参与方的协同准公钥计算协同公钥;
所述N个参与方中的第一参与方对待签名信息进行预处理,获得消息摘要,并将所述消息摘要发送给所述N个参与方中的第N参与方;
所述第一参与方生成第一随机数,并根据所述第一随机数计算所述第一参与方的第一签名值,以及将所述第一参与方的第一签名值发送给所述N个参与方中的第二参与方,所述第二参与方生成第二随机数,并根据自身私钥、所述第二随机数和所述第一参与方的第一签名值计算所述第二参与方的第一签名值,以及将所述第二参与方的第一签名值发送给所述N个参与方中的第三参与方,如此类推,直至所述N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,生成第N随机数,并根据自身私钥、所述第N随机数和所述第N-1参与方的第一签名值计算所述第N参与方的第一签名值;
所述第N参与方对所述第N参与方的第一签名值和所述消息摘要计算得到待签名消息第一签名值;
在确定所述待签名消息第一签名值不为零时,所述第N参与方将所述待签名消息第一签名值发送给所述第一参与方;
所述第N参与方根据所述待签名消息第一签名值、所述第N随机数和自身私钥计算所述第N参与方的第二签名值,并将所述第N参与方的第二签名值发送给所述N个参与方中的第N-1参与方,所述第N-1参与方根据所述第N参与方的第二签名值、第N-1随机数和自身私钥计算所述第N-1参与方的第二签名值,并将所述第N-1参与方的第二签名值发送给所述N个参与方中的第N-2参与方,如此类推,直至所述第一参与方接收到所述第二参与方的第二签名值时,根据所述第二参与方的第二签名值、所述待签名消息第一签名值、所述第一随机数和自身私钥计算待签名消息第二签名值;
在确定所述待签名消息第二签名值不为零时,所述第一参与方将所述待签名消息第一签名值和所述待签名消息第二签名值作为协同签名结果;
所述第一参与方的第一签名值V1=[k1]G,所述第二参与方的第一签名值V2=(1+d2)*(V1+[k2]G),…,所述第N-1参与方的第一签名值VN-1=(1+dN-1)*(VN-2+[kN-1]G),所述第N参与方的第一签名值VN=(1+dN)*(VN-1+[kN]G),其中,k1、k2、…、kN-1、kN分别为所述第一随机数、所述第二随机数、…、所述第N-1随机数、所述第N随机数,d2、d3、…、dN-1、dN分别为所述第二参与方的自身私钥、所述第三参与方的自身私钥、…、所述第N-1参与方的自身私钥、所述第N参与方的自身私钥,G为椭圆曲线E上的n阶基点,*表示模乘运算;
所述第N参与方的第二签名值WN=[kN+r*(1+dN)-1]modn,所述第N-1参与方的第二签名值WN-1=[kN-1+WN*(1+dN-1)-1]modn,…,所述第二参与方的第二签名值W2=[k2+W3*(1+d2)-1]modn,所述待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,k1、k2、…、kN-1、kN分别为所述第一随机数、所述第二随机数、…、所述第N-1随机数、所述第N随机数,d1、d2、…、dN-1、dN分别为所述第一参与方的自身私钥、所述第二参与方的自身私钥、…、所述第N-1参与方的自身私钥、所述第N参与方的自身私钥,r为所述待签名消息第一签名值,*表示模乘运算,mod表示求模运算,(1+dN)-1、(1+dN-1)-1、…、(1+d2)-1、(1+d1)-1分别为(1+dN)在有限域Fq上的模n的逆元、(1+dN-1)在有限域Fq上的模n的逆元、…、(1+d2)在有限域Fq上的模n的逆元、(1+d1)在有限域Fq上的模n的逆元。
2.根据权利要求1所述的方法,其特征在于,所述协同公钥根据以下公式计算:
P1=[d1+1]G,P2=[d2+1]P1,P3=[d3+1]P2,…,PN=[dN+1]PN-1,P=PN–G;
其中,P为所述协同公钥,d1、d2、d3、…、dN分别为所述第一参与方的自身私钥、所述第二参与方的自身私钥、所述第三参与方的自身私钥、…、所述第N参与方的自身私钥,P1为所述第一参与方的公钥,P2、P3、…、PN分别为所述两个参与方的协同准公钥、所述三个参与方的协同准公钥、…、所述N个参与方的协同准公钥,G为椭圆曲线E上的n阶基点。
3.根据权利要求2所述的方法,其特征在于,当N等于2时,所述第二参与方直接计算所述协同公钥P=[d2+1]P1–G,其中,d2为所述第二参与方的私钥,P1=[d1+1]G,d1为所述第一参与方的私钥,G为椭圆曲线E上的n阶基点。
4.一种多方协同签名系统,其特征在于,包括N个参与方,其中,N为大于等于2的整数,
所述N个参与方中的每个参与方分别生成自身私钥;
所述N个参与方中的第一参与方根据自身私钥计算所述第一参与方的公钥,并将所述第一参与方的公钥发送给所述N个参与方中的第二参与方,所述第二参与方根据自身私钥和所述第一参与方的公钥计算两个参与方的协同准公钥,并将所述两个参与方的协同准公钥发送给所述N个参与方中的第三参与方,所述第三参与方根据自身私钥和所述两个参与方的协同准公钥计算三个参与方的协同准公钥,并将所述三个参与方的协同准公钥发送给所述N个参与方中的第四参与方,如此类推,直至所述N个参与方中的第N参与方接收到N-1个参与方的协同准公钥时,根据自身私钥和所述N-1个参与方的协同准公钥计算N个参与方的协同准公钥;
所述第N参与方根据所述N个参与方的协同准公钥计算协同公钥;
所述N个参与方中的第一参与方对待签名信息进行预处理,获得消息摘要,并将所述消息摘要发送给所述N个参与方中的第N参与方;
所述第一参与方生成第一随机数,并根据所述第一随机数计算所述第一参与方的第一签名值,以及将所述第一参与方的第一签名值发送给所述N个参与方中的第二参与方,所述第二参与方生成第二随机数,并根据自身私钥、所述第二随机数和所述第一参与方的第一签名值计算所述第二参与方的第一签名值,以及将所述第二参与方的第一签名值发送给所述N个参与方中的第三参与方,如此类推,直至所述N个参与方中的第N参与方接收到第N-1参与方的第一签名值时,生成第N随机数,并根据自身私钥、所述第N随机数和所述第N-1参与方的第一签名值计算所述第N参与方的第一签名值;
所述第N参与方对所述第N参与方的第一签名值和所述消息摘要计算得到待签名消息第一签名值;
在确定所述待签名消息第一签名值不为零时,所述第N参与方将所述待签名消息第一签名值发送给所述第一参与方;
所述第N参与方根据所述待签名消息第一签名值、所述第N随机数和自身私钥计算所述第N参与方的第二签名值,并将所述第N参与方的第二签名值发送给所述N个参与方中的第N-1参与方,所述第N-1参与方根据所述第N参与方的第二签名值、第N-1随机数和自身私钥计算所述第N-1参与方的第二签名值,并将所述第N-1参与方的第二签名值发送给所述N个参与方中的第N-2参与方,如此类推,直至所述第一参与方接收到所述第二参与方的第二签名值时,根据所述第二参与方的第二签名值、所述待签名消息第一签名值、所述第一随机数和自身私钥计算待签名消息第二签名值;
在确定所述待签名消息第二签名值不为零时,所述第一参与方将所述待签名消息第一签名值和所述待签名消息第二签名值作为协同签名结果;
所述第一参与方的第一签名值V1=[k1]G,所述第二参与方的第一签名值V2=(1+d2)*(V1+[k2]G),…,所述第N-1参与方的第一签名值VN-1=(1+dN-1)*(VN-2+[kN-1]G),所述第N参与方的第一签名值VN=(1+dN)*(VN-1+[kN]G),其中,k1、k2、…、kN-1、kN分别为所述第一随机数、所述第二随机数、…、所述第N-1随机数、所述第N随机数,d2、d3、…、dN-1、dN分别为所述第二参与方的自身私钥、所述第三参与方的自身私钥、…、所述第N-1参与方的自身私钥、所述第N参与方的自身私钥,G为椭圆曲线E上的n阶基点,*表示模乘运算;
所述第N参与方的第二签名值WN=[kN+r*(1+dN)-1]modn,所述第N-1参与方的第二签名值WN-1=[kN-1+WN*(1+dN-1)-1]modn,…,所述第二参与方的第二签名值W2=[k2+W3*(1+d2)-1]modn,所述待签名消息第二签名值s=[(1+d1)-1*(k1+W2)-r]modn,其中,k1、k2、…、kN-1、kN分别为所述第一随机数、所述第二随机数、…、所述第N-1随机数、所述第N随机数,d1、d2、…、dN-1、dN分别为所述第一参与方的自身私钥、所述第二参与方的自身私钥、…、所述第N-1参与方的自身私钥、所述第N参与方的自身私钥,r为所述待签名消息第一签名值,*表示模乘运算,mod表示求模运算,(1+dN)-1、(1+dN-1)-1、…、(1+d2)-1、(1+d1)-1分别为(1+dN)在有限域Fq上的模n的逆元、(1+dN-1)在有限域Fq上的模n的逆元、…、(1+d2)在有限域Fq上的模n的逆元、(1+d1)在有限域Fq上的模n的逆元。
5.如权利要求4所述的多方协同签名系统,其特征在于,所述第N参与方根据以下公式计算所述协同公钥:
P1=[d1+1]G,P2=[d2+1]P1,P3=[d3+1]P2,…,PN=[dN+1]PN-1,P=PN–G;
其中,P为所述协同公钥,d1、d2、d3、…、dN分别为所述第一参与方的自身私钥、所述第二参与方的自身私钥、所述第三参与方的自身私钥、…、所述第N参与方的自身私钥,P1为所述第一参与方的公钥,P2、P3、…、PN分别为所述两个参与方的协同准公钥、所述三个参与方的协同准公钥、…、所述N个参与方的协同准公钥,G为椭圆曲线E上的n阶基点。
CN202110460801.6A 2021-04-27 2021-04-27 协同公钥生成方法、多方协同签名方法和系统 Active CN113259095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110460801.6A CN113259095B (zh) 2021-04-27 2021-04-27 协同公钥生成方法、多方协同签名方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110460801.6A CN113259095B (zh) 2021-04-27 2021-04-27 协同公钥生成方法、多方协同签名方法和系统

Publications (2)

Publication Number Publication Date
CN113259095A CN113259095A (zh) 2021-08-13
CN113259095B true CN113259095B (zh) 2022-12-20

Family

ID=77221856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110460801.6A Active CN113259095B (zh) 2021-04-27 2021-04-27 协同公钥生成方法、多方协同签名方法和系统

Country Status (1)

Country Link
CN (1) CN113259095B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110224812A (zh) * 2019-06-12 2019-09-10 江苏慧世联网络科技有限公司 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备
CN111147246A (zh) * 2020-02-18 2020-05-12 数据通信科学技术研究所 一种基于sm2的多方协同签名方法及系统
CN112152808A (zh) * 2020-09-27 2020-12-29 成都国泰网信科技有限公司 一种基于sm2算法的多方协同数字签名方法
CN112632630A (zh) * 2019-10-08 2021-04-09 航天信息股份有限公司 一种基于sm2的协同签名计算方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060236098A1 (en) * 2005-03-31 2006-10-19 Alexander Gantman Multisigning - a protocol for robust multiple party digital signatures
EP3669490A1 (en) * 2017-08-15 2020-06-24 Nchain Holdings Limited Threshold digital signature method and system
CN112187469B (zh) * 2020-09-21 2023-09-19 浙江省数字安全证书管理有限公司 一种基于密钥因子的sm2多方协同数字签名方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110224812A (zh) * 2019-06-12 2019-09-10 江苏慧世联网络科技有限公司 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备
CN112632630A (zh) * 2019-10-08 2021-04-09 航天信息股份有限公司 一种基于sm2的协同签名计算方法及装置
CN111147246A (zh) * 2020-02-18 2020-05-12 数据通信科学技术研究所 一种基于sm2的多方协同签名方法及系统
CN112152808A (zh) * 2020-09-27 2020-12-29 成都国泰网信科技有限公司 一种基于sm2算法的多方协同数字签名方法

Also Published As

Publication number Publication date
CN113259095A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN110971413B (zh) 一种随机数的生成方法、生成装置及存储介质
CN110166239B (zh) 用户私钥生成方法、系统、可读存储介质及电子设备
CN110351096B (zh) 多重签名方法、签名中心、程序介质及电子设备
CN108667625B (zh) 协同sm2的数字签名方法
JP5329676B2 (ja) 鍵合意プロトコルの加速
CN112187469B (zh) 一种基于密钥因子的sm2多方协同数字签名方法和系统
CN110535635B (zh) 一种支持信息隐藏的协同签名方法与系统
JP2013524263A (ja) ホワイトボックス攻撃から暗号化資産を保護するためのシステムと方法
CN109547199B (zh) 一种多方联合生成sm2数字签名的方法
CN111010285B (zh) 一种适用于轻量级客户端的sm2两方协同签名方法及介质
CN112906038B (zh) 基于sm9密钥的门限化处理方法、装置、设备及存储介质
CN109905229B (zh) 基于群组非对称密钥池的抗量子计算Elgamal加解密方法和系统
CN112464155B (zh) 一种数据处理方法、多方安全计算系统和电子设备
CN112653554B (zh) 一种签名方法、系统、设备及可读存储介质
CN112632630A (zh) 一种基于sm2的协同签名计算方法及装置
CN110505056B (zh) 一种支持可信显示的协同签名方法和装置
CN110535636B (zh) 一种轻量级的基于sm2算法的协同签名方法与装置
CN109962783B (zh) 基于递进计算的sm9数字签名协同生成方法及系统
CN113468580B (zh) 多方协同签名的方法和系统
Yang et al. A provably secure and efficient strong designated verifier signature scheme
CN113259095B (zh) 协同公钥生成方法、多方协同签名方法和系统
CN110943826B (zh) 一种基于sm2算法的拆分密钥签名方法与系统
CN116865970A (zh) 基于国密算法的多方协同密钥产生和数字签名方法及系统
CN116961917A (zh) 一种基于ecdsa的多方协同门限签名方法、装置和系统
CN116248266A (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
GR01 Patent grant
GR01 Patent grant