一种面向椭圆曲线加密算法的标量乘电路的制作方法

文档序号:35666923发布日期:2023-10-06 22:48阅读:35来源:国知局
一种面向椭圆曲线加密算法的标量乘电路的制作方法

本技术涉及数字信息传输领域,尤其是一种面向椭圆曲线加密算法的标量乘电路。


背景技术:

1、公钥密码体制使用不同的加密密钥和解密密钥,其具有运算速度快的优点,被广泛应用于各种高性能数据密集应用场景中,可以为互联网通信提供安全及完整性保障。

2、ecc(elliptic curve cryptography,椭圆曲线密码学)是常见的公钥密码体制,在椭圆曲线密码学的有限域中,标量乘的实现需要循环调用点加运算和倍点运算,而点加运算和倍点运算又需要调用底层有限域的运算,主要包括模加运算、模乘运算、模平方运算、模逆运算,因此标量乘是签名/验签过程中最耗时的加密运算单元,也是影响椭圆曲线加密系统的运算速度和功耗性能的关键。

3、但也由于标量乘的运算复杂度,目前的标量乘电路为了获得高性能往往都需要牺牲电路面积,而且往往都只能针对特定的域长完成标量乘运算,导致难以在电路面积、性能和灵活性等各方面都有较优的表现,影响椭圆曲线加密系统的整体性能。


技术实现思路

1、本技术针对上述问题及技术需求,提出了一种面向椭圆曲线加密算法的标量乘电路,本技术的技术方案如下:

2、一种面向椭圆曲线加密算法的标量乘电路,该标量乘电路包括标量乘控制器、第一乘加单元、第二乘加单元、模逆单元和寄存器组,第一乘加单元和第二乘加单元相同且用于执行模乘运算以及模加运算,模逆单元用于执行模逆运算,寄存器组包括若干个寄存器;标量乘控制器执行的调度方法包括:

3、获取私钥和椭圆曲线上的点的仿射坐标,并确定私钥对应的二进制序列中包含的个数据位,最高位,是整数参数;

4、初始化投影坐标、、、,初始化整数参数;

5、定义四个变量参数、、、,在对应任意的一次循环中执行第一个循环计算步至第六个循环计算步,且时、、、;时、、、:

6、(1)在第一个循环计算步,调用第一乘加单元根据和计算得到中间结果并寄存在寄存器中,同时,调用第二乘加单元根据计算得到中间结果并寄存在寄存器中;

7、(2)在第二个循环计算步,调用第一乘加单元根据、和第一个循环计算步得到的中间结果更新中间结果并寄存在寄存器中,同时,调用第二乘加单元根据第一个循环计算步得到的中间结果更新中间结果;

8、(3)在第三个循环计算步,调用第一乘加单元根据以及第二个循环计算步得到的中间结果和中间结果更新中间结果并寄存在寄存器中,同时,调用第二乘加单元根据更新中间结果;

9、(4)在第四个循环计算步,调用第一乘加单元根据寄存器的取值和第三个循环计算步得到的中间结果更新中间结果并作为更新后的,同时,调用第二乘加单元根据第三个循环计算步得到的中间结果更新中间结果并寄存在寄存器中;

10、(5)在第五个循环计算步,调用第一乘加单元根据寄存器的取值更新中间结果并作为更新后的,同时,调用第二乘加单元根据寄存器的取值更新中间结果;

11、(6)在第六个循环计算步,调用第一乘加单元根据、第五个循环计算步得到的中间结果和寄存器的取值更新中间结果并作为更新后的,同时,调用第二乘加单元根据、寄存器的取值以及第五个循环计算步得到的中间结果更新中间结果并作为更新后的,是椭圆曲线的常数项特征参数;

12、令并进入下一次循环,直至时确定主循环运算过程结束并调用第一乘加单元、第二乘加单元和模逆单元对投影坐标、、、进行坐标转换输出标量乘结果的仿射坐标。

13、其进一步的技术方案为,在每次循环中:

14、在第一个循环计算步,将和分别输入第一乘加单元的两个乘法输入端,同时,将同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并寄存在寄存器中,第二乘加单元通过乘加输出端输出并寄存在寄存器中;

15、在第二个循环计算步,将和分别输入第一乘加单元的两个乘法输入端、将第一个循环计算步得到的中间结果输入第一乘加单元的加法输入端,同时,将第一个循环计算步得到的中间结果同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并寄存在寄存器中,第二乘加单元通过乘加输出端输出;

16、在第三个循环计算步,将和第二个循环计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端、将第二个循环计算步得到的中间结果输入第一乘加单元的加法输入端,同时,将同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并寄存在寄存器中,第二乘加单元通过乘加输出端输出;

17、在第四个循环计算步,将寄存器的取值和第三个循环计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端,同时,将第三个循环计算步得到的中间结果同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并作为更新后的,第二乘加单元通过乘加输出端输出并寄存在寄存器中;

18、在第五个循环计算步,将寄存器的取值同时输入第一乘加单元的两个乘法输入端,同时,将寄存器的取值同时输入第二乘加单元的两个乘法输入端;第一乘加单元通过乘加输出端输出并作为更新后的,第二乘加单元通过乘加输出端输出;

19、在第六个循环计算步,将和第五个循环计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端、将寄存器的取值输入第一乘加单元的加法输入端,同时,将和寄存器的取值分别输入第二乘加单元的两个乘法输入端、将第五个循环计算步得到的中间结果输入第二乘加单元的加法输入端;第一乘加单元通过乘加输出端输出并作为更新后的,第二乘加单元通过乘加输出端输出并作为更新后的。

20、其进一步的技术方案为,输出标量乘结果的仿射坐标包括:

21、在第一个转换计算步,调用第一乘加单元根据、、和更新中间结果,同时,调用第二乘加单元根据、、和更新中间结果;

22、在第二个转换计算步,调用第一乘加单元根据第一个转换计算步得到的中间结果和中间结果更新中间结果并更新寄存器,同时,调用第二乘加单元根据和更新中间结果并更新寄存器;

23、在第三个转换计算步,调用第一乘加单元根据和更新中间结果,同时,调用第二乘加单元根据和第二个转换计算步得到的中间结果更新中间结果;

24、在第一个转换计算步、第二个转换计算步和第三个转换计算步调用两个乘加单元的过程中,同时调用模逆单元根据进行模逆运算得到,并在模逆单元完成模逆运算后进入第四个转换计算步;

25、在第四个转换计算步,调用第一乘加单元根据寄存器的取值、第三个转换计算步得到的中间结果以及寄存器的取值更新中间结果,同时,调用第二乘加单元根据模逆单元得到的、和更新中间结果并得到;

26、在第五个转换计算步,调用第一乘加单元根据第四个转换计算步得到的中间结果和中间结果更新中间结果;

27、在第四个转换计算步和第五个转换计算步调用两个乘加单元的过程中,同时调用模逆单元根据第三个转换计算步得到的中间结果进行模逆运算更新得到,并在模逆单元完成模逆运算后进入第六个转换计算步;

28、在第六个转换计算步,调用第一乘加单元根据模逆运算得到的以及第五个转换计算步得到的中间结果更新中间结果并作为。

29、其进一步的技术方案为,输出标量乘结果的仿射坐标还包括:

30、在第一个转换计算步,将以及主循环运算过程得到的分别输入第一乘加单元的两个乘法输入端、将主循环运算过程得到的输入第一乘加单元的加法输入端,同时,将以及主循环运算过程得到的分别输入第二乘加单元的两个乘法输入端、将主循环运算过程得到的输入第二乘加单元的加法输入端;第一乘加单元更新中间结果,第二乘加单元更新中间结果;

31、在第二个转换计算步,将第一个转换计算步得到的中间结果和中间结果分别输入第一乘加单元的两个乘法输入端,同时,将主循环运算过程得到的和分别输入第二乘加单元的两个乘法输入端;第一乘加单元更新中间结果并更新寄存器,第二乘加单元更新中间结果并更新寄存器;

32、在第三个转换计算步,将和分别输入第一乘加单元的两个乘法输入端、且将输入第一乘加单元的加法输入端,同时,将和第二个转换计算步得到的中间结果分别输入第二乘加单元的两个乘法输入端;第一乘加单元更新中间结果,第二乘加单元更新中间结果;

33、在第四个转换计算步,将寄存器的取值以及第三个转换计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端、将寄存器的取值输入第一乘加单元的加法输入端,同时,将模逆单元得到的以及主循环运算过程得到的输入第二乘加单元,第一乘加单元更新中间结果,第二乘加单元更新中间结果以及;

34、在第五个转换计算步,将第四个转换计算步得到的中间结果和中间结果分别输入第一乘加单元的两个乘法输入端,第一乘加单元更新中间结果;

35、在第六个转换计算步,将模逆单元得到的和五个转换计算步得到的中间结果分别输入第一乘加单元的两个乘法输入端、将输入第一乘加单元的加法输入端,第一乘加单元更新中间结果并作为。

36、其进一步的技术方案为,每个乘加单元基于位的乘法模组构建,每个乘加单元利用乘法模组执行模乘运算以及模加运算的方法包括:

37、通过两个乘法输入端获取乘数和乘数、通过加法输入端获取加数,确定,与的最大公约数为1,,是标量乘电路支持的域长且、和的域长均为,是幂底数;

38、利用乘法模组基于karatsuba结合蒙哥马利模乘计算得到乘法结果,并确定乘法结果的高半程和低半程,低半程包括乘法结果的低位,高半程包括乘法结果的高位且在位宽不足时通过高位补零得到;

39、利用乘法模组基于karatsuba结合蒙哥马利模乘计算得到乘法结果,是乘法结果的低位;

40、利用乘法模组基于karatsuba结合蒙哥马利模乘计算得到并作为的乘加运算结果通过乘加输出端输出,表示对乘法结果右移位的乘加运算结果。

