CN117828619A - 取模运算方法、电路、电子设备及存储介质 - Google Patents
取模运算方法、电路、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117828619A CN117828619A CN202211191913.7A CN202211191913A CN117828619A CN 117828619 A CN117828619 A CN 117828619A CN 202211191913 A CN202211191913 A CN 202211191913A CN 117828619 A CN117828619 A CN 117828619A
- Authority
- CN
- China
- Prior art keywords
- modulo
- modulo operation
- random number
- value
- modular
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 135
- 238000004364 calculation method Methods 0.000 claims abstract description 121
- 230000008569 process Effects 0.000 claims description 79
- 230000015654 memory Effects 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 2
- 238000004458 analytical method Methods 0.000 abstract description 10
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 32
- 230000002093 peripheral effect Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 6
- 230000007704 transition Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005336 cracking Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101150047304 TMOD1 gene Proteins 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
本申请提出一种取模运算方法、电路、电子设备及存储介质,该取模运算电路包括:存储模块,用于存储数据;计算模块,与所述存储数据连接,用于对所述存储模块中的数据进行取模运算;控制模块,与所述计算模块连接,用于控制所述计算模块进行有效取模运算或者无效取模运算,以调节整体取模运算时间。本申请能够抵抗功耗分析攻击,进一步提高了数据传输的安全性。
Description
技术领域
本申请属于数据处理技术领域,具体涉及一种取模运算方法、电路、电子设备及存储介质。
背景技术
现在人们越来越重视数据的安全性,尤其是在数据传输过程中的安全性。所以,在进行数据传输时,通常会采用加密算法对数据加密。其中,椭圆曲线公钥加密算法(ECC)是一个安全且实用的公钥密码算法,既能用于数据的加密也能用于数字签名,是目前信息安全领域中热门的公钥密码算法。
随着电路等分析技术的发展,密码破解已经不再单纯的停留在数学手段上,而是从密码电路的功耗信息泄露入手,通过对密码芯片加解密过程中的功耗进行分析,发现密码芯片在进行加解密时的功耗波形与其所使用的参数有一定的联系。攻击者利用这种联系,对密码芯片加解密过程的功耗进行分析,以猜测出密码芯片加解密所使用的参数。这种利用参数和功耗间的这种相关性来对参数进行猜测的手段,便称为功耗分析攻击。而目前在芯片中应用的椭圆曲线公钥加密算法,还不能够抵抗上述功耗分析攻击。
发明内容
本申请提出一种取模运算方法、电路、电子设备及存储介质,该方法能够抵抗功耗分析攻击,进一步提高了数据传输的安全性。
本申请第一方面实施例提出了一种取模运算电路,其特征在于,包括:
存储模块,用于存储数据;
计算模块,与所述存储数据连接,用于对所述存储模块中的数据进行取模运算;
控制模块,与所述计算模块连接,用于控制所述计算模块进行有效取模运算或者无效取模运算,以调节整体取模运算时间。
可选地,所述控制模块包括状态寄存器和计算控制单元;
在所述状态寄存器存储第一状态值时,所述计算模块进行有效取模运算;在所述状态寄存器存储第二状态值时,所述计算模块至少进行一次无效取模运算;
所述计算控制单元用于控制所述计算模块分别进行有效取模运算和无效取模运算的次数。
可选地,所述计算控制单元包括计数器;
在所述状态寄存器存储所述第一状态值时,所述计算模块进行有效取模运算,且所述计数器对应取模运算次数进行计数,直至计数值达到预设阈值,停止所述有效取模运算。
可选地,所述计算控制单元还包括随机数生成器;
在所述状态寄存器存储所述第二状态值时,所述计算模块基于计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
可选地,所述计算控制单元还包括奇偶校验器,所述奇偶校验器用于对随机数进行奇偶校验;
在所述状态寄存器存储所述第二状态值时,所述计算模块基于奇偶校验结果、所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
可选地,在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块进行无效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;或者,
在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块进行无效取模运算;或者,
在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块进行有效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;或者,
在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块进行有效取模运算。
可选地,在所述状态寄存器存储所述第二状态值时,所述计数器将计数值与所述随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则所述计算模块进行无效取模运算,并对应无效取模运算次数进行计数,直至计数值达到预设阈值,停止所述无效取模运算;
若计数值与随机数相等,则计数值重置初始状态,所述计算模块进行有效取模运算,且所述计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,停止所述有效取模运算。
可选地,停止所述有效取模运算之后,所述计数器恢复计数并跳转至指定数值,所述计算模块进行无效取模运算,且所述计数器对应每次无效取模运算进行计数,直至所述计数器的计数值达到最大值。
可选地,所述计算模块进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
可选地,还包括中间寄存器,所述计算模块每次进行有效取模运算之后,均将计算结果存储于所述中间寄存器,并覆盖在先的计算结果。
可选地,所述存储模块中存储数据的地址包括有效地址和无效地址;所述计算模块从所述有效地址获取数据则进行有效取模运算,所述计算模块从所述无效地址获取数据则进行无效取模运算。
可选地,所述状态寄存器存储第三状态值时,所述计算模块进行简单乘法运算。
可选地,所述取模运算包括蒙哥马利模乘运算;所述存储模块中存储的数据至少包括操作数、所述操作数的进制,以及取模运算的模数,所述预设阈值等于所述取模运算的模数在所述操作数的进制的位数。
本申请第二方面的实施例提供了一种取模运算方法,应用于第一方面所述的取模运算电路,所述方法包括:
接收取模运算指令;
响应于所述取模运算指令,进行相应的取模运算操作;所述取模运算操作至少包括一次有效取模运算和一次无效取模运算。
可选地,响应于所述取模运算指令,进行相应的取模运算操作,包括:
根据所述取模运算指令携带的信息,确定状态寄存器存储的状态值;
若所述状态寄存器存储第一状态值,则进行有效取模运算;
若所述状态寄存器存储第二状态值,则至少进行一次无效取模运算。
可选地,若所述状态寄存器存储第一状态值,则进行有效取模运算,包括:
若所述状态寄存器存储所述第一状态值,则进行有效取模运算,并通过计数器对应取模运算次数进行计数,直至计数值达到预设阈值,停止所述有效取模运算。
可选地,若所述状态寄存器存储第二状态值,则至少进行一次无效取模运算,包括:
若所述状态寄存器存储所述第二状态值,基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
可选地,若所述状态寄存器存储第二状态值,则至少进行一次无效取模运算,包括:
若所述状态寄存器存储所述第二状态值,基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
可选地,所述基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,包括:
若所述奇偶校验器的结果为第一数值,则进行无效取模运算;若所述奇偶校验器的结果为第二数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;或者,
若所述奇偶校验器的结果为第一数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;若所述奇偶校验器的结果为第二数值,则进行无效取模运算;或者,
若所述奇偶校验器的结果为第一数值,则进行有效取模运算;若所述奇偶校验器的结果为第二数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;或者,
若所述奇偶校验器的结果为第一数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;若所述奇偶校验器的结果为第二数值,则进行有效取模运算。
可选地,所述基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,包括:
将计数值与所述随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则进行一次无效取模运算,且计数值加一,直至计数值达到预设阈值;
若计数值与随机数相等,则计数值重置初始状态,进行有效取模运算,且所述计数器对应取模运算次数进行计数,直至计数值达到预设阈值。
可选地,所述进行有效取模运算,包括:
进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
可选地,还包括:
每次进行有效取模运算之后,均将计算结果存储于中间寄存器,并覆盖在先的计算结果。
可选地,所述进行有效取模运算,包括:
基于操作数、所述操作数的进制,以及取模运算的模数进行蒙哥马利模乘运算。
可选地,所述方法还包括:
若状态寄存器存储第三状态值,则进行简单乘法运算。
本申请第三方面的实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储模块中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的步骤。
本申请第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现如第一方面所述的方法。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供的取模运算电路,可以控制取模运算所用的时间,使每次取模运算的时间不同,而在电压与电流一定的情况下,取模运算的时间越长则功耗越大,这样进行功耗攻击时由于每次取模运算的时间不同导致功耗不同,从而无法判断此时的运算是否是取模运算,使得采用取模运算的加密算法(例如椭圆曲线加密)更不易被破解,提高了取模运算相关加密算法的安全性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
在附图中:
图1示出了本申请一实施例提供的一种取模运算电路的结构示意图;
图2示出了本申请一实施例提供的另一种取模运算电路的结构示意图;
图3示出了本申请一实施例提供的又一种取模运算电路的结构示意图;
图4示出了本申请一实施例提供的一种取模运算方法的流程示意图;
图5示出了本申请一实施例提供的另一种取模运算方法的流程示意图;
图6示出了本申请一实施例提供的又一种取模运算方法的流程示意图;
图7示出了本申请一实施例提供的再一种取模运算方法的流程示意图;
图8示出了本申请一实施例所提供的一种电子设备的结构示意图;
图9示出了本申请一实施例所提供的一种存储介质的示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整地传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
发明人对现有相关技术进行研究发现,在椭圆曲线加密算法中,决定加密速度和硬件资源的核心运算为点乘运算。在点乘运算中包含随机参数k(通常为私钥)的信息,简单功耗攻击便是利用参数k与运算之间的相关性,从点乘运算的功耗波形中对参数k进行猜测,因此对于点乘的功耗分析攻击便称为椭圆曲线加密算法的攻击点。
在点乘运算中主要包括点加和倍点两种运算,令上述参数k={kl-1......k0},其中,l为k转化为二进制数后的比特长度,ki为k转化为二进制数之后的一个比特值,ki取值0或1。当ki=1时要进行点加和倍点两种运算,当ki=0时只进行倍点运算。然后根据点加和倍点运算各自使用的模乘次数可将点加和倍点运算进行区别。由于这种运算的差异性,可以在功耗上表现出明显的差异,简单功耗攻击正是通过采集密码电路的功耗,利用模乘的功耗特点和椭圆曲线加密算法参数之间的这种操作相关性来对参数k进行分析。
而无论是点加还是倍点运算,它的基础运算都是模乘运算,进行功耗攻击也是根据模乘的功耗特点来进行攻击,所以在椭圆曲线加密算法中,这种单纯的模乘运算已经不足以抵抗功耗攻击。
鉴于上述发现,本实施例提供了一种取模运算电路,可以但不限于应用在单片机中,下面以单片机为例,对本申请进行举例说明。本实施例应用的单片机可以分为两个部分,即CPU(Central Processing Unit,中央处理器)和一系列外设,CPU和外设可通过总线连接。常用的外设如串口,定时器、寄存器等。CPU可以执行各种各样的指令,通过执行仿存类指令可配置外设的寄存器,达到控制外设工作的目的。也可以执行数学计算类指令,例如一些算法计算的过程,加法减法乘法除法,计算一个公式,都是通过数学计算类指令来完成的。
请参阅图1,为本实施例提供的取模运算电路的结构示意图,该电路包括存储模块、计算模块和控制模块。其中,存储模块用于存储数据。计算模块与存储模块连接,用于对存储模块中的数据进行取模运算。控制模块与计算模块连接,用于控制计算模块进行有效取模运算或者无效取模运算,以调节整体取模运算时间。
本实施例提供的取模运算电路,可以控制取模运算所用的时间,使每次取模运算的时间不同,而在电压与电流一定的情况下,取模运算的时间越长则功耗越大,这样进行功耗攻击时由于每次取模运算的时间不同导致功耗不同,从而无法判断此时的运算是否是取模运算,使得采用取模运算的加密算法(例如椭圆曲线加密)更不易被破解,提高了取模运算相关加密算法的安全性。
需要说明的是,上述取模运算指的是包括取模运算的一系列运算而不单指一次取模计算,其可以包括但不限于椭圆曲线加密中应用到的模乘运算(即乘法取模运算),还可以包括加法取模运算、减法取模运算以及指数取模运算(也称为模幂运算)等,还可以包括一些非取模运算的简单运算。本实施例提供的取模运算电路不仅可以用于解决上述技术问题,使椭圆曲线加密算法能够成功抵御功耗攻击,还可以应用于采用上述任意取模运算进行加密的任意场景下,其都能够通过使每次取模运算的时间不同,而使得采用取模运算的加密算法更不易被破解。
上述存储模块存储的数据,可以集成在单片机的CPU中,包括待进行取模运算的数据,也可以包括取模运算的结果和中间数据,以及其它取模运算相关的数据等。具体地,存取模块可以包括多个存储器,可进行分区管理,每个存储区可包括多个存储地址,每个地址可包括一次取模运算所需的所有数据。存储地址可包括有效地址和无效地址,其中,有效地址用于存储有效数据,无效地址用于存储无效数据。这里有效数据可理解为加密算法中实际用到的待计算数据,及其计算结果和相关中间数据等。无效数据可理解为加密算法中实际未用到,只是用于控制取模运算时间的待计算数据,及其计算结果和相关中间数据等。
上述有效取模运算的操作数来自存储模块中有效地址的数据,且有效取模运算的最终计算结果也会存储于存储模块的有效地址中。而上述无效取模运算的操作数来自存储模块中无效地址的数据,且无效取模运算的最终计算结果可以直接丢弃,或者存储于存储模块的无效地址中。
上述计算模块可以集成在单片机的CPU中,与存储模块连接,可根据接收到的计算指令,从存储模块获取数据,进行相应的取模运算,然后将计算结果再存储至存储模块。例如,计算模块可以包括一个或多个取模计算器,可以对一个加密算法进行分布式运算,也可以同时进行多个加密算法的运算。该取模计算器包括但不限于模乘器,也可以包括模幂器、模加器及模减器等。
上述控制模块可形成于单片机的外设中,并与上述计算模块连接,用于控制计算模块进行取模运算的次数,从而控制取模运算的时间。具体地,可在单片机中存储多个运算程序,该多个程序可基于相同的取模运算电路设置,也可基于多个不同的取模运算电路设置,每个运算程序中取模运算次数不同,从而使得各运算程序使用的计算时间不同。该控制模块只需控制计算模块采用的具体运算程序即可。
可选地,如图2所示,控制模块可包括状态寄存器和计算控制单元;且在状态寄存器存储第一状态值时,计算模块进行有效取模运算;在状态寄存器存储第二状态值时,计算模块至少进行一次无效取模运算。计算控制单元用于控制计算模块分别进行有效取模运算和无效取模运算的次数。
本实施例中,状态寄存器可以但不限于8位的二进制寄存器,用于存储状态值,每个状态值可对应一个运算程序,当计算模块读取到寄存器的状态值后,便可根据读取到的状态值进行相应的一系列运算程序。该状态寄存器的状态值可至少包括第一状态值和第二状态值,并在第一状态值进行有效取模运算,在第二状态值时至少进行一次无效取模运算。且可通过计算控制单元控制无效取模运算的次数,来控制该取模运算程序的整体计算时间,使得破解密码者进行功耗攻击时无法判断此时的运算是否为取模(模乘)运算,从而保护(椭圆曲线)加密算法参数不被破解。
其中,第一状态值和第二状态值可以为任意8位的二进制数据,其数值例如均可以为十进制的0、1、2、3等,本实施例对其不做具体限定,只要在单片机中预设各状态对应的运算程序即可。
具体地,本实施例可通过状态机辅助计算模块实现各种取模运算程序,例如可在单片机中设置如下状态机:在s0状态,如果状态寄存器存储第一状态值,那么计算模块进行第一指定次数的有效取模运算,并保持状态不变(或将状态s0转移到s1态);当有效取模运算的次数达到上述第一指定次数时,计算模块中断取模运算,并将状态转移到s1态(或将状态s1转移到s2态)。如果状态寄存器存储第二状态值,那么计算模块进行经过混淆的取模运算,并通过计算控制单元控制无效取模运算的次数,且将状态转移到s2态(或将状态s2转移到s3态)。经过混淆的取模运算通常先进行多次无效取模运算,再进行第二指定次数的有效取模运算。然后,当有效取模运算的次数达到上述第二指定次数时,计算模块中断取模运算,并将状态转移到s0态。
其中,经过混淆的取模运算既包含有效取模运算又包含无效取模运算,本实施例对上述第一指定次数和第二指定次数均不作具体限定,本领域技术人员可根据需要和技术要求进行设定。
在一些实施例中,如图3所示,计算控制单元可包括计数器;在状态寄存器存储第一状态值时,计算模块进行有效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值,然后计数器跳转至初始值,触发有效取模运算中断。
其中,该计数器可以但不限于设置在单片机的外设部分,例如可以和上述状态寄存器集成在一起。计数器的初始值通常为0,当然也可以为其它指定数值,本实施例对此不作具体限定。计数器的预设阈值可以为任意自然数,本实施例对其也不做具体限定。
在本实施例中,通过计数器对应取模运算次数进行计数,当计数值达到预设阈值,可触发计算模块取模运算的中断,从而实现对状态寄存器存储第一状态值时,计算模块进行有效取模运算的次数进行控制,继而实现对取模运算整体计算时间的控制。具体地,该计数器可以和状态寄存器一起设置在单片机的外设部分,当然,也可根据需要设置在CPU中,本实施例对此不作具体限定。
具体地,当计数器的计数值为初始值(通常为0)时,计算模块进行第一轮有效取模运算,可以将第一轮有效取模运算的结果暂存到寄存器(例如下述的中间寄存器)中。然后进行第二轮有效取模运算,此时,可取第一轮有效取模运算结果的高位(这里高位例如可以是8位二进制数据的高四位,当然根据需要这里也可以选取低位)与第二轮有效取模运算的结果进行相加,然后得到第二轮有效取模运算的实际结果,并将第二轮运算的该实际结果暂存到寄存器中,此时寄存器中的结果被重写,即覆盖上一轮的运算结果。此后的每轮运算都会根据此规律进行叠加,直到计数器的计数值达到预设阈值。当计数器计到预设阈值时,计算模块进行最后一轮有效取模运算,最后一轮有效取模运算会与前一轮运算的高位进行相加得到最后的结果,最后的结果被暂存到寄存器中,然后计数值从该预设阈值跳转到初始值,将结果从寄存器中存储到存储模块的有效地址中。
需要说明的是,下述的有效取模运算均可参照上述处理逻辑执行,本实施例不再一一赘述。
可以理解的是,在本申请中计算控制单元仅包括计数器的情况下,在状态寄存器存储第二状态值时,计算模块可进行无效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值,然后计数器跳转至初始值,触发无效取模运算中断。
进一步地,计算控制单元还可以包括随机数生成器。在状态寄存器存储第二状态值时,计算模块可基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算。
其中,随机数生成器生成的随机数可以为任意8位、16位或更多位的二进制数据,本领域技术人员可根据实际需要进行设定,本实施例对此不作具体限定。该随机数生成器也可以但不限于设置在单片机的外设部分,例如可以和上述状态寄存器和计数器集成在一起。可以理解的是,该随机数也可以直接自接收的指令中获取,可无需随机数生成器。
本实施例通过计数器的计数值和随机数生成器生成的随机数,共同对计算模块进行的有效取模运算次数和无效取模运算次数进行控制。其中,通过设置计数值和随机数可控制进行何时进行无效取模运算、何时进行有效取模运算,以及分别进行无效取模运算和有效取模运算的次数,从而可以实现灵活控制取模运算整体时间的目的。
具体地,在状态寄存器存储第二状态值时,计数器将计数值与随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则计算模块进行无效取模运算,并对应无效取模运算次数进行计数,直至计数值达到随机数值,则计数值重置初始值,触发无效取模运算中断。若计数值与随机数相等,计算模块进行有效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发有效取模运算中断。
可以理解的是,上述第二状态值对应的运算程序只是本实施例的一种实施方式,本实施例并不以此为限,例如,计数器将计数值与随机数生成器生成的随机数进行比较之后,若计数值与随机数不相等,计算模块也可以进行有效取模运算,并对应有效取模运算次数进行计数,直至计数值达到随机数值,则计数值重置初始值,触发计算模块中断有效取模运算。若计数值与随机数相等,则计算模块进行无效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发无效取模运算中断。
基于上述通过计数器的计数值和随机数生成器生成的随机数,共同对计算模块进行的有效取模运算次数和无效取模运算次数进行控制的过程可知,本实施例不限定计数值与随机数相等或不相等的情况下,是进行有效取模运算,还是进行无效取模运算,只要两种情况下,分别对应不同的有效运算程序和无效运算程序即可,本实施例对此不做限定。
在另一些实施例中,计算控制单元还可以包括奇偶校验器,奇偶校验器用于对随机数进行奇偶校验。在状态寄存器存储第二状态值时,计算模块也可基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算。
与上述计数器和随机数生成器的设置原理类似,该奇偶校验器也可以但不限于设置在单片机的外设部分,例如可以和上述状态寄存器、计数器、随机数生成器中的任意一者或多者集成在一起。
本实施例中,在计数器和随机数生成器的基础上,增设了对随机数进行奇偶校验的奇偶校验器,可通过奇偶校验器的校验结果、计数器的计数值和随机数生成器生成的随机数,共同对计算模块进行的有效取模运算次数和无效取模运算次数,以及进行有效取模运算和无效取模运算的时机进行控制,使得取模运算程序整体更加复杂,增强了取模运算时间的不确定性,使得基于取模运算的加密算法更加稳定、安全,更加不易被外界破解。
在一些实施例中,在状态寄存器存储第二状态值时,若奇偶校验器的结果为第一数值,则计算模块进行无效取模运算;若奇偶校验器的结果为第二数值,则计算模块基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次有效取模运算。或者,
在状态寄存器存储第二状态值时,若奇偶校验器的结果为第一数值,则计算模块基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次有效取模运算;若奇偶校验器的结果为第二数值,则计算模块进行无效取模运算。或者,
在状态寄存器存储第二状态值时,若奇偶校验器的结果为第一数值,则计算模块进行有效取模运算;若奇偶校验器的结果为第二数值,则计算模块基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算。或者,
在状态寄存器存储第二状态值时,若奇偶校验器的结果为第一数值,则计算模块基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算;若奇偶校验器的结果为第二数值,则计算模块进行有效取模运算。
在本实施例中,计算模块基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程中,在进行计数值与随机数的判断之间,先对随机数进行奇偶验证,从而使得取模运算的整体过程更加复杂,使攻击者无法判断此时的运算是否是取模运算,进一步增加基于该取模运算的加密算法的破解难度,能够更好地抵御功耗分析攻击。
可以理解的是,上述基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,可包括多种实施方式,本实施例可选取任意一种,也可对应上述不同的取模运算过程设置不同的寄存器状态值,以便使得该取模运算电路的取模运算过程更加灵活、多变。
在包括奇偶校验器的实施例中,计算模块基于计数器的计数值和随机数生成器生成的随机数,进行相应取模运算过程时,与上述仅包括计数器和随机数生成器的实施例处理逻辑一致,实现相同的有益效果。即计数器将计数值与随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则计算模块进行无效取模运算,并对应无效取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发无效取模运算中断。若计数值与随机数相等,则计数值重置初始状态,计算模块进行有效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发有效取模运算中断。
在一些实施例中,在状态寄存器存储第二状态值时,停止有效取模运算之后,计数器恢复计数并跳转至指定数值,计算模块可以再次进行无效取模运算,且计数器对应每次无效取模运算进行计数,直至计数器的计数值达到最大值。但是计算结果既不会暂存到寄存器中,也不会存储到存储模块中,可以在计算完成之后直接丢弃。其中,指定数值可与随机数相关,例如随机数加1。
在另一些实施例中,状态寄存器还可存储第三状态值,且此时,计算模块可进行简单乘法运算,以区别于取模计算,使整体取模运算过程更加复杂,使攻击者无法判断此时的运算是否是取模运算,从而更好地抵御功耗分析攻击。
具体地,取模运算可包括蒙哥马利模乘运算;存储模块中存储的数据至少包括操作数、操作数的进制,以及取模运算的模数,预设阈值等于取模运算的模数在操作数的进制的位数。
模乘是为了计算a·b(modn),即a与b相乘,再对n取模。普通算法中,在计算模n时,利用的是带余除法,除法运算需要太多次乘法,计算复杂度较高。而蒙哥马利算法的思想就是利用进制表示简化除法运算,将除法运算转化为位运算。
传统的蒙哥马利模乘具体实现过程流程如下:
在模乘器输入操作数a和b,以及和模数n,通常a和b均小于n。然后模乘器基于预设程序进行模乘运算,并输出模乘结果d’=a·b·r-mmod n。计算过程中,先另t等于1,并定义i=1至v-1(步长为1),然后另t等于t·t·n modr。之后另t等于r-t。且为d’设定初始值0,再定义i=0至m-1(步长为1),计算q=(a0·bi+d’0)·tmod r,以及d’=(a·bi+d’+q·n)·r-1。并且,当d’≥n时,使d’等于d’-n进行迭代。
其中,a·bi+d’+q·n这里有如下的m轮运算,经过m轮运算之后,得到的结果除以r。
(1)a0·bi+0+q·n0(根据多位数乘法的运算规则,得到的结果高位h0与下一轮相加,低位l0保留);
(2)a1·bi+h0+q·n1(高位为h1,低位为l1,保留低位);
(3)a2·bi+h1+q·n2(高位为h2,低位为l2,保留低位);
(4)a3·bi+h2+q·n3(高位为h3,低位为l3,保留低位);
(5)am-1·bi+hm-2+q·nm-1(高位为hm-1,低位为lm-1,最后一轮运算不管是高位还是低位全部保留)。
在上述流程中,r表示操作数(进行运算操作的数据)的进制,比如在传统的计算机中,操作数均为二进制的形式。那么此时r=2,m表示为n在r进制下的位数。通常在加密过程中操作数都是二进制串,将两两一组看,可以看做是4进制数;三个三个一组,可以看做是8进制数;四个四个一组,可以看做是16进制。因此进制数r可以表示为2^v(2的v次方),对于2^v进制而言,相当于将二进制串v个v个一组地看。
从上述流程可以看出,在计算t时,t仅与n和r有关,因此可以事先计算好,可以在存储器或寄存器(不限于这两种)中预存,或者线路上直接体现,在模数n相同的情况下可以重复使用,可以减少算法运行的时间。所以,在取模运算包括蒙哥马利模乘运算时,可以在存储模块中存储的数据至少包括操作数、操作数的进制,以及取模运算的模数。上述预设阈值可等于取模运算的模数在操作数的进制的位数,以实现上述减少算法运行的时间的目的。
例如,若计算a·b(mod n),则仅需调用蒙哥马利模乘4次即可。令ρ=r2m mod n:
(1)A=MontMul(a,ρ)=a·rm mod n;
(2)B=MontMul(b,ρ)=b·rm mod n;
(3)D=MontMul(A,B)=a·b·rm mod n;
(4)d=MontMul(D,1)=a·b mod n。
上述第(4)步得到的结果d即为蒙哥马利模乘的所需结果。其中(1)、(2)步称之为进入蒙哥马利域,即将操作数a,b变为a·rm mod n,b·r rm mod n的形式;第(4)步称之为退出蒙哥马利域,即由a·b·rm mod n恢复出a·b mod n。另外,ρ=r2m mod n是个仅与r,n有关的变量,可事先计算好,可以在存储器或寄存器(不限于这两种)中预存,或者线路上直接体现,在进行计算时可直接调用即可,可以有效节省蒙哥马利模乘运行时间。蒙哥马利模乘可以避免除法运算,这种实现方式使得在需要进行模幂运算时可以节省大量的运行时间。
基于上述取模运算电路相同的构思,本实施例还提供一种取模运算方法,可应用于上述任意实施方式的取模运算电路,如图4所示,该方法包括以下步骤:
步骤S1,接收取模运算指令;
步骤S2,响应于取模运算指令,进行相应的取模运算操作;取模运算操作至少包括一次有效取模运算和一次无效取模运算。
如上,该方法具体执行主体可以为上述计算模块,计算模块与存储模块连接,可根据接收到的计算指令,从存储模块获取数据,进行相应的取模运算。具体地,可以预设多个取模运算的处理逻辑,然后根据接收到的指令信息,确定并进行具体对应的取模运算操作。则只需设定不同的取模运算操作,且该取模运算操作至少包括一次有效取模运算和一次无效取模运算,便可使得取模运算的运行时间不同,使得功耗攻击者无法判断此时的运算是否是取模运算,从而可以保护基于取模运算的加密算法参数不被外界所破解。
在一些实施例中,上述步骤S2可以包括以下处理:根据取模运算指令携带的信息,确定状态寄存器存储的状态值;若状态寄存器存储第一状态值,则进行有效取模运算;若状态寄存器存储第二状态值,则至少进行一次无效取模运算。
如前,可通过状态机辅助计算模块实现各种取模运算程序。通过设置状态机,对应状态寄存器的值,可以控制计算模块进行相应的逻辑处理。
具体地,上述若状态寄存器存储第一状态值,则进行有效取模运算,可以包括以下处理:若状态寄存器存储第一状态值,则进行有效取模运算,并通过计数器对应取模运算次数进行计数,直至计数值达到预设阈值,停止有效取模运算。这里预设阈值同样可以为任意自然数。
在本实施例中,通过计数器对应取模运算次数进行计数,当计数值达到预设阈值后,计数器跳转至初始值(通常为0,也可以为其它指定数值),可触发计算模块取模运算的中断,从而实现对状态寄存器存储第一状态值时,计算模块进行有效取模运算的次数进行控制,继而实现对取模运算整体计算时间的控制。
具体地,当计数器的计数值为初始值(通常为0)时,计算模块进行第一轮有效取模运算,可以将第一轮有效取模运算的结果暂存到寄存器(例如下述的中间寄存器)中。然后进行第二轮有效取模运算,此时,可取第一轮有效取模运算结果的高位(这里高位例如可以是8位二进制数据的高四位,当然根据需要这里也可以选取低位)与第二轮有效取模运算的结果进行相加,然后得到第二轮有效取模运算的实际结果,并将第二轮运算的该实际结果暂存到寄存器中,此时寄存器中的结果被重写,即覆盖上一轮的运算结果。此后的每轮运算都会根据此规律进行叠加,直到计数器的计数值达到预设阈值。当计数器计到预设阈值时,计算模块进行最后一轮有效取模运算,最后一轮有效取模运算会与前一轮运算的高位进行相加得到最后的结果,最后的结果被暂存到寄存器中,然后计数值从该预设阈值跳转到初始值,将结果从寄存器中存储到存储模块的有效地址中。
需要说明的是,下述的有效取模运算均可参照上述处理逻辑执行,本实施例不再一一赘述。
可选地,当取模运算电路包括计数器和随机数生成器时,上述若状态寄存器存储第二状态值,则至少进行一次无效取模运算,可以包括以下处理:若状态寄存器存储第二状态值,基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算。
其中,随机数生成器生成的随机数可以为任意8位、16位或更多位的二进制数据,本领域技术人员可根据实际需要进行设定,本实施例对此不作具体限定。该随机数生成器也可以但不限于设置在单片机的外设部分,例如可以和上述状态寄存器和计数器集成在一起。
本实施例通过计数器的计数值和随机数生成器生成的随机数,共同对计算模块进行的有效取模运算次数和无效取模运算次数进行控制。其中,通过设置计数值和随机数可控制进行何时进行无效取模运算、何时进行有效取模运算,以及分别进行无效取模运算和有效取模运算的次数,从而可以实现灵活控制取模运算整体时间的目的。
具体地,在状态寄存器存储第二状态值时,计数器将计数值与随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则计算模块进行无效取模运算,并对应无效取模运算次数进行计数,直至计数值达到随机数值,则计数值重置初始值,触发无效取模运算中断。若计数值与随机数相等,计算模块进行有效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发有效取模运算中断。
可以理解的是,上述第二状态值对应的运算程序只是本实施例的一种实施方式,本实施例并不以此为限,例如,计数器将计数值与随机数生成器生成的随机数进行比较之后,若计数值与随机数不相等,计算模块也可以进行有效取模运算,并对应有效取模运算次数进行计数,直至计数值达到随机数值,则计数值重置初始值,触发计算模块中断有效取模运算。若计数值与随机数相等,则计算模块进行无效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发无效取模运算中断。
在另一些实施例中,取模运算电路还包括奇偶校验器,则上述若状态寄存器存储第二状态值,则至少进行一次无效取模运算,可以包括以下处理:若状态寄存器存储第二状态值,基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算。
本实施例中,在计数器和随机数生成器的基础上,增设了对随机数进行奇偶校验的奇偶校验器,可通过奇偶校验器的校验结果、计数器的计数值和随机数生成器生成的随机数,共同对计算模块进行的有效取模运算次数和无效取模运算次数,以及进行有效取模运算和无效取模运算的时机进行控制,使得取模运算程序整体更加复杂,增强了取模运算时间的不确定性,使得基于取模运算的加密算法更加稳定、安全,更加不易被外界破解。
具体地,上述基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,可以包括以下处理:
若奇偶校验器的结果为第一数值,则进行无效取模运算;若奇偶校验器的结果为第二数值,则基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次有效取模运算;或者,
若奇偶校验器的结果为第一数值,则基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次有效取模运算;若奇偶校验器的结果为第二数值,则进行无效取模运算;或者,
若奇偶校验器的结果为第一数值,则进行有效取模运算;若奇偶校验器的结果为第二数值,则基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算;或者,
若奇偶校验器的结果为第一数值,则基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;取模运算过程包括至少一次无效取模运算;若奇偶校验器的结果为第二数值,则进行有效取模运算。
在本实施例中,计算模块基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程中,在进行计数值与随机数的判断之间,先对随机数进行奇偶验证,从而使得取模运算的整体过程更加复杂,使攻击者无法判断此时的运算是否是取模运算,进一步增加基于该取模运算的加密算法的破解难度,能够更好地抵御功耗分析攻击。
可以理解的是,上述基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,可包括多种实施方式,本实施例可选取任意一种,也可对应上述不同的取模运算过程设置不同的寄存器状态值,以便使得该取模运算电路的取模运算过程更加灵活、多变。
在包括奇偶校验器的实施例中,计算模块基于计数器的计数值和随机数生成器生成的随机数,进行相应取模运算过程时,与上述仅包括计数器和随机数生成器的实施例处理逻辑一致,实现相同的有益效果。即计数器将计数值与随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则计算模块进行无效取模运算,并对应无效取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发无效取模运算中断。若计数值与随机数相等,则计数值重置初始状态,计算模块进行有效取模运算,且计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,触发有效取模运算中断。
可选地,该取模运算方法还包括:每次进行有效取模运算之后,均将计算结果存储于中间寄存器,并覆盖在先的计算结果。
可选地,上述进行有效取模运算,包括:
基于操作数、操作数的进制,以及取模运算的模数进行蒙哥马利模乘运算。
在一些实施例中,方法还包括:若状态寄存器存储第三状态值,则进行简单乘法运算。如此,可区别于取模计算,使整体取模运算过程更加复杂,使攻击者无法判断此时的运算是否是取模运算,从而更好地抵御功耗分析攻击。
下面以蒙哥马利模乘为例,结合图5-图7对本实施例提供的取模运算方法进行详细描述:
为了使蒙哥马利模乘运算不被外界破解,本实施例利用计数器、随机数及外设寄存器来控制蒙哥马利模乘运算。外设寄存器会控制计数器的值是否与随机数进行比较。当外设寄存器为0时,计数器的值与随机数的值不会进行比较,此时为正常的蒙哥马利模乘。当外设寄存器为1时,计数器的值与随机数的值进行比较,此时蒙哥马利模乘为混淆的蒙哥马利模乘运算,运算的时间受随机数与计数器控制,下面将详细介绍几种不同的情况:
(1)外设寄存器为0时,计数器的值与随机数的值不会进行比较,此时模乘运算为正常的模乘运算,即有效模乘运算,此时模乘器的两个输入数据为存储器中有效地址中的数据。计数器从0计到m-1。当计数器等于0时,蒙哥马利模乘进行第一轮运算,第一轮运算的结果会暂存到寄存器中,在进行第二轮运算时,会取第一轮运算结果的高位与第二轮运算进行相加,然后得到第二轮运算的结果,然后将第二轮运算的结果暂存到寄存器,此时寄存器中的结果被重写,此后的每轮运算都会根据此规律进行循环,直到计数器计算到m-1。当计数器计到m-1时,蒙哥马利模乘进行最后一轮运算,最后一轮运算会与前一轮运算的高位进行相加得到最后的结果,最后的结果被暂存到寄存器中,然后计数器会从m-1跳转到0,将结果从寄存器中存到存储器有效地址中。
(2)外设寄存器为1时,计数器的值与随机数的值进行比较,此时的运算为经过混淆的蒙哥马利模乘,经过混淆的蒙哥马利模乘包含有效蒙哥马利模乘和无效蒙哥马利模乘。在计数器的值与随机数的值相等之前,会进行无效蒙哥马利模乘,无效蒙哥马利模乘也是蒙哥马利模乘,此时模乘器的两个输入数据来自存储器的无效地址。当计数器计到与随机数的值相等时,会使计数器跳转到0,然后从0计数到m-1,此时进行的模乘为有效的蒙哥马利模乘,模乘器的两个输入数据为存储器有效地址的值,运算结束之后,将结果暂存到寄存器中,直到计数器计到最大值之后跳转到0,再将结果存到存储器的有效地址中,具体如图5所示。
(3)外设寄存器为2时,随机数先进行奇偶校验,如果校验值为1则进行无效的蒙哥马利运算,结果存放在存储器的无效地址中或者直接丢弃;如果校验值为0,计数器的值与随机数的值进行比较,此时的运算为经过混淆的蒙哥马利模乘,经过混淆的蒙哥马利模乘包含有效蒙哥马利模乘和无效蒙哥马利模乘。在计数器的值与随机数的值相等之前,会进行无效蒙哥马利模乘,无效蒙哥马利模乘也是蒙哥马利模乘,此时模乘器的两个输入数据来自存储器的无效地址。当计数器计到与随机数的值相等时,会使计数器跳转到0,然后从0计数到m-1,此时进行的模乘为有效的蒙哥马利模乘,模乘器的两个输入数据为存储器有效地址的值,运算结束之后,将结果暂存到寄存器中,直到计数器计到最大值之后跳转到0,再将结果存到存储器的有效地址中,具体如图6所示。
(4)外设寄存器为3时,随机数先进行奇偶校验,如果校验值为0则进行无效的蒙哥马利运算,结果存放在存储器的无效地址中或者直接丢弃;如果校验值为1,计数器的值与随机数的值进行比较,此时的运算为经过混淆的蒙哥马利模乘,经过混淆的蒙哥马利模乘包含有效蒙哥马利模乘和无效蒙哥马利模乘。在计数器的值与随机数的值相等之前,会进行无效蒙哥马利模乘,无效蒙哥马利模乘也是蒙哥马利模乘,此时模乘器的两个输入数据来自存储器的无效地址。当计数器计到与随机数的值相等时,会使计数器跳转到0,然后从0计数到m-1,此时进行的模乘为有效的蒙哥马利模乘,模乘器的两个输入数据为存储器有效地址的值,运算结束之后,将结果暂存到寄存器中,直到计数器计到最大值之后跳转到0,再将结果存到存储器的有效地址中,具体如图7所示。
需要注意的是在有效的蒙哥马利模乘运算结束之后,计数器恢复计数,计数器会从m-1跳转到随机数的值加1,然后会一直计到计数器的最大值之后结束计数,恢复计数之后模乘器也在进行无效蒙哥马利模乘运算,但是计算结果既不会暂存到寄存器中,也不会存到存储器中,计算完直接丢弃。
综上,本实施例提供的取模运算方法,可以控制取模运算所用的时间,使每次取模运算的时间不同,而在电压与电流一定的情况下,取模运算的时间越长则功耗越大,这样进行功耗攻击时由于每次取模运算的时间不同导致功耗不同,从而无法判断此时的运算是否是取模运算,使得采用取模运算的加密算法(例如椭圆曲线加密)更不易被破解,提高了取模运算相关加密算法的安全性。
可以理解的是,上述取模运算电路中的任一实施方式均可应用于本实施例中,实现相应的有益效果,在此不再赘述。
本申请实施方式还提供一种电子设备,以执行上述取模运算方法。请参考图8,其示出了本申请的一些实施方式所提供的一种用电设备的示意图。如图8所示,用电设备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中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的用电设备与本申请实施例提供的取模运算方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的取模运算方法对应的计算机可读存储介质,请参考图9,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),计算机程序在被处理器运行时,会执行前述任意实施方式所提供的取模运算方法。
需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的取模运算方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,其均应涵盖在本申请的权利要求和说明书的范围当中。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本申请并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。
Claims (26)
1.一种取模运算电路,其特征在于,包括:
存储模块,用于存储数据;
计算模块,与所述存储数据连接,用于对所述存储模块中的数据进行取模运算;
控制模块,与所述计算模块连接,用于控制所述计算模块进行有效取模运算或者无效取模运算,以调节整体取模运算时间。
2.根据权利要求1所述的取模运算电路,其特征在于,所述控制模块包括状态寄存器和计算控制单元;
在所述状态寄存器存储第一状态值时,所述计算模块进行有效取模运算;在所述状态寄存器存储第二状态值时,所述计算模块至少进行一次无效取模运算;
所述计算控制单元用于控制所述计算模块分别进行有效取模运算和无效取模运算的次数。
3.根据权利要求2所述的取模运算电路,其特征在于,所述计算控制单元包括计数器;
在所述状态寄存器存储所述第一状态值时,所述计算模块进行有效取模运算,且所述计数器对应取模运算次数进行计数,直至计数值达到预设阈值,停止所述有效取模运算。
4.根据权利要求3所述的取模运算电路,其特征在于,所述计算控制单元还包括随机数生成器;
在所述状态寄存器存储所述第二状态值时,所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
5.根据权利要求4所述的取模运算电路,其特征在于,所述计算控制单元还包括奇偶校验器,所述奇偶校验器用于对随机数进行奇偶校验;
在所述状态寄存器存储所述第二状态值时,所述计算模块基于奇偶校验结果、所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
6.根据权利要求5所述的取模运算电路,其特征在于,在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块进行无效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;或者,
在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块进行无效取模运算;或者,
在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块进行有效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;或者,
在所述状态寄存器存储所述第二状态值时,若所述奇偶校验器的结果为第一数值,则所述计算模块基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;若所述奇偶校验器的结果为第二数值,则所述计算模块进行有效取模运算。
7.根据权利要求4-6任一项所述的取模运算电路,其特征在于,在所述状态寄存器存储所述第二状态值时,所述计数器将计数值与所述随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则所述计算模块进行无效取模运算,并对应无效取模运算次数进行计数,直至计数值达到预设阈值,停止所述无效取模运算;
若计数值与随机数相等,则计数值重置初始状态,所述计算模块进行有效取模运算,且所述计数器对应取模运算次数进行计数,直至计数值达到预设阈值并跳转至初始值,停止所述有效取模运算。
8.根据权利要求4-6任一项所述的取模运算电路,其特征在于,停止所述有效取模运算之后,所述计数器恢复计数并跳转至指定数值,所述计算模块进行无效取模运算,且所述计数器对应每次无效取模运算进行计数,直至所述计数器的计数值达到最大值。
9.根据权利要求1-6任一项所述的取模运算电路,其特征在于,所述计算模块进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
10.根据权利要求1-6任一项所述的取模运算电路,其特征在于,还包括中间寄存器,所述计算模块每次进行有效取模运算之后,均将计算结果存储于所述中间寄存器,并覆盖在先的计算结果。
11.根据权利要求1-6任一项所述的取模运算电路,其特征在于,所述存储模块中存储数据的地址包括有效地址和无效地址;所述计算模块从所述有效地址获取数据则进行有效取模运算,所述计算模块从所述无效地址获取数据则进行无效取模运算。
12.根据权利要求3或5所述的取模运算电路,其特征在于,所述状态寄存器存储第三状态值时,所述计算模块进行简单乘法运算。
13.根据权利要求3-6任一项所述的取模运算电路,其特征在于,所述取模运算包括蒙哥马利模乘运算;所述存储模块中存储的数据至少包括操作数、所述操作数的进制,以及取模运算的模数,所述预设阈值等于所述取模运算的模数在所述操作数的进制的位数。
14.一种取模运算方法,其特征在于,应用于权利要求1-13任一项所述的取模运算电路,所述方法包括:
接收取模运算指令;
响应于所述取模运算指令,进行相应的取模运算操作;所述取模运算操作至少包括一次有效取模运算和一次无效取模运算。
15.根据权利要求14所述的取模运算方法,其特征在于,响应于所述取模运算指令,进行相应的取模运算操作,包括:
根据所述取模运算指令携带的信息,确定状态寄存器存储的状态值;
若所述状态寄存器存储第一状态值,则进行有效取模运算;
若所述状态寄存器存储第二状态值,则至少进行一次无效取模运算。
16.根据权利要求15所述的取模运算方法,其特征在于,若所述状态寄存器存储第一状态值,则进行有效取模运算,包括:
若所述状态寄存器存储所述第一状态值,则进行有效取模运算,并通过计数器对应取模运算次数进行计数,直至计数值达到预设阈值,停止所述有效取模运算。
17.根据权利要求16所述的取模运算方法,其特征在于,若所述状态寄存器存储第二状态值,则至少进行一次无效取模运算,包括:
若所述状态寄存器存储所述第二状态值,基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
18.根据权利要求16所述的取模运算方法,其特征在于,若所述状态寄存器存储第二状态值,则至少进行一次无效取模运算,包括:
若所述状态寄存器存储所述第二状态值,基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算。
19.根据权利要求18所述的取模运算方法,其特征在于,所述基于奇偶校验结果、计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,包括:
若所述奇偶校验器的结果为第一数值,则进行无效取模运算;若所述奇偶校验器的结果为第二数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;或者,
若所述奇偶校验器的结果为第一数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次有效取模运算;若所述奇偶校验器的结果为第二数值,则进行无效取模运算;或者,
若所述奇偶校验器的结果为第一数值,则进行有效取模运算;若所述奇偶校验器的结果为第二数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;或者,
若所述奇偶校验器的结果为第一数值,则基于所述计数器的计数值和所述随机数生成器生成的随机数,进行相应的取模运算过程;所述取模运算过程包括至少一次无效取模运算;若所述奇偶校验器的结果为第二数值,则进行有效取模运算。
20.根据权利要求17-19任一项所述的取模运算方法,其特征在于,所述基于计数器的计数值和随机数生成器生成的随机数,进行相应的取模运算过程,包括:
将计数值与所述随机数生成器生成的随机数进行比较,若计数值与随机数不相等,则进行一次无效取模运算,且计数值加一,直至计数值达到预设阈值;
若计数值与随机数相等,则计数值重置初始状态,进行有效取模运算,且所述计数器对应取模运算次数进行计数,直至计数值达到预设阈值。
21.根据权利要求14所述的取模运算方法,其特征在于,所述进行有效取模运算,包括:
进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
22.根据权利要求14-19任一项所述的取模运算方法,其特征在于,还包括:
每次进行有效取模运算之后,均将计算结果存储于中间寄存器,并覆盖在先的计算结果。
23.根据权利要求14-19任一项所述的取模运算方法,其特征在于,所述进行有效取模运算,包括:
基于操作数、所述操作数的进制,以及取模运算的模数进行蒙哥马利模乘运算。
24.根据权利要求17或19所述的取模运算方法,其特征在于,所述方法还包括:
若状态寄存器存储第三状态值,则进行简单乘法运算。
25.一种电子设备,包括存储器、处理器以及存储在所述存储模块中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求14-24任一项所述的取模运算方法。
26.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现如权利要求14-24任一项所述的取模运算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211191913.7A CN117828619A (zh) | 2022-09-28 | 2022-09-28 | 取模运算方法、电路、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211191913.7A CN117828619A (zh) | 2022-09-28 | 2022-09-28 | 取模运算方法、电路、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117828619A true CN117828619A (zh) | 2024-04-05 |
Family
ID=90510230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211191913.7A Pending CN117828619A (zh) | 2022-09-28 | 2022-09-28 | 取模运算方法、电路、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117828619A (zh) |
-
2022
- 2022-09-28 CN CN202211191913.7A patent/CN117828619A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942031B (zh) | 椭圆域曲线运算方法 | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
JP2005503069A (ja) | 秘密の量を保護する方法 | |
CN103903047B (zh) | 一种适用于rfid安全通信的椭圆曲线加密协处理器 | |
JP5365624B2 (ja) | 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 | |
WO2000005837A1 (en) | Timing attack resistant cryptographic system | |
JP2002261753A (ja) | 耐タンパー暗号処理方法 | |
EP0938790B1 (en) | A method and device for executing a decrypting mechanism through calculating a standardized modular exponentiation for thwarting timing attacks | |
KR101925868B1 (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
CA2701855C (en) | Signed montgomery arithmetic | |
CN107896142A (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
CN114527956A (zh) | 抗spa攻击的国密sm2算法中非定点标量乘法的计算方法 | |
JP2009505148A (ja) | 暗号化演算における反転操作を行うための回路配置及び方法 | |
US8626811B2 (en) | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine | |
CN117828619A (zh) | 取模运算方法、电路、电子设备及存储介质 | |
CN117828620A (zh) | 取模运算方法、电路、电子设备及存储介质 | |
CN117828621A (zh) | 取模运算方法、电路、电子设备及存储介质 | |
CN113032797B (zh) | 在处理设备中执行加密操作的方法 | |
US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
JP2004125891A (ja) | べき乗剰余演算器 | |
JP6262085B2 (ja) | データ処理装置及び復号処理方法 | |
Gulen et al. | Side-Channel Resistant 2048-Bit RSA Implementation for Wireless Sensor Networks and Internet of Things | |
JP3779479B2 (ja) | Icカード | |
JP5179933B2 (ja) | データ処理装置 | |
EP4207672B1 (en) | Dummy partial multiplication of zero-operands as a low-cost means for reducing the success of sca attacks against ecc |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |