CN109145616B - 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 - Google Patents
基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 Download PDFInfo
- Publication number
- CN109145616B CN109145616B CN201810862172.8A CN201810862172A CN109145616B CN 109145616 B CN109145616 B CN 109145616B CN 201810862172 A CN201810862172 A CN 201810862172A CN 109145616 B CN109145616 B CN 109145616B
- Authority
- CN
- China
- Prior art keywords
- multiplication
- modular
- prime number
- result
- module
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
一种基于高效模乘的SM2加密、签名和密钥交换的实现方法及系统,根据素数特征优化的蒙哥马利蒙模乘方法,将SM2素数参与的乘法运算进行优化后进行模逆运算,最后实现SM2中签名、加解密及密钥交换的标量乘运算的快速实现。本发明利用SM2素数的特征实现高效的模乘,基于该模乘构建高效的标量乘实现和模逆实现,适用于SM2中签名、加解密和密钥交换算法的具体实现。
Description
技术领域
本发明涉及的是一种计算机安全领域的技术,具体是一种基于素数特征的效率达到传统实现方式两倍的模乘实现,基于该模乘实现能够构建效率达到传统实现两倍的SM2系列算法实现方法及系统。
背景技术
标量乘运算是SM2(椭圆曲线公钥密码算法)乃至所有ECC方案安全性的基础,现有基于椭圆曲线SM2包含三种方案:签名方案、密钥交换方案及加解密方案,而三个方案中计算量最大的部分为标量乘运算。由于SM2定义在素数域上,实现时不能使用仿射坐标。对于坐标系的选择,通常会有投影坐标及雅克比坐标,这两种坐标能够避免在大量的求逆,但在标量乘计算完毕后需要将结果坐标转换至仿射坐标下,因此在整个计算过程需要一次求逆,导致计算效率较低。
发明内容
本发明针对现有技术存在的上述不足,提出一种基于高效模乘的SM2加密、签名和密钥交换的实现方法及系统,利用SM2素数的特征实现高效的模乘,基于该模乘构建高效的标量乘实现和模逆实现,适用于SM2中签名、加解密和密钥交换算法的具体实现。
本发明是通过以下技术方案实现的:
本发明涉及一种基于高效模乘的SM2加密、签名和密钥交换的实现方法,根据素数特征优化的蒙哥马利蒙模乘方法,将SM2素数参与的乘法运算进行优化后进行模逆运算,最后实现SM2中签名、加解密及密钥交换的标量乘运算的快速实现。
所述的素数特征是指:-P-1mod232=1,即该素数在32比特基础乘运算下可提升模乘实现的计算效率。
所述的素数特征优化的蒙哥马利蒙模乘方法,具体包括以下步骤:
步骤1、执行约减运算:对SM2素数约减运算8次,每次循环执行:取大数乘的结果的最低32比特值与SM2素数相乘后所得与大数乘的结果相加后右移32比特。
步骤2、执行额外减法:当步骤1结果大于SM2素数时将其减去SM2素数作为模乘值,否则直接以步骤1的结果作为模乘值。
所述的将SM2素数P参与的乘法运算进行优化是指:
步骤i、将SM2素数P表示成移位形式,即P=[(32,2)(32,1)…(0,0),(32,1)(32,1)],以大数乘的结果作为中间值结果数组B[8,…,0]的初始值。
步骤ii、根据SM2素数P的表示形式循环执行乘数T1的移位和加减运算,具体为:B[i+1,i]=T1<<P(i,1)-T1<<P(i,2),其中:<<为左移,i为数组B的指针0<=i<=7;循环计算8次后所得到的结果即为优化乘法运算所得。
所述的模逆运算,具体包括以下步骤:
上述模逆运算避免了可能的SPA攻击,该算法一共执行16M+256S并且较优化前的基于费马小定理的运算节省207M,其中M表示模乘运算,而S表示模平方运算。
本发明涉及一种实现上述方法的系统,包括:素数乘模块、蒙哥马利模乘模块、模逆模块和标量乘实现模块,其中:素数乘模块将SM2素数参与的乘法运算转换为移位和减法运算,蒙哥马利模乘模块根据素数特征对移位和减法运算进行计算效率更新并生成素数乘的快速实现并输出至模逆模块,模逆模块进行模逆运算并生成完整高效模乘实现并输出至标量乘实现模块,标量乘实现模块根据投影坐标和算法结构进行优化标量乘算处理,得到完整的高效标量乘法实现。
技术效果
传统的蒙哥马利模乘算法需要调用2k2+k次基础乘单元,本发明优化的蒙哥马利蒙模乘算法利用素数特征,可将其减少至k2次。
所述的模逆计算过程,较传统的计算过程效率提升近一倍。
所述的标量乘运算计算过程,较传统的标量乘实现过程效率提升近一倍。
传统的求逆算法通过扩展欧几里德算法实现,其需要额外的硬件或软件代码,无法实现已有代码的重用,且易受到SPA攻击泄露秘密信息。本发明基于费马小定理的快速求逆算法常时且高效的求逆,能有效抵抗SPA分析。
附图说明
图1为本发明流程示意图;
图2为系统组成示意图。
具体实施方式
实施例1
如图2所示,本实施例涉及实现基于模乘的SM2加密、签名和密钥交换的实现方法的系统,包括:素数乘模块、蒙哥马利模乘模块、模逆模块、标量乘实现模块,其中:素数乘模块将SM2素数参与的乘法运算转换为移位和减法运算,蒙哥马利模乘模块根据素数特征对移位和减法运算进行计算效率更新并生成素数乘的快速实现并输出至模逆模块,模逆模块进行模逆运算并生成完整高效模乘实现并输出至标量乘实现模块,标量乘实现模块根据投影坐标和算法结构进行优化标量乘算处理,得到完整的高效标量乘法实现。
如图1所示,本实施例涉及上述系统的优化信息处理方法,具体包括以下步骤:
步骤1、区块链系统中,用户发起一笔交易,交易发起方提供交易的数值、目标账户的地址及交易发起方的公钥等信息。
步骤2、交易发起方,对步骤1中的信息采用本发明所述素数特征优化的蒙哥马利蒙模乘方法进行签名,从而在1分钟内支持近8000次签名,能有效提升区块链系统的吞吐率。
步骤3、交易发起方将签名信息附加在交易信息之后,通过网络发送给各节点。
步骤4、网络上的所有节点收以交易信息后,节点对该交易信息进行验签,在验签时同样采用所述素数特征优化的蒙哥马利蒙模乘方法,能提升近一倍计算效率,节省计算资源,提升交易上链的速度。
实施例2
本实施例涉及一种数字货币硬件钱包的优化的密钥对生成方案,具体包括以下步骤
步骤1、用户在数字货币硬件钱包中添加密钥生成算法的种子。
步骤2、利用密钥派生算法生成作为用户账户地址的用户公钥,基于该公钥和所述素数特征优化的蒙哥马利蒙模乘方法生成用于进行区块链信息的签名的用户私钥。
上述方法能够将密钥派生算法提升近一倍,节省电路面积和使用时间,节省了数字钱包的成本。
本方法利用SM2素数的特征,提升基础素数乘法运算和蒙哥马利模乘运算的效率,得到高效的基础模乘法运算,该高效模乘运算可用于标量乘法运算的实现中,由于该标量乘实现都是由模乘运算组成,因此可提升SM2标量乘计算效率。由于基于该素数下的模逆运算,可由基于费马小定理的实现,同样由若干模乘运算组成,而SM2素数特征,可用于减少实现中所使用的模乘次数,从而在两方面提升效率。上述方法大大加速了SM2实现中标量乘运算及模逆运算的效率,在32比特乘法器下提升标量乘运算近一倍,提升求逆效率近一倍。
本发明中,从基础素数乘和蒙哥马利模乘实现出发,从基础运算实现中提升计算效率,从而结合模逆的算法改进,与传统基于费马小定理的模逆实现相比,节省了207次模乘运算,模逆的计算效率提升近一倍。基于高效的蒙哥马利模乘,构建高效的标量乘实现,与传统实现方法对比,我们的方案能将效率提升近一倍,从而使SM2签名、加解密和密钥交换算法效率提升近一倍。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (2)
1.一种基于模乘的SM2加密、签名和密钥交换的实现方法,通过用户在数字货币硬件钱包中添加密钥生成算法的种子后,利用密钥派生算法生成作为用户账户地址的用户公钥,基于该公钥和素数特征优化的蒙哥马利蒙模乘方法,将SM2素数P参与的乘法运算进行优化后进行模逆运算,最后实现SM2中签名、加解密及密钥交换的标量乘运算的快速实现;
所述的素数特征优化的蒙哥马利蒙模乘方法,具体包括以下步骤:
步骤1、执行约减运算:对SM2素数P约减运算8次,每次循环执行:取大数乘的结果的最低32比特值与SM2素数相乘后所得与大数乘的结果相加后右移32比特;
步骤2、执行额外减法:当步骤1结果大于SM2素数时将其减去SM2素数作为模乘值,否则直接以步骤1的结果作为模乘值;
所述的将SM2素数P参与的乘法运算进行优化是指:
步骤i、将SM2素数P表示成移位形式,即P=[(32,2)(32,1)…(0,0),(32,1)(32,1)],以大数乘的结果作为中间值结果数组B[8,…,0]的初始值;
步骤ii、根据SM2素数P的表示形式循环执行乘数T1的移位和加减运算,具体为:B[i+1,i]=T1<<P(i,1)-T1<<P(i,2),其中:<<为左移,i为数组B的指针0<=i<=7;循环计算8次后所得到的结果即为优化乘法运算所得;
所述的模逆运算,具体包括以下步骤:
所述的素数特征是指:-P-1mod 232=1。
2.一种实现权利要求1所述方法的系统,其特征在于,包括:素数乘模块、蒙哥马利模乘模块、模逆模块和标量乘实现模块,其中:素数乘模块将SM2素数参与的乘法运算转换为移位和减法运算,蒙哥马利模乘模块根据素数特征将部分乘法运算变化成移位和减法运算进行计算效率提升并输出至模逆模块,模逆模块进行模逆运算并输出至标量乘实现模块,标量乘实现模块根据投影坐标和算法结构进行优化标量乘算处理,得到完整的标量乘法实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862172.8A CN109145616B (zh) | 2018-08-01 | 2018-08-01 | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862172.8A CN109145616B (zh) | 2018-08-01 | 2018-08-01 | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109145616A CN109145616A (zh) | 2019-01-04 |
CN109145616B true CN109145616B (zh) | 2022-03-22 |
Family
ID=64798809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810862172.8A Active CN109145616B (zh) | 2018-08-01 | 2018-08-01 | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109145616B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933305A (zh) * | 2019-03-20 | 2019-06-25 | 四川卫士通信息安全平台技术有限公司 | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器优化组件 |
CN109933304B (zh) * | 2019-03-20 | 2022-06-21 | 成都三零嘉微电子有限公司 | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 |
CN113254968B (zh) * | 2021-06-04 | 2022-07-05 | 晶澄微电子(宁波)有限公司 | 减少模逆计算的ecc密钥交换方法、系统、网络设备及存储介质 |
CN114527956B (zh) * | 2022-01-25 | 2024-05-10 | 北京航空航天大学 | 抗spa攻击的sm2算法中非定点标量乘法的计算方法 |
CN114338049B (zh) * | 2022-03-14 | 2022-07-05 | 山东区块链研究院 | 基于模归约的国密算法sm2的快速实现方法及系统 |
CN114840174B (zh) * | 2022-05-18 | 2023-03-03 | 广州万协通信息技术有限公司 | 一种使用多乘法器快速实现蒙哥马利模乘的系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7602655B2 (en) * | 2006-01-12 | 2009-10-13 | Mediatek Inc. | Embedded system |
CN106301756B (zh) * | 2016-08-22 | 2019-04-05 | 上海交通大学 | 用于sm2签名的大数模幂求逆功耗检测方法及其系统 |
-
2018
- 2018-08-01 CN CN201810862172.8A patent/CN109145616B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109145616A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 | |
US9942039B1 (en) | Applying modular reductions in cryptographic protocols | |
CN107040385B (zh) | 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统 | |
Stolbunov | Constructing public-key cryptographic schemes based on class group action on a set of isogenous elliptic curves. | |
Liu et al. | MoTE-ECC: Energy-scalable elliptic curve cryptography for wireless sensor networks | |
Gouvêa et al. | Efficient software implementation of public-key cryptography on sensor networks using the MSP430X microcontroller | |
CN101753306B (zh) | 运用Montgomery型椭圆曲线的数字签名认证方法 | |
CN109660351B (zh) | 一种sm2公钥密码的数字签名快速生成方法 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
US20090136025A1 (en) | Method for scalarly multiplying points on an elliptic curve | |
US20030072443A1 (en) | Method for generating secure elliptic curves using an arithmetic-geometric mean iteration | |
US20030152218A1 (en) | Cryptography method on elliptic curves | |
Koppermann et al. | 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices | |
CN112350827B (zh) | 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统 | |
CN111897578A (zh) | 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置 | |
CN103929305A (zh) | Sm2签名算法的实现方法 | |
Panjwani et al. | Hardware-software co-design of elliptic curve digital signature algorithm over binary fields | |
Zhao et al. | Efficient implementation of kyber on mobile devices | |
Valencia et al. | The design space of the number theoretic transform: A survey | |
Wong et al. | Performance Evaluation of RSA and NTRU over GPU with Maxwell and Pascal Architecture | |
Huang et al. | An efficient signature scheme from supersingular elliptic curve isogenies | |
Li et al. | A novel algorithm for scalar multiplication in ECDSA | |
CN111614465A (zh) | 基于超奇异同源秘钥封装协议的公钥生成方法和装置 | |
Jalali et al. | Optimized supersingular isogeny key encapsulation on armv8 processors | |
CN114513306B (zh) | 数据加密传输方法、系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |