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

【发明授权】一种针对ZUC算法的高性能硬件优化设计实现电路_湖北大学;中国电子科技集团公司第三十研究所_202410394943.0 

申请/专利权人:湖北大学;中国电子科技集团公司第三十研究所

申请日:2024-04-02

公开(公告)日:2024-06-21

公开(公告)号:CN118074907B

主分类号:H04L9/08

分类号:H04L9/08;H04L9/06

优先权:

专利状态码:有效-授权

法律状态:2024.06.21#授权;2024.06.11#实质审查的生效;2024.05.24#公开

摘要:本发明公开了一种针对ZUC算法的高性能硬件优化设计实现电路,属于数字电路领域,具体包括ZUC算法模块和控制模块。ZUC算法模块又包含线性反馈移位寄存器模块和有限状态自动机模块。LFSR模块,用于对输入的初始向量和初始种子密钥进行处理,并经由模加电路对存储单元进行迭代更新;FSM模块,用于对来自LFSR模块的数据进行一系列线性以及非线性的处理,最终得到向外输出的密钥流字;控制模块,根据时钟信号的变化输出一系列用于LFSR模块和FSM模块的控制信号。相较于现有技术,本发明展现出更高的吞吐性能,尤其适用于诸如5G高并发等对时延要求苛刻的环境,对未来ZUC算法的高性能实现将产生积极的影响。

