CN117828621A - 取模运算方法、电路、电子设备及存储介质 - Google Patents
取模运算方法、电路、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117828621A CN117828621A CN202211192472.2A CN202211192472A CN117828621A CN 117828621 A CN117828621 A CN 117828621A CN 202211192472 A CN202211192472 A CN 202211192472A CN 117828621 A CN117828621 A CN 117828621A
- Authority
- CN
- China
- Prior art keywords
- modulo
- modulo operation
- modular
- invalid
- module
- 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 63
- 238000004364 calculation method Methods 0.000 claims abstract description 69
- 230000015654 memory Effects 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 11
- 230000001172 regenerating effect Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 abstract description 6
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 29
- 230000002093 peripheral effect Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000005336 cracking Methods 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
- Executing Machine-Instructions (AREA)
Abstract
本申请提出一种取模运算方法、电路、电子设备及存储介质,该取模运算电路包括:存储模块,用于存储数据;计算模块,与所述存储数据连接,用于对所述存储模块中的数据进行取模运算;控制模块,与所述计算模块连接,控制所述计算模块交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。本申请能够抵抗功耗分析攻击,进一步提高了数据传输的安全性。
Description
技术领域
本申请属于数据处理技术领域,具体涉及一种取模运算方法、电路、电子设备及存储介质。
背景技术
现在人们越来越重视数据的安全性,尤其是在数据传输过程中的安全性。所以,在进行数据传输时,通常会采用加密算法对数据加密。其中,椭圆曲线公钥加密算法(ECC)是一个安全且实用的公钥密码算法,既能用于数据的加密也能用于数字签名,是目前信息安全领域中热门的公钥密码算法。
随着电路等分析技术的发展,密码破解已经不再单纯的停留在数学手段上,而是从密码电路的功耗信息泄露入手,通过对密码芯片加解密过程中的功耗进行分析,发现密码芯片在进行加解密时的功耗波形与其所使用的参数有一定的联系。攻击者利用这种联系,对密码芯片加解密过程的功耗进行分析,以猜测出密码芯片加解密所使用的参数。这种利用参数和功耗间的这种相关性来对参数进行猜测的手段,便称为功耗分析攻击。而目前在芯片中应用的椭圆曲线公钥加密算法,还不能够抵抗上述功耗分析攻击。
发明内容
本申请提出一种取模运算方法、电路、电子设备及存储介质,该方法能够抵抗功耗分析攻击,进一步提高了数据传输的安全性。
本申请第一方面实施例提出了一种取模运算电路,包括:
存储模块,用于存储数据;
计算模块,与所述存储数据连接,用于对所述存储模块中的数据进行取模运算;
控制模块,与所述计算模块连接,控制所述计算模块交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。
可选地,所述控制模块包括计数器和减法器,所述计算模块基于所述减法器的运行结果和所述计数器的计数值,交替进行无效取模运算和有效取模运算。
可选地,所述减法器用于控制所述计算模块每个交替周期进行无效取模运算的次数,所述计数器用于控制所述计算模块进行有效取模运算的总次数。
可选地,所述减法器对生成的随机数进行自减,每次自减所述计算模块进行一次无效取模运算;
所述减法器将随机数减为初始值时,所述计数器开始计数,且所述计算模块进行一次有效取模运算。
可选地,所述控制模块还包括随机数生成器,所述随机数生成器用于分别在所述计算模块启动取模运算、每次所述计数器计数之后生成随机数,以供所述减法器对所述随机数进行自减。
可选地,所述计算模块进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
可选地,还包括中间寄存器,所述计算模块每次进行有效取模运算之后,均将计算结果存储于所述中间寄存器,并覆盖在先的计算结果。
可选地,所述存储模块中存储数据的地址包括有效地址和无效地址;所述计算模块从所述有效地址获取数据则进行有效取模运算,所述计算模块从所述无效地址获取数据则进行无效取模运算。
可选地,所述取模运算包括蒙哥马利模乘运算;所述存储模块中存储的数据至少包括操作数、所述操作数的进制,以及取模运算的模数,所述预设阈值等于所述取模运算的模数在所述操作数的进制的位数。
本申请第二方面的实施例提供了一种取模运算方法,应用于第一方面所述的取模运算电路,所述方法包括:
接收取模运算指令;
响应于所述取模运算指令,交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。
可选地,所述交替进行无效取模运算和有效取模运算,包括:
每个交替周期中,均进行指定次数的有效取模运算,以及不定次数的无效取模运算。
可选地,所述进行指定次数的有效取模运算,以及不定次数的无效取模运算,包括:
基于生成的随机数进行相应次数的无效取模运算;
所述相应次数的无效取模运算计算完成后,进行一次有效取模运算。
可选地,基于生成的随机数进行相应次数的无效取模运算,包括:
每进行一次无效取模运算,生成的随机数自减一个单位值,直至所述随机数自减至预设初始值。
可选地,所述基于生成的随机数进行相应次数的无效取模运算之后,还包括:
计数器的计数值加一,且进行无效取模运算时,所述计数值保持不变。
可选地,所述交替进行无效取模运算和有效取模运算,还包括:
分别在启动取模运算、每次所述计数器计数之后重新生成随机数,并覆盖在先的随机数。
可选地,每次进行有效取模运算之后,所述方法还包括:
将计算结果存储于中间寄存器,并覆盖在先的计算结果。
可选地,所述进行有效取模运算,包括:
基于操作数、所述操作数的进制以及取模运算的模数,进行蒙哥马利模乘运算。
本申请第三方面的实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储模块中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的步骤。
本申请第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现如第一方面所述的方法。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供的取模运算电路,可以控制取模运算所用的时间,使每次取模运算的时间不同,而在电压与电流一定的情况下,取模运算的时间越长则功耗越大,这样进行功耗攻击时由于每次取模运算的时间不同导致功耗不同,从而无法判断此时的运算是否是取模运算,使得采用取模运算的加密算法(例如椭圆曲线加密)更不易被破解,提高了取模运算相关加密算法的安全性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
在附图中:
图1示出了本申请一实施例提供的一种取模运算电路的结构示意图;
图2示出了本申请一实施例提供的另一种取模运算电路的结构示意图;
图3示出了本申请一实施例提供的一种取模运算方法的流程示意图;
图4示出了本申请一实施例提供的另一种取模运算方法的流程示意图;
图5示出了本申请一实施例所提供的一种电子设备的结构示意图;
图6示出了本申请一实施例所提供的一种存储介质的示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整地传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
发明人对现有相关技术进行研究发现,在椭圆曲线加密算法中,决定加密速度和硬件资源的核心运算为点乘运算。在点乘运算中包含随机参数k(通常为私钥)的信息,简单功耗攻击便是利用参数k与运算之间的相关性,从点乘运算的功耗波形中对参数k进行猜测,因此对于点乘的功耗分析攻击便称为椭圆曲线加密算法的攻击点。
在点乘运算中主要包括点加和倍点两种运算,令上述参数k={kl-1......k0},其中,l为k转化为二进制数后的比特长度,ki为k转化为二进制数之后的一个比特值,ki取值0或1。当i=1时要进行点加和倍点两种运算,当ki=0时只进行倍点运算。然后根据点加和倍点运算各自使用的模乘次数可将点加和倍点运算进行区别。由于这种运算的差异性,可以在功耗上表现出明显的差异,简单功耗攻击正是通过采集密码电路的功耗,利用模乘的功耗特点和椭圆曲线加密算法参数之间的这种操作相关性来对参数k进行分析。
而无论是点加还是倍点运算,它的基础运算都是模乘运算,进行功耗攻击也是根据模乘的功耗特点来进行攻击,所以在椭圆曲线加密算法中,这种单纯的模乘运算已经不足以抵抗功耗攻击。
鉴于上述发现,本实施例提供了一种取模运算电路,可以但不限于应用在单片机中,下面以单片机为例,对本申请进行举例说明。本实施例应用的单片机可以分为两个部分,即CPU(Central Processing Unit,中央处理器)和一系列外设,CPU和外设可通过总线连接。常用的外设如串口,定时器、寄存器等。CPU可以执行各种各样的指令,通过执行仿存类指令可配置外设的寄存器,达到控制外设工作的目的。也可以执行数学计算类指令,例如一些算法计算的过程,加法减法乘法除法,计算一个公式,都是通过数学计算类指令来完成的。
请参阅图1,为本实施例提供的取模运算电路的结构示意图,该电路包括存储模块、计算模块和控制模块。其中,存储模块用于存储数据。计算模块与存储模块连接,用于对存储模块中的数据进行取模运算。控制模块与所述计算模块连接,控制所述计算模块交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。
其中,交替进行无效取模运算和有效取模运算,可以理解为一次无效取模运算和一次有效取模运算交替进行,也可以是多次无(有)效取模运算和一次有(无)效取模运算交替进行,即,计算模块启动取模运算程序后,可以首先进行有效取模运算,也可以首先效取模运算,本实施例对此不做具体限定;且每个交替周期中,可以进行一次有效取模运算或者无效取模运算,也可以进行多次有效取模运算或者无效取模运算,本实施例对此也不做具体限定。另外,设阈值可以为任意自然数,本实施例对其也不做具体限定,本领域技术人员可根据需要和技术要求进行设定。
具体地,本实施例可通过状态机辅助计算模块实现各种取模运算程序,例如可在单片机中设置如下状态机:在s0状态,计算模块进行有限次的有效取模运算(或者无效取模运算),之后状态s0转移到s1态,计算模块中断有效取模运算(或者无效取模运算),并进行有限次的无效取模运算(或有效取模运算),之后状态再由s1转移到s0态,计算模块再次进行有限次的有效取模运算(或者无效取模运算),之后状态s0再转移到s1态,如此交替进行,直至有效取模运算的次数达到预设阈值。
本实施例提供的取模运算电路,通过控制模块控制交替进行无效取模运算和有效取模运算,来控制取模运算所用的整体计算时间,而在电压与电流一定的情况下,取模运算的时间越长则功耗越大,这样进行功耗攻击时,由于每次进行加密算法时取模运算的计算时间均不同,且取模运算的时间不同导致功耗不同,从而无法判断此时的运算是否是取模运算,使得采用取模运算的加密算法(例如椭圆曲线加密)更不易被破解,提高了取模运算相关加密算法的安全性。
需要说明的是,上述取模运算指的是包括取模运算的一系列运算而不单指一次取模计算,其可以包括但不限于椭圆曲线加密中应用到的模乘运算(即乘法取模运算),还可以包括加法取模运算、减法取模运算以及指数取模运算(也称为模幂运算)等,还可以包括一些非取模运算的简单运算。本实施例提供的取模运算电路不仅可以用于解决上述技术问题,使椭圆曲线加密算法能够成功抵御功耗攻击,还可以应用于采用上述任意取模运算进行加密的任意场景下,其都能够通过使每次取模运算的时间不同,而使得采用取模运算的加密算法更不易被破解。
上述存储模块存储的数据,可以集成在单片机的CPU中,包括待进行取模运算的数据,也可以包括取模运算的结果和中间数据,以及其它取模运算相关的数据等。具体地,存取模块可以包括多个存储器,可进行分区管理,每个存储区可包括多个存储地址,每个地址可包括一次取模运算所需的所有数据。存储地址可包括有效地址和无效地址,其中,有效地址用于存储有效数据,无效地址用于存储无效数据。这里有效数据可理解为加密算法中实际用到的待计算数据,及其计算结果和相关中间数据等。无效数据可理解为加密算法中实际未用到,只是用于控制取模运算时间的待计算数据,及其计算结果和相关中间数据等。
上述有效取模运算的操作数来自存储模块中有效地址的数据,且有效取模运算的最终计算结果也会存储于存储模块的有效地址中。而上述无效取模运算的操作数来自存储模块中无效地址的数据,且无效取模运算的最终计算结果可以直接丢弃,或者存储于存储模块的无效地址中。
上述计算模块可以集成在单片机的CPU中,与存储模块连接,可根据接收到的计算指令,从存储模块获取数据,进行相应的取模运算,然后将计算结果再存储至存储模块。例如,计算模块可以包括一个或多个取模计算器,可以对一个加密算法进行分布式运算,也可以同时进行多个加密算法的运算。该取模计算器包括但不限于模乘器,也可以包括模幂器、模加器及模减器等。
上述控制模块可形成于单片机的外设中,并与上述计算模块连接,用于控制计算模块进行取模运算的次数,从而控制取模运算的时间。具体地,可在单片机中存储多个运算程序,该多个程序可基于相同的取模运算电路设置,以能够基于相同的电路实现多种运算过程的目的。也可基于多个不同的取模运算电路设置,以能够采用多个运算电路同时进行计算,进而提高计算效率。每个运算程序中取模运算次数可以相同,也可以不同,本实施例对此不作具体限定。该控制模块只需控制计算模块采用的具体运算程序即可。
可选地,如图2所示,所述控制模块包括计数器和减法器,所述计算模块基于所述减法器的运行结果和所述计数器的计数值,交替进行无效取模运算和有效取模运算。
在本实施例中,可借助减法器和计数器辅助计算模块,实现交替进行无效取模运算和有效取模运算。其中,减法器可用于控制计算模块的有效取模运算过程和无效取模运算过程中的一个过程,而计数器则用于控制有效取模运算过程和无效取模运算过程中的另一个过程。减法器的运行结果和计数器的计数值,可分别用于控制计算模块进行有效取模运算的次数和无效取模运算的次数。
具体地,所述减法器可用于控制所述计算模块每个交替周期进行无效取模运算的次数,所述计数器可用于控制所述计算模块进行有效取模运算的总次数。如此,当计算模块交替进行有效取模运算和无效取模运算时,通过减法器控制所述计算模块每个交替周期进行无效取模运算的次数,当减法器的运算结果表示当前周期的无效取模运算次数达到指定数值时,可启动计数器,且计算模块切换至有效取模运算,计数器对有效取模运算的次数进行计数,并在计数器的计数值达到预设阈值时,计算模块停止取模运算。
在一些实施方式中,所述减法器可对生成的随机数进行自减,每次自减计算模块进行一次无效取模运算;所述减法器将随机数减为初始值时,所述计数器开始计数,且计算模块进行一次有效取模运算。
其中,随机数可以为任意8位、16位或更多位的二进制数据,本领域技术人员可根据实际需要进行设定,本实施例对此不作具体限定。每次自减一个单位值,该单位值可以但不限于为1。该随机数可以是CPU内的随机数生成器生成,自计算模块接收的计算指令获取,也可以是在该取模运算电路设置专门用于生成上述随机数的随机数生成器。即,上述控制模块还可以包括随机数生成器,所述随机数生成器用于分别在所述计算模块启动取模运算、每次所述计数器计数之后生成随机数,以供所述减法器对所述随机数进行自减。上述初始值也可以为任意8位、16位或更多位的二进制数据,可以但不限于为0。
可以理解的是,该随机数生成器也可以但不限于设置在单片机的外设部分,例如可以和上述减法器、计数器集成在一起。
在一些实施例中,所述计算模块进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
在另一些实施例中,还包括中间寄存器,所述计算模块每次进行有效取模运算之后,均将计算结果存储于所述中间寄存器,并覆盖在先的计算结果。
具体地,计算模块进行第一轮有效取模运算后,可以将第一轮有效取模运算的结果暂存到寄存器(例如上述的中间寄存器)中。然后进行第二轮有效取模运算,此时,可取第一轮有效取模运算结果的高位(这里高位例如可以是8位二进制数据的高四位,当然根据需要这里也可以选取低位)与第二轮有效取模运算的结果进行相加,然后得到第二轮有效取模运算的实际结果,并将第二轮运算的该实际结果暂存到寄存器中,此时寄存器中的结果被重写,即覆盖上一轮的运算结果。此后的每轮运算都会根据此规律进行叠加,最后一轮有效取模运算会与前一轮运算的高位进行相加得到最后的结果,最后的结果被存储到存储模块的有效地址中。
需要说明的是,本申请中的有效取模运算均可参照上述处理逻辑执行,本实施例不再一一赘述。
在另一些实施例中,控制模块还可以包括奇偶校验器,奇偶校验器用于对随机数进行奇偶校验。该奇偶校验器也可以但不限于设置在单片机的外设部分,例如可以和上述状态寄存器、减法器、随机数生成器中的任意一者或多者集成在一起。在减法器和计数器的基础上,增设了对随机数进行奇偶校验的奇偶校验器,可通过奇偶校验器的校验结果、减法器和随机数,共同对计算模块进行的有效取模运算次数和无效取模运算次数,以及进行有效取模运算和无效取模运算的时机进行控制,使得取模运算程序整体更加复杂,增强了取模运算时间的不确定性,使得基于取模运算的加密算法更加稳定、安全,更加不易被外界破解。
具体地,取模运算可包括蒙哥马利模乘运算;存储模块中存储的数据至少包括操作数、操作数的进制,以及取模运算的模数,预设阈值等于取模运算的模数在操作数的进制的位数。
模乘是为了计算a·b(mod n),即a与b相乘,再对n取模。普通算法中,在计算模n时,利用的是带余除法,除法运算需要太多次乘法,计算复杂度较高。而蒙哥马利算法的思想就是利用进制表示简化除法运算,将除法运算转化为位运算。
传统的蒙哥马利模乘具体实现过程流程如下:
在模乘器输入操作数a和b,以及和模数n,通常a和b均小于n。然后模乘器基于预设程序进行模乘运算,并输出模乘结果d’=a·b·r-m mod n。计算过程中,先另t等于1,并定义i=1至v-1(步长为1),然后另t等于t·t·n mod r。之后另t等于r-t。且为d’赋值0,再定义i=0至m-1(步长为1),计算q=(a0·bi+d’0)·t mod 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有关的变量,可事先计算好,可以在存储器或寄存器(不限于这两种)中预存,或者线路上直接体现,在进行计算时可直接调用即可,可以有效节省蒙哥马利模乘运行时间。蒙哥马利模乘可以避免除法运算,这种实现方式使得在需要进行模幂运算时可以节省大量的运行时间。
基于上述取模运算电路相同的构思,本实施例还提供一种取模运算方法,可应用于上述任意实施方式的取模运算电路,如图3所示,该方法包括以下步骤:
步骤S1,接收取模运算指令。
步骤S2,响应于所述取模运算指令,交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。
如上,该方法具体执行主体可以为上述计算模块,计算模块与存储模块连接,可根据接收到的计算指令,从存储模块获取数据,进行相应的取模运算。具体地,可以预设多个取模运算的处理逻辑,然后根据接收到的指令信息,确定并进行具体对应的取模运算操作。则只需预设不同的取模运算操作,且该取模运算操作至少均为交替进行无效取模运算和有效取模运算,便可使得取模运算的运行时间不同,使得功耗攻击者无法判断此时的运算是否是取模运算,从而可以保护基于取模运算的加密算法参数不被外界所破解。
在一些实施例中,上述交替进行无效取模运算和有效取模运算的步骤,可以包括以下处理:每个交替周期中,均进行指定次数的有效取模运算,以及不定次数的无效取模运算。
本实施例中,鉴于通常有效取模运算的总次数是根据计算的参数决定的,即通常在计算参数一定的情况下,有效取模运算的总次数是一定的。而无效取模运算的总次数是随机的、没有任何限定的。所以,为了控制有效取模运算的总次数,可以在每个交替周期中,均进行指定次数的有效取模运算。然后为了增加该加密算计算时间的不确定性,可以设置不定次数的无效取模运算。
进一步地,上述进行指定次数的有效取模运算,以及不定次数的无效取模运算的步骤,可以包括以下处理:基于生成的随机数进行相应次数的无效取模运算;所述相应次数的无效取模运算计算完成后,进行一次有效取模运算。
其中,随机数可以为任意8位、16位或更多位的二进制数据,本领域技术人员可根据实际需要进行设定,本实施例对此不作具体限定。每次自减一个单位值,该单位值可以但不限于为1。该随机数可以是CPU内的随机数生成器生成,自计算模块接收的计算指令获取,也可以是在该取模运算电路设置专门用于生成上述随机数的随机数生成器。
更进一步地,上述基于生成的随机数进行相应次数的无效取模运算的步骤,可以包括以下处理:每进行一次无效取模运算,生成的随机数自减一个单位值,直至所述随机数自减至预设初始值。
其中,初始值也可以为任意8位、16位或更多位的二进制数据,可以但不限于为0。
在另一些实施例中,上述基于生成的随机数进行相应次数的无效取模运算的步骤之后,还包括以下处理:计数器的计数值加一,且进行无效取模运算时,所述计数值保持不变。
在另一些实施例中,上述交替进行无效取模运算和有效取模运算的步骤,还可以包括以下处理:分别在启动取模运算、每次所述计数器计数之后重新生成随机数,并覆盖在先的随机数。
本实施例通过减法器控制所述计算模块每个交替周期进行无效取模运算的次数,通过所述计数器控制所述计算模块进行有效取模运算的总次数。如此,当计算模块交替进行有效取模运算和无效取模运算时,通过减法器控制所述计算模块每个交替周期进行无效取模运算的次数,当减法器的运算结果表示当前周期的无效取模运算次数达到指定数值时,可启动计数器,且计算模块切换至有效取模运算,计数器对有效取模运算的次数进行计数,并在计数器的计数值达到预设阈值时,计算模块停止取模运算。
在另一些实施例中,每次进行有效取模运算之后,所述方法还可以包括以下处理:将计算结果存储于中间寄存器,并覆盖在先的计算结果。
具体地,计算模块进行第一轮有效取模运算后,可以将第一轮有效取模运算的结果暂存到寄存器(例如上述的中间寄存器)中。然后进行第二轮有效取模运算,此时,可取第一轮有效取模运算结果的高位(这里高位例如可以是8位二进制数据的高四位,当然根据需要这里也可以选取低位)与第二轮有效取模运算的结果进行相加,然后得到第二轮有效取模运算的实际结果,并将第二轮运算的该实际结果暂存到寄存器中,此时寄存器中的结果被重写,即覆盖上一轮的运算结果。此后的每轮运算都会根据此规律进行叠加,最后一轮有效取模运算会与前一轮运算的高位进行相加得到最后的结果,最后的结果存储到存储模块的有效地址中。
在另一些实施例中,该取模运算可以包括蒙哥马利模乘运算,则上述进行有效取模运算的步骤,可以包括以下处理:基于操作数、所述操作数的进制以及取模运算的模数,进行蒙哥马利模乘运算。
下面以蒙哥马利模乘为例,结合图4对本实施例提供的取模运算方法进行详细描述:
为了使蒙哥马利模乘运算不被外界破解,本实施例利用减法器、随机数及外计数器来控制蒙哥马利模乘运算。在进行每一次模乘之前,随机数发生器会产生一个随机数,随机数的大小会影响模乘的时间,由于每一次随机数的不同,所以每一次模乘的时间都是不同的,下面请参见图4,详细介绍两种基于减法器、随机数和计数器的运算情况:
(1)模乘器启动时,随机数发生器会随机产生一个数,然后随机数进入减法器开始自减,随机数每次减去一个数,模乘器就会进行一轮模乘,不过在随机数减为0之前进行的都是无效模乘,模乘器的两个输入数据都是来自存储器的无效地址,每一轮无效模乘的结果不会存入寄存器,会直接丢弃或者存入存储器的无效地址。在随机数减至0时,计数器开始跳动,此时模乘器的两个输入数据来自存储器的有效地址,模乘器开始进行第一轮有效的模乘运算,第一轮模乘运算的结果会暂存到寄存器中。
(2)在第一轮模乘计数之后,计数器的值会一直保持,随机数发生器会再产生一个随机数,然后随机数进入减法器开始自减,随机数每次减去一个数,模乘器就会进行一轮模乘,不过在随机数减为0之前进行的都是无效模乘,模乘器的两个输入数据都是来自存储器的无效地址,每一轮无效模乘的结果不会存入寄存器,会直接丢弃或者存入存储器的无效地址。在随机数减至0时,计数器会自加,此时模乘器的两个输入数据来自存储器的有效地址,模乘器开始进行第二轮有效的模乘运算,第二轮模乘运算会用到第一轮模乘运算的结果,第二轮模乘运算可以从寄存器中取第一轮模乘运算的结果来进行计算,然后将第二轮模乘运算的结果会暂存到寄存器中。之后的每一轮运算都是根据此规律来进行,直至最后一轮模乘计算结束,然后将最后的模乘结果通过寄存器存入存储器。
综上,本实施例提供的取模运算方法,可以控制取模运算所用的时间,使每次取模运算的时间不同,而在电压与电流一定的情况下,取模运算的时间越长则功耗越大,这样进行功耗攻击时由于每次取模运算的时间不同导致功耗不同,从而无法判断此时的运算是否是取模运算,使得采用取模运算的加密算法(例如椭圆曲线加密)更不易被破解,提高了取模运算相关加密算法的安全性。
可以理解的是,上述取模运算电路中的任一实施方式均可应用于本实施例中,实现相应的有益效果,在此不再赘述。
本申请实施方式还提供一种电子设备,以执行上述取模运算方法。请参考图5,其示出了本申请的一些实施方式所提供的一种用电设备的示意图。如图5所示,用电设备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中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的用电设备与本申请实施例提供的取模运算方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的取模运算方法对应的计算机可读存储介质,请参考图6,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),计算机程序在被处理器运行时,会执行前述任意实施方式所提供的取模运算方法。
需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的取模运算方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,其均应涵盖在本申请的权利要求和说明书的范围当中。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本申请并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。
Claims (19)
1.一种取模运算电路,其特征在于,包括:
存储模块,用于存储数据;
计算模块,与所述存储数据连接,用于对所述存储模块中的数据进行取模运算;
控制模块,与所述计算模块连接,控制所述计算模块交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。
2.根据权利要求1所述的取模运算电路,其特征在于,所述控制模块包括计数器和减法器,所述计算模块基于所述减法器的运行结果和所述计数器的计数值,交替进行无效取模运算和有效取模运算。
3.根据权利要求2所述的取模运算电路,其特征在于,所述减法器用于控制所述计算模块每个交替周期进行无效取模运算的次数,所述计数器用于控制所述计算模块进行有效取模运算的总次数。
4.根据权利要求3所述的取模运算电路,其特征在于,所述减法器对生成的随机数进行自减,每次自减所述计算模块进行一次无效取模运算;
所述减法器将随机数减为初始值时,所述计数器开始计数,且所述计算模块进行一次有效取模运算。
5.根据权利要求4所述的取模运算电路,其特征在于,所述控制模块还包括随机数生成器,所述随机数生成器用于分别在所述计算模块启动取模运算、每次所述计数器计数之后生成随机数,以供所述减法器对所述随机数进行自减。
6.根据权利要求1-5任一项所述的取模运算电路,其特征在于,所述计算模块进行相邻两次取模运算中,取在先的取模运算结果的高位与在后的取模运算结果进行相加,得到在后的取模运算的实际结果。
7.根据权利要求1-5任一项所述的取模运算电路,其特征在于,还包括中间寄存器,所述计算模块每次进行有效取模运算之后,均将计算结果存储于所述中间寄存器,并覆盖在先的计算结果。
8.根据权利要求1-5任一项所述的取模运算电路,其特征在于,所述存储模块中存储数据的地址包括有效地址和无效地址;所述计算模块从所述有效地址获取数据则进行有效取模运算,所述计算模块从所述无效地址获取数据则进行无效取模运算。
9.根据权利要求1-4任一项所述的取模运算电路,其特征在于,所述取模运算包括蒙哥马利模乘运算;所述存储模块中存储的数据至少包括操作数、所述操作数的进制,以及取模运算的模数,所述预设阈值等于所述取模运算的模数在所述操作数的进制的位数。
10.一种取模运算方法,其特征在于,应用于权利要求1-9任一项所述的取模运算电路,所述方法包括:
接收取模运算指令;
响应于所述取模运算指令,交替进行无效取模运算和有效取模运算,直至有效取模运算的次数达到预设阈值。
11.根据权利要求10所述的取模运算方法,其特征在于,所述交替进行无效取模运算和有效取模运算,包括:
每个交替周期中,均进行指定次数的有效取模运算,以及不定次数的无效取模运算。
12.根据权利要求11所述的取模运算方法,其特征在于,所述进行指定次数的有效取模运算,以及不定次数的无效取模运算,包括:
基于生成的随机数进行相应次数的无效取模运算;
所述相应次数的无效取模运算计算完成后,进行一次有效取模运算。
13.根据权利要求12所述的取模运算方法,其特征在于,基于生成的随机数进行相应次数的无效取模运算,包括:
每进行一次无效取模运算,生成的随机数自减一个单位值,直至所述随机数自减至预设初始值。
14.根据权利要求12所述的取模运算方法,其特征在于,所述基于生成的随机数进行相应次数的无效取模运算之后,还包括:
计数器的计数值加一,且进行无效取模运算时,所述计数值保持不变。
15.根据权利要求14所述的取模运算方法,其特征在于,所述交替进行无效取模运算和有效取模运算,还包括:
分别在启动取模运算、每次所述计数器计数之后重新生成随机数,并覆盖在先的随机数。
16.根据权利要求10-15任一项所述的取模运算方法,其特征在于,每次进行有效取模运算之后,所述方法还包括:
将计算结果存储于中间寄存器,并覆盖在先的计算结果。
17.根据权利要求10-15任一项所述的取模运算方法,其特征在于,所述进行有效取模运算,包括:
基于操作数、所述操作数的进制以及取模运算的模数,进行蒙哥马利模乘运算。
18.一种电子设备,包括存储器、处理器以及存储在所述存储模块中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求10-17任一项所述的方法。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现如权利要求10-17任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211192472.2A CN117828621A (zh) | 2022-09-28 | 2022-09-28 | 取模运算方法、电路、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211192472.2A CN117828621A (zh) | 2022-09-28 | 2022-09-28 | 取模运算方法、电路、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117828621A true CN117828621A (zh) | 2024-04-05 |
Family
ID=90503264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211192472.2A Pending CN117828621A (zh) | 2022-09-28 | 2022-09-28 | 取模运算方法、电路、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117828621A (zh) |
-
2022
- 2022-09-28 CN CN202211192472.2A patent/CN117828621A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942031B (zh) | 椭圆域曲线运算方法 | |
US20220075879A1 (en) | Protection of cryptographic operations by intermediate randomization | |
US20210243006A1 (en) | Integrated circuit for modular multiplication of two integers for a cryptographic method, and method for the cryptographic processing of data based on modular multiplication | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
US7580966B2 (en) | Method and device for reducing the time required to perform a product, multiplication and modular exponentiation calculation using the Montgomery method | |
US10721056B2 (en) | Key processing method and device | |
JP2019515353A (ja) | 暗号化べき乗アルゴリズムへのセーフ−エラーフォールトインジェクション攻撃に対する対策 | |
CN102043916A (zh) | 一种高性能可扩展公钥密码协处理器结构 | |
CN111092718A (zh) | 加密方法、装置及电子设备 | |
CN107896142B (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
KR101925868B1 (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
Chen et al. | A high-performance unified-field reconfigurable cryptographic processor | |
CN114527956A (zh) | 抗spa攻击的国密sm2算法中非定点标量乘法的计算方法 | |
Moon et al. | Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications | |
JP2009505148A (ja) | 暗号化演算における反転操作を行うための回路配置及び方法 | |
CN117828621A (zh) | 取模运算方法、电路、电子设备及存储介质 | |
Moreno et al. | SPA-resistant binary exponentiation with optimal execution time | |
US11985221B2 (en) | Efficient masking of secure data in ladder-type cryptographic computations | |
CN114238205B (zh) | 一种抗功耗攻击的高性能ecc协处理器系统 | |
CN117828619A (zh) | 取模运算方法、电路、电子设备及存储介质 | |
CN117828620A (zh) | 取模运算方法、电路、电子设备及存储介质 | |
TWI630545B (zh) | 非模數乘法器、用於非模數乘法的方法及計算裝置 | |
JP2004125891A (ja) | べき乗剰余演算器 | |
JP2007520729A (ja) | 改良された低減計算 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |