本发明涉及模乘运算,尤其涉及一种蒙哥马利模乘的硬件加速器实现方法、蒙哥马利模乘的硬件加速器及安全芯片。
背景技术:
::1、在密码学领域,模乘运算是一种基础的数学运算,广泛应用于各种加密算法、数字签名方案和密钥交换协议中。通过对大素数的模乘运算,可以实现数据的加密、解密、身份认证和数据完整性验证,保障通信的安全性和隐私性。2、模乘运算的一种主要应用场景是在公钥密码学中,比如rsa加密算法和diffie-hellman密钥交换协议。在rsa算法中,模乘运算用于生成密钥、加密和解密消息,实现数据的机密性;而在diffie-hellman协议中,模乘运算用于双方协商共享密钥,确保通信的安全性。这些经典的密码学技术依赖于模乘运算的数学性质,为信息安全提供了重要保障。除了传统的应用场景外,在深度学习和密码学的结合中,模乘运算被用于构建安全的神经网络模型,保护用户数据的隐私性。另外,基于椭圆曲线密码学的方案中,模乘运算在加密算法和数字签名中发挥了重要作用,实现了高效且安全的加密通信。3、然而,在密码学和计算机科学领域,模乘运算的操作数一般为大整数或大素数,操作数的数据位宽通常在128位以上。甚至在rsa算法中,模数通常为1024或者2048位。这对于现代32位或64位计算机而言,模运算常常需要耗费大量的时间和计算资源。因此,研究人员一直致力于在软件和硬件两个方面开发各种加速技术,以提高模乘运算的效率和性能。以下是几种常见的模乘运算加速技术:4、(1)基于cpu:软件上,研究人员提出了蒙哥马利算法和巴雷特算法,它们将模乘运算转化为位操作和加法操作,通过减少乘法和模运算的执行次数来提高计算效率。然而受限于cpu的并行程度和通用性能,这些算法在cpu上的实现仍无法满足大规模模乘运算的性能需求;5、(2)基于gpu:虽然gpu在密集型计算任务上表现出色,但由于其硬件成本高昂、能耗巨大,尤其是针对高性能计算的专业级gpu,因此使用gpu来加速模乘运算不太实际;6、(3)基于fpga:目前较多的模乘运算加速工作都聚焦在上述两个算法在fpga上的实现,尽管这些工作的性能已经显著优于在cpu上的实现,但吞吐量仍无法支持大规模的模乘运算。7、因此,如何能够在不增加成本的前提下实现模乘运算性能的提升成为本领域技术人员亟待解决的技术问题。技术实现思路1、本发明提供了一种蒙哥马利模乘的硬件加速器实现方法、蒙哥马利模乘的硬件加速器及安全芯片,解决相关技术中存在的模乘运算性能提升受限的问题。2、作为本发明的第一个方面,提供一种蒙哥马利模乘的硬件加速器实现方法,其中,包括:3、配置蒙哥马利模乘的输入参数,所述输入参数至少包括第一模乘操作数、第二模乘操作数、目标模数、移位模数、模乘的基以及操作数位宽,所述模乘的基为2的预设次幂,所述移位模数为2的整数次幂,且所述移位模数大于所述目标模数;4、根据模乘的基的幂次数以及操作数位宽确定硬件加速器的流水线级数;5、根据所述流水线级数将所述蒙哥马利模乘的模乘运算操作进行拆分,得到每级流水线所需完成的目标分级模乘运算,其中每个目标分级模乘运算均包括顺序依次执行的三次乘法运算;6、根据每个目标分级模乘运算确定对应的移位分级模乘运算,并基于每个移位分级模乘运算获得对应的目标分级模乘运算的运算结果,其中每个移位分级模乘运算均至少包括与一次乘法运算对应的一次乘法操作以及与剩余两次乘法运算对应的一次索引映射表查表操作,所述乘法操作用于获得基于第一模乘操作数和当前的第二模乘操作数进行计算的移位分级模乘运算中间值,所述索引映射表查表操作用于获得基于所述目标模数和移位模数的移位分级模乘运算的表项值;7、根据移位分级模乘运算中间值和所述移位分级模乘运算的表项值获得该移位分级模乘运算的运算结果;8、在所述硬件加速器中执行所有移位分级模乘运算,并在执行最后一个移位分级模乘运算后获得蒙哥马利模乘的输出结果;9、其中,根据每个目标分级模乘运算确定对应的移位分级模乘运算,包括:10、构建索引映射表,所述索引映射表的表项数量为所述模乘的基,所述索引映射表的每个表项的值均为预先基于所述目标模数和移位模数的运算关系计算获得的预设值;11、根据每个目标分级模乘运算的第一次乘法运算确定移位分级模乘运算的一次乘法操作;12、针对每个目标分级模乘运算的第二次乘法运算和第三次乘法运算,通过查询索引映射表确定移位分级模乘运算的一次索引映射表查表操作;13、根据所述一次乘法操作和一次索引映射表查表操作获得所述移位分级模乘运算。14、进一步地,所述构建索引映射表,包括:15、确定索引映射表的表项数量为所述模乘的基;16、将所述分级模乘运算中间值的低预设比特数量作为索引,构建每个表项的值,其中,每个表项的值的表达式为:17、q×p_table(i) = ((i×p’) % radix)×p,i∈[0, radix),18、其中,i表示表项数,p表示目标模数,p’×p≡-1%r,r表示移位模数,radix表示模乘的基,且radix=2m,所述预设比特数量为m。19、进一步地,根据所述模乘的基的幂次数以及操作数位宽确定硬件加速器的流水线级数,包括:20、将所述操作数位宽除以所述模乘的基的幂次数获得硬件加速器的流水线级数,计算公式为:21、流水线级数=λ/m,22、其中,λ表示操作数位宽,m表示模乘的基的幂次数。23、进一步地,每个目标分级模乘运算的三次乘法运算的表达式依次分别为:24、z’=z+x×(y%radix),25、q=((z’% radix)×p’)% radix,26、z=(z’+q×p)/ radix,27、其中,x表示第一模乘操作数,y表示当前的第二模乘操作数,z’表示移位分级模乘运算中间值,z表示每级移位模乘运算的运算结果,q表示第二次乘法运算的运算结果,radix表示模乘的基,且radix=2m,p表示目标模数,p’×p≡-1%r,r表示移位模数。28、进一步地,所述蒙哥马利模乘的模乘运算的表达式为:29、z=x×y×p’ mod r,30、其中,z表示蒙哥马利模乘的输出结果,x表示第一模乘操作数,y表示第二模乘操作数,r表示移位模数,p’×p≡-1%r,p表示目标模数。31、进一步地,每级移位分级模乘运算均能够输出传递参数和两个中间运算结果,且该传递参数和两个中间运算结果能够作为下一级移位分级模乘运算的输入参数,其中,所述传递参数为第一模乘操作数,一个中间运算结果为当前的第二模乘操作数,另一个中间运算结果为该级移位分级模乘运算的运算结果。32、作为本发明的另一个方面,提供一种蒙哥马利模乘的硬件加速器,用于实现前文所述的蒙哥马利模乘的硬件加速器实现方法,其中,包括:33、多个基于流水线级数的移位分级模乘运算单元,每个移分级模乘运算单元均能够根据一次乘法操作以及一次索引映射查表操作完成该级流水线所需完成的目标分级模乘运算;34、其中,每个目标分级模乘运算均为蒙哥马利模乘的模乘运算操作根据所述流水线级数拆分获得,所述流水线级数为根据模乘的基的幂次数以及操作数位宽确定;每个目标分级模乘运算均包括顺序依次执行的三次乘法运算;35、每个移位分级模乘运算单元的输入参数均包括第一模乘操作数、当前的第二模乘操作数以及上一级移位分级模乘运算单元的运算结果;36、其中,所述一次乘法操作用于获得基于第一模乘操作数和当前的第二模乘操作数进行计算的移位分级模乘运算中间值,所述一次索引映射表查表操作用于获得基于所述目标模数和移位模数的移位分级模乘运算的表项值,基于所述移位分级模乘运算中间值以及移位分级模乘运算的表项值能够获得该级移位分级模乘运算单元的运算结果;37、所有移位分级模乘运算单元的运算结果能够获得蒙哥马利模乘的输出结果。38、进一步地,每个移位分级模乘运算单元均包括乘法操作单元、索引映射表查表操作单元和加法操作单元,39、所述乘法操作单元用于获得基于第一模乘操作数和当前的第二模乘操作数进行乘法计算的移位分级模乘运算中间值,40、所述索引映射表查表操作单元用于基于查表操作获得基于所述目标模数和移位模数的移位分级模乘运算的表项值;41、所述加法操作单元用于基于所述移位分级模乘运算中间值与所述移位分级模乘运算的表项值的加法操作获得该移位分级模乘运算单元的运算结果。42、作为本发明的另一个方面,提供一种安全芯片,其中,包括芯片载体及设置在所述芯片载体上的前文所述的蒙哥马利模乘的硬件加速器。43、进一步地,所述芯片载体包括fpga或者asic。44、本发明提供的蒙哥马利模乘的硬件加速器实现方法,通过将蒙哥马利模乘的模乘运算操作拆分成多个流水线级数,而每级流水线的模乘运算均能够通过移位分级模乘运算实现,由于每个移位分级模乘运算采用一次索引映射表查表操作代替之前的二次乘法操作,而索引映射表查表操作的延时要远远低于两次乘法运算的延时,从而降低了每级流水线的延时,进而可以实现支持更高频的时钟,达到更大的吞吐量,且并未增加实现成本。当前第1页12当前第1页12