41、其进一步的技术方案为,每个位的乘法模组包括9个位的ka乘法核,表示对向上取整,在利用乘法模组计算一组位子乘数的乘法结果时,利用karatsuba四项分解对每个位子乘数划分后,分别利用9个位的ka乘法核并行运算得到一组位子乘数的乘法结果,位的乘法模组利用一个时钟周期计算得到一组位子乘数的乘法结果。

42、其进一步的技术方案为,每个乘加单元包括两个位的乘法模组,每个乘加单元执行模乘运算以及模加运算的方法包括:

43、当输入乘加单元的一个数据组的域长时,乘加单元获取到的乘数的高半程和低半程均为有效数据位,乘加单元获取到的乘数的高半程和低半程均为有效数据位;乘加单元利用乘法模组执行4组位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个位的乘法模组分别计算两组位子乘数的乘法结果,使得乘加单元通过两个时钟周期计算得到乘法结果,通过两个时钟周期计算得到乘法结果,通过两个时钟周期计算得到;乘加单元共通过6个时钟周期完成模乘运算以及模加运算并输出的乘加运算结果;

44、当输入乘加单元的一个数据组的域长时,乘加单元获取到的乘数的高半程均为0、低半程为有效数据位,乘加单元获取到的乘数的高半程均为0、低半程为有效数据位,乘加单元利用乘法模组执行1组位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用一个位的乘法模组计算一组位子乘数的乘法结果,使得乘加单元通过一个时钟周期计算得到乘法结果,通过一个时钟周期计算得到乘法结果,通过一个时钟周期计算得到;乘加单元共通过3个时钟周期完成模乘运算以及模加运算并输出的乘加运算结果;

45、其中,乘数的低半程包括乘数的低位、高半程包括乘数的高位且在位宽不足时通过高位补零得到;乘数的低半程包括乘数的低位、高半程包括乘数的高位且在位宽不足时通过高位补零得到;每个数据组包括乘加单元通过两个乘法输入端获取到的乘数和乘数以及通过加法输入端获取到的加数。

46、其进一步的技术方案为,该标量乘控制器对每个乘加单元的调度方法还包括:将两个域长的数据组同时输入乘加单元,乘加单元利用每个乘法模组执行每个数据组所需的一组位子乘数的乘法运算得到相应的乘法结果,且在每个时钟周期并行调用两个位的乘法模组分别计算两个数据组所需的一组位子乘数的乘法结果;使得乘加单元通过一个时钟周期计算得到两个数据组各自的乘法结果,通过一个时钟周期计算得到两个数据组各自的乘法结果,通过一个时钟周期计算得到两个数据组各自的;乘加单元共通过3个时钟周期并行完成两个数据组各自的模乘运算以及模加运算并分别输出两个数据组各自的的乘加运算结果。

47、其进一步的技术方案为,模逆单元基于扩展的欧几里得算法执行模逆运算且每次运行4位,执行一次模逆运算耗费个时钟周期,表示对向上取整,是标量乘电路支持的有限域的域长。

48、其进一步的技术方案为,标量乘控制器执行的调度方法还包括:

49、当确定标量乘电路支持的有限域为二元域时向模逆单元发送第一控制指令,模逆单元根据第一控制指令通过异或运算完成加法操作;

50、当确定标量乘电路支持的有限域为素数域时向模逆单元发送第二控制指令,模逆单元根据第二控制指令通过加法运算完成加法操作。

51、本技术的有益技术效果是:

52、本技术公开了一种面向椭圆曲线加密算法的标量乘电路,将传统的点加和倍点的计算过程拆分开并调整了标量乘控制器的时序调度过程,使得只需使用两个乘加单元、一个模逆单元结合若干个寄存器即可完成标量乘的运算,通过优化标量乘调度方案使得该标量乘电路在具有较小的电路面积的同时高效的计算性能。该标量乘电路可以支持任意域长,任意不可约多项式和曲线参数的标量乘运算,具有较高的通用性和灵活性,可以保持高性能的需求。

53、本技术中的乘加单元将模加运算与模乘运算进行融合,进一步提高了计算性能,且基于传统的蒙哥马利模乘算法和karatsuba分解算法优化了乘加单元的结构和运算过程,可以降低整体模乘的计算复杂度,提升运算速度。

54、基于所优化的乘加单元的结构和运算过程,每个乘加单元可以并行计算两条域长以内的椭圆曲线,提高了对乘加单元的资源利用率,并提高了运算效率。

55、本技术中的模逆单元通过改进传统的扩展的欧几里得算法,可以在不影响关键路径的基础上将降低计算复杂度和执行模逆运算所需的周期数,依次可以提升模逆运算的运算速度。且模逆单元可以依据标量乘控制器的控制指令来切换逻辑,使得模逆单元不仅可以支持二元域上的模逆运算,也可以支持素数域上的模逆运算,方便后续的数字签名算法的计算,进一步提高该标量乘电路的通用性、灵活性、可配置性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1