CN116893797A - 一种基于fifo存储的迭代型ntt系统 - Google Patents

一种基于fifo存储的迭代型ntt系统 Download PDF

Info

Publication number
CN116893797A
CN116893797A CN202310710946.6A CN202310710946A CN116893797A CN 116893797 A CN116893797 A CN 116893797A CN 202310710946 A CN202310710946 A CN 202310710946A CN 116893797 A CN116893797 A CN 116893797A
Authority
CN
China
Prior art keywords
fifo
butterfly
unit
fifo storage
ntt
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.)
Pending
Application number
CN202310710946.6A
Other languages
English (en)
Inventor
陈涧升
崔益军
牛万泽
刘伟强
王成华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN202310710946.6A priority Critical patent/CN116893797A/zh
Publication of CN116893797A publication Critical patent/CN116893797A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于FIFO存储的迭代型NTT系统,包括存储地址控制单元、FIF0输入控制单元、第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元、FIFO输出控制单元、蝶形运算单元和分布式ROM;蝶形运算单元输出的运算结果按照当前级对应的地址存入其中两个FIFO存储单元,在存入完毕后上下两路输入数据按照数论变换变化规则从FIFO存储单元输出到蝶形运算单元进行运算;第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元交替存取,根据当前级数以及相应的蝶形运算次数,两两成组完成NTT地址变换。本发明可以提升FPGA的片上资源利用效率,提升系统最大运行频率以及系统整体性能表现。

Description

