CN118057297A - 椭圆曲线加密算法的点乘计算电路、方法、设备及介质 - Google Patents

椭圆曲线加密算法的点乘计算电路、方法、设备及介质 Download PDF

Info

Publication number
CN118057297A
CN118057297A CN202211448005.1A CN202211448005A CN118057297A CN 118057297 A CN118057297 A CN 118057297A CN 202211448005 A CN202211448005 A CN 202211448005A CN 118057297 A CN118057297 A CN 118057297A
Authority
CN
China
Prior art keywords
point
calculated amount
dot
data
calculated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211448005.1A
Other languages
English (en)
Inventor
马兵
王敏
虞少平
陈阳光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Geoforcechip Technology Co Ltd
Original Assignee
Zhejiang Geoforcechip Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Geoforcechip Technology Co Ltd filed Critical Zhejiang Geoforcechip Technology Co Ltd
Priority to CN202211448005.1A priority Critical patent/CN118057297A/zh
Publication of CN118057297A publication Critical patent/CN118057297A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本申请提出一种椭圆曲线加密算法的点乘计算电路、方法、设备及介质,该点乘计算电路应用于单片机中,包括:存储器,用于存储待运算数据;待运算数据包括标量k和固定点P的坐标数据;数据调用模块,基于目标待运算数据调取预设计算表,确定目标待运算数据对应的第一预计算量和第二预计算量;第一预计算量和第二预计算量均为标量k相关的二进制串与固定点P的点乘结果;点乘器,分别与存储器和数据调用模块连接,接收到点乘计算指令后,获取目标待运算数据、第一预计算量和第二预计算量,并基于目标待运算数据、第一预计算量及第二预计算量进行点乘运算。本申请的点乘方法的运算量比传统的comb算法的运算量明显降低,能够有效提高点乘运算的速度。

Description

椭圆曲线加密算法的点乘计算电路、方法、设备及介质
技术领域
本申请属于数据处理技术领域,具体涉及一种椭圆曲线加密算法的点乘计算电路、方法、设备及介质。
背景技术
现在人们越来越重视数据的安全性,尤其是在数据传输过程中的安全性。所以,在进行数据传输时,通常会采用加密算法对数据个加密。其中,椭圆曲线加密算法(ECC)是一个安全且实用的公钥密码算法,既能用于数据的加密也能用于数字签名,是目前信息安全领域中热门的公钥密码算法。对于给定的安全加密级别,ECC比传统的RSA公钥加密算法有更小的参数。对于更高的安全性级别,参数大小的差异更加明显。更小的参数带来的好处是,计算速度快、密钥更短和密钥证书更小。
点乘运算是椭圆曲线加密算法中的一个核心运算步骤,也是最耗时的一个运算步骤。虽然现在已经有人研究出了快速进行点乘运算的方法,例如梳状算法(Comb Method),其是椭圆曲线点乘运算中常使用的一种快速算法。但是,现有的comb算法在主循环中点加和倍点的运算量近似相等,算法的运算量还是较大,使得椭圆曲线加密算法在实现过程中产生较高的功耗,影响整体运算速度。
发明内容
本申请提出一种椭圆曲线加密算法的点乘计算电路、方法、设备及介质,该点乘计算电路和方法比传统的comb算法的运算量明显减少,能够有效提高点乘运算的速度。
本申请第一方面实施例提出了一种椭圆曲线加密算法的点乘计算电路,应用于单片机中,所述点乘计算电路包括:
存储器,用于存储待运算数据;所述待运算数据至少包括标量k和固定点P的坐标数据;
数据调用模块,基于目标待运算数据调取预设计算表,确定所述目标待运算数据对应的第一预计算量和第二预计算量;所述第一预计算量和所述第二预计算量均为所述标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果;
点乘器,分别与所述存储器和所述数据调用模块连接,在接收到点乘计算指令后,从所述存储器获取目标待运算数据,从所述数据调用模块接口获取所述第一预计算量和所述第二预计算量,并基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算。
可选地,所述点乘器,具体用于:
基于当前的倍点结果、所述第一预计算量及所述第二预计算量,进行点加运算,得到当前的点加结果;
对当前的点加结果进行倍点运算,再次得到当前的倍点结果;
循环执行上述两个步骤,直至达到所述目标待运算数据中的预设循环次数。
可选地,所述存储器还存储无效数据,所述点乘器在基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算之前,和/或之后,还基于所述无效数据,及所述无效数据对应的第一预计算量,和/或所述无效数据对应的对应第二预计算量,进行相应次数的无效倍点运算和无效点加运算。
可选地,所述数据调用模块包括晶体管构成的多个子电路。
本申请第二方面的实施例提供了一种椭圆曲线加密算法的点乘计算方法,通过第一方面所述点乘计算电路实现,所述方法包括:
点乘器接收到点乘计算指令后,从存储器获取目标待运算数据,并将所述目标待运算数据发送至数据调用模块;所述待运算数据至少包括标量k和固定点P的坐标数据;
所述数据调用模块基于所述目标待运算数据查询预设计算表,获取所述待运算数据对应的第一预计算量和第二预计算量;所述第一预计算量和所述第二预计算量均为所述标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果;
所述点乘器基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算。
可选地,所述基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算,包括:
基于当前的倍点结果、所述第一预计算量及所述第二预计算量,进行点加运算,得到当前的点加结果;
对当前的点加结果进行倍点运算,再次得到当前的倍点结果;
循环执行上述两个步骤,直至达到所述目标待运算数据中的预设循环次数。
可选地,所述基于当前的倍点结果、所述第一预计算量及所述第二预计算量,进行点加运算,得到当前的点加结果,包括:
确定所述第一预计算量对应的第一二进制串,以及所述第二预计算量对应的第二二进制串;
确定所述第一二进制串和所述第二二进制串是否等于0;
若至少有一个二进制串不等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行相应次数的点加运算。
可选地,所述
若至少有一个二进制串不等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行相应次数的点加运算,包括:
若所述第一二进制串和所述第二二进制串均不等于0,则基于所述第一预计算量和所述第二预计算量,与当前的倍点结果进行两次点加运算;
若所述第一二进制串和所述第二二进制串仅有一个等于0,则基于不等于0的二进制串对应的预计算量,与与当前的倍点结果进行一次点加运算。
可选地,所述进行倍点运算包括:
在雅可比投影坐标下,利用雅可比坐标形式的倍点公式进行倍点运算。
可选地,所述进行点加运算包括:
在雅可比和仿射混合坐标下,利用雅可比-仿射混合坐标形式的点加公式,进行点加运算。
可选地,所述点乘器基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算之前,和/或之后,还执行如下的处理步骤:
基于预设的无效数据和/或所述无效数据对应的第一预计算量,和/或所述无效数据对应的对应第二预计算量,进行相应次数的无效倍点运算和无效点加运算。
可选地,所述确定所述第一二进制串和所述第二二进制串是否等于0之后,还包括:
若所述第一二进制串或所述第二二进制串等于0,则基于预设的无效数据及所述无效数据对应的第一预计算量,或所述无效数据对应的对应第二预计算量,进行无效点加运算。
本申请第三方面的实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储模块中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的步骤。
本申请第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现如第一方面所述的方法。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供的椭圆曲线加密算法的点乘计算电路,每次进行点乘计算的主循环过程,可以通过数据调用模块直接查找和调用预计算好的该两个预计算量,然后点乘器可基于该两个预计算量进行倍点运算和点加运算即可。由于本申请设置了两个预计算量,可直接调用,从而可以降低点乘计算的功耗。且可通过合理设置该两个预计算量,使得在主循环过程中,两个预计算量与P点的倍点运算和点加运算,可以应用合并和/或拆分等计算公式,从而使得该点乘计算方法主循环过程中的倍点运算的运算量,比传统的comb算法主循环过程中的倍点运算的运算量明显减少,故而可以大大提高点乘运算的计算速度。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
在附图中:
图1示出了现有技术中椭圆曲线加密算法的点乘计算主循环的流程示意图;
图2示出了本申请一实施例提供的一种椭圆曲线加密算法的点乘计算电路的结构示意图;
图3示出了本申请一实施例提供的一种椭圆曲线加密算法的点乘计算方法的流程示意图;
图4示出了本申请一实施例提供的点乘计算主循环的流程示意图;
图5示出了本申请一实施例提供的另一种椭圆曲线加密算法的点乘计算方法的流程示意图;
图6示出了本申请一实施例所提供的一种电子设备的结构示意图;
图7示出了本申请一实施例所提供的一种存储介质的示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整地传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
发明人对现有相关技术进行研究发现,在椭圆曲线加密算法的点乘算法过程中,若点P是固定的,并且计算设备具有存储器可用,则可通过对某些数据进行预计算,来提高点乘kP的计算速度。其中,k为任意能够用二进制串来表示的标量值,每次进行点乘运算时随机生成,并在本次点乘运算中为定值。令是k的以2w为基的表达式,其中/>t表示标量k的二进制串长度(位数)。首先在k的二进制的左边填充dw-t个0,然后划分成w个二进制串,每个串有d位,并且使得k=Kw-1||...||K1||K0。将二进制串写为代表矩阵的行为:
在传统点乘算法中,基于标量k所有长度的二进制串,按照下面公式对点乘kP进行预计算。
[Kw-1,...,K1,K0]P=Kw-12(w-1)dP+...+K12dP+K0P
然后参照图1所示的主循环过程进行点乘计算,即对于i从d-1到0,重复执行Q=2Q步骤,以及步骤。但是,基于该传统点乘算法在主循环中,点加和倍点的运算量近似相等,使得点乘算法的运算量还是较大。
鉴于上述发现,本实施例提供了一种椭圆曲线加密算法的点乘计算电路和点乘计算方法,该点乘计算电路可应用于各种芯片中,例如但不限于应用在单片机中。执行该点乘计算方法之前,先基于标量k所有长度的二进制串,对点乘kP进行预计算。但与传统点乘计算过程不同的时,本申请基于标量k所有长度的二进制串,引入标量k相关的两个二进制串,并将该两个二进制串与P点的坐标数据经过点乘的结果作为预计算量。则点乘kP的主循环过程主要为基于该两个预计算量的点加运算和倍点运算。如此,本实施例在执行该点乘计算方法之前,先基于标量k所有长度的二进制串,对上述两个预计算量进行预计算,并保存(可以但不限于保存在存储器中),然后在执行该点乘计算方法时,每次进行主循环过程,可以直接查找和调用预计算好的该两个预计算,然后进行倍点运算和点加运算即可。由于本申请设置了两个预计算量,可直接调用,从而可以降低点乘计算的功耗。且可通过合理设置该两个预计算量,使得在主循环过程中,基于两个预计算量进行倍点运算和点加运算时,可以应用合并和/或拆分等计算公式,从而使得该点乘计算方法主循环过程中的倍点运算的运算量,比传统的comb算法主循环过程中的倍点运算的运算量明显减少,故而可以大大提高点乘运算的计算速度。
下面以在单片机上实现该点乘计算方法为例,对本申请进行举例说明。本实施例应用的单片机可以分为两个部分,即CPU(Central Processing Unit,中央处理器)和一系列外设,CPU和外设可通过总线连接。常用的外设如串口,定时器、寄存器等。CPU可以执行各种各样的指令,通过执行仿存类指令可配置外设的寄存器,达到控制外设工作的目的。也可以执行数学计算类指令,例如一些算法计算的过程,加法减法乘法除法,计算一个公式,都是通过数学计算类指令来完成的。
请参阅图2,为本实施例提供的椭圆曲线加密算法的点乘计算电路的结构示意图,如图2所示,该电路包括存储器、数据调用模块及点乘器。其中,存储器用于存储待运算数据。数据调用模块基于目标待运算数据调取预设计算表,确定目标待运算数据对应的第一预计算量和第二预计算量。点乘器分别与存储器和数据调用模块连接,在接收到点乘计算指令后,从存储器获取目标待运算数据,从数据调用模块接口获取第一预计算量和第二预计算量,并基于目标待运算数据、第一预计算量及第二预计算量进行点乘运算。
其中,待运算数据至少包括标量k和固定点P的坐标数据。第一预计算量和第二预计算量均为标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果。具体地,待运算数据即椭圆曲线加密算法中用于进行点乘运算的数据,可以为二进制串表示的任意数据,可存储在存储器中。该存储器可以集成在单片机的CPU中,可包括一个或多个,既能够存储待运算数据,也可以存储点乘计算过程中的中间数据,以及计算结果等。目标待运算数据可以为任意待运算数据,具体可通过点乘器获取的指令中确定。
本实施例提供的椭圆曲线加密算法的点乘计算电路,点乘器接收到点乘计算指令之后,可根据该指令获取目标待运算数据,并将该目标待运算数据发送给数据调用模块,数据调用模块可调取预设计算表,并根据接收到的目标待运算数据,确定目标待运算数据对应的第一预计算量和第二预计算量。然后,点乘器每次进行主循环过程时,便可以从数据调用模块接口获取第一预计算量和第二预计算量,并基于第一预计算量和第二预计算量,进行倍点运算和点加运算即可。由于本申请设置了两个预计算量,可直接调用,从而可以降低点乘计算的功耗。且可通过合理设置该两个预计算量,使得在主循环过程中,基于两个预计算量进行倍点运算和点加运算时,可以应用合并和/或拆分等计算公式,从而使得该点乘计算方法主循环过程中的倍点运算的运算量,比传统的comb算法主循环过程中的倍点运算的运算量明显减少,故而可以大大提高点乘运算的计算速度。
具体地,该点乘计算电路可以为数字电路,即以二进制作为基础的数字逻辑电路。其中,点乘器可理解为用于计算点积的乘法器,其可以包括控制部件和运算部件,控制部件接收到运算指令后,基于该运算指令控制运算部件完成所要执行的运算动作。数据调用模块可以包括晶体管构成的多个子电路,该子电路包括但不限于各种逻辑电路,可以实时接收点乘器发送的数据信号。例如,当接收到的信号使某个子电路导通(或断开)时,可触发数据调用模块调取预设计算表,并根据具体导通的子电路确定所要查找的预计算量,以及该预计算量是否为0等。
在一些实施方式中,点乘器,可具体用于:基于当前的倍点结果、第一预计算量及第二预计算量,进行点加运算,得到当前的点加结果;对当前的点加结果进行倍点运算,再次得到当前的倍点结果;循环执行上述两个步骤,直至达到目标待运算数据中的预设循环次数。
其中,预设循环次数,可理解为目标待运算数据的一部分,其可以预设在存储器中,点乘器可从存储器获得,即每次点乘运算具有相应的循环次数,不同的点乘运算的循环次数可以相同也可以不同。另外,预设循环次数也可以直接预设在点乘器中,各点乘运算可基于相同的预设循环次数进行主循环计算。
对于本实施例中的点乘运算,可设置初始的Q等于0,则2Q还是等于0,故在主循环运算中,首次的倍点运算可忽略。对于首次的点加运算,可理解为首次点加运算的当前倍点结果为0,直接对第一预计算量和第二预计算量进行点加运算,得到当前的点加运算结果。然后再对当前的点加结果进行倍点运算,得到当前的倍点结果。然后,再对当前的倍点结果、第一预计算量及第二预计算量,进行点加运算,得到当前的点加结果。如此循环执行该倍点运算和点加运算,直至达到预设循环次数。该预设循环次数通常作为点乘算法的输入,可从上述目标待运算数据获取,即下述的e。
需要说明的是,这里及下述的“Q等于0”、“2Q还是等于0”以及“Q的初始值为0”等描述中的“0”,不是自然数0,而是群运算中的单位元,其可以指代无穷远点的坐标数据。
在另一些实施方式中,为了防止攻击者进行功耗攻击,可以在存储器中也存储一些无效数据,则点乘器在基于目标待运算数据、第一预计算量和第二预计算量进行点乘运算之前,和/或之后,还可基于预设的无效数据,及无效数据对应的第一预计算量,和/或无效数据对应的对应第二预计算量,进行相应次数的无效倍点运算和无效点加运算。
其中,预设的无效数据可以是与上述待运算数据格式相同的数据,只是与待运算数据属于不同的数据集。具体地,上述用于存储数据的存储器可以包括至少两个区域,一个区域存储有效数据,另一个区域存储无效数据,当进行上述无效点加运算时,可以从存储器中存储无效数据的区域获取无效数据进行冗余运算。无效倍点运算也称为伪倍点运算,无效点加运算也称为伪点加运算。且无效数据也有对应的二进制串(其也可以为0或不为0)和预计算量,基于无效运算进行冗余运算时,也是对当前的倍点结果和无效数据对应的不为0的二进制串的预计算量进行点加运算。
本实施例为了防止攻击者通过结构来分析二进制串的个数,在进行comb算法前进行一次伪倍点运算和两次伪点加运算,在comb算法完成后再进行一次伪倍点运算和两次伪点加运算。由于伪倍点运算的功耗特点与算法中倍点运算的功耗特点相同,伪点加运算的功耗特点与算法中点加运算的功耗特点相同,这样在功耗攻击时不能分析出此时进行的是否为有效的倍点运算和点加运算,进而保护了点乘算法的结构,攻击者不清楚二进制串的具体个数,从而更难获得参数k的信息。
可以理解的是,上述伪倍点和伪点加的运算次数只是本实施例的一种实施方式,本实施例并不以此为限,其可以有更多或更少次的伪点加运算和伪倍点运算。
基于上述椭圆曲线加密算法的点乘计算电路相同的构思,本实施例还提供了一种椭圆曲线加密算法的点乘计算方法,请参阅图3,为本实施例提供的椭圆曲线加密算法的点乘计算方法的流程示意图,如图3所示,该方法包括以下步骤:
步骤S1,点乘器接收到点乘计算指令后,从存储器获取目标待运算数据,并将目标待运算数据发送至数据调用模块。
其中,待运算数据至少包括标量k和固定点P的坐标数据。第一预计算量和第二预计算量均为标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果。具体地,待运算数据即椭圆曲线加密算法中用于进行点乘运算的数据,可以为二进制串表示的任意数据,可存储在存储器中。该存储器可以集成在单片机的CPU中,可包括一个或多个,既能够存储待运算数据,也可以存储点乘计算过程中的中间数据,以及计算结果等。目标待运算数据可以为任意待运算数据,具体可通过点乘器获取的指令中确定。进行点乘计算时,计算模块(或装置)可直接从存储器获取数据。该待运算数据可至少包括标量k和固定点P的坐标数据。具体地,标量k可以为任意能够用二进制串表示的标量。固定点P可以根据计算过程中使用的具体标准来确定,不同的标准可对应不同的固定点P,其坐标数据可以但不限于为雅可比投影坐标数据、雅可比-仿射混合坐标数据,及标准投影坐标数据等。
点乘器接收到点乘计算指令之后,可根据该指令获取目标待运算数据,并将该目标待运算数据发送给数据调用模块,数据调用模块可调取预设计算表,并根据接收到的目标待运算数据,确定目标待运算数据对应的第一预计算量和第二预计算量。
步骤S2,数据调用模块基于目标待运算数据查询预设计算表,获取待运算数据对应的第一预计算量和第二预计算量。
其中,第一预计算量和第二预计算量均为标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果。可以理解的是,本实施例不限定第一预计算量和第二预计算量的具体形式,只要调用第一预计算量和第二预计算量进行点乘计算时,能够减少倍点运算的运算量,从而降低功耗即可。
步骤S3,点乘器基于第一预计算量和第二预计算量,与固定点P的坐标数据进行点乘运算。
具体地,在进行点乘计算时,可以输入w,标量k=(kt-1,...,k0)2,以及固定点P的坐标数据,输出kP。其中,t为标量k的二进制串总长度,/>代表向上取整。可以先在k的二进制的左边填充dw-t个0,然后划分成w个二进制串,每个串有d位,并且使得k=Kw-1||...||K1||K0。将二进制串写为代表矩阵的行:
在本实施例中,对于所有长度的w二进制串[Kw-1,...,K1,K0],若需要,则用0填充k的左边,记k=Kw-1||...||K1||K0,其中每个Kj是长度为d二进制串。用表示Kj的第i位,则其中,/>是两个二进制串,/>和/>便可以为上述的两个预计算量。
然后,设置Q=kP,Q可以无穷大。然后参照图4所示的主循环流程,进行点乘计算的循环过程,即对于i从e-1到0,重复执行Q←2Q步骤,以及 步骤。最后,输出最终计算的Q。
需理解的是,上述两个预计算量和/>只是本实施例的较佳实施方式,本实施例并不以此为限,只要通过设置两个预计算量,使整体点乘运算的功耗降低即可。
在一些实施方式中,上述基于目标待运算数据、第一预计算量及第二预计算量进行点乘运算时,可以包括如下步骤:
步骤S31,基于当前的倍点结果、第一预计算量及第二预计算量,进行点加运算,得到当前的点加结果;
步骤S31,对当前的点加结果进行倍点运算,再次得到当前的倍点结果;
循环执行上述两个步骤,直至达到目标待运算数据中的预设循环次数。
如图4所示,在进行点乘运算的主循环过程时,可设置初始的Q等于0,则2Q还是等于0,故在主循环运算中,首次的倍点运算可忽略。对于首次的点加运算,可理解为首次点加运算的当前倍点结果为0,直接对第一预计算量和第二预计算量进行点加运算,得到当前的点加运算结果。然后再对当前的点加结果进行倍点运算,得到当前的倍点结果。然后,再对当前的倍点结果、第一预计算量及第二预计算量,进行点加运算,得到当前的点加结果。如此循环执行该倍点运算和点加运算,直至达到预设循环次数。该预设循环次数通常作为点乘算法的输入,可从上述目标待运算数据获取,即下述的e。
在一些实施例中,上述基于当前的倍点结果、第一预计算量及第二预计算量,进行点加运算,得到当前的点加结果时,可以先确定第一预计算量对应的第一二进制串,以及第二预计算量对应的第二二进制串。然后确定第一二进制串和第二二进制串是否等于0,若至少有一个二进制串不等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行相应次数的点加运算。
其中,第一二进制串和第二二进制串,可以理解为上述所有长度的w二进制串[Kw-1,...,K1,K0]的两个子二进制串,即将二进制串[Kw-1,...,K1,K0]拆分为和/>如此,在具体进行计算时,标量k(通常为随机数,但对于当前计算,k是定值)一定的情况下,对应的两个二进制串(/>和/>)也均为定值,故可以先确定该两个二进制串是否等于0,然后通过查表的方式,获取不等于0的二进制串对应的预计算量,并基于该预算量与固定点P的坐标数据进行相应次数的倍点运算和点加运算。如此,在二进制串等于0的情况下,可以直接省略相关计算,仅基于固定点P的坐标数据进行一次倍点运算即可。在二进制串不等于0的情况下,可通过查表的方式,确定二进制串对应的预计算量的值,然后基于该值进行点加运算,从而可以提高点乘计算的效率,进一步降低计算过程产生的功耗。
进一步地,上述若至少有一个二进制串不等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行相应次数的点加运算的步骤,可以包括以下处理:若第一二进制串和第二二进制串均不等于0,则基于第一预计算量和第二预计算量,与当前的倍点结果进行两次点加运算;若第一二进制串和第二二进制串仅有一个等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行一次点加运算。
本实施例基于上述两个预计算量,当有预计算量对应的二进制串等于0时,可以省略相应的点加运算和后续循环过程的倍点运算,从而可以有效提高计算速度,降低功耗。
具体地,可以将上述的步骤,拆解为:
基于上述计算过程可知,在且/>时,此算法要进行一次倍点两次点加的操作。在/>和/>其中有一个二进制串不为0的情况下,要进行一次倍点和一次点加的操作,在且/>的情况下,只进行一次倍点操作,使得该点乘计算方法实现的速度更快,效率高。其中,一次倍点即对当前的点加结果进行倍点运算(即2倍,由于Q的初始值为0,无需进行倍点运算,所以实际的倍点运算都是对当前最新的点加结果进行倍点运算),两次点加即对两个预计算量及当前的倍点结果进行点加运算,一次点加即一个预计算量与当前的倍点结果进行点加运算。
更进一步地,为了防止攻击者进行功耗攻击,上述确定第一二进制串和第二二进制串是否等于0之后,可以在第一二进制串或第二二进制串等于0的情况下,基于预设的无效数据及无效数据对应的第一预计算量,或无效数据对应的对应第二预计算量,进行无效点加运算。
其中,预设的无效数据可以是与上述待运算数据格式相同的数据,只是与待运算数据属于不同的数据集。具体地,上述用于存储数据的存储器可以包括至少两个区域,一个区域存储有效数据,另一个区域存储无效数据,当进行上述无效点加运算时,可以从存储器中存储无效数据的区域获取无效数据进行冗余运算。且无效数据也有对应的二进制串(其也可以为0或不为0)和预计算量,基于无效运算进行冗余运算时,也是对当前的倍点结果和无效数据对应的不为0的二进制串的预计算量进行点加运算。
具体地,无效点加运算也可以称为伪点加运算,可以在二进制串为0时进行一次伪点加运算。伪点加运算即无效点加运算,可以理解为冗余运算,即上述的步骤,可拆解为:
在另一些实施例中,为了进一步防止攻击者进行功耗攻击,点乘器基于目标待运算数据、第一预计算量及第二预计算量进行点乘运算之前,和/或之后,还可以基于预设的无效数据和/或无效数据对应的第一预计算量,和/或无效数据对应的对应第二预计算量,进行相应次数的无效倍点运算和无效点加运算。
这里预设的无效数据和上述无效数据类似,也可以是与上述待运算数据格式相同的数据,只是与待运算数据属于不同的数据集,当进行这里的无效点加运算和无效点加运算时,也可以从存储器中存储无效数据的区域获取无效数据进行冗余运算。其中,无效倍点运算也称为伪倍点运算。
本实施例为了防止攻击者通过结构来分析二进制串的个数,在进行comb算法前进行一次伪倍点运算和两次伪点加运算,在comb算法完成后再进行一次伪倍点运算和两次伪点加运算,整体运算如图5所示。由于伪倍点运算的功耗特点与算法中倍点运算的功耗特点相同,伪点加运算的功耗特点与算法中点加运算的功耗特点相同,这样在功耗攻击时不能分析出此时进行的是否为有效的倍点运算和点加运算,进而保护了点乘算法的结构,攻击者不清楚二进制串的具体个数,从而更难获得参数k的信息。
鉴于点乘运算是由点加运算和倍点运算构成的,所以点加和倍点的实现方式决定着点乘的运算速度,为了进一步提高该点乘运算方法的运算速度,可以在雅可比投影坐标下,利用雅可比坐标形式的倍点公式进行倍点运算。以及,在雅可比和仿射混合坐标下,利用雅可比-仿射混合坐标形式的点加公式,进行点加运算。如此,在使用两个二进制串(分别与两个预计算量对应)的comb算法完成点乘的基础上,使用雅可比投影坐标计算点乘中的倍点运算,使用雅克比-仿射混合坐标来完成点加运算,可以进一步缩短算法的运算时间。
具体地,有限域Fp上的椭圆曲线,其仿射坐标可表示为:y2=x3+ax+b,其中,a,b均∈Fp,并且满足(4a3+27b2)mod p≠0,椭圆曲线上的点集记为E(Fp)={(x,y)|x,y∈Fp且满足曲线方程y2=x3+ax+b}∪{0},其中,0是椭圆曲线的无穷远点。
椭圆曲线上点P的坐标表示为P=(x,y),其中x和y分别表示P点的x坐标和y坐标。在此椭圆曲线下的倍点运算规则为:令P1=(x1,y1)∈E(Fp),P≠-P,则2P1=(x3,y3),其中,
在此椭圆曲线下的点加运算的运算规则为:令P1=(x1,y1)∈E(Fp),Q=(x2,y2)∈E(Fp),P1≠±Q,则P1+Q=(x3,y3),其中
上述有限域Fp上的椭圆曲线,其雅可比坐标可表示为:Y2=X3+aXZ4+bZ6,椭圆曲线上的点集记为E(Fp)={(X,Y,Z)|X,Y,Z∈Fp,且满足曲线方程:Y2=X3+aXZ4+bZ6},无穷远点与点(1:1:0)对应,而点(X,Y,Z)的负点为(X:-Y:Z)。
基于上述椭圆曲线在雅可比坐标下的表达公式,在雅可比投影坐标下的倍点运算的运算规则为:
令P1=(X1,Y1,Z1)∈E(Fp),并且P≠-P。因为所以可以利用仿射坐标形式的倍点公式计算2P1=(X′3,Y3′,1),得到:
为了在X′3和Y3′的表达式中消去分母,可以令其中Z3=2Y1Z1,于是得到雅可比坐标形式的计算2P1的计算公式:
Z3=2Y1Z1
基于上述分析可知,在雅可比投影坐标下,利用雅可比坐标形式的倍点公式进行倍点运算,可以在Q的X′3和Y3′的表达式中消去分母,从而进一步简化计算过程,提高点乘运算速度。
进一步地,基于上述有限域Fp上的椭圆曲线,使用雅可比和仿射混合坐标的点加运算的运算规则为:
令P1=(X1,Y1,Z1)∈E(Fp),Z1≠0,Q=(X2,Y2,1),并且P1≠±Q。因为所以,可利用仿射坐标形式的点加公式计算P1+Q=(X′3,Y3′,1),得到:
为了在X′3和Y3′的表达式中消去分母,令其中于是得到雅可比坐标形式的计算P1+Q=(X3,Y3,Z3)的计算公式:
基于上述分析可知,在雅可比和仿射混合坐标下,利用雅可比-仿射混合坐标形式的点加公式,进行点加运算,也可以在Q的X′3和Y3′的表达式中消去分母,从而进一步简化计算过程,提高点乘运算速度。
为了验证上述分析结果,本实施例分别在不同投影坐标下,对相同的数据分别进行点加和倍点,并对实际运算量进行汇总,结果如下表1所示。
表1
在上述表1中,倍点运算仅涉及一种坐标,普通点加运算即两个相同坐标类型数据的点加,混合点加运算即采用两种不同的坐标类型数据进行点加。其中,A表示仿射坐标,P表示标准投影坐标,J表示雅可比坐标,C表示Chudnovsky坐标,I表示求逆,M表示模乘,S表示模平方。
从上述表1可知,对于倍点运算而言,同样的倍点参数,采用仿射坐标进行倍点运算,需要一次求逆运算,两次模乘运算和两次模平方运算;采用标准投影坐标进行倍点运算,则需要七次模乘运算和三次模平方运算;采用雅可比坐标进行倍点运算,则需要四次模乘运算和四次模平方运算;采用Chudnovsky坐标进行倍点运算,则需要五次模乘运算和四次模平方运算。通过总的模运算次数(模乘次数加上模平方次数)比较,可知,上述采用雅可比坐标进行倍点运算,其运算量明显低于采用其它坐标进行倍点运算的运算量(求逆运算的运算量通常远大于模乘运算,可相当于数倍或数十倍的模乘运算)。所以,本实施例选用雅可比坐标下的计算公式进行倍点运算。
对于普通的点加运算(两个相同坐标系的数据进行点加)而言,采用仿射坐标进行点加运算,需要一次求逆运算,两次模乘运算和一次模平方运算;采用标准投影坐标进行点加运算,则需要十二次模乘运算和两次模平方运算;采用雅可比坐标进行点加运算,则需要十二次模乘运算和四次模平方运算;采用Chudnovsky坐标进行点加运算,则需要十一次模乘运算和三次模平方运算。对于混合点加运算而言,同时采用仿射坐标和雅可比坐标进行点加运算,需要八次模乘运算和三次模平方运算;同时采用雅可比坐标和Chudnovsky坐标进行点加运算,则需要十一次模乘运算和三次模平方运算;同时采用仿射坐标和Chudnovsky坐标进行点加运算,需要八次模乘运算和三次模平方运算。通过总的模运算次数(模乘次数加上模平方次数)比较,可知,混合点加运算的运算量明显低于相同坐标系的点加运算,而混合点加运算中,采用仿射坐标和雅可比坐标进行混合点加运算,以及采用仿射坐标和Chudnovsky坐标进行点加运算,二者的运算量都是八次模乘运算和三次模平方,都远大于采用雅可比坐标和Chudnovsky坐标的混合点加运算。鉴于仿射坐标和雅可比混合坐标下的计算方案更加成熟和稳定,所以,本实施例选用采用仿射坐标和雅可比坐标下的计算公式进行混合点加运算。
可以理解的是,上述表1的数据,只是本实施例的一种具体实施方式,是针对某一数据得到的计算结果,但并不是对本实施例的限定,实际计算时可与上述的结果有些微的误差。
本实施例提供的椭圆曲线加密算法的点乘计算方法,每次进行主循环过程,可以直接查找和调用预计算好的该两个预计算,然后进行倍点运算和点加运算即可。由于本申请设置了两个预计算量,可直接调用,从而可以降低点乘计算的功耗。且可通过合理设置该两个预计算量,使得在主循环过程中,对两个预计算量的点加运算和倍点运算,可以应用合并和/或拆分等计算公式,使得该点乘计算方法主循环过程中的倍点运算的运算量,比传统的comb算法主循环过程中的倍点运算的运算量明显减少,故而可以大大提高点乘运算的计算速度。
可以理解的是,上述椭圆曲线加密算法的点乘计算方法和电路中的任一主题的任一实施方式均可应用于另一主题中的实施例中,实现相应的有益效果,在此不再赘述。
本申请实施方式还提供一种电子设备,以执行上述椭圆曲线加密算法的点乘计算方法。请参考图6,其示出了本申请的一些实施方式所提供的一种用电设备的示意图。如图6所示,用电设备40包括:处理器400,存储器401,总线402和通信接口403,处理器400、通信接口403和存储器401通过总线402连接;存储器401中存储有可在处理器400上运行的计算机程序,处理器400运行计算机程序时执行本申请前述任一实施方式所提供的椭圆曲线加密算法的点乘计算方法。
其中,存储器401可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该装置网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线402可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。其中,存储器401用于存储程序,处理器400在接收到执行指令后,执行程序,前述本申请实施例任一实施方式揭示的椭圆曲线加密算法的点乘计算方法可以应用于处理器400中,或者由处理器400实现。
处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器400读取存储器401中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的用电设备与本申请实施例提供的椭圆曲线加密算法的点乘计算方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的椭圆曲线加密算法的点乘计算方法对应的计算机可读存储介质,请参考图7其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),计算机程序在被处理器运行时,会执行前述任意实施方式所提供的椭圆曲线加密算法的点乘计算方法。
需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的椭圆曲线加密算法的点乘计算方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,其均应涵盖在本申请的权利要求和说明书的范围当中。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本申请并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。

Claims (14)

1.一种椭圆曲线加密算法的点乘计算电路,其特征在于,应用于单片机中,所述点乘计算电路包括:
存储器,用于存储待运算数据;所述待运算数据至少包括标量k和固定点P的坐标数据;
数据调用模块,基于目标待运算数据调取预设计算表,确定所述目标待运算数据对应的第一预计算量和第二预计算量;所述第一预计算量和所述第二预计算量均为,所述标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果;
点乘器,分别与所述存储器和所述数据调用模块连接,在接收到点乘计算指令后,从所述存储器获取目标待运算数据,从所述数据调用模块获取所述第一预计算量和所述第二预计算量,并基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算。
2.根据权利要求1所述的电路,其特征在于,所述点乘器,具体用于:
基于当前的倍点结果、所述第一预计算量及所述第二预计算量,进行点加运算,得到当前的点加结果;
对当前的点加结果进行倍点运算,再次得到当前的倍点结果;
循环执行上述两个步骤,直至达到所述目标待运算数据中的预设循环次数。
3.根据权利要求1所述的电路,其特征在于,所述存储器还存储无效数据,所述点乘器在基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算之前,和/或之后,还基于所述无效数据,及所述无效数据对应的第一预计算量,和/或所述无效数据对应的对应第二预计算量,进行相应次数的无效倍点运算和无效点加运算。
4.根据权利要求1所述的电路,其特征在于,所述数据调用模块包括晶体管构成的多个子电路。
5.一种椭圆曲线加密算法的点乘计算方法,其特征在于,通过权利要求1-4任一项所述点乘计算电路实现,所述方法包括:
点乘器接收到点乘计算指令后,从存储器获取目标待运算数据,并将所述目标待运算数据发送至数据调用模块;所述待运算数据至少包括标量k和固定点P的坐标数据;
所述数据调用模块基于所述目标待运算数据查询预设计算表,获取所述待运算数据对应的第一预计算量和第二预计算量;所述第一预计算量和所述第二预计算量均为,所述标量k相关的二进制串与固定点P的坐标数据经过点乘运算的结果;
所述点乘器基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算。
6.根据权利要求5所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算,包括:
基于当前的倍点结果、所述第一预计算量及所述第二预计算量,进行点加运算,得到当前的点加结果;
对当前的点加结果进行倍点运算,再次得到当前的倍点结果;
循环执行上述两个步骤,直至达到所述目标待运算数据中的预设循环次数。
7.根据权利要求6所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述基于当前的倍点结果、所述第一预计算量及所述第二预计算量,进行点加运算,得到当前的点加结果,包括:
确定所述第一预计算量对应的第一二进制串,以及所述第二预计算量对应的第二二进制串;
确定所述第一二进制串和所述第二二进制串是否等于0;
若至少有一个二进制串不等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行相应次数的点加运算。
8.根据权利要求7所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述若至少有一个二进制串不等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行相应次数的点加运算,包括:
若所述第一二进制串和所述第二二进制串均不等于0,则基于所述第一预计算量和所述第二预计算量,与当前的倍点结果进行两次点加运算;
若所述第一二进制串和所述第二二进制串仅有一个等于0,则基于不等于0的二进制串对应的预计算量,与当前的倍点结果进行一次点加运算。
9.根据权利要求6所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述进行倍点运算包括:
在雅可比投影坐标下,利用雅可比坐标形式的倍点公式进行倍点运算。
10.根据权利要求6所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述进行点加运算包括:
在雅可比和仿射混合坐标下,利用雅可比-仿射混合坐标形式的点加公式,进行点加运算。
11.根据权利要求5所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述点乘器基于所述目标待运算数据、所述第一预计算量及所述第二预计算量进行点乘运算之前,和/或之后,还执行如下的处理步骤:
基于预设的无效数据和/或所述无效数据对应的第一预计算量,和/或所述无效数据对应的对应第二预计算量,进行相应次数的无效倍点运算和无效点加运算。
12.根据权利要求7所述的椭圆曲线加密算法的点乘计算方法,其特征在于,所述确定所述第一二进制串和所述第二二进制串是否等于0之后,还包括:
若所述第一二进制串或所述第二二进制串等于0,则基于预设的无效数据及所述无效数据对应的第一预计算量,或所述无效数据对应的对应第二预计算量,进行无效点加运算。
13.一种电子设备,包括存储器、处理器以及存储在所述存储模块中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求5-12任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现如权利要求5-12任一项所述的方法。
CN202211448005.1A 2022-11-18 2022-11-18 椭圆曲线加密算法的点乘计算电路、方法、设备及介质 Pending CN118057297A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211448005.1A CN118057297A (zh) 2022-11-18 2022-11-18 椭圆曲线加密算法的点乘计算电路、方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211448005.1A CN118057297A (zh) 2022-11-18 2022-11-18 椭圆曲线加密算法的点乘计算电路、方法、设备及介质

Publications (1)

Publication Number Publication Date
CN118057297A true CN118057297A (zh) 2024-05-21

Family

ID=91068827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211448005.1A Pending CN118057297A (zh) 2022-11-18 2022-11-18 椭圆曲线加密算法的点乘计算电路、方法、设备及介质

Country Status (1)

Country Link
CN (1) CN118057297A (zh)

Similar Documents

Publication Publication Date Title
US10778410B2 (en) Homomorphic data encryption method and apparatus for implementing privacy protection
US7970131B2 (en) Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program, and elliptic curve cryptosystem arithmetic method
US11983280B2 (en) Protection of cryptographic operations by intermediate randomization
US7254600B2 (en) Masking of factorized data in a residue number system
CN101097511B (zh) 使用折叠的模归约
CN103942031B (zh) 椭圆域曲线运算方法
CN108959168B (zh) 基于片上内存的sha512全流水电路及其实现方法
Chen et al. Complete and improved FPGA implementation of classic McEliece
Wang et al. Solving large systems of linear equations over GF (2) on FPGAs
CN114095149B (zh) 信息加密方法、装置、设备及存储介质
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
US20100146296A1 (en) Apparatus and method for hash cryptography
Paksoy et al. Tmvp-based multiplication for polynomial quotient rings and application to saber on arm cortex-m4
CN116775544B (zh) 一种协处理器和计算机设备
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
CN111104092B (zh) 一种快速除法器和除法运算方法
Bos et al. ECC2K-130 on cell CPUs
CN118057297A (zh) 椭圆曲线加密算法的点乘计算电路、方法、设备及介质
CN103765493B (zh) 数字平方计算机实现的方法和设备
CN114371828A (zh) 多项式乘法器及具有该乘法器的处理器
CN113741972A (zh) 一种sm3算法的并行处理方法及电子设备
CN112202546A (zh) Sm3密码杂凑算法消息扩展串行优化系统与方法
CN112487448B (zh) 一种加密信息处理装置、方法及计算机设备
CN114706557B (zh) 一种asic芯片及蒙哥马利模乘的实现方法和装置
Nedjah et al. Four hardware implementations for the m-ary modular exponentiation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication