CN103929305A - Sm2签名算法的实现方法 - Google Patents
Sm2签名算法的实现方法 Download PDFInfo
- 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
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签名算法的实现方法。
背景技术
国家密码管理局在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从维尔斯特拉斯形式映射到蒙哥马利形式;
步骤二,置
步骤三,计算其中,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的二次剩余。
则令 再进行坐标变换 维尔斯特拉斯形式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
其中,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十Zm)·2(Xm-Zm)2
其中,X1代表基点G的X坐标,Z1代表基点G的Z坐标,Xm代表第m点的X坐标,Zm代表第m点的Z坐标。
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)
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)
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椭圆曲线公钥加密、解密与加解密混合*** |
-
2013
- 2013-01-16 CN CN201310016288.7A patent/CN103929305A/zh active Pending
Patent Citations (4)
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)
Title |
---|
王潮,时向勇,牛志华: "基于 Montgomery 曲线改进 ECDSA 算法的研究", 《通信学报》 * |
Cited By (9)
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 |