CN109150544A - 一种在嵌入式设备端加快sm2验签的方法 - Google Patents
一种在嵌入式设备端加快sm2验签的方法 Download PDFInfo
- Publication number
- CN109150544A CN109150544A CN201811000664.2A CN201811000664A CN109150544A CN 109150544 A CN109150544 A CN 109150544A CN 201811000664 A CN201811000664 A CN 201811000664A CN 109150544 A CN109150544 A CN 109150544A
- Authority
- CN
- China
- Prior art keywords
- calculated
- calculating
- execute
- under
- sign test
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/32—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using wireless devices
- G06Q20/322—Aspects of commerce using mobile devices [M-devices]
- G06Q20/3227—Aspects of commerce using mobile devices [M-devices] using secure elements embedded in M-devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Finance (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种在嵌入式设备端加快sm2验签的方法。方法包括如下步骤:初始化椭圆曲线记曲线阶为n,签名结果为(r,s),被签名消息和签名者标识的哈希值为m,签名者公钥为Q,获取椭圆曲线基点G;在C语言环境下,计算u=r+s mod n;在C语言环境下,计算(x,y)=s*G+u*Q;在C语言环境下,计算v=m+x mod n;判断是否满足v=r,满足则签名验证通过,否则签名验证不通过。本发明相对于现有技术具有以下优点:通过优化算法使得一些低端嵌入式设备具有较快的sm2验签速度,有效降低产品成本。
Description
技术领域:
本发明涉及移动支付技术领域,进一步涉及一种在嵌入式设备端加快sm2验签的方法。
背景技术:
因为刷卡支付,二维码支付等移动支付手段的进一步推广,sm2验签技术被广泛使用到嵌入式设备中。
目前移动支付的嵌入式设备普遍要求成本低,导致运算能力存在限制。研究嵌入式设备端加快sm2验签的方法可以有效解决上述问题。
由于高精度整数乘法和取模运算处于sm2验签算法最底层循环,所以改进乘法和取模运算运行速度能够有效提升sm2验签速度。在乘法运算中使用快速乘法代替普通乘法运算,是当前在算法方面普遍使用的优化方式。通过改进进位方式、改进递归过程和改进取模运算等,降低算法时间复杂度,以加快算法执行速度。
一般来说,高精度整数的乘法和取模运算在高级语言实现时会有三个主要问题:速度慢、取模需两次除法运算、中间数值可能越界。因此,应采用汇编语言和优化算法实现上述运算。使用汇编语言代替高级语言实现,是当前在语言方面普遍使用的优化方式,能够提高指令执行效率,可以加快程序运行速度。
发明内容:
本发明的目的在于提供一种可以加快sm2验签的方法。
本发明通过如下方式实现:
一种在嵌入式设备端加快sm2验签的方法,包括如下步骤:
步骤1:初始化椭圆曲线,记曲线阶为n,签名结果为(r,s),被签名消息和签名者标识的哈希值为m,获取椭圆曲线基点G,签名者公钥为Q;
步骤2:在C语言环境下,计算u=r+s mod n;
步骤3:在C语言环境下,计算(x,y)=s*G+u*Q;
步骤4:在C语言环境下,计算v=m+x mod n;
步骤5:判断是否满足v=r,满足则签名验证通过,否则签名验证不通过。
优选方案一,所述步骤3包括如下具体过程:
步骤3.1:记s=(st-1,st-2,…,s1,s0)2,u=(uk-1,uk-2,…,u1,u0)2取椭圆曲线点M=∞,N=∞,取整数i=t-1,j=k-1,执行3.2;
步骤3.2:判断是否i>=0,是则执行3.3,否则执行3.5;
步骤3.3:计算M=M+M,i=i-1,判断是否si=1,是则执行3.4,否则执行3.2;
步骤3.4:计算M=M+G,执行3.2;
步骤3.5:判断是否j>=0,是则执行3.6,否则执行3.8;
步骤3.6:计算N=N+N,j=j-1,判断是否uj=1,是则执行3.7,否则执行3.3;
步骤3.7:计算N=N+Q,执行3.2;
步骤3.8:返回(x,y)=M+N。
本发明相对于现有技术具有以下优点:
(一)通过优化算法提升sm2验签速度,没有增加硬件成本。
(二)通过优化算法使得一些低端嵌入式设备具有较快的sm2验签速度,有效降低产品成本。
附图说明:
图1为本发明方法的流程框图。
具体实施方式:
实施例:
一种在嵌入式设备端加快sm2验签的方法,包括如下步骤:
步骤1:初始化椭圆曲线,记曲线阶为n,签名结果为(r,s),被签名消息和签名者标识的哈希值为m,获取椭圆曲线基点G,签名者公钥为Q;
步骤2:在C语言环境下,计算u=r+s mod n;
步骤3:在C语言环境下,计算(x,y)=s*G+u*Q;
步骤4:在C语言环境下,计算v=m+x mod n;
步骤5:判断是否满足v=r,满足则签名验证通过,否则签名验证不通过。
所述步骤3包括如下具体过程:
步骤3.1:记s=(st-1,st-2,…,s1,s0)2,u=(uk-1,uk-2,…,u1,u0)2取椭圆曲线点M=∞,N=∞,取整数i=t-1,j=k-1,执行3.2;
步骤3.2:判断是否i>=0,是则执行3.3,否则执行3.5;
步骤3.3:计算M=M+M,i=i-1,判断是否si=1,是则执行3.4,否则执行3.2;
步骤3.4:计算M=M+G,执行3.2;
步骤3.5:判断是否j>=0,是则执行3.6,否则执行3.8;
步骤3.6:计算N=N+N,j=j-1,判断是否uj=1,是则执行3.7,否则执行3.3;
步骤3.7:计算N=N+Q,执行3.2;
步骤3.8:返回(x,y)=M+N。
上述步骤3.3,3.4,3.6,3.7,3.8中涉及的椭圆曲线上点A、点B、点C之间A=B+C的计算,按如下过程进行:
步骤3a:记B=(x1,y1),C=(x2,y2),A=(x3,y3),椭圆曲线方程为y2=x3+ax+b;
步骤3b:计算c=x1*x1;
步骤3c:计算d=x2*x2;
步骤3d:计算e=x1*x2;
步骤3e:计算λ=(c+d+e+a)/(y1+y2);
步骤3f:计算λ2=λ*λ;
步骤3g:计算x3=λ2-x1-x2;
步骤3h:计算f=λ*x1;
步骤3i:计算g=λ*x3;
步骤3j:计算y3=f-g-y1;
步骤3k:返回A=(x3,y3)。
上述步骤3b、步骤3c、步骤3d、步骤3f、步骤3h、3i中涉及的十进制下计算z=x*y,算法为z=alg(x,y),记m=(x与y的位数的最大值),递归下降最低位数为k,m和k均为编译前指定,且m为k的2的幂次倍;包括如下过程:
步骤301:判断是否满足m<k,是转步骤302,否则转步骤303;
步骤302:返回z=x*y;
步骤303:计算m2=m/2;
步骤304:记x1为x的高m2位,x2为x的低m2位,y1为y的高m2位,y2为y的低m2位;
步骤305:计算z1=alg(x2,y2),z2=alg(x1+x2,y1+y2),z3=alg(x1,y1);
步骤306:返回z=z3*10m+(z2-z3-z1)*10m2+z1。
上述步骤302按如下过程进行:
步骤302-1:在汇编语言环境下,记y的各位数字由高至低为yn、yn-1、…、y1;
步骤302-2:在汇编语言环境下,计算zi=x*yi(1≤i≤n);
步骤302-3:在汇编语言环境下,返回z=∑ni=1zi*10i。
在arm9处理器平台运行本发明实现的sm2验签,同Openssl库实现的sm2算法进行时间测试对比,得到如下结果:
第一种情况:后台有应用程序运行,测试前CPU使用率一般达80%以上,平均值误差约10ms;测试结果对比如下表
版本 | 平均时间 | 最小时间 | 最大时间 |
本发明 | 321ms | 207ms | 553ms |
Openssl验签 | 1394ms | 1216ms | 1625ms |
第二种情况:后台无应用程序运行,测试前CPU使用率一般在1%以下,平均值误差约1ms;测试结果对比如下表
版本 | 平均时间 | 最小时间 | 最大时间 |
本发明 | 33ms | 32ms | 36ms |
Openssl验签 | 115ms | 114ms | 170ms |
测试环境参数:主频:454Mhz,内存128M,每个测试进行1000次统计,测试结果显示,在相同嵌入式平台上,本发明时间性能具有显著优势。
Claims (5)
1.一种在嵌入式设备端加快sm2验签的方法,其特征在于,包括如下步骤:
步骤1:初始化椭圆曲线,记曲线阶为n,签名结果为(r,s),被签名消息和签名者标识的哈希值为m,获取椭圆曲线基点G,签名者公钥为Q;
步骤2:在C语言环境下,计算u=r+s mod n;
步骤3:在C语言环境下,计算(x,y)=s*G+u*Q;
步骤4:在C语言环境下,计算v=m+x mod n;
步骤5:判断是否满足v=r,满足则签名验证通过,否则签名验证不通过。
2.根据权利要求1所述一种在嵌入式设备端加快sm2验签的方法,其特征在于,所述步骤3包括如下具体过程:
步骤3.1:记s=(st-1,st-2,…,s1,s0)2,u=(uk-1,uk-2,…,u1,u0)2取椭圆曲线点M=∞,N=∞,取整数i=t-1,j=k-1,执行3.2;
步骤3.2:判断是否i>=0,是则执行3.3,否则执行3.5;
步骤3.3:计算M=M+M,i=i-1,判断是否si=1,是则执行3.4,否则执行3.2;
步骤3.4:计算M=M+G,执行3.2;
步骤3.5:判断是否j>=0,是则执行3.6,否则执行3.8;
步骤3.6:计算N=N+N,j=j-1,判断是否uj=1,是则执行3.7,否则执行3.3;
步骤3.7:计算N=N+Q,执行3.2;
步骤3.8:返回(x,y)=M+N。
3.根据权利要求2所述的一种在嵌入式设备端加快sm2验签的方法,其特征在于,所述步骤3.3,3.4,3.6,3.7,3.8中涉及的椭圆曲线上点A、点B、点C之间A=B+C的计算,按如下过程进行:
步骤3a:记B=(x1,y1),C=(x2,y2),A=(x3,y3),椭圆曲线方程为y2=x3+ax+b;
步骤3b:计算c=x1*x1;
步骤3c:计算d=x2*x2;
步骤3d:计算e=x1*x2;
步骤3e:计算λ=(c+d+e+a)/(y1+y2);
步骤3f:计算λ2=λ*λ;
步骤3g:计算x3=λ2-x1-x2;
步骤3h:计算f=λ*x1;
步骤3i:计算g=λ*x3;
步骤3j:计算y3=f-g-y1;
步骤3k:返回A=(x3,y3)。
4.根据权利要求3所述一种在嵌入式设备端加快sm2验签的方法,其特征在于,所述步骤3b、步骤3c、步骤3d、步骤3f、步骤3h、3i中涉及的十进制下计算z=x*y,算法为z=alg(x,y),记m=(x与y的位数的最大值),递归下降最低位数为k,m和k均为编译前指定,且m为k的2的幂次倍;包括如下过程:
步骤301:判断是否满足m<k,是转步骤302,否则转步骤303;
步骤302:返回z=x*y;
步骤303:计算m2=m/2;
步骤304:记x1为x的高m2位,x2为x的低m2位,y1为y的高m2位,y2为y的低m2位;
步骤305:计算z1=alg(x2,y2),z2=alg(x1+x2,y1+y2),z3=alg(x1,y1);
步骤306:返回z=z3*10m+(z2-z3-z1)*10m2+z1。
5.根据权利要求4所述一种在嵌入式设备端加快sm2验签的方法,其特征在于,所述步骤302按如下过程进行:
步骤302-1:在汇编语言环境下,记y的各位数字由高至低为yn、yn-1、…、y1;
步骤302-2:在汇编语言环境下,计算zi=x*yi(1≤i≤n);
步骤302-3:在汇编语言环境下,返回z=∑n i=1zi*10i。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811000664.2A CN109150544A (zh) | 2018-08-30 | 2018-08-30 | 一种在嵌入式设备端加快sm2验签的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811000664.2A CN109150544A (zh) | 2018-08-30 | 2018-08-30 | 一种在嵌入式设备端加快sm2验签的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109150544A true CN109150544A (zh) | 2019-01-04 |
Family
ID=64829187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811000664.2A Pending CN109150544A (zh) | 2018-08-30 | 2018-08-30 | 一种在嵌入式设备端加快sm2验签的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109150544A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112737778A (zh) * | 2020-12-30 | 2021-04-30 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 数字签名生成、验证方法及装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296072A (zh) * | 2007-04-29 | 2008-10-29 | 四川虹微技术有限公司 | 一种椭圆曲线上的共享密钥产生方法 |
US20110083015A1 (en) * | 2009-10-05 | 2011-04-07 | Eidgenossiche Technische Hochschule Zurich | System and method for an electronic signature for quick and efficient data authentication |
CN103532710A (zh) * | 2013-09-26 | 2014-01-22 | 中国科学院数据与通信保护研究教育中心 | 基于gpu的sm2算法实现方法及装置 |
CN106856431A (zh) * | 2015-12-09 | 2017-06-16 | 上海华虹集成电路有限责任公司 | 改进的椭圆曲线数字签名算法及验签方法 |
CN108111300A (zh) * | 2016-11-24 | 2018-06-01 | 范洪国 | 一种基于ecc加密的电子商务*** |
-
2018
- 2018-08-30 CN CN201811000664.2A patent/CN109150544A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296072A (zh) * | 2007-04-29 | 2008-10-29 | 四川虹微技术有限公司 | 一种椭圆曲线上的共享密钥产生方法 |
US20110083015A1 (en) * | 2009-10-05 | 2011-04-07 | Eidgenossiche Technische Hochschule Zurich | System and method for an electronic signature for quick and efficient data authentication |
CN103532710A (zh) * | 2013-09-26 | 2014-01-22 | 中国科学院数据与通信保护研究教育中心 | 基于gpu的sm2算法实现方法及装置 |
CN106856431A (zh) * | 2015-12-09 | 2017-06-16 | 上海华虹集成电路有限责任公司 | 改进的椭圆曲线数字签名算法及验签方法 |
CN108111300A (zh) * | 2016-11-24 | 2018-06-01 | 范洪国 | 一种基于ecc加密的电子商务*** |
Non-Patent Citations (1)
Title |
---|
CSDN: "图解SM2算法流程", 《CSDN》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112737778A (zh) * | 2020-12-30 | 2021-04-30 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 数字签名生成、验证方法及装置、电子设备及存储介质 |
CN112737778B (zh) * | 2020-12-30 | 2022-08-12 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 数字签名生成、验证方法及装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Aranha et al. | LadderLeak: Breaking ECDSA with less than one bit of nonce leakage | |
Kannwischer et al. | Single-trace attacks on keccak | |
US7957527B2 (en) | Cryptographic processing apparatus | |
JP6110577B1 (ja) | サイドチャネル情報漏洩に抵抗する楕円曲線点乗算手順 | |
De Mulder et al. | Using Bleichenbacher” s solution to the hidden number problem to attack nonce leaks in 384-bit ECDSA | |
Faz-Hernández et al. | High-performance implementation of elliptic curve cryptography using vector instructions | |
US9520995B2 (en) | Efficient prime-number check | |
CA2614120A1 (en) | Elliptic curve point multiplication | |
US10999056B2 (en) | Apparatus and method for performing operation being secure against side channel attack | |
KR20140046568A (ko) | 단순 전력 파형 분석 및 오류 주입 분석을 방지하는 타원곡선 암호화 방법 및 그 시스템 | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及*** | |
Koppermann et al. | 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices | |
Jalali et al. | ARMv8 SIKE: Optimized supersingular isogeny key encapsulation on ARMv8 processors | |
Van Beirendonck et al. | Analysis and comparison of table-based arithmetic to boolean masking | |
US10348495B2 (en) | Configurable crypto hardware engine | |
CN108875416A (zh) | 椭圆曲线多倍点运算方法和装置 | |
CN109150544A (zh) | 一种在嵌入式设备端加快sm2验签的方法 | |
Luo et al. | Effective simple-power analysis attacks of elliptic curve cryptography on embedded systems | |
Pornin | Optimized binary gcd for modular inversion | |
US10833868B2 (en) | Direct anonymous attestation-based apparatus and method | |
US20120039462A1 (en) | Rsa signature method and apparatus | |
CN109005039A (zh) | 一种在嵌入式设备端加快ecdsa验签的方法 | |
US10659224B2 (en) | Apparatus and method for performing operation being secure against side channel attack | |
US10812260B2 (en) | Apparatus and method for performing operation being secure against side channel attack | |
US11184148B2 (en) | Elliptic curve cryptography scheme for Edwards curves having a differential side-channel attack countermeasure |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190104 |