首页> 中国专利> 用于SM2数字签名验证算法的FPGA芯片

用于SM2数字签名验证算法的FPGA芯片

摘要

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

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-08

    授权

    授权

  • 2014-10-15

    实质审查的生效 IPC(主分类):G06F21/76 申请日:20121213

    实质审查的生效

  • 2013-04-17

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,特别是涉及一种用于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运算单元。

本发明有益效果如下:

借助于本发明实施例的技术方案,充分利用了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,置其中“□”运算符表示前后两个字符串的拼接;

步骤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′)为签名码 字,计算消息的摘要值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:

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′)为签名 码字,计算消息的摘要值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′)为椭 圆曲线上的点。

需要说明的是,在上述实例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、待验证消息的摘要用于验证 计算的签名码(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)则x3=(y2-y1x2-x1)2-x1-x2y3=(y2-y1x2-x1)(x1-x3)-y1.

根据上述运算规则可知,椭圆曲线点加运算,需要底层素数域加减法运算、 素数域乘法运算、以及素数域除法运算的支持。

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,令p=n1□2D+n0n0=-n0-1mod2D;

2、整数a,b∈[0,p-1],a=a1□2D+a0,b=b1□2D+b0

3、整数T=Σi=022iDti,整数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

综上所述,借助于本发明实施例的技术方案,采用仿射坐标系坐标系与雅 可比坐标系相互转换的方法,并且充分利用FPGA芯片资源,可以有效提升 SM2算法的运算速度。本发明的实现方法和优化方法,可以应用于各类安全认 证领域,同时根据具体的应用场景和技术需求,采取灵活配置方式,实现系统 资源和运算效率的合理分配。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有 相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构 造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程 语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且 上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发 明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细 示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或 多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一 起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法 解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确 记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发 明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式 的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为 本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适 应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实 施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它 们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的 至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要 求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有 过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、 摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征 来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它 实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意 味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求 书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器 上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解, 可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实 施例的用于SM2数字签名验证算法的FPGA芯片中的一些或者全部部件的一 些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或 者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的 实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个 信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提 供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并 且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施 例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的 限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之 前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包 括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干 装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体 体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解 释为名称。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号