CN116820394B - 一种面向椭圆曲线加密算法的标量乘电路 - Google Patents
一种面向椭圆曲线加密算法的标量乘电路 Download PDFInfo
- Publication number
- CN116820394B CN116820394B CN202311091415.XA CN202311091415A CN116820394B CN 116820394 B CN116820394 B CN 116820394B CN 202311091415 A CN202311091415 A CN 202311091415A CN 116820394 B CN116820394 B CN 116820394B
- Authority
- CN
- China
- Prior art keywords
- multiplication
- unit
- multiply
- calculation step
- add
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 216
- 238000000034 method Methods 0.000 claims abstract description 75
- 238000006243 chemical reaction Methods 0.000 claims description 106
- 125000004122 cyclic group Chemical group 0.000 claims description 14
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 10
- 238000000354 decomposition reaction Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 241000764238 Isis Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/5235—Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Algebra (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种面向椭圆曲线加密算法的标量乘电路,涉及数字信息传输领域,该标量乘电路优化了标量乘控制器的时序调度过程,将传统的点加和倍点的计算过程拆分开并重新设计标量乘调度方案,使得只需使用两个乘加单元、一个模逆单元结合若干个寄存器即可完成标量乘的运算,通过优化标量乘调度方案使得该标量乘电路在具有较小的电路面积的同时高效的计算性能。该标量乘电路可以支持任意域长,任意不可约多项式和曲线参数的标量乘运算,具有较高的通用性和灵活性,可以保持高性能的需求。
Description
技术领域
本申请涉及数字信息传输领域,尤其是一种面向椭圆曲线加密算法的标量乘电路。
背景技术
公钥密码体制使用不同的加密密钥和解密密钥,其具有运算速度快的优点,被广泛应用于各种高性能数据密集应用场景中,可以为互联网通信提供安全及完整性保障。
ECC(Elliptic Curve Cryptography,椭圆曲线密码学)是常见的公钥密码体制,在椭圆曲线密码学的有限域中,标量乘的实现需要循环调用点加运算和倍点运算,而点加运算和倍点运算又需要调用底层有限域的运算,主要包括模加运算、模乘运算、模平方运算、模逆运算,因此标量乘是签名/验签过程中最耗时的加密运算单元,也是影响椭圆曲线加密系统的运算速度和功耗性能的关键。
但也由于标量乘的运算复杂度,目前的标量乘电路为了获得高性能往往都需要牺牲电路面积,而且往往都只能针对特定的域长完成标量乘运算,导致难以在电路面积、性能和灵活性等各方面都有较优的表现,影响椭圆曲线加密系统的整体性能。
发明内容
本申请针对上述问题及技术需求,提出了一种面向椭圆曲线加密算法的标量乘电路,本申请的技术方案如下:
一种面向椭圆曲线加密算法的标量乘电路,该标量乘电路包括标量乘控制器、第一乘加单元、第二乘加单元、模逆单元和寄存器组,第一乘加单元和第二乘加单元相同且用于执行模乘运算以及模加运算,模逆单元用于执行模逆运算,寄存器组包括若干个寄存器;标量乘控制器执行的调度方法包括:
获取私钥和椭圆曲线上的点/>的仿射坐标/>,并确定私钥/>对应的二进制序列中包含的/>个数据位/>,最高位/>,/>是整数参数;
初始化投影坐标、/>、/>、/>,初始化整数参数/>;
定义四个变量参数、/>、/>、/>,在对应任意/>的一次循环中执行第一个循环计算步至第六个循环计算步,且/>时/>、/>、/>、/>;/>时、/>、/>、/>:
(1)在第一个循环计算步,调用第一乘加单元根据和/>计算得到中间结果/>并寄存在寄存器/>中,同时,调用第二乘加单元根据/>计算得到中间结果/>并寄存在寄存器/>中;
(2)在第二个循环计算步,调用第一乘加单元根据、/>和第一个循环计算步得到的中间结果/>更新中间结果/>并寄存在寄存器/>中,同时,调用第二乘加单元根据第一个循环计算步得到的中间结果/>更新中间结果/>;
(3)在第三个循环计算步,调用第一乘加单元根据以及第二个循环计算步得到的中间结果/>和中间结果/>更新中间结果/>并寄存在寄存器/>中,同时,调用第二乘加单元根据/>更新中间结果/>;
(4)在第四个循环计算步,调用第一乘加单元根据寄存器的取值和第三个循环计算步得到的中间结果/>更新中间结果/>并作为更新后的/>,同时,调用第二乘加单元根据第三个循环计算步得到的中间结果/>更新中间结果/>并寄存在寄存器/>中;
(5)在第五个循环计算步,调用第一乘加单元根据寄存器的取值更新中间结果并作为更新后的/>,同时,调用第二乘加单元根据寄存器/>的取值更新中间结果/>;
(6)在第六个循环计算步,调用第一乘加单元根据、第五个循环计算步得到的中间结果/>和寄存器/>的取值更新中间结果/>并作为更新后的/>,同时,调用第二乘加单元根据/>、寄存器/>的取值以及第五个循环计算步得到的中间结果/>更新中间结果/>并作为更新后的/>,/>是椭圆曲线的常数项特征参数;
令并进入下一次循环,直至/>时确定主循环运算过程结束并调用第一乘加单元、第二乘加单元和模逆单元对投影坐标/>、/>、/>、/>进行坐标转换输出标量乘结果/>的仿射坐标/>。
其进一步的技术方案为,在每次循环中:
在第一个循环计算步,将和/>分别输入第一乘加单元的两个乘法输入端,同时,将/>同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并寄存在寄存器/>中,第二乘加单元通过乘加输出端输出/>并寄存在寄存器/>中;
在第二个循环计算步,将和/>分别输入第一乘加单元的两个乘法输入端、将第一个循环计算步得到的中间结果/>输入第一乘加单元的加法输入端,同时,将第一个循环计算步得到的中间结果/>同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,第二乘加单元通过乘加输出端输出;
在第三个循环计算步,将和第二个循环计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将第二个循环计算步得到的中间结果/>输入第一乘加单元的加法输入端,同时,将/>同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,第二乘加单元通过乘加输出端输出/>;
在第四个循环计算步,将寄存器的取值和第三个循环计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端,同时,将第三个循环计算步得到的中间结果同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并作为更新后的/>,第二乘加单元通过乘加输出端输出/>并寄存在寄存器/>中;
在第五个循环计算步,将寄存器的取值同时输入第一乘加单元的两个乘法输入端,同时,将寄存器/>的取值同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出/>并作为更新后的/>,第二乘加单元通过乘加输出端输出;
在第六个循环计算步,将和第五个循环计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将寄存器/>的取值输入第一乘加单元的加法输入端,同时,将/>和寄存器/>的取值分别输入第二乘加单元的两个乘法输入端、将第五个循环计算步得到的中间结果/>输入第二乘加单元的加法输入端;第一乘加单元通过乘加输出端输出/>并作为更新后的/>,第二乘加单元通过乘加输出端输出并作为更新后的/>。
其进一步的技术方案为,输出标量乘结果的仿射坐标包括:
在第一个转换计算步,调用第一乘加单元根据、/>、和/>更新中间结果/>,同时,调用第二乘加单元根据/>、/>、和/>更新中间结果/>;
在第二个转换计算步,调用第一乘加单元根据第一个转换计算步得到的中间结果和中间结果/>更新中间结果/>并更新寄存器/>,同时,调用第二乘加单元根据/>和更新中间结果/>并更新寄存器/>;
在第三个转换计算步,调用第一乘加单元根据和/>更新中间结果/>,同时,调用第二乘加单元根据/>和第二个转换计算步得到的中间结果/>更新中间结果/>;
在第一个转换计算步、第二个转换计算步和第三个转换计算步调用两个乘加单元的过程中,同时调用模逆单元根据进行模逆运算得到/>,并在模逆单元完成模逆运算后进入第四个转换计算步;
在第四个转换计算步,调用第一乘加单元根据寄存器的取值、第三个转换计算步得到的中间结果/>以及寄存器/>的取值更新中间结果/>,同时,调用第二乘加单元根据模逆单元得到的/>、/>和/>更新中间结果/>并得到/>;
在第五个转换计算步,调用第一乘加单元根据第四个转换计算步得到的中间结果和中间结果/>更新中间结果/>;
在第四个转换计算步和第五个转换计算步调用两个乘加单元的过程中,同时调用模逆单元根据第三个转换计算步得到的中间结果进行模逆运算更新得到/>,并在模逆单元完成模逆运算后进入第六个转换计算步;
在第六个转换计算步,调用第一乘加单元根据模逆运算得到的以及第五个转换计算步得到的中间结果/>更新中间结果/>并作为/>。
其进一步的技术方案为,输出标量乘结果的仿射坐标还包括:
在第一个转换计算步,将以及主循环运算过程得到的/>分别输入第一乘加单元的两个乘法输入端、将主循环运算过程得到的/>输入第一乘加单元的加法输入端,同时,将/>以及主循环运算过程得到的/>分别输入第二乘加单元的两个乘法输入端、将主循环运算过程得到的/>输入第二乘加单元的加法输入端;第一乘加单元更新中间结果,第二乘加单元更新中间结果/>;
在第二个转换计算步,将第一个转换计算步得到的中间结果和中间结果/>分别输入第一乘加单元的两个乘法输入端,同时,将主循环运算过程得到的/>和/>分别输入第二乘加单元的两个乘法输入端;第一乘加单元更新中间结果/>并更新寄存器,第二乘加单元更新中间结果/>并更新寄存器/>;
在第三个转换计算步,将和/>分别输入第一乘加单元的两个乘法输入端、且将/>输入第一乘加单元的加法输入端,同时,将/>和第二个转换计算步得到的中间结果分别输入第二乘加单元的两个乘法输入端;第一乘加单元/>更新中间结果,第二乘加单元更新中间结果/>;
在第四个转换计算步,将寄存器的取值以及第三个转换计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将寄存器/>的取值输入第一乘加单元的加法输入端,同时,将模逆单元得到的/>以及主循环运算过程得到的/>输入第二乘加单元,第一乘加单元更新中间结果/>,第二乘加单元更新中间结果以及/>;
在第五个转换计算步,将第四个转换计算步得到的中间结果和中间结果/>分别输入第一乘加单元的两个乘法输入端,第一乘加单元更新中间结果/>;
在第六个转换计算步,将模逆单元得到的和五个转换计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端、将/>输入第一乘加单元的加法输入端,第一乘加单元更新中间结果/>并作为/>。
其进一步的技术方案为,每个乘加单元基于位的乘法模组构建,每个乘加单元利用乘法模组执行模乘运算以及模加运算的方法包括:
通过两个乘法输入端获取乘数和乘数/>、通过加法输入端获取加数/>,确定,/>与/>的最大公约数为1,/>,/>是标量乘电路支持的域长且/>、/>和/>的域长均为/>,/>是幂底数;
利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到乘法结果,并确定乘法结果/>的高半程/>和低半程/>,低半程/>包括乘法结果/>的低/>位,高半程包括乘法结果/>的高/>位且在位宽不足时通过高位补零得到;
利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到乘法结果,/>是乘法结果/>的低/>位;
利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到并作为/>的乘加运算结果通过乘加输出端输出,/>表示对乘法结果/>右移/>位的乘加运算结果。
其进一步的技术方案为,每个位的乘法模组包括9个/>位的KA乘法核,/>表示对/>向上取整,在利用乘法模组计算一组/>位子乘数的乘法结果时,利用Karatsuba四项分解对每个/>位子乘数划分后,分别利用9个/>位的KA乘法核并行运算得到一组/>位子乘数的乘法结果,/>位的乘法模组利用一个时钟周期计算得到一组/>位子乘数的乘法结果。
其进一步的技术方案为,每个乘加单元包括两个位的乘法模组,每个乘加单元执行模乘运算以及模加运算的方法包括:
当输入乘加单元的一个数据组的域长时,乘加单元获取到的乘数/>的高半程/>和低半程/>均为有效数据位,乘加单元获取到的乘数/>的高半程/>和低半程/>均为有效数据位;乘加单元利用乘法模组执行4组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个/>位的乘法模组分别计算两组/>位子乘数的乘法结果,使得乘加单元通过两个时钟周期计算得到乘法结果/>,通过两个时钟周期计算得到乘法结果/>,通过两个时钟周期计算得到;乘加单元共通过6个时钟周期完成模乘运算以及模加运算并输出/>的乘加运算结果;
当输入乘加单元的一个数据组的域长时,乘加单元获取到的乘数/>的高半程/>均为0、低半程/>为有效数据位,乘加单元获取到的乘数/>的高半程/>均为0、低半程/>为有效数据位,乘加单元利用乘法模组执行1组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用一个/>位的乘法模组计算一组/>位子乘数的乘法结果,使得乘加单元通过一个时钟周期计算得到乘法结果/>,通过一个时钟周期计算得到乘法结果/>,通过一个时钟周期计算得到;乘加单元共通过3个时钟周期完成模乘运算以及模加运算并输出/>的乘加运算结果;
其中,乘数的低半程/>包括乘数/>的低/>位、高半程/>包括乘数/>的高/>位且在位宽不足时通过高位补零得到;乘数/>的低半程/>包括乘数/>的低/>位、高半程/>包括乘数/>的高/>位且在位宽不足时通过高位补零得到;每个数据组包括乘加单元通过两个乘法输入端获取到的乘数/>和乘数/>以及通过加法输入端获取到的加数/>。
其进一步的技术方案为,该标量乘控制器对每个乘加单元的调度方法还包括:将两个域长的数据组同时输入乘加单元,乘加单元利用每个乘法模组执行每个数据组所需的一组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个位的乘法模组分别计算两个数据组所需的一组/>位子乘数的乘法结果;使得乘加单元通过一个时钟周期计算得到两个数据组各自的乘法结果/>,通过一个时钟周期计算得到两个数据组各自的乘法结果/>,通过一个时钟周期计算得到两个数据组各自的/>;乘加单元共通过3个时钟周期并行完成两个数据组各自的模乘运算以及模加运算并分别输出两个数据组各自的/>的乘加运算结果。
其进一步的技术方案为,模逆单元基于扩展的欧几里得算法执行模逆运算且每次运行4位,执行一次模逆运算耗费个时钟周期,/>表示对/>向上取整,/>是标量乘电路支持的有限域的域长。
其进一步的技术方案为,标量乘控制器执行的调度方法还包括:
当确定标量乘电路支持的有限域为二元域时向模逆单元发送第一控制指令,模逆单元根据第一控制指令通过异或运算完成加法操作;
当确定标量乘电路支持的有限域为素数域时向模逆单元发送第二控制指令,模逆单元根据第二控制指令通过加法运算完成加法操作。
本申请的有益技术效果是:
本申请公开了一种面向椭圆曲线加密算法的标量乘电路,将传统的点加和倍点的计算过程拆分开并调整了标量乘控制器的时序调度过程,使得只需使用两个乘加单元、一个模逆单元结合若干个寄存器即可完成标量乘的运算,通过优化标量乘调度方案使得该标量乘电路在具有较小的电路面积的同时高效的计算性能。该标量乘电路可以支持任意域长,任意不可约多项式和曲线参数的标量乘运算,具有较高的通用性和灵活性,可以保持高性能的需求。
本申请中的乘加单元将模加运算与模乘运算进行融合,进一步提高了计算性能,且基于传统的蒙哥马利模乘算法和Karatsuba分解算法优化了乘加单元的结构和运算过程,可以降低整体模乘的计算复杂度,提升运算速度。
基于所优化的乘加单元的结构和运算过程,每个乘加单元可以并行计算两条域长以内的椭圆曲线,提高了对乘加单元的资源利用率,并提高了运算效率。
本申请中的模逆单元通过改进传统的扩展的欧几里得算法,可以在不影响关键路径的基础上将降低计算复杂度和执行模逆运算所需的周期数,依次可以提升模逆运算的运算速度。且模逆单元可以依据标量乘控制器的控制指令来切换逻辑,使得模逆单元不仅可以支持二元域上的模逆运算,也可以支持素数域上的模逆运算,方便后续的数字签名算法的计算,进一步提高该标量乘电路的通用性、灵活性、可配置性。
附图说明
图1是本申请一个实施例的标量乘电路的电路结构图。
图2是本申请一个实施例的每个乘加单元的结构示意图。
具体实施方式
下面结合附图对本申请的具体实施方式做进一步说明。
本申请公开了一种面向椭圆曲线加密算法的标量乘电路,请参考图1所示的电路结构示意图,该标量乘电路包括标量乘控制器、第一乘加单元、第二乘加单元、模逆单元和寄存器组,其中:(1)标量乘控制器用于控制第一乘加单元、第二乘加单元和模逆单元的运算过程以实现时序调度。(2)第一乘加单元和第二乘加单元相同,每个乘加单元用于执行模乘运算以及模加运算,每个乘加单元包括两个乘法输入端、一个加法输入端和一个乘加输出端,乘加单元通过两个乘法输入端获取乘数和乘数/>、通过加法输入端获取加数/>后,执行模乘运算以及模加运算并通过乘加输出端输出/>的乘加运算结果。在实际应用时,当加法输入端未获取到加数/>,默认加数/>为缺省值0。(3)模逆单元基于扩展的欧几里得算法执行模乘运算。(4)寄存器组包括若干个寄存器,在一个实施例中,寄存器组包括寄存器/>、寄存器/>、寄存器/>和寄存器/>。
传统的标量乘电路在进行标量乘运算的过程中,需要循环调用点加和倍点的计算,而点加和倍点的计算又需要调用底层有限域的运算。本申请为了减少时序的延迟,减少资源的浪费,将传统的点加和倍点的计算过程拆分开并调整了时序调度过程,本申请的标量乘电路中的标量乘控制器执行的调度方法包括:
1、获取私钥和椭圆曲线上的点/>的仿射坐标/>。私钥/>为正整数且可以表示为二进制形式的/>,私钥/>对应的二进制序列中包含/>个数据位,从高位至低位分别记为/>,最高位/>,/>为整数参数。
本申请的标量乘电路支持任意域长为、任意不可约多项式和曲线参数的标量乘运算,也即椭圆曲线是有限域/>上的椭圆曲线,/>是幂底数且为素数,一般直接取。
椭圆曲线上的点的仿射坐标/>满足/>,/>是椭圆曲线的一次项特征参数,/>是椭圆曲线的常数项特征参数。
2、初始化投影坐标、/>、/>、/>,初始化整数参数/>。
3、在对应任意的一次循环中,执行如下第一个循环计算步至第六个循环计算步,下列实施例以/>、/>、/>和/>进行表示,/>、/>、/>和/>是本申请自定义的四个变量参数且用于表示投影坐标/>、/>、/>、/>,变量参数/>和变量参数/>中的一个变量参数表示、另一个变量参数表示/>,变量参数/>和变量参数/>中的一个变量参数表示/>、另一个变量参数表示/>。后续会具体解释四个变量参数/>、/>、/>和/>各自表示的含义:
(1)在第一个循环计算步,调用第一乘加单元根据和/>计算得到中间结果/>并寄存在寄存器/>中,同时,调用第二乘加单元根据/>计算得到中间结果/>并寄存在寄存器/>中。
在第一个循环计算步对两个乘加单元的调用过程包括:将和/>分别输入第一乘加单元的两个乘法输入端,同时,将/>同时输入第二乘加单元的两个乘法输入端。第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>,因此寄存器/>的取值/>。第二乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,因此寄存器/>的取值/>。
(2)在第二个循环计算步,调用第一乘加单元根据、/>和第一个循环计算步得到的中间结果/>更新中间结果/>并寄存在寄存器/>中,同时,调用第二乘加单元根据第一个循环计算步得到的中间结果/>更新中间结果/>。
在第二个循环计算步对两个乘加单元的调用过程包括:将和/>分别输入第一乘加单元的两个乘法输入端、将第一个循环计算步得到的中间结果/>输入第一乘加单元的加法输入端,同时,将第一个循环计算步得到的中间结果/>同时输入第二乘加单元的两个乘法输入端。第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>,因此寄存器/>的取值/>。第二乘加单元通过乘加输出端输出/>。
(3)在第三个循环计算步,调用第一乘加单元根据以及第二个循环计算步得到的中间结果/>和中间结果/>更新中间结果/>并寄存在寄存器/>中,同时,调用第二乘加单元根据/>更新中间结果/>。
在第三个循环计算步对两个乘加单元的调用过程包括:将和第二个循环计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将第二个循环计算步得到的中间结果/>输入第一乘加单元的加法输入端,同时,将/>同时输入第二乘加单元的两个乘法输入端。第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,因此寄存器/>的取值/>。第二乘加单元通过乘加输出端输出/>。
(4)在第四个循环计算步,调用第一乘加单元根据寄存器的取值和第三个循环计算步得到的中间结果/>更新中间结果/>并作为更新后的/>,同时,调用第二乘加单元根据第三个循环计算步得到的中间结果/>更新中间结果/>并寄存在寄存器/>中。
在第四个循环计算步对两个乘加单元的调用过程包括:将寄存器的取值和第三个循环计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端,同时,将第三个循环计算步得到的中间结果/>同时输入第二乘加单元的两个乘法输入端。第一乘加单元通过乘加输出端输出/>并作为更新后的/>,则更新后的/>。第二乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,因此寄存器/>的取值。
(5)在第五个循环计算步,调用第一乘加单元根据寄存器的取值更新中间结果并作为更新后的/>,同时,调用第二乘加单元根据寄存器/>的取值更新中间结果/>。
在第五个循环计算步对两个乘加单元的调用过程包括:将寄存器的取值同时输入第一乘加单元的两个乘法输入端,同时,将寄存器/>的取值同时输入第二乘加单元的两个乘法输入端。第一乘加单元通过乘加输出端输出/>并作为更新后的/>,则更新后的/>。第二乘加单元通过乘加输出端输出/>。
(6)在第六个循环计算步,调用第一乘加单元根据、第五个循环计算步得到的中间结果/>和寄存器/>的取值更新中间结果/>并作为更新后的/>,同时,调用第二乘加单元根据/>、寄存器/>的取值以及第五个循环计算步得到的中间结果/>更新中间结果/>并作为更新后的/>。
在第六个循环计算步对两个乘加单元的调用过程包括:将和第五个循环计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将寄存器/>的取值输入第一乘加单元的加法输入端,同时,将/>和寄存器/>的取值分别输入第二乘加单元的两个乘法输入端、将第五个循环计算步得到的中间结果/>输入第二乘加单元的加法输入端。第一乘加单元通过乘加输出端输出/>并作为更新后的/>,则更新后的。第二乘加单元通过乘加输出端输出/>并作为更新后的/>,则更新后的/>。
在上述六个循环计算步中,根据对应的的取值不同,/>、/>、/>和/>有不同的含义。
当对应的时/>、/>、/>、/>,则基于上述实施例描述的时序调用过程,对应任意/>的一次循环中执行第一个循环计算步至第六个循环计算步的时序调度过程如下表一所示:
表一
当对应的时/>、/>、/>、/>,则基于上述实施例描述的时序调用过程,对应任意/>的一次循环中执行第一个循环计算步至第六个循环计算步的时序调度过程如下表二所示:
表二
4、通过上述步骤可以看出,在每次循环中会对投影坐标、/>、/>、/>进行更新。当/>时进入下一次循环,利用本次循环更新得到的/>、/>、/>、/>在下一次循环中重复执行第一个循环计算步至第六个循环计算步。直至/>时,确定主循环运算过程结束,并进入如下步骤5的坐标转换过程。
5、调用第一乘加单元、第二乘加单元和模逆单元对投影坐标、/>、/>、/>进行坐标转换输出标量乘结果/>的仿射坐标/>。在一个实施例中,坐标转换过程包括如下步骤:
(1)在第一个转换计算步,调用第一乘加单元根据、/>和/>更新中间结果/>,同时,调用第二乘加单元根据/>、/>和/>更新中间结果/>。
第一个转换计算步对两个乘加单元的调用过程包括:将以及主循环运算过程得到的/>分别输入第一乘加单元的两个乘法输入端、将主循环运算过程得到的/>输入第一乘加单元的加法输入端,同时,将/>以及主循环运算过程得到的/>分别输入第二乘加单元的两个乘法输入端、将主循环运算过程得到的/>输入第二乘加单元的加法输入端。第一乘加单元更新中间结果/>,第二乘加单元更新中间结果。
(2)在第二个转换计算步,调用第一乘加单元根据第一个转换计算步得到的中间结果和中间结果/>更新中间结果/>并更新寄存器/>,同时,调用第二乘加单元根据/>和/>更新中间结果/>并更新寄存器/>。/>
第二个转换计算步对两个乘加单元的调用过程包括:将第一个转换计算步得到的中间结果和中间结果/>分别输入第一乘加单元的两个乘法输入端,同时,将主循环运算过程得到的/>和/>分别输入第二乘加单元的两个乘法输入端。第一乘加单元更新中间结果/>并更新寄存器/>,因此寄存器/>的取值/>。第二乘加单元更新中间结果/>并更新寄存器/>,因此寄存器/>的取值/>。
(3)在第三个转换计算步,调用第一乘加单元根据和/>更新中间结果/>,同时,调用第二乘加单元根据/>和第二个转换计算步得到的中间结果/>更新中间结果/>。
第三个转换计算步对两个乘加单元的调用过程包括:将和/>分别输入第一乘加单元的两个乘法输入端、且将/>输入第一乘加单元的加法输入端,同时,将/>和第二个转换计算步得到的中间结果/>分别输入第二乘加单元的两个乘法输入端。第一乘加单元更新中间结果/>,第二乘加单元更新中间结果/>。
在第一个转换计算步、第二个转换计算步和第三个转换计算步调用两个乘加单元的过程中,同时调用模逆单元根据进行模逆运算得到/>。一般模逆单元完成模逆运算所需的时钟周期远大于三个转换计算步所需的时钟周期,因此在第三转换计算步完成后,等待直至模逆单元完成模逆运算后进入第四个转换计算步。
(4)在第四个转换计算步,调用第一乘加单元根据寄存器的取值、第三个转换计算步得到的中间结果/>以及寄存器/>的取值更新中间结果/>,同时,调用第二乘加单元根据模逆单元得到的/>、/>和/>更新中间结果/>并得到/>。
第四个转换计算步对两个乘加单元的调用过程包括:将寄存器的取值以及第三个转换计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将寄存器的取值输入第一乘加单元的加法输入端,同时,将模逆单元得到的/>以及主循环运算过程得到的/>输入第二乘加单元。第一乘加单元更新中间结果/>。第二乘加单元更新中间结果/>以及/>,/>即为的乘法部分结果。
(5)在第五个转换计算步,调用第一乘加单元根据第四个转换计算步得到的中间结果和中间结果/>更新中间结果/>。
第五个转换计算步对两个乘加单元的调用过程包括:将第四个转换计算步得到的中间结果和中间结果/>分别输入第一乘加单元的两个乘法输入端,第一乘加单元更新中间结果/>。
在第四个转换计算步和第五个转换计算步调用两个乘加单元的过程中,同时调用模逆单元根据第三个转换计算步得到的中间结果进行模逆运算更新得到/>。同样的,模逆单元完成模逆运算所需的时钟周期远大于两个转换计算步所需的时钟周期,因此在第五转换计算步完成后,等待直至模逆单元完成模逆运算后进入第六个转换计算步。
(6)在第六个转换计算步,调用第一乘加单元根据模逆运算得到的以及第五个转换计算步得到的中间结果/>更新中间结果/>并作为/>。
第六个转换计算步对两个乘加单元的调用过程包括:将模逆单元得到的和五个转换计算步得到的中间结果/>分别输入第一乘加单元的两个乘法输入端、将/>输入第一乘加单元的加法输入端,第一乘加单元更新中间结果/>并作为/>,因此/>。
基于上述实施例描述的时序调用过程,坐标转换过程执行第一个转换计算步至第六个转换计算步的时序调度过程如下表三所示:
表三
由此本申请通过改进时序调度过程,利用标量乘控制器、两个乘加单元、模逆单元和寄存器组即可实现标量乘运算,标量乘电路的电路面积较小且具有较优的运算性能。
除了优化时序调度过程之外,本申请的标量乘电路中使用到的乘加单元也做了结构优化,考虑到二元域中的模加运算只是简单的异或,关键路径只是一次异或的时间,如果单独设计会造成时钟周期上的浪费,因此本申请将模加运算融入到模乘运算中,得到乘加单元,且基于传统的蒙哥马利模乘算法和Karatsuba分解算法,通过优化传统的蒙哥马利模乘算法降低了乘加单元的计算复杂度,以提高计算效率。
在一个实施例中,每个乘加单元基于位的乘法模组构建,每个乘加单元利用乘法模组执行模乘运算以及模加运算的方法包括如下步骤:
(a)通过两个乘法输入端获取乘数和乘数/>、通过加法输入端获取加数/>,/>、和/>的域长均为/>。确定/>,/>与/>的最大公约数为1,。/>
(b)利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到乘法结果,并确定乘法结果/>的高半程/>和低半程/>,乘法结果/>的域长为/>,低半程/>包括乘法结果/>的低/>位,高半程/>包括乘法结果/>的高/>位且在位宽不足时通过高位补零得到。
在基于Karatsuba结合蒙哥马利模乘计算得到乘法结果时,首先将乘数划分为高半程/>和低半程/>,将乘数/>划分为高半程/>和低半程/>,乘数/>的低半程/>包括乘数/>的低/>位、高半程/>包括乘数/>的高/>位且在位宽不足时通过高位补零得到。乘数/>的低半程/>包括乘数/>的低/>位、高半程/>包括乘数/>的高/>位且在位宽不足时通过高位补零得到。
划分得到的高半程、低半程/>、低半程/>和高半程/>分别是4个/>位子乘数,然后计算这4个/>位子乘数的部分积/>、/>、/>以及。在计算每一个部分积时,将每一个/>位子乘数利用Karatsuba四项分解方法进一步划分,以低半程/>为例,利用Karatsuba四项分解为,其中,/>、/>、/>和/>分别为分解系数,/>表示对/>向上取整。对于其他的/>位子乘数也如此同样分解,由此在计算每一组/>位子乘数的乘法结果时,可以将原来需要16次完成的大整数乘法运算减少为9次即可完成,以将乘法计算时的计算复杂度从/>降低至/>。
基于此,在另一个实施例中,如图2所示,每个位的乘法模组包括9个/>位的KA乘法核,/>表示对/>向上取整,在利用乘法模组计算一组/>位子乘数的乘法结果时,利用Karatsuba四项分解对每个/>位子乘数划分后,分别利用9个/>位的KA乘法核并行运算所需的9次乘法运算,从而得到一组/>位子乘数的乘法结果。使得/>位的乘法模组利用一个时钟周期计算得到一组/>位子乘数的乘法结果。
(c)利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到乘法结果,乘法结果/>的域长为/>,/>是乘法结果的低/>位。
(d)利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到并作为/>的乘加运算结果通过乘加输出端输出。/>表示对乘法结果/>右移/>位的乘加运算结果,这意味着乘积结果移除掉,相当于只取乘法结果/>的高半程,乘法结果/>的域长为/>,乘法结果/>的高半程包含乘法结果/>的高/>位且在位宽不足时通过高位补零得到。
基于乘法模组所采用的上述优化后的蒙哥马利模乘算法,综合考虑电路面积和计算效率,在一个实施例中,如图2所示,每个乘加单元包括两个位的乘法模组且两个/>位的乘法模组的结构以及运算过程均相同。则每个乘加单元执行模乘运算以及模加运算的方法包括如下过程,根据输入乘加单元的数据组的域长/>分为两种情况,每个数据组包括乘加单元通过两个乘法输入端获取到的乘数/>和乘数/>以及通过加法输入端获取到的加数。
情况一,输入乘加单元的一个数据组的域长时。
在这种情况中,乘加单元获取到的乘数的高半程/>和低半程/>均为有效数据位,乘加单元获取到的乘数/>的高半程/>和低半程/>均为有效数据位。因此乘加单元在上述步骤(b)需要利用两个乘法模组计算全部4个部分积/>、/>、以及/>,则乘加单元在每个时钟周期并行调用两个/>位的乘法模组分别计算两组/>位子乘数的乘法结果,使得乘加单元通过两个时钟周期计算得到乘法结果。
在步骤(c)和(d)中同样如此,因此乘加单元通过两个时钟周期计算得到乘法结果,通过两个时钟周期计算得到/>。
所以在这种情况中,乘加单元共通过6个时钟周期完成域长的一个数据组的模乘运算以及模加运算并输出/>的乘加运算结果。
情况二,输入乘加单元的一个数据组的域长时。
在这种情况中,乘加单元获取到的乘数的高半程/>均为0且由高位补零得到、而低半程/>为有效数据位,乘加单元获取到的乘数/>的高半程/>均为0且由高位补零得到、低半程/>为有效数据位。因此乘加单元在上述步骤(b)只需利用乘法模组计算部分积即可,其余3个部分积/>、/>以及/>可以直接输出为0。
则乘加单元在每个时钟周期调用一个位的乘法模组计算一组/>位子乘数的乘法结果,使得乘加单元通过一个时钟周期计算得到乘法结果/>。
在步骤(c)和(d)中同样如此,因此乘加单元通过一个时钟周期计算得到乘法结果,通过一个时钟周期计算得到/>。
所以在这种情况中,乘加单元共通过3个时钟周期完成域长的一个数据组的模乘运算以及模加运算并输出/>的乘加运算结果。
基于乘加单元的这种运算特性,标量乘电路在完成标量乘运算过程中,在每一次循环的每一个循环计算步会调用一次乘加单元来计算得到一个数据组的乘加运算结果,则当一个循环计算步输入乘加单元的数据组的域长时,该循环计算步占用3个时钟周期;当一个循环计算步输入乘加单元的数据组的域长/>时,该循环计算步占用6个时钟周期。在坐标转换过程中,当一个转换计算步输入乘加单元的数据组的域长/>时,该循环计算步占用3个时钟周期;当一个转换计算步输入乘加单元的数据组的域长/>时,该转换计算步占用6个时钟周期。
在上述情况一中,乘加单元在通过6个时钟周期计算得到一个数据组的乘加运算结果时,每个时钟周期都并行调用两个乘法模组。但在上述情况二中,乘加单元在通过3个时钟周期计算得到一个数据组的乘加运算结果时,每个时钟周期只调用其中一个乘法模组,会使得另一个乘法模组处于闲置状态,造成资源上的浪费。所以为了提高资源利用率,在另一个实施例中,标量乘控制器对每个乘加单元的调度方法还包括:
将两个域长的数据组同时输入一个乘加单元,乘加单元利用每个乘法模组执行每个数据组所需的一组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个/>位的乘法模组分别计算两个数据组所需的一组/>位子乘数的乘法结果。使得乘加单元通过一个时钟周期计算得到两个数据组各自的乘法结果/>,通过一个时钟周期计算得到两个数据组各自的乘法结果/>,通过一个时钟周期计算得到两个数据组各自的/>。乘加单元共通过3个时钟周期并行完成两个数据组各自的模乘运算以及模加运算并分别输出两个数据组各自的的乘加运算结果,也即一个乘加单元通过3个时钟周期并行计算两条域长以内的椭圆曲线。
除了对乘加单元进行优化之外,在另一个实施例中,对模逆单元也进行优化,包括如下两方面的优化:
一方面,改进传统的扩展的欧几里得算法,将每次运算1位改为每次运算多位,虽然关键路径会有些增加,但由于乘加单元关键路径较长,所以模逆单元,关键路径增加之后并不会成为整体设计的关键路径,但将运算位数增加之后,执行模逆运算的周期数也会随之成倍数减少,以此可以提升模逆运算的速度。由于运算位数的增加,关键路径延迟将成倍数增加,如果选取过大,会造成关键路径的问题,所以综合考虑将每次运算1位改为每次运算4位,这样执行模逆运算的周期数减少为原来的1/4,所以执行一次模逆运算耗费个时钟周期,/>表示对/>向上取整,以此可以提升模逆运算的速度。
另一方面,考虑到二元域和素数域的模逆计算原理相同,只是在执行加法操作时,二元域采用异或运算,素数域采用普通的加法运算。所以采用统一的模逆单元实现双域的模逆运算并利用控制指令来切换,则标量乘控制器执行的调度方法还包括:当确定标量乘电路支持的有限域为二元域时向模逆单元发送第一控制指令,模逆单元根据第一控制指令通过异或运算完成加法操作。当确定标量乘电路支持的有限域为素数域时向模逆单元发送第二控制指令,模逆单元根据第二控制指令通过加法运算完成加法操作。由此使得模逆单元不仅可以支持二元域上的模逆运算,也可以支持素数域上的模逆运算,方便后续的数字签名算法的计算,提高该标量乘电路的通用性、灵活性、可配置性。
以上所述的仅是本申请的优选实施方式,本申请不限于以上实施例。可以理解,本领域技术人员在不脱离本申请的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本申请的保护范围之内。
Claims (10)
1.一种面向椭圆曲线加密算法的标量乘电路,其特征在于,所述标量乘电路包括标量乘控制器、第一乘加单元、第二乘加单元、模逆单元和寄存器组,所述第一乘加单元和所述第二乘加单元相同且用于执行模乘运算以及模加运算,所述模逆单元用于执行模逆运算,所述寄存器组包括若干个寄存器;所述标量乘控制器执行的调度方法包括:
获取私钥和椭圆曲线上的点/>的仿射坐标/>,并确定私钥/>对应的二进制序列中包含的/>个数据位/>,最高位/>,/>是整数参数;
初始化投影坐标、/>、/>、/>,初始化整数参数/>;
定义四个变量参数、/>、/>、/>,在对应任意/>的一次循环中执行第一个循环计算步至第六个循环计算步,且/>时/>、/>、/>、/>;/>时/>、/>、/>、/>:
(1)在第一个循环计算步,调用所述第一乘加单元根据和/>计算得到中间结果/>并寄存在寄存器/>中,同时,调用所述第二乘加单元根据/>计算得到中间结果/>并寄存在寄存器/>中;
(2)在第二个循环计算步,调用所述第一乘加单元根据、/>和第一个循环计算步得到的中间结果/>更新中间结果/>并寄存在寄存器/>中,同时,调用所述第二乘加单元根据第一个循环计算步得到的中间结果/>更新中间结果/>;
(3)在第三个循环计算步,调用所述第一乘加单元根据以及第二个循环计算步得到的中间结果/>和中间结果/>更新中间结果/>并寄存在寄存器/>中,同时,调用所述第二乘加单元根据/>更新中间结果/>;
(4)在第四个循环计算步,调用所述第一乘加单元根据寄存器的取值和第三个循环计算步得到的中间结果/>更新中间结果/>并作为更新后的/>,同时,调用所述第二乘加单元根据第三个循环计算步得到的中间结果/>更新中间结果/>并寄存在寄存器/>中;
(5)在第五个循环计算步,调用所述第一乘加单元根据寄存器的取值更新中间结果并作为更新后的/>,同时,调用所述第二乘加单元根据寄存器/>的取值更新中间结果;
(6)在第六个循环计算步,调用所述第一乘加单元根据、第五个循环计算步得到的中间结果/>和寄存器/>的取值更新中间结果/>并作为更新后的/>,同时,调用所述第二乘加单元根据/>、寄存器/>的取值以及第五个循环计算步得到的中间结果/>更新中间结果/>并作为更新后的/>,/>是所述椭圆曲线的常数项特征参数;
令并进入下一次循环,直至/>时确定主循环运算过程结束并调用所述第一乘加单元、第二乘加单元和模逆单元对投影坐标/>、/>、/>、/>进行坐标转换输出标量乘结果/>的仿射坐标/>。
2.根据权利要求1所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,在每次循环中:
在第一个循环计算步,将和/>分别输入所述第一乘加单元的两个乘法输入端,同时,将/>同时输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,所述第二乘加单元通过乘加输出端输出并寄存在寄存器/>中;
在第二个循环计算步,将和/>分别输入所述第一乘加单元的两个乘法输入端、将第一个循环计算步得到的中间结果/>输入所述第一乘加单元的加法输入端,同时,将第一个循环计算步得到的中间结果/>同时输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,所述第二乘加单元通过乘加输出端输出/>;
在第三个循环计算步,将和第二个循环计算步得到的中间结果/>分别输入所述第一乘加单元的两个乘法输入端、将第二个循环计算步得到的中间结果/>输入所述第一乘加单元的加法输入端,同时,将/>同时输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元通过乘加输出端输出/>并寄存在寄存器/>中,所述第二乘加单元通过乘加输出端输出/>;
在第四个循环计算步,将寄存器的取值和第三个循环计算步得到的中间结果/>分别输入所述第一乘加单元的两个乘法输入端,同时,将第三个循环计算步得到的中间结果同时输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元通过乘加输出端输出/>并作为更新后的/>,所述第二乘加单元通过乘加输出端输出/>并寄存在寄存器/>中;
在第五个循环计算步,将寄存器的取值同时输入所述第一乘加单元的两个乘法输入端,同时,将寄存器/>的取值同时输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元通过乘加输出端输出/>并作为更新后的/>,所述第二乘加单元通过乘加输出端输出/>;
在第六个循环计算步,将和第五个循环计算步得到的中间结果/>分别输入所述第一乘加单元的两个乘法输入端、将寄存器/>的取值输入所述第一乘加单元的加法输入端,同时,将/>和寄存器/>的取值分别输入所述第二乘加单元的两个乘法输入端、将第五个循环计算步得到的中间结果/>输入所述第二乘加单元的加法输入端;所述第一乘加单元通过乘加输出端输出/>并作为更新后的/>,所述第二乘加单元通过乘加输出端输出/>并作为更新后的/>。
3.根据权利要求1所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,输出标量乘结果的仿射坐标包括:
在第一个转换计算步,调用所述第一乘加单元根据、/>和/>更新中间结果/>,同时,调用所述第二乘加单元根据/>、/>和/>更新中间结果/>;
在第二个转换计算步,调用所述第一乘加单元根据第一个转换计算步得到的中间结果和中间结果/>更新中间结果/>并更新寄存器/>,同时,调用所述第二乘加单元根据/>和/>更新中间结果/>并更新寄存器/>;
在第三个转换计算步,调用所述第一乘加单元根据和/>更新中间结果/>,同时,调用所述第二乘加单元根据/>和第二个转换计算步得到的中间结果/>更新中间结果/>;
在第一个转换计算步、第二个转换计算步和第三个转换计算步调用两个乘加单元的过程中,同时调用所述模逆单元根据进行模逆运算得到/>,并在所述模逆单元完成模逆运算后进入第四个转换计算步;
在第四个转换计算步,调用所述第一乘加单元根据寄存器的取值、第三个转换计算步得到的中间结果/>以及寄存器/>的取值更新中间结果/>,同时,调用所述第二乘加单元根据所述模逆单元得到的/>、/>和/>更新中间结果/>并得到/>;
在第五个转换计算步,调用所述第一乘加单元根据第四个转换计算步得到的中间结果和中间结果/>更新中间结果/>;
在第四个转换计算步和第五个转换计算步调用两个乘加单元的过程中,同时调用所述模逆单元根据第三个转换计算步得到的中间结果进行模逆运算更新得到/>,并在所述模逆单元完成模逆运算后进入第六个转换计算步;
在第六个转换计算步,调用所述第一乘加单元根据所述模逆运算得到的以及第五个转换计算步得到的中间结果/>更新中间结果/>并作为/>。
4.根据权利要求3所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,输出标量乘结果的仿射坐标还包括:
在第一个转换计算步,将以及主循环运算过程得到的/>分别输入所述第一乘加单元的两个乘法输入端、将主循环运算过程得到的/>输入所述第一乘加单元的加法输入端,同时,将/>以及主循环运算过程得到的/>分别输入所述第二乘加单元的两个乘法输入端、将主循环运算过程得到的/>输入所述第二乘加单元的加法输入端;所述第一乘加单元更新中间结果/>,所述第二乘加单元更新中间结果/>;
在第二个转换计算步,将第一个转换计算步得到的中间结果和中间结果/>分别输入所述第一乘加单元的两个乘法输入端,同时,将主循环运算过程得到的/>和/>分别输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元更新中间结果/>并更新寄存器/>,所述第二乘加单元更新中间结果/>并更新寄存器/>;
在第三个转换计算步,将和/>分别输入所述第一乘加单元的两个乘法输入端、且将/>输入所述第一乘加单元的加法输入端,同时,将/>和第二个转换计算步得到的中间结果/>分别输入所述第二乘加单元的两个乘法输入端;所述第一乘加单元/>更新中间结果/>,所述第二乘加单元更新中间结果/>;
在第四个转换计算步,将寄存器的取值以及第三个转换计算步得到的中间结果/>分别输入所述第一乘加单元的两个乘法输入端、将寄存器/>的取值输入所述第一乘加单元的加法输入端,同时,将所述模逆单元得到的/>以及主循环运算过程得到的/>输入所述第二乘加单元,所述第一乘加单元更新中间结果/>,所述第二乘加单元更新中间结果/>以及/>;
在第五个转换计算步,将第四个转换计算步得到的中间结果和中间结果/>分别输入所述第一乘加单元的两个乘法输入端,所述第一乘加单元更新中间结果/>;
在第六个转换计算步,将所述模逆单元得到的和五个转换计算步得到的中间结果分别输入所述第一乘加单元的两个乘法输入端、将/>输入所述第一乘加单元的加法输入端,所述第一乘加单元更新中间结果/>并作为/>。
5.根据权利要求1所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,每个乘加单元基于位的乘法模组构建,每个乘加单元利用乘法模组执行模乘运算以及模加运算的方法包括:
通过两个乘法输入端获取乘数和乘数/>、通过加法输入端获取加数/>,确定,/>与/>的最大公约数为1,/>,/>是所述标量乘电路支持的域长且/>、/>和/>的域长均为/>,/>是幂底数;
利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到乘法结果,并确定乘法结果/>的高半程/>和低半程/>,低半程/>包括乘法结果/>的低/>位,高半程/>包括乘法结果/>的高/>位且在位宽不足时通过高位补零得到;
利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到乘法结果,/>是乘法结果/>的低/>位;
利用乘法模组基于Karatsuba结合蒙哥马利模乘计算得到并作为/>的乘加运算结果通过乘加输出端输出,/>表示对乘法结果/>右移/>位的乘加运算结果。
6.根据权利要求5所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,每个位的乘法模组包括9个/>位的KA乘法核,/>表示对/>向上取整,在利用所述乘法模组计算一组/>位子乘数的乘法结果时,利用Karatsuba四项分解对每个/>位子乘数划分后,分别利用9个/>位的KA乘法核并行运算得到一组/>位子乘数的乘法结果,所述/>位的乘法模组利用一个时钟周期计算得到一组/>位子乘数的乘法结果。
7.根据权利要求6所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,每个乘加单元包括两个位的乘法模组,每个乘加单元执行模乘运算以及模加运算的方法包括:
当输入所述乘加单元的一个数据组的域长时,所述乘加单元获取到的乘数/>的高半程/>和低半程/>均为有效数据位,所述乘加单元获取到的乘数/>的高半程/>和低半程/>均为有效数据位;所述乘加单元利用乘法模组执行4组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个/>位的乘法模组分别计算两组/>位子乘数的乘法结果,使得所述乘加单元通过两个时钟周期计算得到乘法结果/>,通过两个时钟周期计算得到乘法结果/>,通过两个时钟周期计算得到;所述乘加单元共通过6个时钟周期完成模乘运算以及模加运算并输出/>的乘加运算结果;
当输入所述乘加单元的一个数据组的域长时,所述乘加单元获取到的乘数/>的高半程/>均为0、低半程/>为有效数据位,所述乘加单元获取到的乘数/>的高半程/>均为0、低半程/>为有效数据位,所述乘加单元利用乘法模组执行1组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用一个/>位的乘法模组计算一组/>位子乘数的乘法结果,使得所述乘加单元通过一个时钟周期计算得到乘法结果/>,通过一个时钟周期计算得到乘法结果/>,通过一个时钟周期计算得到;所述乘加单元共通过3个时钟周期完成模乘运算以及模加运算并输出/>的乘加运算结果;
其中,乘数的低半程/>包括乘数/>的低/>位、高半程/>包括乘数/>的高/>位且在位宽不足时通过高位补零得到;乘数/>的低半程/>包括乘数/>的低/>位、高半程/>包括乘数/>的高/>位且在位宽不足时通过高位补零得到;每个数据组包括所述乘加单元通过两个乘法输入端获取到的乘数/>和乘数/>以及通过加法输入端获取到的加数/>。
8.根据权利要求7所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,所述标量乘控制器对每个乘加单元的调度方法还包括:
将两个域长的数据组同时输入所述乘加单元,所述乘加单元利用每个乘法模组执行每个数据组所需的一组/>位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个/>位的乘法模组分别计算两个数据组所需的一组/>位子乘数的乘法结果;使得所述乘加单元通过一个时钟周期计算得到两个数据组各自的乘法结果/>,通过一个时钟周期计算得到两个数据组各自的乘法结果/>,通过一个时钟周期计算得到两个数据组各自的/>;所述乘加单元共通过3个时钟周期并行完成两个数据组各自的模乘运算以及模加运算并分别输出两个数据组各自的/>的乘加运算结果。
9.根据权利要求1所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,所述模逆单元基于扩展的欧几里得算法执行模逆运算且每次运行4位,执行一次模逆运算耗费个时钟周期,/>表示对/>向上取整,/>是所述标量乘电路支持的有限域的域长。
10.根据权利要求1所述的面向椭圆曲线加密算法的标量乘电路,其特征在于,所述标量乘控制器执行的调度方法还包括:
当确定所述标量乘电路支持的有限域为二元域时向所述模逆单元发送第一控制指令,所述模逆单元根据所述第一控制指令通过异或运算完成加法操作;
当确定所述标量乘电路支持的有限域为素数域时向所述模逆单元发送第二控制指令,所述模逆单元根据所述第二控制指令通过加法运算完成加法操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311091415.XA CN116820394B (zh) | 2023-08-29 | 2023-08-29 | 一种面向椭圆曲线加密算法的标量乘电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311091415.XA CN116820394B (zh) | 2023-08-29 | 2023-08-29 | 一种面向椭圆曲线加密算法的标量乘电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116820394A CN116820394A (zh) | 2023-09-29 |
CN116820394B true CN116820394B (zh) | 2023-11-03 |
Family
ID=88122466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311091415.XA Active CN116820394B (zh) | 2023-08-29 | 2023-08-29 | 一种面向椭圆曲线加密算法的标量乘电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820394B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144472A (zh) * | 2018-07-17 | 2019-01-04 | 东南大学 | 一种二元扩域椭圆曲线的标量乘法及其实现电路 |
CN111966324A (zh) * | 2020-08-19 | 2020-11-20 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
CN114895870A (zh) * | 2022-04-29 | 2022-08-12 | 中国人民解放军93216部队 | 基于fpga实现的高效可重构sm2点乘方法及系统 |
-
2023
- 2023-08-29 CN CN202311091415.XA patent/CN116820394B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144472A (zh) * | 2018-07-17 | 2019-01-04 | 东南大学 | 一种二元扩域椭圆曲线的标量乘法及其实现电路 |
CN111966324A (zh) * | 2020-08-19 | 2020-11-20 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
CN114895870A (zh) * | 2022-04-29 | 2022-08-12 | 中国人民解放军93216部队 | 基于fpga实现的高效可重构sm2点乘方法及系统 |
Non-Patent Citations (1)
Title |
---|
TTA-EC:一种基于传输触发体系结构的ECC整体算法处理器;赵学秘 等;《计算机学报》;第30卷(第2期);第225-233页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116820394A (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
CN101782845A (zh) | 一种椭圆曲线密码的高速运算装置和方法 | |
CN111966324A (zh) | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 | |
CN113783702A (zh) | 一种椭圆曲线数字签名与验签的硬件实现方法和系统 | |
CN113010142B (zh) | 一种新型脉动结点式标量点乘的双域实现系统及方法 | |
CN109933304B (zh) | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 | |
Hossain et al. | Efficient fpga implementation of modular arithmetic for elliptic curve cryptography | |
CN112799634B (zh) | 一种基于基22mdc ntt结构的高性能环多项式乘法器 | |
CN109271137B (zh) | 一种基于公钥加密算法的模乘装置及协处理器 | |
CN114895870A (zh) | 基于fpga实现的高效可重构sm2点乘方法及系统 | |
CN113114462B (zh) | 一种应用于ecc安全硬件电路的小面积标量乘电路 | |
CN117692126A (zh) | 一种基于低复杂度模乘算法的Paillier同态加密方法及系统 | |
CN117472329A (zh) | 一种利用dsp级联结构提高蒙哥马利模乘吞吐量的方法及系统 | |
CN117406957A (zh) | 一种模乘方法、模乘组件和半定制电路 | |
CN116820394B (zh) | 一种面向椭圆曲线加密算法的标量乘电路 | |
CN116366248B (zh) | 基于紧凑指令集扩展的Kyber实现方法及系统 | |
WO2023246063A1 (zh) | 模乘器、安全芯片、电子设备及加密方法 | |
CN110232289A (zh) | 椭圆曲线密码的高速倍点运算方法 | |
Hu et al. | Low-power reconfigurable architecture of elliptic curve cryptography for IoT | |
CN115268839A (zh) | 一种以2为基的蒙哥马利模乘方法及装置 | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
Lee et al. | Low area-delay complexity digit-level parallel-in serial-out multiplier over gf (2m) based on overlap-free karatsuba algorithm | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
US5948051A (en) | Device improving the processing speed of a modular arithmetic coprocessor |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |