CN113193962B - 基于轻量级模乘的sm2数字签名生成与验证器 - Google Patents

基于轻量级模乘的sm2数字签名生成与验证器 Download PDF

Info

Publication number
CN113193962B
CN113193962B CN202110479415.1A CN202110479415A CN113193962B CN 113193962 B CN113193962 B CN 113193962B CN 202110479415 A CN202110479415 A CN 202110479415A CN 113193962 B CN113193962 B CN 113193962B
Authority
CN
China
Prior art keywords
module
digital signature
point
modular
signature generation
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
CN202110479415.1A
Other languages
English (en)
Other versions
CN113193962A (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.)
Anhui Dongzhiyun Information Technology Co ltd
Original Assignee
Anhui Normal University
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 Anhui Normal University filed Critical Anhui Normal University
Priority to CN202110479415.1A priority Critical patent/CN113193962B/zh
Publication of CN113193962A publication Critical patent/CN113193962A/zh
Application granted granted Critical
Publication of CN113193962B publication Critical patent/CN113193962B/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/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种基于轻量级模乘的SM2数字签名生成与验证器至少包括一个顶层控制模块、一个数据输入单元、一个数据输出单元、一个轻量级模乘器、一个SM2数字签名生成模块、一个SM2数字签名验证模块和一套改进的相关运算的运算器。本发明利用交错模乘算法边乘边模的思想,将复杂的模乘算法简化为普通的加减法与移位操作,在提高模乘速度的同时尽可能少地消耗资源面积,从而进一步影响上层算法的效率,对最终构建的应用层的SM2数字签名算法提供了更快速的方式。

Description

基于轻量级模乘的SM2数字签名生成与验证器
技术领域
本发明涉及密码学与信息安全,特别是涉及一种基于轻量级模乘的SM2数字签名生成与验证器。
背景技术
在公钥密码体制中,椭圆曲线加密ECC凭借其高安全性、密钥量小、灵活性好等优势,成为了网络安全、物联网、射频、区块链等新兴技术领域的研究热点之一。其中,SM2椭圆曲线公钥密码算法作为ECC加密的一种延展算法,具备ECC算法在同等安全等级下密钥量更小的优势。因此,SM2算法被广泛应用于软件与技术的加解密、数字签名等领域。
从软件实现角度,SM2算法的计算复杂度相对较低、实现方式灵活,因此常与OpenSSL相结合在个人电脑设备与服务器端用以保护商业设备网络安全。而面对使用微控制器等要求低功耗、高计算效率的场景时,软件实现的计算效率难以满足。使用硬件实现SM2算法可以解决这一问题,相比软件实现不仅具备更高的加密与签名效率,更可将算法封装并集成于物端设备中,提供更高层次、更低功耗的安全性。
但是SM2数字签名算法固化为硬件时存在功耗大、资源消耗高等问题。因此,急需要提供一种基于轻量级模乘的SM2数字签名生成与验证器来解决该问题。
发明内容
本发明的目的是提供一种基于轻量级模乘的SM2数字签名生成与验证器,该SM2数字签名生成与验证器简化了复杂度,提升了运算速度,节省了资源开销。
为了实现上述目的,本发明提供了一种基于轻量级模乘的SM2数字签名生成与验证器,包括:
顶层控制模块,与SM2数字签名生成模块、SM2数字签名验证模块、数据输入单元和数据输出单元连接,用于在通过数据输入单元选择相应功能后,触发相应器件,控制SM2数字签名生成模块与SM2数字签名验证模块的状态和计算过程,并通过数据输出单元将结果输出;
数据输入单元和数据输出单元,与顶层控制模块、SM2数字签名生成模块和SM2数字签名验证模块相连接,用于接收外界输入的数据,包括椭圆曲线相关参数、用户的原始数据、公钥和私钥,由顶层控制模块将输入数据传送给对应的生成模块和验证模块。同时在计算出结果后由顶层控制模块发出信号,使SM2数字签名生成模块和SM2数字签名验证模块将结果输出给相对应的用户;
轻量级模乘器,与SM2数字签名生成模块和SM2数字签名验证模块连接,用于根据实际情况在SM2数字签名生成模块和SM2数字签名验证模块中模乘计算,并将结果送给SM2数字签名生成模块和SM2数字签名验证模块;
SM2数字签名生成模块,基于轻量级模乘器和改进的相关运算的运算器,由顶层控制模块控制,对输入的数据进行处理,最终得到生成的签名,并在顶层控制模块的触发下将结果输送给数据输出单元;
SM2数字签名验证模块,基于轻量级模乘器和改进的相关运算的运算器,由顶层控制模块触发,对接收的签名进行验证,最终得到验证通过与否标志,并由顶层控制模块控制输出标志信号给数据输出单元;
改进的相关运算的运算器,与SM2数字签名生成模块和SM2数字签名验证模块连接,用于在SM2数字签名生成模块和SM2数字签名验证模块中计算相应的相关底层运算,包括模运算和点运算。
优选地,改进的相关运算的运算器包括:
模加/模减模块,用于在Jacobian加重射影坐标系下计算SM2数字签名生成与验证器中的模加和模减运算结果;
模逆模块,用于在SM2数字签名生成与验证器中计算模逆的结果;
点运算模块,基于底层的模运算层,采用模加/模减模块、模逆模块和轻量级模乘器进行Jacobian加重射影坐标系下素数域Fp上的二倍点运算和点加运算,对应SM2数字签名生成与验证器中的二倍点模块和点加模块;
点乘运算模块,基于模加/模减模块、模逆模块、轻量级模乘器和点运算模块,在素数域Fp上,基于Jacobian加重射影坐标系进行相应的点乘运算;
SM3密码杂凑模块,用于SM2数字签名生成模块和SM2数字签名验证模块中计算消息M的哈希值。
优选地,SM2数字签名生成模块包括:
第一状态控制机模块,用于控制SM2数字签名生成算法的流程,并与SM2数字签名生成与验证器进行数据交换,在SM2数字签名生成模块启动或者复位时发出相应的控制信号;
第一数据缓冲器模块,用于SM2数字签名生成模块计算过程中的相关变量的存储,记录其过程值,并在SM2数字签名生成模块的rst信号为1时进行复位,将相应变量清零;
第一轻量级模乘器,用于计算SM2数字签名生成模块中的模乘运算,包括签名s的生成计算s=((1+dA)-1·(k-r·dA))mod n,其中,dA代表需要对消息进行签名的用户A的私钥,k是随机数生成器产生的随机数,r用来标识签名的过程性变量,最终作为签名的一部分,n代表选定的椭圆曲线的基点G的阶;
第一改进的相关运算的运算器,用于SM2数字签名生成模块中的相关运算,包括:
r=(e+x1)mod n模加运算,其中,e代表用户A的杂凑值ZA与消息M拼接后的消息的哈希值,x1是签名算法中计算出的k倍点的横坐标;
(x1,y1)=[k]G点乘运算,其中,G代表选定的椭圆曲线的基点,y1是签名算法中计算出基点G的k倍点的纵坐标;
Figure BDA0003048624910000041
密码杂凑运算,其中,
Figure BDA0003048624910000042
代表用户A的杂凑值ZA与消息M拼接后的消息,Hv()代表SM3密码杂凑函数,用来计算哈希值)以及相关的模运算、点运算、点乘运算和哈希运算。
优选地,第一状态控制机模块用于:
接收本次SM2数字签名生成模块所需的数据和参数;
接收来自顶层控制模块的start信号,开始生成签名的操作;
调用第一改进的相关运算的运算器计算
Figure BDA0003048624910000043
(x1,y1)=[k]G和r=(e+x1)mod n、(1+dA)-1mod n和(k-r·dA)mod n等计算;其中,
Figure BDA0003048624910000044
代表用户A的杂凑值ZA与消息M拼接后的消息;Hv()代表SM3密码杂凑函数,用来计算哈希值;G代表选定的椭圆曲线的基点;(x1,y1)是签名算法中计算出的k倍点的横坐标和纵坐标;dA代表需要对消息进行签名的用户A的私钥;k是随机数生成器产生的随机数;r则用来标识签名的过程性变量,最终作为签名的一部分;n代表选定的椭圆曲线的基点G的阶;
调用第一轻量级模乘器计算s=((1+dA)-1·(k-r·dA))mod n,其中,s代表生成的签名的一部分,(1+dA)-1代表求取模逆值;
调用第一数据缓冲器存储e、k、(x1,y1)、r、s等相关变量的中间值;
在计算完成后,得到生成的签名,并将签名和计算完成信号返回给SM2数字签名生成模块;
接收来自顶层控制模块的rst复位信号,进行相应的复位操作。
优选地,SM2数字签名验证模块包括:
第二状态控制机模块,用于控制SM2数字签名验证算法的流程,并与SM2数字签名生成与验证器进行数据交换,在SM2数字签名验证模块启动或者复位时发出相应的控制信号;
第二数据缓冲器模块,用于SM2数字签名验证模块计算过程中的相关变量的存储,记录其过程值,并在SM2数字签名验证模块的rst信号为1时进行复位,将相应变量清零;
第二轻量级模乘器,用于计算SM2数字签名验证模块中的模乘运算,包括计算椭圆曲线点的点乘运算;
第二改进的相关运算的运算器,用于SM2数字签名验证模块中的相关运算,包括:
t=(r'+s')mod n模加运算,其中,r'、s'代表收到的签名,n代表选定的椭圆曲线的基点G的阶;
(x1',y1')=[s']G+[t]PA点乘运算和点加运算,其中,t代表上一步计算出的中间变量,PA代表发送签名的用户A的公钥;
Figure BDA0003048624910000051
密码杂凑运算,其中,
Figure BDA0003048624910000052
代表用户A的杂凑值ZA与收到的消息M’拼接后的消息等相关的模运算、点运算、点乘运算、点加运算和哈希运算。
优选地,第二状态控制机模块用于:
从顶层控制模块接收SM2数字签名验证算法所需要的相关参数和数据;
接收来自顶层控制模块的start信号,开始相关算法的计算;
判断接收到的签名(r',s')是否越界;
调用第二改进的相关运算的运算器计算
Figure BDA0003048624910000053
t=(r'+s')mod n、(x1',y1')=[s']G+[t]PA和R=(e'+x1')mod n;其中,
Figure BDA0003048624910000054
代表用户A的杂凑值ZA与收到的消息M’拼接后的消息;r'、s'代表收到的签名;n代表选定的椭圆曲线的基点G的阶;t代表上一步计算出的中间变量;PA代表发送签名的用户A的公钥;(x1',y1')代表基点G的s'倍点和公钥PA的t倍点进行点加计算的最终点在椭圆曲线上的坐标;R表示通过对收到的签名和消息进行一系列计算所得到的签名的一部分;
调用第二轻量级模乘器计算(x1',y1')=[s']G+[t]PA中的模乘;其中,(x1',y1')代表基点G的s'倍点和公钥PA的t倍点进行点加计算的最终点在椭圆曲线上的坐标;
调用第二数据缓冲器存储r'、s'、e'、t、(x1',y1')、R等相关变量的中间值;
对计算出的结果进行判断,获得验证结果,并将验证结果和计算完成信号返回给SM2数字签名验证模块;
接收来自顶层控制模块的rst复位信号,进行相应的复位操作。
优选地,轻量级模乘器执行的是改进的轻量级Radix-8交错模乘算法。
优选地,改进的相关运算的运算器中执行的模逆模块是基于扩展的Stein求取模逆算法设计的。
优选地,改进的相关运算的运算器中执行的点乘运算和基本的点运算均是基于Jacobian加重射影坐标系的改进的算法。
根据上述技术方案,本发明提供一种基于轻量级模乘的SM2数字签名生成与验证器,其中,顶层控制模块用于得到输入数据后控制SM2数字签名生成与验证器的状态和计算过程,并在计算完成后将结果输出。数据输入单元和数据输出单元用于接收包括椭圆曲线相关参数、用户的原始数据、公钥和私钥等在内的输入数据,然后将其传送给对应的生成模块和验证模块,同时在计算出结果后由顶层控制模块控制,将结果进行输出。轻量级模乘器用于在SM2数字签名算法中进行各个模乘计算,并在计算完成后将结果送给生成模块与验证模块。SM2数字签名生成模块,由顶层控制模块控制,对输入的数据进行一系列处理,最终得到生成的签名,并在顶层控制模块的控制下将结果输送给数据输出单元。SM2数字签名验证模块,由顶层控制模块触发,对接收的签名进行验证,最终得到验证通过与否标志,并由顶层控制模块控制输出标志信号给数据输出单元。改进的相关运算的运算器用于在生成模块与验证模块中计算相应的模运算、点运算等相关底层运算。
由此可见,本发明在SM2数字签名生成与验证过程中,对基本的模乘算法进行优化,采用了轻量级的Radix-8交错模乘算法,使用简单的加减法和移位操作一边乘一边模的同时降低了算法的空间复杂度,既保证了运算速度,也极大地降低了消耗的资源面积,节省了开销。
进一步的,本发明在SM2数字签名生成与验证过程中,采用扩展的Stein算法求取模逆,降低了模逆电路的空间复杂度,也确保了其时间消耗较低;同时,对基本的点运算和点乘运算做了算法流程方面的优化,进一步提升了点乘运算的速度,节省了资源开销。
更进一步的,本发明在SM2数字签名生成与验证过程中,采用多周期的设计方法,将没有数据依赖的三大运算并行,加快了运算的速度,减少了算法运行时间。
本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用另一种方式对本发明实施方式进行清楚地解释,与后面的具体实施方式共同构成本发明的目的说明,并不是对本发明的限制。在附图中:
图1是本发明提供的一种基于轻量级模乘算法的SM2数字签名生成与验证器的整体结构图;
图2是本发明提供的改进后的轻量级Radix-8交错模乘算法的算法流程图;
图3是本发明提供的改进的扩展的Stein求取模逆的模逆模块的电路结构图;
图4是本发明提供的基于Jacobian加重射影坐标系的点乘运算的结构图;
图5是在国家密码管理局公布的SM3密码杂凑函数的基础上改进的结构图;
图6是本发明提供的基于轻量级模乘算法的SM2数字签名生成模块的多周期设计图;
图7是本发明提供的基于轻量级模乘算法的SM2数字签名验证模块的多周期设计图。
具体实施方式
下面结合实施例及附图对本发明做进一步的解释说明,但此处所描述的具体实施方式仅用于解释说明本发明,但本发明的实施方式并不限制于此;并且提供的实施例是为了能够更直白地理解本发明,应该理解的是可以以各种形式实现本发明而不应该仅限制于这些实施例。
本发明具体实施方式中,有涉及“第一”“第二”等描述词汇的,则该“第一”“第二”等描述词汇仅用作描述目的,而不能理解为指示或暗示其相对重要性或者隐含地指明所指示的技术特征的数量。因此,限定有“第一”“第二”的特征可以明示或者隐含地包括至少一个特征。另外,各个实施方式之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明涉及到的椭圆曲线是定义在素数域Fp上的,满足素数域Fp上的椭圆曲线的一切定义说明。
参见图1,本发明提供一种基于轻量级模乘的SM2数字签名生成与验证器,包括:
顶层控制模块,与SM2数字签名生成模块、SM2数字签名验证模块、数据输入单元和数据输出单元连接,用于在通过数据输入单元选择相应功能后,触发相应器件,控制SM2数字签名生成模块与SM2数字签名验证模块的状态和计算过程,并通过数据输出单元将结果输出;
数据输入单元和数据输出单元,与顶层控制模块、SM2数字签名生成模块和SM2数字签名验证模块相连接,用于接收外界输入的数据,包括椭圆曲线相关参数、用户的原始数据、公钥和私钥,由顶层控制模块将输入数据传送给对应的生成模块和验证模块。同时在计算出结果后由顶层控制模块发出信号,使SM2数字签名生成模块和SM2数字签名验证模块将结果输出给相对应的用户;
轻量级模乘器,与SM2数字签名生成模块和SM2数字签名验证模块连接,用于根据实际情况在SM2数字签名生成模块和SM2数字签名验证模块中模乘计算,并将结果送给SM2数字签名生成模块和SM2数字签名验证模块;
SM2数字签名生成模块,基于轻量级模乘器和改进的相关运算的运算器,由顶层控制模块控制,对输入的数据进行处理,最终得到生成的签名,并在顶层控制模块的触发下将结果输送给数据输出单元;
SM2数字签名验证模块,基于轻量级模乘器和改进的相关运算的运算器,由顶层控制模块触发,对接收的签名进行验证,最终得到验证通过与否标志,并由顶层控制模块控制输出标志信号给数据输出单元;
改进的相关运算的运算器,与SM2数字签名生成模块和SM2数字签名验证模块连接,用于在SM2数字签名生成模块和SM2数字签名验证模块中计算相应的模运算、点运算等相关底层运算。
改进的相关运算的运算器包括:
模加/模减模块,用于在Jacobian加重射影坐标系下计算SM2数字签名生成与验证器中的模加和模减运算结果,如SM2数字签名生成模块中生成签名r的计算r=(e+x1)mod n(其中,e代表用户A的杂凑值ZA与消息M拼接后的消息的哈希值)用到了模加模块;
模逆模块,用于在SM2数字签名生成与验证器中计算模逆的结果,如SM2数字签名生成模块中计算签名s时会需要计算(1+dA)-1mod n的结果(其中,dA代表需要对消息进行签名的用户A的私钥,n代表选定的椭圆曲线的基点G的阶),此处用到了模逆模块;
点运算模块,基于底层的模运算层,采用模加/模减模块、模逆模块和轻量级模乘器进行Jacobian加重射影坐标系下素数域Fp上的二倍点运算和点加运算,对应SM2数字签名生成与验证器中的二倍点模块和点加模块;
点乘运算模块,基于模加/模减模块、模逆模块、轻量级模乘器和点运算模块,在素数域Fp上,基于Jacobian加重射影坐标系进行相应的点乘运算,如在生成模块的算法中存在计算椭圆曲线点(x1,y1)=[k]G,即计算选定椭圆曲线的基点G的k倍点的坐标(x1,y1);
SM3密码杂凑模块,用于SM2数字签名生成模块和SM2数字签名验证模块中计算消息M的哈希值,如
Figure BDA0003048624910000101
其中,Hv()为SM3密码杂凑函数,
Figure BDA0003048624910000102
代表用户A的杂凑值ZA与消息M拼接后的消息。
在实施例一中,SM2数字签名生成模块具体包括:
第一状态控制机模块,用于控制SM2数字签名生成算法的流程,并与SM2数字签名生成与验证器进行数据交换,在SM2数字签名生成模块启动或者复位时发出相应的控制信号;
第一状态控制机模块具体用于:接收本次SM2数字签名生成模块所需的数据和参数;接收来自顶层控制模块的start信号,开始生成签名的一系列操作;依照SM2数字签名生成算法的流程依次调用第一改进的相关运算的运算器、第一轻量级模乘器和第一数据缓冲器分别完成消息的哈希值、k倍点、签名和所需中间变量的计算,以及存储相关变量的中间值;在计算完成后,得到生成的签名,并将签名和计算完成信号返回给SM2数字签名生成模块;接收来自顶层控制模块的rst信号,进行相应的复位操作。
其中,调用第一数据缓冲器模块,用于SM2数字签名生成模块计算过程中的相关变量的存储,记录其过程值,并在SM2数字签名生成模块的rst信号为1时进行复位,将相应变量清零;
调用第一改进的相关运算的运算器,首先调用其中的第一SM3杂凑函数模块计算待签名消息M的哈希值
Figure BDA0003048624910000111
(其中,Hv()为SM3密码杂凑函数,
Figure BDA0003048624910000112
代表用户A的杂凑值ZA与消息M拼接后的消息),再调用第一点乘模块用来计算基点G的k倍点(x1,y1)=[k]G(其中,(x1,y1)表示选定椭圆曲线的基点G的k倍点在椭圆曲线上的坐标,k为随机数),然后使用计算出的k倍点的横坐标x1来计算签名r=(e+x1)mod n(其中,n为选定椭圆曲线的基点G的阶)。如果签名r满足条件r=0或r+k=n,那么需要重新选取随机数k,计算k倍点及签名r,否则进行下一步签名s的计算;
调用第一轻量级模乘器和第一改进的相关运算的运算器中的第一模加/模减模块与第一模逆模块分别计算签名s=((1+dA)-1·(k-r·dA))mod n(其中,dA代表需要对消息进行签名的用户A的私钥,k是随机数生成器产生的随机数,r则用来标识签名的过程性变量,最终作为签名的一部分,n代表选定的椭圆曲线的基点G的阶)中的模乘运算、模加运算、模减运算和模逆运算。如果计算得到的签名s满足条件s=0,那么需要重新选取随机数k,计算k倍点及签名(r,s),否则输出消息M和签名(r,s)给数据输出单元。
在实施例二中,SM2数字签名验证模块具体包括:
第二状态控制机模块,用于控制SM2数字签名验证算法的流程,并与SM2数字签名生成与验证器进行数据交换,在SM2数字签名验证模块启动或者复位时发出相应的控制信号;
第二状态控制机模块具体用于:从顶层控制模块接收SM2数字签名验证算法所需要的相关参数和数据;接收来自顶层控制模块的start信号,开始相关算法的计算;判断接收到的签名(r',s')是否越界;调用第二改进的相关运算的运算器中的第二点乘模块和第二点加模块计算验证算法中相关的点乘运算和点加运算;调用第二数据缓冲器存储相关变量的中间值;对计算出的结果进行判断,获得验证结果,并将验证结果和计算完成信号返回给SM2数字签名验证模块;接收来自顶层控制模块的rst信号,进行相应的复位操作。
其中,调用第二数据缓冲器模块,用于SM2数字签名验证模块计算过程中的相关变量的存储,记录其过程值,并在SM2数字签名验证模块的rst信号为1时进行复位,将相应变量清零;
首先对接收到的签名进行检验,判断其数值是否越界,若越界则直接返回验证不通过标志给数据输出单元,否则进行下一步消息拼接并求取哈希值的计算;
然后将接收到的消息M'与发送签名的用户A的杂凑值ZA进行拼接得到消息
Figure BDA0003048624910000121
再调用第二改进的相关运算的运算器中的第二SM3密码杂凑函数模块计算拼接后的消息
Figure BDA0003048624910000122
的哈希值
Figure BDA0003048624910000123
其中,Hv()代表SM3密码杂凑函数;调用第二模加/模减模块计算中间变量t=(r'+s')mod n,其中,r'、s'代表收到的签名,若t满足条件t=0,则直接返回验证不通过标志给数据输出单元,否则进行下一步的计算;
调用第二改进的相关运算的运算器中的第二点乘模块和点加模块计算椭圆曲线点(x1',y1')=[s']G+[t]PA。其中,t代表上一步计算出的中间变量;PA代表发送签名的用户A的公钥;(x1',y1')代表基点G的s'倍点和公钥PA的t倍点进行点加计算的最终点在椭圆曲线上的坐标,该过程需要调用第二轻量级模乘器完成点乘运算;
再次调用第二模加/模减模块计算中间变量R=(e'+x1')mod n,R表示通过对收到的签名(r',s')和消息M'进行一系列计算所得到的签名的一部分。若R满足条件R=r',即计算出的签名R与收到的签名r'一致,则直接返回验证通过标志给数据输出单元,否则返回验证不通过标志。
需要说明的是,在上述实例一和实例二中,所用的轻量级模乘器执行的是改进的轻量级Radix-8交错模乘算法。此外改进的相关运算的运算器中执行的模逆模块是基于扩展的Stein求取模逆算法设计的。而改进的相关运算的运算器中执行的点乘运算和基本的点运算都是基于Jacobian加重射影坐标系的改进的算法。
以下结合附图,对本发明实施例的上述技术方案进行详细解释说明。
为了进一步降低基本的交错模乘算法的计算时间,减少资源开销,在SM2数字签名生成与验证的过程中,改进了基本的交错模乘算法,采用轻量级Radix-8交错模乘算法进行模乘计算。其一边乘一边模的思想便利了硬件实现,而且基底为8能够进一步节省计算时间。如图2所示,该改进后的轻量级Radix-8交错模乘算法由以下步骤组成:
步骤一:初始化中间变量Z为0;
步骤二:预计算模数m的倍数,从2倍、3倍到14倍;
步骤三:设置循环上限cnt为(n-1)/3,循环变量i赋值为循环上限cnt;
步骤四:若i不大于0,那么直接返回模乘计算的结果Z;否则,取模乘计算的其中一值a的三位有效位{a3i-1,a3i-2,a3i-3}赋值给中间变量Xs,计算Z的8倍值并赋给Z,再计算模乘计算的另一值b与中间变量Xs的乘积,然后将得到的乘积i1与Z相加并赋给z0后,转到步骤五;
步骤五:将分别与模数m的1倍、2倍到14倍做有符号的减法,得到的结果分别赋值给z1、z2到z14,然后依次判断z14到z2、z1、z0的值,若z14大于0,则将其赋值给Z,然后转到步骤四开始新一轮的循环,否则进行z13的对比,依次进行下去。直到z14到z2、z1、z0中出现一个符号位为0,即大于0的中间变量,然后转到步骤四继续新一轮的循环。
图3是改进的扩展的Stein求取模逆的模逆模块的电路结构图。与传统的扩展的欧几里得算法、欧拉定理等求取模拟的算法不同,扩展的Stein求取模逆避免了复杂的除法运算,只是利用两数的奇偶性进行判断、移位、相减等操作,极大程度上降低了计算复杂度。本发明实施例设计的模逆模块主要是由缓冲器flopr、多路选择器Mux、带符号的加/减运算器Add/Sub、数据交换器Swap、移位器>>和状态机控制器Control组成。由图3可知,Add、Sub用于中间变量的计算,以期望得到a、x、y的预选值之一,其中a为模数,x、y分别为中间变量;>>代表右移1位;Swap则是将输入的两个数据交换并输出;各种多路选择器Mux是进行数据的选择,其选择信号是Control输出的各种控制信号;flopr作为缓冲器,存储着a、b、x、y、x’、y’的值,其中b代表待求模逆值B的中间缓冲值,x’、y’分别为中间变量;Control模块则用于多周期的状态控制,控制着整个算法的状态转移和当前操作的信号的转化,其输入是待求模逆值B的中间缓冲值b和模数A的中间缓冲值a的差a_b、模数a,输出是各种控制信号。
图4是基于Jacobian加重射影坐标系的点乘运算模块的结构图。由于点乘运算模块是基于点运算层模块中基本的二倍点模块和点加模块的高一层次运算模块,且在其计算过程中需要重复调用两个基本的点运算模块,若采用流水线结构来设计点乘模块,必须要实例化k个二倍点模块和k个点加模块,资源消耗极其巨大。因此,本发明采用多周期方案来设计点乘模块,在具体的计算过程中采取二倍点模块和点加模块并行计算的方式,并由控制模块Control统一进行状态机控制。同时,本发明实施例设计的点乘运算模块计算出来的结果是基于Jacobian坐标表示的,需要在计算完成后再进行额外的模逆运算将坐标转换为仿射坐标。
如图4所示,本发明实施例设计的点乘运算模块具体包括:模运算模块(包括模加MA模块、模减MS模块、模逆MI模块和轻量级模乘器MM)、点运算模块(二倍点PD模块和点加PA模块)以及点乘的状态机控制Control模块,而模块之间的连线代表着各个模块之间的数据交换或者是控制信号传递。
本发明实施例设计的点乘运算模块的状态控制Control模块设计比较简单,共有4个状态,分别是Init、PD、PA和End四个状态,具体描述如下:
寄存器i在运算开始时初始化为1,该条件下满足循环条件i<N,由此可以进行k[i]的判断,若值为1,则进行点加计算并转移到下一状态,否则保持当前状态并将寄存器i的值更新;当进入状态PA后,进行点加计算,完成后置完成信号donePA,然后转移到状态PD继续进行二倍点计算;如此反复循环,直至i不再满足i<N的条件,状态转移到End状态,置点乘运算的完成信号done=1。
本发明实施例设计在国家密码管理局公布的SM3密码杂凑函数的基础上改进的电路框架图如图5所示。在本发明实施例的设计中,SM3密码杂凑函数模块具体包括:顶层Hash模块、消息填充addto512模块和迭代压缩DD模块。
顶层Hash模块,用来实例化消息填充addto512模块和迭代压缩DD模块两个模块,并控制整体计算过程,完成一次求取杂凑值操作;
迭代压缩DD模块,具体包括两个子模块,分别是消息扩展模块Expand和压缩函数CF模块。这两个模块均只在迭代压缩DD模块中实例化一次,但是实际操作时控制模块会根据消息分组B(i)的组数n重复使用这两个模块n次。迭代压缩模块DD的输入数据有填充之后的消息me、消息的长度lenme、用于迭代的256位初始值IV以及将消息以512位为一组进行分组所得到的组数group,输出数据则是最终的迭代结果256位的Vo。
其中,压缩Expand模块,以字为单位,其中32位为一字,依据P置换函数的规则,对填充后的消息分组分别进行了52轮和64轮的消息扩展处理,得到W1和We1两个字分组;压缩函数CF模块,将字分组作为输入,在压缩函数CF中使用布尔函数FFj和GGj进行反复64次迭代,才能得到最终的结果Vo。
参见图6,本发明实施例设计的SM2数字签名生成模块具体包括:并行的三大运算(SM3密码杂凑函数模块、点乘运算模块、模逆模块以及一些子运算模块)、第一轻量级模乘器、第二轻量级模乘器和状态控制Control模块。
并行的三大运算,由于点乘运算,即k倍点计算,消耗时间远大于其他运算,且三大运算之间没有数据依赖、结构相关等关系,因此将杂凑运算、模逆与随机数产生、点乘一起并行操作,较之顺序串行计算,极大地节省了计算时间,且符合计算机运行的并行的特点。由于两次模乘的数据输入来自于点乘运算,因此只能在点乘结束后进行,且两次模乘运算也是有先后依赖关系的。期间还需要只消耗一个周期的模加、模减运算。需要注意的是,若在状态二中判断条件不通过,需要控制模块发给随机数生成器重新产生随机数,且状态重新回到状态一的过程中,SM3密码杂凑函数模块和模逆模块均不再重复执行;
状态控制Control模块,生成签名的状态控制机一共有4个状态,具体描述如下所示:
Init初始状态,等待相关数据传输就绪,同时预先设置相应计算模块的控制信号,并进行第一大状态的并行的三大运算;
状态S1,进行模加运算和模乘运算,同时检查计算出的签名r的值的合法性;
状态S2,进行模乘运算和模减运算,将计算出的签名s进行越界检查;
状态S3,设置SM2数字签名生成运算的完成信号done;
当信号量rst复位为1时,初始化SM2数字签名生成模块的状态控制器、各变量寄存器内容。信号量flag在签名r和s计算完成之后被置位,当值为1时,表示计算出来的r和s不满足条件,需要重新计算;当值为0时,表示r和s满足条件。信号量done是SM2数字签名生成运算的完成标志,在初始化状态或者复位时被置为0,在状态S3置为1。除了rst、flag、done这些信号量以外,为了能够控制完整的数据通路,Control模块中还有一些其他用来控制状态转移的相关变量和控制信号,如用来控制数据通路的各个子模块的开始和完成的信号量、用来记录计算过程中的关键数据的信号量及用来作为状态转移条件的信号量。
在这些信号量和各个子模块的共同作用下,SM2数字签名生成模块的具体执行过程如下:状态寄存器State在开始时初始化为Init,同时设置并行的三大运算的开始信号量,进行三大运算,信号量flag也被初始化为0;当信号量flag和SM3密码杂凑函数模块完成信号量、点乘运算模块完成信号量、模逆模块完成信号量等完成信号量满足条件时,下一状态被置为S1,同时置模加模块开始信号量为1;在状态S1下,进行模加运算和模乘运算,得到r,然后对r进行越界检查,若值合法,则根据模加模块完成信号量和第一轻量级模乘器完成信号量判断下一状态为S2,否则置flag为1,下一状态就要转移到Init状态,重新进行随机数的选择;当转移到状态S2时,进行模乘运算和模减运算,得到s,同样地要对s进行越界检查,若值合法,则根据第二轻量级模乘器完成信号量和模减模块完成信号量判断下一状态为S3,否则置flag为1,下一状态就要转移到Init状态,重新进行随机数的选择;当转移到了状态S3,SM2数字签名生成运算完成,置完成信号量done=1。
如图7所示,本发明提供基于轻量级模乘算法的SM2数字签名验证模块的多周期设计图。同样地,在本发明实施例设计的多周期SM2数字签名验证模块中,具体包括:收到的签名的越界判断、三大并行运算和点加运算模块,分别对应多周期设计中的三个状态。
其中,收到的签名的越界判断,作为签名越界判断逻辑,结构简单且在一个周期内就能完成,视为状态一;
三大并行运算包括SM3密码杂凑函数模块、第一点乘运算模块和第二点乘运算模块,这三大运算耗费了大量的资源面积和时间来进行计算,是整个SM2数字签名验证模块中的瓶颈段,作为状态二;
点加运算模块作为状态三,接收前两个状态的数据以进行进一步的签名验证工作,耗费的周期较少。
本发明实施例设计的SM2数字签名验证模块的状态控制机一共有5个状态,具体描述如下所示:
初始状态Init,等待相关数据传输就绪,同时预先设置相应计算模块的控制信号与验签成功与否标志flag,并进行第一状态的越界检查;
状态S1,在越界检查之后,收到的消息M进行消息拼接;
状态S2,进行包括SM3密码杂凑函数模块、第一点乘运算模块和第二点乘运算模块在内的三大并行运算;
状态S3,进行点加运算和模加运算,并将结果与收到的签名作对比;
状态S4,设置SM2数字签名验证运算完成信号done,并输出验签成功与否标志flag。
信号量rst复位为1时,初始化SM2数字签名验证模块的状态控制器、各变量寄存器内容。信号量flag,当收到的签名(r',s')越界检查未通过、t的值为0或R不等于收到的r',则置为0,表示验签失败,否则在状态S3下置为1,表示验签成功;信号量done是SM2数字签名验证模块的完成标志,在初始化状态或者复位时被置为0,在状态S4置为1。除了rst、flag、done这些信号量以外,为了能够控制完整的数据通路,Control模块中还有一些用来控制算法流程的控制信号及状态转移的变量,如控制三大运算模块开始运算和标志运算完成的信号量、计算过程中用来记录关键数据的信号量和用来判断状态转移的信号量。
在这些控制信号量和各个子模块的共同作用下,本发明实施例设计的多周期SM2数字签名验证模块的具体执行过程如下:状态寄存器State在开始时初始化为Init状态,同时预先计算r_n(即签名r'与基点的阶n的差)和s_n(即签名s'与基点的阶n的差),设置信号量i的值为消息长度减一,并把收到的签名(r',s')和r_n和s_n进行越界和条件判断,若满足条件,则转移到下一状态S1,否则置flag为0,并转移到状态S4;在状态S1下,将收到的消息M与发送方的哈希值ZA进行消息拼接,若信号量i的值大于0,则继续保持当前状态,否则转移到下一状态S2;在状态S2下,设置并行的三大运算的开始信号,进行三大运算,若SM3密码杂凑函数模块完成信号量、第一点乘运算模块完成信号量和第二点乘运算模块完成信号量的值均为1,且模加运算的计算结果t值不为0,则转移到下一状态S3,否则,若t等于0则转移到状态S4,不然就保持当前状态;在状态S3下,进行点加运算和模加运算,并将模加计算得到的结果R与收到的签名r'相比较,若二者相同,则置flag为1,并转移到状态S4,否则置flag为0,也转移到状态S4;当转移到了状态S4,SM2数字签名验证运算完成,置完成信号量done=1。
以上结合附图详细描述了本发明例的可选实施方式,但是,本发明实施方式并不限于上述实施方式中的具体细节,在本发明实施方式的技术构思范围内,可以对本发明实施方式的技术方案进行多种简单变型,这些简单变型均属于本发明实施方式的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施方式对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施方式方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个可以是单片机,芯片等或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施方式的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施方式的思想,其同样应当视为本发明实施方式所公开的内容。

Claims (9)

1.一种基于轻量级模乘的SM2数字签名生成与验证器,其特征在于,包括:
顶层控制模块,与SM2数字签名生成模块、SM2数字签名验证模块、数据输入单元和数据输出单元连接,用于在通过所述数据输入单元选择相应功能后,触发相应器件,控制所述SM2数字签名生成模块与所述SM2数字签名验证模块的状态和计算过程,并通过所述数据输出单元将结果输出;
数据输入单元和数据输出单元,与所述顶层控制模块、所述SM2数字签名生成模块和所述SM2数字签名验证模块相连接,用于接收外界输入的数据,包括椭圆曲线相关参数、用户的原始数据、公钥和私钥,由所述顶层控制模块将输入数据传送给对应的所述生成模块和所述验证模块;同时在计算出结果后由所述顶层控制模块发出信号,使所述SM2数字签名生成模块和所述SM2数字签名验证模块将结果输出给相对应的用户;
轻量级模乘器,与所述SM2数字签名生成模块和所述SM2数字签名验证模块连接,用于根据实际情况在所述SM2数字签名生成模块和所述SM2数字签名验证模块中模乘计算,并将结果送给所述SM2数字签名生成模块和所述SM2数字签名验证模块;
SM2数字签名生成模块,基于所述轻量级模乘器和改进的相关运算的运算器,由所述顶层控制模块控制,对输入的数据进行处理,最终得到生成的签名,并在所述顶层控制模块的触发下将结果输送给所述数据输出单元;
SM2数字签名验证模块,基于所述轻量级模乘器和改进的相关运算的运算器,由所述顶层控制模块触发,对接收的签名进行验证,最终得到验证通过与否标志,并由所述顶层控制模块控制输出标志信号给所述数据输出单元;
改进的相关运算的运算器,与所述SM2数字签名生成模块和所述SM2数字签名验证模块连接,用于在所述SM2数字签名生成模块和所述SM2数字签名验证模块中计算相应的相关底层运算,包括模运算和点运算。
2.根据权利要求1所述的SM2数字签名生成与验证器,其特征在于,所述改进的相关运算的运算器包括:
模加/模减模块,用于在Jacobian加重射影坐标系下计算所述SM2数字签名生成与验证器中的模加和模减运算结果;
模逆模块,用于在所述SM2数字签名生成与验证器中计算模逆的结果;
点运算模块,基于底层的模运算层,采用所述模加/模减模块、所述模逆模块和所述轻量级模乘器进行Jacobian加重射影坐标系下素数域Fp上的二倍点运算和点加运算,对应所述SM2数字签名生成与验证器中的二倍点模块和点加模块;
点乘运算模块,基于所述模加/模减模块、所述模逆模块、所述轻量级模乘器和所述点运算模块,在素数域Fp上,基于Jacobian加重射影坐标系进行相应的点乘运算;
SM3密码杂凑模块,用于所述SM2数字签名生成模块和所述SM2数字签名验证模块中计算消息M的哈希值。
3.根据权利要求1所述的SM2数字签名生成与验证器,其特征在于,所述SM2数字签名生成模块包括:
第一状态控制机模块,用于控制SM2数字签名生成算法的流程,并与所述SM2数字签名生成与验证器进行数据交换,在所述SM2数字签名生成模块启动或者复位时发出相应的控制信号;
第一数据缓冲器模块,用于所述SM2数字签名生成模块计算过程中的相关变量的存储,记录其过程值,并在所述SM2数字签名生成模块的rst信号为1时进行复位,将相应变量清零;
第一轻量级模乘器,用于计算所述SM2数字签名生成模块中的模乘运算,包括签名s的生成计算s=((1+dA)-1·(k-r·dA))mod n,其中,dA代表需要对消息进行签名的用户A的私钥,k是随机数生成器产生的随机数,r用来标识签名的过程性变量,最终作为签名的一部分,n代表选定的椭圆曲线的基点G的阶;
第一改进的相关运算的运算器,用于所述SM2数字签名生成模块中的相关运算,包括:
r=(e+x1)mod n模加运算,其中,e代表用户A的杂凑值ZA与消息M拼接后的消息的哈希值,x1是签名算法中计算出的k倍点的横坐标;
(x1,y1)=[k]G点乘运算,其中,G代表选定的椭圆曲线的基点,y1是签名算法中计算出基点G的k倍点的纵坐标;
Figure FDA0003647602120000041
SM3密码杂凑运算,其中,
Figure FDA0003647602120000042
代表用户A的杂凑值ZA与消息M拼接后的消息,Hv()代表SM3密码杂凑函数,用来计算哈希值以及相关的模运算、点运算、点乘运算和哈希运算。
4.根据权利要求3所述的SM2数字签名生成与验证器,其特征在于,所述第一状态控制机模块用于:
接收本次所述SM2数字签名生成模块所需的数据和参数;
接收来自所述顶层控制模块的start信号,开始生成签名的操作;
调用所述第一改进的相关运算的运算器计算
Figure FDA0003647602120000043
(x1,y1)=[k]G和r=(e+x1)mod n、(1+dA)-1mod n和(k-r·dA)mod n;其中,
Figure FDA0003647602120000044
代表用户A的杂凑值ZA与消息M拼接后的消息;Hv()代表SM3密码杂凑函数,用来计算哈希值;G代表选定的椭圆曲线的基点;(x1,y1)是签名算法中计算出的k倍点的横坐标和纵坐标;dA代表需要对消息进行签名的用户A的私钥;k是随机数生成器产生的随机数;r则用来标识签名的过程性变量,最终作为签名的一部分;n代表选定的椭圆曲线的基点G的阶;
调用所述第一轻量级模乘器计算s=((1+dA)-1·(k-r·dA))mod n,其中,s代表生成的签名的一部分,(1+dA)-1代表求取模逆值;
调用所述第一数据缓冲器存储e、k、(x1,y1)、r、s的中间值;
在计算完成后,得到生成的签名,并将所述签名和计算完成信号返回给所述SM2数字签名生成模块;
接收来自所述顶层控制模块的rst复位信号,进行相应的复位操作。
5.根据权利要求1所述的SM2数字签名生成与验证器,其特征在于,所述SM2数字签名验证模块包括:
第二状态控制机模块,用于控制SM2数字签名验证算法的流程,并与所述SM2数字签名生成与验证器进行数据交换,在所述SM2数字签名验证模块启动或者复位时发出相应的控制信号;
第二数据缓冲器模块,用于所述SM2数字签名验证模块计算过程中的相关变量的存储,记录其过程值,并在所述SM2数字签名验证模块的rst信号为1时进行复位,将相应变量清零;
第二轻量级模乘器,用于计算所述SM2数字签名验证模块中的模乘运算,包括计算椭圆曲线点的点乘运算;
第二改进的相关运算的运算器,用于所述SM2数字签名验证模块中的相关运算,包括:
t=(r'+s')mod n模加运算,其中,r'、s'代表收到的签名,n代表选定的椭圆曲线的基点G的阶;
(x1',y1')=[s']G+[t]PA点乘运算和点加运算,其中,t代表上一步计算出的中间变量,PA代表发送签名的用户A的公钥;
Figure FDA0003647602120000051
SM3密码杂凑运算,其中,
Figure FDA0003647602120000052
代表用户A的杂凑值ZA与收到的消息M’拼接后的消息相关的模运算、点运算、点乘运算、点加运算和哈希运算。
6.根据权利要求5所述的SM2数字签名生成与验证器,其特征在于,所述第二状态控制机模块用于:
从所述顶层控制模块接收SM2数字签名验证算法所需要的相关参数和数据;
接收来自所述顶层控制模块的start信号,开始相关算法的计算;
判断接收到的签名(r',s')是否越界;
调用所述第二改进的相关运算的运算器计算
Figure FDA0003647602120000061
t=(r'+s')mod n、(x1',y1')=[s']G+[t]PA和R=(e'+x1')mod n;其中,
Figure FDA0003647602120000062
代表用户A的杂凑值ZA与收到的消息M’拼接后的消息;r'、s'代表收到的签名;n代表选定的椭圆曲线的基点G的阶;t代表上一步计算出的中间变量;PA代表发送签名的用户A的公钥;(x1',y1')代表基点G的s'倍点和公钥PA的t倍点进行点加计算的最终点在椭圆曲线上的坐标;R表示通过对收到的签名和消息进行一系列计算所得到的签名的一部分;
调用所述第二轻量级模乘器计算(x1',y1')=[s']G+[t]PA中的模乘;其中,(x1',y1')代表基点G的s'倍点和公钥PA的t倍点进行点加计算的最终点在椭圆曲线上的坐标;
调用所述第二数据缓冲器存储r'、s'、e'、t、(x1',y1')、R的中间值;
对计算出的结果进行判断,获得验证结果,并将所述验证结果和计算完成信号返回给所述SM2数字签名验证模块;
接收来自所述顶层控制模块的rst复位信号,进行相应的复位操作。
7.根据权利要求1-6中任意一项所述的SM2数字签名生成与验证器,其特征在于,所述轻量级模乘器执行的是改进的轻量级Radix-8交错模乘算法。
8.根据权利要求1-6中任意一项所述的SM2数字签名生成与验证器,其特征在于,所述改进的相关运算的运算器中执行的模逆模块是基于扩展的Stein求取模逆算法设计的。
9.根据权利要求1所述的SM2数字签名生成与验证器,其特征在于,所述改进的相关运算的运算器中执行的点乘运算和基本的点运算均是基于Jacobian加重射影坐标系的改进的算法。
CN202110479415.1A 2021-04-30 2021-04-30 基于轻量级模乘的sm2数字签名生成与验证器 Active CN113193962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110479415.1A CN113193962B (zh) 2021-04-30 2021-04-30 基于轻量级模乘的sm2数字签名生成与验证器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110479415.1A CN113193962B (zh) 2021-04-30 2021-04-30 基于轻量级模乘的sm2数字签名生成与验证器

Publications (2)

Publication Number Publication Date
CN113193962A CN113193962A (zh) 2021-07-30
CN113193962B true CN113193962B (zh) 2022-08-30

Family

ID=76983254

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110479415.1A Active CN113193962B (zh) 2021-04-30 2021-04-30 基于轻量级模乘的sm2数字签名生成与验证器

Country Status (1)

Country Link
CN (1) CN113193962B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338049B (zh) * 2022-03-14 2022-07-05 山东区块链研究院 基于模归约的国密算法sm2的快速实现方法及系统
CN115842683B (zh) * 2023-02-20 2023-07-07 中电装备山东电子有限公司 一种用于用电信息采集系统通信的签名生成方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761415B (zh) * 2011-04-27 2015-04-08 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
CN106549769A (zh) * 2016-12-08 2017-03-29 广东工业大学 一种素域Fp下SM2椭圆曲线签名系统
CN107040385B (zh) * 2017-05-23 2020-10-27 广东工业大学 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统
CN108322308B (zh) * 2017-12-14 2021-01-12 天津津航计算技术研究所 一种用于身份认证的数字签名算法的硬件实现系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
无双线性对的基于身份的在线/离线门限签名方案;杨小东等;《通信学报》;20130825(第08期);全文 *

Also Published As

Publication number Publication date
CN113193962A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
JP3821631B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
CN113193962B (zh) 基于轻量级模乘的sm2数字签名生成与验证器
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
CN112070222B (zh) 用于联邦学习的处理装置、加速器及方法
KR101089121B1 (ko) 빠른 집합 검증 방법 및 그 장치
US20110161390A1 (en) Modular multiplication processing apparatus
WO2015164996A1 (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
JPH09274560A (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
CN111597590B (zh) 一种基于区块链的数据完整性快速检验方法
CN111464308A (zh) 一种实现多种哈希算法可重构的方法和系统
US20220085999A1 (en) System and method to optimize decryption operations in cryptographic applications
US20220166614A1 (en) System and method to optimize generation of coprime numbers in cryptographic applications
JP2002229445A (ja) べき乗剰余演算器
EP0952697B1 (en) Elliptic curve encryption method and system
CN115459898A (zh) 一种基于GPU的Paillier同态加解密计算方法及系统
JP3302043B2 (ja) 暗号通信方法及びそのシステム
JP2004054128A (ja) 暗号化装置
CN114238205B (zh) 一种抗功耗攻击的高性能ecc协处理器系统
CN110493003B (zh) 一种基于四基二进制底层模运算的快速加密系统
KR101977873B1 (ko) 하드웨어 구현된 모듈러 역원 모듈
KR100656375B1 (ko) 저전력 해쉬함수 암호화 장치
JP2010107947A (ja) Shaアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置
CN114594925A (zh) 适用于sm2加密运算的高效模乘电路及其运算方法
CN107463354A (zh) 一种面向ECC的双域并行度可变的Montgomery模乘电路
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체

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
TR01 Transfer of patent right

Effective date of registration: 20231101

Address after: 230088 South Area, 8th Floor, Academician Building, Northeast Corner, Intersection of Xiyou Road and Yulan Avenue, High tech Zone, Hefei City, Anhui Province

Patentee after: Anhui Dongzhiyun Information Technology Co.,Ltd.

Address before: 241002 No.189, Jiuhua South Road, Wuhu City, Anhui Province

Patentee before: ANHUI NORMAL University

TR01 Transfer of patent right