主权项:1.一种针对ZUC算法的高性能硬件优化设计实现电路,其特征在于,包括ZUC算法模块和控制模块;其中ZUC算法模块包含LFSR子模块和FSM子模块;所述控制模块的输入信号包括开始信号兼复位信号rst、时钟信号clk,输出信号包括状态控制信号Load、Init、PreCom、Work,一系列Init状态下的寄存器使能信号ci_A、ci_B、…、ci_F、ci_R以及移位信号ci_rshift、ci_lshift和更新信号ci_in,一系列PreCom状态下的寄存器使能信号cp_A、cp_B、…、cp_E以及更新信号cp_in,一系列Work状态下的寄存器使能信号cw_A、cw_B、…、cw_J以及移位信号cw_rshift和更新信号cw_rshift_in;控制模块用于接收输入信号并将信号处理后向ZUC算法模块发出控制信号,最终向外输出密钥流产生信号Done;所述ZUC算法模块用于接收来自外部输入的初始向量iv以及密钥K_init,并在时钟信号clk和一系列来自于控制模块的信号的控制下完成密钥流的生成,最终连续地向外输入32比特的密钥流result;所述LFSR子模块的寄存器集包括:用于循环迭代更新的多个31比特存储单元,分别为S16,S15,…,S1,S0;用于LFSR更新操作流水线实现的多个32比特中间存储单元,分别为A,B,…,I,J以及用作填充常数的多个7比特的本地参数存储器di;LFSR子模块用于在时钟信号clk、状态控制信号Load、Init、PreCom、Work控制下选择状态的变换并进行相关的更新操作,且将更新操作得到的结果Snew在更新信号ci_in、cp_in、cw_rshift_in的控制下作为输入赋值给31比特的存储单元;同时,LFSR子模块在寄存器使能信号的控制下对相应的中间存储单元进行赋值操作;所述FSM子模块的寄存器集包含:用于循环迭代更新的多个32比特存储单元,分别为R1,R2;用于存储32比特输出字的存储单元W;用于存储32比特密钥流字的存储单元Z;FSM子模块在时钟信号clk和寄存器使能信号的控制下对R1、R2、W以及Z进行赋值操作;FSM子模块用于在状态控制信号Init的控制下向LFSR子模块输出32比特的数据w;所述ZUC算法模块的LFSR子模块在来自控制模块的布尔类型的控制信号与时钟信号clk的控制下,对17个31比特的存储单元S16,S15,…,S1,S0进行循坏迭代更新操作,并向FSM子模块输出4个32比特的字Xi;所述LFSR子模块在状态控制信号Load=1时进入装载状态,对16个31比特的存储单元S15,…,S1,S0进行赋初值操作;在状态控制信号Init=1时进入初始化状态,对位于S15,…,S1,S0中的值进行初始化状态下的更新、移位操作;在状态控制信号PreCom=1时进入预计算状态,对位于S15,…,S1,S0中的值进行工作状态下的更新操作;在状态控制信号Work=1时进入工作状态,对位于S15,…,S1,S0中的值进行工作状态下的更新、移位操作;所述LFSR子模块在寄存器使能信号ci_Q=1时,对中间存储单元Q进行Init状态下的赋值;在寄存器使能信号cp_Q=1时,对中间存储单元Q进行PreCom状态下的赋值;在寄存器使能信号cw_Q=1时,对中间存储单元Q进行Work状态下的赋值;在寄存器使能信号ci_A=1时,LFSR子模块对中间存储单元A进行Init=1状态下的赋值;所述LFSR子模块在移位信号ci_rshift=1时,对位于存储单元S15,…,S1,S0的值s15,…,s1,s0进行循环右移操作,同时保持存储单元S16的状态不变;在更新信号ci_in=1时,将更新结果Snew赋值给存储单元S15;在移位信号ci_lshift=1时,对位于存储单元S15,…,S1,S0的值进行循环左移操作,同时保持存储单元S16的状态不变;在更新信号cp_in=1时,将更新结果Snew赋值给存储单元S16;在移位信号cw_rshift=1时,对位于存储单元S16,S15,…,S1,S0的值进行循环右移操作;在更新信号cw_rshift_in=1时,将位于存储单元S6,…,S1的值赋给存储存储单元S5,…,S0,同时将位于存储单元S0,S16,…,S8的值赋给存储存储单元S16,…,S7,并将更新结果Snew赋值给存储单元S6;所述LFSR子模块包含两组存储单元,其中一组为17个31比特的存储单元S16,S15,…,S1,S0;令k_init=(K31,K30,…,K1,K0),其中Ki,为8比特字节,令iv=(iv24,…,iv16,iv15,…,iv0),其中ivi为8比特或6比特长的比特串;记“||”为字符串连接运算符,“|”为或操作运算符,“·[m:n]”表示由·的第n到第m个比特构成的新的字符串,这组存储单元的输入在Load=1时为256比特的k_init、184比特的iv和16个7比特的本地参数存储器di的如下固定组合:Si=Ki||di||Ki+21||Ki+16,0≤i≤4;Si=ivi-5||(di|ivi+12)||Ki||Ki+21,5≤i≤6;Si=ivi+3||(di|ivi+12)||Ki||ivi-5,i=7;Si=Ki||(di|ivi+12)||ivi-5||ivi+3,i=8;Si=Ki||(di|ivi+12)||ivi+3||ivi-5,i=9;Si=ivi-5||(di|ivi+12)||Ki||Ki+18,i=10;Si=Ki||(di|ivi+12)||ivi-5||ivi+2,11≤i≤12;Si=Ki||di||ivi+2||ivi-5,i=13;Si=Ki||(di|Ki+17[7:4])||ivi+2||ivi-5,i=14;Si=Ki||(di|Ki+17[3:0])||Ki+15||Ki+14,i=15;存储单元S16,S15,…,S1,S0的输出Xi在Init=1时为Xi_1:X0_1=S14[30:15]||S13[15:0];X1_1=S9[15:0]||S7[30:15];X2_1=S5[15:0]||S3[30:15];Xi在PreCom=1时为Xi_2:X1_2=S10[15:0]||S8[30:15];X2_2=S6[15:0]||S4[30:15];Xi在Work=1时为Xi_3:X0_3=S6[30:15]||S5[15:0];X1_3=S2[15:0]||S0[30:15];X2_3=S15[15:0]||S13[30:15];X3_3=S9[15:0]||S7[30:15];所述LFSR子模块中另一组存储单元为10个32比特的中间存储单元A,B,…,I,J;令Ci表示模加运算后产生的1比特进位信号,Vi表示模加运算后产生的和;LFSR中模232加运算后产生的和只取高31比特,而模231加运算后产生的和正常取值;记·31H表示·的高31位,0n表示n位0构成的比特串,mod为模加运算符,u为FSM子模块的输出的高31比特;在Init=1状态下的更新操作中,这组存储单元中G,…,J暂不赋值,A,…,F的输入为:V1=(S0+28S0)mod231,A=V1||C1;V2=(A+(220S4||1))mod232,B=(V2)31H||C2;V3=(B+(221S10||1))mod232,C=(V3)31H||C3;V4=(C+(217S12||1))mod232,D=(V4)31H||C4;V5=(D+(215S14||1))mod232,E=(V5)31H||C5;V6=(E+(u||1))mod232,F=(V6)31H||C6;V7=(F31H+(030||C6))mod231;Snew=V7;在PreCom=1状态下的更新操作中,中间存储单元A、B、C的输入与Init=1状态下的输入保持一致,F,…,J暂不赋值,中间存储单元D、E的输入为:V4=(C+(217S13||1))mod232,D=(V4)31H||C4;V5=(D+(215S15||1))mod232,E=(V5)31H||C5;V6=(E31H+(030||C5))mod232,F=(V6)31H||C6;Snew=V6;在Work=1状态下的更新操作中,中间存储单元A,B,…,I,J的输入为:V1=(215S0+223S0)mod231,A=V1||C1;V2=(A+(S0||1))mod232,B=(V2)31H||C2;V3=(B+(28S16||1))mod232,C=(V3)31H||C3;V4=(C+(24S1||1))mod232,D=(V4)31H||C4;V5=(D+(220S1||1))mod232,E=(V5)31H||C5;V6=(E+(25S5||1))mod232,F=(V6)31H||C6;V7=(F+(221S5||1))mod232,G=(V7)31H||C7;V8=(G+(2S6||1))mod232,H=(V8)31H||C8;V9=(H+(217S6||1))mod232,I=(V9)31H||C9;V10=(I+(230S6||1))mod232,J=(V10)31H||C10;V11=(J31H+(030||C10))mod231,Snew=V11。

全文数据:

权利要求:

百度查询: 湖北大学;中国电子科技集团公司第三十研究所 一种针对ZUC算法的高性能硬件优化设计实现电路

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