一种基于FIFO存储的迭代型NTT系统
技术领域
本发明涉及涉及基于格的后量子密码的Dilithium方案领域,具体涉及一种基于FIFO存储的迭代型NTT系统。
背景技术
随着信息技术以及互联网的飞速发展,如何确保信息传递过程中的安全性以及保密性一直是信息技术领域的关键问题之一。在当前的密码体系中,一些经典的公钥密码算法例如RSA和椭圆曲线加密(Elliptic curve cryptography,ECC)随着量子计算机的出现而变得岌岌可危,因此需要新的密码学方案来应对量子计算机攻击,后量子密码方案应运而生。
基于格的密码拥有者很高的安全性,也因此被给予厚望。NIST所标准化的4个后量子密码方案中的三个均为基于格的密码。在数字签名的三个密码中,同唯一的密钥封装机制(Key Encapsulation Mechanism,KEM)密码Kyber具有同样的数学架构的Dilithium受到了更多的关注。Dilithium使用了NTT友好参数,因此在格密码的核心运算单元,多项式计算中可以使用NTT加速。目前的NTT加速均采用专用存储器,需要使用地址对数据进行存取操作,这限制了NTT加速器的轻量化优化。
发明内容
本发明的目的是为了解决现有迭代型NTT架构运行周期长,速度受限的问题,提出了一种基于FIFO存储的迭代型NTT系统,对迭代型NTT架构做了优化,大大减少了蝶形运算单元的等待周期;并且通过优化NTT运算中的存储方式,提升了FPGA的片上资源利用效率。
为实现上述技术目的,本发明采取的技术方案为:
一种基于FIFO存储的迭代型NTT系统,所述迭代型NTT系统包括存储地址控制单元、FIFO输入控制单元、第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元、FIFO输出控制单元、蝶形运算单元和分布式ROM;
所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元并行连接在FIFO输入控制单元和FIFO输出控制单元之间,存储有预处理后的数据;所述分布式ROM与蝶形运算单元连接,用于存储旋转因子;所述蝶形运算单元的输入端与FIFO输出控制单元的输出端连接,输出端与存储地址控制单元的输入端连接;所述存储地址控制单元的输出端与FIFO输入控制单元的输入端连接;
初始数据经过预处理后先经过存储地址控制单元进行地址交错处理,再通过判断指示信号进入其中两个FIFO存储单元,在存入完毕后立即从FIFO存储单元输出到蝶形运算单元进行运算;
蝶形运算单元输出的运算结果根据存储地址控制单元输出的判断指示信号输出并按照当前级对应的地址存入其中两个FIFO存储单元,在存入完毕后上下两路输入数据按照数论变换变化规则从FIFO存储单元输出到蝶形运算单元进行运算,重复前述运算过程,直至完成整个迭代运算;所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元交替存取,根据当前级数以及相应的蝶形运算次数,两两成组完成NTT地址变换。
进一步地,所述蝶形运算单元采用GS结构或者CT结构。
进一步地,当采用GS结构时,所述蝶形运算单元包括模加模块、模减模块和巴雷特模乘模块;所述模加模块、模减模块分别对待处理的两个数据进行加法和减法运算,加法运算结果直接输出,减法运算结果与相应的旋转因子通过巴雷特模乘单元进行乘法运算后输出。
进一步地,当采用CT结构时,所述蝶形运算单元包括模加模块、模减模块和巴雷特模乘模块;
所述巴雷特模乘模块将其中一个待处理的数据与相应的旋转因子进行乘法运算,所述模加模块、模减模块分别对巴雷特模乘模块输出的乘法运算结果和另一个待处理的数据和进行加法和减法运算,再将运算结果输出。
进一步地,所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元的写入顺序和读出顺序相反;
具体地,每次写入满足上路{第一FIFO存储单元,第三FIFO存储单元}和下路{第二FIFO存储单元,第一FIFO存储单元},读出满足上路{第一FIFO存储单元,第二FIFO存储单元}和下路{第三FIFO存储单元,第一FIFO存储单元}。
进一步地,对于n点输入的NTT变换,总共进行log2n级运算,每级运算有n/2次蝶形变换。
进一步地,所述蝶形运算单元的输入点为128个,所述迭代型NTT系统的级数为7级。
进一步地,所述第一FIFO存储单元、第二FIFO存储单元采用64×12FIFO存储器,所述第三FIFO存储单元采用32×12FIFO存储器。
进一步地,对于128点输入,数论变换变化规则为:
第一级采用一个蝶形组,每组蝶形运算数目为64,第二级采用两个蝶形组,每组蝶形运算数目为32,每一级的蝶形组数目呈2的幂次增加,对应每组的蝶形运算数目呈2的幂次递减,且每一级的总蝶形运算数目保持不变为64个;
进行数论变换算法时,数据经过预处理后进入第一轮变换,第一轮蝶形运算单元的两个输入点间距为n/2,下半部分四次蝶形变换分别与旋转因子的0到n/2-1次幂相乘;第二轮变换时,原序列被拆成两组,每部分作n/4次蝶形变换,蝶形运算单元的两个输入点间距为n/4,上下部分两次蝶形变换分别与旋转因子的平方ω2的0到n/4-1幂相乘;最后一轮变换时,分成四组序列,每部分做1次蝶形变换,蝶形运算单元的两个输入点间距为n/8
与现有技术相比,本发明的有益效果如下:
第一,本发明的基于FIFO存储的迭代型NTT系统,可以减少迭代型NTT的BF等待周期,大大提升了处理数据的效率。
第二,本发明的基于FIFO存储的迭代型NTT系统,采用FIFO存储单元代替BRAM单元,同时提出一种新型的数据存取方式,可以提升FPGA的片上资源利用效率,提升系统最大运行频率以及系统整体性能表现。
附图说明
图1为现有的基于BRAM的迭代型NTT结构图;
图2为两种蝶形单元的结构图;
图3为本发明的基于FIFO存储的迭代型NTT系统结构图;
图4为FIFO单元的操作数地址变化示意图;
图5为8点NTT蝶形变换图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细描述。
参见图4,本发明公开了一种基于FIFO存储的迭代型NTT系统,所述迭代型NTT系统包括存储地址控制单元、FIFO输入控制单元、第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元、FIFO输出控制单元、蝶形运算单元和分布式ROM;
所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元并行连接在FIFO输入控制单元和FIFO输出控制单元之间,存储有预处理后的数据;所述分布式ROM与蝶形运算单元连接,用于存储旋转因子;所述蝶形运算单元的输入端与FIFO输出控制单元的输出端连接,输出端与存储地址控制单元的输入端连接;所述存储地址控制单元的输出端与FIFO输入控制单元的输入端连接;
初始数据经过预处理后先经过存储地址控制单元进行地址交错处理,再通过判断指示信号进入其中两个FIFO存储单元,在存入完毕后立即从FIFO存储单元输出到蝶形运算单元进行运算;
蝶形运算单元输出的运算结果根据存储地址控制单元输出的判断指示信号输出并按照当前级对应的地址存入其中两个FIFO存储单元,在存入完毕后上下两路输入数据按照数论变换变化规则从FIFO存储单元输出到蝶形运算单元进行运算,重复前述运算过程,直至完成整个迭代运算;所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元交替存取,根据当前级数以及相应的蝶形运算次数,两两成组完成NTT地址变换。
图1为现有的基于BRAM的迭代型NTT结构图。NTT本质上就是对模意义下的多项式进行DFT的一种算法,NTT采用了一个取模数与多项式系数域元素个数互质的取模数,并利用数论中的同余定理,将复数域上的DFT转化为模意义下的多项式运算。
对于多项式来说,最常用的表示方式为系数表示法,例如,a(x)=1+x+2x2+3x3+4x4,对于d阶多项式P(x)=p0+p1x+p2x2+...+pdxd,其用系数表示法可以记作[p0,p1,p2,...,pd]。对于一个d阶多项式P(x)=p0+p1x+p2x2+...+pdxd。用d+1个点去表征这个多项式(曲线),记作{(x0,P(x0)),(x1,P(x1)),...,(xd,P(xd))},这种表示方法称作点值表示法。
在FFT中,关键在于选取特殊的取值点进行点值表示,在NTT中也需要通过选取特殊的点值(称作旋转因子ω)进行计算。对于用点值形式表示的n-1阶多项式,选取的n个特殊点即为旋转因子ω的n次幂。多项式系数用a0,a1,...,an-1表示,通过NTT/FFT变换后转换为则NTT变换如下述公式表示,其中ω为n次整数原根:
假设c(x)=a(x)×b(x),基于NTT算法的多项式乘法的步骤如下:
1.计算旋转因子的n次幂:[ω0,ω1,ω2,…,ωn-1]。
2.利用NTT变换,计算a(x)和b(x)的点值形式和/>(求值运算)。
3.计算得到点值形式的/>
4.利用INTT变换,将转换为c(x)(插值运算)。
算法的具体流程如下:
对于基于M-LWE的格密码实现方案,新参数的模数由7681减小到3329,多项式的最高次为256,即输入为256个点。然而该模数并不满足NTT乘法的条件q=1mod 2n即3329仅存在256次原根而非512次原根。根据NIST的计算规则,虽然3329无法分解不可约多项式x256+1为256一次项的乘积,但是却可以分解为128个平方项的乘积,如式2所示:
其中ζ=17,所有的256次原根为{ζ,ζ3,ζ5,ζ255},那么环R3329上多项式的NTT变换用128个1次多项式可以重新定义为式(3):
观察可以发现,其中奇数项和偶数项的常数项系数计算式为:
上述式子中,如果将ζ2=289看作新的旋转因子,那么该表达式符合128点的NTT变换,即可以将256点的NTT变换拆分为两个128点的NTT变换进行处理。但是后续的逐点乘法也要发生相应的改变,若多项式f,g∈R3329表示128个1次多项式向量乘积,/>表示这种特殊的PWM,得到的乘积项需要约减为1次多项式,如下式:
化简后的奇数偶数项写为:
因为NTT在计算时候会丢弃小位宽的数据,因此本申请中NTT算法中的乘法都采用的是FPGA中的DSP资源实现,为了减少该资源的消耗,利用偶数项结果通过简单的数学变换可以将PWM中的五次乘法减少到四次:
因此q=3329时NTT算法的多项式乘法参数如表1:
表1 q=3329NTT算法的多项式乘法参数
根据先前NTT的分析,通过奇偶分治,可以得到:
但是实际上,也可以进行前n/2项和后n/2项的拆分得到下面两个式子:
ak+n/2=Xkk+n/2Yk=XkkYk (13)
而根据这两种不同的拆分方式,本申请设计了两种不同的蝶形运算单元结构,即CT(Cooley-Tukey)和GS(Gentleman-Sande)如图2所示,图2中的(a)是GS结构的蝶形运算单元,图2中的(b)是CT结构的蝶形运算单元。其中的加法器减法器均为模加模减。具体地,当采用GS结构时,所述蝶形运算单元包括模加模块、模减模块和巴雷特模乘模块;所述模加模块、模减模块分别对待处理的两个数据进行加法和减法运算,加法运算结果直接输出,减法运算结果与相应的旋转因子通过巴雷特模乘单元进行乘法运算后输出。当采用CT结构时,所述蝶形运算单元包括模加模块、模减模块和巴雷特模乘模块;所述巴雷特模乘模块将其中一个待处理的数据与相应的旋转因子进行乘法运算,所述模加模块、模减模块分别对巴雷特模乘模块输出的乘法运算结果和另一个待处理的数据和进行加法和减法运算,再将运算结果输出。
两种蝶形运算单元最主要的区别在于乘法操作和模加模减的先后顺序。其中模加模减对应的算法如算法2和算法3所示:
硬件电路中设置总和位宽为13bit和差值为13bit,通过判断1bit的进位和借位就可以得到最终在[0,q-1]的模加或模减结果。模加和模减在相同的时钟周期内完成,在蝶形运算单元的上半部分只涉及到模加运算,为了配平时序,乘法结果需要同时输出并增加5级触发器作为延时单元。
对于上一小节提到的Gs和cT两种蝶形运算单元,两者除了蝶形运算单元中乘法运算的顺序不一样之外,输入输出数据的顺序也不同。CT蝶形运算单元的输入需要进行比特位翻转操作之后才能输入BF单元,同理Gs蝶形运算单元的输出需要进行位反转之后才能输入到下一级的运算中。基于Gs和CT不同的蝶形运算单元,设计不同的NTT架构。以8点为例,图5是用Gs实现的8点NTT变换蝶形图。由图5可知,在Gs NTT架构中,开始需要对输入数据进行预处理,同时最后一级的BF单元不需要执行乘法操作,相应的,在CT NTT架构中,则一般不需要预处理,但是对于旋转因子的变化则有特殊要求。
以GS蝶形变换图为例,对于n点输入的NTT变换,总共需要进行log2n级运算,每级运算有n/2次蝶形变换,对于128点输入来说,第一级有一个蝶形组,每组蝶形运算数目为64,而第二级有两个蝶形组,每组蝶形运算数目为32,以此类推。可见,每一级的蝶形组数目呈2的幂次增加,而对应每组的蝶形运算数目则同样规律递减,但每一级的总蝶形运算数目保持不变为64个。进行NTT算法时,经过预处理后进入第一轮变换,第一轮蝶形运算单元的两个输入点间距为n/2,下半部分四次蝶形变换分别与旋转因子的0到n/2-1次幂相乘。第二轮中原序列被拆成两组,每部分需要n/4次蝶形变换,蝶形运算单元的两个输入点间距为n/4,上下部分两次蝶形变换分别与旋转因子的平方ω2的0到n/4-1幂相乘。最后一轮变换时,分成了四组序列,每部分只需要1次蝶形变换,蝶形运算单元的两个输入点间距为n/8,即相邻的点。NTT算法中的地址变换如算法4所示。
相较于流水型NTT结构清晰,层级分明,主要通过流水处理输入数据,并利用延时和多路转接来完成地址控制,本申请的迭代型NTT的架构较为简单,由于仅利用一个蝶形运算单元结构,需要较为复杂的地址控制单元。
本申请的迭代型NTT系统的数据存取由三个FIFO存储单元完成。其中地址控制部分,本申请与流水型中起始点组的变化相同,每一级按照NTT规律改变起始点组以及每组蝶形运算的点数,通过启动信号控制数据的读出和写入过程。本申请采用两个64×12和一个32×12的FIFO单元用于存取进出BF运算单元的数据。三个FIFO存储单元交替存取,根据当前级数以及需要的蝶形运算次数,两两成组完成NTT地址变换。例如,对于128点输入来说,首先需要将串行的数据拆分为前64项和后64项,输入到BF单元的上下路完成第一级的处理。对于第二级,写入读出数据个数(即每组蝶形运算的数目)为32,而第二级需要进行两组蝶形单元。因此,需要将上路0到31送入第一FIFO存储单元(FIFO1),32到63送入第三FIFO存储单元(FIFO3),下路64到95送入第二FIFO存储单元(FIFO2),96到127送入第一FIFO存储单元(FIFO1),在读取FIFO数据时,先读出FIFO1到上路,FIFO3到下路,读出32个数据之后,再读出FIFO2到上路,FIFO1到下路,以此类推,每次写入满足上路{第一FIFO存储单元,第三FIFO存储单元}下路{第二FIFO存储单元,第一FIFO存储单元}(先后表示写入顺序)读出满足上路{第一FIFO存储单元,第二FIFO存储单元}下路{第三FIFO存储单元,第一FIFO存储单元},同时,这样就可以保证输入BF单元的数据满足NTT的地址变换,具体的地址变换图如4所示,其中图4中的(a)是第一级写入FIFO单元的地址,图4中的(b)是第二级写入FIFO单元的地址。
在基于FIFO的迭代型NTT的实现中,数据经过预处理后先经过地址交错处理,然后通过判断指示信号进入对应的FIFO单元,在完成BF操作后同样在判断指示信号后输出并按照当前级对应的地址存入,各级以此类推,从而完成整个迭代运算。
在完成综合以及实现之后,得到的q=3329基于FIFO的迭代型NTT实现的性能以及资源消耗如表2所示:
表2 q=3329基于FIFO的迭代型NTT实现的性能以及资源消耗
本申请用FIFO完全取代了BRAM单元,同样使用分布式ROM存储常数项因子以及输入数据,相较于基于BRAM的迭代型NTT,在最大频率上提升了12%,在资源占用和总运算周期方面基本持平,从存储方式上大大优化了整体架构,提高了存取效率。
本发明同样可以实施在其他使用NTT计算的格密码中,多项式运算的点数增加并不会影响本发明提出的方法。此外,一些基于传统NTT改进的NTT计算,如Kyber中奇偶独立的NTT运算,同样可以采用本文的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器运行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上运行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上运行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (9)

