CN112737778B - 数字签名生成、验证方法及装置、电子设备及存储介质 - Google Patents

数字签名生成、验证方法及装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112737778B
CN112737778B CN202011605481.0A CN202011605481A CN112737778B CN 112737778 B CN112737778 B CN 112737778B CN 202011605481 A CN202011605481 A CN 202011605481A CN 112737778 B CN112737778 B CN 112737778B
Authority
CN
China
Prior art keywords
value
digital signature
sum
modulo
numerical
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
Application number
CN202011605481.0A
Other languages
English (en)
Other versions
CN112737778A (zh
Inventor
樊荣
袁国材
周浩宇
万立
王庆年
徐鹏飞
黄哲
潘芸
叶耀文
王隽
许林
黄秀
肖威
周思承
汪沛然
杜祝
淳增辉
黄灿
黄波
李欣宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
722th Research Institute of CSIC
Original Assignee
722th Research Institute of CSIC
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 722th Research Institute of CSIC filed Critical 722th Research Institute of CSIC
Priority to CN202011605481.0A priority Critical patent/CN112737778B/zh
Publication of CN112737778A publication Critical patent/CN112737778A/zh
Application granted granted Critical
Publication of CN112737778B publication Critical patent/CN112737778B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Error Detection And Correction (AREA)

Abstract

本公开提供了一种数字签名生成、验证方法及装置、电子设备及存储介质。该方法包括:获取待签名消息;计算待签名消息的哈希值;通过随机数发生器产生随机数;基于随机数计算椭圆曲线中点的横坐标和纵坐标,椭圆曲线的阶数为N;采用如下方式将第一数值对N求模,得到第一数字签名值,第一数值为横坐标和随机数之和:将第一数值按其位数,分解为多个第二数值,对各个第二数值对N进行求模,并对求模的结果进行求和,基于模值之和输出第一数字签名值;基于第一数字签名值、随机数和用户私钥,计算第二数字签名值;将第一数字签名值和第二数字签名值转换为字节串,作为待签名消息的数字签名。

Description

数字签名生成、验证方法及装置、电子设备及存储介质
技术领域
本公开涉及数据存储领域,特别涉及一种数字签名生成、验证方法及装置、电子设备及存储介质。
背景技术
椭圆曲线密码(Elliptic Curve Cryptography,ECC)属于非对称密码体制,其具有密钥长度短、加解密速度快的特性。SM2密码标准是我国于2010年提出的公钥密码标准,SM2是一种基于ECC的非对称密码体制。
ECC/SM2椭圆曲线算法包括ECC/SM2加密/解密密码算法和ECC/SM2签名/验签密码算法,在ECC/SM2签名、验签过程中,往往涉及两个大数相乘并对N求模的计算,N为椭圆曲线的阶。由于N不是广义梅森素数,所以没法进行快速约减运算。通常对N求模,只能直接运用除法运算,然而除法运算无论对于软件(程序)实现或者硬件(例如现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)/专用集成电路(Application SpecificIntegrated Circuit,ASIC))实现,造成对N求模的效率较低,进而影响签名/验签的速度;而如果增加额外的除法器,由于利用率较低,会导致软硬件资源的浪费。
发明内容
本公开实施例提供了一种数字签名生成、验证方法及装置、电子设备及存储介质,在不增加除法器的前提下,改变数字签名生成、验证过程,提高对N求模的效率,加快签名/验签的速度。所述技术方案如下:
本公开至少一实施例提供了一种数字签名生成方法,所述方法包括:
获取待签名消息;
计算所述待签名消息的哈希值;
通过随机数发生器产生随机数;
基于所述随机数计算椭圆曲线中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
采用如下方式将第一数值对N求模,得到第一数字签名值,所述第一数值为所述横坐标和所述随机数之和:
将所述第一数值按其位数,分解为多个第二数值,其中每个所述第二数值与N的差值小于N,分别对各个所述第二数值对N进行求模,对各个所述第二数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一数字签名值;如果所述模值之和小于N,则输出所述模值之和作为所述第一数字签名值;
基于所述第一数字签名值、所述随机数和用户私钥,计算第二数字签名值;
将所述第一数字签名值和所述第二数字签名值转换为字节串,作为所述待签名消息的数字签名。
在上述过程中,通过对第一数值进行分解,然后对各个第二数值对N进行求模,再将求模的结果进行求和,之后再与N进行比较并在大于N时进行相减,从而得到了第一数值对N求模的值。
可选地,将所述第一数值对N求模按所述第一数值的位数分解为多个第二数值对N求模的模值之和,包括:
确定第一椭圆曲线密码算法类型;
基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和。
可选地,基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和,包括:
当所述第一椭圆曲线密码算法类型为ECC时,基于如下公式对所述第一数值求模:
B%N=(B[lo]+B[hi][lo]*(D0)+BN[lo]+BN[hi]*(D0))%N;
其中,BN=B[hi][hi]*(D1),D0=2T%N,D1=2(T+T/2)%N,%表示求模;
B为所述第一数值,位数为2T;B[hi]为所述B的高位部分,位数为T;B[lo]为所述B的低位部分,位数为T;B[hi][hi]为所述B[hi]的高位部分,位数为T/2;B[hi][lo]为所述B[hi]的低位部分,位数为T/2;BN[hi]为所述BN的高位部分,位数为T/2;BN[lo]为所述BN的低位部分,位数为T。
可选地,基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和,包括:
当所述第一椭圆曲线密码算法类型为SM2时,基于如下公式对所述第一数值求模:
B%N=(B[lo]+∑(i=0~3)B[hi][lo][i]*Di+∑(i=0~3)B[hi][hi][i]*Di)%N;
其中,D0=2T%N,D1=2T+32%N,D2=2T+64%N,D3=2T+96%N,%表示求模;
B为所述第一数值,位数为2T;B[hi]为所述B的高位部分,位数为T;B[lo]为所述B的低位部分,位数为T;B[hi][hi]为所述B[hi]的高位部分,位数为T/2;B[hi][lo]为所述B[hi]的低位部分,位数为T/2;B[hi][lo][0]~B[hi][lo][4]为所述B[hi][lo]按照位宽被连续分成的4个部分,每个部分的位宽为32;B[hi][hi][0]~B[hi][hi][4]为所述B[hi][hi]按照位宽被连续分成的4个部分,每个部分的位宽为32。
本公开至少一实施例提供了一种数字签名验证方法,所述方法包括:
获取待验证消息和数字签名,所述数字签名包括第一数字签名值和第二数字签名值;
计算所述待验证消息的哈希值;
将所述第一数字签名值和所述第二数字签名值转换为整数;
采用如下方式将第三数值对N求模,得到第一模值,所述第三数值为所述第一数字签名值和所述第二数字签名值之和:
将所述的第三数值按其位数,分解为多个第四数值,其中每个所述第四数值与N的差值小于N,分别对各个所述第四数值对N进行求模,对各个所述第四数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一模值;如果所述模值之和小于N,则输出所述模值之和作为所述第一模值;
基于所述第二数字签名值、所述第一模值和公钥,计算椭圆曲线的中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
将所述哈希值和所述横坐标之和对N求模,得到第二模值;
基于所述第二模值和所述第一数字签名值的大小关系,确定所述数字签名是否通过验证。
可选地,将所述第三数值分解为多个第四数值之和,包括:
确定第一椭圆曲线密码算法类型;
基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第三数值进行分解。
本公开至少一实施例提供了一种数字签名生成装置,所述装置包括:
获取模块,用于获取待签名消息;
第一处理模块,用于计算所述待签名消息的哈希值;
随机数产生模块,用于通过随机数发生器产生随机数;
第二处理模块,用于基于所述随机数计算椭圆曲线中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
采用如下方式将第一数值对N求模,得到第一数字签名值,所述第一数值为所述横坐标和所述随机数之和:
将所述第一数值按其位数,分解为多个第二数值,其中每个所述第二数值与N的差值小于N,分别对各个所述第二数值对N进行求模,对各个所述第二数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一数字签名值;如果所述模值之和小于N,则输出所述模值之和作为所述第一数字签名值;
第三处理模块,用于基于所述第一数字签名值、所述随机数和用户私钥,计算第二数字签名值;
输出模块,用于将所述第一数字签名值和所述第二数字签名值转换为字节串,作为所述待签名消息的数字签名。
本公开至少一实施例提供了一种数字签名验证装置,所述装置包括:
获取模块,用于获取待验证消息和数字签名,所述数字签名包括第一数字签名值和第二数字签名值;
第一处理模块,用于计算所述待验证消息的哈希值;
转换模块,用于将所述第一数字签名值和所述第二数字签名值转换为整数;
第二处理模块,用于采用如下方式将第三数值对N求模,得到第一模值,所述第三数值为所述第一数字签名值和所述第二数字签名值之和:
将所述的第三数值按其位数,分解为多个第四数值,其中每个所述第四数值与N的差值小于N,分别对各个所述第四数值对N进行求模,对各个所述第四数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一模值;如果所述模值之和小于N,则输出所述模值之和作为所述第一模值;
第三处理模块,用于基于所述第二数字签名值、所述第一模值和公钥,计算椭圆曲线的中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
第四处理模块,用于将所述哈希值和所述横坐标之和对N求模,得到第二模值;
确定模块,用于基于所述第二模值和所述第一数字签名值的大小关系,确定所述数字签名是否通过验证。
本公开至少一实施例提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器存储有至少一条程序代码,所述程序代码由所述处理器加载并执行以实现如前述任一项所述的数字签名生成方法或数字签名验证方法。
本公开至少一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如前述任一项所述的数字签名生成方法或数字签名验证方法。
本公开实施例提供的技术方案带来的有益效果是:
在本公开实施例提供的数字签名生成及验证方法中,签名、验签都是基于椭圆曲线算法来实现的,在椭圆曲线算法进行大数对N求模的计算时,将大数分解成多个部分,每个部分与N的差值小于N,这样每个部分对N求模值只需要进行减法即可,然后将各个部分对N的模值相加得到模值之和。如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N;如果所述模值之和小于N,则直接输出所述模值之和即可。上述方案通过分解求模的方式,使得分解得到的每个部分只需要进行减法即可求模,然后将模值相加,该过程不涉及除法运算,提高了对N求模的效率较低,进而能够提高签名/验签的速度。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种数字签名生成方法的流程图;
图2是本公开实施例提供的一种求模方法的流程图;
图3是本公开实施例提供的一种数字签名验证方法的流程图;
图4是本公开实施例提供的一种数字签名生成装置的结构示意图;
图5是本公开实施例提供的一种数字签名验证装置的结构示意图;
图6示出了本发明一个示例性实施例提供的电子设备的结构框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
图1是本公开实施例提供的一种数字签名生成方法的流程图。参见图1,该方法包括:
步骤101:获取待签名消息。
步骤102:计算所述待签名消息的哈希值。
采用哈希算法对待签名消息进行哈希,得到哈希值。在得到该哈希值之后,可以通过数据类型转换,将哈希值转换为整数类型,具体转换的方式可以参考SM2椭圆曲线公钥密码算法标准。
步骤103:通过随机数发生器产生随机数。
该随机数的范围为[1,N-1],N是椭圆曲线的阶数。
步骤104:基于所述随机数计算椭圆曲线中点的横坐标和纵坐标。
椭圆曲线中点的坐标可以按照如下公式计算:(x1,y1)=k*G,x1、y1分别为前述横坐标和纵坐标,k为前述随机数,G为椭圆曲线的基点。
在得到该横坐标之后,可以通过数据类型转换,将横坐标转换为整数类型,具体横纵坐标的计算以及转换的方式可以参考SM2椭圆曲线公钥密码算法标准。
步骤105:将第一数值对N求模,得到第一数字签名值,所述第一数值为所述横坐标和所述随机数之和。
由于第一数值的位数较长,通常能够达到192bit以上,所以在进行求模运算时,如果直接进行除法计算会造成效率低,速度慢。因此,本公开实施例提供了一种先对第一数值进行分解,然后再求模的方案。
示例性地,步骤105可以包括:将所述第一数值按其位数,分解为多个第二数值,其中每个所述第二数值与N的差值小于N,分别对各个所述第二数值对N进行求模,对各个所述第二数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一数字签名值;如果所述模值之和小于N,则输出所述模值之和作为所述第一数字签名值。
这里,将第一数值拆解为多个第二数值,然后分别求出每个第二数值模N的结果,再将结果相加,相加后结果有可能超过N,这时只需要减去正整数个N即可。
值得注意的是,步骤105求出的结果不能为0或者N-k,这两种情况下,返回步骤103,重新产生随机数,然后执行步骤104和步骤105。
步骤106:基于所述第一数字签名值、所述随机数和用户私钥,计算第二数字签名值。
示例性地,第二数字签名值计算按照如下公式进行:
s=((1+dA)-1·(k-r·dA))mod N,其中,s为第二数字签名值,dA为用户私钥,k为随机数,r为第一数字签名值。在该公式计算时,相比于步骤105而言,进行模值计算的数的位数较少,因而直接进行模值计算即可。
值得注意的是,步骤106求出的结果不能为0,如果为0则返回步骤103,重新产生随机数,然后执行步骤104、步骤105和步骤106。
步骤107:将所述第一数字签名值和所述第二数字签名值转换为字节串,作为所述待签名消息的数字签名。
在本公开实施例提供的数字签名生成方法中,签名是基于椭圆曲线算法来实现的,在椭圆曲线算法进行大数对N求模的计算时,将大数分解成多个部分,每个部分与N的差值小于N,这样每个部分对N求模值只需要进行减法即可,然后将各个部分对N的模值相加得到模值之和。如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N;如果所述模值之和小于N,则直接输出所述模值之和即可。上述方案通过分解求模的方式,使得分解得到的每个部分只需要进行减法即可求模,然后将模值相加,该过程不涉及除法运算,提高了对N求模的效率较低,进而能够提高签名的速度。
图2是本公开实施例提供的一种求模方法的流程图。参见图2,该方法包括:
步骤201:确定第一椭圆曲线密码算法类型。
这里,第一椭圆曲线密码算法是指本公开实施例在进行签名生成或签名验证时使用的椭圆曲线密码算法。
在本公开实施例中,第一椭圆曲线密码算法的类型包括ECC和SM2两大类。
其中,ECC包括NIST-p192、NIST-p224、NIST-p384、NIST-p521等类型。
下面通过表1来展示ECC这几种类型的算法的位宽和阶数N。
表1
Figure BDA0002873191550000081
Figure BDA0002873191550000091
ECC所包括的这几种密码的特点是N的高位全为1,这里的高位指N的前一半位数。
下面通过表1来展示SM2算法的位宽和阶数N。
表2
Figure BDA0002873191550000092
相比于ECC密码,SM2密码的特点是N的高位不全为1。
步骤202:基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和。
示例性地,当所述第一椭圆曲线密码算法类型为ECC时,基于如下公式(1)进行计算:
B%N=(B[lo]+B[hi][lo]*(D0)+BN[lo]+BN[hi]*(D0))%N (1)
其中,BN=B[hi][hi]*(D1),D0=2T%N,D1=2(T+T/2)%N,%表示求模;
B为所述第一数值,位数为2T;B[hi]为所述B的高位部分,位数为T;B[lo]为所述B的低位部分,位数为T;B[hi][hi]为所述B[hi]的高位部分,位数为T/2;B[hi][lo]为所述B[hi]的低位部分,位数为T/2;BN[hi]为所述BN的高位部分,位数为T/2;BN[lo]为所述BN的低位部分,位数为T。
在公式(1)中,加号相连的每个部分即为一个第二数值,即B[lo]、B[hi][lo]*(D0)、BN[lo]、BN[hi]*(D0)分别为4个第二数值。
下面对公式(1)的推导过程进行说明:
将N分为两部分:高位部分和低位部分,N的高位比特位全为1,NIST曲线中一部分满足该特性,也即前文所述的NIST-p192、NIST-p224、NIST-p384、NIST-p521。对于需要计算的大整数B对N求模:
首先,大整数B往往是两个T比特整数之乘积,因此B的位宽通常为2×T比特。按位的高低,将B均分为两部分B[hi]和B[lo],其中,B[lo]对应B的第0~T-1位,B[hi]对应B的第T~2T-1位。此时,大整数B可以表示为公式(2):
B=B[hi]*2T+B[lo] (2)
对于低位B[lo],位数为T bit,和阶数N位数相同,因此对B[lo]求模最多减去一次N即可。
对于高位B[hi],需要继续划分,首先计算D0=2T%N,具体对于各个标准中D0的取值可以参见表3。
表3
Figure BDA0002873191550000101
可以看出,基本上D0位宽都是T/2。
将B[hi]进一步按T/2均分,得到B[hi][hi]和B[hi][lo],其中,B[hi][lo]对应B[hi]的第0~T/2-1位,B[hi][hi]对应B[hi]的第T/2~T-1位。此时,B[hi]可以表示为公式(3):
B[hi]=B[hi][hi]*2T/2+B[hi][lo] (3)
对于低位B[hi][lo],由于B[hi][lo]*D0不超过T bit,N也为T bit,所以B[hi][lo]对N求模,最多减去一次N即可。
对于高位B[hi][hi],对其求N模,B[hi][hi]*2T/2*D0%N,也即B[hi][hi]*(2T+T/2%N),由于位数超过B[hi][hi]*2T/2*D0位数超过T,因此无法直接和N相减,需要进一步进行分解:
令BN=B[hi][hi]*D1,其中D1=2T/2*D0%N=(2T+T/2%N),位宽为T,B[hi][hi]位宽为T/2,那么BN为不超过T+T/2bit的数。将BN均分BN[hi]和BN[lo],其中,BN[lo]对应BN的第0~T-1位,BN[hi]对应B的第T~T+T/2位。此时,BN可以表示为公式(4):
BN=BN[hi]*2T+BN[lo] (4)
对于低位BN[lo],其位数为T,由于N也为T bit,所以求模最多减去一次N即可;对于高位BN[hi],计算BN[hi]*(2T%N),结果不超过T bit,由于N也为T bit,所以求模最多减去一次N即可。
其中,D1的取值可以参见表4。
表4
Figure BDA0002873191550000111
综上所述,在按照上述方式分解完成后,B%N对应对应公式(1)。
示例性地,当所述第一椭圆曲线密码算法类型为SM2时,基于如下公式(5)进行求模计算:
B%N=(B[lo]+∑(i=0~3)B[hi][lo][i]*Di+∑(i=0~3)B[hi][hi][i]*Di)%N (5)
其中,D0=2T%N,D1=2T+32%N,D2=2T+64%N,D3=2T+96%N,%表示求模;
B为所述第一数值,位数为2T;B[hi]为所述B的高位部分,位数为T;B[lo]为所述B的低位部分,位数为T;B[hi][hi]为所述B[hi]的高位部分,位数为T/2;B[hi][lo]为所述B[hi]的低位部分,位数为T/2;B[hi][lo][0]~B[hi][lo][4]为所述B[hi][lo]按照位宽被连续分成的4个部分,每个部分的位宽为32;B[hi][hi][0]~B[hi][hi][4]为所述B[hi][hi]按照位宽被连续分成的4个部分,每个部分的位宽为32。
在公式(5)中,参与求和的每个部分即为一个第二数值。
下面对公式(5)的推导过程进行说明:
将N分为两部分:高位部分和低位部分,N的高位大部分为1,SM2椭圆曲线满足该情况,由于其高位有0。
首先,大整数B往往是两个T比特整数之乘积,因此B的位宽通常为2×T比特。按位的高低,将B均分为两部分B[hi]和B[lo],其中,B[lo]对应B的第0~T-1位,B[hi]对应B的第T~2T-1位。此时,大整数B可以表示为公式参见公式(2)。
对于低位B[lo],位数为T bit,和阶数N位数相同,因此对B[lo]求模最多减去一次N即可。对于高位B[hi],需要继续划分,将B[hi]进一步按T/2均分,得到B[hi][hi]和B[hi][lo],其中,B[hi][lo]对应B[hi]的第0~T/2-1位,B[hi][hi]对应B[hi]的第T/2~T-1位。此时,B[hi]可以表示为公式(3)。
对于B[hi][lo]部分,由于在高位中含有一个0,无法直接计算B[hi][lo]*(2T%N),因为直接计算会导致一个远大于N的数产生,无法通过较少的减法来计算求模。根据SM2中阶N的特性,将B[hi][lo]继续等分为4个部分,每一部分宽带为32,如下公式(6)所示:
Figure BDA0002873191550000121
公式(6)表示每个B[hi][lo][i](i取0~3)取B[hi][lo]的从高到低的各32bit,具体结构如下所示:
Figure BDA0002873191550000131
将B[hi][lo]分为4个部分的过程参见公式(6),以第一个式子为例,其中B[hi][lo]>>(96)表示对B[hi][lo]右移96个bit位,&0xffffffff表示将移位后的数据与0xffffffff进行按位与。通过上述两个步骤,得到B[hi][lo][3]的值。其中,将移位后的数据与0xffffffff进行按位与是为了防止在移位的过程中出现bit错误。
此时,B[hi][lo]*2T=B[hi][lo][3]*2T+96+B[hi][lo][2]*2T+64+B[hi][lo][1]*2T +32+B[hi][lo][0]*2T (7)
那么,B[hi][lo]*2T%N=(B[hi][lo][3]*D3+B[hi][lo][2]*D2+B[hi][lo][1]*D1+B[hi][lo][0]*D0)%N (8)
其中,D0=2T%N、D1=2T+32%N、D2=2T+64%N、D3=2T+96%N可以预先计算:
D0=0x10000000000000000000000008dfc2094de39fad4ac440bf6c62abedd;
D1=0x100000000000000008dfc20956c361b698a7e06cb726ecad3c62abedd;
D2=0x1000000008dfc20956c361b6a187a276050a8c5a8726ecad3c62abedd;
D3=0x18dfc20956c361b6a187a2760dea4e63d50a8c5a8726ecad3c62abedd;
可以发现,计算B[hi][lo]的每一项Di(i=0,1,2,3)都是226bit的数,而B[hi][lo][i](i=0,1,2,3)都是32bit的数,那么B[hi][lo][i]*(Di)都是不超过257bit的数,因此对B[hi][lo][i]*(Di)求模N,最多减去一个N即可,所以对于B[hi][lo]求模N,可以将按上述的方式简单分成4部分,分别求模后相加再求模得出,其中每次求模计算都可用较少的比较、相减即可完成。
对于B[hi][hi]部分,可以将B[hi][hi]部分的求模计算,通过乘法求模后,转换类似于B[hi][lo]的求模运算,这样可以重复利用B[hi][lo]部分的算法,得到公式(9):
(B[hi][hi]*(2T+T/2))%N=(B[hi][hi]*(2T+T/2%N))%N (9)
(2T+T/2%N)是一个位宽位T的数,B[hi][hi]为位宽T/2的数,那么(B[hi][hi]*(2T +T/2%N))是一个T+T/2的数,可以重复利用计算B[hi][lo]的算法即可计算B[hi][hi]部分的求模,得到公式(10):
(B[hi][hi]*(2T+T/2))%N=(B[hi][hi][0]*D0+B[hi][hi][1]*D1+B[hi][hi][2]*D2+B[hi][hi][3]*D3)%N (10)
其中,每一部分宽带为32,如下公式(11)所示:
Figure BDA0002873191550000141
综上所述,在按照上述方式分解完成后,B%N对应如下公式(5)。
对于两种不同的情况,分别运用前面所描述的公式,按照对应的式子通过乘法和加法计算B%N,由于B%N为比较接近N的大整数,将B%N与N进行比较如果大于N,则减去一个N,反复进行比较相减直到G小于N,则此值为B对N求模的值。
图3是本公开实施例提供的一种数字签名验证方法的流程图。参见图3,该方法包括:
步骤301:获取待验证消息和数字签名,所述数字签名包括第一数字签名值和第二数字签名值。
示例性地,数字签名为(r,s),其中r为第一数字签名值,s为第二数字签名值。
步骤302:计算所述待验证消息的哈希值。
采用哈希算法对待验证消息进行哈希,得到哈希值。在得到该哈希值之后,可以通过数据类型转换,将哈希值转换为整数类型,具体转换的方式可以参考SM2椭圆曲线公钥密码算法标准。
步骤303:将所述第一数字签名值和所述第二数字签名值转换为整数。
在该步骤中,具体转换的方式可以参考SM2椭圆曲线公钥密码算法标准。
需要说明的是,数字签名中r、s都小于椭圆曲线的阶数N,因此在将r和s转换为整数后,可以对r、s进行验证。例如,判断r和s是否处于[1,N-1],如果处于,则验证通过,继续执行后续步骤,否则验证不通过,无需执行后续步骤。
在本公开实施例中,步骤302和步骤303没有先后顺序。
步骤304:将第三数值对N求模,得到第一模值,所述第三数值为所述第一数字签名值和所述第二数字签名值之和。
由于第三数值的位数较长,通常能够达到192bit以上,所以在进行求模运算时,如果直接进行除法计算会造成效率低,速度慢。因此,本公开实施例提供了一种先对第三数值进行分解,然后再求模的方案。
示例性地,步骤304可以包括:
将所述的第三数值按其位数,分解为多个第四数值,其中每个所述第四数值与N的差值小于N,分别对各个所述第四数值对N进行求模,对各个所述第四数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一模值;如果所述模值之和小于N,则输出所述模值之和作为所述第一模值。
这里,将第三数值拆解为多个第四数值,然后分别求出每个第四数值模N的结果,再将结果相加,相加后结果有可能超过N,这时只需要减去正整数个N即可。
在本公开实施例中,将第三数值对N求模的详细步骤可以参见图2对应的方法,只需要将其中第一数值替换成第二数值即可。
值得注意的是,步骤304求出的结果如果为0,则验证不通过,无需执行后续步骤,如果结果不为0,则验证通过,继续执行后续步骤。
步骤305:基于所述第二数字签名值、所述第一模值和公钥,计算椭圆曲线的中点的横坐标和纵坐标,所述椭圆曲线的阶数为N。
示例性地,椭圆曲线的中点的横坐标和纵坐标计算按照如下公式进行:
(x1,y1)=S*G G+t*PA,其中,x1、y1分别表示横坐标和纵坐标,s为第二数字签名值,G为椭圆曲线的基点,t为第一模值,PA为公钥。
步骤306:将所述哈希值和所述横坐标之和对N求模,得到第二模值。
在该步骤计算模值时,相比于步骤304而言,进行模值计算的数的位数较少,因而直接进行模值计算即可。
步骤307:基于所述第二模值和所述第一数字签名值的大小关系,确定所述数字签名是否通过验证。
示例性地,该步骤包括:比较所述第二模值和所述第一数字签名值是否相等;若所述第二模值和所述第一数字签名值相等,则签名验证通过;若所述第二模值和所述第一数字签名值不相等,则签名验证未通过。
在本公开实施例提供的数字签名验证方法中,验签都是基于椭圆曲线算法来实现的,在椭圆曲线算法进行大数对N求模的计算时,将大数分解成多个部分,每个部分与N的差值小于N,这样每个部分对N求模值只需要进行减法即可,然后将各个部分对N的模值相加得到模值之和。如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N;如果所述模值之和小于N,则直接输出所述模值之和即可。上述方案通过分解求模的方式,使得分解得到的每个部分只需要进行减法即可求模,然后将模值相加,该过程不涉及除法运算,提高了对N求模的效率较低,进而能够提高验签的速度。
图4是本公开实施例提供的一种数字签名生成装置的结构示意图。参见图4,该装置包括:获取模块401、第一处理模块402、随机数产生模块403、第二处理模块404、第三处理模块405和输出模块406。
其中,获取模块401用于获取待签名消息;
第一处理模块402用于计算所述待签名消息的哈希值;
随机数产生模块403用于通过随机数发生器产生随机数;
第二处理模块404用于基于所述随机数计算椭圆曲线中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
采用如下方式将第一数值对N求模,得到第一数字签名值,所述第一数值为所述横坐标和所述随机数之和:
将所述第一数值按其位数,分解为多个第二数值,其中每个所述第二数值与N的差值小于N,分别对各个所述第二数值对N进行求模,对各个所述第二数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一数字签名值;如果所述模值之和小于N,则输出所述模值之和作为所述第一数字签名值;
第三处理模块405用于基于所述第一数字签名值、所述随机数和用户私钥,计算第二数字签名值;
输出模块406用于将所述第一数字签名值和所述第二数字签名值转换为字节串,作为所述待签名消息的数字签名。
需要说明的是:上述实施例提供的数字签名生成装置在生成数字签名时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数字签名生成装置与数字签名生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本公开实施例提供的一种数字签名验证装置的结构示意图。参见图5,该装置包括:获取模块501、第一处理模块502、转换模块503、第二处理模块504、第三处理模块505、第四处理模块506和确定模块507。
其中,获取模块501用于获取待验证消息和数字签名,所述数字签名包括第一数字签名值和第二数字签名值;
第一处理模块502用于计算所述待验证消息的哈希值;
转换模块503用于将所述第一数字签名值和所述第二数字签名值转换为整数;
第二处理模块504用于采用如下方式将第三数值对N求模,得到第一模值,所述第三数值为所述第一数字签名值和所述第二数字签名值之和:
将所述的第三数值按其位数,分解为多个第四数值,其中每个所述第四数值与N的差值小于N,分别对各个所述第四数值对N进行求模,对各个所述第四数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一模值;如果所述模值之和小于N,则输出所述模值之和作为所述第一模值;
第三处理模块505用于基于所述第二数字签名值、所述第一模值和公钥,计算椭圆曲线的中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
第四处理模块506用于将所述哈希值和所述横坐标之和对N求模,得到第二模值;
确定模块507用于基于所述第二模值和所述第一数字签名值的大小关系,确定所述数字签名是否通过验证。
需要说明的是:上述实施例提供的数字签名验证装置在验证数字签名时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数字签名验证装置与数字签名验证方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6示出了本发明一个示例性实施例提供的电子设备的结构框图。通常,电子设备包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的数字签名生成方法或数字签名验证方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种数字签名生成方法,其特征在于,所述方法包括:
获取待签名消息;
计算所述待签名消息的哈希值;
通过随机数发生器产生随机数;
基于所述随机数计算椭圆曲线中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
采用如下方式将第一数值对N求模,得到第一数字签名值,所述第一数值为所述横坐标和所述随机数之和:
将所述第一数值按其位数,分解为多个第二数值,其中每个所述第二数值与N的差值小于N,分别对各个所述第二数值对N进行求模,对各个所述第二数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一数字签名值;如果所述模值之和小于N,则输出所述模值之和作为所述第一数字签名值;
基于所述第一数字签名值、所述随机数和用户私钥,计算第二数字签名值;
将所述第一数字签名值和所述第二数字签名值转换为字节串,作为所述待签名消息的数字签名。
2.根据权利要求1所述的方法,其特征在于,将所述第一数值对N求模按所述第一数值的位数分解为多个第二数值对N求模的模值之和,包括:
确定第一椭圆曲线密码算法类型;
基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和。
3.根据权利要求2所述的方法,其特征在于,基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和,包括:
当所述第一椭圆曲线密码算法类型为ECC时,基于如下公式对所述第一数值求模:
B%N=(B[lo]+B[hi][lo]*(D0)+BN[lo]+BN[hi]*(D0))%N;
其中,BN=B[hi][hi]*(D1),D0=2T%N,D1=2(T+T/2)%N,%表示求模;
B为所述第一数值,位数为2T;B[hi]为所述B的高位部分,位数为T;B[lo]为所述B的低位部分,位数为T;B[hi][hi]为所述B[hi]的高位部分,位数为T/2;B[hi][lo]为所述B[hi]的低位部分,位数为T/2;BN[hi]为所述BN的高位部分,位数为T/2;BN[lo]为所述BN的低位部分,位数为T。
4.根据权利要求2所述的方法,其特征在于,基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第一数值进行分解并求模值之和,包括:
当所述第一椭圆曲线密码算法类型为SM2时,基于如下公式对所述第一数值求模:
B%N=(B[lo]+∑(i=0~3)B[hi][lo][i]*Di+∑(i=0~3)B[hi][hi][i]*Di) %N;
其中,D0=2T%N,D1=2T+32%N,D2=2T+64%N,D3=2T+96%N,%表示求模;
B为所述第一数值,位数为2T;B[hi]为所述B的高位部分,位数为T;B[lo]为所述B的低位部分,位数为T;B[hi][hi]为所述B[hi]的高位部分,位数为T/2;B[hi][lo]为所述B[hi]的低位部分,位数为T/2;B[hi][lo][0]~ B[hi][lo][4]为所述B[hi][lo]按照位宽被连续分成的4个部分,每个部分的位宽为32;B[hi][hi][0]~B[hi][hi][4]为所述B[hi][hi]按照位宽被连续分成的4个部分,每个部分的位宽为32。
5.一种数字签名验证方法,其特征在于,所述方法包括:
获取待验证消息和数字签名,所述数字签名包括第一数字签名值和第二数字签名值;
计算所述待验证消息的哈希值;
将所述第一数字签名值和所述第二数字签名值转换为整数;
采用如下方式将第三数值对N求模,得到第一模值,所述第三数值为所述第一数字签名值和所述第二数字签名值之和:
将所述的第三数值按其位数,分解为多个第四数值,其中每个所述第四数值与N的差值小于N,分别对各个所述第四数值对N进行求模,对各个所述第四数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一模值;如果所述模值之和小于N,则输出所述模值之和作为所述第一模值;
基于所述第二数字签名值、所述第一模值和公钥,计算椭圆曲线的中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
将所述哈希值和所述横坐标之和对N求模,得到第二模值;
基于所述第二模值和所述第一数字签名值的大小关系,确定所述数字签名是否通过验证。
6.根据权利要求5所述的方法,其特征在于,将所述第三数值分解为多个第四数值之和,包括:
确定第一椭圆曲线密码算法类型;
基于所述椭圆曲线密码算法类型与数值分解方式的对应关系,按照所述第一椭圆曲线密码算法类型对应的数值分解方式对所述第三数值进行分解。
7.一种数字签名生成装置,其特征在于,所述装置包括:
获取模块,用于获取待签名消息;
第一处理模块,用于计算所述待签名消息的哈希值;
随机数产生模块,用于通过随机数发生器产生随机数;
第二处理模块,用于基于所述随机数计算椭圆曲线中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
采用如下方式将第一数值对N求模,得到第一数字签名值,所述第一数值为所述横坐标和所述随机数之和:
将所述第一数值按其位数,分解为多个第二数值,其中每个所述第二数值与N的差值小于N,分别对各个所述第二数值对N进行求模,对各个所述第二数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一数字签名值;如果所述模值之和小于N,则输出所述模值之和作为所述第一数字签名值;
第三处理模块,用于基于所述第一数字签名值、所述随机数和用户私钥,计算第二数字签名值;
输出模块,用于将所述第一数字签名值和所述第二数字签名值转换为字节串,作为所述待签名消息的数字签名。
8.一种数字签名验证装置,其特征在于,所述装置包括:
获取模块,用于获取待验证消息和数字签名,所述数字签名包括第一数字签名值和第二数字签名值;
第一处理模块,用于计算所述待验证消息的哈希值;
转换模块,用于将所述第一数字签名值和所述第二数字签名值转换为整数;
第二处理模块,用于采用如下方式将第三数值对N求模,得到第一模值,所述第三数值为所述第一数字签名值和所述第二数字签名值之和:
将所述的第三数值按其位数,分解为多个第四数值,其中每个所述第四数值与N的差值小于N,分别对各个所述第四数值对N进行求模,对各个所述第四数值对N进行求模的结果进行求和,得到模值之和;如果所述模值之和大于或等于N,则将所述模值之和减去N的正整数倍,直到小于N,输出所述模值之和减去N的正整数倍的结果作为所述第一模值;如果所述模值之和小于N,则输出所述模值之和作为所述第一模值;
第三处理模块,用于基于所述第二数字签名值、所述第一模值和公钥,计算椭圆曲线的中点的横坐标和纵坐标,所述椭圆曲线的阶数为N;
第四处理模块,用于将所述哈希值和所述横坐标之和对N求模,得到第二模值;
确定模块,用于基于所述第二模值和所述第一数字签名值的大小关系,确定所述数字签名是否通过验证。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器存储有至少一条程序代码,所述程序代码由所述处理器加载并执行以实现如权利要求1至权利要求4中任一项所述的数字签名生成方法,或权利要求5或6所述的数字签名验证方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至权利要求4中任一项所述的数字签名生成方法,或权利要求5或6所述的数字签名验证方法。
CN202011605481.0A 2020-12-30 2020-12-30 数字签名生成、验证方法及装置、电子设备及存储介质 Active CN112737778B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011605481.0A CN112737778B (zh) 2020-12-30 2020-12-30 数字签名生成、验证方法及装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011605481.0A CN112737778B (zh) 2020-12-30 2020-12-30 数字签名生成、验证方法及装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112737778A CN112737778A (zh) 2021-04-30
CN112737778B true CN112737778B (zh) 2022-08-12

Family

ID=75610689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011605481.0A Active CN112737778B (zh) 2020-12-30 2020-12-30 数字签名生成、验证方法及装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112737778B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116961925B (zh) * 2023-09-18 2023-12-19 北京信安世纪科技股份有限公司 签名方法、系统、电子设备及存储介质
CN117081744B (zh) * 2023-10-17 2024-01-26 北京密码云芯科技有限公司 基于椭圆曲线的签名处理方法、装置及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603246A (zh) * 2017-01-22 2017-04-26 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
CN109150544A (zh) * 2018-08-30 2019-01-04 天津通卡智能网络科技股份有限公司 一种在嵌入式设备端加快sm2验签的方法
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
CN109614072A (zh) * 2018-09-28 2019-04-12 阿里巴巴集团控股有限公司 对素数取模、素域中模乘运算的实现方法和装置
CN109698751A (zh) * 2018-11-09 2019-04-30 北京中宇万通科技股份有限公司 数字签名生成及验签方法、计算机设备和存储介质
CN110336664A (zh) * 2019-07-10 2019-10-15 西安电子科技大学 基于sm2密码算法的信息服务实体跨域认证方法
CN111628868A (zh) * 2020-05-26 2020-09-04 腾讯科技(深圳)有限公司 数字签名生成方法、装置、计算机设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103427997B (zh) * 2013-08-16 2016-06-22 西安西电捷通无线网络通信股份有限公司 一种生成数字签名的方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
CN106603246A (zh) * 2017-01-22 2017-04-26 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
CN109150544A (zh) * 2018-08-30 2019-01-04 天津通卡智能网络科技股份有限公司 一种在嵌入式设备端加快sm2验签的方法
CN109614072A (zh) * 2018-09-28 2019-04-12 阿里巴巴集团控股有限公司 对素数取模、素域中模乘运算的实现方法和装置
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
CN109698751A (zh) * 2018-11-09 2019-04-30 北京中宇万通科技股份有限公司 数字签名生成及验签方法、计算机设备和存储介质
CN110336664A (zh) * 2019-07-10 2019-10-15 西安电子科技大学 基于sm2密码算法的信息服务实体跨域认证方法
CN111628868A (zh) * 2020-05-26 2020-09-04 腾讯科技(深圳)有限公司 数字签名生成方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
罗一帆等.一种基于组合公钥的密钥派生方案.《郑州大学学报(理学版)》.2018,(第02期), *

Also Published As

Publication number Publication date
CN112737778A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
EP1889391B1 (en) Scalar recoding for elliptic curve point multiplication
US11822704B2 (en) Constant time secure arithmetic-to-Boolean mask conversion
CN112737778B (zh) 数字签名生成、验证方法及装置、电子设备及存储介质
US20070064930A1 (en) Modular exponentiation with randomized exponent
US6404890B1 (en) Generating RSA moduli including a predetermined portion
US8422669B2 (en) Method and apparatus for elliptic curve cryptographic processing
EP1708081B1 (en) Method and device for calculating a Montgomery conversion parameter
US11863657B2 (en) Using cryptographic blinding for efficient use of montgomery multiplication
US7191333B1 (en) Method and apparatus for calculating a multiplicative inverse of an element of a prime field
US11895230B2 (en) Information processing apparatus, secure computation method, and program
JPH11109859A (ja) 擬似乱数発生方法および装置
Bedoui et al. A Secure Hardware Implementation for Elliptic Curve Digital Signature Algorithm.
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
Kotukh et al. Method of Security Improvement for MST3 Cryptosystem Based on Automorphism Group of Ree Function Field
Gorbenko et al. Methods of building general parameters and keys for NTRU Prime Ukraine of 5 th–7 th levels of stability. Product form
CN116488806A (zh) 一种密钥封装方法、装置、设备及存储介质
Babenko et al. Euclidean division method for the homomorphic scheme ckks
KR100723863B1 (ko) 랜덤화한 프로베니우스 분해방법을 이용한 차분 공격 방지방법 및 그 장치
CN116167093A (zh) 数字签名门限方法和装置
Abukari et al. A new text encryption scheme suitable for combating sniffing attacks in IoT applications via non-supersingular elliptic curves over binary extension fields
RU2401513C2 (ru) Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ
Kuznetsov et al. Performance Evaluation of the Classic McEliece Key Encapsulation Algorithm
Knezevic et al. Modular reduction without precomputational phase
CN114710293B (zh) 数字签名方法、装置、电子设备及存储介质
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