CN113992329B - 一种区块链下基于sm2的交易签名方法、装置、设备及介质 - Google Patents
一种区块链下基于sm2的交易签名方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN113992329B CN113992329B CN202111259574.7A CN202111259574A CN113992329B CN 113992329 B CN113992329 B CN 113992329B CN 202111259574 A CN202111259574 A CN 202111259574A CN 113992329 B CN113992329 B CN 113992329B
- Authority
- CN
- China
- Prior art keywords
- parameter
- value
- signature
- dimensional coordinate
- preset
- 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
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Development Economics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种区块链下基于SM2的交易签名方法及装置,包括:生成方针对待发送交易,确定第一三维坐标;基于第一预设步骤通过第一三维坐标的z坐标值和第一参数确定第一逆元,并根据第一逆元将第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;任一第一预设步骤中的第一预设次方数是根据第一参数确定的;根据第一二维坐标、待发送交易的哈希值和第二参数确定第一签名参数;根据生成方的私钥和第二参数生成第二逆元;根据第二逆元确定第二签名参数;生成方发送待发送交易及第一签名参数和第二签名参数。减少确定第一逆元进而第二逆元时的计算量,从而降低生成签名的耗时,提升生成签名的效率。
Description
技术领域
本发明涉及金融科技(Fintech)领域,尤其涉及一种区块链下基于SM2 的交易签名方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术签名算法效率提出了更高的要求。
目前,数字签名算法包括SM2、RSA算法等,针对SM2算法,在签名生成过程中,由三维坐标系转换为二维坐标系需要模逆运算,在最后生成签名时,也需要模逆运算的参与;在签名验证过程中,也需要通过将三维坐标系转换为二维坐标系,进而确定验证信息,即需要模逆运算。
而在签名算法中,模逆运算需要重复多次重复的执行平方运算,导致SM2 算法所消耗的算力大,计算复杂、耗时,使签名生成及验证的效率低。
发明内容
本发明实施例提供一种区块链下基于SM2的交易签名方法及装置,用于减少计算量、降低耗时,提升生成签名的效率。
第一方面,本发明实施例提供一种区块链下基于SM2的交易签名方法,包括:
生成方针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
所述生成方基于第一预设步骤通过所述第一三维坐标的z坐标值和所述 SM2椭圆曲线的第一参数确定第一逆元,并根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;
所述生成方根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2 椭圆曲线的第二参数确定第一签名参数;
所述生成方根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数;
所述生成方发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
上述技术方案中,根据第一预设步骤中各步骤的第一预设次方数,减少确定第一三维坐标的z坐标值模所述SM2椭圆曲线的第一参数的第一逆元时的计算量,从而降低生成签名的耗时,提升生成签名的效率。
可选的,所述生成方根据所述第一预设步骤确定所述第一三维坐标的z坐标值模所述SM2椭圆曲线的第一参数的逆元,包括:
所述生成方根据所述第一预设步骤确定所述第一三维坐标的z坐标值的q 次方值;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;
对所述第一三维坐标的z坐标值的q次方值模所述第一参数,确定所述第一逆元。
上述技术方案中,基于第一三维坐标的z坐标值,通过17个步骤中包括 15个点乘算法的步骤及两个非点乘算法的其他步骤就可以得到第一三维坐标的z坐标值的q次方值,即zq。以此减少确定第一逆元时的计算量,从而降低生成第一签名参数的耗时,提升生成第一签名参数的效率。
可选的,所述生成方确定所述第一三维坐标的z坐标值的q次方值,包括:
预设第一数量的第一变量,基于所述第一三维坐标的z坐标值确定各第一变量值;
基于所述各第一变量值确定第二变量值;
针对任一第一预设步骤,通过所述第一预设步骤的第一预设次方数和第一变量值对所述第二变量值进行更新,直至确定所述第二变量值为所述第一三维坐标的z坐标值的q次方值。
上述技术方案中,基于第一三维坐标的z坐标值,通过不同的步骤中的第一预设次方数,更新第二变量值,使基于第一三维坐标的z坐标值的次方数越来越接近q,直至第一三维坐标的z坐标值的次方数等于q,得到第一三维坐标的z坐标值的q次方值,即zq。以此减少确定第一逆元时的计算量,从而降低生成第一签名参数的耗时,提升生成第一签名参数的效率。
可选的,所述生成方确定所述生成方的私钥模所述第二参数的第二逆元,包括:
所述生成方根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40 个步骤;所述40个步骤中包括39个点乘算法的步骤;
对所述f的m次方值模所述第二参数,确定所述第二逆元。
上述技术方案中,基于所述生成方的私钥与1的和f,通过40个步骤中包括39个点乘算法的步骤及一个非点乘算法的其他步骤就可以得到f的m次方值,即fm。以此减少确定第二逆元时的计算量,从而降低生成第二签名参数的耗时,提升生成第二签名参数的效率。
可选的,所述生成方根据第二预设步骤确定所述第一三维坐标的z坐标值的m次方值,包括:
预设第二数量的第三变量,基于所述f的值确定各第三变量值;
基于所述各第三变量值确定第四变量值;
针对任一第二预设步骤,通过所述第二预设步骤的第二预设次方数和第三变量值对所述第四变量值进行更新,直至确定所述第四变量值为所述f的m次方值。
上述技术方案中,基于所述生成方的私钥与1的和f,通过不同的步骤中的第二预设次方数,更新第四变量值,使基于f的次方数越来越接近m,直至 f的次方数等于m,得到f的m次方值,即fm。以此减少确定第二逆元时的计算量,从而降低生成第二签名参数的耗时,提升生成第二签名参数的效率。
第二方面,本发明实施例提供一种区块链下基于SM2的交易签名方法,包括:
验证方获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;所述第一逆元是所述生成方基于第一预设步骤通过第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定的;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;所述第二逆元是所述生成方根据所述生成方的私钥和第二参数确定的;所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
所述验证方根据所述第一签名参数、所述第二签名参数和所述SM2椭圆曲线的第二参数确定第一验证参数;
所述验证方根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
所述验证方根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
所述验证方在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
上述技术方案中,在不得知第一三维坐标的基础上,通过自身生成的第二三维坐标和确定的第二验证参数来对签名进行验证,不但保证了数据的安全性,且在验证过程中,不需要使用模逆运算,即不需要得到逆元,避免了由第二三维坐标转换为二维坐标的步骤,因此减少了计算量,提升了签名验证效率。
第三方面,本发明实施例提供一种区块链下基于SM2的交易签名装置,包括:
处理模块,用于针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
基于第一预设步骤通过所述第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定第一逆元,并根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;
根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;
根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数;
发送模块,发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
可选的,所述处理模块具体用于:
根据所述第一预设步骤确定所述第一三维坐标的z坐标值的q次方值;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;
对所述第一三维坐标的z坐标值的q次方值模所述第一参数,确定所述第一逆元。
可选的,所述处理模块具体用于:
预设第一数量的第一变量,基于所述第一三维坐标的z坐标值确定各第一变量值;
基于所述各第一变量值确定第二变量值;
针对任一第一预设步骤,通过所述第一预设步骤的第一预设次方数和第一变量值对所述第二变量值进行更新,直至确定所述第二变量值为所述第一三维坐标的z坐标值的q次方值。
可选的,所述处理模块具体用于:
根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
对所述f的m次方值模所述第二参数,确定所述第二逆元。
可选的,所述处理模块具体用于:
预设第二数量的第三变量,基于所述f的值确定各第三变量值;
基于所述各第三变量值确定第四变量值;
针对任一第二预设步骤,通过所述第二预设步骤的第二预设次方数和第三变量值对所述第四变量值进行更新,直至确定所述第四变量值为所述f的m次方值。
第四方面,本发明实施例提供一种区块链下基于SM2的交易签名装置,包括:
获取单元,获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;所述第一逆元是所述生成方基于第一预设步骤通过第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定的;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;所述第二逆元是所述生成方根据所述生成方的私钥和第二参数确定的;所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
处理单元,根据所述第一签名参数、所述第二签名参数和所述SM2椭圆曲线的第二参数确定第一验证参数;
根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的 z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
第五方面,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链下基于SM2的交易签名方法。
第六方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述区块链下基于SM2的交易签名方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的一种区块链下基于SM2的交易签名方法的流程示意图;
图3为本发明实施例提供的一种区块链下基于SM2的交易签名方法的流程示意图;
图4为本发明实施例提供的一种区块链下基于SM2的交易签名装置的结构示意图;
图5为本发明实施例提供的一种区块链下基于SM2的交易签名装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
ECDSA(椭圆曲线数字签名算法)是指一类基于椭圆曲线密码学设计的数字签名算法,是目前流行的数字签名算法之一。椭圆曲线数字签名算法的安全性由离散对数问题的复杂性保障。相较于传统的基于质因数分解设计的数字签名算法(如RSA算法),椭圆曲线数字签名算法能够在公钥长度相等的情况下提供更高的安全性。
进一步地,在椭圆曲线数字签名算法中,私钥dA为[1,n-1]范围内随机选取的整数,公钥PA(x,y)为椭圆曲线上的一个点,由私钥dA和基点G相乘得来。在已知私钥dA的情况下,可以快速计算出公钥PA(x,y);反之,通过公钥PA(x,y)反推私钥dA则非常困难。
国密SM2算法是椭圆曲线数字签名算法之一,是由国家密码管理局制定的一种椭圆曲线数字签名算法,在2016年被采用为中国的国家密码标准 GM/T0003.2-2012。SM2椭圆曲线由p,E,G,n四个参数定义;具体陈述如下:
参数p是一个素数。根据p可以定义素数域Fp,即由0至p-1的自然数的集合。在该素数域中的所有运算都需要对p取模。
参数E代表椭圆曲线方程y2=x3+ax+b,其中a和b是固定的参数,x和 y是变量。满足此方程的x和y即代表椭圆曲线上的点(x,y)。该椭圆曲线定义在素数域Fp上,即a,b,x,y全部是素数域Fp中的元素。
参数G是SM2椭圆曲线的基点(xG,yG)。素数域上的椭圆曲线的点的总个数是有限的,这些点构成了一个循环群,而基点G是该循环群的生成元素,该基点是SM2椭圆曲线随机选择的非零基点。
参数n表示阶,即循环群中元素的个数。n是一个素数。
也就是说,上述a、b、p、n、xG和yG均是定值,长度均为256bit;以十六进制进行表示如下:
p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFFFFFFFFFF;
a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFFFFFFFFFC;
b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD414D940E93;
n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF40939D54123;
xG=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589334C74C7;
yG=BC3736A2 F4F6779C 59BDCEE3 6B692153D0A9877C C62A4740 02DF32E52139F0A0。
在现有技术中,SM2椭圆曲线签名生成算法需要随机选定整数k,再将k 与基点G(xG,yG)进行点乘运算,得到二维坐标;其中,点乘算法实质是将 k个基点G(xG,yG)点加运算;点加运算是确定两点之间的直线与SM2椭圆曲线的交点再取负,如给定点P(xP,yP)与点G(xG,yG),计算两点之间的斜率λ=(yP-yG)/(xP-xG),然后确定xR=λ2-xP-xG,yR=λ(xP-xG)-yP。
因为上述点加算法中需要求斜率,因此需要进行模逆运算,而模逆运算是椭圆曲线签名算法中最耗时的操作之一,如给定正整数q,其模p的逆元q-1是满足q*q-1≡1mod p的正整数。常用的模逆元计算方式是将逆元转化为模幂运算,即q-1≡qp-2mod p。
目前,为了减少模逆运算的次数,通过先将基点G(xG,yG)在三维坐标系(如Jacobian坐标系)下进行表示;其中,Jacobian(雅可比)坐标系是椭圆曲线计算中常用的点的表示方式,因为在Jacobian坐标系上进行点加与倍点操作时,计算开销相比二维坐标系要小。二维坐标系上的点(x,y)对应 Jacobian坐标系上的点(x,y,1)。Jacobian坐标系上的点(x,y,z)对应二维坐标系上的点(x/z2,y/z3)。
但在生成签名参数时,需要将三维坐标转换回二维坐标,具体的,二维坐标为(x`,y`),其中,x`=x/z2modp,y`=y/z3modp。通过二维坐标中任一坐标值即可生成签名参数,本发明以x`坐标值为例,也可以使用y`坐标值,在此不做具体限定。如第一签名参数t=(e+x`)modn,第二签名参数s=((1+dA)-1* (k-r*dA))modn。
在现有技术中,无论三维坐标转换为二维坐标,或计算“(1+dA)-1”时,所需要进行的计算量都很大,导致生成签名的复杂度大,耗时严重,签名生成及验证的效率低。因此需要一种签名方法,来减少计算量、降低耗时,提升生成签名的效率。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括生成方110和验证方120。
其中,生成方110,用于针对待发送交易,基于SM2椭圆曲线的基点和第一随机数,根据第一预设步骤确定第一三维坐标的z坐标值的q次方值,再对第一三维坐标的z坐标值的q次方值模第一参数,确定第一逆元;然后根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;其中,待发送交易需要上传至区块链上;
根据第二预设步骤确定f的m次方值;其中,f为生成方110的私钥与1 的和;然后对f的m次方值模第二参数,确定第二逆元,再根据第二逆元和第一签名参数确定第二签名参数;
最后将待发送交易及签名发送,其中,签名包括第一签名参数和第二签名参数。
验证方120,用于获取待验证交易的签名和待验证交易的哈希值;然后根据第一签名参数、第二签名参数和SM2椭圆曲线的第二参数确定第一验证参数;再根据第二签名参数、SM2椭圆曲线的基点、第一验证参数和生成方的公钥确定第二三维坐标;根据第一签名参数、所述待验证交易的哈希值、第二三维坐标的z坐标值和SM2椭圆曲线的第二参数确定第二验证参数;通过第二验证参数与第二三维坐标的坐标值对签名进行验证。
需要说明的是,生成方110和验证方120可以是区块链上的任一节点,在此不做具体限定。上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2示例性的示出了本发明实施例提供的一种区块链下基于SM2的交易签名方法的流程示意图,该流程可由区块链下基于SM2的交易签名装置执行。
如图2所示,该流程具体包括:
步骤210,生成方针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标。
本发实施例中,通过在Jacobian坐标系下,将基点以三维坐标进行显示,然后将三维坐标形式的基点与第一随机数进行点乘算法确定第一三维坐标。
步骤220,所述生成方基于第一预设步骤通过所述第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定第一逆元,并根据所述第一逆元将所述第一三维坐标转换为第一二维坐标。
本发明实施例中,任一第一预设步骤中包括第一预设次方数;任一第一预设步骤中的第一预设次方数是根据第一参数确定的;如第一预设步骤中的第一个步骤的第一预设次方数为2,即z2。
步骤230,所述生成方根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数。
本发明实施例中,使用第一二维坐标中的任一坐标值、待发送交易的哈希值和SM2椭圆曲线的第二参数确定第一签名参数。
步骤240,所述生成方根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数。
本发明实施例中,基于生成方的私钥做模逆运算,得到第二逆元,在模逆运算的过程中,通过第二预设步骤进行运算,以减少计算量;第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤。
步骤250,所述生成方发送所述待发送交易及签名。
本发明实施例中,签名包括所述第一签名参数和所述第二签名参数。
在步骤210中,第一随机数是在1与n-1之间随机选定的,且第一随机数为整数;如在[1,n-1]范围内随机选定整数k为第一随机数,其中,n为SM2 椭圆曲线的第二参数,第二参数与上述十六进制所表示的参数n一致。
在Jacobian坐标系下确定基点G(xG,yG)的三维坐标,如基点G(xG, yG)的三维坐标为(xG,yG,1),将(xG,yG,1)与第一随机数k进行点乘算法后,得到第一三维坐标,如第一三维坐标为(x1,y1,z1)。
在步骤220中,将第一三维坐标转换为第一二维坐标需要对第一三维坐标的z坐标值进行模逆运算;基于上述举例说明,第一二维坐标为(x`1,y`1),其中,x`1=x1/z1 2modp,即x`1=x1*(z1 -1)2modp,p为SM2椭圆曲线的第一参数,第一参数与上述十六进制所表示的参数p一致,mod为求模运算。
根据模逆运算可以得知,z1 -1modp=z1 p-2modp,即z1 -1=z1 p-2,也就是说,第一逆元z1 -1的值为z1 p-2。
具体的,生成方根据第一预设步骤确定第一三维坐标的z坐标值的q次方值;q=p-2,p为第一参数;第一预设步骤包括17个步骤;17个步骤中包括15 个点乘算法的步骤;对第一三维坐标的z坐标值的q次方值模第一参数,确定第一逆元。
进一步地,预设第一数量的第一变量,基于第一三维坐标的z坐标值确定各第一变量值;基于各第一变量值确定第二变量值;针对任一第一预设步骤,通过第一预设步骤的第一预设次方数和第一变量值对第二变量值进行更新,直至确定第二变量值为第一三维坐标的z坐标值的q次方值。
基于上述描述举例来说,第一三维坐标的z坐标值为z1,第一数量为4,分别为r1、r2、r3和r4,第二变量为R;第一预设步骤包括的17个步骤如下:
S1101、初始化第一变量r1、r2、r3和r4及第二变量R。各第一变量和第二变量用于存储计算的中间结果;
S1102、计算r1=z1 2*z1,即计算1次z1的平方并和z1相乘,结果对第一变量r1进行赋值,相当于将结果存储至第一变量r1中。此时,r1=z1 3,以二进制表示次方数(3)为r1等于z1的b(11)次方;
S1103、计算r2=r12*z1,即计算1次r1的平方并和z1相乘,结果对第一变量r2进行赋值,相当于将结果存储至第一变量r2中。此时,r2=z1 7,以二进制表示次方数(7)为r2等于z1的b(111)次方;
S1104、计算即计算3次r2的平方并和r2相乘,结果对第一变量r3进行赋值,相当于将结果存储至第一变量r3中。此时,r3=z1 63,以二进制表示次方数(63)为r3等于z1的b(111111)次方;
S1105、计算即计算6次r3的平方并和r3相乘。结果对第二变量R进行赋值,相当于将结果存储至第二变量R中。此时,r3=z1 4095,以十六进制表示次方数(4095)为R等于z1的h(FFF)次方;
S1108、计算R2=r42,即计算1次r4的平方,结果对第二变量进行更新,得到R2。以十六进制进行表示,此时R2等于z1的h(7FFFFFFE)次方;
S1109、计算r3=R22*r1,即计算1次R2的平方并和r1相乘,结果对第一变量进行更新,得到r`3。以十六进制进行表示,此时r`3等于z1的h(FFFFFFFF) 次方;
S1110、计算R3=R2*z1,即=R2与z1相乘,结果对第二变量进行更新,得到R3。以十六进制进行表示,此时R3等于z1的h(7FFFFFFF)次方;
S1113、计算即计算32次R5的平方并和r`3相乘。结果对第二变量进行更新,得到R6。以十六进制进行表示,此时R5等于z1的h (FFFFFFFE FFFFFFFFFFFFFFFF FFFFFFFF)次方;
S1114、计算即计算32次R6的平方并和r`3相乘。结果对第二变量进行更新,得到R7。以十六进制进行表示,此时R7等于z1的h (FFFFFFFE FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF)次方;
S1115、计算即计算64次R8的平方并和r`3相乘。结果对第二变量进行更新,得到R9。以十六进制进行表示,此时R9等于z1的h (FFFFFFFE FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF) 次方;
S1116、计算即计算30次R9的平方并和r4相乘。结果对第二变量进行更新,得到R10。以十六进制进行表示,此时R10等于z1的h(FFFFFF FEFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FF000000 00FFFFFF FFFFFFFF)次方;
S1117、计算R11=R104*z1,即计算2次R10的平方并和z1相乘。结果对第二变量进行更新,得到R11。以十六进制进行表示,此时R11等于z1的h (FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFD)次方;即z1的p-2次方。
其中,第S1101和S1108为非点乘算法步骤,因此可以通过上述17个步骤中的15个点乘算法的步骤和2个非点乘算法的步骤确定z1的p-2次方值,进而得到第一逆元z1 -1,从而得到x`1。
在步骤230中,通过计算t=(e1+x1`)modn,得到第一签名参数t。需要说明的是,若确定第一签名参数t不在[1,n-1]的范围中,则需要重新选定第一随机数k再次生成第一签名参数;若t+k=n,则攻击者可以通过t反推出第一随机数k,则需要重新选定第一随机数k再次生成第一签名参数;其中,e1为待发送交易的哈希值。
在步骤240中,第二签名参数是根据第二逆元确定的;基于上述举例说明,第二签名参数s=((1+dA)-1*(k-r*dA))modn。其中,第二逆元为(1+dA)-1,根据模逆运算可以得知,(1+dA)-1modp=(1+dA)p-2modp,即(1+dA)-1= (1+dA)p-2,也就是说,第一逆元(1+dA)-1的值为(1+dA)p-2。
具体的,生成方根据第二预设步骤确定f的m次方值;m=n-2,n为第二参数;f为生成方的私钥与1的和;第二预设步骤包括40个步骤;40个步骤中包括39个点乘算法的步骤;对f的m次方值模第二参数,确定第二逆元。
进一步地,预设第二数量的第三变量,基于f的值确定各第三变量值;基于各第三变量值确定第四变量值;针对任一第二预设步骤,通过第二预设步骤的第二预设次方数和第三变量值对第四变量值进行更新,直至确定第四变量值为f的m次方值。
基于上述描述举例来说,第二数量为11,第三变量分别为v1、v2、v3、 v4、v5、v6、v7、v8、v9、v10和v11,第四变量为V;第二预设步骤包括的 40个步骤如下:
S1201、初始化第三变量v1、v2、v3、v4、v5、v6、v7、v8、v9、v10和 v11以及第四变量为V。第三变量和第四变量用于存储计算的中间结果;
S1202、计算v1=f2,即计算1次f的平方,结果对第三变量v1进行赋值,相当于将结果存储至第三变量v1中。此时,v1=f2,以二进制表示次方数(2) 为v1等于f的b(10)次方;
S1203、计算v2=v1*f,即计算1次v1和f相乘,结果对第三变量v2进行赋值。以二进制进行表示,此时v2等于f的b(11)次方;
S1204、计算v3=v2*v1,结果对第三变量v3进行赋值。以二进制进行表示,此时v3等于f的b(101)次方;
S1205、计算v4=v22*f,结果对第三变量v4进行赋值。以二进制进行表示,此时v4等于f的b(111)次方;
S1206、计算v5=v4*v1,结果对第三变量v5进行赋值。以二进制进行表示,此时v4等于f的b(1001)次方;
S1207、计算v6=v42*f,结果对第三变量v6进行赋值。以二进制进行表示,此时v6等于f的b(1111)次方;
S1208、计算v7=v62*f,结果对第三变量v7进行赋值。以十六进制进行表示,此时v7等于f的h(1F)次方;
S1209、计算v8=v72*v2,结果对第三变量v8进行赋值。以十六进制进行表示,此时v8等于f的h(7F)次方;
S1210、计算v9=v82*v8,结果对第三变量v9进行赋值。以十六进制进行表示,此时v9等于f的h(3FFF)次方;
S1211、计算v10=v92*v9,结果对第三变量v10进行赋值。以十六进制进行表示,此时v10等于f的h(FFFFFFF)次方;
S1212、计算v11=v102*v4,结果对第三变量v11进行赋值。以十六进制进行表示,此时v11等于f的h(7FFFFFFF)次方;
S1225、计算结果对第四变量进行更新,得到V12。以十六进制进行表示,此时V12等于f的h(7FFF FFFF7FFF FFFFFFFF FFFFFFFF FFFFB901 EFB590E3)次方;
S1226、计算结果对第四变量进行更新,得到V13。以十六进制进行表示,此时V13等于f的h(FFFFFF FEFFFFFF FFFFFFFF FFFFFFFF FF7203DF 6B21C605)次方;
S1227、计算结果对第四变量进行更新,得到V14。以十六进制进行表示,此时V14等于f的h(1FFFFFFF DFFFFFFF FFFFFFFF FFFFFFFF EE407BED 6438C0A5)次方;
S1228、计算结果对第四变量进行更新,得到V15。以十六进制进行表示,此时V15等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B)次方;
S1229、计算结果对第四变量进行更新,得到V15。以十六进制进行表示,此时V16等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B)次方;
S1230、计算结果对第四变量进行更新,得到V16。以十六进制进行表示,此时V17等于f的h(1FF FFFFFDFF FFFFFFFF FFFFFFFF FFFFFEE4 07BED6438C0A56A7)次方;
S1231、计算结果对第四变量进行更新,得到V18。以十六进制进行表示,此时V18等于f的h(1FFF FFFFDFFF FFFFFFFF FFFFFFFF FFFFEE40 7BED6438C0A56A77)次方;
S1232、计算结果对第四变量进行更新,得到V19。以十六进制进行表示,此时V19等于f的h(7FFFF FFF7FFFF FFFFFFFF FFFFFFFF FFFB901E FB590E30295A9DDF)次方;
S1233、计算结果对第四变量进行更新,得到V20。以十六进制进行表示,此时V20等于f的h(3FFFFF FFBFFFFF FFFFFFFF FFFFFFFF FFDC80F7 DAC871814AD4EEFD)次方;
S1234、计算结果对第四变量进行更新,得到V21。以十六进制进行表示,此时V21等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B53BBF409)次方;
S1235、计算结果对第四变量进行更新,得到V22。以十六进制进行表示,此时V22等于f的h(1F FFFFFFDF FFFFFFFF FFFFFFFF FFFFFFEE 407BED6438C0A56A 777E8127)次方;
S1236、计算结果对第四变量进行更新,得到V23。以十六进制进行表示,此时V23等于f的h(3FF FFFFFBFF FFFFFFFF FFFFFFFF FFFFFDC8 0F7DAC871814AD4E EFD024E7)次方;
S1237、计算结果对第四变量进行更新,得到V24。以十六进制进行表示,此时V24等于f的h(3FFF FFFFBFFF FFFFFFFF FFFFFFFF FFFFDC80 F7DAC871814AD4EE FD024E75)次方;
S1238、计算结果对第四变量进行更新,得到V25。以十六进制进行表示,此时V25等于f的h(3FFFF FFFBFFFF FFFFFFFF FFFFFFFF FFFDC80F 7DAC871814AD4EEF D024E755)次方;
S1239、计算结果对第四变量进行更新,得到V26。以十六进制进行表示,此时V26等于f的h(7FFFFFF F7FFFFFF FFFFFFFF FFFFFFFF FB901EFB 590E30295A9DDFA0 49CEAA09)次方;
S1240、计算结果对第四变量进行更新,得到V27。以十六进制进行表示,此时V27等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B53BBF409 39D54121)次方;即f的n-2次方。
其中,第S1201为非点乘算法步骤,因此可以通过上述40个步骤中的39 个点乘算法的步骤和1个非点乘算法的步骤确定f的n-2次方,进而得到第二逆元(1+dA)-1,从而得到第二签名参数s。
在步骤250中,将第一签名参数t和第二签名参数s作为签名,并将签名和待发送交易进行发送。需要说明的,生成方可以将签名和待发送交易发送至区块链系统中,以使区块链的其他的节点(验证方)对签名和待发送交易进行验证。生成方也可以通过中间方(中间方作为验证方)对签名和待发送交易进行验证,并在验证通过后通过中间方将待发送交易发送至接收方,具体应用场景在此不做具体限定。
在现有技术中,普通的算法是将p-2个z1相乘,该方法需要p-3次乘法,效率很低。在SM2算法中,针对256位的模数p,一种常用的模逆运算是重复执行平方运算,并存储一系列中间结果,即计算并存储 再通过p-2的二进制表示计算出xp-2的值,该算法的平均计算开销是255 次平方与128次乘法。在上述算法中,共需要计算并存储255个中间结果。
本发明实施例在p已知的情况下,通过第一预设步骤和第二预设步骤减少计算模逆运算所需的中间结果的个数,并减少模逆算法的计算量,从而提升生成签名的效率。
针对于签名的验证,图3示例性的示出了一种区块链下基于SM2的交易签名方法的流程示意图,如图3所示,具体包括:
步骤310,验证方获取待验证交易的签名和所述待验证交易的哈希值。
本发明实施例中,验证方可以在区块链系统中获取待验证交易的签名和待验证交易的哈希值,其中,签名包括第一签名参数和第二签名参数;第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;第一二维坐标是将第一三维坐标通过第一逆元转换得到的;第二签名参数是生成方根据第二逆元确定的;第一逆元是生成方基于第一预设步骤通过第一三维坐标的z坐标值和SM2椭圆曲线的第一参数确定的;任一第一预设步骤中包括第一预设次方数;任一第一预设步骤中的第一预设次方数是根据第一参数确定的;第二逆元是生成方根据生成方的私钥和第二参数确定的;第一三维坐标是生成方基于SM2椭圆曲线的基点和第一随机数确定的。
步骤320,所述验证方根据所述第一签名参数、所述第二签名参数和所述 SM2椭圆曲线的第二参数确定第一验证参数。
本发明实施例中,计算w=(第一签名参数t+第二签名参数s)modn,其中w为第一验证参数。
步骤330,所述验证方根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标。
本发明实施例中,在Jacobian坐标系下确定第二三维坐标,将第二签名参数s与SM2椭圆曲线的基点G(xG,yG)进行点乘运算得到第一结果,再将第一签名参数t与生成方的公钥PA进行点乘运算得到第二结果,最后将第一结果与第二结果做点加运算,得到第二三维坐标,如第二三维坐标为(x2,y2,z2)。
步骤340,所述验证方根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数。
本发明实施例中,计算a=(t-e2)*z2 2modn;其中,a为第二验证参数, e2为待验证交易的哈希值。
步骤350,所述验证方在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
在步骤310中,验证方若确定第一签名参数t与第二签名参数s不在[1, n-1]的范围内,则认为签名不符合要求,即验证失败。
在步骤320中,验证方若确定第一验证参数w=0,则认为签名不符合要求,即验证失败。
在现有技术中,是通过计算T=(e2+x2`)modn,通过判断T和t对签名进行验证,但是因为x2`=x2/z2 2modp,仍存在模逆运算,因此导致验证签名的复杂度大,耗时严重,签名验证的效率低。
本发明实施例中,因为生成方在生成第一签名参数t时,t=(e1+x1`)modn,通过将x`1=x1/z1 2modp带入上述公式,可得x1=(t-e1)*z1 2 modn;基于此,若确定第二验证参数a(a=(t-e2)*z2 2modn)与上述第二三维坐标中x2相等,则可以确定签名验证通过;因为在计算第二验证参数a时不需要进行模逆运算,因此减少了签名验证的计算量、降低了签名验证耗时,提升了生成签名的效率。
基于相同的技术构思,图4示例性的示出了本发明实施例提供的一种区块链下基于SM2的交易签名装置的结构示意图,该装置可以执行区块链下基于 SM2的交易签名方法的流程。
如图4所示,该装置具体包括:
处理模块410,用于针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
基于第一预设步骤通过所述第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定第一逆元,并根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;
根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;
根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数;
发送模块420,发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
可选的,所述处理模块410具体用于:
根据所述第一预设步骤确定所述第一三维坐标的z坐标值的q次方值;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;
对所述第一三维坐标的z坐标值的q次方值模所述第一参数,确定所述第一逆元。
可选的,所述处理模块410具体用于:
预设第一数量的第一变量,基于所述第一三维坐标的z坐标值确定各第一变量值;
基于所述各第一变量值确定第二变量值;
针对任一第一预设步骤,通过所述第一预设步骤的第一预设次方数和第一变量值对所述第二变量值进行更新,直至确定所述第二变量值为所述第一三维坐标的z坐标值的q次方值。
可选的,所述处理模块410具体用于:
根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
对所述f的m次方值模所述第二参数,确定所述第二逆元。
可选的,所述处理模块410具体用于:
预设第二数量的第三变量,基于所述f的值确定各第三变量值;
基于所述各第三变量值确定第四变量值;
针对任一第二预设步骤,通过所述第二预设步骤的第二预设次方数和第三变量值对所述第四变量值进行更新,直至确定所述第四变量值为所述f的m次方值。
基于相同的技术构思,图5示例性的示出了本发明实施例提供的一种区块链下基于SM2的交易签名装置的结构示意图,该装置可以执行区块链下基于 SM2的交易签名方法的流程。
如图5所示,该装置具体包括:
获取单元510,获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;所述第一逆元是所述生成方基于第一预设步骤通过第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定的;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;所述第二逆元是所述生成方根据所述生成方的私钥和第二参数确定的;所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
处理单元520,根据所述第一签名参数、所述第二签名参数和所述SM2 椭圆曲线的第二参数确定第一验证参数;
根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的 z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链下基于SM2的交易签名方法。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述区块链下基于SM2的交易签名方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、 CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种区块链下基于SM2的交易签名方法,其特征在于,包括:
生成方针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
所述生成方根据第一预设步骤确定所述第一三维坐标的z坐标值的q次方值;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;所述第一预设步骤中任一步骤包括第一预设次方数;所述第一预设步骤中任一步骤的第一预设次方数是根据所述第一参数确定的;
对所述第一三维坐标的z坐标值的q次方值模所述SM2椭圆曲线的第一参数,确定所述第一逆元;
根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;
所述生成方根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;
所述生成方根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
对所述f的m次方值模所述第二参数,确定所述第二逆元;
根据所述第二逆元确定第二签名参数;
所述生成方发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
2.如权利要求1所述的方法,其特征在于,所述生成方确定所述第一三维坐标的z坐标值的q次方值,包括:
预设第一数量的第一变量,基于所述第一三维坐标的z坐标值确定各第一变量值;
基于所述各第一变量值确定第二变量值;
针对任一第一预设步骤,通过所述第一预设步骤的第一预设次方数和第一变量值对所述第二变量值进行更新,直至确定所述第二变量值为所述第一三维坐标的z坐标值的q次方值。
3.如权利要求1所述的方法,其特征在于,所述生成方根据第二预设步骤确定f的m次方值,包括:
预设第二数量的第三变量,基于所述f的值确定各第三变量值;
基于所述各第三变量值确定第四变量值;
针对任一第二预设步骤,通过所述第二预设步骤的第二预设次方数和第三变量值对所述第四变量值进行更新,直至确定所述第四变量值为所述f的m次方值。
4.一种区块链下基于SM2的交易签名方法,其特征在于,包括:
验证方获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;
所述第一逆元是所述生成方根据第一预设步骤确定所述第一三维坐标的z坐标值的q次方值,对所述第一三维坐标的z坐标值的q次方值模所述SM2椭圆曲线的第一参数之后确定的;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;所述第一预设步骤中任一步骤包括第一预设次方数;所述第一预设步骤中任一步骤的第一预设次方数是根据所述第一参数确定的;
所述第二逆元是所述生成方根据第二预设步骤确定f的m次方值,对所述f的m次方值模所述第二参数之后确定的;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
所述验证方根据所述第一签名参数、所述第二签名参数和所述SM2椭圆曲线的第二参数确定第一验证参数;
所述验证方根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
所述验证方根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
所述验证方在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
5.一种区块链下基于SM2的交易签名装置,其特征在于,包括:
处理模块,用于针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
根据第一预设步骤确定所述第一三维坐标的z坐标值的q次方值;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;所述第一预设步骤中任一步骤包括第一预设次方数;所述第一预设步骤中任一步骤的第一预设次方数是根据所述第一参数确定的;
对所述第一三维坐标的z坐标值的q次方值模所述SM2椭圆曲线的第一参数,确定所述第一逆元;
根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;
根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;
根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
对所述f的m次方值模所述第二参数,确定所述第二逆元;
根据所述第二逆元确定第二签名参数;
发送模块,用于发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
6.一种区块链下基于SM2的交易签名装置,其特征在于,包括:
获取单元,获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;
所述第一逆元是所述生成方根据第一预设步骤确定所述第一三维坐标的z坐标值的q次方值,对所述第一三维坐标的z坐标值的q次方值模所述SM2椭圆曲线的第一参数之后确定的;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;所述第一预设步骤中任一步骤包括第一预设次方数;所述第一预设步骤中任一步骤的第一预设次方数是根据所述第一参数确定的;
所述第二逆元是所述生成方根据第二预设步骤确定f的m次方值,对所述f的m次方值模所述第二参数之后确定的;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
处理单元,根据所述第一签名参数、所述第二签名参数和所述SM2椭圆曲线的第二参数确定第一验证参数;
根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
7.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至3或权利要求4任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至3或权利要求4任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111259574.7A CN113992329B (zh) | 2021-10-28 | 2021-10-28 | 一种区块链下基于sm2的交易签名方法、装置、设备及介质 |
PCT/CN2021/135328 WO2023070830A1 (zh) | 2021-10-28 | 2021-12-03 | 一种区块链下基于sm2的交易签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111259574.7A CN113992329B (zh) | 2021-10-28 | 2021-10-28 | 一种区块链下基于sm2的交易签名方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113992329A CN113992329A (zh) | 2022-01-28 |
CN113992329B true CN113992329B (zh) | 2023-04-07 |
Family
ID=79742985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111259574.7A Active CN113992329B (zh) | 2021-10-28 | 2021-10-28 | 一种区块链下基于sm2的交易签名方法、装置、设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113992329B (zh) |
WO (1) | WO2023070830A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8971528B2 (en) * | 2013-01-29 | 2015-03-03 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
CN103427997B (zh) * | 2013-08-16 | 2016-06-22 | 西安西电捷通无线网络通信股份有限公司 | 一种生成数字签名的方法及装置 |
CN109586912B (zh) * | 2018-11-09 | 2020-04-07 | 天津海泰方圆科技有限公司 | 一种sm2数字签名的生成方法、系统、设备及介质 |
CN112217643B (zh) * | 2019-07-09 | 2021-12-10 | 华为技术有限公司 | 运算方法、装置及设备 |
CN110971405B (zh) * | 2019-12-06 | 2022-06-14 | 支付宝(杭州)信息技术有限公司 | 多方协同的sm2签名、解密方法及其系统 |
CN111130787B (zh) * | 2020-03-26 | 2020-10-30 | 北京信安世纪科技股份有限公司 | 数字签名方法、设备和存储介质 |
CN111628868B (zh) * | 2020-05-26 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 数字签名生成方法、装置、计算机设备和存储介质 |
-
2021
- 2021-10-28 CN CN202111259574.7A patent/CN113992329B/zh active Active
- 2021-12-03 WO PCT/CN2021/135328 patent/WO2023070830A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN113992329A (zh) | 2022-01-28 |
WO2023070830A1 (zh) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shamir et al. | Improved online/offline signature schemes | |
AU677269B2 (en) | A cryptographic method | |
JP4575251B2 (ja) | デジタル署名生成装置、デジタル署名検証装置、デジタル署名生成方法、デジタル署名検証方法、デジタル署名生成プログラム及びデジタル署名検証プログラム | |
US6266688B1 (en) | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed | |
US6611597B1 (en) | Method and device for constructing elliptic curves | |
US6088798A (en) | Digital signature method using an elliptic curve, a digital signature system, and a program storage medium having the digital signature method stored therein | |
CN102761415A (zh) | p元域SM2椭圆曲线的数字签名生成、验证及混合系统 | |
JP2012512574A (ja) | 鍵合意プロトコルの加速 | |
WO2001018772A1 (fr) | Procede et dispositif d'elaboration de courbes elliptiques, systeme elliptique de cryptage et support d'enregistrement | |
CN103067165B (zh) | 公钥密码体制中的外包计算方法、设备和服务器 | |
CN109067526A (zh) | 层次公私钥对生成方法和装置 | |
JP4875686B2 (ja) | 楕円曲線上の有限体演算の加速方法 | |
CN113992329B (zh) | 一种区块链下基于sm2的交易签名方法、装置、设备及介质 | |
Amounas | Elliptic curve digital signature algorithm using Boolean permutation based ECC | |
US9577828B2 (en) | Batch verification method and apparatus thereof | |
Granger et al. | Computing discrete logarithms | |
Lochter | Blockchain as cryptanalytic tool | |
Dai et al. | Don’t Forget Pairing-Friendly Curves with Odd Prime Embedding Degrees | |
Anisimov et al. | Verifiable Arithmetic Computations Using Additively Homomorphic Tags | |
Fontein | Groups from cyclic infrastructures and Pohlig-Hellman in certain infrastructures | |
JPH1152854A (ja) | 有限体上の四則演算装置及び楕円曲線上の群演算装置 | |
Moldovyan et al. | Split logarithm problem and a candidate for a post-quantum signature scheme | |
Anupindi | Linear Complexity of Sequences on Koblitz Curves of Genus 2 | |
JP2000321979A (ja) | 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム | |
Moldovyan et al. | Digital signature scheme set in a hidden cyclic 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |