WO2020037565A1 - 模逆运算器、模逆运算方法及安全系统 - Google Patents
模逆运算器、模逆运算方法及安全系统 Download PDFInfo
- Publication number
- WO2020037565A1 WO2020037565A1 PCT/CN2018/101793 CN2018101793W WO2020037565A1 WO 2020037565 A1 WO2020037565 A1 WO 2020037565A1 CN 2018101793 W CN2018101793 W CN 2018101793W WO 2020037565 A1 WO2020037565 A1 WO 2020037565A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- operand
- word length
- bit
- type
- operands
- 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.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
Definitions
- the control unit 10 controls the calculation unit 12 to perform modulo inverse operations on the operands with the updated effective word length. Specifically, during the operation, the intermediate operands u, v, x1, and x2 are read, calculated, and the result is stored. According to the effective word length recorded in the first register 110, only the operands of the effective word length are accessed and calculated. For example, the initial word length of operand u is 32, that is, the initial number of bits of operand u is 1024 bits. In the modulo inverse operation, when the number of bits in the intermediate number of operand u is reduced to 512 bits, the word length is reduced. When there are 16, the control unit 10 only controls operands of 16 words for access and calculation.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种模逆运算器、模逆运算方法及安全系统,涉及信息安全技术领域。模逆运算器(1)包括:计数器(11)、计算单元(12)以及控制单元(10);控制单元(10)用于通过计数器(11)更新模逆运算的操作数的有效字长,并将更新后的有效字长记作当前有效字长;控制单元(10)还用于控制计算单元(12)以当前有效字长的操作数进行模逆运算。通过控制有效字长的操作数进行模逆运算,可以减少操作数的存取以及计算次数,提高计算效率。
Description
本申请涉及信息安全技术领域,特别涉及一种模逆运算器、模逆运算方法及安全系统。
在公钥密码体制中,当前主流的公钥密码算法有RSA和椭圆曲线密码(Elliptic Curve Cryptography,ECC)两种。ECC密码体制比RSA等其他公钥密码体制更加节省资源且加解密效率更高。模逆运算单元是整个ECC系统中最耗费时间的模块,因此提高模逆运算单元的处理速度是提升整个ECC系统的运行效率的关键所在。
发明人发现现有技术至少存在以下问题:现有的模逆运算器在计算效率方面还有待改进。
发明内容
本申请部分实施例的目的在于提供一种模逆运算器、模逆运算方法及安全系统,通过控制有效字长的操作数进行模逆运算,从而减少操作数的存取以及计算次数,提高计算效率。
本申请实施例提供了一种模逆运算器,包括:计数器、计算单元以及控 制单元;所述控制单元用于通过所述计数器更新模逆运算的操作数的有效字长,并将更新后的所述有效字长记作当前有效字长;所述控制单元还用于控制所述计算单元以当前有效字长的所述操作数进行模逆运算。
本申请实施例还提供了一种模逆运算方法,包括:根据已执行的模逆运算更新操作数的有效字长;根据更新的有效字长进行后一步模逆运算。
本申请实施例还提供了一种安全系统,包括存储器以及如前所述的模逆运算器;所述存储器与所述模逆运算器连接,用于存储模逆运算的相关数据,或者所述模逆运算的相关数据以及所述系统中的其他数据。
本申请实施例相对于现有技术而言,在模逆运算过程中,通过计数器更新操作数的有效字长,并以更新后的有效字长的操作数进行模逆运算。由于模逆运算中,操作数的有效字长会逐渐增加或者减少,因此以有效字长的操作数进行模逆运算可减少操作数的存取以及计算次数,提高计算效率。
另外,所述计数器包括第一寄存器以及第二寄存器;所述控制单元用于控制所述第一寄存器记录所述操作数的有效字长,还用于在模逆运算过程中,通过所述第二寄存器累计所述操作数的比特变化次数,并根据所述比特变化次数更新所述第一寄存器记录的所述有效字长。本实施例单独通过第一寄存器记录操作数的有效字长,并通过第二寄存器累计操作数的比特变化次数,硬件实现更简单,且更便于控制单元更新以及获取操作数的有效字长。
另外,所述控制单元用于根据预设的字长更新规则更新所述有效字长,所述字长更新规则包括:当所述操作数增大时,且所述第二寄存器累计的比特变化次数达到所述操作数的单位字长时,将所述操作数的有效字长加1,当所述操作数减小时,且所述操作数的比特变化次数达到所述单位字长时,将所述 操作数的有效字长减1。
另外,所述第二寄存器的位数为
其中W是所述操作数的单位字长。本实施例以单位字长作为第二寄存器的最大累计值对操作数的有效字长进行更新,不仅使得第二寄存器硬件资源需求小,而且使得参与运算的操作数的有效字长更接近其实际字长,计算效率更高。
另外,所述操作数包括第一类型的操作数,所述计算单元包括移位器以及加减法器;所述控制单元控制所述移位器对所述第一类型的操作数进行左移一位运算,并通过所述计数器将所述第一类型的操作数的比特变化次数加1;
所述控制单元还控制所述加减法器对第一类型的操作数进行加法运算,在所述加法运算的加数小于或者等于被加的第一类型的操作数时,将所述被加的第一类型的操作数的比特变化次数加1,在所述加数大于所述被加的第一类型的操作数时,通过所述计数器将所述被加的第一类型的操作数的有效比特长度更新为所述加数的有效比特长度。本实施例为第一类型的操作数的有效字长的准确更新提供了一种方法。
另外,所述操作数还包括第二类型的操作数;所述控制单元控制所述移位器对所述第二类型的操作数进行右移一位运算,并通过所述计数器将所述第二类型的操作数的比特变化次数加1;所述控制单元还控制所述加减法器对所述第二类型的操作数进行预设减法运算,并控制所述移位器对所述减法运算的结果右移一位,通过所述计数器将所述第二类型的操作数的比特变化次数加1;其中,所述预设减法运算的减数小于被减数。本实施例为第二类型的操作数的有效字长的准确更新提供了一种方法。
另外,所述模逆运算器还包括寄存器堆,用于存储模逆运算的模数,所 述寄存器堆包括多个寄存器,且所述多个寄存器的总比特长度为所述模数的比特长度。
另外,所述计算单元包括:移位器以及加减法器;所述控制单元用于控制所述计算单元按照以下步骤进行所述模逆运算:
S1:初始化所述模逆运算的相关数据;其中,所述模逆运算为:Y=a
-1mod p,Y、a、p分别为所述模逆运算的结果、输入数以及模数;所述模逆运算的相关数据包括操作数u、v、x1、x2以及参数k,所述模逆运算的相关数据分别初始化为:u=a,v=p,x1=1,x2=0,k=0;
S2:判断v是否大于0,如果v大于0,则执行步骤S3,如果v小于或者等于0,则执行步骤S4;
所述S3包括:
在v为偶数时,控制所述移位器将v右移一位,x1左移一位,并将k的值加1;
在v为奇数且u为偶数时,控制所述移位器将u右移一位,x2左移一位,并将k的值加1;
在u、v均为奇数,且v大于或者等于u时,控制所述加减法器以及所述移位器执行:v=(v-u)/2、x2=x2+x1、x1左移一位运算,并将k的值加1;
在u、v均为奇数,且v小于u时,控制所述加减法器以及所述移位器执行:u=(u-v)/2、x1=x2+x1、x2左移一位运算,并将k的值加1;
在k的值每加1后,返回步骤S2;
所述S4包括:
在u等于1且x1大于模数p时,将x1减去p并赋值给x1后返回中间结 果;
在u等于1且x1小于或者等于模数p时,返回中间结果;
在u不等于1时,返回a不可逆;
S5:对所述中间结果进行蒙哥马利模乘得到所述Y;
所述控制单元还用于在所述步骤S3中,在所述移位器以及加减法器每计算一次,控制所述计数器更新对应的操作数的有效字长。
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本申请第一实施例中的模逆运算电路及其应用的安全系统的的示意图;
图2是根据本申请第一实施例中的模逆运算电路的一种模逆运算方法的流程图;
图3是根据本申请第二实施例中的模逆运算方法的流程图。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
请参阅图1,本申请第一实施例涉及一种模逆运算器1,可应用于安全系 统,该安全系统例如为金融卡、门卡、指纹锁以及安全的嵌入式设备等的公钥密码系统。该模逆运算器1包括:控制单元10、计数器11以及计算单元12,控制单元10用于通过计数器11更新模逆运算的操作数的有效字长,并将更新后的有效字长记作当前有效字长,控制单元10还用于控制计算单元12以当前有效字长的操作数进行模逆运算。一个操作数的有效位数例如是2048bit,单位字长例如是32bit,该操作数的有效字长就是64个单位字长,即64个。
具体而言,计数器11包括第一寄存器110以及第二寄存器111,控制单元10具体用于控制第一寄存器110记录操作数的有效字长,还用于在模逆运算过程中,通过第二寄存器111累计操作数的比特变化次数,并根据累计的比特变化次数更新第一寄存器110记录的有效字长。具体地,第一寄存器110的位数可以根据需要存储的操作数的字长确定,控制单元10可以根据第一寄存器110直接得到操作数的有效字长。第二寄存器111的位数可以为
其中W是操作数的单位字长,然不限于此,例如,第二寄存器111的位数还可以为
其中2W表示2个单位字长,第二寄存器111的位数还可以是
其中4W为4个单位字长,等等。通过第二寄存器111累计操作数的比特变化次数以更新操作数的有效字长,通过第一寄存器110记录操作数的有效字长,便于控制单元10更新比特变化次数并获取操作数的有效字长。在一个例子中,计数器还可以为位数为
的寄存器Z,Z的大小可以根据需要存储的操作数的比特数确定,寄存器Z用于记录操作数的实际比特数,控制单元10也可通过寄存器Z得到操作数的有效字长。本实施例对于计数器的实现方式不作具体限制。
控制单元10具体用于根据预设的字长更新规则更新有效字长,具体地, 字长更新规则包括:当操作数增大时,且第二寄存器累计的比特变化次数达到操作数的单位字长时,将操作数的有效字长加1,当操作数减小时,且操作数的比特变化次数达到单位字长时,将操作数的有效字长减1。其中,左移1位表示操作数乘以2,右移1位表示操作数除以2,即左移增大,右移减小。其中,第二寄存器111的位数可以为
因此第二寄存器111可以累计的最大比特变化次数等于一个单位字长的比特数(即W),W例如为32bit(比特),此时第二寄存器111为5位寄存器,然不限于此,在实际应用中,W还可以是16bit或者64bit。控制单元10在第二寄存器111的计数值达到最大值(即5个1)或者最小值(即5个0)时,即可将操作数的有效字长加1或者减1。这样,第二寄存器111的位数很小,更节省硬件资源,同时,操作数的比特每增加或者减少一个单位字长,操作数的有效字长即被立即更新,使得参与运算的操作数的有效字长更接近其实际字长,可以避免无意义的操作数的存取以及计算次数,计算效率非常高。
请参阅图2,现结合本实施例的模逆运算电路,举例一种二进制欧几里得模逆算法的演变算法,对本实施例的有效字长的更新方式进行详细说明,然不限于此,在实际应用中,也可以采用二进制欧几里得算法的其他变种或者其他适用的模逆运算方法。
计算单元12还包括:移位器120以及加减法器121,控制单元10用于控制计算单元12按照以下步骤进行模逆运算:
具体地,模逆运算包括如下步骤2001~2016以及蒙哥马利模乘步骤。
其中,模逆运算公式为:Y=a
-1mod p,Y、a、p分别为模逆运算的结果、输入数以及模数。通过步骤2001~步骤2016,可得到中间结果x1=a
-12
kmodp。
步骤2001:初始化模逆运算的相关数据。
具体地,模逆运算的操作数包括u、v、x1、x2,各操作数分别初始化为:u=a,v=p,x1=1,x2=0。在本发明的模逆运算过程中,u、v减小,x1,x2两个变量增大。
其中,k作为模逆运算的一个参数,初始化为0,即k=0。本实施例中,操作数u、v、x1、x2均可以存储在存储器2中,存储器2还可以存储安全系统中的其他数据,即模逆运算器1与系统中其他功能模块共享存储资源。k可以存储在模逆运算器1内部的寄存器中,存储器2可采用单口只读存储器(Single Port Read Only Memory,简称SP_RAM),即存储器2只有一个读写端口,同一时刻只能读取或写入,有利于降低成本。
步骤2002:判断v是否大于0,若v大于0,则执行步骤2003,否则执行步骤2012。
步骤2003:判断v是否为偶数,如果v是偶数,则执行步骤2006,如果v不是偶数,即v为奇数,则执行步骤2004。
步骤2004:判断u是否为偶数,如果u是偶数,则执行步骤2007,如果u不是偶数,则执行步骤2005。
步骤2005:判断v是否大于或者等于u,如果v大于或者等于u,则执行步骤2008,如果v小于u,则执行步骤2009。
步骤2006:控制单元10控制移位器120将v右移一位,x1左移一位,并转到步骤2010。
步骤2007:控制单元10控制移位器120将u右移一位,x2左移一位,并转到步骤2010。
步骤2008:执行第一预设运算,第一预设运算包括:v=(v-u)/2、x2=x2+x1以及x1进行左移一位运算,即控制单元10控制移位器120以及加减法器121执行:v=(v-u)/2、x2=x2+x1以及x1左移一位运算,然后转到步骤2010。
步骤2009:执行第二预设运算,第二预设运算包括:u=(u-v)/2、x1=x2+x1以及x2进行左移一位运算,即控制单元10控制移位器120以及加减法器121执行:u=(u-v)/2、x1=x2+x1以及x2左移一位运算,然后转到步骤2010;
步骤2010:将寄存器k的值加1,即k=k+1;
步骤2011:更新步骤2006~2009各运算对应的操作数的有效字长,然后转到步骤2002;
具体地,步骤2006中,控制单元10控制计数器11更新操作数v、x1的有效字长;步骤2007中,控制单元10控制计数器11更新操作数u、x2的有效字长;步骤2008中,控制单元10控制计数器11更新操作数v、x1、x2的有效字长;步骤2009中,控制单元10控制计数器11更新操作数u、x1、x2的有效字长。各操作数的有效字长的更新方式具体见下文。本实施例对于各操作数的有效字长以及参数k的更新顺序不作限制。
步骤2012:判断u是否等于1,如果u等于1,则执行步骤2013,如果u不等于1,则执行步骤2016。
步骤2013:判断x1是否大于模数p,如果x1大于p,则执行步骤2014,如果x1小于或者等于p,则进行步骤2015。
步骤2014:将x1减去p并赋值给x1后返回中间结果,即进行x1=x1-p运算后返回中间结果。
步骤2015:返回中间结果(x1,k),其中,x
1=a
-12
kmod p。
步骤2016:返回a不可逆。
以上计算过程中,得到了中间结果x
1=a
-12
kmod p,x1中包含有2^k,需要对中间结果进行两次蒙哥马利模乘,得到最终的模逆计算结果,即a
-1mod p。
蒙哥马利模乘的计算步骤如下:
输入:
计算T=2
2n-k,由于n≤k≤2n,1≤T≤2
n
计算蒙哥马利模乘R1=MM(x
1,T)=a
-1*2
nmod p;
计算蒙哥马利模乘R2=MM(R1,1)=a
-1mod p;
返回计算结果a
-1mod p。
蒙哥马利模乘的实现方法为本领域技术人员熟知,此处不再赘述。
本实施例的模逆运算电路按照上述模逆运算方法进行模逆运算时,由于计算过程中对操作数的移位只有左移和右移一位的操作,并且在减法运算中,先比较v、u的大小,再将两者中较大的操作数作为减数,较小的操作数作为被减数,从而保证减法运算的结果总为正数,使得计算过程中不会出现负数,避免出现额外的复杂控制流程,因此,模逆运算电路的计算流程和控制流程都非常简单,易于实现。
接下来结合上述模逆运算方法描述操作数的有效字长的更新方式,并以操作数的单位字长(即W)为32bit为例说明第一寄存器110和第二寄存器111 的更新方式。根据实际情况,W也可以是其他值,例如16bit、64bit等。
本实施例中,计算单元12例如包括1个移位器120以及1个加减法器121,然不限于此,移位器以及加减法器的数量还可以为2个或者2个以上。操作数包括:第一类型的操作数以及第二类型的操作数,其中,上述操作数x1、x2属于第一类型的操作数,操作数u、v属于第二类型的操作数。其中,在一种实施例中,操作数的类型可以依据操作数在模逆运算过程中的变化趋势来确定,比如说,操作数u、v、x1、x2在模逆运算中都是变化的,第一类型以及第二类型可以分别指操作数在运算过程中增大或者减小。其中,操作数u、v、x1、x2均以字长W为单位进行存取,即操作数的单位字长均为W。在模逆运算过程中,控制单元10从存储器2中读出上述操作数,并控制计算单元12以字长W为单位进行计算。具体地,控制单元10控制移位器120对第一类型的操作数进行左移一位运算,控制加减法器121对第一类型的操作数进行加法运算,控制移位器120对第二类型的操作数进行右移一位运算,控制加减法器121对第二类型的操作数进行预设减法运算,预设减法运算的减数小于被减数,并控制移位器120对减法运算的结果右移一位。因此,第一类型的操作数的有效字长逐渐减小,第二类型的操作数的有效字长逐渐增大。
为了得到各操作数的有效字长,第二寄存器111包括:u_bit_len、v_bit_len、x1_bit_len、x2_bit_len等的4个寄存器(图未示),分别用于累计操作数u、v、x1以及x2的比特变化次数。第一寄存器110包括u_word_len、v_word_len、x1_word_len以及x2_word_len等的4个寄存器,分别用于记录操作数u、v、x1以及x2的有效字长。其中,u_bit_len、v_bit_len的初始值分别设置为最大值(即5个1),x1_bit_len、x2_bit_len的初始值分别设置为最小值 (即5个0),u_word_len、v_word_len的初始值分别设置为最大值,x1_word_len、x2_word_len的初始值分别设置为0。也就是第一类型的操作数对应的用于记录比特变化次数和有效字长的寄存器初始值都是0,而第二类型的操作数对应的用于记录比特变化次数和有效字长的寄存器初始值都是最大值。
操作数x1、x2的比特变化次数以及有效字长的更新方式如下:
控制单元10在控制移位器120对第一类型的操作数进行左移一位运算时,通过计数器11将第一类型的操作数的比特变化次数加1,在第一类型的操作数的比特变化次数达到单位字长时,将第一类型的操作数的有效字长加1。具体地,以操作数x1为例,控制单元10在x1左移一位时,控制x1_bit_len的计数值加1,并判断x1_bit_len的计数值是否达到最大值,如果达到最大值,则控制x1_word_len的计数值加1。控制单元10在控制加减法器121对第一类型的操作数进行加法运算时,在加法运算的加数小于或者等于被加的第一类型的操作数时,将被加的第一类型的操作数的比特变化次数加1,在加数大于被加的第一类型的操作数时,通过计数器11将被加的第一类型的操作数的有效比特长度更新为加数的有效比特长度。例如操作数x1作为被加数,x2作为加数,并将加法运算结果赋值给x1,控制单元10在x1大于或者等于x2时,将x1的比特变化次数加1,即将x1_bit_len的计数值加1;在x1小于x2时,将x1的有效比特长度更新为x2的有效比特长度,具体地,将x2_word_len的值写入x1_word_len,将x2_bit_len的值写入x1_bit_len。
在一个例子中,控制单元10在判断x1和x2的大小时,可以先判断x1_word_len是否小于x2_word_len,如果x1_word_len小于x2_word_len,则判定x1小于x2,此时,控制单元10将x1的有效比特数更新为x2的有效比特数; 如果x1_word_len等于x2_word_len,则判断x1_bit_len是否小于x2_bit_len,如果x1_bit_len小于x2_bit_len,则判定x1小于x2,此时,控制单元10将x1的有效比特数更新为x2的有效比特数;如果x1_word_len等于x2_word_len且x1_bit_len大于或者x2_bit_len,或者x1_word_len大于x2_word_len,则判定x1大于或者等于x2,此时,控制单元10将x1的比特变化次数加1,即将x1_bit_len的计数值加1。需要说明的是,控制单元10在x1_bit_len加1时,同时判断x1_bit_len是否达到最大值,如果x1_bit_len达到最大值,则将x1_word_len加1。控制单元10对操作数x2的处理方式与操作数x1的处理方式类似,此处不再赘述。
下面对控制单元10根据模逆运算过程更新操作数u、v的比特变化次数以及有效字长的方式说明如下:
控制单元10在控制移位器120对第二类型的操作数进行右移一位运算时,通过计数器11将第二类型的操作数的比特变化次数加1,具体地,可将u_bit_len、v_bit_len的计数值初始化为5个1,在操作数u、v右移一位时,控制单元10分别控制u_bit_len、v_bit_len的计数值减1,即u_bit_len、v_bit_len的计数值每减1,操作数u、v的比特变化次数增加1次。
控制单元10在控制加减法器121对第二类型的操作数进行减数小于被减数的减法运算且控制移位器120对减法运算的结果右移一位时,通过计数器11将被减数的比特变化次数加1。具体地,在做减法运算时,控制单元10先比较操作数u、v的大小,并将较小的操作数作为减数,较大的操作数作为被减数进行减法运算,并将减法运算的结果右移一位后赋值给被减数,例如执行u=(u-v)/2运算时,控制单元10控制u_bit_len的计数值减1,即操作数u的比特变化次 数加1,控制单元10还可以在控制u_bit_len减1时,判断u_bit_len是否达到最小值,如果u_bit_len为最小值,则更新u_word_len,即将u_word_len减1。操作数v的有效字长的更新方式与操作数u类似,此处不再赘述。
值得一提的是,第二寄存器111可以设计为达到最大值或者最小值时自动复位的寄存器。例如,x1_bit_len、x2_bit_len可设计成在达到最大值时自动复位为最大值,u_bit_len、v_bit_len可设计成在达到最小值时自动复位为最小值,从而便于第二寄存器111以单位字长累计比特变化次数。
控制单元10控制计算单元12以更新后的有效字长的操作数进行模逆运算,具体是指,在运算过程中,对于中间操作数u、v、x1、x2的读取、计算和结果存储,均根据第一寄存器110记录的有效字长,只对有效字长的操作数进行存取和计算。例如,操作数u的初始字长为32个,即操作数u的初始比特数为1024比特,在模逆运算中,当操作数u的中间数的比特数减少为512比特,即字长减少为16个时,控制单元10仅控制16个字长的操作数进行存取和计算。
在一个例子中,模逆运算器1还可以包括寄存器堆(图未示),用于存储模逆运算的模数p,寄存器堆可以包括多个寄存器,且多个寄存器的总比特长度为模数p的比特长度。这样,模数p可以预存在模逆运算器的内部寄存器中,便于执行模逆运算。
本实施例相对于现有技术而言,在模逆运算过程中,可以根据模逆运算流程准确更新操作数的有效字长,从而实现以有效字长的操作数进行模逆运算,可大幅减少操作数的存取以及计算次数,提高计算效率,并且模逆运算电路实现简单,控制流程以及计算流程简单,适于推广应用。
本申请第二实施例涉及一种模逆运算方法,包括步骤301以及步骤302。
步骤301:根据已执行的模逆运算更新操作数的有效字长。
步骤302:根据更新的有效字长进行后一步模逆运算。
步骤301具体包括:根据已执行的模逆运算累计操作数的比特变化次数,根据累计的比特变化次数更新有效字长。
请继续参阅图2,本实施例的模逆运算流程与第一实施例相同,此处不再赘述。根据已执行的模逆运算累计操作数的比特变化次数具体包括:操作数包括第一类型的操作数以及第二类型的操作数,针对第一类型的操作数,在对第一类型的操作数进行左移一位运算时,将第一类型的操作数的比特变化次数加1;在对第一类型的操作数进行加法运算,且在加法运算的加数小于或者等于被加的第一类型的操作数时,将被加的第一类型的操作数的比特变化次数加1,在加数大于被加的第一类型的操作数时,将被加的第一类型的操作数的有效比特长度更新为加数的有效比特长度。
针对第一类型的操作数,在对第二类型的操作数进行右移一位运算时,将第二类型的操作数的比特变化次数加1;在对第二类型的操作数进行预设减法运算且对减法运算的结果右移一位时,将第二类型的操作数的比特变化次数加1;其中,预设减法运算的减数小于被减数,从而可保证模逆运算的中间结果不会出现负数,避免中间结果为负数时带来的复杂的控制流程。
根据累计的比特变化次数更新有效字长具体包括:根据预设的字长更新规则更新有效字长。其中,字长更新规则包括:当操作数增大时,且第二寄存器累计的比特变化次数达到操作数的单位字长时,将操作数的有效字长加1,当操作数减小时,且操作数的比特变化次数达到单位字长时,将操作数的有效字长减1。
上述步骤中操作数的比特变化次数以及有效字长的更新方式与第一实施例类似,此处不再赘述。
本实施例与现有技术相比,根据模逆运算流程更新操作数的有效字长,从而实现以有效字长的操作数进行模逆运算,可大幅减少操作数的存取以及计算次数,提高计算效率,并且控制流程以及计算流程简单,适于推广应用。
本申请第三实施例涉及一种安全系统,请继续参阅图1,该安全系统包括存储器2以及如第一实施例所述的模逆运算器,存储器2与模逆运算器1连接,用于存储模逆运算的相关数据,或者存储器2存储模逆运算的相关数据以及安全系统中的其他功能模块的数据。
本实施例与现有技术相比,通过将模逆运算器的相关数据存储在外部的存储器2中,可以进一步减小模逆运算器的面积。模逆运算器还可以与系统中的其他功能模块共享存储资源,可进一步节约系统资源。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (15)
- 一种模逆运算器,其特征在于,包括:计数器、计算单元以及控制单元;所述控制单元用于通过所述计数器更新模逆运算的操作数的有效字长,并将更新后的所述有效字长记作当前有效字长;所述控制单元还用于控制所述计算单元以当前有效字长的所述操作数进行模逆运算。
- 如权利要求1所述的模逆运算器,其中,所述计数器包括第一寄存器以及第二寄存器;所述控制单元用于控制所述第一寄存器记录所述操作数的有效字长,还用于在模逆运算过程中,通过所述第二寄存器累计所述操作数的比特变化次数,并根据所述比特变化次数更新所述第一寄存器记录的所述有效字长。
- 如权利要求2所述的模逆运算器,其中,所述控制单元用于根据预设的字长更新规则更新所述有效字长,所述字长更新规则包括:当所述操作数增大时,且所述第二寄存器累计的比特变化次数达到所述操作数的单位字长时,将所述操作数的有效字长加1,当所述操作数减小时,且所述操作数的比特变化次数达到所述单位字长时,将所述操作数的有效字长减1。
- 如权利要求3所述的模逆运算器,其中,所述第二寄存器的位数为Log2W,其中W是所述操作数的单位字长。
- 如权利要求1至4中任一项所述的模逆运算器,其中,所述操作数包括第一类型的操作数,所述计算单元包括移位器以及加减法器;所述控制单元控制所述移位器对所述第一类型的操作数进行左移一位运 算,并通过所述计数器将所述第一类型的操作数的比特变化次数加1;所述控制单元还控制所述加减法器对第一类型的操作数进行加法运算,在所述加法运算的加数小于或者等于被加的第一类型的操作数时,将所述被加的第一类型的操作数的比特变化次数加1,在所述加数大于所述被加的第一类型的操作数时,通过所述计数器将所述被加的第一类型的操作数的有效比特长度更新为所述加数的有效比特长度。
- 如权利要求5所述的模逆运算器,其中,所述操作数还包括第二类型的操作数;所述控制单元控制所述移位器对所述第二类型的操作数进行右移一位运算,并通过所述计数器将所述第二类型的操作数的比特变化次数加1;所述控制单元还控制所述加减法器对所述第二类型的操作数进行预设减法运算,并控制所述移位器对所述减法运算的结果右移一位,通过所述计数器将所述第二类型的操作数的比特变化次数加1;其中,所述预设减法运算的减数小于被减数。
- 如权利要求1所述的模逆运算器,其中,所述模逆运算器还包括寄存器堆,用于存储模逆运算的模数,所述寄存器堆包括多个寄存器,且所述多个寄存器的总比特长度为所述模数的比特长度。
- 如权利要求1所述的模逆运算器,其中,所述计算单元包括:移位器以及加减法器;所述控制单元用于控制所述计算单元按照以下步骤进行所述模逆运算:S1:初始化所述模逆运算的相关数据;其中,所述模逆运算为:Y=a -1mod p,Y、a、p分别为所述模逆运算的结果、输入数以及模数;所述模逆运算的相关 数据包括操作数u、v、x1、x2以及参数k,所述模逆运算的相关数据分别初始化为:u=a,v=p,x1=1,x2=0,k=0;S2:判断v是否大于0,如果v大于0,则执行步骤S3,如果v小于或者等于0,则执行步骤S4;所述S3包括:在v为偶数时,控制所述移位器将v右移一位,x1左移一位,并将k的值加1;在v为奇数且u为偶数时,控制所述移位器将u右移一位,x2左移一位,并将k的值加1;在u、v均为奇数,且v大于或者等于u时,控制所述加减法器以及所述移位器执行:v=(v-u)/2、x2=x2+x1、x1左移一位运算,并将k的值加1;在u、v均为奇数,且v小于u时,控制所述加减法器以及所述移位器执行:u=(u-v)/2、x1=x2+x1、x2左移一位运算,并将k的值加1;在k的值每加1后,返回步骤S2;所述S4包括:在u等于1且x1大于模数p时,将x1减去p并赋值给x1后返回中间结果;在u等于1且x1小于或者等于模数p时,返回中间结果;在u不等于1时,返回a不可逆;S5:对所述中间结果进行蒙哥马利模乘得到所述Y;所述控制单元还用于在所述步骤S3中,在所述移位器以及加减法器每计算一次,控制所述计数器更新对应的操作数的有效字长。
- 一种模逆运算方法,其特征在于,包括:根据已执行的模逆运算更新操作数的有效字长;根据更新的有效字长进行后一步模逆运算。
- 如权利要求9所述的模逆运算方法,其中,所述根据已执行的模逆运算更新操作数的有效字长,具体包括:根据所述已执行的模逆运算累计操作数的比特变化次数;根据累计的比特变化次数更新所述有效字长。
- 如权利要求10所述的模逆运算方法,其中,所述操作数包括第一类型的操作数;根据所述已执行的模逆运算累计操作数的比特变化次数,具体包括:在对所述第一类型的操作数进行左移一位运算时,将所述第一类型的操作数的比特变化次数加1;在对第一类型的操作数进行加法运算,且在所述加法运算的加数小于或者等于被加的第一类型的操作数时,将所述被加的第一类型的操作数的比特变化次数加1,在所述加数大于所述被加的第一类型的操作数时,将所述被加的第一类型的操作数的有效比特长度更新为所述加数的有效比特长度。
- 如权利要求10所述的模逆运算方法,其中,所述操作数还包括第二类型的操作数;所述根据所述已执行的模逆运算累计操作数的比特变化次数,具体包括:在对所述第二类型的操作数进行右移一位运算时,将所述第二类型的操作数的比特变化次数加1;在对所述第二类型的操作数进行预设减法运算且对所述减法运算的结果右移一位时,将所述第二类型的操作数的比特变化次数加1;其中,所述预设减 法运算的减数小于被减数。
- 如权利要求10至12中任一项所述的模逆运算方法,其中,所述根据累计的比特变化次数更新所述有效字长,具体包括:根据预设的字长更新规则更新所述有效字长;其中,所述字长更新规则包括:当所述操作数增大时,且所述第二寄存器累计的比特变化次数达到所述操作数的单位字长时,将所述操作数的有效字长加1,当所述操作数减小时,且所述操作数的比特变化次数达到所述单位字长时,将所述操作数的有效字长减1。
- 如权利要求9所述的模逆运算方法,其中,所述模逆运算的计算步骤如下:S1:初始化所述模逆运算的相关数据;其中,所述模逆运算为:Y=a -1mod p,Y、a、p分别为所述模逆运算的结果、输入数以及模数,所述模逆运算的相关数据包括操作数u、v、x1、x2以及参数k,所述模逆运算的相关数据分别初始化为:u=a,v=p,x1=1,x2=0,k=0;S2:判断v是否大于0,如果v大于0,则执行步骤S3,如果v小于或者等于0,则执行步骤S4;所述S3包括:在v为偶数时,将v右移一位、x1左移一位,并将k的值加1;在v为奇数且u为偶数时,将u右移一位、x2左移一位,并将k的值加1;在u、v均为奇数,且v大于或者等于u时,执行:v=(v-u)/2、x2=x2+x1以及x1左移一位运算,并将k的值加1;在u、v均为奇数,且v小于u时,执行:u=(u-v)/2、x1=x2+x1以及x2左移一位运算,并将k的值加1;在k的值每加1后,返回步骤S2;所述S4包括:在u等于1且x1大于模数p时,将x1减去p并赋值给x1后返回中间结果;在u等于1且x1小于或者等于模数p时,返回中间结果;在u不等于1时,返回a不可逆;S5:对所述中间结果进行蒙哥马利模乘得到所述Y;所述根据已执行的模逆运算更新操作数的有效字长,具体包括:在所述步骤S3中,在所述移位器以及加减法器每计算一次,控制所述计数器更新对应的操作数的有效字长。
- 一种安全系统,其特征在于,包括存储器以及如权利要求1至8中任一项所述的模逆运算器;所述存储器与所述模逆运算器连接,用于存储模逆运算的相关数据,或者所述模逆运算的相关数据以及所述系统中的其他数据。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2018/101793 WO2020037565A1 (zh) | 2018-08-22 | 2018-08-22 | 模逆运算器、模逆运算方法及安全系统 |
| CN201880001214.7A CN111213122A (zh) | 2018-08-22 | 2018-08-22 | 模逆运算器、模逆运算方法及安全系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2018/101793 WO2020037565A1 (zh) | 2018-08-22 | 2018-08-22 | 模逆运算器、模逆运算方法及安全系统 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020037565A1 true WO2020037565A1 (zh) | 2020-02-27 |
Family
ID=69592149
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2018/101793 Ceased WO2020037565A1 (zh) | 2018-08-22 | 2018-08-22 | 模逆运算器、模逆运算方法及安全系统 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN111213122A (zh) |
| WO (1) | WO2020037565A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112099761B (zh) * | 2020-08-27 | 2022-09-02 | 清华大学 | 基于改进的二进制左移模逆算法的装置及其控制方法 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102279725A (zh) * | 2011-09-01 | 2011-12-14 | 北京华大信安科技有限公司 | Ecc协处理器 |
| US20120259905A1 (en) * | 2011-04-08 | 2012-10-11 | Fujitsu Limited | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit |
| CN105988771A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算器 |
| CN105988772A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算方法及运算器 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102006025677B4 (de) * | 2005-10-28 | 2020-03-12 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge |
| EP2276194B1 (en) * | 2009-07-17 | 2014-11-26 | Certicom Corp. | System and method for reducing the computation and storage requirements for a Montgomery-style reduction |
| CN107239258A (zh) * | 2017-06-05 | 2017-10-10 | 张家豪 | 一种模逆运算方法及运算器 |
-
2018
- 2018-08-22 WO PCT/CN2018/101793 patent/WO2020037565A1/zh not_active Ceased
- 2018-08-22 CN CN201880001214.7A patent/CN111213122A/zh not_active Withdrawn
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120259905A1 (en) * | 2011-04-08 | 2012-10-11 | Fujitsu Limited | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit |
| CN102279725A (zh) * | 2011-09-01 | 2011-12-14 | 北京华大信安科技有限公司 | Ecc协处理器 |
| CN105988771A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算器 |
| CN105988772A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算方法及运算器 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111213122A (zh) | 2020-05-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8977668B2 (en) | Calculating unit for reducing an input number with respect to a modulus | |
| JPH09274560A (ja) | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 | |
| US8738927B2 (en) | Arrangement for and method of protecting a data processing device against an attack or analysis | |
| KR102132261B1 (ko) | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 | |
| CN103207770B (zh) | 一种在嵌入式系统中实现大数预计算的方法 | |
| US20200344056A1 (en) | Device and method for protecting execution of a cryptographic operation | |
| CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
| JP2010139544A (ja) | 剰余演算装置、及び剰余演算方法 | |
| US20090268900A1 (en) | Signed montgomery arithmetic | |
| CN107896142A (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
| CN111385092B (zh) | 使用信息盲化的密码装置及其密码处理方法 | |
| US20100287384A1 (en) | Arrangement for and method of protecting a data processing device against an attack or analysis | |
| US11431499B2 (en) | Finite-field division operator, elliptic curve cryptosystem having finite-field division operator and method for operating elliptic curve cryptosystem | |
| JP4360792B2 (ja) | べき乗剰余演算器 | |
| US7672990B2 (en) | Digital computation method involving euclidean division | |
| CN111213122A (zh) | 模逆运算器、模逆运算方法及安全系统 | |
| CN114706557B (zh) | 一种asic芯片及蒙哥马利模乘的实现方法和装置 | |
| US7983415B2 (en) | Method for performing iterative scalar multiplication which is protected against address bit attack | |
| US10318245B2 (en) | Device and method for determining an inverse of a value related to a modulus | |
| KR20230028626A (ko) | 양자 컴퓨터상 이진 필드 몽고메리 곱셈 장치 및 곱셈 방법 | |
| US20150234750A1 (en) | Method and apparatus for addressing a memory containing different bit-length field variables | |
| US12273435B2 (en) | Method of defense against cryptosystem timing attack, associated cryptosystem processing circuit, and associated electronic device | |
| CN120034330B (zh) | 密钥生成方法、数据处理方法、计算设备及计算机可读存储介质 | |
| Jin et al. | Short-iteration constant-time GCD and modular inversion | |
| US20230042366A1 (en) | Sign-efficient addition and subtraction for streamingcomputations in cryptographic engines |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18930588 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 18930588 Country of ref document: EP Kind code of ref document: A1 |