WO2023070830A1 - 一种区块链下基于sm2的交易签名方法及装置 - Google Patents

一种区块链下基于sm2的交易签名方法及装置 Download PDF

Info

Publication number
WO2023070830A1
WO2023070830A1 PCT/CN2021/135328 CN2021135328W WO2023070830A1 WO 2023070830 A1 WO2023070830 A1 WO 2023070830A1 CN 2021135328 W CN2021135328 W CN 2021135328W WO 2023070830 A1 WO2023070830 A1 WO 2023070830A1
Authority
WO
WIPO (PCT)
Prior art keywords
parameter
signature
value
transaction
dimensional coordinate
Prior art date
Application number
PCT/CN2021/135328
Other languages
English (en)
French (fr)
Inventor
冯宗浩
罗琼
谢启鹏
李辉忠
严强
李昊轩
陈宇杰
Original Assignee
深圳前海微众银行股份有限公司
香港科技大学
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 深圳前海微众银行股份有限公司, 香港科技大学 filed Critical 深圳前海微众银行股份有限公司
Publication of WO2023070830A1 publication Critical patent/WO2023070830A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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/3252Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Definitions

  • the embodiment of the present invention provides an SM2-based transaction signature device under the blockchain, including:
  • the first inverse element is determined by the z-coordinate value of the first three-dimensional coordinate and the first parameter of the SM2 elliptic curve, and the first three-dimensional coordinate is transformed into The first two-dimensional coordinates;
  • any first preset step includes a first preset power; the first preset power in any first preset step is determined according to the first parameter ;
  • processing module is specifically used for:
  • the fourth variable value is updated by the second preset power of the second preset step and the third variable value until it is determined that the fourth variable value is Describe the m-th power value of f.
  • FIG. 1 is a schematic diagram of a system architecture provided by an embodiment of the present invention
  • the National Secret SM2 algorithm is one of the elliptic curve digital signature algorithms. It is an elliptic curve digital signature algorithm formulated by the State Cryptography Administration. It was adopted as China's national cryptographic standard GM/T0003.2-2012 in 2016.
  • the SM2 elliptic curve is defined by four parameters p, E, G, n; the specific statement is as follows:
  • n represents the order, that is, the number of elements in the cyclic group. n is a prime number.
  • y G BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0.
  • the modular inverse operation is one of the most time-consuming operations in the elliptic curve signature algorithm.
  • the inverse element q of its modulo p - 1 is a positive integer satisfying q*q -1 ⁇ 1 mod p.
  • the common way to calculate the modular inverse element is to convert the inverse element into a modular exponentiation operation, that is, q -1 ⁇ q p-2 mod p.
  • the three-dimensional coordinates need to be converted back to two-dimensional coordinates.
  • the signature parameters can be generated by any coordinate value in the two-dimensional coordinates.
  • the present invention takes the x ⁇ coordinate value as an example, and the y ⁇ coordinate value can also be used, which is not specifically limited here.
  • the first signature parameter t (e+x ⁇ )modn
  • the second signature parameter s ((1+d A ) -1 *(kr*d A ))modn.
  • the generator 110 is used to determine the value of the qth power of the z coordinate value of the first three-dimensional coordinate based on the base point of the SM2 elliptic curve and the first random number for the transaction to be sent, and then calculate the first The qth power value of the z coordinate value of the three-dimensional coordinates modulo the first parameter to determine the first inverse element; then according to the first two-dimensional coordinates, the hash value of the transaction to be sent and the second value of the SM2 elliptic curve
  • the parameter determines the first signature parameter; among them, the transaction to be sent needs to be uploaded to the blockchain;
  • f is the sum of the private key of the generator 110 and 1; then modulo the second parameter to the m-th power value of f to determine the second inverse element, and then according to The second inverse and the first signature parameter determine the second signature parameter;
  • the transaction to be sent and the signature are sent, wherein the signature includes the first signature parameter and the second signature parameter.
  • the generator 110 and the verifier 120 can be any node on the blockchain, which is not specifically limited here.
  • the above-mentioned structure shown in FIG. 1 is only an example, which is not limited in this embodiment of the present invention.
  • the process specifically includes:
  • Step 210 generate a policy to determine the first three-dimensional coordinates based on the base point of the SM2 elliptic curve and the first random number for the transaction to be sent.
  • the first three-dimensional coordinate is determined by displaying the base point as three-dimensional coordinates in the Jacobian coordinate system, and then performing a point product algorithm on the base point in the form of three-dimensional coordinates and the first random number.
  • Step 220 the generating party determines the first inverse element through the z coordinate value of the first three-dimensional coordinate and the first parameter of the SM2 elliptic curve based on the first preset step, and converts the inverse element according to the first inverse element
  • the first three-dimensional coordinates are converted into first two-dimensional coordinates.
  • any first preset step includes a first preset power; the first preset power in any first preset step is determined according to the first parameter; for example, the first The first preset power of the first step in the preset steps is 2, namely z 2 .
  • Step 230 the generator determines a first signature parameter according to the first two-dimensional coordinates, the hash value of the transaction to be sent, and the second parameter of the SM2 elliptic curve.
  • Step 240 the generating party generates a second inverse element according to the private key of the generating party and the second parameter; and determines a second signature parameter according to the second inverse element.
  • a modular inverse operation is performed based on the private key of the generating party to obtain the second inverse element, and in the process of the modular inverse operation, the operation is performed through the second preset step to reduce the amount of calculation; the second preset step It includes 40 steps; the 40 steps include 39 steps of the dot product algorithm.
  • Step 250 the generator sends the transaction to be sent and the signature.
  • the signature includes the first signature parameter and the second signature parameter.
  • the first random number is randomly selected between 1 and n-1, and the first random number is an integer; if the integer k is randomly selected in the range of [1, n-1] as the first A random number, wherein, n is the second parameter of the SM2 elliptic curve, and the second parameter is consistent with the parameter n represented by the above hexadecimal system.
  • the three-dimensional coordinates of the base point G(x G , y G ) are (x G , y G , 1), and (x G , y G , 1)
  • the first three-dimensional coordinate is obtained, for example, the first three-dimensional coordinate is (x 1 , y 1 , z 1 ).
  • the first variable of the first quantity is preset, and each first variable value is determined based on the z coordinate value of the first three-dimensional coordinate; the second variable value is determined based on each first variable value; for any first preset step, The second variable value is updated by the first preset power and the first variable value in the first preset step until the second variable value is determined to be the qth power value of the z coordinate value of the first three-dimensional coordinate.
  • the z coordinate value of the first three-dimensional coordinate is z 1
  • the first quantity is 4, which are r1, r2, r3 and r4 respectively
  • the second variable is R
  • the first preset step includes 17 Proceed as follows:
  • the first S1101 and S1108 are non-point product algorithm steps, so the p-2 power value of z can be determined by 15 point product algorithm steps and 2 non-point product algorithm steps in the above-mentioned 17 steps, and then The first inverse element z 1 -1 is obtained, thereby obtaining x ⁇ 1 .
  • V is assigned a value. Expressed in hexadecimal, at this time V is equal to the h(7FFFFFFF 7FFFFFFF) power of f;
  • V2 is equal to h(1FFFFFFF DFFFFFFF FFFFFFFFFFFFFFFFFFFFFF) power of f;
  • V4 Expressed in hexadecimal, at this time V4 is equal to the h(F FFFFEF FFFFFFFFFFFFFFFFFFFFFF7) power of f;
  • V11 is equal to h(3FF FFFFFBFF FFFFFFFF FFFFFFFF FFFFFDC8 F7DAC87) power of f;
  • V16 is equal to the h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B) power of f;
  • V19 is equal to h(7FFFF FFF7FFFF FFFFFFFF FFFFFFFF FFFB901E FB590E30 295A9DDF) power of f;
  • V20 is equal to h(3FFFFF FFBFFFFF FFFFFFFF FFFFFF FFDC80F7 DAC87181 4AD4EEFD) power of f;
  • V23 is equal to h(3FF FFFFFBFF FFFFFFFF FFFFFFFF FFFFFDC8 0F7DAC87 1814AD4E EFD024E7) power of f;
  • Step 310 the verifier obtains the signature of the transaction to be verified and the hash value of the transaction to be verified.

Abstract

一种区块链下基于SM2的交易签名方法及装置,包括:生成方针对待发送交易,确定第一三维坐标;基于第一预设步骤通过第一三维坐标的z坐标值和第一参数确定第一逆元,并根据第一逆元将第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;任一第一预设步骤中的第一预设次方数是根据第一参数确定的;根据第一二维坐标、待发送交易的哈希值和第二参数确定第一签名参数;根据生成方的私钥和第二参数生成第二逆元;根据第二逆元确定第二签名参数;生成方发送待发送交易及第一签名参数和第二签名参数。减少确定第一逆元进而第二逆元时的计算量,从而降低生成签名的耗时,提升生成签名的效率。

Description

一种区块链下基于SM2的交易签名方法及装置
相关申请的交叉引用
本申请要求在2021年10月28日提交中国专利局、申请号为202111259574.7、申请名称为“一种区块链下基于SM2的交易签名方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及金融科技(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次方值,即z q。以此减少确定第一逆元时的计算量,从而降低生成第一签名参数的耗时,提升生成第一签名参数的效率。
可选的,所述生成方确定所述第一三维坐标的z坐标值的q次方值,包括:
预设第一数量的第一变量,基于所述第一三维坐标的z坐标值确定各第一变量值;
基于所述各第一变量值确定第二变量值;
针对任一第一预设步骤,通过所述第一预设步骤的第一预设次方数和第一变量值对所述第二变量值进行更新,直至确定所述第二变量值为所述第一三维坐标的z坐标值的q次方值。
上述技术方案中,基于第一三维坐标的z坐标值,通过不同的步骤中的第一预设次方数,更新第二变量值,使基于第一三维坐标的z坐标值的次方数越来越接近q,直至第一三维坐标的z坐标值的次方数等于q,得到第一三维坐标的z坐标值的q次方值,即z q。以此减少确定第一逆元时的计算量,从而降低生成第一签名参数的耗时,提升生成第一签名参数的效率。
可选的,所述生成方确定所述生成方的私钥模所述第二参数的第二逆元,包括:
所述生成方根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
对所述f的m次方值模所述第二参数,确定所述第二逆元。
上述技术方案中,基于所述生成方的私钥与1的和f,通过40个步骤中包括39个点乘算法的步骤及一个非点乘算法的其他步骤就可以得到f的m次方值,即f m。以此减少确定第二逆元时的计算量,从而降低生成第二签名参数的耗时,提升生成第二签名参数的效率。
可选的,所述生成方根据第二预设步骤确定所述第一三维坐标的z坐标值的m次方值,包括:
预设第二数量的第三变量,基于所述f的值确定各第三变量值;
基于所述各第三变量值确定第四变量值;
针对任一第二预设步骤,通过所述第二预设步骤的第二预设次方数和第三变量值对所述第四变量值进行更新,直至确定所述第四变量值为所述f的m次方值。
上述技术方案中,基于所述生成方的私钥与1的和f,通过不同的步骤中的第二预设次方数,更新第四变量值,使基于f的次方数越来越接近m,直至f的次方数等于m,得到f的m次方值,即f m。以此减少确定第二逆元时的计算量,从而降低生成第二签名参数的耗时,提升生成第二签名参数的效率。
第二方面,本发明实施例提供一种区块链下基于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算法),椭圆曲线数字签名算法能够在公钥长度相等的情况下提供更高的安全性。
进一步地,在椭圆曲线数字签名算法中,私钥d A为[1,n-1]范围内随机选取的整数, 公钥P A(x,y)为椭圆曲线上的一个点,由私钥d A和基点G相乘得来。在已知私钥d A的情况下,可以快速计算出公钥P A(x,y);反之,通过公钥P A(x,y)反推私钥d A则非常困难。
国密SM2算法是椭圆曲线数字签名算法之一,是由国家密码管理局制定的一种椭圆曲线数字签名算法,在2016年被采用为中国的国家密码标准GM/T0003.2-2012。SM2椭圆曲线由p,E,G,n四个参数定义;具体陈述如下:
参数p是一个素数。根据p可以定义素数域F p,即由0至p-1的自然数的集合。在该素数域中的所有运算都需要对p取模。
参数E代表椭圆曲线方程y 2=x 3+ax+b,其中a和b是固定的参数,x和y是变量。满足此方程的x和y即代表椭圆曲线上的点(x,y)。该椭圆曲线定义在素数域F p上,即a,b,x,y全部是素数域F p中的元素。
参数G是SM2椭圆曲线的基点(x G,y G)。素数域上的椭圆曲线的点的总个数是有限的,这些点构成了一个循环群,而基点G是该循环群的生成元素,该基点是SM2椭圆曲线随机选择的非零基点。
参数n表示阶,即循环群中元素的个数。n是一个素数。
也就是说,上述a、b、p、n、x G和y G均是定值,长度均为256bit;以十六进制进行表示如下:
p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000FFFFFFFF FFFFFFFF;
a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000FFFFFFFF FFFFFFFC;
b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93;
n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123;
x G=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7;
y G=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0。
在现有技术中,SM2椭圆曲线签名生成算法需要随机选定整数k,再将k与基点G(x G,y G)进行点乘运算,得到二维坐标;其中,点乘算法实质是将k个基点G(x G,y G)点加运算;点加运算是确定两点之间的直线与SM2椭圆曲线的交点再取负,如给定点P(x P,y P)与点G(x G,y G),计算两点之间的斜率λ=(y P-y G)/(x P-x G),然后确定x R=λ 2-x P-x G,y R=λ(x P-x G)-y P
因为上述点加算法中需要求斜率,因此需要进行模逆运算,而模逆运算是椭圆曲线签名算法中最耗时的操作之一,如给定正整数q,其模p的逆元q -1是满足q*q -1≡1mod p的正整数。常用的模逆元计算方式是将逆元转化为模幂运算,即q -1≡q p-2mod p。
目前,为了减少模逆运算的次数,通过先将基点G(x G,y G)在三维坐标系(如Jacobian坐标系)下进行表示;其中,Jacobian(雅可比)坐标系是椭圆曲线计算中常用的点的表示方式,因为在Jacobian坐标系上进行点加与倍点操作时,计算开销相比二维坐标系要小。二维坐标系上的点(x,y)对应Jacobian坐标系上的点(x,y,1)。Jacobian坐标系上的点(x,y,z)对应二维坐标系上的点(x/z 2,y/z 3)。
但在生成签名参数时,需要将三维坐标转换回二维坐标,具体的,二维坐标为(x`,y`),其中,x`=x/z 2modp,y`=y/z 3modp。通过二维坐标中任一坐标值即可生成签名参数,本发明以x`坐标值为例,也可以使用y`坐标值,在此不做具体限定。如第一签名参数t=(e+x`)modn,第二签名参数s=((1+d A) -1*(k-r*d A))modn。
在现有技术中,无论三维坐标转换为二维坐标,或计算“(1+d A) -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,即z 2
步骤230,所述生成方根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数。
本发明实施例中,使用第一二维坐标中的任一坐标值、待发送交易的哈希值和SM2椭圆曲线的第二参数确定第一签名参数。
步骤240,所述生成方根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数。
本发明实施例中,基于生成方的私钥做模逆运算,得到第二逆元,在模逆运算的过程中,通过第二预设步骤进行运算,以减少计算量;第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤。
步骤250,所述生成方发送所述待发送交易及签名。
本发明实施例中,签名包括所述第一签名参数和所述第二签名参数。
在步骤210中,第一随机数是在1与n-1之间随机选定的,且第一随机数为整数;如在[1,n-1]范围内随机选定整数k为第一随机数,其中,n为SM2椭圆曲线的第二参数, 第二参数与上述十六进制所表示的参数n一致。
在Jacobian坐标系下确定基点G(x G,y G)的三维坐标,如基点G(x G,y G)的三维坐标为(x G,y G,1),将(x G,y G,1)与第一随机数k进行点乘算法后,得到第一三维坐标,如第一三维坐标为(x 1,y 1,z 1)。
在步骤220中,将第一三维坐标转换为第一二维坐标需要对第一三维坐标的z坐标值进行模逆运算;基于上述举例说明,第一二维坐标为(x` 1,y` 1),其中,x` 1=x 1/z 1 2modp,即x` 1=x 1*(z 1 -1) 2modp,p为SM2椭圆曲线的第一参数,第一参数与上述十六进制所表示的参数p一致,mod为求模运算。
根据模逆运算可以得知,z 1 -1modp=z 1 p-2modp,即z 1 -1=z 1 p-2,也就是说,第一逆元z 1 -1的值为z 1 p-2
具体的,生成方根据第一预设步骤确定第一三维坐标的z坐标值的q次方值;q=p-2,p为第一参数;第一预设步骤包括17个步骤;17个步骤中包括15个点乘算法的步骤;对第一三维坐标的z坐标值的q次方值模第一参数,确定第一逆元。
进一步地,预设第一数量的第一变量,基于第一三维坐标的z坐标值确定各第一变量值;基于各第一变量值确定第二变量值;针对任一第一预设步骤,通过第一预设步骤的第一预设次方数和第一变量值对第二变量值进行更新,直至确定第二变量值为第一三维坐标的z坐标值的q次方值。
基于上述描述举例来说,第一三维坐标的z坐标值为z 1,第一数量为4,分别为r1、r2、r3和r4,第二变量为R;第一预设步骤包括的17个步骤如下:
S1101、初始化第一变量r1、r2、r3和r4及第二变量R。各第一变量和第二变量用于存储计算的中间结果;
S1102、计算r1=z 1 2*z 1,即计算1次z 1的平方并和z 1相乘,结果对第一变量r1进行赋值,相当于将结果存储至第一变量r1中。此时,r1=z 1 3,以二进制表示次方数(3)为r1等于z 1的b(11)次方;
S1103、计算r2=r1 2*z 1,即计算1次r1的平方并和z 1相乘,结果对第一变量r2进行赋值,相当于将结果存储至第一变量r2中。此时,r2=z 1 7,以二进制表示次方数(7)为r2等于z 1的b(111)次方;
S1104、计算
Figure PCTCN2021135328-appb-000001
即计算3次r2的平方并和r2相乘,结果对第一变量r3进行赋值,相当于将结果存储至第一变量r3中。此时,r3=z 1 63,以二进制表示次方数(63)为r3等于z 1的b(111111)次方;
S1105、计算
Figure PCTCN2021135328-appb-000002
即计算6次r3的平方并和r3相乘。结果对第二变量R进行赋值,相当于将结果存储至第二变量R中。此时,r3=z 1 4095,以十六进制表示次方数(4095)为R等于z 1的h(FFF)次方;
S1106、计算
Figure PCTCN2021135328-appb-000003
即计算3次R的平方并和r2相乘,结果对第二变量进行更新,得到R1。以十六进制进行表示,此时R1等于z 1的h(7FFF)次方;
S1107、计算
Figure PCTCN2021135328-appb-000004
即计算15次R1的平方并和R1相乘,结果存储在r4中;以十六进制进行表示,此时r4等于z 1的h(3FFFFFFF)次方;
S1108、计算R2=r4 2,即计算1次r4的平方,结果对第二变量进行更新,得到R2。以十六进制进行表示,此时R2等于z 1的h(7FFFFFFE)次方;
S1109、计算r3=R2 2*r1,即计算1次R2的平方并和r1相乘,结果对第一变量进行更新,得到r`3。以十六进制进行表示,此时r`3等于z 1的h(FFFFFFFF)次方;
S1110、计算R3=R2*z 1,即=R2与z 1相乘,结果对第二变量进行更新,得到R3。以十六进制进行表示,此时R3等于z 1的h(7FFFFFFF)次方;
S1111、计算
Figure PCTCN2021135328-appb-000005
即计算33次R3的平方并和r`3相乘。结果对第二变量进行更新,得到R4。以十六进制进行表示,此时R4等于z 1的h(FFFFFFFE FFFFFFFF)次 方;
S1112、计算
Figure PCTCN2021135328-appb-000006
即计算32次R4的平方并和r`3相乘。结果对第二变量进行更新,得到R5。以十六进制进行表示,此时R5等于z 1的h(FFFFFFFE FFFFFFFF FFFFFFFF)次方;
S1113、计算
Figure PCTCN2021135328-appb-000007
即计算32次R5的平方并和r`3相乘。结果对第二变量进行更新,得到R6。以十六进制进行表示,此时R5等于z 1的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF)次方;
S1114、计算
Figure PCTCN2021135328-appb-000008
即计算32次R6的平方并和r`3相乘。结果对第二变量进行更新,得到R7。以十六进制进行表示,此时R7等于z 1的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF)次方;
S1115、计算
Figure PCTCN2021135328-appb-000009
即计算64次R8的平方并和r`3相乘。结果对第二变量进行更新,得到R9。以十六进制进行表示,此时R9等于z 1的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000FFFFFFFF)次方;
S1116、计算
Figure PCTCN2021135328-appb-000010
即计算30次R9的平方并和r4相乘。结果对第二变量进行更新,得到R10。以十六进制进行表示,此时R10等于z 1的h(FFFFFF FEFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FF000000 00FFFFFF FFFFFFFF)次方;
S1117、计算R11=R10 4*z 1,即计算2次R10的平方并和z 1相乘。结果对第二变量进行更新,得到R11。以十六进制进行表示,此时R11等于z 1的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000FFFFFFFF FFFFFFFD)次方;即z 1的p-2次方。
其中,第S1101和S1108为非点乘算法步骤,因此可以通过上述17个步骤中的15个点乘算法的步骤和2个非点乘算法的步骤确定z 1的p-2次方值,进而得到第一逆元z 1 -1,从而得到x` 1
在步骤230中,通过计算t=(e1+x 1`)modn,得到第一签名参数t。需要说明的是,若确定第一签名参数t不在[1,n-1]的范围中,则需要重新选定第一随机数k再次生成第一签名参数;若t+k=n,则攻击者可以通过t反推出第一随机数k,则需要重新选定第一随机数k再次生成第一签名参数;其中,e1为待发送交易的哈希值。
在步骤240中,第二签名参数是根据第二逆元确定的;基于上述举例说明,第二签名参数s=((1+d A) -1*(k-r*d A))modn。其中,第二逆元为(1+d A) -1,根据模逆运算可以得知,(1+d A) -1modp=(1+d A) p-2modp,即(1+d A) -1=(1+d A) p-2,也就是说,第一逆元(1+d A) -1的值为(1+d A) 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=f 2,即计算1次f的平方,结果对第三变量v1进行赋值,相当于将结果存储至第三变量v1中。此时,v1=f 2,以二进制表示次方数(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=v2 2*f,结果对第三变量v4进行赋值。以二进制进行表示,此时v4等于f的b(111)次方;
S1206、计算v5=v4*v1,结果对第三变量v5进行赋值。以二进制进行表示,此时v4等于f的b(1001)次方;
S1207、计算v6=v4 2*f,结果对第三变量v6进行赋值。以二进制进行表示,此时v6等于f的b(1111)次方;
S1208、计算v7=v6 2*f,结果对第三变量v7进行赋值。以十六进制进行表示,此时v7等于f的h(1F)次方;
S1209、计算v8=v7 2*v2,结果对第三变量v8进行赋值。以十六进制进行表示,此时v8等于f的h(7F)次方;
S1210、计算v9=v8 2*v8,结果对第三变量v9进行赋值。以十六进制进行表示,此时v9等于f的h(3FFF)次方;
S1211、计算v10=v9 2*v9,结果对第三变量v10进行赋值。以十六进制进行表示,此时v10等于f的h(FFFFFFF)次方;
S1212、计算v11=v10 2*v4,结果对第三变量v11进行赋值。以十六进制进行表示,此时v11等于f的h(7FFFFFFF)次方;
S1213、计算
Figure PCTCN2021135328-appb-000011
结果对第四变量V进行赋值。以十六进制进行表示,此时V等于f的h(7FFFFFFF 7FFFFFFF)次方;
S1214、计算
Figure PCTCN2021135328-appb-000012
结果对第四变量进行更新,得到V1。以十六进制进行表示,此时V1等于f的h(3FFFFFFF BFFFFFFF FFFFFFFF)次方;
S1215、计算
Figure PCTCN2021135328-appb-000013
结果对第四变量进行更新,得到V2。以十六进制进行表示,此时V2等于f的h(1FFFFFFF DFFFFFFF FFFFFFFF FFFFFFFF)次方;
S1216、计算
Figure PCTCN2021135328-appb-000014
结果对第四变量进行更新,得到V3。以十六进制进行表示,此时V3等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF)次方;
S1217、计算
Figure PCTCN2021135328-appb-000015
结果对第四变量进行更新,得到V4。以十六进制进行表示,此时V4等于f的h(F FFFFFFEF FFFFFFFF FFFFFFFF FFFFFFF7)次方;
S1218、计算
Figure PCTCN2021135328-appb-000016
结果对第四变量进行更新,得到V5。以十六进制进行表示,此时V5等于f的h(7F FFFFFF7F FFFFFFFF FFFFFFFF FFFFFFB9)次方;
S1219、计算
Figure PCTCN2021135328-appb-000017
结果对第四变量进行更新,得到V6。以十六进制进行表示,此时V6等于f的h(3FFFF FFFBFFFF FFFFFFFF FFFFFFFF FFFDC80F)次方;
S1220、计算
Figure PCTCN2021135328-appb-000018
结果对第四变量进行更新,得到V7。以十六进制进行表示,此时V7等于f的h(FFFFFF FEFFFFFF FFFFFFFF FFFFFFFF FF7203DF)次方;
S1221、计算
Figure PCTCN2021135328-appb-000019
结果对第四变量进行更新,得到V8。以十六进制进行表示,此时V8等于f的h(7FFFFFF F7FFFFFF FFFFFFFF FFFFFFFF FB901EFB)次方;
S1222、计算
Figure PCTCN2021135328-appb-000020
结果对第四变量进行更新,得到V9。以十六进制进行表示,此时V9等于f的h(7FFFFFFF 7FFFFFFF FFFFFFFF FFFFFFFF B901EFB5)次方;
S1223、计算
Figure PCTCN2021135328-appb-000021
结果对第四变量进行更新,得到V10。以十六进制进行表示,此时V10等于f的h(7FFFFFFF7FFFFFFFF FFFFFFFF FFFFFFFB 901EFB59)次方;
S1224、计算
Figure PCTCN2021135328-appb-000022
结果对第四变量进行更新,得到V11。以十六进制进行表示,此时V11等于f的h(3FF FFFFFBFF FFFFFFFF FFFFFFFF FFFFFDC8 F7DAC87)次方;
S1225、计算
Figure PCTCN2021135328-appb-000023
结果对第四变量进行更新,得到V12。以十六进制进行表示,此时V12等于f的h(7FFF FFFF7FFF FFFFFFFF FFFFFFFF FFFFB901 EFB590E3)次方;
S1226、计算
Figure PCTCN2021135328-appb-000024
结果对第四变量进行更新,得到V13。以十六进制进行表示,此时V13等于f的h(FFFFFF FEFFFFFF FFFFFFFF FFFFFFFF FF7203DF 6B21C605)次方;
S1227、计算
Figure PCTCN2021135328-appb-000025
结果对第四变量进行更新,得到V14。以十六进制进行表示,此时V14等于f的h(1FFFFFFF DFFFFFFF FFFFFFFF FFFFFFFF EE407BED 6438C0A5)次方;
S1228、计算
Figure PCTCN2021135328-appb-000026
结果对第四变量进行更新,得到V15。以十六进制进行表示,此时V15等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B)次方;
S1229、计算
Figure PCTCN2021135328-appb-000027
结果对第四变量进行更新,得到V15。以十六进制进行表示,此时V16等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B)次方;
S1230、计算
Figure PCTCN2021135328-appb-000028
结果对第四变量进行更新,得到V16。以十六进制进行表示,此时V17等于f的h(1FF FFFFFDFF FFFFFFFF FFFFFFFF FFFFFEE4 07BED643 8C0A56A7)次方;
S1231、计算
Figure PCTCN2021135328-appb-000029
结果对第四变量进行更新,得到V18。以十六进制进行表示,此时V18等于f的h(1FFF FFFFDFFF FFFFFFFF FFFFFFFF FFFFEE40 7BED6438 C0A56A77)次方;
S1232、计算
Figure PCTCN2021135328-appb-000030
结果对第四变量进行更新,得到V19。以十六进制进行表示,此时V19等于f的h(7FFFF FFF7FFFF FFFFFFFF FFFFFFFF FFFB901E FB590E30 295A9DDF)次方;
S1233、计算
Figure PCTCN2021135328-appb-000031
结果对第四变量进行更新,得到V20。以十六进制进行表示,此时V20等于f的h(3FFFFF FFBFFFFF FFFFFFFF FFFFFFFF FFDC80F7 DAC87181 4AD4EEFD)次方;
S1234、计算
Figure PCTCN2021135328-appb-000032
结果对第四变量进行更新,得到V21。以十六进制进行表示,此时V21等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409)次方;
S1235、计算
Figure PCTCN2021135328-appb-000033
结果对第四变量进行更新,得到V22。以十六进制进行表示,此时V22等于f的h(1F FFFFFFDF FFFFFFFF FFFFFFFF FFFFFFEE 407BED64 38C0A56A 777E8127)次方;
S1236、计算
Figure PCTCN2021135328-appb-000034
结果对第四变量进行更新,得到V23。以十六进制进行表示,此时V23等于f的h(3FF FFFFFBFF FFFFFFFF FFFFFFFF FFFFFDC8 0F7DAC87 1814AD4E EFD024E7)次方;
S1237、计算
Figure PCTCN2021135328-appb-000035
结果对第四变量进行更新,得到V24。以十六进制进行表示,此时V24等于f的h(3FFF FFFFBFFF FFFFFFFF FFFFFFFF FFFFDC80 F7DAC871 814AD4EE FD024E75)次方;
S1238、计算
Figure PCTCN2021135328-appb-000036
结果对第四变量进行更新,得到V25。以十六进制进行表示,此时V25等于f的h(3FFFF FFFBFFFF FFFFFFFF FFFFFFFF FFFDC80F 7DAC8718 14AD4EEF D024E755)次方;
S1239、计算
Figure PCTCN2021135328-appb-000037
结果对第四变量进行更新,得到V26。以十六进制进行 表示,此时V26等于f的h(7FFFFFF F7FFFFFF FFFFFFFF FFFFFFFF FB901EFB 590E3029 5A9DDFA0 49CEAA09)次方;
S1240、计算
Figure PCTCN2021135328-appb-000038
结果对第四变量进行更新,得到V27。以十六进制进行表示,此时V27等于f的h(FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54121)次方;即f的n-2次方。
其中,第S1201为非点乘算法步骤,因此可以通过上述40个步骤中的39个点乘算法的步骤和1个非点乘算法的步骤确定f的n-2次方,进而得到第二逆元(1+d A) -1,从而得到第二签名参数s。
在步骤250中,将第一签名参数t和第二签名参数s作为签名,并将签名和待发送交易进行发送。需要说明的,生成方可以将签名和待发送交易发送至区块链系统中,以使区块链的其他的节点(验证方)对签名和待发送交易进行验证。生成方也可以通过中间方(中间方作为验证方)对签名和待发送交易进行验证,并在验证通过后通过中间方将待发送交易发送至接收方,具体应用场景在此不做具体限定。
在现有技术中,普通的算法是将p-2个z 1相乘,该方法需要p-3次乘法,效率很低。在SM2算法中,针对256位的模数p,一种常用的模逆运算是重复执行平方运算,并存储一系列中间结果,即计算并存储
Figure PCTCN2021135328-appb-000039
再通过p-2的二进制表示计算出x p-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(x G,y G)进行点乘运算得到第一结果,再将第一签名参数t与生成方的公钥P A进行点乘运算得到第二结果,最后将第一结果与第二结果做点加运算,得到第二三维坐标,如第二三维坐标为(x 2,y 2,z 2)。
步骤340,所述验证方根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数。
本发明实施例中,计算a=(t-e2)*z 2 2modn;其中,a为第二验证参数,e2为待验证交易的哈希值。
步骤350,所述验证方在确定所述第二验证参数与所述第二三维坐标的坐标值相等时, 确定验证通过。
在步骤310中,验证方若确定第一签名参数t与第二签名参数s不在[1,n-1]的范围内,则认为签名不符合要求,即验证失败。
在步骤320中,验证方若确定第一验证参数w=0,则认为签名不符合要求,即验证失败。
在现有技术中,是通过计算T=(e2+x 2`)modn,通过判断T和t对签名进行验证,但是因为x 2`=x 2/z 2 2modp,仍存在模逆运算,因此导致验证签名的复杂度大,耗时严重,签名验证的效率低。
本发明实施例中,因为生成方在生成第一签名参数t时,t=(e1+x 1`)modn,通过将x` 1=x 1/z 1 2modp带入上述公式,可得x 1=(t-e1)*z 1 2modn;基于此,若确定第二验证参数a(a=(t-e2)*z 2 2modn)与上述第二三维坐标中x 2相等,则可以确定签名验证通过;因为在计算第二验证参数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 (10)

  1. 一种区块链下基于SM2的交易签名方法,其特征在于,包括:
    生成方针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
    所述生成方基于第一预设步骤通过所述第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定第一逆元,并根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;
    所述生成方根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;
    所述生成方根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数;
    所述生成方发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
  2. 如权利要求1所述的方法,其特征在于,所述生成方根据所述第一预设步骤确定所述第一三维坐标的z坐标值模所述SM2椭圆曲线的第一参数的逆元,包括:
    所述生成方根据所述第一预设步骤确定所述第一三维坐标的z坐标值的q次方值;所述q=p-2,p为所述第一参数;所述第一预设步骤包括17个步骤;所述17个步骤中包括15个点乘算法的步骤;
    对所述第一三维坐标的z坐标值的q次方值模所述第一参数,确定所述第一逆元。
  3. 如权利要求2所述的方法,其特征在于,所述生成方确定所述第一三维坐标的z坐标值的q次方值,包括:
    预设第一数量的第一变量,基于所述第一三维坐标的z坐标值确定各第一变量值;
    基于所述各第一变量值确定第二变量值;
    针对任一第一预设步骤,通过所述第一预设步骤的第一预设次方数和第一变量值对所述第二变量值进行更新,直至确定所述第二变量值为所述第一三维坐标的z坐标值的q次方值。
  4. 如权利要求1所述的方法,其特征在于,所述生成方确定所述生成方的私钥模所述第二参数的第二逆元,包括:
    所述生成方根据第二预设步骤确定f的m次方值;所述m=n-2,n为所述第二参数;所述f为所述生成方的私钥与1的和;所述第二预设步骤包括40个步骤;所述40个步骤中包括39个点乘算法的步骤;
    对所述f的m次方值模所述第二参数,确定所述第二逆元。
  5. 如权利要求4所述的方法,其特征在于,所述生成方根据第二预设步骤确定所述第一三维坐标的z坐标值的m次方值,包括:
    预设第二数量的第三变量,基于所述f的值确定各第三变量值;
    基于所述各第三变量值确定第四变量值;
    针对任一第二预设步骤,通过所述第二预设步骤的第二预设次方数和第三变量值对所述第四变量值进行更新,直至确定所述第四变量值为所述f的m次方值。
  6. 一种区块链下基于SM2的交易签名方法,其特征在于,包括:
    验证方获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;所述第一逆元是所述生成方基于第一预设步骤通过第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定的;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方 数是根据所述第一参数确定的;所述第二逆元是所述生成方根据所述生成方的私钥和第二参数确定的;所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
    所述验证方根据所述第一签名参数、所述第二签名参数和所述SM2椭圆曲线的第二参数确定第一验证参数;
    所述验证方根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
    所述验证方根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
    所述验证方在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
  7. 一种区块链下基于SM2的交易签名装置,其特征在于,包括:
    处理模块,用于针对待发送交易,基于SM2椭圆曲线的基点和第一随机数确定第一三维坐标;
    基于第一预设步骤通过所述第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定第一逆元,并根据所述第一逆元将所述第一三维坐标转换为第一二维坐标;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;
    根据所述第一二维坐标、所述待发送交易的哈希值和所述SM2椭圆曲线的第二参数确定第一签名参数;
    根据所述生成方的私钥和所述第二参数生成第二逆元;根据所述第二逆元确定第二签名参数;
    发送模块,发送所述待发送交易及签名,所述签名包括所述第一签名参数和所述第二签名参数。
  8. 一种区块链下基于SM2的交易签名装置,其特征在于,包括:
    获取单元,获取待验证交易的签名和所述待验证交易的哈希值;所述签名包括第一签名参数和第二签名参数;所述第一签名参数是生成方根据第一二维坐标、所述待验证交易的哈希值和SM2椭圆曲线的第二参数确定的;所述第一二维坐标是将第一三维坐标通过第一逆元转换得到的;所述第二签名参数是生成方根据第二逆元确定的;所述第一逆元是所述生成方基于第一预设步骤通过第一三维坐标的z坐标值和所述SM2椭圆曲线的第一参数确定的;任一第一预设步骤中包括第一预设次方数;所述任一第一预设步骤中的第一预设次方数是根据所述第一参数确定的;所述第二逆元是所述生成方根据所述生成方的私钥和第二参数确定的;所述第一三维坐标是所述生成方基于SM2椭圆曲线的基点和第一随机数确定的;
    处理单元,根据所述第一签名参数、所述第二签名参数和所述SM2椭圆曲线的第二参数确定第一验证参数;
    根据所述第二签名参数、所述SM2椭圆曲线的基点、所述第一验证参数和所述生成方的公钥确定第二三维坐标;
    根据所述第一签名参数、所述待验证交易的哈希值、所述第二三维坐标的z坐标值和所述SM2椭圆曲线的第二参数确定第二验证参数;
    在确定所述第二验证参数与所述第二三维坐标的坐标值相等时,确定验证通过。
  9. 一种计算机设备,其特征在于,包括:
    存储器,用于存储程序指令;
    处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至5或权利要求6任一项所述的方法。
  10. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机 可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至5或权利要求6任一项所述的方法。
PCT/CN2021/135328 2021-10-28 2021-12-03 一种区块链下基于sm2的交易签名方法及装置 WO2023070830A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111259574.7A CN113992329B (zh) 2021-10-28 2021-10-28 一种区块链下基于sm2的交易签名方法、装置、设备及介质
CN202111259574.7 2021-10-28

Publications (1)

Publication Number Publication Date
WO2023070830A1 true WO2023070830A1 (zh) 2023-05-04

Family

ID=79742985

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/135328 WO2023070830A1 (zh) 2021-10-28 2021-12-03 一种区块链下基于sm2的交易签名方法及装置

Country Status (2)

Country Link
CN (1) CN113992329B (zh)
WO (1) WO2023070830A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140211938A1 (en) * 2013-01-29 2014-07-31 Certicom Corp. Modified elliptic curve signature algorithm for message recovery
CN110971405A (zh) * 2019-12-06 2020-04-07 支付宝(杭州)信息技术有限公司 多方协同的sm2签名、解密方法及其系统
CN111130787A (zh) * 2020-03-26 2020-05-08 北京信安世纪科技股份有限公司 数字签名方法、设备和存储介质
CN111628868A (zh) * 2020-05-26 2020-09-04 腾讯科技(深圳)有限公司 数字签名生成方法、装置、计算机设备和存储介质
CN112217643A (zh) * 2019-07-09 2021-01-12 华为技术有限公司 运算方法、装置及设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103427997B (zh) * 2013-08-16 2016-06-22 西安西电捷通无线网络通信股份有限公司 一种生成数字签名的方法及装置
CN109586912B (zh) * 2018-11-09 2020-04-07 天津海泰方圆科技有限公司 一种sm2数字签名的生成方法、系统、设备及介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140211938A1 (en) * 2013-01-29 2014-07-31 Certicom Corp. Modified elliptic curve signature algorithm for message recovery
CN112217643A (zh) * 2019-07-09 2021-01-12 华为技术有限公司 运算方法、装置及设备
CN110971405A (zh) * 2019-12-06 2020-04-07 支付宝(杭州)信息技术有限公司 多方协同的sm2签名、解密方法及其系统
CN111130787A (zh) * 2020-03-26 2020-05-08 北京信安世纪科技股份有限公司 数字签名方法、设备和存储介质
CN111628868A (zh) * 2020-05-26 2020-09-04 腾讯科技(深圳)有限公司 数字签名生成方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN113992329A (zh) 2022-01-28
CN113992329B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
JP5297688B2 (ja) ベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システム
JP4575251B2 (ja) デジタル署名生成装置、デジタル署名検証装置、デジタル署名生成方法、デジタル署名検証方法、デジタル署名生成プログラム及びデジタル署名検証プログラム
JP5329676B2 (ja) 鍵合意プロトコルの加速
US6038581A (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
WO2001018772A1 (fr) Procede et dispositif d'elaboration de courbes elliptiques, systeme elliptique de cryptage et support d'enregistrement
EP0952697B1 (en) Elliptic curve encryption method and system
CN103067165A (zh) 公钥密码体制中的外包计算方法、设备和服务器
JP3794266B2 (ja) 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体
JP4875686B2 (ja) 楕円曲線上の有限体演算の加速方法
WO2023070830A1 (zh) 一种区块链下基于sm2的交易签名方法及装置
Li et al. A novel algorithm for scalar multiplication in ecdsa
JP4598269B2 (ja) 楕円曲線上の高速有限体演算
CN111897578A (zh) 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置
JP4058152B2 (ja) 楕円曲線演算装置
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
Dai et al. Don’t Forget Pairing-Friendly Curves with Odd Prime Embedding Degrees
JPH1152854A (ja) 有限体上の四則演算装置及び楕円曲線上の群演算装置
JP2000321979A (ja) 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム
Moldovyan Short Signatures from Difficulty of Factorization Problem.
JP4193176B2 (ja) 楕円曲線整数倍演算装置、ならびにその装置を利用可能な鍵生成装置、暗号化装置および復号装置
Moldovyan et al. Digital signature scheme set in a hidden cyclic group
JP3966714B2 (ja) 暗号処理方法、そのプログラム及びその記録媒体
Lin et al. Faster Key Generation of Supersingular Isogeny Diffie-Hellman
Futa et al. Efficient scalar multiplication on Montgomery-form elliptic curves
Skuratovskii Edwards curve point counting method and supersingular Edwards and Montgomery curves

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21962173

Country of ref document: EP

Kind code of ref document: A1