当前位置: 首页 > 专利查询>浙江大学专利>正文

一种软硬件协同的SM2椭圆曲线密码算法实现方法技术

技术编号:33893255 阅读:59 留言:0更新日期:2022-06-22 17:29
本发明专利技术公开了一种软硬件协同的SM2椭圆曲线密码算法实现方法。在CPU软件端运行SM2密码协议,将其中计算复杂度最高的标量乘运算通过软件/硬件接口交由FPGA硬件端执行;FPGA硬件端实现一个通用的高性能标量乘运算模块,快速完成标量乘运算并通过软件/硬件接口返回运算结果;软件端取回标量乘运算结果后继续执行协议,向上层应用返回协议结果。该方法在软件端适配协议的更改,硬件端无需重新配置,具有运算性能高,通用性、可扩展性强的特点,可用于加密服务器等场合,尤其适用于有高吞吐的加密操作,且需要频繁更改使用的SM2密码协议的场景。且需要频繁更改使用的SM2密码协议的场景。且需要频繁更改使用的SM2密码协议的场景。

【技术实现步骤摘要】
一种软硬件协同的SM2椭圆曲线密码算法实现方法


[0001]本专利技术涉及信息安全
,尤其涉及一种软硬件协同的SM2椭圆曲线密码算法实现方法。

技术介绍

[0002]椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法是一种基于椭圆曲线的公开密钥密码算法,最早于1985年由Neal Koblitz和Victor Miller分别独立地提出。与另一种公钥密码算法—RSA算法相比,ECC算法具有更高的安全性和更小的密钥长度,在数字签名、信息安全、区块链等领域具有广泛的应用。
[0003]自1998年起,一些国际标准化组织陆续制定了ECC的标准,如ANSI公布的ANSI

X9.62、ANSI

X9.63标准,IEEE公布的IEEE

P1363标准等。SM2椭圆曲线密码算法是我国自行研发并具有自主知识产权的ECC算法,于2017年底纳入ISO/IEC国际标准。
[0004]目前的SM2椭圆曲线密码算法实现方法可分为软件实现和硬件实现两类。软件方法实现具有设计开发成本低、便于维护等优点;硬件方法实现具有算法性能高、功耗低等优点。
[0005]在以往的SM2椭圆曲线密码算法实现方法中存在的主要问题有:(1)软件方法实现的算法性能低,无法满足高吞吐的场景需求;(2)硬件方法实现的通用性、扩展性较差,二次开发、升级的成本较大。

技术实现思路

[0006]本专利技术的目的在于针对现有技术的不足,提供一种软硬件协同的SM2椭圆曲线密码算法实现方法。
[0007]本专利技术的目的是通过以下技术方案来实现的:一种软硬件协同的SM2椭圆曲线密码算法实现方法,该方法包含如下步骤:
[0008]S101:设定椭圆曲线参数;
[0009]S102:选择SM2椭圆曲线密码算法协议;
[0010]S103:软件端执行步骤S102选取的密码算法协议,通过软件/硬件接口向硬件端下发标量乘运算请求;
[0011]S104:硬件端响应步骤S103中软件端下发的标量乘运算请求,执行标量乘运算,并将运算结果通过软件/硬件接口返回软件端;
[0012]S105:软件端取回步骤S104中硬件端返回的运算结果,继续执行协议,若协议中仍有待执行的标量乘运算,则返回步骤S103;
[0013]S106:输出密码算法协议返回值。
[0014]进一步地,所述步骤S101中,设定的椭圆曲线参数为GB/T 32918.5

2017标准规定的SM2椭圆曲线公钥密码算法的曲线参数。
[0015]进一步地,所述步骤S102中,所述SM2椭圆曲线密码算法协议包括密钥对生成协
议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议。
[0016]进一步地,所述步骤S103中,软件端实现SM2椭圆曲线密码算法协议,由CPU负责执行,并通过软件/硬件接口调用硬件端完成标量乘运算。
[0017]进一步地,所述步骤S104中,硬件端为在FPGA上实现的4个子模块:标量乘运算控制器子模块、点加运算控制器子模块、点倍运算控制器子模块、模运算子模块;其中,标量乘运算控制模块采用状态机方式实现,根据随机数k的NAF编码结果h组织进行点加运算与点倍运算;点加运算控制模块与点倍运算控制模块均采用状态机方式实现,按Jacobian坐标系下的计算公式组织进行模乘、模加和模减运算;模运算模块是执行具体的计算任务的模块,包括模乘运算、模加运算、模减运算和模逆运算4种运算模式。
[0018]进一步地,所述步骤S103

S105中,在CPU软件端和FPGA硬件端之间进行数据传输的软件/硬件接口为PCIE高速总线接口。
[0019]进一步地,支持的5种SM2椭圆曲线密码算法协议需要调用硬件端模块分别进行至少1、1、2、2、1次标量乘运算。
[0020]进一步地,FPGA硬件端标量乘运算电路模块的标量乘运算控制器子模块用于调用点加运算和点倍运算模块,实现标量乘运算。
[0021]进一步地,FPGA硬件端标量乘运算电路模块的点加运算控制器子模块和点倍运算控制器子模块用于调度模运算子模块,分别实现点加运算和点倍运算。
[0022]进一步地,FPGA硬件端标量乘运算电路模块的模运算子模块支持模乘运算、模加运算、模减运算、模逆运算4种运算模式。
[0023]本专利技术的有益效果是,本专利技术在CPU软件端运行SM2密码协议,将其中计算复杂度最高的标量乘运算通过软件/硬件接口交由FPGA硬件端执行;FPGA硬件端实现一个通用的高性能标量乘运算模块,快速完成标量乘运算并通过软件/硬件接口返回运算结果;软件端取回标量乘运算结果后继续执行协议,向上层应用返回协议结果。该方法在软件端适配协议的更改,硬件端无需重新配置,具有运算性能高,通用性、可扩展性强的特点,可用于加密服务器等场合,尤其适用于有高吞吐的加密操作,且需要频繁更改使用的SM2密码协议的场景。
附图说明
[0024]图1为本专利技术提出的软硬件协同的SM2椭圆曲线密码算法实现方法的流程图;
[0025]图2为本专利技术提出的SM2椭圆曲线密码算法软硬件协同实现架构框图;
[0026]图3为SM2椭圆曲线密码算法密钥对生成协议的流程图;
[0027]图4为SM2椭圆曲线密码算法数字签名生成协议的流程图;
[0028]图5为SM2椭圆曲线密码算法数字签名验证协议的流程图;
[0029]图6为SM2椭圆曲线密码算法消息加密协议的流程图;
[0030]图7为SM2椭圆曲线密码算法消息解密协议的流程图;
[0031]图8为FPGA硬件端实现的标量乘运算器系统框图;
[0032]图9为FPGA硬件端实现的标量乘运算控制器状态转移图。
具体实施方式
[0033]下面结合附图和具体实施方式对本专利技术作进一步详细描述。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
[0034]本专利技术提出了一种软硬件协同的SM2椭圆曲线密码算法实现方法,其所实现的软硬件协同架构包括3个部分,如图1所示,分别为CPU软件端、FPGA硬件端以及PCIE软件/硬件接口。其中,软件/硬件接口是CPU软件端与FPGA硬件端之间进行数据交换的桥梁,使用PCIE总线实现。软件端将需要进行标量乘运算的随机数k与椭圆曲线点P的坐标(x
P
,y
P
)通过PCIE接口发送给硬件端;硬件端执行标量乘运算,将运算结果,即椭圆曲线点Q=[k]P的坐标(x
Q
,y
Q
)通过PCIE接口返回给软件端,其中[k]P表示随机数k和椭圆曲线点P的标量乘。
[0035]椭圆曲线可由椭圆曲线方程定义:y2=x3+ax+b,坐标(x,y)满足椭圆曲线方程的点即为定义在该椭圆曲线上的点。关于椭圆曲线详细本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,该方法包含如下步骤:S101:设定椭圆曲线参数;S102:选择SM2椭圆曲线密码算法协议;S103:软件端执行步骤S102选取的密码算法协议,通过软件/硬件接口向硬件端下发标量乘运算请求;S104:硬件端响应步骤S103中软件端下发的标量乘运算请求,执行标量乘运算,并将运算结果通过软件/硬件接口返回软件端;S105:软件端取回步骤S104中硬件端返回的运算结果,继续执行协议,若协议中仍有待执行的标量乘运算,则返回步骤S103;S106:输出密码算法协议返回值。2.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S101中,设定的椭圆曲线参数为GB/T 32918.5

2017标准规定的SM2椭圆曲线公钥密码算法的曲线参数。3.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S102中,所述SM2椭圆曲线密码算法协议包括密钥对生成协议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议。4.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S103中,软件端实现SM2椭圆曲线密码算法协议,由CPU负责执行,并通过软件/硬件接口调用硬件端完成标量乘运算。5.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S104中,硬件端为在FPGA上实现的4个子模块:标量乘运算控制器子模块、点加运算控制器子模块、点倍运算控制器子模块、模...

【专利技术属性】
技术研发人员:邓尧慷杜歆
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1