CN107623570B - 一种基于加法密钥分割的sm2签名方法 - Google Patents
一种基于加法密钥分割的sm2签名方法 Download PDFInfo
- Publication number
- CN107623570B CN107623570B CN201711068252.8A CN201711068252A CN107623570B CN 107623570 B CN107623570 B CN 107623570B CN 201711068252 A CN201711068252 A CN 201711068252A CN 107623570 B CN107623570 B CN 107623570B
- Authority
- CN
- China
- Prior art keywords
- random number
- client
- calculation result
- generates
- server
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于加法密钥分割的SM2签名方法。本方法提出将私钥拆分成两个私钥分量,一个在服务端,一个在客户端,通信双方均无法得到完整私钥,确保私钥的存储安全。进行签名运算时,需服务端和客户端共同参与,任何一方无法独立完成签名,从而确保私钥使用的安全性。
Description
技术领域
本发明涉及密码领域,具体涉及一种基于加法密钥分割的SM2签名方法。
背景技术
目前,基于公钥密码学的数字签名技术已经广泛应用在电子商务、身份认证等应用中,成为保证信息安全的重要工具,而私钥的安全性及使用是保证这些应用安全的基础。而随着我国移动电子商务的高速发展,基于UsbKey等硬件设备的服务方式很难在移动终端领域得到大家的认可,因此在移动设备等不安全环境下进行私钥的有效保护是目前面临的一个重大问题。
发明内容
本发明的目的是针对现有技术中的不足,提供一种基于加法密钥分割的SM2签名方法。
为实现上述目的,本发明公开了如下技术方案:
一种签名密钥生成方法,包括:
S1客户端A生成自身的子私钥dA:客户端A产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dA,即有:dA∈[1,n-1],其中n表示椭圆曲线的基点G的阶;
S2服务端B生成自身的子私钥dB:服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dB;
S3客户端A和服务端B约定一个正整数m,其中m≥112;
即有:yi∈[0,n-1];
v∈[1,n-1];
S6对i=1,2,......,m执行如下过程:
即有:k∈{0,1};
r∈[1,n-1]。
S602服务端B计算(h0+yi)v-1modn,将计算结果记为f0,计算(h1+yi)v-1modn,将计算结果记为f1;
即有:f0=(h0+yi)v-1modn;
f1=(h1+yi)v-1modn;
其中v-1modn表示使得v·y≡1(modn)成立的唯一整数y,1≤y≤n-1;
S603服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数记为x,并计算[x]G,将计算结果记为X,且将X发送给客户端A;
即有:x∈[1,n-1];
X=[x]G。
其中[x]G表示椭圆曲线上点G的x倍点,x是正整数;
S604客户端A生成一个位于[1,n-1]之间的随机数,将产生的随机数记为y,并计算[y]G,将计算结果记为F,计算H(F),将计算结果记为key;
即有:y∈[1,n-1];
F=[y]G;
key=H(F)。
其中,H为密码杂凑函数;
若k=0,则Y=F,若k≠0,则Y=X+F,并将Y发送给服务端B;
即有:k0=H([x]Y);
k1=H([x](Y-X));
即有:P=[v-1]([u-1]G)-G;
S8服务端B将[v-1]G发送给客户端A,客户端A计算签名公钥[u-1]([v-1]G)-G,记为P;
即有:P=[u-1]([v-1]G)-G。
本发明公开的一种基于加法密钥分割的SM2签名方法,包括:
客户端A生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和第一部分签名发送给服务端B;
服务端B生成第二部分签名r和第三部分签名s1,将r和s1发送给第一部分客户端A;
客户端A根据Q1、r和s1生成完整签名(r,s)并输出。
在进一步的技术方案中,所述客户端A生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和第一部分签名Q1发送给服务端B,包括:
客户端A计算H(Z||M),将计算结果记为e,且生成一个位于[1,n-1]之间的随机数,将计算结果记为k1,并计算[k1](P+G),将计算结果记为Q1,将e和Q1发送给服务端B,其中,M为待签名的消息,Z是按照SM2算法对用户标识、标识长度、椭圆曲线参数、用户签名公钥等信息使用密码杂凑函数H计算的杂凑值。
在进一步的技术方案中,所述服务端B生成第二部分签名r和第三部分签名s1,将r和s1发送给第一部分客户端A,包括:
服务端B生成一个位于[1,n-1]之间的随机数,将计算结果记为k2,计算椭圆曲线点[k2](P+G)+[k1](P+G),将计算结果记为(x1,y1),计算(e+x1)modn,将计算结果记为r,其中,若r=0则返回步骤9,否则计算k2+rdBmodn,将计算结果记为s1,并将r,s1发送给客户端A。
在进一步的技术方案中,所述客户端A根据Q1、r和s1生成完整签名(r,s)并输出,包括:
客户端A计算k1+rdA+s1-rmodn,将计算结果记为s,其中,若s=0或r+s=0modn,则返回至客户端A生成待签名消息M的消息摘要e和第一部分签名Q1步骤进行重新计算,否则,消息M的数字签名为(r,s)。
本发明公开的一种基于加法密钥分割的SM2签名方法,具有以下
有益效果:
本方法提出将私钥拆分成两个私钥分量,一个在服务端,一个在客户端,通信双方均无法得到完整私钥,确保私钥的存储安全。进行签名运算时,需服务端和客户端共同参与,任何一方无法独立完成签名,从而确保私钥使用的安全性。
附图说明
图1为本发明的简要流程图。
图2为本发明签名密钥的生成的流程图。
图3为本发明基于SM2算法的签名方法实施例的流程图。
具体实施方式
下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
见图1、图2,本发明公开的一种签名密钥生成方法,包括:
S1客户端A生成自身的子私钥dA:客户端A产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dA,即有:dA∈[1,n-1],其中n表示椭圆曲线的基点G的阶;
S2服务端B生成自身的子私钥dB:服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dB;
S3客户端A和服务端B约定一个正整数m,其中m≥112;
即有:yi∈[0,n-1];
v∈[1,n-1];
S6对i=1,2,......,m执行如下过程:
即有:k∈{0,1};
r∈[1,n-1]。
S602服务端B计算(h0+yi)v-1modn,将计算结果记为f0,计算(h1+yi)v-1modn,将计算结果记为f1;
即有:f0=(h0+yi)v-1modn;
f1=(h1+yi)v-1modn;
其中v-1modn表示使得v·y≡1(modn)成立的唯一整数y,1≤y≤n-1;
S603服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数记为x,并计算[x]G,将计算结果记为X,且将X发送给客户端A;
即有:x∈[1,n-1];
X=[x]G。
其中[x]G表示椭圆曲线上点G的x倍点,x是正整数;
S604客户端A生成一个位于[1,n-1]之间的随机数,将产生的随机数记为y,并计算[y]G,将计算结果记为F,计算H(F),将计算结果记为key;
即有:y∈[1,n-1];
F=[y]G;
key=H(F)。
其中,H为密码杂凑函数;
若k=0,则Y=F,若k≠0,则Y=X+F,并将Y发送给服务端B;
即有:k0=H([x]Y);
k1=H([x](Y-X));
即有:P=[v-1]([u-1]G)-G;
S8服务端B将[v-1]G发送给客户端A,客户端A计算签名公钥[u-1]([v-1]G)-G,记为P;
即有:P=[u-1]([v-1]G)-G。
SM2算法是一种标准的商用密码算法,在密码产品中被广泛的支持和使用。见图3,本发明公开的一种基于加法密钥分割的SM2签名方法,包括:
客户端A生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和第一部分签名发送给服务端B;
服务端B生成第二部分签名r和第三部分签名s1,将r和s1发送给第一部分客户端A;
客户端A根据Q1、r和s1生成完整签名(r,s)并输出。
在本发明的一种实施例中,所述客户端A生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和第一部分签名Q1发送给服务端B,包括:
客户端A计算H(Z||M),将计算结果记为e,且生成一个位于[1,n-1]之间的随机数,将计算结果记为k1,并计算[k1](P+G),将计算结果记为Q1,将e和Q1发送给服务端B,其中,M为待签名的消息,Z是按照SM2算法对用户标识、标识长度、椭圆曲线参数、用户签名公钥等信息使用密码杂凑函数H计算的杂凑值。
在本发明的一种实施例中,所述服务端B生成第二部分签名r和第三部分签名s1,将r和s1发送给第一部分客户端A,包括:
服务端B生成一个位于[1,n-1]之间的随机数,将计算结果记为k2,计算椭圆曲线点[k2](P+G)+[k1](P+G),将计算结果记为(x1,y1),计算(e+x1)modn,将计算结果记为r,其中,若r=0则返回步骤9,否则计算k2+rdBmodn,将计算结果记为s1,并将r,s1发送给客户端A。
在本发明的一种实施例中,所述客户端A根据Q1、r和s1生成完整签名(r,s)并输出,包括:
客户端A计算k1+rdA+s1-rmodn,将计算结果记为s,其中,若s=0或r+s=0modn,则返回至客户端A生成待签名消息M的消息摘要e和第一部分签名Q1步骤进行重新计算,否则,消息M的数字签名为(r,s)。
相比背景技术中介绍的内容,本方法提出将私钥拆分成两个私钥分量,一个在服务端,一个在客户端,通信双方均无法得到完整私钥,确保私钥的存储安全。进行签名运算时,需服务端和客户端共同参与,任何一方无法独立完成签名,从而确保私钥使用的安全性。
以上所述仅是本发明的优选实施方式,而非对其限制;应当指出,尽管参照上述各实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,其依然可以对上述各实施例所记载的技术方案进行修改,或对其中部分或者全部技术特征进行等同替换;而这些修改和替换,并不使相应的技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (2)
1.一种签名密钥生成方法,其特征在于,包括:
S1客户端A生成自身的子私钥dA:客户端A产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dA,即有:dA∈[1,n-1],其中n表示椭圆曲线的基点G的阶;
S2服务端B生成自身的子私钥dB:服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dB;
S3客户端A和服务端B约定一个正整数m,其中m≥112;
即有:yi∈[0,n-1];
v∈[l,n-1];
S6对i=1,2,......,m执行如下过程:
即有:k∈{0,1};
r∈[l,n-1];
S602服务端B计算(h0+yi)v-1mod n,将计算结果记为f0,计算(hl+yi)v-1mod n,将计算结果记为f1;
即有:f0=(h0+yi)v-1mod n;
f1=(hl+yi)v-1mod n;
其中,v-1mod n表示使得v·y≡1(mod n)成立的唯一整数y,1≤y≤n-1;
S603服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数记为x,并计算[x]G,将计算结果记为X,且将X发送给客户端A;
即有:x∈[1,n-1];
X=[x]G;
其中[x]G表示椭圆曲线上点G的x倍点,x是正整数;
S604客户端A生成一个位于[1,n-1]之间的随机数,将产生的随机数记为y,并计算[y]G,将计算结果记为F,计算H(F),将计算结果记为key;
即有:y∈[1,n-1];
F=[y]G;
key=H(F);
其中,H为密码杂凑函数;
若k=0,则Y=F,若k≠0,则Y=X+F,并将Y发送给服务端B;
即有:k0=H([x]Y);
kl=H([x](Y-X));
即有:P=[v-1]([u-1]G)-G;
S8服务端B将[v-1]G发送给客户端A,客户端A计算签名公钥[u-1]([v-1]G)-G,记为P;
即有:P=[u-1]([v-1]G)-G。
2.一种基于加法密钥分割的SM2签名方法,其特征在于,包括:
客户端A生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和第一部分签名发送给服务端B,包括:
客户端A计算H(Z||M),将计算结果记为e,且生成一个位于[1,n-1]之间的随机数,将计算结果记为k1,并计算[kl](P+G),将计算结果记为Q1,将e和Q1发送给服务端B,其中,M为待签名的消息,Z是按照SM2算法对用户标识、标识长度、椭圆曲线参数、用户签名公钥等信息使用密码杂凑函数H计算的杂凑值;
服务端B生成第二部分签名r和第三部分签名s1,将r和s1发送给第一部分客户端A,包括:
服务端B生成一个位于[1,n-1]之间的随机数,将计算结果记为k2,计算椭圆曲线点[k2](P+G)+[kl](P+G),将计算结果记为(x1,y1},计算(e+xl)mod n,将计算结果记为r,其中,若r=0则返回步骤9,否则计算k2+rdB mod n,将计算结果记为s1,并将r,s1发送给客户端A;
客户端A根据Ql、r和s1生成完整签名(r,s)并输出,包括:
客户端A计算k1+rdA+s1-r mod n,将计算结果记为s,其中,若s=0或r+s=0mod n,则返回至客户端A生成待签名消息M的消息摘要e和第一部分签名Q1步骤进行重新计算,否则,消息M的数字签名为(r,s)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711068252.8A CN107623570B (zh) | 2017-11-03 | 2017-11-03 | 一种基于加法密钥分割的sm2签名方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711068252.8A CN107623570B (zh) | 2017-11-03 | 2017-11-03 | 一种基于加法密钥分割的sm2签名方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107623570A CN107623570A (zh) | 2018-01-23 |
CN107623570B true CN107623570B (zh) | 2020-12-04 |
Family
ID=61092401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711068252.8A Active CN107623570B (zh) | 2017-11-03 | 2017-11-03 | 一种基于加法密钥分割的sm2签名方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107623570B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737103B (zh) * | 2018-03-27 | 2021-06-29 | 中国科学院数据与通信保护研究教育中心 | 一种应用于cs架构的sm2算法签名方法 |
CN108964923B (zh) * | 2018-06-22 | 2021-07-20 | 成都卫士通信息产业股份有限公司 | 隐藏私钥的交互式sm2签名方法、***和终端 |
CN109039611B (zh) * | 2018-08-31 | 2019-05-21 | 北京海泰方圆科技股份有限公司 | 基于sm9算法的解密密钥分割及解密方法、装置、介质 |
CN110943826B (zh) * | 2018-09-21 | 2022-03-25 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的拆分密钥签名方法与*** |
CN109274503B (zh) * | 2018-11-05 | 2022-01-04 | 北京仁信证科技有限公司 | 分布式协同签名方法及分布式协同签名装置、软盾*** |
CN109639415A (zh) * | 2018-12-19 | 2019-04-16 | 南京壹证通信息科技有限公司 | 一种基于密钥分割的协同密钥存储恢复方法 |
WO2020168543A1 (zh) * | 2019-02-22 | 2020-08-27 | 云图有限公司 | 数据处理方法和装置 |
CN110278088A (zh) * | 2019-07-18 | 2019-09-24 | 广州安研信息科技有限公司 | 一种sm2协同签名方法 |
CN110378139B (zh) * | 2019-07-25 | 2021-07-30 | 江苏芯盛智能科技有限公司 | 一种数据密钥保护方法、***及电子设备和存储介质 |
CN111191263A (zh) * | 2019-12-30 | 2020-05-22 | 北京天威诚信电子商务服务有限公司 | 一种pdf电子签章方法及*** |
CN112712357A (zh) * | 2020-12-30 | 2021-04-27 | 普华云创科技(北京)有限公司 | 一种多机构多链多币种多账户的私钥管理方法与*** |
CN115801322A (zh) * | 2022-10-20 | 2023-03-14 | 浪潮软件股份有限公司 | 一种实现服务端安全通信的加密方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014153462A2 (en) * | 2013-03-22 | 2014-09-25 | Nok Nok Labs, Inc. | Advanced authentication techniques and applications |
CN106603246A (zh) * | 2017-01-22 | 2017-04-26 | 武汉理工大学 | 一种sm2数字签名分割生成方法及*** |
CN106712968A (zh) * | 2017-02-22 | 2017-05-24 | 北京智慧云测科技有限公司 | 密钥获取方法、数字签名方法和装置 |
CN106850229A (zh) * | 2017-01-22 | 2017-06-13 | 武汉理工大学 | 基于乘积秘密分割的sm2数字签名生成方法及*** |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
-
2017
- 2017-11-03 CN CN201711068252.8A patent/CN107623570B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014153462A2 (en) * | 2013-03-22 | 2014-09-25 | Nok Nok Labs, Inc. | Advanced authentication techniques and applications |
CN106603246A (zh) * | 2017-01-22 | 2017-04-26 | 武汉理工大学 | 一种sm2数字签名分割生成方法及*** |
CN106850229A (zh) * | 2017-01-22 | 2017-06-13 | 武汉理工大学 | 基于乘积秘密分割的sm2数字签名生成方法及*** |
CN106712968A (zh) * | 2017-02-22 | 2017-05-24 | 北京智慧云测科技有限公司 | 密钥获取方法、数字签名方法和装置 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
Also Published As
Publication number | Publication date |
---|---|
CN107623570A (zh) | 2018-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107623570B (zh) | 一种基于加法密钥分割的sm2签名方法 | |
CN109088726B (zh) | 基于sm2算法的通信双方协同签名及解密方法和*** | |
CN108667626B (zh) | 安全的两方协作sm2签名方法 | |
CN109246129B (zh) | 一种可验证客户端身份的sm2协同签名方法及*** | |
US7814326B2 (en) | Signature schemes using bilinear mappings | |
US9698993B2 (en) | Hashing prefix-free values in a signature scheme | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
US8995656B2 (en) | Multiple hashing in a cryptographic scheme | |
US9166957B2 (en) | Digital file authentication using biometrics | |
US9049022B2 (en) | Hashing prefix-free values in a certificate scheme | |
Roy et al. | A survey on digital signatures and its applications | |
US9438589B2 (en) | Binding a digital file to a person's identity using biometrics | |
CN109743166B (zh) | 多方签名生成方法及安全信息验证*** | |
CN110380846B (zh) | 一种电子病历患者签名方法及*** | |
CN112383397B (zh) | 一种基于生物特征的异构签密通信方法 | |
CN111934877A (zh) | 一种sm2协同门限签名方法及电子装置 | |
CA2669472C (en) | Compressed ecdsa signatures | |
CN110086630B (zh) | 基于爱德华兹曲线数字签名的生成方法 | |
CN106453253B (zh) | 一种高效的基于身份的匿签密方法 | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
Chande et al. | An improvement of a elliptic curve digital signature algorithm | |
WO2018090947A1 (zh) | 一类高效的秘密共识方法 | |
Pal et al. | Diffie-Hellman key exchange protocol with entities authentication | |
CN110943826B (zh) | 一种基于sm2算法的拆分密钥签名方法与*** | |
US20060104447A1 (en) | Discrete logarithm-based cryptography using the Shafarevich-Tate group |
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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Yuan Feng Inventor after: Zhang Liyuan Inventor after: Feng Weiduan Inventor after: Zhang Yangpan Inventor before: Yuan Feng Inventor before: Jiang Nan Inventor before: Yao Le |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |