CN115016764A - 一种模逆运算硬件电路及控制方法 - Google Patents
一种模逆运算硬件电路及控制方法 Download PDFInfo
- Publication number
- CN115016764A CN115016764A CN202210616448.0A CN202210616448A CN115016764A CN 115016764 A CN115016764 A CN 115016764A CN 202210616448 A CN202210616448 A CN 202210616448A CN 115016764 A CN115016764 A CN 115016764A
- Authority
- CN
- China
- Prior art keywords
- operand
- modular
- circuit
- triggering
- result
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F7/723—Modular exponentiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/4912—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了一种模逆运算硬件电路及控制方法,涉及信息安全领域,应用于模逆运算和负模逆运算,该硬件电路包括:算法控制模块,用于获取算法控制信号,基于所述算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;所述基本运算模块,用于根据所述调用指令进行相应的基本运算。本申请为硬件电路,其中算法控制模块根据算法控制信号生成调用指令,基本运算模块根据调用指令进行相应运算,硬件电路的运算速度更快、安全性更高,同时提高了模逆运算和负模逆运算的安全等级和运算速度。
Description
技术领域
本发明涉及信息安全领域,特别涉及一种模逆运算硬件电路及控制方法。
背景技术
当前,随着信息安全的快速发展,基于数学难题的公钥密码体制得到了广泛应用。椭圆曲线密码(Elliptic Curve Cryptography,ECC)因其密钥短、速度快、安全性高、节省资源等一系列优点而广泛应用于移动通信、电子商务等领域。
大数模逆运算作为一种模运算,是素数域椭圆曲线密码中不可或缺的运算。在椭圆曲线密码体制中,点加和倍点运算都需要用到求逆运算。随着银行IC卡的产业升级,非接触式金融IC卡将逐步增加,面向高安全等级的密码系统的应用也越来越迫切,因此操作简便、面积小、功耗低的大数模逆算法具有重要的研究意义和应用价值。
与此同时,采用蒙哥马利算法的椭圆曲线密码算法需要预计算模数N对于位权数R的负模逆N’,而一般SM2非对称商用密码算法因安全等级要求不高,而采用固定的模数N,即参数N’也为固定值。故参数N’只需要计算一次,为避免增加硬件资源的消耗,一般采用软件方式计算参数N’,该方法运算耗时长,效率低,安全性低。
因此,如何提供一种解决上述技术问题的方案是目前本领域技术人员需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种模逆运算硬件电路及控制方法,以在资源消耗较小的情况下保证运算速度。其具体方案如下:
一种模逆运算硬件电路,包括:
算法控制模块,用于获取算法控制信号,基于所述算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;
所述基本运算模块,用于根据所述调用指令进行相应的基本运算。
优选的,所述算法控制模块包括:
运算调度单元,用于获取所述算法控制信号,将所述算法控制信号发送给运算控制单元;
所述运算控制单元,用于根据所述算法控制信号确定运算控制指令,将所述运算控制指令发送给所述运算调度单元;
所述运算调度单元,还用于根据所述运算控制指令生成所述调用指令,以调用所述基本运算模块进行相应的基本运算。
优选的,所述运算控制单元为状态机控制单元,所述状态机控制单元内存预设运算逻辑,所述预设运算逻辑包括多个运算状态及所述运算状态之间的跳转关系;
所述状态机控制单元,用于根据当前运算状态确定所述运算控制指令。
优选的,所述硬件电路还包括:
预设数量个寄存器,所述预设数量个寄存器用于存储运算参数值,所述运算参数值包括运算输入值、中间变量系数和运算结果值。
优选的,所述基本运算模块包括加法电路、减法电路、左移电路和右移电路。
相应的,本申请还公开了一种模逆运算控制方法,所述控制方法应用于如上文任一项所述模逆运算硬件电路,所述控制方法包括:
通过算法控制模块获取算法控制信号,并基于所述算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;所述算法控制信号为模逆运算信号或负模逆运算信号;
通过所述基本运算模块,根据所述调用指令进行相应的基本运算。
优选的,所述通过算法控制模块获取算法控制信号,并基于所述算法控制信号,生成调用指令的过程,包括:
通过运算调度单元,获取所述算法控制信号并将所述算法控制信号发送给运算控制单元;
通过所述运算控制单元,根据所述算法控制信号确定运算控制指令,并将所述运算控制指令发送给所述运算调度单元;
通过所述运算调度单元,根据所述运算控制指令生成调用指令,以调用所述基本运算模块进行相应的基本运算。
优选的,所述根据所述算法控制信号确定运算控制指令的过程,包括:
根据当前运算状态和预设运算逻辑确定运算控制指令;
所述预设运算逻辑包括多个运算状态以及所述多个运算状态之间的跳转关系。
优选的,所述模逆运算控制方法还包括:
当收到运算指令,通过所述运算调度单元对预设数量个寄存器进行初始化赋值。
优选的,所述预设运算逻辑的所述多个运算状态包括S1~S8,所述多个运算状态之间的跳转关系包括:
S1:空闲状态;当收到所述运算指令,对所述预设数量个寄存器进行初始化赋值;当所述运算模式标志对应所述模逆运算模式,跳到S2,当所述运算模式标志对应所述负模逆运算模式,跳到S7;
S2:判断第一操作数是否为1、偶数或非1的奇数;当判定所述第一操作数为1,跳到S8,当判定所述第一操作数为偶数,跳到S6,当判定所述第一操作数为非1的奇数,跳到S3;
S3:判断第二操作数是否为偶数;当判定所述第二操作数为偶数,跳到S4,当判定所述第二操作数非偶数,跳到S5;
S4:触发右移电路控制所述第二操作数右移一位,并判断所述中间变量是否为偶数,若否,则触发加法电路对中间变量与预设常数求和,并将所述加法电路的当前结果赋值给所述中间变量,然后触发所述右移电路控制所述中间变量右移一位,若是,则触发所述右移电路控制所述中间变量右移一位;跳到S3;
S5:判断所述第一操作数是否大于所述第二操作数,判断模逆结果是否大于所述中间变量,判断所述中间变量是否大于所述模逆结果;
若所述第一操作数大于所述第二操作数,且所述模逆结果大于所述中间变量,则触发减法电路对所述第一操作数与所述第二操作数求差,并将所述减法电路的当前结果赋值给所述第一操作数,触发所述减法电路对所述模逆结果与所述中间变量求差,并将所述减法电路的当前结果赋值给所述模逆结果;
若所述第一操作数大于所述第二操作数,且所述模逆结果不大于所述中间变量,则触发所述减法电路对所述第一操作数与所述第二操作数求差,并将所述减法电路的当前结果赋值给所述第一操作数,触发所述减法电路对所述模逆结果与所述中间变量求差,触发所述加法电路对所述预设常数与所述减法电路的当前结果求和,将所述加法电路的当前结果赋值给所述模逆结果;
若所述第一操作数不大于所述第二操作数,且所述中间变量大于所述模逆结果,则触发所述减法电路对所述第二操作数与所述第一操作数求差,并将所述减法电路的当前结果赋值给所述第二操作数,触发所述减法电路对所述中间变量与所述模逆结果求差,并将所述减法电路的当前结果幅值给所述中间变量;
若所述第一操作数不大于所述第二操作数,且所述中间变量不大于所述模逆结果,则触发所述减法电路对所述第二操作数与所述第一操作数求差,并将所述减法电路的当前结果赋值给所述第二操作数,触发所述减法电路对所述中间变量与所述模逆结果求差,再触发所述加法电路对所述减法电路的当前结果与所述预设常数求和,将所述加法电路的当前结果赋值给所述中间变量;
跳到S2;
S6:触发所述右移电路控制所述第一操作数右移一位,且当所述运算模式标志对应所述负模逆运算模式,触发左移电路控制所述中间变量左移一位;跳到S7;
S7:判断所述模逆结果是否为偶数,若是,则触发所述右移电路控制所述模逆结果右移一位,若否,则触发所述加法电路对所述模逆结果与所述预设常数求和,并将所述加法电路的当前结果赋值给所述模逆结果,然后再触发所述右移电路控制所述模逆结果右移一位;且当所述运算模式标志对应所述负模逆运算模式,触发所述加法电路对所述负模逆结果与所述中间变量求和,并将所述加法电路的当前结果赋值给所述负模逆结果;跳到S2;
S8:运算完成,根据所述运算模式标志输出相应的所述模逆结果或所述负模逆结果;跳到S1。
本申请公开了一种模逆运算硬件电路,包括:算法控制模块,用于获取算法控制信号,基于所述算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;所述基本运算模块,用于根据所述调用指令进行相应的基本运算。本申请为硬件电路,其中算法控制模块根据算法控制信号生成调用指令,基本运算模块根据调用指令进行相应运算,硬件电路的运算速度更快、安全性更高,同时提高了模逆运算和负模逆运算的安全等级和运算速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中一种模逆运算硬件电路的结构分布图;
图2为本发明实施例中一种模逆运算控制方法的步骤流程图;
图3为本发明实施例中运算状态的跳转关系图;
图4为本发明实施例中运算状态S2中子运算状态的跳转关系图;
图5为本发明实施例中运算状态S4中子运算状态的跳转关系图;
图6为本发明实施例中运算状态S5中子运算状态的跳转关系图;
图7为本发明实施例中运算状态S7中子运算状态的跳转关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一般SM2密码算法中,负模逆参数N’只需要计算一次,为避免增加硬件资源的消耗,一般采用软件方式计算参数N’,该方法运算耗时长,效率低,安全性低。
为了解决上述问题,本发明实施例公开了一种模逆运算硬件电路,参见图1所示,包括:
算法控制模块1,用于获取算法控制信号,基于算法控制信号,生成调用指令以调用基本运算模块2进行相应的模逆运算和/或负模逆运算;
基本运算模块2,用于根据调用指令进行相应的基本运算。
具体地,为了实现模逆与负模逆复用电路,本发明实施例的模逆运算硬件电路设置了算法控制模块1,算法控制模块1接收算法控制信号,算法控制信号为模逆运算信号或负模逆运算信号,根据算法控制信号,生成调用指令,并根据调用指令调用基本运算模块2进行相应的模逆运算和/或负模逆运算。其中,基本运算模块2包括加法电路、减法电路、左移电路和右移电路。
在一些具体的实施例中,算法控制模块1包括:
运算调度单元11,用于获取算法控制信号,将算法控制信号发送给运算控制单元12;
运算控制单元12,用于根据算法控制信号确定运算控制指令,将运算控制指令发送给运算调度单元11;
运算调度单元11,还用于根据运算控制指令生成调用指令,以调用基本运算模块2进行相应的基本运算。
可以理解的是,算法控制模块1包括运算调度单元11和运算控制单元12,具体的,算法控制信号包括模逆运算信号或负模逆运算信号,运算控制指令由根据算法控制信号确定,包括实现相应的模逆运算或负模逆运算时的具体运算流程,调用指令则根据运算控制指令生成,从而实现对基本运算模块2的基础调用,调用指令是最为简单基础的电路命令,例如触发加法电路实现某两个参数的求和,再例如触发左移电路实现某个参数左移一位等。
从运算控制指令到调用指令的过程,包括指令碎片化和指令形式的变化;具体的,运算控制指令包括具体运算流程,以算法为主,为运算调度单元11能够理解的程序指令,程序指令的逻辑和语言可以较为复杂,而调用指令的对象为任一基本运算模块,调用指令将复杂的具体运算流程分解为基础调用元素,指令形式则简单直接,以便能够直接调用任一基本运算模块2进行基本运算。
以模逆运算为例,运算调度单元11收到算法控制信号为模逆控制信号,运算控制单元12根据模逆控制信号生成对应模逆运算的运算控制指令,以确定具体运算流程,包括模逆运算的若干运算步骤,运算控制单元12将运算控制指令发送给运算调度单元11,使运算调度单元11生成可调用基本运算模块2的调用指令。
在一些具体的实施例中,运算控制单元12为状态机控制单元,状态机控制单元内存有预设运算逻辑,预设运算逻辑包括多个运算状态及运算状态之间的跳转关系;状态机控制单元,用于根据当前运算状态确定运算控制指令。可以理解的是,状态机控制单元正是状态机的物理实现,状态机是表示多个运算状态和运算状态之间的跳转行为的数学模型,在本实施例中,状态机控制单元包括可编程逻辑设备、和/或可编程逻辑控制器、和/或触发器、和/或继电器,此外硬件实现还要求寄存器,以存储状态变量和预设运算逻辑,因此在一些具体的实施例中,硬件电路还包括:
预设数量个寄存器3,预设数量个寄存器3用于存储运算参数值,运算参数值包括运算输入值、中间变量系数和运算结果值。
可以理解的是,此处运算参数值也即状态变量,其中运算输入值包括第一操作数q、第二操作数r、运算模式标志,运算模式标志与算法控制信号相对应,中间变量系数包括中间变量t和预设常数n,运算结果值包括模逆结果s和负模逆结果n’。其中,模逆运算的理论运算式为s=q mod n,其中第一操作数q为任意整数;负模逆运算的理论运算式为n’=-nmod q,其中第一操作数为位权数2k;以模逆运算为例,计算7mod 4,在利用本实施例进行计算时,第一操作数q=7,预设常数n=4,过程中第二操作数r与中间变量t在过程中被不断赋值发生变化,最终得到模逆结果s=3。
可以理解的是,本实施例可以应用于物联网IOT领域,基本运算模块2在模逆运算和负模逆运算中进行复用,既能满足资源消耗量小的要求又能够提高安全加密芯片的安全等级与运算速度。
本申请提供的模逆运算硬件电路,其中算法控制模块根据算法控制信号生成调用指令,基本运算模块根据调用指令进行相应模逆运算和/或负模逆运算,该硬件电路可以实现模逆运算和负模逆运算的复用,硬件电路的运算速度更快、安全性更高,同时提高了模逆运算和负模逆运算的安全等级和运算速度。
相应的,本申请还公开了一种模逆运算控制方法,控制方法应用于如上文实施例提供的模逆运算硬件电路,参见图2所示,控制方法包括:
S01:通过算法控制模块获取算法控制信号,并基于算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;算法控制信号为模逆运算信号或负模逆运算信号;
S02:通过基本运算模块,根据调用指令进行相应的基本运算。
其中,步骤S02通过算法控制模块获取算法控制信号,并基于算法控制信号,生成调用指令的过程,包括:
通过运算调度单元,获取算法控制信号并将算法控制信号发送给运算控制单元;
通过运算控制单元,根据算法控制信号确定运算控制指令,并将运算控制指令发送给运算调度单元;
通过运算调度单元,根据运算控制指令生成调用指令,以调用基本运算模块进行相应的基本运算。
其中,根据算法控制信号确定运算控制指令的过程,包括:
根据当前运算状态和预设运算逻辑确定运算控制指令;
预设运算逻辑包括多个运算状态以及多个运算状态之间的跳转关系。
进一步的,模逆运算控制方法还包括:
当收到运算指令,通过运算调度单元对预设数量个寄存器进行初始化赋值。
具体的,预设数量个寄存器用于存储运算参数值,运算参数值包括运算输入值、中间变量系数和运算结果值。其中运算输入值包括第一操作数q、第二操作数r、运算模式标志,中间变量系数包括中间变量t和预设常数n,运算结果值包括模逆结果s和负模逆结果n’。
具体的,运算模式标志对应的运算模式包括模逆运算模式和负模逆运算模式,对应不同的算法控制信号。可以理解的是,由于运算模式标志对应的运算模式只有模逆运算模式和负模逆运算模式两种,以一位二进制编码的取值为0和1即可建立运算模式标志与两种运算模式的关系,本实施例中可设置模逆运算模式对应的运算模式标志取1,负模逆运算模式对应的运算模式标志取0,当然也可设置相反的值。
其中,模逆运算的运算式为s=q mod n,其中第一操作数q为任意整数;负模逆运算的运算式为n’=-n mod q,其中第一操作数为位权数2k。在初始化时第二操作数r取值为预设常数n。
进一步的,初始化赋值包括:
将第一操作数q、第二操作数r、预设常数n和运算模式标志赋值为对应运算指令的数值,将模逆结果s赋值为1;
当运算模式标志对应模逆运算模式,将中间变量t赋值为0;
当运算模式标志对应负模逆运算模式,将中间变量t赋值为1,将负模逆结果n’赋值为0。
由于模逆运算模式中不涉及负模逆结果n’,因此不需对负模逆结果n’进行赋值,便于可靠计算,可将其赋值为0。
可以理解的是,这里的初始化赋值,指在预设数量个寄存器中对应第一操作数q、第二操作数r、模逆结果s、中间变量t、负模逆结果n’、预设常数n和运算模式标志对应的各存储位写入相应的数值,下文中对各数值的处理,均是从寄存器中读出其对应的存储位的数值,然后输入基本运算模块中的一个或多个电路进行运算,最后将运算结果再写入寄存器中相应的存储位。
本实施例利用硬件电路进行运算,具有运算速度更快、安全性更高的特点,同时提高了模逆运算和负模逆运算的安全等级和运算速度。
本发明实施例公开了一种具体的模逆运算控制方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图3所示,预设运算逻辑的多个运算状态包括S1~S8,多个运算状态之间的跳转关系包括:
S1:空闲状态;当收到运算指令,对预设数量个寄存器进行初始化赋值;当运算模式标志对应模逆运算模式,跳到S2,当运算模式标志对应负模逆运算模式,跳到S7;
S2:判断第一操作数q是否为1、偶数或非1的奇数;当判定第一操作数q为1,跳到S8,当判定第一操作数q为偶数,跳到S6,当判定第一操作数q为非1的奇数,跳到S3;
S3:判断第二操作数r是否为偶数;当判定第二操作数r为偶数,跳到S4,当判定第二操作数r非偶数,跳到S5;
S4:触发右移电路控制第二操作数r右移一位,并判断中间变量t是否为偶数,若否,则触发加法电路对中间变量t与预设常数n求和,并将加法电路的当前结果赋值给中间变量t,然后触发右移电路控制中间变量t右移一位,若是,则触发右移电路控制中间变量t右移一位;跳到S3;
S5:判断第一操作数q是否大于第二操作数r,判断模逆结果s是否大于中间变量t,判断中间变量t是否大于模逆结果s;
若第一操作数q大于第二操作数r,且模逆结果s大于中间变量t,则触发减法电路对第一操作数q与第二操作数r求差,并将减法电路的当前结果赋值给第一操作数q,触发减法电路对模逆结果s与中间变量t求差,并将减法电路的当前结果赋值给模逆结果s;
若第一操作数q大于第二操作数r,且模逆结果s不大于中间变量t,则触发减法电路对第一操作数q与第二操作数r求差,并将减法电路的当前结果赋值给第一操作数q,触发减法电路对模逆结果s与中间变量t求差,触发加法电路对预设常数n与减法电路的当前结果求和,将加法电路的当前结果赋值给模逆结果s;
若第一操作数q不大于第二操作数r,且中间变量t大于模逆结果s,则触发减法电路对第二操作数r与第一操作数q求差,并将减法电路的当前结果赋值给第二操作数r,触发减法电路对中间变量t与模逆结果s求差,并将减法电路的当前结果幅值给中间变量t;
若第一操作数q不大于第二操作数r,且中间变量t不大于模逆结果s,则触发减法电路对第二操作数r与第一操作数q求差,并将减法电路的当前结果赋值给第二操作数r,触发减法电路对中间变量t与模逆结果s求差,再触发加法电路对减法电路的当前结果与预设常数n求和,将加法电路的当前结果赋值给中间变量t;
跳到S2;
S6:触发右移电路控制第一操作数q右移一位,且当运算模式标志对应负模逆运算模式,触发左移电路控制中间变量t左移一位;跳到S7;
S7:判断模逆结果s是否为偶数,若是,则触发右移电路控制模逆结果s右移一位,若否,则触发加法电路对模逆结果s与预设常数n求和,并将加法电路的当前结果赋值给模逆结果s,然后再触发右移电路控制模逆结果s右移一位;且当运算模式标志对应负模逆运算模式,触发加法电路对负模逆结果n’与中间变量t求和,并将加法电路的当前结果赋值给负模逆结果n’;跳到S2;
S8:运算完成,根据运算模式标志输出相应的模逆结果s或负模逆结果n’;跳到S1。
可以理解的是,运算调度单元对各值的处理,均是从寄存器中读出其对应的存储位的数值,然后输入基本运算模块中的一个或多个电路进行运算,最后将运算结果再写入寄存器中相应的存储位。
进一步的,每个状态可分为多个子状态,子状态之间如果不存在变量关联,则没有必然的顺序关系,可按照任意顺序组合,具体条件如下:
参见图4所示,运算状态S2具体包括依次执行的子运算状态S2.1和S2.2,其中:
S2.1:判断第一操作数q是否为1,若是,跳到S8,若否,跳到S2.2;
S2.2:判断第一操作数q是否为偶数,若是,跳到S6,若否,跳到S3。
参见图5所示,运算状态S4具体包括子运算状态S4.1-S4.4,其中:
S4.1:触发右移电路控制第二操作数r右移一位;
S4.2:判断中间变量t是否为偶数;
S4.3:触发加法电路对中间变量t与预设常数n求和,并将加法电路的当前结果赋值给中间变量t;
S4.4:触发右移电路控制中间变量t右移一位;
其中S4.1位于S4.2、S4.3或S4.4的之前或之后,S4.2位于S4.3和S4.4之前,S4.3位于S4.4之前,若S4.2判定结果为是,则忽略S4.3。也就是说,S4.1与S4.2-S4.4在逻辑上为两条并行的不相关线程,因此步骤S4.1可以位于运算状态S4中任何位置,如果硬件算力允许,也可以并行执行这两条不相关线程,图5即为该方案对应的执行顺序;但是S4.2、S4.3和S4.4具有明确的触发条件,因此具有明确的先后顺序。
参见图6所示,运算状态S5具体包括子运算状态S5.1-S5.9,其中:
S5.1:判断第一操作数q是否大于第二操作数r;
S5.2:判断模逆结果s是否大于中间变量t;
S5.3:判断中间变量t是否大于模逆结果s;
S5.4:触发减法电路对第一操作数q与第二操作数r求差,并将减法电路的当前结果赋值给第一操作数q;
S5.5:触发加法电路对模逆结果s与预设常数n求和,并将加法电路的当前结果赋值给模逆结果s;
S5.6:触发减法电路对模逆结果s与中间变量t求差,并将减法电路的当前结果赋值给模逆结果s;
S5.7:触发减法电路对第二操作数r与第一操作数q求差,并将减法电路的当前结果赋值给第二操作数r;
S5.8:触发加法电路对中间变量t与预设常数n求和,并将加法电路的当前结果赋值给中间变量t;
S5.9:触发减法电路对中间变量t与模逆结果s求差,并将减法电路的当前结果赋值给中间变量t;
若S5.1判定结果为是,则执行S5.2和S5.4,若否,则执行S5.3和S5.7;
若S5.2判定结果为否,则执行S5.5和S5.6,若是,则执行S5.6;
若S5.3判定结果为否,则执行S5.8和S5.9,若是,则执行S5.9。
可以理解的是,在同一情景下提及但未明确先后顺序的动作,例如S5.2和S5.4,或者S5.3和S5.7,可以以任意顺序执行,也可以并行同时执行。
类似的,运算状态S6具体包括子运算状态S6.1和S6.2,其中:
S6.1:触发右移电路控制第一操作数q右移一位;
S6.2:当运算模式标志对应负模逆运算模式,触发左移电路控制中间变量t左移一位;
其中,S6.1位于S6.2之前或S6.1位于S6.2之后。
可以理解的是,S6.1和S6.2在逻辑上不相关,因此执行时没有顺序要求,若单线程执行,则S6.1位于S6.2之前或S6.1位于S6.2之后,若硬件算力允许,S6.1和S6.2也可同时执行。
参见图7所示,运算状态S7具体包括子运算状态S7.1-S7.4,其中:
S7.1:判断模逆结果s是否为偶数;
S7.2:触发右移电路控制模逆结果s右移一位;
S7.3:触发加法电路对模逆结果s与预设常数n求和,并将加法电路的当前结果赋值给模逆结果s;
S7.4:当运算模式标志对应负模逆运算模式,触发加法电路对负模逆结果n’与中间变量t求和,并将加法电路的当前结果赋值给负模逆结果n’;
其中S7.1位于S7.2和S7.3之前,S7.3位于S7.2之前,若S7.1判定结果为是,则忽略S7.3,S7.4位于S7.1、S7.2或S7.3的之前或之后。
可以理解的是,S7.1-S7.3具有明确的顺序逻辑,而S7.4则与S7.1-S7.3分属两条不相关的逻辑线程,因此S7.4可位于运算状态S7的任何位置,如果硬件算力允许,也可同时执行这两个逻辑线程,图7即为同时执行的示意图。
进一步的,运算状态S1还包括:当收到运算指令,将运算完成标志位置0;运算状态S8还包括:当运算完成,将运算完成标志位置1。
可以理解的是,运算状态S1和S8在启动运算时刻和运算完成时刻对运算完成标志位置位,以完善整个模逆运算硬件电路的运算程序,增强硬件程序的可靠性和完整性。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种模逆运算硬件电路及控制方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种模逆运算硬件电路,其特征在于,包括:
算法控制模块,用于获取算法控制信号,基于所述算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;
所述基本运算模块,用于根据所述调用指令进行相应的基本运算。
2.根据权利要求1所述的模逆运算硬件电路,其特征在于,所述算法控制模块包括:
运算调度单元,用于获取所述算法控制信号,将所述算法控制信号发送给运算控制单元;
所述运算控制单元,用于根据所述算法控制信号确定运算控制指令,将所述运算控制指令发送给所述运算调度单元;
所述运算调度单元,还用于根据所述运算控制指令生成所述调用指令,以调用所述基本运算模块进行相应的基本运算。
3.根据权利要求2所述的模逆运算硬件电路,其特征在于,所述运算控制单元为状态机控制单元,所述状态机控制单元内存预设运算逻辑,所述预设运算逻辑包括多个运算状态及所述运算状态之间的跳转关系;
所述状态机控制单元,用于根据当前运算状态确定所述运算控制指令。
4.根据权利要求2所述的模逆运算硬件电路,其特征在于,所述硬件电路还包括:
预设数量个寄存器,所述预设数量个寄存器用于存储运算参数值,所述运算参数值包括运算输入值、中间变量系数和运算结果值。
5.根据权利要求2所述的模逆运算硬件电路,其特征在于,所述基本运算模块包括加法电路、减法电路、左移电路和右移电路。
6.一种模逆运算控制方法,其特征在于,所述控制方法应用于如权利要求1至5任一项所述模逆运算硬件电路,所述控制方法包括:
通过算法控制模块获取算法控制信号,并基于所述算法控制信号,生成调用指令以调用基本运算模块进行相应的模逆运算和/或负模逆运算;所述算法控制信号为模逆运算信号或负模逆运算信号;
通过所述基本运算模块,根据所述调用指令进行相应的基本运算。
7.根据权利要求6所述模逆运算控制方法,其特征在于,所述通过算法控制模块获取算法控制信号,并基于所述算法控制信号,生成调用指令的过程,包括:
通过运算调度单元,获取所述算法控制信号并将所述算法控制信号发送给运算控制单元;
通过所述运算控制单元,根据所述算法控制信号确定运算控制指令,并将所述运算控制指令发送给所述运算调度单元;
通过所述运算调度单元,根据所述运算控制指令生成调用指令,以调用所述基本运算模块进行相应的基本运算。
8.根据权利要求7所述模逆运算控制方法,其特征在于,所述根据所述算法控制信号确定运算控制指令的过程,包括:
根据当前运算状态和预设运算逻辑确定运算控制指令;
所述预设运算逻辑包括多个运算状态以及所述多个运算状态之间的跳转关系。
9.根据权利要求6所述模逆运算控制方法,其特征在于,还包括:
当收到运算指令,通过所述运算调度单元对预设数量个寄存器进行初始化赋值。
10.根据权利要求8所述模逆运算控制方法,其特征在于,所述预设运算逻辑的所述多个运算状态包括S1~S8,所述多个运算状态之间的跳转关系包括:
S1:空闲状态;当收到所述运算指令,对所述预设数量个寄存器进行初始化赋值;当所述运算模式标志对应所述模逆运算模式,跳到S2,当所述运算模式标志对应所述负模逆运算模式,跳到S7;
S2:判断第一操作数是否为1、偶数或非1的奇数;当判定所述第一操作数为1,跳到S8,当判定所述第一操作数为偶数,跳到S6,当判定所述第一操作数为非1的奇数,跳到S3;
S3:判断第二操作数是否为偶数;当判定所述第二操作数为偶数,跳到S4,当判定所述第二操作数非偶数,跳到S5;
S4:触发右移电路控制所述第二操作数右移一位,并判断所述中间变量是否为偶数,若否,则触发加法电路对中间变量与预设常数求和,并将所述加法电路的当前结果赋值给所述中间变量,然后触发所述右移电路控制所述中间变量右移一位,若是,则触发所述右移电路控制所述中间变量右移一位;跳到S3;
S5:判断所述第一操作数是否大于所述第二操作数,判断模逆结果是否大于所述中间变量,判断所述中间变量是否大于所述模逆结果;
若所述第一操作数大于所述第二操作数,且所述模逆结果大于所述中间变量,则触发减法电路对所述第一操作数与所述第二操作数求差,并将所述减法电路的当前结果赋值给所述第一操作数,触发所述减法电路对所述模逆结果与所述中间变量求差,并将所述减法电路的当前结果赋值给所述模逆结果;
若所述第一操作数大于所述第二操作数,且所述模逆结果不大于所述中间变量,则触发所述减法电路对所述第一操作数与所述第二操作数求差,并将所述减法电路的当前结果赋值给所述第一操作数,触发所述减法电路对所述模逆结果与所述中间变量求差,触发所述加法电路对所述预设常数与所述减法电路的当前结果求和,将所述加法电路的当前结果赋值给所述模逆结果;
若所述第一操作数不大于所述第二操作数,且所述中间变量大于所述模逆结果,则触发所述减法电路对所述第二操作数与所述第一操作数求差,并将所述减法电路的当前结果赋值给所述第二操作数,触发所述减法电路对所述中间变量与所述模逆结果求差,并将所述减法电路的当前结果幅值给所述中间变量;
若所述第一操作数不大于所述第二操作数,且所述中间变量不大于所述模逆结果,则触发所述减法电路对所述第二操作数与所述第一操作数求差,并将所述减法电路的当前结果赋值给所述第二操作数,触发所述减法电路对所述中间变量与所述模逆结果求差,再触发所述加法电路对所述减法电路的当前结果与所述预设常数求和,将所述加法电路的当前结果赋值给所述中间变量;
跳到S2;
S6:触发所述右移电路控制所述第一操作数右移一位,且当所述运算模式标志对应所述负模逆运算模式,触发左移电路控制所述中间变量左移一位;跳到S7;
S7:判断所述模逆结果是否为偶数,若是,则触发所述右移电路控制所述模逆结果右移一位,若否,则触发所述加法电路对所述模逆结果与所述预设常数求和,并将所述加法电路的当前结果赋值给所述模逆结果,然后再触发所述右移电路控制所述模逆结果右移一位;且当所述运算模式标志对应所述负模逆运算模式,触发所述加法电路对所述负模逆结果与所述中间变量求和,并将所述加法电路的当前结果赋值给所述负模逆结果;跳到S2;
S8:运算完成,根据所述运算模式标志输出相应的所述模逆结果或所述负模逆结果;跳到S1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210616448.0A CN115016764A (zh) | 2022-06-01 | 2022-06-01 | 一种模逆运算硬件电路及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210616448.0A CN115016764A (zh) | 2022-06-01 | 2022-06-01 | 一种模逆运算硬件电路及控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115016764A true CN115016764A (zh) | 2022-09-06 |
Family
ID=83070975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210616448.0A Pending CN115016764A (zh) | 2022-06-01 | 2022-06-01 | 一种模逆运算硬件电路及控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115016764A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117014208A (zh) * | 2023-08-09 | 2023-11-07 | 海光信息技术股份有限公司 | 数据加密方法、装置、系统、电子设备及存储介质 |
-
2022
- 2022-06-01 CN CN202210616448.0A patent/CN115016764A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117014208A (zh) * | 2023-08-09 | 2023-11-07 | 海光信息技术股份有限公司 | 数据加密方法、装置、系统、电子设备及存储介质 |
CN117014208B (zh) * | 2023-08-09 | 2024-04-09 | 海光信息技术股份有限公司 | 数据加密方法、装置、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1320027B1 (en) | Elliptic curve cryptosystem apparatus, method and program | |
CN102609239A (zh) | Ecc协处理器 | |
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
CN115016764A (zh) | 一种模逆运算硬件电路及控制方法 | |
CN112217643B (zh) | 运算方法、装置及设备 | |
CN100583757C (zh) | 一种ecc\rsa加解密协处理器 | |
WO2022247194A1 (zh) | 乘法器、数据处理方法、芯片、计算机设备及存储介质 | |
CN103049710A (zh) | 用于sm2数字签名验证算法的fpga芯片 | |
JP4302640B2 (ja) | 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体 | |
JP5143817B2 (ja) | ハッシュ暗号装置及び方法 | |
CN106371808B (zh) | 一种并行计算的方法及终端 | |
CN101243388A (zh) | 用于在加密计算中执行求逆运算的电路结构和方法 | |
CN113193962A (zh) | 基于轻量级模乘的sm2数字签名生成与验证器 | |
CN113141255A (zh) | 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法 | |
JP2003533765A (ja) | 剰余計算の方法およびデバイス | |
CN112000485A (zh) | 任务分配方法、装置、电子设备及计算机可读存储介质 | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
CN102104482A (zh) | 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法 | |
CN113055165A (zh) | 一种非对称密码算法装置、方法、设备及存储介质 | |
CN111258657B (zh) | 流水线控制方法及相关设备 | |
JP2010107947A (ja) | Shaアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置 | |
JP2007520729A (ja) | 改良された低減計算 | |
CN113625992A (zh) | 基于除法器的任务处理方法、装置、除法器及存储介质 | |
JP2004177582A (ja) | 楕円曲線暗号装置、楕円曲線暗号演算方法 | |
EP4207672A1 (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 | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |