用于sm2数字签名验证算法的fpga芯片的制作方法

文档序号:6384198阅读:324来源:国知局
专利名称:用于sm2数字签名验证算法的fpga芯片的制作方法
技术领域
本发明涉及计算机技术领域,特别是涉及一种用于SM2数字签名验证算法的FPGA
-H-* I I
心/T O
背景技术
国家密码管理局于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 1 +s 1 )modn的计算,以及R = (e 1 +X11 )modn的
计算,其中,(r' +s')为签名码字,计算消息的摘要值=为摘要计算函
数,=ZgOAT,“□”表示前后两个字符串的拼接,η为椭圆曲线的阶,χ/为椭圆曲线点(x; ,Y1 )坐标元素之一;第一倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下计算SM2数字签名验证算法中的[s' ]6和[t' ]PA,其中,G是椭圆曲线的基点,G = (xe, ye) (G古O), Xe和ye是Fp中的两个元素,椭圆曲线E (Fq)方程的两个元素a、b e F,、Pa是用户公钥,也是椭圆曲线上的一个点,[s' ]G是指G的s'倍 点,[t' ]PA是指?4的1倍点;第一点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下完成SM2数字签名验证算法中的[s' ]6和[1 ]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' ]6和[1 ]PA ;调用第一点加运算模块计算(X' , y' ) = [s' ]G+[t' ]PA ;调用第一模加运算模块计算R = (e, +x/ )modn,检验R = r,是否成立,若成立则验证通过,否则验证不通过。优选地,SM2运算单元具体包括坐标转换模块,用于对椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系进行转换;第二状态机模块,用于进行SM2数字签名验证运算流程控制,并与SM2控制器进行通信;第二模加运算模块,用于在雅可比坐标系下完成SM2数字签名验证算法中的t = (r 1 +s 1 )modn的计算,以及R = (e 1 +X11 )modn
的计算,其中,(r' +s')为签名码字,计算消息的摘要值y = //,.(f)5Hv()为摘要计算函
数,A/V‘□”表示前后两个字符串的拼接,η为椭圆曲线的阶,χ/为椭圆曲线点U' ,Y')坐标元素之一;第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s']PA,其中,G是椭圆曲线的基点,G = (xe, ye) (G古O), Xe和ye是Fp中的两
个元素,椭圆曲线E (Fq)方程的两个元素a、b e F,、Pa是用户公钥,也是椭圆曲线上的一个点,[s' ]G是指G的s'倍点,[t' ]PA是指?4的1倍点;第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s' ]6和[1 ]PA两个点的点加运算,即,(X' ,y')=[s' ]G+[t' ]PA,其中,(X' ,y')为椭圆曲线上的点。
优选地,将素数域乘法运算替换为Montgomery乘法运算。优选地,通过FPGA芯片中的数字信号处理器DSP资源代替Montgomery乘法运算所需的乘法器。优选地,第二状态机模块具体用于读取SM2控制器中本次SM2数字签名验证所需的参数和数据;接收SM2控制器发送的SM2启动信号,启动SM2运算单元;调用第二模加运算模块计算t=(r' +s' )modn;调用第二倍点运算模块计算[s' ]6和[1 ]PA ;调用第二点加运算模块计算(X' ,1' ) = [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 e Fq> E(Fq)上的基点G = (xG, yG) (G幸O),其中xG和ye是Fp中的两个元素、椭圆曲线基点E (Fq)上的G的阶η、以及其它可选项(如η的余因子h等);2、Za :用户的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值;3、PA:用户的公钥;4、M’待验证消息;5、(r',S,):系统收到的签名码字。输出验证结果验证通过或者验证不通过。步骤图1是本发明实施例的SM2数字签名验证算法流程图,如图1所示,为了检验收到的消息M’及其数字签名(r’,s’),作为验证者的用户需要实现以下运算步骤步骤1,检验r’ e [l,n-l]是否成立,若不成立,则验证不通过,其中η为椭圆曲线的阶;步骤2,检验s’ e [l,n-l]是否成立,若不成立,则验证不通过,其中η为椭圆曲线的阶;步骤3,置Ι/=Ζ, ΛΤ其中“□”运算符表示前后两个字符串的拼接;
3步骤4,计算e' =//,(f ),即计算消息的摘要值,其中HvO为摘要计算函数;步骤5,将签名码字数据类型转换为整数,计算t = (r' +s' )modn,若t = 0,则验证不通过;步骤6,计算椭圆曲线点(X' ,y' ) = W ]G+[t' ]PA,其中(X' ,1')为椭圆曲线上的点,[s' ]6和[1 ]PA为倍点运算[s' ]G+[t' ]PA为点加运算;步骤7,计算R= (e' +x/ )modn,检验R = r'是否成立,若成立则验证通过;否则验证不通过,其中X/为上述步骤6计算得到的椭圆曲线点(X' ,J')坐标元素之一。以下对本发明实施例的技术方案进行详细说明。根据本发明的实施例,提供了一种用于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的结构进行说明。实例ISM2运算单元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' ]6和[1 ]PA;调用第一点加运算模块计算(X' ) = [s' ]G+[t' ]PA;调用第一模加运算模块计算R = (e' +x/ )modn,检验R = r'是否成立,若成立则验证通过,否则验证不通过。第一模加运算模块,用于在仿射坐标系下完成SM2数字签名验证算法中的t =(r' +s' )modn的计算,以及R = (e' +x/ )modn的计算,其中,(r' +s')为签名码字,
计算消息的摘要值V = "..(V)5HvO为摘要计算函数,M =Z^ikT,“ □”表示前后两个字
符串的拼接,η为椭圆曲线的阶,X/为椭圆曲线点(X',y')坐标元素之一;第一倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下计算SM2数字签名验证算法中的[s' ]6和[1 ]PA,其中,G是椭圆曲线的基点,G = (xG, yG) (G关O), xG和ye是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b e Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s' ]G是指G的s'倍点,[C ]Pa是指倍点;第一点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下完成SM2数字签名验证算法中的[s' ]6和[1 ]PA两个点的点加运算,即,U1 ,J1 ) = [s' ]G+[t' ]PA,其中,U1 ,j')为椭圆曲线上的

实例2 SM2运算单元24具体包括坐标转换模块,用于对椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系进行转换;第二状态机模块,用于进行SM2数字签名验证运算流程控制,并与SM2控制器22进行通信;第二状态机模块具体用于读取SM2控制器22中本次SM2数字签名验证所需的参数和数据;接收SM2控制器22发送的SM2启动信号,启动SM2运算单元24 ;调用第二模加运算模块计算t = (r' +s' )modn ;调用第二倍点运算模块计算[s' !^和^ ]PA ;调用第二点加运算模块计算,1' ) = [s' ]G+[t' ]PA;调用第二模加运算模块计算R=(e' +x/ )modn,检验R = r'是否成立,若成立则验证通过,否则验证不通过;在本次SM2数子签名验证完成后,犾取验证结果,将验证结果和完成标志返回给SM2控制器22 ;接收SM2控制器22发送的SM2复位信号,复位SM2运算单元24。第二模加运算模块,用于在雅可比坐标系下完成SM2数字签名验证算法中的t =(r' +s' )modn的计算,以及R = (e' +x/ )modn的计算,其中,(r' +s')为签名码字,
计算消息的摘要值β ν( /),Ην()为摘要计算函数,μ =Ζ4ΠΑΤ,“ □”表示前后两个字
符串的拼接,η为椭圆曲线的阶,X/为椭圆曲线点(X',y')坐标元素之一;
第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s' ]6和[1 ]PA,其中,G是椭圆曲线的基点,G = (xG, yG) (G ^ O), xG和ye是Fp中的两个元素,椭圆曲线E(Fq)方程的两个元素a、b e F,、Pa是用户公钥,也是椭圆曲线上的一个点,[s' ]G是指G的s,倍点,[t' ] Pa是指Pa的t'倍点;第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s' ]6和[1 ]PA两个点的点加运算,即,U丨,Yr ) = [s' ]G+[t' ]PA,其中,(X',y')为椭圆曲线上的点。需要说明的是,在上述实例I和实例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 控制器 22SM2控制器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的阶η、以及其它可选项等)、用于验证计算的用户公钥Pa、待验证消息的摘要y =用于验证计算的签名码(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' ]6和[1 ]PA;点加运算,[s']G+[t' ]PA ;模加运算,R= (e' +x/ )modn。(4)给出验证SM2签名验证结果,并向SM2控制器22的状态寄存器返回状态及验证结果。2、点加运算模块该模块主要完成SM2数字签名验证算法步骤6的[s' ]6和[1 ]PA两个点的点力口运算,即(X, ,1' ) = [S' ]G+[t' ]PA。下面列出点加运算规则,如下(I)设两个点 P1 = (X1, Y1)和 P2 = (x2, y2),求 P3 = (x3, y3) = Pi+P2 ;(2)则尤3 =(么二^)2 — X1 — 4和·F3 =-χ3)~
X2-X1X2—Xi。根据上述运算规则可知,椭圆曲线点加运算,需要底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持。3、倍点运算模块倍点运算模块主要负责完成SM2数字签名验证算法步骤6中的[s' ]6和[1 ]Pa两次运算。本发明实施例中,[s' ]G是首先完成的倍点运算,[t' ]PA是随后要完成的倍点运算。G是椭圆曲线的基点,Pa是用户公钥,也是椭圆曲线上的一个点。[s' ]G是指G的s'倍点,[t' ]PA是指?4的1倍点。按照椭圆曲线的相关理论知识可知,椭圆曲线上的点完成倍点运算成后的点,仍然在该椭圆曲线上,也即该点也是椭圆曲线的点,因此[s']G和[t' ]PA是椭圆曲线上的两个点。这两个点进行点加运算的结果也是椭圆曲线上的点。从计算过程看,倍点运算的本质可以看成多次的点加运算,因此倍点运算仍然需要调用底层的素数域加减法运算、素数域乘法运算、以及素数域除法运算模块。4、模加运算模块模加运算较为简单,即数据求和后,再进行求模运算。主要负责完成SM2数字签名验证算法步骤5的t = (r' +s' )modn计算,以及步骤7的R = (e' +x/ )modn计算。

上述在仿射坐标系下,基于FPGA芯片实现的SM2签名验证运算单元,完成一次SM2签名运算,一般需要500多次加法计算,对应的除法计算则需要两万多次。例如,依照SM2点加运算的计算规则,需要I次除法计算和三次乘法计算,但是素数域上的除法计算量是乘法50倍左右,因此可以明确的是最大的计算瓶颈就是大量的除法运算。在此,为了降低仿射坐标系下的除法运算量,可以引入雅可比坐标系。在雅可比坐标系下的坐标可以表示为,其对应着仿射坐标,因此可以将雅克比坐标系中坐标向量视为中间变量,利用可以完成仿射坐标系和雅可比坐标系的相互转换。通过仿射坐标系与雅可比坐标系的相互转换,使得SM2签名验证计算在雅可比坐标系下实现,可以有效避免大量的除法计算,明显降低了计算量。并且在完成一次SM2运算的过程中,仿射坐标系与雅可比坐标系的相互转化仅需I次。即便是一次SM2签名运算,也仅需要两三次除法运算,可以极大优化运算单元和运算速度。从本质上看,通过仿射坐标系与雅可比坐标系的转换,有效消除除法计算量调用次数,主要体现在有效减少了倍点和点加计算过程对素数域除法的调用次数。前面知道,通过仿射坐标系与雅可比坐标系的相互转化,能够有效减少除法运算。因此,在除法运算优化实现后,主要的计算瓶颈则在于乘法运算。素数域上的乘法运算都是模乘运算,即c = aXbmodp。传统的乘法运算要么需要借助除法来取余数,要么通过低速率的减法运算来实现。本发明采用Montgomery乘法(蒙哥马利乘法)则能够有效的优化素数域的乘法计算,将复杂的运算转化成简单的低精度的乘法运算来实现。Montgomery乘法运算如下
0122]
权利要求
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' +x/ )modn的计算,其中,(r' +s')为签名码字,计算消息的摘要值d = iiv(ii/),HvO为摘要计算函数,M□”表示前后两个字符串的拼接,η为椭圆曲线的阶,X/为椭圆曲线点(X',y')坐标元素之一; 第一倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下计算SM2数字签名验证算法中的[s' ]6和[1 ]PA,其中,G是椭圆曲线的基点,G = (xG, yG) (G关O), xG和ye是Fp中的两个元素,椭圆曲线E(Ftl)方程的两个元素a、beFq、PA是用户公钥,也是椭圆曲线上的一个点,[s' ]G是指G的s'倍点,[C ]Pa是指倍点; 第一点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在仿射坐标系下完成SM2数字签名验证算法中的[s' ]6和[1 ]PA两个点的点加运算,即,(X' ,1' ) = W ]G+[t' ]PA,其中,(X' ,Y')为椭圆曲线上的点。
5.如权利要求4所述的FPGA芯片,其特征在于,所述第一状态机模块具体用于读取所述SM2控制器中本次SM2数字签名验证所需的参数和数据;接收所述SM2控制器发送的所述SM2启动信号,启动所述SM2运算单元;根据SM2数字签名验证算法的运算流程调用所述第一倍点运算模块、所述第一点加运算模块、所述第一模加运算模块,并根据本次SM2数字签名验证所需的参数和数据进行验证计算;在本次SM2数子签名验证完成后,犾取验证结果,将所述验证结果和完成标志返回给所述SM2控制器;接收所述SM2控制器发送的所述SM2复位信号,复位所述SM2运算单元。
6.如权利要求5所述的FPGA芯片,其特征在于,所述第一状态机模块具体用于调用所述第一模加运算模块计算t = Cr' +s' )modn ;调用所述第一倍点运算模块计算[s' ]6和[1 ]PA;调用所述第一点加运算模块计算(X' ,1' ) = [s' ]G+[t' ]PA;调用所述第一模加运算模块计算R = (e' +x/ )modn,检验R = r'是否成立,若成立则验证通过,否则验证不通过。
7.如权利要求1所述的FPGA芯片,其特征在于,所述SM2运算单元具体包括坐标转换模块,用于对椭圆曲线上的点坐标数据由仿射坐标系向雅可比坐标系进行转换;第二状态机模块,用于进行SM2数字签名验证运算流程控制,并与所述SM2控制器进行通信;第二模加运算模块,用于在雅可比坐标系下完成SM2数字签名验证算法中的t = (r' +s' )modn的计算,以及R = (e' +x/ )modn的计算,其中,(r' +s')为签名码字,计算消息的摘要值β ν( ^),Ην()为摘要计算函数,=ZJIJkT □”表示前后两个字符串的拼接,η为椭圆曲线的阶,X/为椭圆曲线点(X',y')坐标元素之一;第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s' ]6和[1 ]PA,其中,G是椭圆曲线的基点,G = (xG, yG) (G关O), xG和ye是Fp中的两个元素,椭圆曲线E(Fq) 方程的两个元素a、b e Fq、PA是用户公钥,也是椭圆曲线上的一个点,[s' ]G是指G的s' 倍点,[C ]Pa是指倍点;第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s' ]6和[1 ]PA两个点的点加运算,即,(X' ,1' ) = [s' ]G+[t' ]PA,其中,(X' )为椭圆曲线上的点。
8.如权利要求7或4所述的FPGA芯片,其特征在于,将所述素数域乘法运算替换为蒙哥马利Montgomery乘法运算。
9.如权利要求8所述的FPGA芯片,其特征在于,通过所述FPGA芯片中的数字信号处理器DSP资源代替所述Montgomery乘法运算所需的乘法器。
10.如权利要求7所述的FPGA芯片,其特征在于,所述第二状态机模块具体用于读取所述SM2控制器中本次SM2数字签名验证所需的参数和数据;接收所述SM2控制器发送的所述SM2启动信号,启动所述SM2运算单元; 调用所述第二模加运算模块计算t = Cr' +s' )modn ; 调用所述第二倍点运算模块计算[s' ]G和[t ]PA; 调用所述第二点加运算模块计算(X' ,1' ) = [s' ]G+[t' ]PA; 调用所述第二膜加运算模块计算R = (e' +x/ )modn,检验R = r'是否成立,若成立则验证通过,否则验证不通过; 在本次SM2数子签名验证完成后,犹取验证结果,将所述验证结果和完成标志返回给所述SM2控制器; 接收所述SM2控制器发送的所述SM2复位信号,复位所述SM2运算单元。
全文摘要
本发明公开了一种用于SM2数字签名验证算法的FPGA芯片。该FPGA芯片包括系统总线接口,用于与FPGA芯片的外部系统进行通信,从外部系统获取SM2数字签名验证所需的参数和数据,并写入SM2控制器,接收外部系统发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到SM2控制器;SM2控制器,用于根据控制消息触发SM2运算单元,在接收到工作状态查询消息和运算结果查询消息后,通过系统总线接口向外部系统发送SM2运算单元的工作状态和验证结果;SM2运算单元,用于在SM2控制器的触发下,从SM2控制器中读取本次SM2数字签名验证所需的参数和数据,进行根据SM2数字签名验证算法完成验证计算,将验证结果发送到SM2控制器。
文档编号G06F21/76GK103049710SQ20121054096
公开日2013年4月17日 申请日期2012年12月13日 优先权日2012年12月13日
发明者沈阳, 郭沛宇, 王磊, 宫铭豪, 丁森华, 梁晋春, 马艳, 姚颖颖, 张乃光 申请人:国家广播电影电视总局广播科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1