用于SM2数字签名验证算法的FPGA芯片制造技术

技术编号:8594214 阅读:907 留言:0更新日期:2013-04-18 07:30
本发明专利技术公开了一种用于SM2数字签名验证算法的FPGA芯片。该FPGA芯片包括:系统总线接口,用于与FPGA芯片的外部系统进行通信,从外部系统获取SM2数字签名验证所需的参数和数据,并写入SM2控制器,接收外部系统发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到SM2控制器;SM2控制器,用于根据控制消息触发SM2运算单元,在接收到工作状态查询消息和运算结果查询消息后,通过系统总线接口向外部系统发送SM2运算单元的工作状态和验证结果;SM2运算单元,用于在SM2控制器的触发下,从SM2控制器中读取本次SM2数字签名验证所需的参数和数据,进行根据SM2数字签名验证算法完成验证计算,将验证结果发送到SM2控制器。

【技术实现步骤摘要】
用于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′)为签名码字,计算消息的摘要值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′)为签名码字,计算消息的摘要值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′)为椭圆曲线上的点。优选地,将素数域乘法运算替换为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运本文档来自技高网...
用于SM2数字签名验证算法的FPGA芯片

【技术保护点】
一种用于SM2数字签名验证算法的FPGA芯片,其特征在于,包括:系统总线接口,用于与所述FPGA芯片的外部系统进行通信,从所述外部系统获取SM2数字签名验证所需的参数和数据,并写入所述SM2控制器,接收所述外部系统发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到所述SM2控制器;SM2控制器,与所述系统总线接口和所述SM2运算单元连接,用于根据所述控制消息触发所述SM2运算单元,在接收到所述工作状态查询消息和所述运算结果查询消息后,通过所述系统总线接口向所述外部系统发送所述SM2运算单元的工作状态和验证结果;SM2运算单元,用于在所述SM2控制器的触发下,从所述SM2控制器中读取本次SM2数字签名验证所需的参数和数据,进行根据所述SM2数字签名验证算法进行验证计算,将验证结果发送到所述SM2控制器。

【技术特征摘要】
1.一种用于SM2数字签名验证算法的FPGA芯片,其特征在于,包括:系统总线接口,用于与所述FPGA芯片的外部系统进行通信,从所述外部系统获取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′)为签名码字,计算消息的摘要值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′)为椭圆曲线上的点。2.如权利要求1所述的FPGA芯片,其特征在于,所述系统总线接口包括:符合通用工业总线标准的系统总线接口;或者符合用户自定义总线接口协议的系统总线接口。3.如权利要求1所述的FPGA芯片,其特征在于,所述SM2控制器具体包括:控制寄存器,用于在通过所述系统总线接口接收到所述外部系统发送的所述控制消息的情况下,根据所述控制消息,通过SM2启动信号触发所述SM2运算单元启动,通过SM2复位信号触发所述SM2运算单元复位;数据寄存器,用于通过所述系统总线接口接收所述外部系统发送的本次SM2数字签名验证所需的参数和数据,并进行存储,在所述控制寄存器复位所述SM2运算单元后,清空本次SM2数字签名验证所需的参数和数据;状态寄存器,用于在接收到所述工作状态查询消息的情况下,查询所述SM2运算单元的工作状态,并通过所述系统总线接口将所述工作状态发送到所述外部系统;主动通知所述外部系统所述SM2运算单元已完成本次SM2数字签名验证;在接收到所述运算结果查询消息的情况下,通过所述系统总线接口向所述外部系统发送本次SM2数字签名验证的验证结果。4.如权利要求1所述的FPGA芯片,其特征在于,或者,所述SM2运算单元...

【专利技术属性】
技术研发人员:沈阳郭沛宇王磊宫铭豪丁森华梁晋春马艳姚颖颖张乃光
申请(专利权)人:国家广播电影电视总局广播科学研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利