1.一种基于FIFO存储的迭代型NTT系统,其特征在于,所述迭代型NTT系统包括存储地址控制单元、FIFO输入控制单元、第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元、FIFO输出控制单元、蝶形运算单元和分布式ROM;
所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元并行连接在FIFO输入控制单元和FIFO输出控制单元之间,存储有预处理后的数据;所述分布式ROM与蝶形运算单元连接,用于存储旋转因子;所述蝶形运算单元的输入端与FIFO输出控制单元的输出端连接,输出端与存储地址控制单元的输入端连接;所述存储地址控制单元的输出端与FIFO输入控制单元的输入端连接;
初始数据经过预处理后先经过存储地址控制单元进行地址交错处理,再通过判断指示信号进入其中两个FIFO存储单元,在存入完毕后立即从FIFO存储单元输出到蝶形运算单元进行运算;
蝶形运算单元输出的运算结果根据存储地址控制单元输出的判断指示信号输出并按照当前级对应的地址存入其中两个FIFO存储单元,在存入完毕后上下两路输入数据按照数论变换变化规则从FIFO存储单元输出到蝶形运算单元进行运算,重复前述运算过程,直至完成整个迭代运算;所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元交替存取,根据当前级数以及相应的蝶形运算次数,两两成组完成NTT地址变换。
2.根据权利要求1所述的基于FIFO存储的迭代型NTT系统,其特征在于,所述蝶形运算单元采用GS结构或者CT结构。
3.根据权利要求1所述的基于FIFO存储的迭代型NTT系统,其特征在于,当采用GS结构时,所述蝶形运算单元包括模加模块、模减模块和巴雷特模乘模块;所述模加模块、模减模块分别对待处理的两个数据进行加法和减法运算,加法运算结果直接输出,减法运算结果与相应的旋转因子通过巴雷特模乘单元进行乘法运算后输出。
4.根据权利要求1所述的基于FIFO存储的迭代型NTT系统,其特征在于,当采用CT结构时,所述蝶形运算单元包括模加模块、模减模块和巴雷特模乘模块;
所述巴雷特模乘模块将其中一个待处理的数据与相应的旋转因子进行乘法运算,所述模加模块、模减模块分别对巴雷特模乘模块输出的乘法运算结果和另一个待处理的数据和进行加法和减法运算,再将运算结果输出。
5.根据权利要求1所述的基于FIFO存储的迭代型NTT系统,其特征在于,所述第一FIFO存储单元、第二FIFO存储单元、第三FIFO存储单元的写入顺序和读出顺序相反;
具体地,每次写入满足上路{第一FIFO存储单元,第三FIFO存储单元}和下路{第二FIFO存储单元,第一FIFO存储单元},读出满足上路{第一FIFO存储单元,第二FIFO存储单元}和下路{第三FIFO存储单元,第一FIFO存储单元}。
6.根据权利要求1所述的基于FIFO存储的迭代型NTT系统,其特征在于,对于n点输入的NTT变换,总共进行log2n级运算,每级运算有n/2次蝶形变换。
7.根据权利要求6所述的基于FIFO存储的迭代型NTT系统,其特征在于,所述蝶形运算单元的输入点为128个,所述迭代型NTT系统的级数为7级。
8.根据权利要求7所述的基于FIFO存储的迭代型NTT系统,其特征在于,所述第一FIFO存储单元、第二FIFO存储单元采用64×12FIFO存储器,所述第三FIFO存储单元采用32×12FIFO存储器。
9.根据权利要求6所述的基于FIFO存储的迭代型NTT系统,其特征在于,对于128点输入,数论变换变化规则为:
第一级采用一个蝶形组,每组蝶形运算数目为64,第二级采用两个蝶形组,每组蝶形运算数目为32,每一级的蝶形组数目呈2的幂次增加,对应每组的蝶形运算数目呈2的幂次递减,且每一级的总蝶形运算数目保持不变为64个;
进行数论变换算法时,数据经过预处理后进入第一轮变换,第一轮蝶形运算单元的两个输入点间距为n/2,下半部分四次蝶形变换分别与旋转因子的0到n/2-1次幂相乘;第二轮变换时,原序列被拆成两组,每部分作n/4次蝶形变换,蝶形运算单元的两个输入点间距为n/4,上下部分两次蝶形变换分别与旋转因子的平方ω2的0到n/4-1幂相乘;最后一轮变换时,分成四组序列,每部分做1次蝶形变换,蝶形运算单元的两个输入点间距为n/8。
CN202310710946.6A 2023-06-15 2023-06-15 一种基于fifo存储的迭代型ntt系统 Pending CN116893797A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310710946.6A CN116893797A (zh) 2023-06-15 2023-06-15 一种基于fifo存储的迭代型ntt系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310710946.6A CN116893797A (zh) 2023-06-15 2023-06-15 一种基于fifo存储的迭代型ntt系统

Publications (1)

Publication Number Publication Date
CN116893797A true CN116893797A (zh) 2023-10-17

Family

ID=88309552

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310710946.6A Pending CN116893797A (zh) 2023-06-15 2023-06-15 一种基于fifo存储的迭代型ntt系统

Country Status (1)

Country Link
CN (1) CN116893797A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117971163A (zh) * 2024-03-29 2024-05-03 苏州元脑智能科技有限公司 基于蝶形单元的计算架构、计算方法以及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117971163A (zh) * 2024-03-29 2024-05-03 苏州元脑智能科技有限公司 基于蝶形单元的计算架构、计算方法以及装置

Similar Documents

Publication Publication Date Title
Zhang et al. Highly efficient architecture of NewHope-NIST on FPGA using low-complexity NTT/INTT
Wang et al. VLSI design of a large-number multiplier for fully homomorphic encryption
CN115622684B (zh) 基于全同态加密的隐私计算异构加速方法及装置
CN109977347B (zh) 一种支持多模式配置的可重构fft处理器
CN110519058A (zh) 一种对于基于格的公钥加密算法的加速方法
CN116893797A (zh) 一种基于fifo存储的迭代型ntt系统
CN114297571A (zh) 一种适用于格密码算法的多项式乘法硬件实现系统
CN116679905A (zh) 一种基于bram的迭代型ntt交错存储系统
Alkım et al. Compact and simple RLWE based key encapsulation mechanism
EP0744054A1 (en) High speed function generating apparatus and method
CN111435383B (zh) 数据处理方法、数据处理芯片及电子设备
KR102075848B1 (ko) 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
CN116527235A (zh) 基于密钥轮换的数据加密方法、装置和电子设备
KR20230141045A (ko) 암호 프로세서 장치 및 이를 채용하는 데이터 처리 장치
CN116361605A (zh) 递归型fft处理器的低功耗优化方法和装置
CN117692126A (zh) 一种基于低复杂度模乘算法的Paillier同态加密方法及系统
WO2021252294A1 (en) Protection of transformations by intermediate randomization in cryptographic operations
CN113342310A (zh) 一种应用于格密码的串行参数可配快速数论变换硬件加速器
CN111221501B (zh) 一种用于大数乘法的数论变换电路
Selianinau Computationally efficient approach to implementation of the Chinese Remainder Theorem algorithm in minimally redundant Residue Number System
Hu et al. Efficient homomorphic convolution designs on FPGA for secure inference
CN116545622A (zh) 一种基于fpga平台的ntt硬件实现系统
WO2022252876A1 (en) A hardware architecture for memory organization for fully homomorphic encryption
Li et al. An area-efficient large integer NTT-multiplier using discrete twiddle factor approach
CN115714644A (zh) 一种随机数生成方法及装置

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