本发明涉及密码学,尤其涉及一种支持国密sm9算法的硬件加速器及加速方法。
背景技术:
1、国密sm9算法是一种基于身份的密码算法,它结合了椭圆曲线密码学和双线性对运算,主要用于身份认证、密钥协商和数字签名。目前,基于有限域的国密sm9算法,通常对底层运算采用模块化设计,在硬件架构中保留各级算子,如素域计算模块,二次扩域运算模块,四次扩域运算模块,十二次扩域运算模块,二次扩域椭圆曲线运算模块和线函数运算模块等。这种硬件实现,运算功能多,接口灵活,总面积小,能够保持较高的运算性能。
2、但是,由于硬件架构中各级算子较多,导致架构复杂,设计成本高,资源占用高。
技术实现思路
1、本发明实施例的目的是提供一种支持国密sm9算法的硬件加速器及加速方法,以解决现有技术中的问题。
2、第一方面,本发明实施例提供了一种支持国密sm9算法的硬件加速器,包括:
3、控制模块,用于将sm9算法的运算流程拆解为由中层算子组成的流程,所述中层算子对应的运算由基域算子对应的运算构成;
4、中层算子,用于执行双线性对运算、点运算和扩域运算,所述点运算中的点乘运算包括多个核心算子,所述扩域运算中的高次幂运算包括多个核心算子;
5、基域算子,用于执行线性运算和模运算;
6、转接层,用于按照所述控制模块拆解后的流程,调用所述中层算子对输入数据执行运算得到运算结果;
7、寄存器,用于存储输入数据和运算结果;
8、接口,用于从外部接收输入数据以及将运算结果作为输出数据发送至外部。
9、第二方面,本发明实施例提供了一种加速方法,应用于如上所述的支持国密sm9算法的硬件加速器,包括:
10、将sm9算法的运算流程拆解为由中层算子组成的流程,所述中层算子对应的运算由基域算子对应的运算构成;
11、按照所述控制模块拆解后的流程,调用所述中层算子对接收的输入数据执行运算得到运算结果;
12、将运算结果作为输出数据发送;
13、其中,所述中层算子用于执行双线性对运算、点运算和扩域运算,所述点运算中的点乘运算包括多个核心算子,所述扩域运算中的高次幂运算包括多个核心算子,所述基域算子用于执行线性运算和模运算。
14、由以上本发明实施例提供的技术方案可见,本发明实施例将sm9算法的运算流程拆解为由中层算子组成的流程,按照拆解后的流程调用中层算子对输入数据执行运算得到运算结果,由中层算子执行双线性对运算、点运算和扩域运算,基域算子执行线性运算和模运算,点运算中的点乘运算以及扩域运算中的高次幂运算均包括多个核心算子,因此,通过基域、核心和中层三层架构来实现sm9算法,极大地降低了硬件架构的复杂度,并行化程度高,资源占用少,节省了设计成本。
1.一种支持国密sm9算法的硬件加速器,其特征在于,包括:
2.根据权利要求1所述的硬件加速器,其特征在于,所述控制模块包括:
3.根据权利要求1所述的硬件加速器,其特征在于,
4.根据权利要求3所述的硬件加速器,其特征在于,所述中层算子包括:
5.根据权利要求3所述的硬件加速器,其特征在于,所述基域算子包括:
6.根据权利要求3所述的硬件加速器,其特征在于,
7.根据权利要求1所述的硬件加速器,其特征在于,所述转接层还包括:
8.根据权利要求1所述的硬件加速器,其特征在于,所述硬件加速器内预置有硬件可执行的机器码,所述机器码采用如下方法得到:
9.根据权利要求1所述的硬件加速器,其特征在于,所述硬件加速器内预置有指示sm9算法中指令存储规范的指令集,所述指令集包括多条宽度相同的指令,所述指令从高位到低位包括操作类型域、结果域、第一操作数域和第二操作数域;
10.一种加速方法,其特征在于,应用于如权利要求1-9中任一项所述的支持国密sm9算法的硬件加速器,包括: