一种数论变换装置制造方法及图纸

技术编号:34477991 阅读:55 留言:0更新日期:2022-08-10 08:53
本发明专利技术公开了一种数论变换装置,包括输入控制单元、旋转因子产生单元、主运算单元和输出控制单元;其中,输入控制单元与主运算单元连接,用于实现数据的传输;旋转因子产生单元与主运算单元连接,用于和主运算单元通过握手信号进行同步,生成主运算单元计算中每个stage所需要的旋转因子;主运算单元设置蝶形计算单元,用于通过蝶形计算来实现每个stage的数据流模乘计算;输出控制单元与主运算单元连接,用于将待输出数据结果的数据流位宽、时钟域转换按照后级模块需求进行转换输出。本发明专利技术实现提高了运算并行度,降低了了数论变换装置的平均计算时间,提高了系统处理能力。提高了系统处理能力。提高了系统处理能力。

【技术实现步骤摘要】
一种数论变换装置


[0001]本专利技术涉及信息安全算法的电路实现领域,尤其涉及的是一种数论变换装置。

技术介绍

[0002]量子计算机的发展使得后量子加密算法,即能在传统计算机上实现的能抵御量子计算攻击的加密算法受到大量的关注。基于格的加密算法具有很强的安全性,能够适用于密钥交换、数字签名以及全同态加密等。数论变换(number theoretic transforms,NTT)与傅里叶变换相比,在计算多项式乘法时不涉及精度以及浮点数,能够显著减少电路面积且易于实现。然而,现有的数论变换只能实现单一模、单一数据个数下的运算,使得其应用场景受到限制。
[0003]数论变换由于快速傅里叶变换的提出,大大减少了计算运算次数,节省计算量。在有循环卷积特性的条件下,快速数论变换是具有比快速傅里叶更快的快速变换算法。
[0004]现有技术中,基于可重构技术的同态加密系统,如图1所述,包括:输入单元,输入加密指令;主控单元,接收来自所述输入单元的加密指令,提供配置信息,并控制整个同态加密算法的流程和数据的迁移;执行单元,根据所述主控单元提供的配置信息对运算阵列进行重构来实现同态加密中各个阶段的算法;运算阵列,接收来自所述执行单元的控制指令,对具体数据进行处理及运算;存储单元,存储同态加密算法的初始明文、中间结果密文、以及同态运算后解密得到的明文;输出单元,根据所述主控单元的输出指令输出加密数据。
[0005]数论变换是传统的数字傅里叶变换(DFT)在有限域上的一般化。目前常规做法的数论变换装置存在运行效率低、并行度不高等问题。
[0006]目前常见的NTT结构通常包含主控制单元,旋转因子生成单元,数据缓存单元,蝶形计算单元。其计算时间可以用下列公式表示,设数据位宽为DATA_WIDTH,输入数据流总位宽为
[0007]STREAM_WIDTH,T_stage_time=N/(PE_NUM*2), T=T_input_mem+T_rader+(T_stage_time*stage_num);
[0008]NTT将多项式乘法的运算复杂度从N^2级别降低为NlogN级别,在不要求输入数据特殊性的前提下,计算的复杂度理论上无法继续降低。而由于NTT算法的性质要求,各处理阶段之间存在数据搬运、存储的时间间隔,影响计算效率。
[0009]因此,现有技术存在缺陷,需要改进。

技术实现思路

[0010]本专利技术所要解决的技术问题是:提供一种提高了运算并行度,降低了了数论变换装置的平均计算时间,提高了系统处理能力的数论变换装置。
[0011]本专利技术的技术方案如下:一种数论变换装置,包括输入控制单元、旋转因子产生单元、主运算单元和输出控制单元;其中,输入控制单元与主运算单元连接,用于实现数据的传输;旋转因子产生单元与主运算单元连接,用于和主运算单元通过握手信号进行同步,生
成主运算单元计算中每个stage所需要的旋转因子;主运算单元设置蝶形计算单元,用于通过蝶形计算来实现每个stage的数据流模乘计算;输出控制单元与主运算单元连接,用于将待输出数据结果的数据流位宽、时钟域转换按照后级模块需求进行转换输出。
[0012]应用于上述技术方案,所述的数论变换装置中,输入控制单元使用异步fifo对输入的数据流进行缓存,实现数据的跨时钟域传输。
[0013]应用于上述各个技术方案,所述的数论变换装置中,旋转因子产生单元通过预先传入的旋转因子种子数据,和主运算单元通过握手信号进行同步,生成主运算单元计算中每个stage所需要的旋转因子。
[0014]应用于上述各个技术方案,所述的数论变换装置中,旋转因子产生单元中,旋转因子的生成方法为:步骤A1:根据N长度蝶形计算使用的旋转因子为k=0,1,2....,N/2

1;步骤A2:使用DIT

NTT算法,最后一个stage使用的旋转因子为k=0,1,2....,N/2

1;往前一个stage使用的旋转因子为k=0,2,4,...,N/2

2;因此,得到前一个stage的旋转因子是后一个stage旋转因子的偶数编号序列;并且,前一个stage的旋转因子通过中间插值,可得到后一个stage的旋转因子;步骤A3:根据步骤A2的规则,通过预先传入的旋转因子种子数据,生成主运算单元计算中每个stage 所需要的旋转因子。
[0015]应用于上述各个技术方案,所述的数论变换装置中,旋转因子产生单元中,还设置有用于预先存储下一个stage的旋转因子的先入先出队列fifo。
[0016]应用于上述各个技术方案,所述的数论变换装置中,主运算单元设置有存储单元,输出控制单元设置有输出缓存单元,并且,其处理流程为:存储单元初始化,各stage分别进行蝶形计算,存储单元存储蝶形计算结果,并将其搬运到输出缓存单元,输出缓存单元输出结果。
[0017]应用于上述各个技术方案,所述的数论变换装置中,所述存储单元设置为pingpong存储结构的存储单元,pingpong存储结构设置有存储器管理单元和两块存储器,数据进入存储器管理单元后,根据当前pingpong存储结构的状态写入对应的存储器中,并进行存储单元初始化,蝶形计算单元从存储器中读取数据进行计算;当一块存储器的存储单元初始化完成后,下一个数据包的数据可以在另一块存储器中进行存储单元初始化。
[0018]应用于上述各个技术方案,所述的数论变换装置中,每一stage分别做 n/2个小蝶形运算,运算后输出第0至第n/2

1个数据为一组,第n/2至第n

1个数据为另一组,2组数据分别存储在不同的存储器中,输出控制单元根据序号的比特奇偶特性确定存储在哪个存储器中。
[0019]应用于上述各个技术方案,所述的数论变换装置中,在进行蝶形计算时,采用前k个stage并行处理,其中,前k个stage的蝶形计算所需要的旋转因子包括W
0n
,W
n/Kn
,W
2n/Kn

……
,W
(K

1)n/Kn
,其中K=2
k
,并且,第k个stage所使用的蝶形计算单元可以按照2
k
为一组。
[0020]应用于上述各个技术方案,所述的数论变换装置中,采用前k个stage 并行处理的流程包括:数论变换数据输入,输入逆序处理,前k个stage并行计算,其他stage的串行计算,输出缓存单元,计算结果输出。
[0021]本专利技术的有益效果为:
[0022]本专利技术的旋转因子产生单元可以动态生成旋转因子,可以实现模数的动态配置和任意选择,提高了数论变换装置的适用性。并且,利用NTT计算中旋转因子的特性,进行前k个stage的并行展开优化,提高了运算并行度,降低运算耗时。使用输入输出缓存单元加上pingpong存储阵列的结构,降低输入输出带本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数论变换装置,其特征在于,包括输入控制单元、旋转因子产生单元、主运算单元和输出控制单元;其中,输入控制单元与主运算单元连接,用于实现数据的传输;旋转因子产生单元与主运算单元连接,用于和主运算单元通过握手信号进行同步,生成主运算单元计算中每个stage所需要的旋转因子;主运算单元设置蝶形计算单元,用于通过蝶形计算来实现每个stage的数据流模乘计算;输出控制单元与主运算单元连接,用于将待输出数据结果的数据流位宽、时钟域转换按照后级模块需求进行转换输出。2.根据权利要求1所述的数论变换装置,其特征在于:输入控制单元使用异步fifo对输入的数据流进行缓存,实现数据的跨时钟域传输。3.根据权利要求1所述的数论变换装置,其特征在于:旋转因子产生单元通过预先传入的旋转因子种子数据,和主运算单元通过握手信号进行同步,生成主运算单元计算中每个stage所需要的旋转因子。4.根据权利要求3所述的数论变换装置,其特征在于:旋转因子产生单元中,旋转因子的生成方法为:步骤A1:根据N长度蝶形计算使用的旋转因子为k=0,1,2....,N/2

1;步骤A2:使用DIT

NTT算法,最后一个stage使用的旋转因子为k=0,1,2....,N/2

1;往前一个stage使用的旋转因子为因此,得到前一个stage的旋转因子是后一个stage旋转因子的偶数编号序列;并且,前一个stage的旋转因子通过中间插值,可得到后一个stage的旋转因子;步骤A3:根据步骤A2的规则,通过预先传入的旋转因子种子数据,生成主运算单元计算中每个stage所需要的旋转因子。5.根据权利要求4所述的数论变换装置,其特征在于:旋转因子产生单元中,还设置有用于预先存储下一个stage的旋转因子的先入先出队列fifo。6.根据权利要求1所述的数论变换装置,其特征在于:主运算单元设...

【专利技术属性】
技术研发人员:刘克翔谢翔李升林孙立林
申请(专利权)人:上海阵方科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1