CN116865970A - 基于国密算法的多方协同密钥产生和数字签名方法及系统 - Google Patents
基于国密算法的多方协同密钥产生和数字签名方法及系统 Download PDFInfo
- Publication number
- CN116865970A CN116865970A CN202310621782.XA CN202310621782A CN116865970A CN 116865970 A CN116865970 A CN 116865970A CN 202310621782 A CN202310621782 A CN 202310621782A CN 116865970 A CN116865970 A CN 116865970A
- Authority
- CN
- China
- Prior art keywords
- party
- point
- component
- generating
- signature
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 37
- 238000012795 verification Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 32
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
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/32—Cryptographic 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/3247—Cryptographic 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
- H04L9/3252—Cryptographic 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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例提供一种基于国密算法的多方协同密钥产生和数字签名方法及系统,用于N方设备协同生成签名(r,s);每方设备预设有相同的SM2椭圆曲线基点、以及本方的参数集,参数集包括私钥因子、公钥因子与随机数;所述方法包括:第3方至第N‑1方依次执行:通过第i方根据所述基点、第i参数集以及第i‑1点集,生成第i点集;通过第N方根据基点、第N参数集、第N‑1点集以及第1点集生成目标点;利用目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r;以及根据r与第N参数集生成第N分量;第N‑1方至第2方依次执行:通过第j方根据第j参数集与第j+1分量,生成第j分量;通过第1方根据第1参数集、第2分量以及r生成第二签名分量s,得到所述签名(r,s)。
Description
技术领域
本申请涉及信息安全技术领域,具体而言,涉及一种基于国密算法的多方协同密钥产生和数字签名方法及系统。
背景技术
在数字签名领域中,签名人持有保存了私钥的签名设备,当需要对数据进行签名时,由签名设备独立使用私钥对数据进行签名。受限于签名设备,数字签名技术无法在不具备密码运算能力的设备上开展。在相关技术中,虽然两方协同签名可以解决部分密钥在不具备密码运算能力的设备上使用的问题,但当存在两方以上签名需求时,两方密钥拆分将无法满足。
发明内容
本申请实施例的目的在于提供一种基于国密算法的多方协同密钥产生和数字签名方法及系统,用以实现多方协同签名的技术效果。
本申请实施例第一方面提供了一种基于国密算法的多方协同密钥产生和数字签名方法,用于N方设备协同生成签名(r,s);每方所述设备预设有相同的SM2椭圆曲线基点、以及本方的参数集,所述参数集包括私钥因子、公钥因子与随机数;所述方法包括:
第3方至第N-1方依次执行:通过第i方根据所述基点、第i参数集以及第i-1点集,生成第i点集;其中,3≤i≤N-1,3≤N;
通过第N方根据所述基点、第N参数集、第N-1点集以及第1点集生成目标点;利用所述目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r;以及根据所述r与所述第N参数集生成第N分量;
第N-1方至第2方依次执行:通过第j方根据第j参数集与第j+1分量,生成第j分量;其中,2≤j≤N-1;
通过第1方根据第1参数集、第2分量以及所述r生成第二签名分量s,得到所述签名(r,s)。
在上述实现过程中,第一签名分量r与第二签名分量s均由多方协同生成。签名的生成依赖于多方协同,每方均对最终生成的签名产生影响,由此实现了多方协同签名。同时N方的密钥因子由各方独立产生,签名过程中不传输密钥因子,完整私钥也不出现在运算过程中。就算部分密钥因子被泄露,但通过N-1方密钥因子也无法推导出完整的私钥,因此较好地保证了密钥的私密性。
进一步地,所述第i点集包括i-1个具有次序的点,所述根据所述基点、第i参数集以及第i-1点集,生成第i点集,包括:
确定所述第i参数集中的第i随机数与所述基点在椭圆曲线上的乘法运算结果为所述第i点集中第一个点;
确定所述第i参数集中的第i私钥因子、所述第i-1点集中第k-1个点与所述基点在椭圆曲线上的乘法运算结果为所述第i点集中第k个点;2≤k≤i-1。
在上述实现过程中,每一方的点集是根据前一方点集生成的,使得第1方的参数可以通过点集逐一传递到第N方,最终作用于第一签名分量r的生成,使得第一签名分量r是在多方协同下生成的。
进一步地,所述根据第j参数集与第j+1分量,生成第j分量,包括:
确定所述第j参数集中第j随机数与所述第j+1分量之和,与所述第j参数集中第j私钥因子的模逆的乘积对所述基点阶数的求余结果为所述第j分量。
在上述实现过程中,每一方的第j分量是根据前一方的第j+1分量生成的,使得第N方的参数可以通过第j分量逐一传递到第1方,最终作用于第二签名分量s的生成,使得第一签名分量s是在多方协同下生成的。
进一步地,所述方法还包括:
针对所述N方中的每方,根据本方身份确定在所述N方中的顺序。
在上述实现过程中,通过本方身份直接确定在N方中的顺序位次,无需多方协商各自的顺序,提高了签名效率。
进一步地,所述方法还包括:
通过所述第1方利用所述N方协同生成的公钥验证所述签名(r,s);
在验证通过的情况下,确定所述签名(r,s)为待输出消息的签名。
在上述实现过程中,由于N方协同签名的算法较复杂,通过公钥PA来验证签名(r,s)的准确性,能确保待输出消息的签名的准确性。
进一步地,所述公钥的生成过程包括:
第2方至第N方依次执行:通过第m方生成第m私钥因子,并根据所述第m私钥因子与第m-1公钥因子,生成第m公钥因子;其中,2≤m≤N;
通过第N方根据第N公钥因子与所述基点生成公钥。
在上述实现过程中,多方设备之间不传输密钥因子,不会导致密钥因子的泄露。同时密钥对需要N方的密钥因子才能破解,若只有N-1方密钥因子也无法推导出完整的私钥,因此较好地保证了密钥的私密性。
进一步地,所述第m私钥因子与所述第m公钥因子,为所述第m方的密钥对。
在上述实现过程中,在多方协同生成用户密钥对的同时,也生成了本方的密钥对,通过一次算法流程便能产生多方的密钥对,提高了密钥对的生成效率。
本申请实施例第二方面提供了一种基于国密算法的系统,用于协同生成签名(r,s);所述系统包括N方设备;每方所述设备预设有相同的SM2椭圆曲线基点、以及本方的参数集,所述参数集包括私钥因子、公钥因子与随机数;
第3方至第N-1方依次用于:通过第i方根据所述基点、第i参数集以及第i-1点集,生成第i点集;其中,3≤i≤N-1,3≤N;
第N方用于:根据所述基点、第N参数集、第N-1点集以及第1点集生成目标点;利用所述目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r;以及根据所述r与所述第N参数集生成第N分量;
第N-1方至第2方依次用于:通过第j方根据第j参数集与第j+1分量,生成第j分量;其中,2≤j≤N-1;
第1方用于:根据第1参数集、第2分量以及所述r生成第二签名分量s,得到所述签名(r,s)。
本申请实施例第三方面提供了一种电子设备,所述电子设备用于与其他设备协同生成签名(r,s);所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器调用所述可执行指令时实现第一方面任一所述方法的操作。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现第一方面任一所述方法的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种电子设备的结构框图;
图2为本申请实施例提供的一种多方协同生成公钥的流程示意图;
图3为本申请实施例提供的另一种多方协同生成公钥的流程示意图;
图4为本申请实施例提供的另一种多方协同生成公钥的流程示意图;
图5为本申请实施例提供的一种多方协同签名的流程示意图;
图6为本申请实施例提供的另一种多方协同签名的流程示意图;
图7为本申请实施例提供的另一种多方协同签名的流程示意图;
图8为本申请实施例提供的三方协同生成公钥的流程示意图;
图9为本申请实施例提供的三方协同签名的流程示意图;
图10为本申请实施例提供的一种电子设备的硬件结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在数字签名领域中,签名人持有保存了私钥的签名设备,当需要对数据进行签名时,由签名设备独立使用私钥对数据进行签名。受限于签名设备,数字签名技术无法在不具备密码运算能力的设备上开展。在相关技术中,虽然两方协同签名可以解决部分密钥在不具备密码运算能力的设备上使用的问题,但当存在两方以上签名需求时,两方密钥拆分将无法满足。
为此,本申请提供了一种基于国密算法的多方协同密钥产生和数字签名方法,用于N方设备协同生成签名(r,s)。其中,N方为大于等于3方,也即N≥3。也即本申请提供的一种基于国密算法的多方协同密钥产生和数字签名方法,适用于通过3方或以上的设备协同生成签名(r,s)。
所谓N方协同签名,也即通过N方设备协同生成某一消息的签名值。与上述签名设备不同,签名设备可以单独地生成消息的签名值。
例如,在用户A与用户B的交互过程中,若用户A采用本申请提供的一种多方协同签名方法,则用户A在每次向用户B发送消息时,都需要通过N方设备协同产生待输出消息M的签名值。
作为本申请的应用场景,包括需要多方协同签名的场景。例如,在车辆控制场景中,手机设备、车辆、云平台可以作为三方设备实现协同签名,以完成车辆的安全控制。例如在智能门锁场景中,手机、智能门锁、云平台可以作为三方设备实现协同签名,以完成智能门锁的安全控制。例如,在租赁场景中,承租人、出租人、中介机构可以作为三方设备实现协同签名,以完成租赁场景的合规签署。又例如,在多方会诊场景中,多方专家的用户设备可以作为多方设备实现协同签名,以完成会诊结果远程确认。
参见图1,对于N方设备中的每方设备100,可以包括通信模块110与密码算法模块120。其中,通信模块110用于与其他设备进行数据交互;密码算法模块120用于进行协同签名的算法运算等等。
通信模块110包括通信接收模块111与通信发送模块112。其中,通信接收模块111负责接收报文信息;通信发送模块112用于发送报文信息。
可选地,设备100还可以包括角色设定模块130,用于设定本方设备处于多方协同中的顺位次序。
可选地,设备100还可以包括配置文件模块140,用于保存本方设备在多方中的顺位次序、地址等需要保存的配置信息。
上述设备100中包括的各种模块可以理解为软件模块、硬件装置、或者软硬结合的模块。例如可以是代码程序中的部分功能模块、又或者是诸如处理器、内存等硬件装置。
为了更好地理解本方案,在描述N方设备如何协同生成签名(r,s)之前,先介绍N方设备协同生成公钥的生成过程。
参见图2-图4,为公钥的生成过程,包括如图2所示的步骤:
第2方至第N方依次执行步骤210:通过第m方生成第m私钥因子,并根据所述第m私钥因子与第m-1公钥因子,生成第m公钥因子;其中,2≤m≤N。
示例性地,在第2方至第N方依次执行步骤210之前,N方设备可以预设有相同的椭圆曲线,并确定预设椭圆曲线上的基点G。如此,每一方均预设有一SM2椭圆曲线基点G(以下简称基点G)。
接着,可以先通过第1方生成第1私钥因子d1,并根据第1私钥因子d1与预设的基点G生成第1公钥因子P1。
可选地,可以确定第1私钥因子d1与基点G在椭圆曲线上的乘法运算结果为第1公钥因子P1。也即P1=[d1]G。
如图3-4所示,第1方将第1公钥因子P1发送至第2方。
随后第2方至第N方依次执行步骤210。所谓第2方至第N方依次执行步骤210,也即从第2方设备开始,每方设备依次执行步骤210,直到第N方设备完成执行步骤210。如此,步骤210将循环执行N-1遍。
例如,第2方(m=2)生成第2私钥因子d2,并根据第2私钥因子d2与第1公钥因子P1,生成第2公钥因子P2。如上所述,第1公钥因子P1是根据第1私钥因子d1与预设的基点G生成的。
如图3-4所示,第2方将第2公钥因子P2发送至第3方。接着,第3方(m=3)生成第3私钥因子d3,并根据第3私钥因子d3与第2公钥因子P2,生成第3公钥因子P3。
如此类推,直到第N方(m=N)生成第N私钥因子dN,并根据第N私钥因子dN与第N-1公钥因子PN-1,生成第N公钥因子PN。
可知,从第2方开始到第N方,每一方都根据本方生成的私钥因子dm与前一方生成的公钥因子Pm-1来生成本方的公钥因子Pm。
可选地,可以确定第m私钥因子dm与第m-1公钥因子Pm-1在椭圆曲线上的乘法运算结果为第m公钥因子Pm。也即Pm=[dm]Pm-1。
参见图2,在第N方完成执行步骤210后,执行步骤220:通过第N方根据第N公钥因子与所述基点生成公钥。
第N方根据第N公钥因子PN与基点G生成的公钥PA,即为上述N方协同生成的公钥。
可选地,可以确定第N公钥因子PN与基点G之差为公钥PA。也即PA=PN-G。
示例性地,针对从第1方到第N方中的每一方,其私钥因子可以是通过本方产生的随机数作为私钥因子。每一方的私钥因子的取值范围为[1,n-1],n为基点G的阶数。每一方的公钥因子以及最终生成的公钥PA均为椭圆曲线上的点。
示例性地,第N方设备在生成公钥PA后,可以将PA和/或PN至少发送至第1方设备,以使至少第1方设备获得公钥PA。例如,第N方设备还可以将公钥PA广播至每一方设备,以使每一方设备均获得公钥PA。
此外,结合上文记载的P1=[d1]G、Pm=[dm]Pm-1、与PA=PN-G可推导得到:PA=([dN][dN-1]……[d1]-1)G。根据SM2算法中关于私钥与公钥的标准形式PA=[dA]G可知,私钥dA=(dN*dN-1……d1-1)mod n。由此通过上述方法,实现了N方协同生成了公私密钥对(dA,PA)。同时,各方分别掌握私钥dA的部分,任何一方都不掌握完整的私钥dA,因此任何一方都无法独立完成签名。
在一些实施例中,在通过如图2-4所示的方法生成密钥对前,针对N方中的每方设备,还可以根据本方身份确定在N方中的顺序。例如,可以利用设备中的角色设定模块,来根据本方身份设定本方的顺位次序。
示例性地,N方设备可以预设有身份与顺序的对应关系。当确定本方身份时,可以根据该对应关系确定本方的顺序。
以上述租赁场景为例,设备可以允许用户以不同的身份登录客户端使用该身份下对应的功能。不同身份对应的顺序可以由软件应用端进行设定。例如身份顺序可以是中介-承租人-出租人。如此,由中介拟好合同后发起签署的同时首先完成自己所持密钥的签名,后面再依次由承租人与出租人签署,最终协同完成签名。
可知,不同身份可以对应不同的顺序。当设备检测到用户所使用的身份时,将用户身份作为本方身份并确定在N方中的顺序。
在一些实施例中,针对第1方到第N方中的每一方,本方的私钥因子与公钥因子组成本方的密钥对。也即第1方设备的密钥对为(d1,P1);第2方设备的密钥对为(d2,P2)……第N方设备的密钥对为(dN,PN)。
需要区分的是,每一方设备的密钥对不同于最终生成的密钥对(dA,PA)。例如在上文列举的用户A与用户B的交互场景中,用户A通过N方设备生成密钥对(dA,PA),密钥对(dA,PA)用于交互时进行消息加密、签名。而参与生成密钥对(dA,PA)的每一方设备也在过程中获取到了本方的密钥对。本方的密钥对可以在与其他设备交互时进行消息加密与签名,但并不作用于用户A与用户B交互过程。
可见,在上述密钥对(dA,PA)的生成过程中,多方设备之间不传输密钥因子,不会导致密钥因子的泄露。同时密钥对需要N方的密钥因子才能破解,若只有N-1方密钥因子也无法推导出完整的私钥,因此较好地保证了密钥的私密性。
在通过N方协同生成公钥后,N方设备中的每一方已预设有相同的基点G、以及本方的参数集。其中,参数集包括私钥因子、公钥因子与随机数。也即每方预设有本方的私钥因子、公钥因子、随机数以及相同的基点G。其中,私钥因子是在上述公钥生成过程中由每方各自生成的。而随机数可以是在下述协同签名过程中生成的,也可以是在协同签名之前预先生成的。
参见图5-图7,为N方设备协同签名过程,包括如图5所示的步骤511-步骤523。其中,协同签名过程可以分为两个阶段:第一阶段是通过步骤511-步骤512生成签名(r,s)中的第一签名分量r;第二阶段是通过步骤521-步骤523生成签名(r,s)中的第二签名分量s。
第一阶段包括:
第3方至第N-1方依次执行步骤511:通过第i方根据所述基点、第i参数集以及第i-1点集,生成第i点集;其中,3≤i≤N-1,3≤N。
示例性地,在第3方至第N-1方依次执行步骤511之前,可以先通过第1方根据第1参数集与公钥参数生成第1点集,以及通过第2方根据基点G与第2参数集中的第2随机数生成第2点集。
其中,第1点集中包括1个点,即Q1。公钥参数包括公钥PA和/或PN。可选地,可以确定第1随机数k1、第1私钥因子d1的模逆、与公钥PA和基点G之和在椭圆曲线上的乘法运算结果为点Q1。也即Q1=[k1][d1 -1](PA+G)。
可选地,可以确定第1随机数k1、第1私钥因子d1的模逆、与第N公钥因子PN在椭圆曲线上的乘法运算结果为点Q1。也即Q1=[k1][d1 -1]PN。
如图6-7所示,第1方将第1点集发送至第2方。
第2点集中包括1个点,即Q2 1。可选地,可以确定第2随机数k2与基点G在椭圆曲线上的乘法运算结果为点Q2 1。也即Q2 1=[k2]G。
如图6-7所示,第2方将第1点集与第2点集发送至第3方。
随后,第3方至第N-1方依次执行步骤511。所谓第3方至第N-1方依次执行步骤511,也即从第3方开始,每方设备依次执行步骤511,直到第N-1方设备完成执行步骤511。如此,步骤511将循环执行N-3遍。
例如,第3方(i=3)根据基点G、第3参数集以及第2点集,生成第3点集。如上所述,第2点集是根据基点G与第2随机数k2生成的。
图6-7所示,第3方将第1点集与第3点集发送至第4方。如此类推,直到第N-1(i=N-1)方根据基点G、第N-1参数集以及第N-2点集,生成第N-1点集。
可知,从第3方开始到第N-1方,每一方都根据基点、本方的第i参数集以及前一方生成的第i-1点集,生成本方的第i点集。
在一些实施例中,针对第3方到第N-1方,每一方的第i点集包括i-1个具有次序的点。例如,第3方的第3点集包括2个具有次序的点(Q3 1,Q3 2);第4方的第4点集包括3个具有次序的点(Q4 1,Q4 2,Q4 3)……第N-1方的第N-1点集包括N-2个具有次序的点(QN-1 1,QN-1 2……QN-1 N-2)。
如此,上述511中第i点集的生成可以包括:
步骤5111:确定所述第i参数集中的第i随机数与所述基点在椭圆曲线上的乘法运算结果为所述第i点集中第一个点;
步骤5112:确定所述第i参数集中的第i私钥因子、所述第i-1点集中第k-1个点与所述基点的乘积为所述第i点集中第k个点;其中,2≤k≤i-1。
可知,针对第3方到第N-1方,每一方的第i点集中的第1个点均是第i随机数与基点在椭圆曲线上的乘法运算结果。而第k个点与第i-1点集中的第k-1个点相关。
也即Qi 1=[ki]G,Qi k=[di]Qi-2 k-1G。
例如,针对第3(i=3)点集(Q3 1,Q3 2):第1(k=1)个点Q3 1=[k3]G,第2(k=2)个点Q3 2=[d3]Q2 1G。
针对第4(i=4)点集(Q4 1,Q4 2,Q4 3):第1(k=1)个点Q4 1=[k4]G,第2(k=2)个点Q4 2=[d4]Q3 1G,第3(k=3)个点Q4 3=[d4]Q3 2G。
如此类推,针对第N-1(i=N-1)点集(QN-1 1,QN-1 2……QN-1 N-2):第1(k=1)个点QN-1 1=[kN-1]G,第2(k=2)个点QN-1 2=[dN-1]QN-2 1G,第3(k=3)个点QN-1 3=[dN-1]QN-2 2G,n……,第N-2(k=N-2)个点QN-1 N-2=[dN-1]QN-2 N-3G。
至此得到了从第1方到第N-1方的每一方点集。第N-1方可以将第1点集(即Q1)与第N-1点集(即QN-1 1至QN-1 N-2)发送至第N方,并执行步骤512。
步骤512:通过第N方根据所述基点、第N参数集、第N-1点集以及第1点集生成目标点;利用所述目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r。
示例性地,目标点是指椭圆曲线上的点,也即SM2算法中的(x1,y1)。
可选地,若Q1=[k1][d1 -1](PA+G),则目标点(x1,y1)的计算公式如下:
(x1,y1)=[kN]G+[dN]QN-1 1+[dN]QN-1 2+[dN]QN-1 3+……+[dN]QN-1 N-2+Q1
可选地,若Q1=[k1][d1 -1]PN,则目标点(x1,y1)的计算公式如下:
(x1,y1)=[kN]G+[dN]QN-1 1+[dN]QN-1 2+[dN]QN-1 3+……+[dN]QN-1 N-2+Q1
目标点的第一分量为x1。示例性地,第一分量x1的数据类型可以按GM/T 0003.1-2012第1部分4.2节中定义的方法转换为整数。
消息摘要e是指待输出消息M的摘要。消息摘要e可以由N方设备中获得公钥PA和/或第N公钥因子PN的任意一方,按照GM/T 0003.1-2012定义的方法生成。
在第N方得到第一分量x1与消息摘要e后,可以基于SM2算法生成第一签名分量r。也即r=(e+x1)mod n。若r=0或r+kN=n,则第N方重新确定第N随机数并重新生成目标点。
至此,第一阶段通过步骤511-步骤512,利用第1方至第N方协同生成了签名(r,s)中的第一签名分量r。
随后,第二阶段通过步骤521-步骤523生成签名(r,s)中的第二签名分量s,包括:
步骤521:通过第N方根据所述r与所述第N参数集生成第N分量;
第N方在生成第一签名分量r后,随即根据第一签名分量r与第N参数集生成第N分量SN。
可选地,确定第一签名分量r与第N随机数kN之和,与第N私钥因子dN的模逆的乘积,对基点阶数n的求余结果为第N分量。
即SN=(dN -1(r+kN))mod n
随后,第N方可以将第一签名分量r与第N分量SN发送至第N-1方。第N-1方至第2方依次执行步骤522:通过第j方根据第j参数集与第j+1分量,生成第j分量;其中,2≤j≤N-1。
所谓第N-1方至第2方依次执行步骤522,也即从第N-1方开始,每方设备依次执行步骤522,直到第2方设备完成执行步骤522。如此,步骤522将循环执行N-2遍。
例如,第N-1(j=N-1)方根据第N-1参数集与第N分量SN,生成第N-1分量SN-1。
如图6-7所示,第N-1方将第一签名分量r与第N-1分量SN-1发送至第N-2方。第N-2(j=N-2)方根据第N-2数集与第N-1分量SN-1,生成第N-2分量SN-2。
如此类推,直到第2(j=2)方根据第2参数集与第3分量S3,生成第2分量S2。
可知,从第N-1方开始到第2方,每一方都根据本方的第j参数集以及前一方的第j+1分量Sj+1生成本方的第j分量Sj。
可选地,可以确定第j参数集中第j随机数与第j+1分量之和,与第j参数集中第j私钥因子的模逆的乘积对基点阶数的求余结果为第j分量。
也即Sj=(dj -1(Sj+1+kj))mod n
其中,针对第N-1方至第2方中的任意一方,若Sj+1+kj=n,则第N方重新确定第N随机数,并重新执行步骤512-步骤522。
如图6-7所示,第2方将第一签名分量r与第1分量S2发送至第1方。随后执行步骤523。
步骤523:通过第1方根据第1参数集、第2分量以及所述r生成第二签名分量s,得到所述签名(r,s)。
示例性地,可以确定第1随机数k1与第2分量S2之和,与第1私钥因子d1的模逆的乘积,与第一签名分量r之差对基点阶数的求余结果为第二签名分量s。
也即s=(d1 -1(S2+k1)-r)mod n
至此,第二阶段通过步骤521-步骤523,利用第N方至第1方协同生成了签名(r,s)中的第二签名分量s。因此利用第一阶段生成的第一签名分量r与第二阶段生成的第二签名分量s可以得到签名(r,s)。
可见,在整个协同签名的过程中,第一签名分量r与第二签名分量s均由多方协同生成。签名的生成依赖于多方协同,每方均对最终生成的签名产生影响,由此实现了多方协同签名。同时N方的密钥因子由各方独立产生,签名过程中不传输密钥因子,完整私钥也不出现在运算过程中。就算部分密钥因子被泄露,但通过N-1方密钥因子也无法推导出完整的私钥,因此较好地保证了密钥的私密性。
在一些实施例中,上述协同签名的过程还包括第三阶段。第三阶段用于验证签名(r,s)的正确性,包括步骤531-步骤532。
步骤531:通过所述第1方利用所述N方协同生成的公钥验证所述签名(r,s);
步骤532:在验证通过的情况下,确定所述签名(r,s)为待输出消息的签名。
在生成签名(r,s)后,还可以通过第1方利用公钥PA来验证签名(r,s)的准确性。具体地,可以采用GM/T 0003.2—2012第2部分7.1节中定义的方法,进行公钥PA验证签名(r,s)。在签名验证通过的情况下,可最终确定签名(r,s)为待输出消息M的签名。若签名验证不通过,则输出签名失败的提示信息,以提示用户选择其他方式来生成待输出消息M的签名。
在本实施例中,由于N方协同签名的算法较复杂,通过公钥PA来验证签名(r,s)的准确性,能确保待输出消息的签名的准确性。
以下以三方(N=3)协同生成公钥PA与三方协同签名的过程来说明上述算法的准确性。
首先在SM2算法中,对于已知的私钥dA与基点G,可以确定公钥PA=[dA]G。在SM2的签名算法中,通过产生随机数k,可以计算椭圆曲线点(x1,y1)=[k]G,以及计算r=(e+x1)mod n,与计算:
s=((1+dA)-1·(k-r·dA))mod n
并进行以下的运算变换:
s=((1+dA)-1·(k-r·dA))mod n
=((1+dA)-1·(k+r-r-r·dA))mod n
=((1+dA)-1·(k+r-r(1+dA)))mod n
=((1+dA)-1·(k+r)-r)mod n
由此可知,在SM2算法的标准形式中,椭圆曲线点(x1,y1)=[k]G,第二签名分量s也可以表示为:
s=((1+dA)-1·(k+r)-r)mod n
以下介绍三方协同生成公钥PA的过程。
如图8所示,用户的密钥对(dA,PA)由三方设备按照第一方、第二方、第三方的顺序协同生成。
从第1方开始,第1方产生随机数d1作为第1私钥因子(步骤A1)。其中,d1∈[1,n-1]。随后,第1方计算第1公钥因子P1=[d1]G(步骤A2)。至此,可以得到第1方的密钥对为(d1,P1)。最后,第1方将第1公钥因子P1发送给第2方(步骤A3)。
接着,第2方产生随机数d2作为第2私钥因子(步骤B1)。其中,d2∈[1,n-1]。随后,第2方计算第2公钥因子P2=[d2]P1(步骤B2)。至此,可以得到第2方的密钥对为(d2,P2)。最后,第2方将第2公钥因子P2发送给第3方(步骤B3)。
最后,第3方产生随机数d3作为第3私钥因子(步骤C1)。其中,d3∈[1,n-1]。随后,第3方计算第3公钥因子P3=[d3]P2(步骤C2)。至此,可以得到第3方的密钥对为(d3,P3)。第3方计算用户的公钥PA=P3-G(步骤C3),并将公钥PA广播至第1方与第2方(步骤C4)。
可知,公钥PA的表达式可以简化为:PA=([d3][d2][d1]-1)G。可知,公钥PA对应的私钥dA=d3d2d1-1。
以下介绍三方协同进行签名的过程。
如图9所示,待输出消息M的签名(r,s)由三方设备按照第一方、第二方、第三方的顺序协同生成。
从第1方开始,第1方产生随机数k1∈[1,n-1](步骤D1),并计算第1点集中的点Q1=[k1][d1 -1](PA+G)(步骤D2)。随后将第1点集(Q1)发送给第2方(步骤D3)。
随后,第2方产生随机数k2∈[1,n-1](步骤E1),并计算第2点集中的点Q2 1=[k2]G(步骤E2)。随后将第1点集(Q1)与第2点集(Q2 1)发送给第3方(步骤E3)。
接着,第3方产生随机数k3∈[1,n-1](步骤F1),并计算椭圆曲线上的目标点(x1,y1)=[k3]G+[d3]Q2 1+Q1,按照GM/T 0003.1-2012第1部分4.2节中定义的方法将x1数据类型转换为整数(步骤F2)。随后,第3方获取消息摘要e(步骤F3),并计算第一签名分量r=(e+x1)mod n(步骤F4)、以及第3分量S3=(d3 -1(r+k3))mod n(步骤F5)。最后,第3方将第一签名分量r与第3分量S3发送至第2方(步骤F6)。
第2方计算第2分量S2=(d2 -1(S3+k2))mod n(步骤E4),并将第一签名分量r与第2分量S2发送至第1方(步骤E5)。
第1方计算第二签名分量s=(d1 -1(S2+k1)-r)mod n(步骤D4),得到签名(r,s)。并使用公钥PA验证(r,s)是否为待输出消息M的签名(步骤D5)。如果验证不通过则本次签名失败;若验证通过则输出(r,s)作为消息M的签名。
根据私钥dA=d3d2d1-1、步骤F5中的S3=(d3 -1(r+k3))mod n、步骤E4中的S2=(d2 -1(S3+k2))mod n、以及步骤D4中的s=(d1 -1(S2+k1)-r)mod n,可以得到:
s=(d1 -1(S2+k1)-r)mod n
=(d1 -1d2 -1d3 -1r+d1 -1d2 -1d3 -1k3+d1 -1d2 -1k2+d1 -1k1-r)mod n
=(d1 -1d2 -1d3 -1r+d1 -1d2 -1d3 -1k3+d1 -1d2 -1k2+d1 -1k1-r)mod n
=((1+dA)-1r+(1+dA)-1k3+d1 -1d2 -1d3 -1d3k2+d1 -1d2 -1d3 -1d2d3k1-r)mod n
=((1+dA)-1(k3+d3k2+d2d3k1+r)-r)mod n
结合上文SM2算法标准形式中的s=((1+dA)-1(k+r)-r)mod n,可知本实施例中k=k3+d3k2+d2d3k1。
另外,根据步骤D2中的Q1=[k1][d1 -1](PA+G)、步骤E2中的Q2 1=[k2]G、以及步骤F2中的(x1,y1)=[k3]G+[d3]Q2 1+Q1,可以得到:
(x1,y1)=[k3]G+[d3k2]G+[d1 -1k1][d1d2d3]G
=[k3+d3k2+d2d3k1]G
结合上文SM2算法标准形式中的(x1,y1)=[k]G,可知k=k3+d3k2+d2d3k1。显然,本实施例的第二签名分量s与目标点(x1,y1)均符合SM2算法中的标准形式,因此本实施例提供的三方协同签名算法正确。同理地,本申请提供的N方协同签名算法也可验证正确。
基于上述任意实施例,本申请还提供了一种基于国密算法的系统,用于协同生成签名(r,s)。该系统包括N方设备,而每方所述设备预设有相同的SM2椭圆曲线基点、以及本方的参数集。参数集包括私钥因子、公钥因子与随机数;
第3方至第N-1方依次用于:通过第i方根据所述基点、第i参数集以及第i-1点集,生成第i点集;其中,3≤i≤N-1,3≤N;
第N方用于:根据所述基点、第N参数集、第N-1点集以及第1点集生成目标点;利用所述目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r;以及根据所述r与所述第N参数集生成第N分量;
第N-1方至第2方依次用于:通过第j方根据第j参数集与第j+1分量,生成第j分量;其中,2≤j≤N-1;
第1方用于:根据第1参数集、第2分量以及所述r生成第二签名分量s,得到所述签名(r,s)。
上述系统中各设备的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
基于上述任意实施例所述的一种多方协同签名方法,本申请还提供了如图10所示的一种电子设备的结构示意图。该电子设备用于与其他设备协同生成签名(r,s)。例如,电子设备是上述多方协同签名系统中的其中一方设备。如图10,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述任意实施例所述的一种多方协同签名方法。
本申请还提供了一种计算机存储介质,存储介质存储有计算机程序,计算机程序被处理器执行时可用于执行上述任意实施例所述的一种多方协同签名方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种基于国密算法的多方协同密钥产生和数字签名方法,其特征在于,用于N方设备协同生成签名(r,s);每方所述设备预设有相同的SM2椭圆曲线基点、以及本方的参数集,所述参数集包括私钥因子、公钥因子与随机数;所述方法包括:
第3方至第N-1方依次执行:通过第i方根据所述基点、第i参数集以及第i-1点集,生成第i点集;其中,3≤i≤N-1,3≤N;
通过第N方根据所述基点、第N参数集、第N-1点集以及第1点集生成目标点;利用所述目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r;以及根据所述r与所述第N参数集生成第N分量;
第N-1方至第2方依次执行:通过第j方根据第j参数集与第j+1分量,生成第j分量;其中,2≤j≤N-1;
通过第1方根据第1参数集、第2分量以及所述r生成第二签名分量s,得到所述签名(r,s)。
2.根据权利要求1所述的方法,其特征在于,所述第i点集包括i-1个具有次序的点,所述根据所述基点、第i参数集以及第i-1点集,生成第i点集,包括:
确定所述第i参数集中的第i随机数与所述基点在椭圆曲线上的乘法运算结果为所述第i点集中第一个点;
确定所述第i参数集中的第i私钥因子、所述第i-1点集中第k-1个点与所述基点在椭圆曲线上的乘法运算结果为所述第i点集中第k个点;2≤k≤i-1。
3.根据权利要求1所述的方法,其特征在于,所述根据第j参数集与第j+1分量,生成第j分量,包括:
确定所述第j参数集中第j随机数与所述第j+1分量之和,与所述第j参数集中第j私钥因子的模逆的乘积对所述基点阶数的求余结果为所述第j分量。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述N方中的每方,根据本方身份确定在所述N方中的顺序。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述第1方利用所述N方协同生成的公钥验证所述签名(r,s);
在验证通过的情况下,确定所述签名(r,s)为待输出消息的签名。
6.根据权利要求5所述的方法,其特征在于,所述公钥的生成过程包括:
第2方至第N方依次执行:通过第m方生成第m私钥因子,并根据所述第m私钥因子与第m-1公钥因子,生成第m公钥因子;其中,2≤m≤N;
通过第N方根据第N公钥因子与所述基点生成公钥。
7.根据权利要求6所述的方法,其特征在于,所述第m私钥因子与所述第m公钥因子,为所述第m方的密钥对。
8.一种基于国密算法的系统,其特征在于,用于协同生成签名(r,s);所述系统包括N方设备;每方所述设备预设有相同的SM2椭圆曲线基点、以及本方的参数集,所述参数集包括私钥因子、公钥因子与随机数;
第3方至第N-1方依次用于:通过第i方根据所述基点、第i参数集以及第i-1点集,生成第i点集;其中,3≤i≤N-1,3≤N;
第N方用于:根据所述基点、第N参数集、第N-1点集以及第1点集生成目标点;利用所述目标点的第一点分量与消息摘要,基于SM2算法生成第一签名分量r;以及根据所述r与所述第N参数集生成第N分量;
第N-1方至第2方依次用于:通过第j方根据第j参数集与第j+1分量,生成第j分量;其中,2≤j≤N-1;
第1方用于:根据第1参数集、第2分量以及所述r生成第二签名分量s,得到所述签名(r,s)。
9.一种电子设备,其特征在于,所述电子设备用于与其他设备协同生成签名(r,s);所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器调用所述可执行指令时实现权利要求1-7任一所述方法的操作。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述计算机指令被处理器执行时实现权利要求1-7任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310621782.XA CN116865970A (zh) | 2023-05-30 | 2023-05-30 | 基于国密算法的多方协同密钥产生和数字签名方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310621782.XA CN116865970A (zh) | 2023-05-30 | 2023-05-30 | 基于国密算法的多方协同密钥产生和数字签名方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116865970A true CN116865970A (zh) | 2023-10-10 |
Family
ID=88217976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310621782.XA Pending CN116865970A (zh) | 2023-05-30 | 2023-05-30 | 基于国密算法的多方协同密钥产生和数字签名方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116865970A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117439737B (zh) * | 2023-12-18 | 2024-02-27 | 北京信安世纪科技股份有限公司 | 协同签名方法和协同签名系统 |
-
2023
- 2023-05-30 CN CN202310621782.XA patent/CN116865970A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117439737B (zh) * | 2023-12-18 | 2024-02-27 | 北京信安世纪科技股份有限公司 | 协同签名方法和协同签名系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110971405B (zh) | 多方协同的sm2签名、解密方法及其系统 | |
CN107196763B (zh) | Sm2算法协同签名及解密方法、装置与系统 | |
CN108667625B (zh) | 协同sm2的数字签名方法 | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及系统 | |
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
JP5329676B2 (ja) | 鍵合意プロトコルの加速 | |
CN107248909B (zh) | 一种基于sm2算法的无证书安全签名方法 | |
CN110414981B (zh) | 一种支持ZKPs的同态加密方法和区块链交易金额加密方法 | |
CN110535635B (zh) | 一种支持信息隐藏的协同签名方法与系统 | |
CN112187469B (zh) | 一种基于密钥因子的sm2多方协同数字签名方法和系统 | |
CN112464155B (zh) | 一种数据处理方法、多方安全计算系统和电子设备 | |
CN109361519B (zh) | 一种改进的包含秘密的数的生成方法及系统 | |
Bellare et al. | Deterring certificate subversion: efficient double-authentication-preventing signatures | |
CN112632630A (zh) | 一种基于sm2的协同签名计算方法及装置 | |
CN112118111A (zh) | 一种适用于门限计算的sm2数字签名方法 | |
CN107888385B (zh) | Rsa模数生成方法、rsa密钥生成方法、计算机设备及介质 | |
CN110535636B (zh) | 一种轻量级的基于sm2算法的协同签名方法与装置 | |
CN116865970A (zh) | 基于国密算法的多方协同密钥产生和数字签名方法及系统 | |
CN106921491B (zh) | 一种安全高效的外包计算实现方法和系统 | |
CN114257366B (zh) | 信息同态处理方法、装置、设备及计算机可读存储介质 | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
CN108768634B (zh) | 可验证加密签名生成方法和系统 | |
CN111245594B (zh) | 一种基于同态运算的协同签名方法及系统 | |
CN108964906B (zh) | 协同ecc的数字签名方法 | |
Shin et al. | A verifier-based password-authenticated key exchange using tamper-proof hardware |
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 |