买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】面向后量子加密Kyber方案的NTT多项式乘法器的硬件电路_合肥工业大学_202311158332.8 

申请/专利权人:合肥工业大学

申请日:2023-09-08

公开(公告)日:2023-12-08

公开(公告)号:CN117193715A

主分类号:G06F7/72

分类号:G06F7/72;G06F5/16;G06N10/20

优先权:

专利状态码:在审-实质审查的生效

法律状态:2023.12.26#实质审查的生效;2023.12.08#公开

摘要:本发明公开了一种面向后量子加密Kyber方案的NTT多项式乘法器的硬件电路,包括:状态机控制模块、索引生成模块、旋转因子地址生成模块、旋转因子ROM、存储映射模块、BANK选择模块、RAM组、蝶形输入选择模块、蝶形模块、蝶形输出选择模块;状态机控制模块实现状态转移和生成信号;索引生成模块生成一对索引;旋转因子地址生成模块生成相应的地址;旋转因子ROM寻址出数据;存储映射模块将索引映射成地址和BANK号;BANK选择模块对映射地址进行调整;RAM组寻址出数据;蝶形输入选择模块将数据放入输入端;蝶形模块进行数据的蝶形运算;蝶形输出选择模块将输出数据存回RAM组。本发明能提升多项式乘法器的性能,加快计算速度,尽量减少资源消耗,缩短时间周期。

主权项:1.一种面向后量子加密Kyber方案的NTT多项式乘法器的硬件电路,其特征在于,包括:状态机控制模块、索引生成模块、旋转因子地址生成模块、存储映射模块、BANK选择模块、RAM组、旋转因子ROM、蝶形输入选择模块、蝶形输出选择模块、蝶形模块,其中,所述蝶形模块包括:第一蝶形单元、第二蝶形单元;每个蝶形单元包括:模加模块、模减模块、模乘模块;所述状态机控制模块根据外部的信号对当前状态进行转移,并生成转移后的状态、sel选择信号、阶段p、组数k和轮数m;所述状态包括:NTT状态、PWM0状态、PWM1状态和INTT状态;所述索引生成模块根据转移后的状态以及sel选择信号、阶段p、组数k和轮数m生成一对索引i、j;所述存储映射模块将一对索引i、j分别映射成一对地址a0、a1和一对BANK号b0、b1;所述BANK选择模块根据一对BANK号b0、b1和一对地址a0、a1进行处理后,得到选择后的地址a0’、a1’;若转移后的状态为NTT状态,则所述RAM组根据一对BANK号b0、b1和地址a0’、a1’寻址出对应的2d位的数据S2k+1S2k和2d位的数据S2l+1S2l;其中,d表示位宽;所述蝶形输入选择模块将数据S2k+1S2k和数据S2l+1S2l拆分成4个d位的数据S2k+1,数据S2k,数据S2l+1,数据S2l,再将数据S2k+1和数据S2l+1放入第一蝶形单元,将数据S2k和数据S2l放入第二蝶形单元;所述旋转因子地址生成模块根据阶段p和组数k生成相应的旋转因子地址;所述旋转因子ROM根据旋转因子地址读出d位的旋转因子wi;对于第一蝶形单元,第一模乘模块将d位的旋转因子wi与d位的数据S2l+1相乘,得到2d位的乘法结果X1=wi×S2l+1,通过查找表和巴雷特约减法对X1进行处理后获得模数为q以内的数据Y0;第一模加模块将d位的数据S2k+1和d位的数据Y0进行相加后,得到加法结果S2k+1+Y0,判断S2k+1+Y0是否超过q,若超过,则S2k+1+Y0减去q,否则,S2k+1+Y0保持不变,从而得到输出结果S’2k+1;第一模减模块将S2k+1与Y0进行相减后,得到减法结果S2k+1-Y0,并判断S2k+1-Y0是否小于0,若小于,则S2k+1-Y0加上q,否则,S2k+1-Y0保持不变,从而获得模数为q以内的输出结果S’2l+1;对于第二蝶形单元,第二模乘模块将d位的旋转因子wi与d位的数据S2l相乘,得到2d位的乘法结果X0=wi×S2l,通过查找表和巴雷特约减法对X0进行处理后,获得模数为q以内的数据Y1;第二模加模块将d位的数据S2k和d位的乘法结果Y1进行相加后,得到加法结果S2k+Y1,判断S2k+Y1是否超过q,若超过,则S2k+Y1减去q,否则,S2k+Y1保持不变,从而得到输出结果S’2k;第二模减模块将S2k与Y1进行相减后,得到减法结果S2k-Y1,判断S2k-Y1是否小于0,若小于,则S2k-Y1加上q,否则,S2k-Y1保持不变,从而获得模数为q以内的输出结果S’2l;所述蝶形输出选择模块将4个d位的输出结果S’2k+1,输出结果S’2k,输出结果S’2l+1,输出结果S’2l合并成2d位的数据S’2k+1S’2k和2d位的数据S’2l+1S’2l,并根据一对地址a0、a1和一对BANK号b0、b1,将两个2d位的数据S’2k+1’S’2k和数据S’2l+1S’2l存回至RAM组;若转移后的状态为PWM0状态,则所述RAM组根据一对BANK号b0、b1和一对地址a0’、a1’寻址出对应的2d位的数据S2k+1S2k和2d位的数据A2k+1A2k;所述蝶形输入选择模块将2d位的数据S2k+1S2k和2d位的数据A2k+1A2k拆分成4个d位的数据S2k+1,数据S2k,数据A2k+1,数据A2k,再将数据S2k+1,数据S2k,数据A2k+1放入第一蝶形单元,将数据A2k+1,数据A2k,数据S2k放入第二蝶形单元;对于第一蝶形单元,第一模加模块将d位的数据S2k+1和d位的数据S2k进行相加后,得到加法结果S2k+1+S2k,判断S2k+1+S2k是否超过q,若超过,则S2k+1+S2k减去q,否则,S2k+1+S2k保持不变,从而得到模数为q以内的输出结果S’2k;第一模乘模块将d位的数据A2k+1与d位的数据S2k+1相乘,得到2d位的乘法结果X2=A2k+1×S2k+1,通过查找表和巴雷特约减法对X2进行处理,获得模数为q以内的输出结果M2k;对于第二蝶形单元,第二模加模块将d位的数据A2k+1和d位的数据A2k进行相加后,得到加法结果A2k+1+A2k,判断A2k+1+A2k是否超过q,若超过,则A2k+1+A2k减去q,否则,A2k+1+A2k是保持不变,从而得到模数为q以内的输出结果S’2k+1;第二模乘模块将d位的数据A2k与d位的数据S2k相乘,得到2d位的乘法结果X3=A2k×S2k,通过查找表和巴雷特约减法对X3进行处理,获得模数为q以内的输出结果M2k+1;所述蝶形输出选择模块将4个d位的输出结果S’2k+1,输出结果S’2k,输出结果M2k+1,输出结果M2k合并成2d位的数据S’2k+1S’2k和2d位的数据M2k+1M2k,并根据一对地址a0、a1和一对BANK号b0、b1将两个2d位的数据S’2k+1S’2k和数据M2k+1M2k存回至RAM组;若转移后的状态为PWM1状态,则所述RAM组根据一对BANK号的b0、b1和地址a0’、a1’寻址出对应的2d位的数据S2k+1S2k和2d位的数据M2k+1M2k;所述旋转因子地址生成模块根据阶段p和组数k生成相应的旋转因子地址;所述旋转因子ROM根据旋转因子地址生成的地址读出d位的旋转因子wi;所述蝶形输入选择模块将2d位的数据S2k+1S2k和2d位的数据M2k+1M2k拆分成4个d位的数据S2k+1,数据S2k,数据M2k+1,数据M2k,再将M2k,S2k,S2k+1放入第一蝶形单元,将M2k,M2k+1,wi放入第二蝶形单元;对于第一蝶形单元,第一模乘模块将d位的数据S2k+1与d位的数据S2k进行相乘后,得到2d位的相乘结果X4=S2k+1×S2k,通过查找表和巴雷特约减法X4进行处理,获得模数为q以内的输出结果p1,第一模加模块将M2k与p0进行相加后,得到加法结果M2k+p0,判断M2k+p0是否超过q,若超过,则M2k+p0减去q,否则,M2k+p0保持不变,从而得到模数为q以内的输出结果h2i+1;对于第二蝶形单元,第二模加模块将d位的数据M2k+1与d位的数据M2k进行相加,得到加法结果M2k+1+M2k,判断M2k+1+M2k是否超过q,若超过,则M2k+1+M2减去q,否则,M2k+1+M2保持不变,从而模数为q以内的输出结果r;第二模乘模块将d位的旋转因子wi与d位的M2k+1进行相乘后,得到2d位的乘法结果X5=wi×M2k+1,通过查找表和巴雷特约减法X5进行处理,获得模数为q以内的输出结果p1;第二模减模块将r与p0进行相减后,得减法结果r-p0,判断r-p0是否小于0,若小于,则r-p0是加上q,否则,r-p0是保持不变,从而得到模数为q以内的输出结果h2i;所述蝶形模块将p1与p0进行交互,得到第一蝶形单元输出结果h’2i+1=S2i×S2i+1-M2i+M2i+1,第二蝶形单元输出结果h’2i=M2i+M2i+1×wi;所述蝶形输出选择模块将蝶形模块的d位的h’2i+1和d位的h’2i合并成一个2d位的数据h’2i+1h’2i,并根据一对地址a0、a1和一对BANK号b0、b1,将2d位的数据h’2i+1h’2i存回至RAM组;若转移后的状态为INTT状态,则所述RAM组根据一对BANK号b0、b1和地址a0’、a1’寻址出对应的2d位的数据S2k+1S2k和2d位的数据S2l+1S2l;所述蝶形输入选择模块将数据S2k+1S2k和数据S2l+1S2l拆分成4个d位的数据S2k+1,数据S2k,数据S2l+1,数据S2l,再将数据S2k+1,数据S2l+1放入第一蝶形单元,将数据S2k,数据S2l放入第二蝶形单元;所述旋转因子地址生成模块根据阶段p和组数k生成相应的旋转因子地址;所述旋转因子ROM根据旋转因子地址读出d位的旋转因子wi;对于第一蝶形单元,第一模加模块将d位的数据S2k+1和d位的数据S2l+1进行相加后,得到加法结果S2k+1+S2l+1,若S2k+1+S2l+1为偶数,则得到结果S2k+1+S2l+12;若S2k+1+S2l+1为奇数,则判断S2k+1+S2l+1是否超过q,若超过q,则得到结果S2k+1+S2l+12-f,否则,得到结果S2k+1+S2l+12+e,从而获得模数为q以内的输出结果S’2k+1;第一模减模块将S2k+1与S2l+1进行相减后,得到减法结果S2k+1-S2l+1,判断S2k+1-S2l+1是否小于0,若小于,则S2k+1-S2l+1加上q,否则,S2k+1-S2l+1保持不变,从而获得模数为q以内的输出结果c2;若c2为奇数,则将c2除以2再加上e,即c22+e;若为偶数,则将c2除2,即c22,从而获得模数为q以内的输出结果c3;第一模乘模块将d位的旋转因子wi与d位的c3相乘后,得到2d位的乘法结果X6=wi×c3,记为,通过查找表和巴雷特约减法对X6进行处理后,获得模数为q以内的输出结果S’2l+1;对于第二蝶形单元,第二模加模块将d位的S2k和d位的S2l进行相加后,得到加法结果S2k+S2l,若S2k+S2l为偶数,则得到结果S2k+S2l2;若S2k+S2l为奇数,则判断S2k+S2l是否超过q,若超过q,则得到结果S2k+S2l2-f,否则,得到结果S2k+S2l2+e,从而获得模数为q以内的输出结果S’2k+1;第二模减模块将d位的S2k与d位的S2l进行相减后,得到减法结果S2k-S2l,判断S2k-S2l是否小于0,若小于,则S2k-S2l加上q,否则,S2k-S2l保持不变,从而获得模数为q以内的输出结果c0;若为奇数,则将c0除以2再加上e,即c02+e;若为偶数,则将c0除以2,即c02,从而获得模数为q以内的输出结果c1;第二模乘模块将d位的旋转因子wi与d位的c1相乘,得到2d位的乘法结果X7=wi×c1,通过查找表和巴雷特约减法对X7进行处理后,获得模数为q以内的输出结果S’2l;所述蝶形输出选择模块将4个d位的输出结果S’2k+1,S’2k,S’2l+1,S’2l合并成2d位的数据S’2k+1S’2k和2d位的数据S’2l+1S’2l,并根据一对地址a0、a1和一对BANK号b0、b1,将两个2d位的数据S’2k+1S’2k和S’2l+1S’2l存回至RAM组。

全文数据:

权利要求:

百度查询: 合肥工业大学 面向后量子加密Kyber方案的NTT多项式乘法器的硬件电路

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。