CN103049710A - 用于sm2数字签名验证算法的fpga芯片 - Google Patents

用于sm2数字签名验证算法的fpga芯片 Download PDF

Info

Publication number
CN103049710A
CN103049710A CN 201210540967 CN201210540967A CN103049710A CN 103049710 A CN103049710 A CN 103049710A CN 201210540967 CN201210540967 CN 201210540967 CN 201210540967 A CN201210540967 A CN 201210540967A CN 103049710 A CN103049710 A CN 103049710A
Authority
CN
China
Prior art keywords
digital signature
point
controller
arithmetic element
elliptic curve
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.)
Granted
Application number
CN 201210540967
Other languages
English (en)
Other versions
CN103049710B (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.)
Academy of Broadcasting Science of SAPPRFT
Original Assignee
Academy of Broadcasting Science of SAPPRFT
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 Academy of Broadcasting Science of SAPPRFT filed Critical Academy of Broadcasting Science of SAPPRFT
Priority to CN201210540967.XA priority Critical patent/CN103049710B/zh
Publication of CN103049710A publication Critical patent/CN103049710A/zh
Application granted granted Critical
Publication of CN103049710B publication Critical patent/CN103049710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种用于SM2数字签名验证算法的FPGA芯片。该FPGA芯片包括:***总线接口,用于与FPGA芯片的外部***进行通信,从外部***获取SM2数字签名验证所需的参数和数据,并写入SM2控制器,接收外部***发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到SM2控制器;SM2控制器,用于根据控制消息触发SM2运算单元,在接收到工作状态查询消息和运算结果查询消息后,通过***总线接口向外部***发送SM2运算单元的工作状态和验证结果;SM2运算单元,用于在SM2控制器的触发下,从SM2控制器中读取本次SM2数字签名验证所需的参数和数据,进行根据SM2数字签名验证算法完成验证计算,将验证结果发送到SM2控制器。

Description

用于SM2数字签名验证算法的FPGA芯片
技术领域
本发明涉及计算机技术领域,特别是涉及一种用于SM2数字签名验证算法的FPGA芯片。
背景技术
国家密码管理局于2010年底提出我国相关的密码学算法标准,包括:SM2标准、SM3标准、SM7标准。其中SM2标准是:基于椭圆曲线离散对数的数学问题基础,在国际相关ECC(椭圆曲线密码)相关标准算法基础上演化而来的国内标准。
目前国内外应用较多的非对称密码算法主要还是RSA算法。但是从理论分析和应用需求角度看,ECC算法(包含SM2标准算法)的安全强度要高于RSA算法,同时密钥长度更短,应用前景较好。但是基于SM2算法的***实现,甚至在终端芯片研发方面产品不多。
另一方面,国家密码管理局要求国内所有应用非对称密码算法的***和终端,于2015年前必须使用国内标准,包括SM2算法标准。因此,在SM2产品研发和***方案方面可以进行***研究。
发明内容
为了解决现有技术中的上述问题,本发明提供一种用于SM2数字签名验证算法的FPGA芯片。
本发明提供一种用于SM2数字签名验证算法的FPGA芯片,包括:***总线接口,用于与FPGA芯片的外部***进行通信,从外部***获取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运算单元具体包括:第一状态机模块,用于进行SM2数字签名验证运算流程控制,并与SM2控制器进行通信;第一模加运算模块,用于在仿射坐标系下完成SM2数字签名验证算法中的t=(r′+s′)modn的计算,以及R=(e′+x1′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值
Figure BDA00002581944200021
Hv()为摘要计算函数,“□”表示前后两个字符串的拼接,n为椭圆曲线的阶,x1′为椭圆曲线点(x′,y′)坐标元素之一;第一倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]PA,其中,G是椭圆曲线的基点,G=(xG,yG)(G≠O),xG和yG是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b∈Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点;第一点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]PA两个点的点加运算,即,(x′,y′)=[s′]G+[t′]PA,其中,(x′,y′)为椭圆曲线上的点。
优选地,第一状态机模块具体用于:读取SM2控制器中本次SM2数字签名验证所需的参数和数据;接收SM2控制器发送的SM2启动信号,启动SM2运算单元;根据SM2数字签名验证算法的运算流程调用第一倍点运算模块、第一点加运算模块、第一模加运算模块,并根据本次SM2数字签名验证所需的参数和数据进行验证计算;在本次SM2数字签名验证完成后,获取验证结果,将验证结果和完成标志返回给SM2控制器;接收SM2控制器发送的SM2复位信号,复位SM2运算单元。
优选地,第一状态机模块具体用于:调用第一模加运算模块计算t=(r′+s′)modn;调用第一倍点运算模块计算[s′]G和[t′]PA;调用第一点加运算模块计算(x′,y′)=[s′]G+[t′]PA;调用第一模加运算模块计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过,否则验证不通过。
优选地,SM2运算单元具体包括:坐标转换模块,用于对椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系进行转换;第二状态机模块,用于进行SM2数字签名验证运算流程控制,并与SM2控制器进行通信;第二模加运算模块,用于在雅可比坐标系下完成SM2数字签名验证算法中的t=(r′+s′)modn的计算,以及R=(e′+x1′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值
Figure BDA00002581944200041
Hv()为摘要计算函数,
Figure BDA00002581944200042
“□”表示前后两个字符串的拼接,n为椭圆曲线的阶,x1′为椭圆曲线点(x′,y′)坐标元素之一;第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]PA,其中,G是椭圆曲线的基点,G=(xG,yG)(G≠O),xG和yG是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b∈Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点;第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]PA两个点的点加运算,即,(x′,y′)=[s′]G+[t′]PA,其中,(x′,y′)为椭圆曲线上的点。
优选地,将素数域乘法运算替换为Montgomery乘法运算。
优选地,通过FPGA芯片中的数字信号处理器DSP资源代替Montgomery乘法运算所需的乘法器。
优选地,第二状态机模块具体用于:读取SM2控制器中本次SM2数字签名验证所需的参数和数据;接收SM2控制器发送的SM2启动信号,启动SM2运算单元;调用第二模加运算模块计算t=(r′+s′)modn;调用第二倍点运算模块计算[s′]G和[t′]PA;调用第二点加运算模块计算(x′,y′)=[s′]G+[t′]PA;调用第二模加运算模块计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过,否则验证不通过;在本次SM2数字签名验证完成后,获取验证结果,将验证结果和完成标志返回给SM2控制器;接收SM2控制器发送的SM2复位信号,复位SM2运算单元。
本发明有益效果如下:
借助于本发明实施例的技术方案,充分利用了FPGA芯片资源,可以有效提升SM2算法的运算速度;本发明实施例的技术方案可以应用于各类安全认证领域,同时根据具体的应用场景和技术需求,采取灵活配置方式,实现***资源和运算效率的合理分配。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例的SM2数字签名验证算法流程图;
图2是本发明实施例的用于SM2数字签名验证算法的FPGA芯片的结构示意图;
图3是本发明实施例的SM2签名验证FPGA芯片内部结构的示意图;
图4是本发明实施例的仿射坐标系下SM2签名验证运算单元实现示意图;
图5是本发明实施例的雅可比坐标系下SM2签名验证运算单元实现示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明提供了一种用于SM2数字签名验证算法的FPGA芯片,基于FPGA芯片实现SM2国家密码标准中数字签名的验证运算。应用场景或者应用需求为各类安全终端***。本发明实施例基于国家密码管理局SM2标准中数字签名验证算法,在FPGA芯片上实现素数域算法计算。此外通过仿射坐标系与雅可比坐标系的数据转换,可以对SM2算法进行优化设计,由此可以提高FPGA芯片的运算效率。同时,由FPGA芯片具有可编程特性与可配置特性,芯片总线接口可以根据具体***需求进行研发设计,降低成本,提高效率。
如上所述,SM2签名算法的FPGA实现在运算功能方面等同于现有专用安全芯片。但是由于FPGA芯片具有可配置、可编程、可升级等特性,使得SM2数字签名算法的FPGA实现可以根据具体的应用场景和应用需求,进行灵活实现算法计算效率与***实现成本的选择。即在算法实时性要求不高的应用需求环境下,可以选择内部资源较为节省的FPGA芯片,进行基于仿射坐标系的算法实现;另一方面,针对实时性要求较高的应用需求环境,可以选择内部资源较为丰富的FPGA芯片,并且可以采用算法优化,或者提高芯片时钟等技术手段,来进一步提高运算速度和***效率。同时,又可以按照具体的***总线类型,灵活配置芯片对外***总线,提高芯片的***自适应性,也是FPGA实现相比于专用安全芯片的另一个优势。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
在对本发明实施例的技术方案进行详细说明之前,首先对SM2国家标准数字签名验证算法进行详细的说明。
《SM2椭圆曲线公钥密码算法》国家标准分为四个部分,包括:总则、数字签名算法、密钥交换协议、公钥加密算法。数字签名算法又包括:椭圆曲线***参数、用户密钥对、辅助函数、用户其它信息、数字签名的生成算法及流程、数字签名的验证算法及流程等。
本发明实施例主要完成数字签名验证算法的FPGA实现及性能效率优化。下面主要阐述SM2数字签名验证算法基本情况,后续再对FPGA实现及优化作出说明。
SM2数字签名验证算法,具体如下:
输入:
1、椭圆曲线参数:包括有限域Fp的规模q、定义椭圆曲线E(Fq)方程的两个元素a、b∈Fq、E(Fq)上的基点G=(xG,yG)(G≠O),其中xG和yG是Fp中的两个元素、椭圆曲线基点E(Fq)上的G的阶n、以及其它可选项(如n的余因子h等);
2、ZA:用户的可辨别标识、部分椭圆曲线***参数和用户A公钥的杂凑值;
3、PA:用户的公钥;
4、M':待验证消息;
5、(r',s'):***收到的签名码字。
输出:验证结果:验证通过或者验证不通过。
步骤:图1是本发明实施例的SM2数字签名验证算法流程图,如图1所示,为了检验收到的消息M'及其数字签名(r',s'),作为验证者的用户需要实现以下运算步骤:
步骤1,检验r'∈[1,n-1]是否成立,若不成立,则验证不通过,其中n为椭圆曲线的阶;
步骤2,检验s'∈[1,n-1]是否成立,若不成立,则验证不通过,其中n为椭圆曲线的阶;
步骤3,置
Figure BDA00002581944200071
其中“□”运算符表示前后两个字符串的拼接;
步骤4,计算即计算消息的摘要值,其中Hv()为摘要计算函数;
步骤5,将签名码字数据类型转换为整数,计算t=(r′+s′)modn,若t=0,则验证不通过;
步骤6,计算椭圆曲线点(x′,y′)=[s′]G+[t′]PA,其中(x′,y′)为椭圆曲线上的点,[s′]G和[t′]PA为倍点运算[s′]G+[t′]PA为点加运算;
步骤7,计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过;否则验证不通过,其中x1′为上述步骤6计算得到的椭圆曲线点(x′,y′)坐标元素之一。
以下对本发明实施例的技术方案进行详细说明。
根据本发明的实施例,提供了一种用于SM2数字签名验证算法的FPGA芯片,图2是本发明实施例的用于SM2数字签名验证算法的FPGA芯片的结构示意图,如图2所示,根据本发明实施例的用于SM2数字签名验证算法的FPGA芯片包括:***总线接口20、SM2控制器22、以及SM2运算单元24,以下对本发明实施例的各个模块进行详细的说明。
***总线接口20,用于与FPGA芯片的外部***进行通信,从外部***获取SM2数字签名验证所需的参数和数据,并写入SM2控制器22,接收外部***发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到SM2控制器22;
其中,***总线接口20包括:符合通用工业总线标准的***总线接口20、或者,符合用户自定义总线接口协议的***总线接口20。
SM2控制器22,与***总线接口20和SM2运算单元24连接,用于根据控制消息触发SM2运算单元24,在接收到工作状态查询消息和运算结果查询消息后,通过***总线接口20向外部***发送SM2运算单元24的工作状态和验证结果;
SM2控制器22具体包括:
控制寄存器,用于在通过***总线接口20接收到外部***发送的控制消息的情况下,根据控制消息,通过SM2启动信号触发SM2运算单元24启动,通过SM2复位信号触发SM2运算单元24复位;
数据寄存器,用于通过***总线接口20接收外部***发送的本次SM2数字签名验证所需的参数和数据,并进行存储,在控制寄存器复位SM2运算单元24后,清空本次SM2数字签名验证所需的参数和数据;
状态寄存器,用于在接收到工作状态查询消息的情况下,查询SM2运算单元24的工作状态,并通过***总线接口20将工作状态发送到外部***;主动通知外部***SM2运算单元24已完成本次SM2数字签名验证;在接收到运算结果查询消息的情况下,通过***总线接口20向外部***发送本次SM2数字签名验证的验证结果。
SM2运算单元24,用于在SM2控制器22的触发下,从SM2控制器22中读取本次SM2数字签名验证所需的参数和数据,进行根据SM2数字签名验证算法进行验证计算,将验证结果发送到SM2控制器22。下面将以2个实例对SM2运算单元24的结构进行说明。
实例1
SM2运算单元24具体包括:
第一状态机模块,用于进行SM2数字签名验证运算流程控制,并与SM2控制器22进行通信;
第一状态机模块具体用于:读取SM2控制器22中本次SM2数字签名验证所需的参数和数据;接收SM2控制器22发送的SM2启动信号,启动SM2运算单元24;根据SM2数字签名验证算法的运算流程调用第一倍点运算模块、第一点加运算模块、第一模加运算模块,并根据本次SM2数字签名验证所需的参数和数据进行验证计算;在本次SM2数字签名验证完成后,获取验证结果,将验证结果和完成标志返回给SM2控制器22;接收SM2控制器22发送的SM2复位信号,复位SM2运算单元24。
其中,据SM2数字签名验证算法的运算流程调用第一倍点运算模块、第一点加运算模块、第一模加运算模块,并根据本次SM2数字签名验证所需的参数和数据进行验证计算具体包括如下处理:
调用第一模加运算模块计算t=(r′+s′)modn;调用第一倍点运算模块计算[s′]G和[t′]PA;调用第一点加运算模块计算(x′,y′)=[s′]G+[t′]PA;调用第一模加运算模块计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过,否则验证不通过。
第一模加运算模块,用于在仿射坐标系下完成SM2数字签名验证算法中的t=(r′+s′)modn的计算,以及R=(e′+x1′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值
Figure BDA00002581944200101
Hv()为摘要计算函数,
Figure BDA00002581944200102
“□”表示前后两个字符串的拼接,n为椭圆曲线的阶,x1′为椭圆曲线点(x′,y′)坐标元素之一;
第一倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]PA,其中,G是椭圆曲线的基点,G=(xG,yG)(G≠O),xG和yG是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b∈Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点;
第一点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]PA两个点的点加运算,即,(x′,y′)=[s′]G+[t′]PA,其中,(x′,y′)为椭圆曲线上的点。
实例2:
SM2运算单元24具体包括:
坐标转换模块,用于对椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系进行转换;
第二状态机模块,用于进行SM2数字签名验证运算流程控制,并与SM2控制器22进行通信;
第二状态机模块具体用于:读取SM2控制器22中本次SM2数字签名验证所需的参数和数据;接收SM2控制器22发送的SM2启动信号,启动SM2运算单元24;调用第二模加运算模块计算t=(r′+s′)modn;调用第二倍点运算模块计算[s′]G和[t′]PA;调用第二点加运算模块计算(x′,y′)=[s′]G+[t′]PA;调用第二模加运算模块计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过,否则验证不通过;在本次SM2数字签名验证完成后,获取验证结果,将验证结果和完成标志返回给SM2控制器22;接收SM2控制器22发送的SM2复位信号,复位SM2运算单元24。
第二模加运算模块,用于在雅可比坐标系下完成SM2数字签名验证算法中的t=(r′+s′)modn的计算,以及R=(e′+x1′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值
Figure BDA00002581944200111
Hv()为摘要计算函数,
Figure BDA00002581944200112
“□”表示前后两个字符串的拼接,n为椭圆曲线的阶,x1′为椭圆曲线点(x′,y′)坐标元素之一;
第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]PA,其中,G是椭圆曲线的基点,G=(xG,yG)(G≠O),xG和yG是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b∈Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点;
第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]PA两个点的点加运算,即,(x′,y′)=[s′]G+[t′]PA,其中,(x′,y′)为椭圆曲线上的点。
需要说明的是,在上述实例1和实例2中,可以将素数域乘法运算替换为Montgomery乘法运算。此外,还可以通过FPGA芯片中的数字信号处理器DSP资源代替Montgomery乘法运算所需的乘法器。
以下结合附图,对本发明实施例的上述技术方案进行详细说明。
图3是本发明实施例的SM2签名验证FPGA芯片内部结构的示意图,如图3所示,基于FPGA芯片完成SM2数字签名验证,芯片整体实现包括三个部分:***总线接口20、SM2控制器22、以及SM2运算单元24。
下面分别对***总线接口20、SM2控制器22、以及SM2运算单元24进行说明。
1、***总线接口20
***总线接口20实现较为灵活,可以是通用的工业总线标准,也可以是用户自定义总线接口协议,需要根据具体的***需求进行设计开发。***总线接口20的作用主要是:基于FPGA的SM2签名验证芯片与芯片外部***进行通信,包括签名验证所需参数和数据的写入、SM2芯片的控制、以及芯片状态查询、以及运算结果查询。
2、SM2控制器22
SM2控制器22的实现主要为寄存器组。从功能上分,主要包括:控制寄存器、数据寄存器、状态寄存器。SM2控制器22的寄存器组可以看做总线接口和SM2运算单元24的中间桥梁或者中间环节,通过SM2控制器22可以实现外部***对SM2运算单元24的控制或者访问。
控制寄存器
控制寄存器具有两个信号位,从功能上分为:SM2启动信号和SM2复位信号。SM2启动信号主要用于SM2芯片的运算启动功能,该控制功能通过一个触发信号完成,可以为电平触发,也可以为沿触发,根据设计需求进行衡量;外部***通过总线接口向SM2控制器22的控制寄存器写入触发该信号。SM2复位信号主要用于SM2运算单元24的复位,该复位信号为低电平有效,外部***通过总线接口向SM2控制器22的控制寄存器写入触发该信号,该信号一般在SM2运算单元24完成一次SM2签名验证运算,外部***并将验证结果取走后,进行置位,通过置位,可以复位SM2运算单元24,以备新的一次SM2签名验证计算。
数据寄存器
数据寄存器主要用于存储SM2运算单元24计算所需的数据,这些数据包括:SM2数字签名验证算法所需的椭圆曲线参数(规模q、椭圆曲线方程的两个元素a和b、基点G(主要为基点坐标元素)、基点G的阶n、以及其它可选项等)、用于验证计算的用户公钥PA、待验证消息的摘要
Figure BDA00002581944200131
用于验证计算的签名码(r',s')字等(注意,本发明芯片设计主要完成SM2数字签名验证算法步骤5至步骤7,由于前面几个步骤的运算量很小,可以在FPGA芯片外部***中完成,芯片内部完成后面运算量大的步骤,这样可以节约芯片的面积和成本);其中,椭圆曲线参数可以参考SM2标准中给出的参考参数,也可以通过用户前期验证计算自行得出的椭圆曲线参数。数据寄存器作为数据缓存,在SM2运算单元24触发启动计算前将数据准备好,因此在SM2运算单元24启动前,需要外部***通过外部总线接口将上述数据写入;在SM2运算单元24启动运算后,SM2运算单元24将上述数据读出;数据读出后,该数据寄存器可以待本次SM2签名验证计算结束,并对SM2运算单元24复位后清空,等待新的一次SM2运算前再将新的数据写入。
状态寄存器
状态寄存器可以用于查询芯片SM2运算单元24的工作状态,包括:空闲、计算中、计算完成。此外,状态寄存器可以包含一个运算完成标志位,用于给出外部***的中断标志,通过该标志可以主动通知外部***SM2计算完成。同时,状态寄存器还有一个标志位,称为结果标志位,用于表示验证结果,包括两类:验证成功和验证失败,外部***可以读取该标志位,获取运算结果。
3、SM2运算单元24
本发明实施例主要基于上述SM2签名验证FPGA芯片内部结构进行设计实现,主要工作集中在SM2运算单元24。首先在仿射坐标系下进行设计、实现、验证;然后在雅克比坐标系下,对SM2运算单元24的相关算法、计算结构进行的优化,从而提高了SM2签名验证计算速度。本次发明基于FPGA进行芯片设计,基本结构仍然如图3所示的三个主要部分,区别在于SM2运算单元24的实现不同。需要说明的是,图3的SM2运算单元24的实现是基于仿射坐标系的。SM2运算单元24的两类实现:在仿射坐标系下,SM2签名的验证运算单元实现为基本实现;雅可比坐标系下,SM2签名的验证运算单元实现,是一种可以提高运算速度的优化实现方案,但会占用更多的FPGA芯片资源。具体情况参考下面的说明。
仿射坐标系下SM2签名验证运算单元的实现
图4是本发明实施例的仿射坐标系下SM2签名验证运算单元实现示意图,如图4所示,SM2运算单元24与SM2控制器22进行通信,信号类型包括:控制信号写入、数据写入、状态及结果读出,其信号功能分别对应SM2控制器22中控制寄存器、数据寄存器、以及状态寄存器的功能。
需要特别指出的是,该SM2运算单元24,主要完成SM2数字签名验证算法的步骤5至步骤7的运算过程。因为签名几步运算过程计算量小,可以在芯片外部完成。
按照图4所示,SM2运算单元24的内部结构包括:状态机模块、倍点运算模块、点加运算模块(点加指的是椭圆曲线上点的点加运算,需要底层素数域运算支持,包括素数域乘法、素数域除法、以及素数域加减法)、模加运算模块。
1、状态机模块
依照FPGA芯片状态机设计特点,SM2运算单元24中的状态机主要功能为:SM2运算流程控制,以及与SM2控制器22的通信功能。状态机的状态控制转移流程为:读取SM2控制器22中数据寄存器的数据——>响应SM2控制器22中控制寄存器的启动信号——>进行SM2计算——>SM2计算完成,得到运算结果,结果和完成标志返回给SM2控制寄存器的状态寄存器——>等待SM2控制器22的复位信号。
状态机的功能具体如下:
(1)SM2数据读取,主要读取SM2控制器22中数据寄存器的数据,这是状态机在一次完整SM2运算前,首先要完成的工作。
(2)SM2控制信号响应:主要响应SM2控制器22给出的启动信号和复位信号。响应启动信号,开始SM2计算;响应复位信号,对SM2运算单元24进行复位,准备一次新的计算。
(3)控制SM2计算过程,按照SM2数字签名验证算法步骤5至步骤7的计算要求,分别按照顺序调度各个运算模块一次,具体为:
模加运算,主要完成t=(r′+s′)modn计算;
倍点运算先后各一次,[s′]G和[t′]PA
点加运算,[s′]G+[t′]PA
模加运算,R=(e′+x1′)modn。
(4)给出验证SM2签名验证结果,并向SM2控制器22的状态寄存器返回状态及验证结果。
2、点加运算模块
该模块主要完成SM2数字签名验证算法步骤6的[s′]G和[t′]PA两个点的点加运算,即(x′,y′)=[s′]G+[t′]PA
下面列出点加运算规则,如下:
(1)设两个点P1=(x1,y1)和P2=(x2,y2),求P3=(x3,y3)=P1+P2
(2)则 x 3 = ( y 2 - y 1 x 2 - x 1 ) 2 - x 1 - x 2 y 3 = ( y 2 - y 1 x 2 - x 1 ) ( x 1 - x 3 ) - y 1 .
根据上述运算规则可知,椭圆曲线点加运算,需要底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持。
3、倍点运算模块
倍点运算模块主要负责完成SM2数字签名验证算法步骤6中的[s′]G和[t′]PA两次运算。
本发明实施例中,[s′]G是首先完成的倍点运算,[t′]PA是随后要完成的倍点运算。G是椭圆曲线的基点,PA是用户公钥,也是椭圆曲线上的一个点。[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点。按照椭圆曲线的相关理论知识可知,椭圆曲线上的点完成倍点运算成后的点,仍然在该椭圆曲线上,也即该点也是椭圆曲线的点,因此[s′]G和[t′]PA是椭圆曲线上的两个点。这两个点进行点加运算的结果也是椭圆曲线上的点。
从计算过程看,倍点运算的本质可以看成多次的点加运算,因此倍点运算仍然需要调用底层的素数域加减法运算、素数域乘法运算、以及素数域除法运算模块。
4、模加运算模块
模加运算较为简单,即数据求和后,再进行求模运算。主要负责完成SM2数字签名验证算法步骤5的t=(r′+s′)modn计算,以及步骤7的R=(e′+x1′)modn计算。
上述在仿射坐标系下,基于FPGA芯片实现的SM2签名验证运算单元,完成一次SM2签名运算,一般需要500多次加法计算,对应的除法计算则需要两万多次。例如,依照SM2点加运算的计算规则,需要1次除法计算和三次乘法计算,但是素数域上的除法计算量是乘法50倍左右,因此可以明确的是:最大的计算瓶颈就是大量的除法运算。
在此,为了降低仿射坐标系下的除法运算量,可以引入雅可比坐标系。在雅可比坐标系下的坐标可以表示为,其对应着仿射坐标,因此可以将雅克比坐标系中坐标向量视为中间变量,利用可以完成仿射坐标系和雅可比坐标系的相互转换。
通过仿射坐标系与雅可比坐标系的相互转换,使得SM2签名验证计算在雅可比坐标系下实现,可以有效避免大量的除法计算,明显降低了计算量。并且在完成一次SM2运算的过程中,仿射坐标系与雅可比坐标系的相互转化仅需1次。即便是一次SM2签名运算,也仅需要两三次除法运算,可以极大优化运算单元和运算速度。从本质上看,通过仿射坐标系与雅可比坐标系的转换,有效消除除法计算量调用次数,主要体现在有效减少了倍点和点加计算过程对素数域除法的调用次数。
前面知道,通过仿射坐标系与雅可比坐标系的相互转化,能够有效减少除法运算。因此,在除法运算优化实现后,主要的计算瓶颈则在于乘法运算。
素数域上的乘法运算都是模乘运算,即c=a×bmodp。传统的乘法运算要么需要借助除法来取余数,要么通过低速率的减法运算来实现。本发明采用Montgomery乘法(蒙哥马利乘法)则能够有效的优化素数域的乘法计算,将复杂的运算转化成简单的低精度的乘法运算来实现。Montgomery乘法运算如下:
算法:Montgomery Multiplication(蒙哥马利乘法计算)
输入:
1、域Fp,模p,令
Figure BDA00002581944200171
p=n1□2D+n0 n 0 ′ = - n 0 - 1 mod 2 D ;
2、整数a,b∈[0,p-1],a=a1□2D+a0,b=b1□2D+b0
3、整数 T = Σ i = 0 2 2 iD t i , 整数m。
输出:c=a□b×R-1modp
步骤:
步骤1,T=a0b0
步骤2,m=(t0n′0)mod2D
步骤3,T=(T+mn0)>>D;
步骤4,T=T+a0b1+a1b0+mn1
步骤5,m=(t0n′0)mod2D
步骤6,T=(T+mn0)>>D;
步骤7,c=(T+a1b1+mn1)modp。
通过上述算法的描述中的实现步骤可知,原先在素数域上完成一次模乘运算,可以转化为若干次简单低精度的乘法运算。因此可以有效减少原先素数域乘法运算的运算周期,提高SM2数字签名验证运算的运算速度。但是基于上述Montgomery乘法运算,本发明是通过FPGA编程实现,需要占用更多的FPGA逻辑资源。因此在雅克比坐标系下,实现SM2数字签名验证运算,FPGA芯片面积较仿射坐标系下的实现要大。下面对雅克比坐标系下,SM2数字签名验证运算单元的实现情况进行说明。
雅可比坐标系下SM2签名验证运算单元的实现
图5是本发明实施例的雅可比坐标系下SM2签名验证运算单元实现示意图,如图5所示,与图4对比,主要区别为:
1、增加了坐标转换模块,用于椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系的转换,主要是SM2控制器中数据寄存器的点数据,先由坐标转换模块做完转换后,再写入SM2运算单元,用于倍点计算和点加计算;
2、图5中倍点计算和点加计算都是在雅可比坐标系下完成的,其对底层运算单元的调用次数明显减少,特别是对素数域除法和乘法运算的调用;
3、图5中,用Montgomery乘法运算模块代替原先的素数域乘法运算,可以有效提高***运算速度。
图5所示各部分,其功能和模块实现,基本与图4所示相同,在此不再赘述。
需要说明的是,某些型号的FPGA芯片内部包含DSP资源,这些DSP资源是经过优化的乘法累加模块,在DSP数量允许的条件下,采用DSP实现简单的低精度的乘法运算,要好于FPGA芯片内部一般性的乘法器。
因此通过利用FPGA芯片内部丰富的DSP资源,可以对Montgomery乘法运算中低精度乘法计算作进一步的硬件优化。即利用FPGA芯片内部DSP资源替代原先Montgomery运算的所需乘法器。则Montgomery乘法的计算效率可以提高近一倍,这也是在具体应用需求和***成本允许条件下一种优化手段。
表1为M2算法FPGA实现及其优化资源效率比对情况,如表1所示,所列的FPGA实现方式主要为:仿射坐标系与雅可比坐标系下,平均完成一次SM2签名验证计算的对比结果。其中包括:仿射坐标系实现、雅可比坐标系实现(采用1倍DSP资源代替普通乘法器)、雅可比坐标系实现并优化方案1(采用1倍DSP资源代替普通乘法器,并对综合工具进行加法器优化)、雅可比坐标系实现并优化方案2(采用2倍DSP资源代替普通乘法器)。
表1
Figure BDA00002581944200191
综上所述,借助于本发明实施例的技术方案,采用仿射坐标系坐标系与雅可比坐标系相互转换的方法,并且充分利用FPGA芯片资源,可以有效提升SM2算法的运算速度。本发明的实现方法和优化方法,可以应用于各类安全认证领域,同时根据具体的应用场景和技术需求,采取灵活配置方式,实现***资源和运算效率的合理分配。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于SM2数字签名验证算法的FPGA芯片中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种用于SM2数字签名验证算法的FPGA芯片,其特征在于,包括:
***总线接口,用于与所述FPGA芯片的外部***进行通信,从所述外部***获取SM2数字签名验证所需的参数和数据,并写入所述SM2控制器,接收所述外部***发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到所述SM2控制器;
SM2控制器,与所述***总线接口和所述SM2运算单元连接,用于根据所述控制消息触发所述SM2运算单元,在接收到所述工作状态查询消息和所述运算结果查询消息后,通过所述***总线接口向所述外部***发送所述SM2运算单元的工作状态和验证结果;
SM2运算单元,用于在所述SM2控制器的触发下,从所述SM2控制器中读取本次SM2数字签名验证所需的参数和数据,进行根据所述SM2数字签名验证算法进行验证计算,将验证结果发送到所述SM2控制器。
2.如权利要求1所述的FPGA芯片,其特征在于,所述***总线接口包括:符合通用工业总线标准的***总线接口;或者符合用户自定义总线接口协议的***总线接口。
3.如权利要求1所述的FPGA芯片,其特征在于,所述SM2控制器具体包括:
控制寄存器,用于在通过所述***总线接口接收到所述外部***发送的所述控制消息的情况下,根据所述控制消息,通过SM2启动信号触发所述SM2运算单元启动,通过SM2复位信号触发所述SM2运算单元复位;
数据寄存器,用于通过所述***总线接口接收所述外部***发送的本次SM2数字签名验证所需的参数和数据,并进行存储,在所述控制寄存器复位所述SM2运算单元后,清空本次SM2数字签名验证所需的参数和数据;
状态寄存器,用于在接收到所述工作状态查询消息的情况下,查询所述SM2运算单元的工作状态,并通过所述***总线接口将所述工作状态发送到所述外部***;主动通知所述外部***所述SM2运算单元已完成本次SM2数字签名验证;在接收到所述运算结果查询消息的情况下,通过所述***总线接口向所述外部***发送本次SM2数字签名验证的验证结果。
4.如权利要求1所述的FPGA芯片,其特征在于,所述SM2运算单元具体包括:
第一状态机模块,用于进行SM2数字签名验证运算流程控制,并与所述SM2控制器进行通信;
第一模加运算模块,用于在仿射坐标系下完成SM2数字签名验证算法中的t=(r′+s′)modn的计算,以及R=(e′+x1′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值
Figure FDA00002581944100021
Hv()为摘要计算函数,
Figure FDA00002581944100022
“□”表示前后两个字符串的拼接,n为椭圆曲线的阶,x1′为椭圆曲线点(x′,y′)坐标元素之一;
第一倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]PA,其中,G是椭圆曲线的基点,G=(xG,yG)(G≠O),xG和yG是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b∈Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点;
第一点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]PA两个点的点加运算,即,(x′,y′)=[s′]G+[t′]PA,其中,(x′,y′)为椭圆曲线上的点。
5.如权利要求4所述的FPGA芯片,其特征在于,所述第一状态机模块具体用于:
读取所述SM2控制器中本次SM2数字签名验证所需的参数和数据;
接收所述SM2控制器发送的所述SM2启动信号,启动所述SM2运算单元;
根据SM2数字签名验证算法的运算流程调用所述第一倍点运算模块、所述第一点加运算模块、所述第一模加运算模块,并根据本次SM2数字签名验证所需的参数和数据进行验证计算;
在本次SM2数字签名验证完成后,获取验证结果,将所述验证结果和完成标志返回给所述SM2控制器;
接收所述SM2控制器发送的所述SM2复位信号,复位所述SM2运算单元。
6.如权利要求5所述的FPGA芯片,其特征在于,所述第一状态机模块具体用于:
调用所述第一模加运算模块计算t=(r′+s′)modn;
调用所述第一倍点运算模块计算[s′]G和[t′]PA
调用所述第一点加运算模块计算(x′,y′)=[s′]G+[t′]PA
调用所述第一模加运算模块计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过,否则验证不通过。
7.如权利要求1所述的FPGA芯片,其特征在于,所述SM2运算单元具体包括:
坐标转换模块,用于对椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系进行转换;
第二状态机模块,用于进行SM2数字签名验证运算流程控制,并与所述SM2控制器进行通信;
第二模加运算模块,用于在雅可比坐标系下完成SM2数字签名验证算法中的t=(r′+s′)modn的计算,以及R=(e′+x1′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值
Figure FDA00002581944100031
Hv()为摘要计算函数,“□”表示前后两个字符串的拼接,n为椭圆曲线的阶,x1′为椭圆曲线点(x′,y′)坐标元素之一;
第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]PA,其中,G是椭圆曲线的基点,G=(xG,yG)(G≠O),xG和yG是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b∈Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]PA是指PA的t′倍点;
第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]PA两个点的点加运算,即,(x′,y′)=[s′]G+[t′]PA,其中,(x′,y′)为椭圆曲线上的点。
8.如权利要求7或4所述的FPGA芯片,其特征在于,将所述素数域乘法运算替换为蒙哥马利Montgomery乘法运算。
9.如权利要求8所述的FPGA芯片,其特征在于,通过所述FPGA芯片中的数字信号处理器DSP资源代替所述Montgomery乘法运算所需的乘法器。
10.如权利要求7所述的FPGA芯片,其特征在于,所述第二状态机模块具体用于:
读取所述SM2控制器中本次SM2数字签名验证所需的参数和数据;
接收所述SM2控制器发送的所述SM2启动信号,启动所述SM2运算单元;
调用所述第二模加运算模块计算t=(r′+s′)modn;
调用所述第二倍点运算模块计算[s′]G和[t′]PA
调用所述第二点加运算模块计算(x′,y′)=[s′]G+[t′]PA
调用所述第二膜加运算模块计算R=(e′+x1′)modn,检验R=r′是否成立,若成立则验证通过,否则验证不通过;
在本次SM2数字签名验证完成后,获取验证结果,将所述验证结果和完成标志返回给所述SM2控制器;
接收所述SM2控制器发送的所述SM2复位信号,复位所述SM2运算单元。
CN201210540967.XA 2012-12-13 2012-12-13 用于sm2数字签名验证算法的fpga芯片 Active CN103049710B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210540967.XA CN103049710B (zh) 2012-12-13 2012-12-13 用于sm2数字签名验证算法的fpga芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210540967.XA CN103049710B (zh) 2012-12-13 2012-12-13 用于sm2数字签名验证算法的fpga芯片

