掌桥专利:专业的专利平台
掌桥专利
首页

一种抗SPA攻击的高性能ECDSA系统点乘计算方法及点乘架构

文献发布时间:2024-04-18 19:58:53


一种抗SPA攻击的高性能ECDSA系统点乘计算方法及点乘架构

技术领域

本申请涉及密码学技术领域,尤其涉及一种抗SPA攻击的高性能ECDSA系统点乘计算方法及点乘架构。

背景技术

ECC椭圆曲线密码系统凭借其更小的存储空间,更低的传输带宽要求以及更短的密钥长度成为目前使用最广泛的公钥密码系统之一。与RSA密码系统相同,都需要进行复杂的计算来保证其安全性,但ECC算法能够在更少的资源消耗前提下提供相同级别的加密强度。随着用户对于密码系统的需求不断提高,高性能以及高安全性成为ECC密码系统研究的重点。

ECC密码系统具有非常严格的层级结构,自顶向下可以分为三个计算层级:协议层、点运算层和模运算层。点运算层是核心计算层级,其核心点乘计算需要根据输入数据循环调用点加计算和倍点计算,计算时间超过总计算时间的90%;点加和倍点计算过程数据存在明显的前后关系,数据之间依赖较大,计算并行度较低,因此,实现高性能ECC密码系统的关键在于提高点乘计算的计算速度以及提高点加和倍点计算的并行度。

在提高ECC密码系统计算效率的同时,计算过程是否安全也是研究者的重要研究方向。简单功耗攻击SPA(Simple PowerAttack)是针对ECDSA数字签名系统攻击效率最高的一种攻击方式;SPA攻击是通过分析计算过程中点加和倍点计算的功耗差,从而暴露点乘计算中常数k的二进制分布情况,进而影响整个ECDSA系统的安全性能。对于ECDSA密码系统的设计中,针对SPA攻击的抵御措施是十分重要的。

发明内容

本申请实施例的目的是提供一种抗SPA攻击的高性能ECDSA系统点乘计算方法及点乘架构,以解决相关技术中存在的计算效率低,并行度低,安全性能差等技术问题。

根据本申请实施例的第一方面,提供一种抗SPA攻击的高性能ECDSA点乘计算方法,所述ECDSA包括数字签名系统和数字签名验证系统,包括:

根据用户指令确定点乘计算类型,若执行数字签名操作,则调用执行固定点点乘器,否则调用执行随机点点乘器;所述固定点点乘器应用于ECDSA数字签名系统;所述随机点点乘器应用于ECDSA数字签名验证系统;

其中调用执行固定点点乘器包括:获取常数k以及基点G,预计算基点G的部分倍点结果,将基点G的预计算倍点结果从直角坐标系转化至加重射影坐标系下;对常数k进行NAF编码,使用二进制点乘算法,根据编码后的NAF(k)序列进行固定点点乘计算P=kG;

其中调用执行随机点点乘器包括:获取常数u以及随机公钥Q,将随机公钥Q的直角坐标转化至加重射影坐标系下;使用蒙哥马利阶梯点乘算法,根据常数u进行随机点点乘计算P=uQ;

点乘计算结束后将加重射影坐标系下的点坐标转化回直角坐标系下并输出点乘计算结果。

根据本申请实施例的第二方面,提供一种抗SPA攻击的高性能ECDSA系统点乘计算装置,所述ECDSA系统包括数字签名系统和数字签名验证系统,包括:

点乘控制模块,用于根据用户指令确定点乘计算类型,若执行数字签名操作,则调用执行固定点点乘器,否则调用执行随机点点乘器;所述固定点点乘器应用于ECDSA数字签名系统;所述随机点点乘器应用于ECDSA数字签名验证系统;

其中调用执行固定点点乘器包括:获取常数k以及基点G,预计算基点G的部分倍点结果,将基点G的预计算倍点结果从直角坐标系转化至加重射影坐标系下;对常数k进行NAF编码,使用二进制点乘算法,根据编码后的NAF(k)序列进行固定点点乘计算P=kG;

其中调用执行随机点点乘器包括:获取常数u以及随机公钥Q,将随机公钥Q的直角坐标转化至加重射影坐标系下;使用蒙哥马利阶梯点乘算法,根据常数u进行随机点点乘计算P=uQ;

坐标转化模块,用于点乘计算结束后将加重射影坐标系下的点坐标转化回直角坐标系下并输出点乘计算结果。

根据本申请实施例的第三方面,提供一种电子设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的方法。

本申请的实施例提供的技术方案可以包括以下有益效果:

由以上技术方案可知,本申请采用了固定点和随机点分离的手段对ECDSA的点乘计算及进行了设计,分别应用在ECDSA数字签名系统中和数字签名验证系统中;采用了预计算的方式,克服了ECDSA算法硬件实现过程中的计算效率低和并行度低的技术问题;采用了虚拟操作以及蒙哥马利阶梯算法,克服了常规ECDSA算法无法抵御SPA攻击的技术问题;采用了加重射影坐标系下的高并行度的点加和倍点计算架构,减少了计算过程中点加计算和倍点计算的最大路径延时,进一步降低ECDSA点乘计算的计算时间;本申请的ECDSA点乘计算方法及架构具有较低的计算复杂度和较高的并行度,能够完全抵御对ECDSA算法进行的SPA攻击;

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的一种抗SPA攻击的高性能ECDSA点乘计算方法流程图。

图2为本申请实施例提供的NAF编码器实现方法流程图。

图3为本申请实施例提供的固定点点乘器计算流程图。

图4为本申请实施例提供的随机点点乘器计算流程图。

图5为本申请实施例提供的固定点点乘器硬件电路图。

图6为本申请实施例提供的随机点点乘器硬件电路图。

图7为本申请实施例提供的并行化倍点计算架构实现方法示意图。

图8为本申请实施例提供的并行化点加计算架构实现方法示意图。

具体实施方式

本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。

ECDSA系统包括数字签名系统和数字签名验证系统,数字签名系统中的点乘计算为对基点G的固定点点乘P=kG,数字签名验证系统中的点乘计算主要为随机公钥Q的随机点点乘P=uQ。

本申请实施例提供了一种抗SPA攻击的高性能ECDSA系统点乘计算方法,如图1所示,该方法包括:

步骤1、根据用户指令确定点乘计算类型,若执行数字签名操作,则调用执行固定点点乘器,否则调用执行随机点点乘器;所述固定点点乘器应用于ECDSA数字签名系统;所述随机点点乘器应用于ECDSA数字签名验证系统;

其中调用执行固定点点乘器包括:获取常数k以及基点G,预计算基点G的部分倍点结果,将基点G的预计算倍点结果从直角坐标系转化至加重射影坐标系下;对常数k进行NAF编码,使用二进制点乘算法,根据编码后的NAF(k)序列进行固定点点乘计算P=kG;

其中调用执行随机点点乘器包括:获取常数u以及随机公钥Q,将随机公钥Q的直角坐标转化至加重射影坐标系下;使用蒙哥马利阶梯点乘算法,根据常数u进行随机点点乘计算P=uQ;

步骤2、点乘计算结束后将加重射影坐标系下的点坐标转化回直角坐标系下并输出点乘计算结果。

所述固定点点乘器获取常数k以及基点G,预计算基点G的部分倍点结果,将基点G的预计算倍点结果从直角坐标系转化至加重射影坐标系下,具体包括:

从用户端获取常数k,k为用户独享的私钥;

预计算基点G的2的整数幂倍点坐标在直角坐标系下的坐标值,存入预计算表中,等待进行点乘计算;

将基点G的预计算倍点结果从直角坐标系转化至加重射影坐标系下,映射关系为(x,y)→(X/Z

所述点乘计算中的常数k的位宽决定了倍点的计算次数,常数k中“1”的个数决定了点加的计算次数;对固定ECDSA系统,常数k的最大位宽是固定的,在实际应用中,通过一些编码方式对常数进行预处理,减少常数中“1”的汉明占比,减少点乘计算中的点加计算次数,达到提高点乘计算效率的效果;

所述NAF编码算法的核心思想是对常数k中连续非“0”序列进行编码,目的是消除序列中连续的“1”,经过编码后序列中元素组成由{0,1}变为{0,1,-1};在NAF编码过程中,需要对输入数据不断进行右移操作,并检测当前序列的最低位是否为1,若最低位为1,则k+1或k-1必定能被4整除,从而保证k

本申请实施例提供了NAF编码器实现方法流程图,如图2所示,对常数k进行NAF编码,包括:

步骤A1、令i=0并读取常数k,i为循环次数;

步骤A2、若k为奇数,计算k

步骤A3、计算k=k-k

步骤A4、计算k=k/2;

步骤A5、判断k是否为0,若不为0则循环执行步骤A2至步骤A4,否则编码结束,返回NAF(k)={k

所述点乘计算在直角坐标系下,需要循环调用点加和倍点计算,每次点加和倍点计算都需要进行一次模逆运算,对整体算法的计算效率有很大的影响;为避免模逆运算对整体算法效率的影响,将直角坐标系下的点坐标转化到计算复杂度相对较低的加重射影坐标系进行计算;

所述二进制点乘算法的计算过程与计算常数k的相关性较大,且倍点计算与点加计算的计算时间以及动态计算功耗相差较大,容易收到SPA攻击,利用了计算过程中点加和倍点计算的时间以及功耗的差异,判断出点加计算的具体位置,从而分析出常数k的二进制分布;

本申请提供一种抗SPA攻击的高性能固定点点乘计算方法,克服所述固定点点乘计算P=kG计算效率低和安全性能差的问题。

所述固定点点乘器使用二进制点乘算法以及NAF编码,增加预计算表用于存放固定点G的2的整数幂倍点坐标在直角坐标系下的坐标值,即G,2G,...2

为保障所述固定点点乘器的安全性能,本申请在计算过程中引入了虚拟变量进行功耗平衡,来避免k=0时产生的零值功耗攻击。

其中,固定点点乘使用二进制点乘算法,根据编码后的NAF(k)序列进行固定点点乘计算P=kG,如图3所示,具体步骤包括:

步骤B1、对点乘计算kG中的常数k进行NAF编码;

步骤B2、由低至高扫描四个编码后的序列NAF(k)数据,将数据分为两路分别处理,根据扫描到的数据排列从预计算表中读取对应的点坐标,并将读取的点坐标由直角坐标系转化至加重射影坐标系;

步骤B3、每路计算过程中包括实际变量P,虚拟变量P’以及基点G,根据收到的两个NAF(k)确定相应的点计算操作,具体包括:

若两个NAF(k)全为0,计算P’=P’+G;

若两个NAF(k)中非0位为正,计算P=P+2

若两个NAF(k)中非0位为负,计算P=P-2

步骤B4、NAF(k)全部扫描结束后结束循环,将两路的点加计算结果P

所述随机点点乘器获取常数u以及随机公钥Q,将随机公钥Q的直角坐标转化至加重射影坐标系下,具体的:

从用户端获取常数u,u为数字签名结果进一步计算的结果;

从用户端获取随机公钥Q,Q为数字签名点乘计算后的结果;

将随机公钥Q的直角坐标转化至加重射影坐标系下,映射关系为(x,y)→(X/Z

所述随机点点乘计算中参与计算的点无法提前获取,无法使用预计算表的方法省略倍点计算;在安全性能方面,若使用虚拟变量进行功耗平衡,随机点点乘的计算时间将被固定为256PD+256PA,将导致计算效率大幅降低;

为克服所述随机点点乘计算P=kQ计算效率低和安全性能差的问题,本申请提供了一种抗SPA攻击的高性能随机点点乘器设计方法,使用蒙哥马利阶梯点乘算法进行设计,使用Q

本申请实施例提供了一种随机点点乘器计算流程图如图4所示,具体步骤包括:

步骤C1、对随机点Q进行一次倍点计算得到初始点2Q,并使用坐标Z=1将直角坐标系下的点坐标Q和2Q映射至加重射影坐标系;

步骤C2、对Q

步骤C3、由高到低对常数u的二进制编码进行循环扫描,每次循环根据扫描到的二进制数u

步骤C4、若u

步骤C5、常数u扫描完成,将变量Q

本申请实施例提供了一种抗SPA攻击的高性能ECDSA系统点乘架构,其特征在于,包括固定点点乘器和随机点点乘器;所述固定点点乘器包括:两个点加器,一个NAF编码模块,一个预计算表以及一个固定点点乘控制器;所述随机点点乘器包括:一个点加器,一个倍点器以及一个随机点点乘控制器;

本申请实施例提供了一种固定点点乘器硬件电路图,如图5所示,基础模块包括:两个点加器,一个NAF编码模块,一个预计算表,一个固定点点乘控制器,具体的:

所述固定点点乘器使用双路并行架构,用于计算ECDSA数字签名系统中对于常数k和基点G的固定点点乘计算;

所述两个点加器根据固定点点乘控制器传输的数据进行对应的点加操作,包括:若每次循环中扫描到的两个NAF(k)数据都为0,则对虚拟变量P’进行点加计算P’=P’+G;若两个NAF(k)数据中非0位为正,则对实际变量P进行点加计算P=P+2

所述NAF编码模块用于对参与点乘计算的常数k进行编码;

所述预计算表用于存放基点G的2的整数幂倍点坐标在直角坐标系下的坐标值,即G,2G,...2

所述固定点点乘控制器用于控制循环中的计算过程以及数据交换,每轮循环中分为两组同时扫描NAF(k)序列中的两个数据,根据每组中两个数据是否全为“0”判断该路点加器的操作模式,并根据非“0”位在NAF(k)序列中的位置i从所述预计算表中读取对应的预计算倍点结果;两路点加计算P

本申请实施例提供了一种随机点点乘器硬件电路图,如图6所示,基础模块包括:一个倍点计算模块,一个点加计算模块,一个随机点点乘控制器,具体的:

所述随机点点乘器使用点加器和倍点器并行的架构,用于计算ECDSA数字签名验证系统中对于常数u和随机公钥Q的随机点点乘计算;

所述倍点器和点加器为随机点点乘器的核心计算模块,根据扫描到的u的二进制编码,对Q

所述随机点点乘控制器用于控制循环中的计算过程以及数据交换,先进行一次对随机公钥Q的倍点计算,再对计算过程中的Q

所述随机点点乘器硬件电路运行过程中,每次循环中都同时执行一次点加和倍点计算,计算动态功耗不随u改变,能够满足抵御SPA攻击的要求;计算过程中,将点加和倍点计算的串行交替执行转化为点加和倍点分别同时执行,计算时间固定为PD+255PA,提高随机点点乘计算并行度的同时保证随机点点乘计算的计算效率。

由于计算过程中数据的先后关系依赖较大,部分模乘计算必须等待前一步的计算结果;为进一步提高点乘计算的并行度和计算效率,本申请实施例提供了一种并行化倍点和点加计算架构,具体的:

对于加重射影坐标系下的点P(X

所述

本申请实施例提供了一种并行化倍点计算实现方法示意图,实现方法中根据加重射影坐标系下的倍点计算公式将计算过程进行层级划分,每个计算层级仅执行模乘计算或模加减计算,如图7所示,包括:

步骤D1、模乘计算W

步骤D2、模加减计算W

步骤D3、模加减计算A=W

步骤D4、模乘计算W

步骤D5、模加减计算X

步骤D6、模加减计算Z

步骤D7、模乘计算W

步骤D8、模加减计算Y

步骤D9、倍点计算结束,返回倍点计算结果。

所述W

对于加重射影坐标系下的两个不同点P(X

所述

本申请实施例提供了一种并行化点加计算实现方法示意图,实现方法中根据加重射影坐标系下的点加计算公式计算过程进行层级划分,每个计算层级仅执行模乘计算或模加减计算,如图8所示,包括:

步骤E1、模乘计算

步骤E2、模乘计算A=W

步骤E3、模加减计算F=C-D,E=A-B;

步骤E4、模乘计算W

步骤E5、模乘计算Z

步骤E6、模加减计算W

步骤E7、模加减计算X

步骤E8、模乘计算W

步骤E9、模加减计算W

步骤E10、模加减计算Y

步骤E11、倍点计算结束,返回倍点计算结果。

所述W

与前述的抗SPA攻击的高性能ECDSA系统点乘计算方法的实施例相对应,本申请还提供了抗SPA攻击的高性能ECDSA系统点乘计算装置的实施例。

本申请实施例提供了一种抗SPA攻击的高性能ECDSA系统点乘计算装置,包括:

点乘控制模块,用于根据用户指令确定点乘计算类型,若执行数字签名操作,则调用执行固定点点乘器,否则调用执行随机点点乘器;所述固定点点乘器应用于ECDSA数字签名系统;所述随机点点乘器应用于ECDSA数字签名验证系统;

其中调用执行固定点点乘器包括:获取常数k以及基点G,预计算基点G的部分倍点结果,将基点G的预计算倍点结果从直角坐标系转化至加重射影坐标系下;对常数k进行NAF编码,使用二进制点乘算法,根据编码后的NAF(k)序列进行固定点点乘计算P=kG;

其中调用执行随机点点乘器包括:获取常数u以及随机公钥Q,将随机公钥Q的直角坐标转化至加重射影坐标系下;使用蒙哥马利阶梯点乘算法,根据常数u进行随机点点乘计算P=uQ;

坐标转化模块,用于点乘计算结束后将加重射影坐标系下的点坐标转化回直角坐标系下并输出点乘计算结果。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

相应的,本申请还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的抗SPA攻击的高性能ECDSA系统点乘计算方法。

相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述的抗SPA攻击的高性能ECDSA系统点乘计算方法。

综上,本申请的总体设计思路是:

根据ECDSA算法对点乘计算的需求,将点乘计算划分为固定点点乘计算共和随机点点乘计算,并将直角坐标系下的点坐标转化至计算复杂度较低的加重射影坐标系下;分析加重射影坐标系下点加和倍点计算的计算过程,采用并行化的设计方法,确定了一种路径延时最小的并行组合,并使用在固定点点乘和随机点点乘的架构中;固定点点乘器使用了二进制NAF点乘算法,使用预计算表省略了点乘计算中的全部倍点计算,引入虚拟变量克服了二进制NAF点乘算法无法抵御SPA攻击的问题,同时使用双路并行的策略进一步提高固定点点乘计算的计算效率;为保证安全高效的随机点点乘计算,使用蒙哥马利阶梯点乘算法进行设计,计算过程中每轮循环中都进行一次点加和倍点计算,同时点加和倍点计算由交替执行转变为并行执行,计算过程中动态功耗不随常数k改变,能够有效抵御SPA攻击。

本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

技术分类

06120116506720