发明名称 用于SM2数字签名验证算法的FPGA芯片
摘要 本发明公开了一种用于SM2数字签名验证算法的FPGA芯片。该FPGA芯片包括:系统总线接口,用于与FPGA芯片的外部系统进行通信,从外部系统获取SM2数字签名验证所需的参数和数据,并写入SM2控制器,接收外部系统发送的控制消息、工作状态查询消息、以及运算结果查询消息,并发送到SM2控制器;SM2控制器,用于根据控制消息触发SM2运算单元,在接收到工作状态查询消息和运算结果查询消息后,通过系统总线接口向外部系统发送SM2运算单元的工作状态和验证结果;SM2运算单元,用于在SM2控制器的触发下,从SM2控制器中读取本次SM2数字签名验证所需的参数和数据,进行根据SM2数字签名验证算法完成验证计算,将验证结果发送到SM2控制器。
申请公布号 CN103049710B 申请公布日期 2017.02.08
申请号 CN201210540967.X 申请日期 2012.12.13
申请人 国家广播电影电视总局广播科学研究院 发明人 沈阳;郭沛宇;王磊;宫铭豪;丁森华;梁晋春;马艳;姚颖颖;张乃光
分类号 G06F21/76(2013.01)I 主分类号 G06F21/76(2013.01)I
代理机构 工业和信息化部电子专利中心 11010 代理人 梁军
主权项 一种用于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′+x<sub>1</sub>′)modn的计算,其中,(r′+s′)为签名码字,计算消息的摘要值<img file="FDA0001149648130000011.GIF" wi="275" he="93" />H<sub>v</sub>()为摘要计算函数,<img file="FDA0001149648130000012.GIF" wi="425" he="77" />表示前后两个字符串的拼接,n为椭圆曲线的阶,x<sub>1</sub>′为椭圆曲线点(x′,y′)坐标元素之一;第二倍点运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下计算SM2数字签名验证算法中的[s′]G和[t′]P<sub>A</sub>,其中,G是椭圆曲线的基点,G=(x<sub>G</sub>,y<sub>G</sub>)(G≠O),x<sub>G</sub>和y<sub>G</sub>是F<sub>p</sub>中的两个元素,椭圆曲线E(F<sub>q</sub>)方程的两个元素a、b∈F<sub>q</sub>、P<sub>A</sub>是用户公钥,也是椭圆曲线上的一个点,[s′]G是指G的s′倍点,[t′]P<sub>A</sub>是指P<sub>A</sub>的t′倍点;第二点加运算模块,用于在底层素数域加减法运算、素数域乘法运算、以及素数域除法运算的支持下,在雅可比坐标系下完成SM2数字签名验证算法中的[s′]G和[t′]P<sub>A</sub>两个点的点加运算,即,(x′,y′)=[s′]G+[t′]P<sub>A</sub>,其中,(x′,y′)为椭圆曲线上的点。
地址 100866 北京市西城区复兴门外大街2号