Publications (2)

Publication Number Publication Date
CN103049710A true CN103049710A (zh) 2013-04-17
CN103049710B CN103049710B (zh) 2017-02-08

Family

ID=48062343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210540967.XA Active CN103049710B (zh) 2012-12-13 2012-12-13 用于sm2数字签名验证算法的fpga芯片

Country Status (1)

Country Link
CN (1) CN103049710B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
CN106789078A (zh) * 2016-12-29 2017-05-31 记忆科技(深圳)有限公司 一种基于ahb总线的数字签名认证***
CN107026859A (zh) * 2017-03-31 2017-08-08 西安电子科技大学 一种隐私云医疗数据的安全传输方法
CN108322308A (zh) * 2017-12-14 2018-07-24 天津津航计算技术研究所 一种用于身份认证的数字签名算法的硬件实现***
CN109218023A (zh) * 2017-06-29 2019-01-15 英特尔公司 用于稳健计算椭圆曲线数字签名的技术
CN109977702A (zh) * 2019-04-08 2019-07-05 成都靖尧通信技术有限公司 一种基于ds2432芯片的fpga设备加密认证***和方法
CN113055189A (zh) * 2021-06-02 2021-06-29 工业信息安全(四川)创新中心有限公司 Sm2数字签名验证失败原因判定方法、装置、设备和介质
US11323268B2 (en) * 2019-06-28 2022-05-03 Intel Corporation Digital signature verification engine for reconfigurable circuit devices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4509611B2 (ja) * 2004-03-18 2010-07-21 東芝ソリューション株式会社 電子署名保証システム、プログラム及び装置
CN102104482A (zh) * 2009-12-21 2011-06-22 上海华虹集成电路有限责任公司 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法
CN102737270B (zh) * 2011-04-15 2015-11-18 航天信息股份有限公司 一种基于国产算法的银行智能卡芯片安全协处理器
CN102761413B (zh) * 2011-04-27 2015-06-10 航天信息股份有限公司 p元域SM2椭圆曲线公钥密码算法的实现***

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
CN106789078A (zh) * 2016-12-29 2017-05-31 记忆科技(深圳)有限公司 一种基于ahb总线的数字签名认证***
CN107026859A (zh) * 2017-03-31 2017-08-08 西安电子科技大学 一种隐私云医疗数据的安全传输方法
CN109218023A (zh) * 2017-06-29 2019-01-15 英特尔公司 用于稳健计算椭圆曲线数字签名的技术
CN108322308A (zh) * 2017-12-14 2018-07-24 天津津航计算技术研究所 一种用于身份认证的数字签名算法的硬件实现***
CN108322308B (zh) * 2017-12-14 2021-01-12 天津津航计算技术研究所 一种用于身份认证的数字签名算法的硬件实现***
CN109977702A (zh) * 2019-04-08 2019-07-05 成都靖尧通信技术有限公司 一种基于ds2432芯片的fpga设备加密认证***和方法
CN109977702B (zh) * 2019-04-08 2023-08-04 成都靖尧通信技术有限公司 一种基于ds2432芯片的fpga设备加密认证***
US11323268B2 (en) * 2019-06-28 2022-05-03 Intel Corporation Digital signature verification engine for reconfigurable circuit devices
US20220255757A1 (en) * 2019-06-28 2022-08-11 Intel Corporation Digital signature verification engine for reconfigurable circuit devices
CN113055189A (zh) * 2021-06-02 2021-06-29 工业信息安全(四川)创新中心有限公司 Sm2数字签名验证失败原因判定方法、装置、设备和介质
CN113055189B (zh) * 2021-06-02 2021-08-10 工业信息安全(四川)创新中心有限公司 Sm2数字签名验证失败原因判定方法、装置、设备和介质

Also Published As

Publication number Publication date
CN103049710B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN103049710A (zh) 用于sm2数字签名验证算法的fpga芯片
CN103942031B (zh) 椭圆域曲线运算方法
CN101826142B (zh) 一种可重构椭圆曲线密码处理器
CN106487512A (zh) 一种rsa密钥对快速生成***及方法
EP3859585B1 (en) Block chain intelligent contract execution method, device and electronic apparatus
CN111064583B (zh) 一种门限sm2数字签名方法、装置、电子设备及存储介质
CN110263580B (zh) 基于区块链的数据处理方法、装置和区块链节点
CN102222017A (zh) 通过不可见接口实现不符合abi特征的方法和***
CN101021777B (zh) 基于除数(2n-1)的有效求模操作运算
CN103984677A (zh) 基于大规模粗粒度嵌入式可重构***及其处理方法
CN100375011C (zh) 任意精度运算器、任意精度运算方法和电子设备
Wenger et al. Harder, better, faster, stronger: elliptic curve discrete logarithm computations on FPGAs
CN108446989B (zh) 手续费确定方法及终端设备
Wenger et al. Solving the discrete logarithm of a 113-bit Koblitz curve with an FPGA cluster
CN116861470A (zh) 加解密方法、装置、计算机可读存储介质和服务器
CN101243388A (zh) 用于在加密计算中执行求逆运算的电路结构和方法
CN103761213A (zh) 基于循环流水计算的片上阵列***
CN104298897A (zh) 基于混沌技术的嵌入式版权认证方法及专用处理器
EP3758288B1 (en) Digital signature verification engine for reconfigurable circuit devices
Akeela et al. Efficient HW/SW partitioning of Halo: FPGA-accelerated recursive proof composition in blockchain
Judge et al. A Hardware‐Accelerated ECDLP with High‐Performance Modular Multiplication
Bernstein et al. Faster discrete logarithms on FPGAs
Nedjah et al. Four hardware implementations for the m-ary modular exponentiation
CN112328960B (zh) 数据运算的优化方法、装置、电子设备及存储介质
Farias et al. Cryptographic architecture for co-process on consumer electronics devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant