一种ecc椭圆曲线抗攻击的硬件架构

文档序号:1878184 发布日期:2021-11-23 浏览:16次 >En<

阅读说明:本技术 一种ecc椭圆曲线抗攻击的硬件架构 (ECC elliptic curve anti-attack hardware architecture ) 是由 詹瑞典 刘远 高倾健 章涵宇 熊晓明 于 2021-08-24 设计创作,主要内容包括:本发明公开了一种ECC椭圆曲线抗攻击的硬件架构,包括模运算模块、点运算模块、顶层控制模块、顶层接口模块以及寄存器存储模块,使用随机掩码对ECC点乘中的密钥k和椭圆曲线点P进行功耗攻击的防护,使得点乘运算的全过程都存在随机变化,从而大幅降低了功耗与数据的相关性;本发明使用基于椭圆曲线的错误检测对点乘运算进行故障攻击防护,该方法的硬件开销较小,便于实现,并支持在任意位置检测,灵活性高,可配置性强;本发明提出抗攻击的ECC并行多点乘算法,可将多次点乘转化为预计算和一次点乘,从而大幅降低了抗攻击方法的面积和速度开销,优化了整体性能。(The invention discloses an ECC elliptic curve anti-attack hardware architecture which comprises a module operation module, a point operation module, a top layer control module, a top layer interface module and a register storage module, wherein a random mask is used for protecting a key k and an elliptic curve point P in ECC point multiplication from power consumption attack, so that the whole process of the point multiplication operation has random change, and the correlation between power consumption and data is greatly reduced; the invention uses error detection based on the elliptic curve to carry out fault attack protection on the dot product operation, the hardware cost of the method is small, the realization is convenient, the detection at any position is supported, the flexibility is high, and the configurability is strong; the invention provides an anti-attack ECC parallel multi-point multiplication algorithm which can convert multiple point multiplication into precomputation and one-time point multiplication, thereby greatly reducing the area and speed overhead of the anti-attack method and optimizing the overall performance.)

一种ECC椭圆曲线抗攻击的硬件架构

技术领域

本发明涉及信息安全技术领域,具体涉及一种ECC椭圆曲线抗攻击的硬件架构。

背景技术

ECC(Elliptic curve cryptography)椭圆曲线加密算法自从1985年被提出以来,就成为公钥加密体制中的核心算法,广泛应用于数据的加密、解密以及数字签名,是目前国际通用且主流的非对称加密算法之一。与RSA(Rivest Shamir Adleman)算法相比,ECC的算法更加复杂,安全强度更高,更适用于现今高安全要求的场景。

随着信息技术与物联网的发展,如今的密码算法多以硬件的形式搭载在专用的安全芯片中。与软件实现相比,硬件实现的方法各不相同,底层电路结构与运算过程也千差万别,因此具有很高的安全性。但ECC算法的硬件实现较为复杂,而不同硬件架构对算法性能有着很大的影响。因此,需要设计一种高性能的ECC硬件实现方法。

而随着侧信道攻击(Side Channel Attack,SCA)的提出,数学上被证明安全的密码算法也受到了严重威胁。侧信道攻击主要通过分析芯片通信信道外的泄露信息来破解密钥,这些泄露信息主要有功耗和电磁信号等。目前常见的侧信道攻击方法主要有功耗攻击和故障攻击。其中,功耗攻击主要有SPA(Simple Power Attack)、DPA(Differential PowerAttack)和CPA(Correlation Power Attack);而故障攻击的主要方法为DFA(DifferentialFault Attack)。这些攻击方法能够对加解密运算时产生的功耗数据或是错误结果进行统计学分析,进而破解密钥。相较于传统攻击方法,SCA的实现成本低、密钥搜索空间小、效率高,是目前信息安全的重要威胁之一。

发明内容

本发明针对现有硬件实现及SCA的安全威胁问题,通过改进算法结构,提出一种ECC椭圆曲线抗攻击的硬件架构,从而为安全设备的加密模块提供有效的解决方案。

为了实现上述任务,本发明采用以下技术方案:

一种抗攻击的ECC并行多点乘算法,获取n比特的密钥k,在椭圆曲线E上取点P,并产生随机数r、z;所述算法包括以下步骤:

(1)初始化k=(k+r)–r;

(2)将点P表示为等价的投影坐标点(xz2,yz3,z);

(3)初始化Q=O,O表示椭圆曲线上的无穷远点;

(4)预计算点加,中间变量T=P+P,T同样为椭圆曲线上的点;

(5)令i=n-1,对于每个i,执行如下过程,之后i-1,直到i=0:

(5.1)计算倍点Q=2Q;

(5.2)若(ki+ri)==1且ri==1,则:

计算点加Q=Q+T;

(5.3)若(ki+ri)==1且ri==0,则:

计算点加Q=Q+P;

(5.4)若(ki+ri)==0且ri==1,则:

计算点加Q=Q+P;

其中,ri表示第i次产生的随机数r,ki表示密钥k中的第i位密钥;

(6)验证点Q是否落在椭圆曲线上,若不在则报错;

(7)将点Q转换为仿射坐标点;

(8)返回点Q;

输出椭圆曲线点Q,Q为k和P点乘的结果。

一种ECC椭圆曲线抗攻击的硬件架构,包括模运算模块、点运算模块、顶层控制模块、顶层接口模块以及寄存器存储模块,其中:

模运算模块包括模加子模块、模减子模块、模乘子模块、模逆子模块,用于接收顶层接口模块和点运算模块发来的数据,完成相应的底层模加、模减、模乘、模逆运算;

点运算模块包括倍点子模块、点加子模块、预处理子模块、错误检测子模块,在接收顶层控制模块的模式选择信号后,完成相应的点加、倍点、预处理和错误检测运算;若顶层仅执行点加或倍点,则将结果写入寄存器存储模块中等待输出;若点运算模块由顶层点乘调用,则将结果存入寄存器存储模块同时返回给顶层控制模块;预处理的过程为抗攻击的ECC并行多点乘算法的步骤(1)到步骤(4),其结果用作点加、倍点和点乘的输入;若仅执行点加或倍点运算,则通过直接调用点加子模块或倍点子模块实现;若是点乘运算则会继续进行步骤(5)到步骤(8),将步骤(4)的结果作为步骤(5)的输入,其结果Q将作为错误检测的过程,即抗攻击的ECC并行多点乘算法的步骤(6)的输入,根据椭圆曲线方程,将计算得到的点Q带入方程,以验证点Q是否在椭圆曲线上,若该点不在曲线上,则直接报错,反之将点Q作为抗攻击的ECC并行多点乘算法的步骤(7)的输入,进行坐标仿射,仿射后的坐标将通过步骤(8)返回给顶层控制模块;

顶层控制模块负责接收接口控制信号与输入数据,调度点运算模块和模运算模块的执行,其输出存放在寄存器存储模块中;当进行点乘运算时,其根据抗攻击的ECC并行多点乘算法的流程调用点运算模块的各个子模块按顺序完成相应的操作;当仅需执行某一个运算时,例如点加、倍点、模加、模乘等,则仅调用对应的子模块;

顶层接口模块负责适配各类总线协议,是整个算法架构入口和出口;其将总线控制信号与数据读入,传给顶层控制模块并写入寄存器存储模块;整体运算完成后,通过读寄存器存储模块将结果送到总线上;

寄存器存储模块主要负责算法输入、输出及中间变量的寄存。

进一步地,所述模运算模块中,根据顶层控制模块的控制信号,若顶层仅需要模运算结果,则将结果写入寄存器存储模块中等待输出;若模运算由点运算模块调用,则将结果存入寄存器存储模块同时返回给点运算模块。

进一步地,所述ECC椭圆曲线抗攻击的硬件架构的工作过程包括:

步骤1,顶层接口模块从总线上取出控制信号及输入数据,送给顶层控制模块;

步骤2,顶层控制模块根据控制信号判断需要执行的操作,若执行点乘,则根据所述算法按下述步骤执行:

首先,调用点运算中的预处理过程完成初始化;

其次,顶层控制模块根据算法的步骤(5)的流程调用点加和倍点操作,完成点乘运算;

随后,调用错误检测运算检验点Q是否在椭圆曲线上;

最后,顶层控制模块将点Q转换到仿射坐标点并存储计算结果;

步骤3,顶层接口模块读寄存器存储模块,将结果输出到总线上。

与现有技术相比,本发明具有以下技术特点:

1.使用随机掩码对ECC点乘中的密钥k和点P进行了防护,相对于冗余操作等其他方法,本发明提出的方案资源开销更少、计算速度损失更小,能在保证性能与硬件实现成本的前提下,抵御诸如SPA、DPA、CPA等攻击。

2.使用基于椭圆曲线的错误检测来抵御诸如DFA等故障攻击,该方案可通过配置寄存器来实现任意位置的检测,具有较高的可配置性与准确性,且资源开销较小。

3.提出了抗攻击的ECC并行多点乘算法,使用一次预计算和一次点乘实现了两次点乘操作,大幅降低了面积和速度额外开销,在保证安全性的同时提升了整体性能。

附图说明

图1为本发明ECC椭圆曲线抗攻击的硬件架构示意图。

具体实施方式

ECC算法的核心为点乘运算,其不仅实现复杂、资源开销大,还由于易泄露密钥关键信息而成为攻击者的首要攻击点,因此,本专利主要对点乘进行设计。

传统的ECC点乘算法如算法1所示,根据密钥k的每一位进行逐位计算。其中,2Q为倍点运算,Q+P为点加运算。当密钥k的当前位为0时,只执行倍点运算;而当ki为1时,执行倍点和点加运算。从算法1可以看出,每轮执行的操作与密钥ki的值有关。当其为1时,多执行一次点加,因此功耗较大;反之为0时,功耗较小。于是,攻击者可以通过分析安全设备运算过程中的功耗大小来判断密钥的值,从而破解加密信息。此外,若攻击者在运算过程中引入一个错误,则该错误会随计算传播至最终结果,通过建立错误结果、正确结果与错误之间的关系式,即可解出密钥的关键信息。

本发明基于随机化和错误检测的思想,从三个角度入手,对算法全过程进行抗攻击组合设计。

(1)引入随机数r,对输入密钥k进行随机掩码。令k=(k+r)-r,于是在点乘时有:kP=(k+r)P–rP=kP。掩码后的最终计算结果相同,但密钥在运算过程中始终有随机成分,功耗可被有效打乱,攻击者无法通过功耗大小对密钥的每一位进行正确区分。

(2)引入随机数z,将输入点投影至雅可比坐标,并对该点坐标进行随机化(xz2,yz3,z)。通过坐标的随机化,点P在运算过程中也被赋予了随机成分,从而进一步降低了功耗与数据的相关性,增强了算法的安全性。

(3)检测Q点是否在椭圆曲线上。由于点乘运算基于椭圆曲线,因此计算中的任意点都应当满足椭圆曲线方程。当攻击者注入错误时,攻击点的坐标会发生改变,从而偏离椭圆曲线。因此,可通过计算椭圆曲线方程来判断是否受到攻击,若不满足方程,则返回错误信号,并中断计算。该检测可在任意位置进行,可通过配置控制寄存器来选择检测位置。

然而,在(1)的抗攻击方案中,由于对密钥进行了拆分,需要分别执行两次点乘运算,而点乘的硬件开销十分庞大,若并行两个点乘模块则面积翻倍,若串行先后执行两次点乘,则面积无额外开销但运算速度大幅降低。

针对上述问题,本发明根据预计算的思想,设计了抗攻击的ECC并行多点乘算法,如算法2所示。由于在点乘中,每一位k+r和r的值有且仅有4种组合,即11、10、01、00四种情况,相对应的,分别执行2/1/1/0次点加操作,因此可以预计算两次点加(算法2中的第4步),之后通过判断k+r和r的组合情况,从而实现只用一次点乘完成整个运算。

其中,Fq表示有限域,E表示椭圆曲线,ri表示第i次产生的随机数r,ki表示密钥k中的第i位密钥。

该算法可以在抵御SPA、DPA、CPA、DFA等攻击的同时,兼顾硬件实现的性能要求,面积增幅与速度损失极小,且原理简单明了,无需复杂的其他相关算法配合,易于RTL实现。

基于上述抗攻击的点乘算法,本发明设计了如图1所示的ECC抗攻击硬件架构。实现ECC点乘的硬件模块主要有模运算模块、点运算模块、顶层控制模块、顶层接口模块以及寄存器存储模块。其中:

模运算模块包括模加子模块、模减子模块、模乘子模块、模逆子模块,用于接收顶层接口模块和点运算模块发来的数据,完成相应的底层模加、模减、模乘、模逆运算。根据控制信号,若顶层仅需要模运算结果,则将结果写入寄存器中等待输出;若模运算由点运算模块调用,则将结果存入寄存器同时返回给点运算模块。

点运算模块为本发明的核心运算模块,包括倍点子模块、点加子模块、预处理子模块、错误检测子模块,用于接收顶层控制模块的模式选择信号后,完成相应的点加、倍点、预处理和错误检测运算。若顶层仅执行点加或倍点,则将结果写入寄存器中等待输出;若点运算模块由顶层点乘调用,则将结果存入寄存器同时返回给顶层控制模块。其中,预处理的过程为算法2的步骤(1)到步骤(4),其结果用作点加和倍点的输入;若仅执行点加或倍点运算,则通过直接调用点加子模块或倍点子模块实现;若是点乘运算则会继续进行步骤(5)到步骤(8),将步骤(4)的结果作为步骤(5)的输入,其结果Q将作为错误检测的过程,即抗攻击的ECC并行多点乘算法的步骤(6)的输入,根据椭圆曲线方程,将计算得到的点Q带入方程,以验证点Q是否在椭圆曲线上,若该点不在曲线上,则直接报错,反之将点Q作为抗攻击的ECC并行多点乘算法的步骤(7)的输入,进行坐标仿射,仿射后的坐标将通过步骤(8)返回给顶层控制模块。

顶层控制模块为本设计算法方案的顶层,负责接收接口控制信号与数据,调度点运算和模运算模块的执行,其输出存放在寄存器存储模块中。当进行点乘运算时,其根据算法2的流程调用点运算的各个子模块按顺序完成相应的操作,当仅需执行某一个运算时,例如点加、倍点、模加、模乘等,则仅调用对应的子模块。

顶层接口模块负责适配各类总线协议,是整个算法架构入口和出口。其将总线控制信号与数据读入,传给顶层控制模块并写入寄存器;整体运算完成后,通过读寄存器将结果送到总线上。

寄存器存储模块主要负责算法输入、输出及中间变量的寄存。

基于上述硬件架构,本发明的工作过程如下:

步骤1,顶层接口模块从总线上取出控制信号及输入数据,送给顶层控制模块;

步骤2,顶层控制模块根据控制信号判断需要执行的操作,若执行点乘,则根据算法2按下述步骤执行。

步骤3,首先,调用点运算中的预处理模块完成初始化;

步骤4,其次,顶层控制模块根据算法2步骤5的流程调用点加和倍点模块,完成点乘运算;

步骤5,随后,调用错误检测模块检验点Q是否在椭圆曲线上;

步骤6,最后,顶层控制模块将点Q转换到仿射坐标点并存储计算结果;

步骤7,顶层接口模块读寄存器,将结果输出到总线上。

本发明使用随机掩码对ECC点乘中的密钥k和点P进行功耗攻击的防护,使得点乘运算的全过程都存在随机变化,从而大幅降低了功耗与数据的相关性;本发明使用基于椭圆曲线的错误检测对点乘运算进行故障攻击防护,该方法的硬件开销较小,便于实现,并支持在任意位置检测,灵活性高,可配置性强;本发明提出抗攻击的ECC并行多点乘算法,可将多次点乘转化为预计算和一次点乘,从而大幅降低了抗攻击方法的面积和速度开销,优化了整体性能。

以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种密钥管理方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!