CN115756387A - 基于折叠变换的r2-mdc架构的ntt硬件实现方法 - Google Patents
基于折叠变换的r2-mdc架构的ntt硬件实现方法 Download PDFInfo
- Publication number
- CN115756387A CN115756387A CN202211143762.8A CN202211143762A CN115756387A CN 115756387 A CN115756387 A CN 115756387A CN 202211143762 A CN202211143762 A CN 202211143762A CN 115756387 A CN115756387 A CN 115756387A
- Authority
- CN
- China
- Prior art keywords
- unit
- bfu
- delay
- ntt
- data
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了基于折叠变换的R2‑MDC架构的NTT硬件实现方法,通过改进现有的R2‑MDC架构,简化了数据读写控制逻辑,减少了50%的资源消耗,高效实现环上多项式乘法运算。具体是通过折叠变换的方法,每个BFU单元中均包含模加、模减、模乘单元等模块,利用一级BFU单元实现两层蝶形运算,将电路的输入按照奇、偶时钟区分,交替进行,每级BFU单元在奇周期输入奇数层蝶形运算数据,偶周期输入偶数层蝶形运算数据。并且通过模式寄存器与多路复用器配合,动态实现NTT、INTT和CWM三种运算,通用性显著提高。并且采用巴雷特模约简算法优化模乘电路,提高了运算速度。
Description
技术领域
本发明属于后量子格密码技术领域,涉及数论变换计算方法,具体涉及基于折叠变换的R2-MDC架构的NTT硬件实现方法。
背景技术
传统公钥密码体制的安全性依赖于一些数学困难问题,如RSA算法基于大整数分解问题,椭圆曲线算法基于离散对数问题等。随着量子计算机的发展,这些数学困难问题在量子计算环境下将会被轻松破解。因此,能够抵御量子攻击的后量子加密算法成为学界研究的热点。
在后量子密码标准的评选中,格基密码(Lattice-based Cryptography,LBC)以其高效率轻量级公钥而闻名,成为高速网络应用和物联网应用的首选。而多项式乘法运算是格基密码的核心算子,占整个加解密时间的80%以上,对格密码的实现与应用有着重要影响。在现有方案中,通常利用基于蝶形运算的数论变换(Number Theoretic Transform,NTT)快速实现多项式乘法。由于NTT的计算逻辑包含多次循环嵌套运算,计算结构非常复杂,特点是只在整数域进行运算。因此,硬件实现NTT来计算环上多项式乘法相比软件实现方式具有更多优势,例如运算速度更快、更安全、更稳定可靠和成品体积更小。
现有NTT硬件实现的方法大致可分为原址结构和流水结构。原址结构的计算相比流水线结构对数据在存储器中的存储顺序有一定的要求,存在逆序问题,且计算效率也不如流水结构高。流水线结构一般可分为三类:单路延迟反馈(SDF)架构、单路延迟换向(SDC)架构和多路延迟换向(MDC)架构。其中,SDC和SDF乘法器利用率无法达到100%,而MDC则可以通过少量修改达到100%的乘法器利用率。传统MDC架构将多个结构基本相同的蝶形单元(Butterfly Unit,BFU)级联,每个单元负责一层蝶形运算,蝶形运算层数由具体的多项式决定,多项式越复杂需要的蝶形单元也越多。随着硬件电路的集成化程度要求越来越高,并且格基密码的公钥长度较小,因此在追求高算力的同时,提出一种可以优化读写控制逻辑和减少电路面积资源消耗的方法至关重要。
发明内容
针对现有技术的不足,本发明提出了基于折叠变换的R2-MDC架构的NTT硬件实现方法,通过改进现有的R2-MDC架构,简化了数据读写控制逻辑,减少了50%的资源消耗,高效实现环上多项式乘法运算,解决现有NTT变换硬件实现方案控制逻辑复杂和资源消耗过大的问题。
基于折叠变换的R2-MDC架构的NTT硬件实现方法,包括以下步骤:
步骤1、硬件架构设计
设计一种折叠变换的R2-MDC架构,包括BFU单元和多路复用器,每个BFU单元的输入端与一个多路复用器相连,用于选择数据通路以实现不同的运算。多个BFU单元级联工作,最后一个BFU单元的输出端与一个多路复用器相连,实现选择输出。每个BFU单元包括Butterfly模块和延迟换向单元,Butterfly模块中的模乘电路经过巴雷特模约简算法优化,延迟换向单元包括两个延迟周期递减的延迟单元和一个换向单元,一个BFU单元实现两层蝶形运算。
步骤2、模式配置
对硬件电路中的模式寄存器进行配置,调整BFU单元的数据通路,以实现NTT、INTT、CWM三种工作模式。
步骤3、预计算旋转因子
采用负包裹卷积对参数进行处理:
在NTT运算中,对旋转因子进行如下预计算:
而INTT运算的旋转因子可以将NTT运算的旋转因子先取负数再取模,最后倒序存储,即:
步骤5、数论变换运算
将电路的输入按照奇、偶时钟区分,交替进行,每级BFU单元在奇周期输入奇数层蝶形运算数据,偶周期输入偶数层蝶形运算数据。INTT运算模式下BFU单元的工作顺序与NTT运算相反,CWM模式下多级BFU单元的工作方式为多路并行计算,具体方法为:
s5.1、NTT运算
第一层蝶形运算的数据输入第一级BFU单元,在Butterfly模块中经过5个周期的计算后输出至延迟换向单元,当延迟单元的缓存满了之后开启换向功能,延迟单元中的缓存数据与换向单元的输出数据共同作为第二层蝶形运算的输入数据,在第一级BFU单元中进行5个周期的计算后完成第二层蝶形运算,输出结果至延迟换向单元,当延迟单元的缓存满了输出至下一级BFU单元,依次类推,直至最后一级BFU单元完成两层蝶形运算后,输出最终结果。每级BFU单元中延迟单元的延迟周期递减。
s5.2、INTT运算
INTT运算与NTT运算相反,第一层蝶形运算的数据输入最后一级BFU单元,在计算过程中,每级BFU单元中延迟单元的延迟周期递增。
s5.3、CWM计算
使用多级BFU单元进行并行乘法计算,同时向多级BFU单元输入数据,经过3个周期的乘法与取模操作后,在多级BFU单元的输出端得到并行输出结果。
步骤6、系统输出
通过步骤2对电路进行模式配置,按照步骤5的方式进行运算,得到数论变换或环上多项式乘法的运算结果。
本发明具有以下有益效果:
通过对模式进行配置,可以根据不同的需求,灵活地改变工作模式,动态调整数据通路,使其满足NTT、INTT和CWM三种运算,通用性较强和可复用性强。
采用折叠变换,提出奇偶周期交替运算的方法,使得硬件资源消耗减少约50%。搭配R2-MDC的流水架构,提高了运算速度,进一步简化了中间计算结果的读写控制逻辑。
精心设计了蝶形运算单元,在做NTT和INTT运算时为流水结构,做CWM运算时变为四路并行运算结构,相较于传统R2-MDC结构,在极大地提高计算性能同时,使得资源利用率达到100%。
附图说明
图1是基于折叠变换的数论变换整体架构示意图;
图2是BFU单元电路结构图;
图3是barrett模约简硬件结构示意图;
图4是实施例中NTT运算的波形仿真结果。
具体实施方式
以下结合附图对本发明作进一步的解释说明;
本实施例以crystal-dilithium数字签名算法为例,设置模数q=8380417,多项式系数的个数n=256,多项式系数的位宽为23bit,在如表1所示的平台中进行仿真实验,介绍基于折叠变换的R2-MDC架构的NTT硬件实现方法。
参数 | 实施条件 |
系统硬件平台 | AMD Ryzen 5 5600G |
运行环境 | Windows 10 |
编程语言 | Verilog |
仿真工具 | Vivado2019.1 |
表1
在crystal-dilithium数字签名算法中,其多项式系数的个数为256,即28,因此需要8级蝶形运算,传统R2-MDC架构通过8级BFU单元级联,每个BFU单元中均包含模加、模减、模乘单元等模块,搭配8个延迟换向单元。而本申请采用折叠变换的方法,将8级BFU单元减少为4级,换向器也减少了50%。与此同时,通过模式配置动态实现NTT、INTT和CWM三种运算,通用性显著提高。并且采用巴雷特(barrett)模约简算法优化模乘电路,提高了运算速度。由于本架构基于折叠变换,因此输入端还可配合缓存电路进行乒乓操作。
基于折叠变换的R2-MDC架构的NTT硬件实现方法,包括以下步骤:
步骤1、硬件架构设计
设计一种如图1所示的折叠变换的R2-MDC架构,包括BFU单元和多路复用器,每个BFU单元的输入端与一个多路复用器相连,用于选择数据通路以实现不同的运算。4个BFU单元级联工作,最后一个BFU单元的输出端与一个多路复用器相连,实现选择输出。每个BFU单元包括Butterfly模块和延迟换向单元,延迟换向单元包括两个延迟周期递减的延迟单元和一个换向单元,一个BFU单元实现两层蝶形运算。
步骤2、模式配置
对硬件电路中位宽为2bit的模式寄存器进行配置,“00”为NTT模式,“01”为INTT模式,“11”为CWM模式,将模式寄存器的信号作为蝶形单元中多路复用器的选通信号,控制数据通路,以实现NTT、INTT、CWM三种工作模式。
步骤3、预计算旋转因子
采用负包裹卷积对参数进行处理:
在NTT运算中,对旋转因子进行如下预计算:
而INTT运算的旋转因子可以将NTT运算的旋转因子先取负数再取模,最后倒序存储,即:
步骤5、数论变换运算
将电路的输入按照奇、偶时钟区分,交替进行,每级BFU单元在奇周期输入奇数层蝶形运算数据,偶周期输入偶数层蝶形运算数据,第一个数据从输入到输出需要294个cycles,后面的数据就可以流水输出,每两拍输出两个数据,因此总共需要294+256k个时钟就能完成一次NTT或INTT,k表示多项式个数。
s5.1、NTT运算
NTT蝶形运算公式为:
其中A、B为变换后的数据,a、b为变换前的参数。进行NTT运算时,数据在图1所示的电路中的通路为1-3-4-5-6-7-8-9-13,第一层蝶形运算的数据输入第一级BFU单元,在Butterfly模块中经过5个周期的计算后输出至延迟换向单元,当延迟单元的缓存满了之后开启换向功能,延迟单元中的缓存数据与换向单元的输出数据共同作为第二层蝶形运算的输入数据。由于NTT和INTT的数据通路相反,需要在Switch单元前设计两个多路复用器,用来筛选输入数据。同样选通信号也是用模式信号来控制。在第一级BFU单元中进行5个周期的计算后完成第二层蝶形运算,输出结果至延迟换向单元,当延迟单元的缓存满了输出至下一级BFU单元,依次类推,直至最后一级BFU单元完成两层蝶形运算后,输出最终结果。每级BFU单元中延迟单元结构相同,只有延迟寄存器数量逐层递减,第一层为64,第二层为32,……,第7层为1,第8层为0,但是共用一个换向模块。
在一级BFU单元中的计算过程如图2所示,数据自mux0和mux1输入后,首先进行模乘运算。此时mode[0]为0,参数b和旋转因子ω分别通过mux4和mux5输入到模乘器mul单元。由于数据从输入到模乘器之间有组合逻辑时延,因此在模乘器前加上一级寄存器,同时模乘器采用了3级流水线结构,并利用barrett模约简电路进行优化,通过移位和减法代替了除法运算,提高了运算性能,如图3所示,因此参数a需要经过4个时钟的延迟,以确保时序正确。利用模乘器先对参数b和旋转因子进行乘法运算得到X,接着对X进行移位操作,将移位后的参数相加减得到中间变量s。接着再对s进行移位和加减,并且由X的低25bit与之相减得到Z1。以Z1[24:23]作为选通信号:“00”则偏置bias为0;“01”则bias为q;“10”则偏置bias为2q;“11”则bias为3q。延迟一拍后,用Z1的值减去偏置,如果偏置大于模数q,则再减去q再输出,以达到取模的目的;反之,则直接输出结果。此时再将模乘结果与延迟4拍后的参数a同时输出到模加、模减器。模加和模减电路分别将输入数据经加法器和减法器后再与模数q进行比较,若大于q,则减去q后输出;反之,则直接输出。再经一级寄存器后输出即是BFU单元输出结果。
所述barrett模约简算法如下:
Input:X,q
Output:Y=X mod q
1:s=X[45:22]<<23+X[45:22]<<13+X[45:22]<<3-X[45:22]
2:Z1=X[24:0]-(s[25:24]<<23-s[35:24]<<13+s[47:24])
3:switchZ1[24:23]
4:case0∶bias=0
5:case1∶bias=q
6:case2∶bias=2q
7:case3∶bias=3q
8:endswitch
9:Y=Z-bias
10:ifY>qthenY=Y-q
11:endif
12:return Y
s5.2、INTT运算
INTT的蝶形运算公式为:
进行INTT运算时,数据在图1所示的电路中的流通路为2-9-12-7-7-11-5-5-10-3-3-14,即与NTT运算相反,由最后一级BFU单元向前计算,在INTT模式下,还要进行除法运算。对于偶数来说,即最低位为0,除以2等同于右移一位;而对于奇数来说,则需要进一步处理。由于本实施例中的参数都是在有限域中计算的,因此处理方法是将被除数右移一位后再加上模数q的一半。
s5.3、CWM计算
使用多级BFU单元进行并行乘法计算,同时向多级BFU单元输入数据,通过BFU单元中的barrett模块完成乘法与取模操作,每拍输出4个数据,经过3个周期后,在多级BFU单元的输出端得到并行输出结果。
步骤6、系统输出
通过步骤2对电路进行模式配置,按照步骤5的方式进行运算,得到数论变换或环上多项式乘法的运算结果。
图4为NTT变换的仿真波形图,本实施例中电路主频可以达到260MHz,现有技术中针对后量子密码算法的NTT硬件电路主频一般在100-200MHz。经综合后资源消耗与现有技术比较如表2所示,本发明在LUT、FF和DSP的资源消耗均低于现有技术。整体来看,电路计算性能较高,且电路面积小,资源消耗较低。
表2
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明保护范围内。
Claims (4)
1.基于折叠变换的R2-MDC架构的NTT硬件实现方法,其特征在于:包括以下步骤:
步骤1、硬件架构设计
设计一种折叠变换的R2-MDC架构,包括BFU单元和多路复用器,每个BFU单元的输入端与一个多路复用器相连,用于选择数据通路以实现不同的运算,最后一个BFU单元的输出端与一个多路复用器相连,实现选择输出;每个BFU单元包括Butterfly模块和延迟换向单元,Butterfly模块中的模乘电路经过巴雷特模约简算法优化,延迟换向单元包括两个延迟周期递减的延迟单元和一个换向单元,一个BFU单元实现两层蝶形运算;
步骤2、模式配置
对硬件电路中的模式寄存器进行配置,调整BFU单元的数据通路,以实现NTT、INTT、CWM三种工作模式;
步骤3、预计算旋转因子
采用负包裹卷积对参数进行处理:
在NTT运算中,对旋转因子进行如下预计算:
在INTT运算中,对旋转因子的预处理为:
步骤5、数论变换运算
将电路的输入按照奇、偶时钟区分,交替进行,每级BFU单元在奇周期输入奇数层蝶形运算数据,偶周期输入偶数层蝶形运算数据,具体方法为:
s5.1、NTT运算
第一层蝶形运算的数据输入第一级BFU单元,在Butterfly模块中经过5个周期的计算后输出至延迟换向单元,当延迟单元的缓存满了之后开启换向功能,延迟单元中的缓存数据与换向单元的输出数据共同作为第二层蝶形运算的输入数据,在第一级BFU单元中进行5个周期的计算后完成第二层蝶形运算,输出结果至延迟换向单元,当延迟单元的缓存满了输出至下一级BFU单元,依次类推,直至最后一级BFU单元完成两层蝶形运算后,输出最终结果;每级BFU单元中延迟单元的延迟周期递减;
s5.2、INTT运算
INTT运算与NTT运算相反,第一层蝶形运算的数据输入最后一级BFU单元,每级BFU单元中延迟单元的延迟周期递增;
s5.3、CWM计算
使用多级BFU单元进行并行乘法计算,同时向多级BFU单元输入数据,经过3个周期的乘法与取模操作后,在多级BFU单元的输出端得到并行输出结果;
步骤6、系统输出
通过步骤2对电路进行模式配置,按照步骤5的方式进行运算,得到数论变换或环上多项式乘法的运算结果。
2.如权利要求1所述基于折叠变换的R2-MDC架构的NTT硬件实现方法,其特征在于:所述巴雷特模约简算法为:
Input:X,q
Output:Y=X mod q
1:s=X[45:22]<<23+X[45:22]<<13+X[45:22]<<3-X[45:22]
2:Z1=X[24:0]-(s[25:24]<<23-s[35:24]<<13+s[47:24])
3:switch Z1[24:23]
4:case0:bias=0
5:case1:bias=q
6:case2:bias=2q
7:case3:bias=3q
8:endswitch
9:Y=Z-bias
10:if Y>q then Y=Y-q
11:endif
12:return Y。
3.如权利要求1所述基于折叠变换的R2-MDC架构的NTT硬件实现方法,其特征在于:该方法用于解决crystal-dilithium数字签名算法中的多项式乘法运算问题。
4.如权利要求4所述基于折叠变换的R2-MDC架构的NTT硬件实现方法,其特征在于:所述折叠变换的R2-MDC架构包括4级BFU单元,第一~第四级BFU单元中延迟单元的延迟周期依次为64、32、16、8、4、2、1、0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211143762.8A CN115756387A (zh) | 2022-09-20 | 2022-09-20 | 基于折叠变换的r2-mdc架构的ntt硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211143762.8A CN115756387A (zh) | 2022-09-20 | 2022-09-20 | 基于折叠变换的r2-mdc架构的ntt硬件实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756387A true CN115756387A (zh) | 2023-03-07 |
Family
ID=85350344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211143762.8A Pending CN115756387A (zh) | 2022-09-20 | 2022-09-20 | 基于折叠变换的r2-mdc架构的ntt硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756387A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116820397A (zh) * | 2023-05-25 | 2023-09-29 | 南京航空航天大学 | 基于CRYSTALS-Kyber的快速数论变换电路 |
CN116865979A (zh) * | 2023-09-05 | 2023-10-10 | 南京航空航天大学 | 一种基于后量子数字签名的mdc-ntt架构 |
CN117714054A (zh) * | 2024-02-01 | 2024-03-15 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
CN117971163A (zh) * | 2024-03-29 | 2024-05-03 | 苏州元脑智能科技有限公司 | 基于蝶形单元的计算架构、计算方法以及装置 |
-
2022
- 2022-09-20 CN CN202211143762.8A patent/CN115756387A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116820397A (zh) * | 2023-05-25 | 2023-09-29 | 南京航空航天大学 | 基于CRYSTALS-Kyber的快速数论变换电路 |
CN116820397B (zh) * | 2023-05-25 | 2024-02-02 | 南京航空航天大学 | 基于CRYSTALS-Kyber的快速数论变换电路 |
CN116865979A (zh) * | 2023-09-05 | 2023-10-10 | 南京航空航天大学 | 一种基于后量子数字签名的mdc-ntt架构 |
CN116865979B (zh) * | 2023-09-05 | 2023-11-10 | 南京航空航天大学 | 一种基于后量子数字签名的mdc-ntt装置 |
CN117714054A (zh) * | 2024-02-01 | 2024-03-15 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
CN117714054B (zh) * | 2024-02-01 | 2024-04-23 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
CN117971163A (zh) * | 2024-03-29 | 2024-05-03 | 苏州元脑智能科技有限公司 | 基于蝶形单元的计算架构、计算方法以及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115756387A (zh) | 基于折叠变换的r2-mdc架构的ntt硬件实现方法 | |
Mondal et al. | Design and implementation of a sort-free K-best sphere decoder | |
CN109711533B (zh) | 基于fpga的卷积神经网络加速系统 | |
CN103793199B (zh) | 一种支持双域的快速rsa密码协处理器 | |
Broscius et al. | Exploiting parallelism in hardware implementation of the DES | |
CN101847137B (zh) | 一种实现基2fft计算的fft处理器 | |
Shahid et al. | Use of embedded FPGA resources in implementations of 14 round 2 SHA-3 candidates | |
CN106383807B (zh) | 一种fft处理器 | |
WO2022199459A1 (zh) | 一种可重构处理器及配置方法 | |
CN114968173A (zh) | 基于ntt和intt结构的多项式乘法运算方法和多项式乘法器 | |
CN114895870B (zh) | 基于fpga实现的高效可重构sm2点乘方法及系统 | |
CN114553425A (zh) | 基于高性能模逆的椭圆数字签名曲线硬件实现方法及系统 | |
JP4854826B2 (ja) | ディジタルフィルタを実現するプログラム可能な回路 | |
CN112799634B (zh) | 一种基于基22mdc ntt结构的高性能环多项式乘法器 | |
CN115048076A (zh) | 一种基于sm2特定域的快速模乘芯片实现装置及方法 | |
CN108446758A (zh) | 一种面向人工智能计算的神经网络数据串行流水处理方法 | |
CN110990767B (zh) | 一种应用于格密码体制的可重构数论变换单元和方法 | |
CN111079934B (zh) | 应用于环域上误差学习加密算法的数论变换单元和方法 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
CN113342310A (zh) | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 | |
CN116561819A (zh) | 一种基于Toom-Cook环上多项式乘法的加解密方法及环上多项式乘法器 | |
Vinay et al. | Power efficient FIR filter architecture using distributed arithmetic algorithm | |
Cui et al. | High-throughput polynomial multiplier for accelerating saber on FPGA | |
Choo et al. | Two's complement computation sharing multiplier and its applications to high performance DFE | |
CN114553424A (zh) | Zuc-256流密码轻量级硬件系统 |
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 |