CN103929305A - Sm2签名算法的实现方法 - Google Patents

Sm2签名算法的实现方法 Download PDF

Info

Publication number
CN103929305A
CN103929305A CN201310016288.7A CN201310016288A CN103929305A CN 103929305 A CN103929305 A CN 103929305A CN 201310016288 A CN201310016288 A CN 201310016288A CN 103929305 A CN103929305 A CN 103929305A
Authority
CN
China
Prior art keywords
montgomery
point
coordinate
calculates
represent
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
Application number
CN201310016288.7A
Other languages
English (en)
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.)
Shanghai Huahong Integrated Circuit Co Ltd
Original Assignee
Shanghai Huahong Integrated Circuit 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 Shanghai Huahong Integrated Circuit Co Ltd filed Critical Shanghai Huahong Integrated Circuit Co Ltd
Priority to CN201310016288.7A priority Critical patent/CN103929305A/zh
Publication of CN103929305A publication Critical patent/CN103929305A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种SM2签名算法的实现方法,包括如下步骤:步骤一,将基点G从维尔斯特拉斯形式映射到蒙哥马利形式;步骤二,置步骤三,计算步骤四,选取随机数k∈[1,n-1];步骤五,在蒙哥马利形式下作kG,令其为(x1,y1),并将x1转化为整数;步骤六,计算r←(e+x1)modn,如果r=m或r+k=n则返回步骤四;步骤七,计算s←((1+dA)-1*(k-r*dA))modn,如果s=0则返回步骤四;步骤八,返回数字签名(r,s)。本发明能使SM2签名算法方案在计算过程中节省存储空间。

Description

SM2签名算法的实现方法
技术领域
本发明涉及密码学领域,特别是涉及一种SM2签名算法的实现方法。
背景技术
国家密码管理局在2010年12月份公布了《SM2椭圆曲线公钥密码算法》,SM2算法本质上是一种椭圆曲线算法(ECC),在细节上,SM2算法规定了签名、验证、密钥交换等具体细节。
SM2签名算法是一种椭圆曲线数字认证方法,可以对数据来源的确认,保证签名者不可抵赖。
椭圆曲线蒙哥马利(Montgomery)形式为EM:By2=x3+Ax+x,在这种形式下,点加运算与倍点运算是不需要y坐标的;而在椭圆曲线维尔斯特拉斯(Weierstrass)形式E:y2=x3+ax+b,点加运算与倍点运算是需要加入y坐标的;其缺点是运算时会占用大量存储空间。
发明内容
本发明要解决的技术问题是提供一种SM2签名算法的实现方法,可以减少运算的存储空间。
为解决上述技术问题,本发明的SM2签名算法的实现方法,包括如下步骤:
步骤一,将基点G从维尔斯特拉斯形式映射到蒙哥马利形式;
步骤二,置其中,ZA是用户杂凑值,M是信息,←是赋值符号;
步骤三,计算其中H(x)为杂凑函数;
步骤四,选取随机数k∈[1,n-1];
步骤五,在蒙哥马利形式下作kG,令其为(x1,y1),并将x1转化为整数;
步骤六,计算r←(e+x1)mod n,如果r=0或r+k=n,则返回步骤四;
步骤七,计算s←((1+dA)-1*(k-r*dA))mod n,如果s=0,则返回步骤四,其中dA是用户私钥;
步骤八,返回数字签名(r,s)。
本发明将SM2签名算法从维尔斯特拉斯形式映射到蒙哥马利形式再生成生成签名对(r,s),因为蒙哥马利形式下,椭圆曲线的点加运算与倍点运算都不需要y坐标,可以极大减少运算时的存储空间。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是所述SM2签名算法的实现方法的流程图;
图2是计算kG=(x1,y1)的流程图。
具体实施方式
本发明从传统的椭圆曲线维尔斯特拉斯形式出发,转化为蒙哥马利形式,再进行签名。结合图1所示,所述SM2签名算法的实现方法,输入参数为椭圆曲线参数,ZA,M,PA,dA,其中ZA是用户杂凑值,M是信息,PA是用户公钥,dA是用户私钥,包括如下步骤:
步骤一,将基点G从维尔斯特拉斯形式映射到蒙哥马利形式;
步骤二,置 M ‾ ← Z A | | M ;
步骤三,计算其中,H(x)为杂凑函数;
步骤四,选取随机数k∈[1,n-1];
步骤五,在蒙哥马利形式下作kG=(x1,y1),并将x1转化为整数;
步骤六,计算r←(e+x1)mod n,如果r=0或r+k=n则返回步骤四;
步骤七,计算s←((1+dA)-1*(k-r*dA))mod n,如果s=0则返回步骤四;
步骤八,返回数字签名(r,s)。
上述各步骤中的运算都是在蒙哥马利(Montgomery)形式下进行的。
在步骤一中,将基点G从维尔斯特拉斯形式映射到蒙哥马利形式还需要满足特定条件:
椭圆曲线维尔斯特拉斯形式E:y2=x3+ax+b,在有限域FP中x3+ax+b=0有根,设为α,同时3α2+a是p的二次剩余。
则令 s = 1 3 α 2 + a , 再进行坐标变换 ( x , y ) → ( x s + a , y s ) , 维尔斯特拉斯形式E:y2=x3+ax+b就可映射到蒙哥马利形式EM:By2=x3+Ax+x上,其中B=s,A=3αs。
所述步骤五中,通过调用以下步骤的算法来计算kG=(x1,y1):
步骤(1),输入整数k以及G=(x∶y∶1);
步骤(2),计算2G=(x′∶y′∶z′);
步骤(3),G′←2G;
步骤(4),把整数k展开成二进制形式其中ks-1=1;
步骤(5),从i=s-2到i=0循环:
步骤(6),若ki=0,Q′←G′+G,Q←2G,若ki=1,Q←G′+G,Q′←2G′;
步骤(7),G′←Q′,G←Q;
步骤(8),i←i-1;
步骤(9),循环结束后,输出点G;
最后,点G的值就等于所求的kG。
而其余步骤即是生成签名对(r,s)了。
所述步骤(6)点加运算与倍点运算是在蒙哥马利形式下完成,即曲线形式为EM:By2=x3+Ax+x。所用具体运算公式如下:
点加运算:
X2m+1=Z1((Xm+1-Zm+1)(Xm+Zm)+(Xm+1+Zm+1)(Xm-Zm))2
Z2m+1=X1((Xm+1-Zm+1)(Xm+Zm)-(Xm+1+Zm+1)(Xm-Zm))2
2倍点运算:
X2m=(Xm+Zm)2(Xm-Zm)2
Z 2 m = 4 X m Z m ( ( X m - Z m ) 2 + ( A + 2 4 ) ( 4 X m Z m ) ) .
其中,X1代表基点的X坐标,Z1代表基点的Z坐标,Xm代表第m点的X坐标,Zm代表第m点的Z坐标。
下面是一实施例:
选取取素数p=2192-264-1,建立有限域Fp,对于维尔斯特拉斯形式椭圆曲线E(Fp):y2=x3+ax+b,其中:
a=0x6A57BA7CC7CA8D851ACBB58340EB80F0E8372EF409A67DDA
b=0x6C681624BCF461FAB96DE16AA545D775E66382F2CEC977CA
α=0xA4413AD3EF0CF90F91DF3FDBB089DC51876087BA609E7664
满足α3+aα+b=0,且3α2+a是p的二次剩余。选取
G=(3723481753107750329954291279722628310934794503609274117335,3421269078914524233454629061344498304474827601428643254921,1),令就转化成了蒙哥马利曲线形式,其X坐标
X=3860313548999787338078427342307244695792884328213221870944,
和Z坐标Z=1,
设k=179=1*20+1*21+0*22+0*23+1*24+1*25+0*26+1*27则kG计算如下:
ki k7 k6 k5 k4 k3 k2 k1 k0
179 1 0 1 1 0 0 1 1
Q G 2G 5G 11G 22G 44G 89G 1 79G
Q′ 2G 3G 6G 12G 23G 45G 90G 1 80G
可见179P即为所求。其X坐标,Z坐标的值如下:
X=620772673523943864697586076752183162272170717129942472090
Z=154061983259894946655828807576947185385080422622278501903。
于是x1=X/Z。之后生成签名对的(r,s)的步骤也就是在蒙哥马利形式下进行的,也是可行的。同时验签过程也一样,这样就可不计算y坐标,从而节省了存储空间。
以上通过具体实施方式和实施例,对本发明进行了详细的说明,但本发明的保护范围不限于所述的实施方式和实施例。在不脱离本发明原理的情况下,本领域技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

Claims (4)

1.一种SM2签名算法的实现方法,其特征在于,包括如下步骤:
步骤一,将基点G从维尔斯特拉斯形式映射到蒙哥马利形式;
步骤二,置其中,ZA是用户杂凑值,M是信息,←是赋值符号;
步骤三,计算其中H(x)为杂凑函数;
步骤四,选取随机数k∈[1,n-1],其中n为点G的阶;
步骤五,在蒙哥马利形式下作kG,令其为(x1,y1),并将x1转化为整数;
步骤六,计算r←(e+x1)modn,如果r=0或r+k=n,则返回步骤四;”
步骤七,计算s←((1+dA)-1*(k-r*dA))modn,如果s=0,则返回步骤四,其中dA是用户私钥,*表示乘号;
步骤八,返回数字签名(r,s)。
2.如权利要求1所述的方法,其特征在于:各步骤中的运算都是在蒙哥马利形式下进行的。
3.如权利要求1所述的方法,其特征在于:实施步骤五时,通过以下方法计算kG=(x1,y1);
步骤(1),输入整数k以及G=(x∶y∶1);
步骤(2),计算2G=(x′∶y′∶z′);
步骤(3),G′←2G;
步骤(4),把整数k展开成二进制形式其中ks-1=1;
步骤(5),从i=s-2到i=0循环:
步骤(6),若ki=W,Q′←G′+G,Q←2G,若ki=1,Q←G′+G,Q′←2G′;
步骤(7),G′←Q′,G←Q;
步骤(8),i←i-1;
步骤(9),循环结束后,输出点G;
最后,点G的值就等于所求的kG。
4.如权利要求3所述的方法,其特征在于:所述步骤(6)中的点加运算与倍点运算是在蒙哥马利形式下完成的,即曲线形式为EM∶Ey2=X3+Ax+x;B,A为椭圆曲线参数,其中:
点加运算按如下公式计算:
X2m+1=Z1((Xm+1-Zm+1)(Xm+Zm)+(Xm+1+Zm+1)(Xm-Zm))2
Z2m+1=X1((Xm+1-Zm+1)(Xm+Zm)-(Xm+1+Zm+1)(Xm-Zm))2
2倍点运算按如下公式计算:
X2m=(Xm十Zm2(Xm-Zm)2
Z 2 m = 4 X m Z m ( ( X m - Z m ) 2 + ( A + 2 4 ) ( 4 X m Z m ) ) ;
其中,X1代表基点G的X坐标,Z1代表基点G的Z坐标,Xm代表第m点的X坐标,Zm代表第m点的Z坐标。
CN201310016288.7A 2013-01-16 2013-01-16 Sm2签名算法的实现方法 Pending CN103929305A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310016288.7A CN103929305A (zh) 2013-01-16 2013-01-16 Sm2签名算法的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310016288.7A CN103929305A (zh) 2013-01-16 2013-01-16 Sm2签名算法的实现方法

Publications (1)

Publication Number Publication Date
CN103929305A true CN103929305A (zh) 2014-07-16

Family

ID=51147390

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310016288.7A Pending CN103929305A (zh) 2013-01-16 2013-01-16 Sm2签名算法的实现方法

Country Status (1)

Country Link
CN (1) CN103929305A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106712942A (zh) * 2017-01-10 2017-05-24 武汉理工大学 基于秘密共享的sm2数字签名生成方法及***
CN106850198A (zh) * 2017-01-16 2017-06-13 武汉理工大学 基于多装置协同的sm2数字签名生成方法及***
CN107425968A (zh) * 2017-06-22 2017-12-01 广东工业大学 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现***
CN109936455A (zh) * 2017-12-19 2019-06-25 航天信息股份有限公司 一种数字签名的方法、装置和***
CN114895870A (zh) * 2022-04-29 2022-08-12 中国人民解放军93216部队 基于fpga实现的高效可重构sm2点乘方法及***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090207997A1 (en) * 2001-12-10 2009-08-20 Tsuyoshi Takagi Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program and elliptic curve cryptosystem arithmetic method
CN102761413A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥密码算法的实现***
CN102761415A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合***
CN102761412A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥加密、解密与加解密混合***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090207997A1 (en) * 2001-12-10 2009-08-20 Tsuyoshi Takagi Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program and elliptic curve cryptosystem arithmetic method
CN102761413A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥密码算法的实现***
CN102761415A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合***
CN102761412A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥加密、解密与加解密混合***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王潮,时向勇,牛志华: "基于 Montgomery 曲线改进 ECDSA 算法的研究", 《通信学报》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106712942A (zh) * 2017-01-10 2017-05-24 武汉理工大学 基于秘密共享的sm2数字签名生成方法及***
CN106712942B (zh) * 2017-01-10 2019-08-23 武汉理工大学 基于秘密共享的sm2数字签名生成方法及***
CN106850198A (zh) * 2017-01-16 2017-06-13 武汉理工大学 基于多装置协同的sm2数字签名生成方法及***
CN106850198B (zh) * 2017-01-16 2019-10-25 武汉理工大学 基于多装置协同的sm2数字签名生成方法及***
CN107425968A (zh) * 2017-06-22 2017-12-01 广东工业大学 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现***
CN109936455A (zh) * 2017-12-19 2019-06-25 航天信息股份有限公司 一种数字签名的方法、装置和***
CN109936455B (zh) * 2017-12-19 2022-06-07 航天信息股份有限公司 一种数字签名的方法、装置和***
CN114895870A (zh) * 2022-04-29 2022-08-12 中国人民解放军93216部队 基于fpga实现的高效可重构sm2点乘方法及***
CN114895870B (zh) * 2022-04-29 2022-11-25 中国人民解放军93216部队 基于fpga实现的高效可重构sm2点乘方法及***

Similar Documents

Publication Publication Date Title
JP6682041B2 (ja) モジュロ演算に基づく完全準同型暗号化の処理方法
US10778410B2 (en) Homomorphic data encryption method and apparatus for implementing privacy protection
CN103427997B (zh) 一种生成数字签名的方法及装置
US8345864B1 (en) Elliptic curve cryptography scalar multiplication with on demand acceleration table generation
CN109145616B (zh) 基于高效模乘的sm2加密、签名和密钥交换的实现方法及***
WO2015164996A1 (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
CN106712965B (zh) 数字签名方法、装置以及密码设备
CN106357701A (zh) 云存储中数据的完整性验证方法
JP2009537025A5 (zh)
CN103929305A (zh) Sm2签名算法的实现方法
CN101763241B (zh) 实现ecc密码体制中签名算法的大整数求模运算装置及求模方法
CN105245343A (zh) 一种基于多变量密码技术的在线离线签名***及方法
US11902432B2 (en) System and method to optimize generation of coprime numbers in cryptographic applications
CN109962783B (zh) 基于递进计算的sm9数字签名协同生成方法及***
CA3161664A1 (en) Method and system for digital signatures utilizing multiplicative semigroups
CN103580869B (zh) 一种crt-rsa签名方法及装置
CN105119929A (zh) 单一恶意云服务器下的安全模指数外包方法及***
CN110798313B (zh) 基于秘密动态共享的包含秘密的数的协同生成方法及***
CN110266486B (zh) 基于乘积秘密共享的sm9数字签名简捷生成方法及***
CN104506316A (zh) 一种基于sm2基点的点乘运算方法
Pund et al. Implementation of RSA algorithm using mersenne prime
CN108008934B (zh) 一种基于查找表的复合有限域求逆装置
RU120303U1 (ru) Устройство для преобразования блоков данных при шифровании
CN102546160B (zh) 用于椭圆曲线密码防御差分功耗攻击的方法
RU2401513C2 (ru) Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140716

WD01 Invention patent application deemed withdrawn after publication