一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分组密码算法的硬件控制系统的制作方法

2022-02-20 13:56:31 来源:中国专利 TAG:


1.本发明涉及计算机安全技术领域,尤其涉及一种分组密码算法的硬件控制系统。


背景技术:

2.分组密码算法是一种将明文切分为特定长度数据段后,通过对数据段进行多次行移位、列混淆、有限域运算、字节替代等迭代运算来实现对明文加密的方法,其具有加密速度快、便于实现对大数据量安全可靠加密、易于进行标准化设计,以及可并行运算等优势,因此在信息安全领域得到了广泛的研究和应用。常见的分组密码算法主要有:sm4算法、des算法、3des算法、aes算法、ides算法等。
3.分组密码算法主要有两种实现方式:软件实现和硬件实现。软件实现方式具有结构简单、结构灵活、易于移植等优点,但在一些对加密速度要求较高的场合有所局限;硬件实现方式又主要分为两种:其一是使用特定算法专用asic芯片实现,其具有加密速度快、可靠性高;其二是使用fpga、cpld等可编程逻辑器件实现,其具有灵活性较强,易于根据实际应用场合需要更改算法。
4.目前分组密码算法的硬件实现方式主要具有以下局限性:
5.(1)对于使用专用asic芯片实现特定密码算法的方式,其不便于更换算法,灵活性较差,且在需求数量不大时成本较高;
6.(2)对于使用可编程逻辑器件实现方式,其可以根据不同的应用场合对运算速度和成本的不同要求,通过修改代码和硬件调试实现。但由于硬件算法的修改和调试周期较长,在应用场合经常切换时容易增加项目时间成本。
7.因此,有必要在此基础上,构建的一个新的分组密码算法的硬件实现方法,以解决上述技术问题。


技术实现要素:

8.本发明的主要目的在于提供一种分组密码算法的硬件控制系统,以解决上述的技术问题。
9.为实现上述目的,本发明提供的一种实现分组密码算法的硬件控制系统,包括;
10.密钥扩展模块,包括用于接收外部密钥输入的密钥数据输入接口key_in、开始信号输入接口ke_star_in、扩展完成信号输出接口ke_done_out、轮密钥输出接口rkey_out以及用于轮密钥扩展运算的轮密钥扩展运算单元;所述轮密钥扩展运算单元连接所述密钥数据输入接口key_in、开始信号输入接口ke_star_in、扩展完成信号输出接口ke_done_out以及轮密钥输出接口rkey_out;
11.流程调度模块,包括用于接收外部加解密启动信号的启动信号输入接口start_in、与所述开始信号输入接口ke_star_in连接的密钥扩展开始信号输出接口ke_start_out、缓存管理输出接口bfi_ctl_out、以及n个密码运算启动信号输出接口jm_start_out;
12.加解密处理模块,包括n组用于进行密码运算的加/解密模块mm,n组所述加/解密
模块mm与所述n个密码运算启动信号输出接口jm_start_out一一对应连接;
13.输入数据缓存模块,包括用于接收外部数据输入的数据输入接口data_in,与所述缓存管理输出接口bfi_ctl_out连接的缓存管理输入接口bfi_ctl_in,与n组所述加/解密模块mm一一对应连接的n个数据输出接口bf_dout
14.输出数据缓存模块,与所述加解密处理模块连接,用于对所述加解密处理模块处理后的数据进行缓存存储并输出。
15.进一步的,还包括输出数据管理模块;
16.所述流程调度模块还包括输出反馈输入接口oc_back_in;
17.所述输出数据管理模块,包括与所述输出反馈输入接口oc_back_in连接的输出反馈输出信号oc_back_out、与n组所述加/解密模块mm一一对应连接的n个运算状态输入接口mm_inf_in、以及与所述输出数据缓存模块连接的输出缓存管理输出接口bfo_ctl_out。
18.进一步的,所述输出数据缓存模块以及所述所述输入数据缓存模块均包括寄存器、加法器、d触发器、比较电路、ram存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路。
19.进一步的,还包括轮密钥/配置信息缓存模块,所述流程调度模块还包括配置信息输入接口config_inf_in和轮密钥缓存管理输出接口bfc_ctl_out,所述密钥扩展模块包括轮密钥输出接口rkey_out;
20.所述轮密钥/配置信息缓存模块包括与外部配置/加密模式输入接口连接的配置输入接口mode_in、与所述轮密钥输出接口rkey_out连接的轮密钥输入接口rkey_in,与所述配置信息输入接口config_inf_in连接的配置信息输出接口config_inf_out,与所述轮密钥缓存管理输出接口bfc_ctl_out连接的轮密钥缓存管理输入接口bfc_ctl_in与n组所述加/解密模块mm一一对应连接的连接的轮密钥输出接口bf_rk_out。
21.进一步的,所述密钥扩展模块包括密钥扩展轮运算调度逻辑单元、循环入口选择逻辑电路if1、循环出口判断逻辑电路if2和p组轮密钥扩展运算单元,且p组所述轮密钥扩展运算单元须进行q次循环运算,其中p、q为正整数;数量p与次数q须满足数量关系:p
×
q=分组密码算法轮密钥扩展运算轮数。
22.进一步的,所述密钥扩展轮运算调度逻辑单元包括与上层启动信号接口ke_start_in连接的用于接收扩展启动信号的启动信号输入接口ke_start_in_q、与p组所述轮密钥扩展运算单元分别一一对应连接的p个轮扩展启动信号输出接口;
23.所述循环入口选择逻辑电路if1包括与上层密钥数据输入接口key_in连接的变量输入接口一rk0_tmp_in1、与所述循环出口判断逻辑电路if2的变量输出接口一rkl_tmp_out1连接变量输入接口二rk0_tmp_in2、与第一组所述轮密钥扩展运算单元连接的变量输出接口rk0_tmp_out、以及与所述密钥扩展轮运算调度逻辑单元的循环入口选择信号输出接口ke_cycle_cod_out连接选择信号输入接口ke_cycle_cod_in;
24.p组所述轮密钥扩展运算单元依次连接;
25.所述循环出口判断逻辑电路if2包括与第p组所述轮密钥扩展运算单元连接的变量输入接口rkl_tmp_in、与上层轮密钥输出接口rkey_out连接的变量输出接口二rkl_tmp_out2以及与所述密钥扩展轮运算调度逻辑单元的循环结束使能信号输出接口ke_cycle_end_out连接的使能信号输入接口ke_cycle_end_in。
26.进一步的,每组所述加/解密模块mm包括轮密码运算调度逻辑单元、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和x组轮加/解密运算单元,且x组轮加/解密运算单元须进行y次循环运算,其中x、y为正整数,数量x与次数y须满足数量关系:x
×
y=分组密码算法加/解密运算轮数。
27.进一步的,所述轮密码运算调度逻辑单元包括与上层密码运算启动信号输入接口jm_start_ink连接(k为正整数,1≤k≤n)的启动信号输入接口jm_start_in_q、与上层轮密钥输入接口mm_rk_ink连接的轮密钥/配置输入接口mm_rk_in_q、与上层运算状态输出接口mm_inf_outk连接的状态信号输出接口mm_inf_out_p、以及与x组所述轮加/解密运算单元分别一一对应连接的x个轮加/解密运算启动信号输出接口;
28.所述循环入口选择逻辑电路if3包括与上层数据输入接口mm_dink连接的数据输入接口一data0_tmp_in1、与所述循环出口判断逻辑电路if4的数据输出接口一datal_tmp_out1连接的数据输入接口二data0_tmp_in2、与第一组所述轮加/解密运算单元连接的数据输出接口data0_tmp_out、以及与所述轮密码运算调度逻辑单元的循环入口选择信号输出接口lm_cycle_cod_out连接的选择信号输入接口lm_cycle_cod_in;
29.x组所述轮加/解密运算单元依次连接;
30.所述循环出口选择逻辑电路if4包括与第x个所述轮加/解密运算单元的数据输出接口data_tmpx_out连接的其数据输入接口datal_tmp_in,与上层数据输出接口mm_dout连接的数据输出接口二datal_tmp_out2、以及与循环结束使能信号输出接口lm_cycle_end_out连接的使能信号输入接口lm_cycle_end_in。
31.在本发明的技术方案与现有技术相比,能够取得以下有益效果:
32.(1)针对利用专用芯片实现分组密码算法的方案中存在的灵活性较差、小批量应用时成本较高问题,本发明专利提供了一种分组密码算法硬件实现的可配置结构或方法,通过对内部模块的并行数量和层次配置,使得运算速度和资源可以灵活配置,在不同场合下易于实现成本与性能的更优解;
33.(2)针对利用可编程逻辑器件实现的常规方案中存在的算法或应用场景更换时开发调试周期较长问题,本发明专利提供了一种分组密码算法硬件实现的通用结构或方法,通过提取分组密码算法的通用模块或单元,结合流程调度、数据缓存等结构,使得算法实现方式结构清晰且层次分明,在更换算法时只需替换相应子单元,易于开发调试,缩短开发周期;
34.(3)同时,本发明专利提供了一种分组密码算法的硬件模块化解决方案,通过各个独立子模块的有机组合来实现整体功能,易于根据具体场合进行可适应调整,例如可以增加分组密码模式配置来提高算法的可靠性。
附图说明
35.图1为本发明一实施例中的实现分组密码算法的硬件控制系统的模块结构示意图;
36.图2为本发明一实施例中的密钥扩展模块ke的模块结构示意图;
37.图3为本发明一实施例中的加/解密模块mm的模块结构示意图;
38.图4为本发明一实施例中的密钥扩展模块ke的接口结构示意图;
39.图5为本发明一实施例中的轮秘钥/配置信息缓存bfc的接口结构示意图;
40.图6为本发明一实施例中的流程调度模块pc的接口结构示意图;
41.图7为本发明一实施例中的加/解密模块mm的接口结构示意图;
42.图8为本发明一实施例中的输入数据缓存模块bfi的接口结构示意图;
43.图9为本发明一实施例中的输出管理模块oc的接口结构示意图;
44.图10为本发明一实施例中的输出数据缓存模块bfo的接口结构示意图;
45.图11为本发明一实施例中的密钥扩展轮运算调度逻辑单元kcl的接口结构示意图;
46.图12为本发明一实施例中的循环入口选择逻辑电路if1的接口结构示意图;
47.图13为本发明一实施例中的轮密钥扩展运算单元lkzi的接口结构示意图;
48.图14为本发明一实施例中的循环出口判断逻辑电路if2的接口结构示意图;
49.图15为本发明一实施例中的轮密码运算调度逻辑单元mcl的接口结构示意图;
50.图16为本发明一实施例中的循环入口选择逻辑电路if3的接口结构示意图;
51.图17为本发明一实施例中的循环出口判断逻辑电路if4的接口结构示意图;
52.图18为本发明一实施例中的轮密钥扩展运算单元lmmj的接口结构示意图;
53.本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
54.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
55.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
56.请参阅图1~18,为实现上述目的,本发明的第一实施例中提供一种实现分组密码算法的硬件控制系统,包括;密钥扩展模块ke、流程调度模块pc、输入数据缓存模块bfi、轮密钥/配置信息缓存模块bfc、n组加/解密模块mmn(其中n为正整数)、输出管理模块oc、输出数据缓存模块bfo。
57.密钥扩展模块ke,包括用于接收外部密钥输入的密钥数据输入接口key_in、开始信号输入接口ke_star_in、扩展完成信号输出接口ke_done_out、轮密钥输出接口rkey_out以及用于轮密钥扩展运算的轮密钥扩展运算单元;所述轮密钥扩展运算单元连接所述密钥数据输入接口key_in、开始信号输入接口ke_star_in、扩展完成信号输出接口ke_done_out以及轮密钥输出接口rkey_out。
58.具体的,如图2所示,密钥扩展模块ke,其密钥数据输入接口key_in与外部密钥输入接口连接,其开始信号输入接口ke_star_in与流程调度模块pc密钥扩展开始信号输出接口ke_start_out连接,其扩展完成信号输出接口ke_done_out与模块pc扩展完成信号输入接口ke_done_in连接,其轮密钥输出接口rkey_out与轮密钥/配置信息缓存bfc模块轮密钥输入模块rkey_in连接;用于完成密钥扩展运算和轮密钥输出功能。
59.进一步的,密钥扩展模块ke包括密钥扩展轮运算调度逻辑kcl、循环入口选择逻辑电路if1、循环出口判断逻辑电路if2和p组轮密钥扩展运算单元lkz1、lkz2、

、lkzi、

、lkzp,且p组轮密钥扩展运算单元须进行q次循环运算,i、p、q为正整数,1≤i≤p,且数量p与
次数q须满足数量关系:p
×
q=(分组密码算法轮密钥扩展运算轮数);加/解密模块mm,包括轮密码运算调度逻辑mcl、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和x组轮加/解密运算单元lmm1、lmm2、

、lmmj、

、lmmx,且x组轮加/解密运算单元须进行y次循环运算,j、x、y为正整数,1≤j≤x,且数量x与次数y须满足数量关系:x
×
y=(分组密码算法加/解密运算轮数);其中:
60.所述kcl模块,其启动信号输入接口ke_start_in_q与上层启动信号接口ke_start_in连接,用于接收密钥扩展启动信号;其p个轮扩展启动信号输出接口lk_start_out1、lk_start_out2、
……
、lk_start_outp分别与p组轮密钥扩展运算单元lkz1、lkz2、
……
、lkzp的启动信号输入接口lk_start_in1、lk_start_in2、
……
、lk_start_inp连接,用于控制密钥扩展轮运算单元lkzi;其p个轮运算反馈信号输入接口lk_back_in1、lk_back_in2、
……
lk_back_inp分别与p组轮密钥扩展运算单元lkz1、lkz2、
……
、lkzp的轮运算反馈信号输出接口lk_back_out1、lk_back_out2、
……
、lk_back_outp连接,用于接收轮运算反馈信号;其扩展完成信号输出接口ke_done_out_p与上层扩展完成信号输出接口ke_done_out连接,用于输出密钥扩展完成信号;其循环入口选择信号输出接口ke_cycle_cod_out与循环入口选择逻辑电路if1的选择信号输入接口ke_cycle_cod_in连接,用于在循环入口处选择运算输入数据;其循环结束使能信号输出接口ke_cycle_end_out与循环出口判断逻辑电路if2的使能信号输入接口ke_cycle_end_in连接,用于输出循环结束使能信号;
61.所述循环入口选择逻辑电路if1,其变量输入接口一rk0_tmp_in1与上层密钥数据输入接口key_in连接,用于接收初始密钥数据;其变量输入接口二rk0_tmp_in2与逻辑电路if2的变量输出接口一rkl_tmp_out1连接,用于接收上次循环输出变量;其变量输出接口rk0_tmp_out与轮密钥扩展运算单元lkz1的变量输入接口rk_tmp1_in连接,用于输出本次循环运算初始变量;其选择信号输入接口ke_cycle_cod_in与kcl模块的循环入口选择信号输出接口ke_cycle_cod_out连接,用于接收循环入口数据选择信号;
62.所述循环出口判断逻辑电路if2,其变量输入接口rkl_tmp_in与轮密钥扩展运算单元lkzp的变量输出接口rk_tmpp_out连接,用于接收本次循环运算输出变量;其变量输出接口一rkl_tmp_out1与循环入口选择逻辑电路if1的变量输入接口二rk0_tmp_in2连接,用于输出下次循环循环运算初始变量;其变量输出接口二rkl_tmp_out2与上层轮密钥输出接口rkey_out连接,用于输出轮密钥;其使能信号输入接口ke_cycle_end_in与kcl模块的循环结束使能信号输出接口ke_cycle_end_out连接,用于接收循环结束使能或轮密钥输出使能信号;
63.所述p组轮密钥扩展运算单元lkzi,其启动信号输入接口lk_start_ini与kcl模块的轮扩展启动信号输出接口lk_start_outi连接,用于接收密钥扩展轮运算启动信号;其轮运算反馈信号输出接口lk_back_outi与kcl模块的轮运算反馈信号输入接口lk_back_ini连接,用于输出密钥扩展轮运算反馈信号;其中,模块lkz1的变量输入接口rk_tmp1_in与循环入口选择逻辑电路if1的变量输出接口rk0_tmp_out连接;当p≥2且p-1≥i≥1时,模块lkzi的变量输出接口rk_tmpi_out与模块lkz(i 1)的变量输入接口rk_tmp(i 1)_in连接,用于输出该轮运算结果变量;模块lkzp的变量输入接口rk_tmpp_in与模块lkz(p-1)的变量输出接口rk_tmp(p-1)_out连接,用于接收上轮运算结果变量;模块lkzp的变量输出接口rk_tmpp_out与循环入口选择逻辑电路if2的变量输入接口rkl_tmp_in连接,用于输出该轮
循环运算结果变量。
64.流程调度模块pc,包括用于接收外部加解密启动信号的启动信号输入接口start_in、与所述开始信号输入接口ke_star_in连接的密钥扩展开始信号输出接口ke_start_out、缓存管理输出接口bfi_ctl_out、以及n个密码运算启动信号输出接口jm_start_out。
65.加解密处理模块,包括n组用于进行密码运算的加/解密模块mm,n组所述加/解密模块mm与所述n个密码运算启动信号输出接口jm_start_out一一对应连接。
66.具体的,所述加/解密模块mm,包括轮密码运算调度逻辑mcl、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和x组轮加/解密运算单元lmm1、lmm2、

、lmmj、

、lmmx,且x组轮加/解密运算单元须进行y次循环运算,其中j、x、y为正整数,1≤j≤x;
67.进一步地,所述轮加/解密运算单元,其数量x选择须根据具体分组密码算法的加/解密运算轮数和具体数据加/解密运算速度要求来进行选择,数量x与次数y须满足数量关系:x
×
y=(分组密码算法加/解密运算轮数);
68.进一步地,所述mcl模块,其启动信号输入接口jm_start_in_q与上层密码运算启动信号输入接口jm_start_ink连接(k为正整数,1≤k≤n),其轮密钥/配置输入接口mm_rk_in_q与上层轮密钥输入接口mm_rk_ink连接,其状态信号输出接口mm_inf_out_p与上层运算状态输出接口mm_inf_outk连接,其x个轮加/解密运算启动信号输出接口lm_start_out1、lm_start_out2、

、lm_start_outj、

、lm_start_outx分别与x组轮加/解密运算单元lmm1、lmm2、

、lmmj、

、lmmx的启动信号输入接口lm_start_in1、lm_start_in2、

、lm_start_inj、

、lm_start_inx连接,其x个轮密钥/配置信息输出接口mm1_rk_out、mm2_rk_out、
……
、mmx_rk_out分别与x组轮加/解密运算单元lmm1、lmm2、
……
、lmmx的轮密钥/配置信息输入接口mm1_rk_in、mm2_rk_in、
……
、mmx_rk_in连接,其x个轮运算反馈信号输入接口lm_back_in1、lm_back_in2、
……
、lm_back_inx分别与x组轮加/解密运算单元lmm1、lmm2、
……
、lmmx的轮运算反馈信号输出接口lm_back_out1、lm_back_out2、
……
、lm_back_outx连接,其循环入口选择信号输出接口lm_cycle_cod_out与循环入口选择逻辑电路if3的选择信号输入接口lm_cycle_cod_in连接,其循环结束使能信号输出接口lm_cycle_end_out与循环出口判断逻辑电路if4的使能信号输入接口lm_cycle_end_in连接;
69.进一步地,所述循环入口选择逻辑电路if3,其数据输入接口一data0_tmp_in1与上层数据输入接口mm_dink连接,其数据输入接口二data0_tmp_in2与逻辑电路if4的数据输出接口一datal_tmp_out1连接,其数据输出接口data0_tmp_out与轮加/解密运算单元lmm1的数据输入接口data_tmp1_in连接,其选择信号输入接口lm_cycle_cod_in与mcl模块的循环入口选择信号输出接口lm_cycle_cod_out连接;
70.进一步地,所述循环入口选择逻辑电路if4,其数据输入接口datal_tmp_in与轮加/解密运算单元lmmx的数据输出接口data_tmpx_out连接,其数据输出接口一datal_tmp_out1与循环入口选择逻辑电路if3的数据输入接口二data0_tmp_in2连接,其数据输出接口二datal_tmp_out2与上层数据输出接口mm_dout连接,其使能信号输入接口lm_cycle_end_in与mcl模块的循环结束使能信号输出接口lm_cycle_end_out连接;
71.进一步地,所述x组轮加/解密运算单元lmmj,其启动信号输入接口lm_start_inj与mcl模块的轮加/解密运算启动信号输出接口lm_start_outj连接,其轮密钥/配置信息输入接口mmj_rk_in与mcl模块的轮密钥/配置信息输出接口mmj_rk_out连接,其轮运算反馈
信号输出接口lm_back_outj与mcl模块的轮运算反馈信号输入接口lm_back_inj连接;其中,模块的lmm1的数据输入接口data_tmp1_in与循环入口选择逻辑电路if3的数据输出接口data0_tmp_out相连接;当x≥2且x-1≥j≥1时,模块lmmj的数据输出接口data_tmpj_out与模块lmm(j 1)的数据输入接口data_tmp(j 1)_in连接;模块lmmx的变量输出接口data_tmpx_out与循环入口选择逻辑电路if4的数据输入接口datal_tmp_in连接;
72.输入数据缓存模块bfi,包括用于接收外部数据输入的数据输入接口data_in,与所述缓存管理输出接口bfi_ctl_out连接的缓存管理输入接口bfi_ctl_in,与n组所述加/解密模块mm一一对应连接的n个数据输出接口bf_dout。
73.输出数据缓存模块bfo,与所述加解密处理模块连接,用于对所述加解密处理模块处理后的数据进行缓存存储并输出。
74.具体的,所述输入数据缓存模块bfi,其数据输入接口data_in与外部数据输入接口连接,其缓存满状态输出接口bfi_full_out与外部数据输入使能接口连接,其缓存管理输入接口bfi_ctl_in与流程调度模块pc缓存管理输出接口bfi_ctl_out连接,其缓存反馈输出接口bfi_back_out与流程调度模块pc的缓存反馈输入接口bfi_back_in连接,其n个数据输出接口bf_dout1、bf_dout2、
……
、bf_doutn分别与n组加/解密模块mm1、mm2、
……
、mmn的数据输入接口mm_din1、mm_din2、
……
、mm_dinn连接,其中n为正整数。
75.所述输出数据缓存模块bfo,其n个输入数据接口of_din1、of_din2、
……
、of_dinn分别与n组加/解密模块mm1、mm2、
……
、mmn的n个输出数据接口mm_dout1、mm_dout2、
……
、mm_doutn连接,其输出缓存管理输入接口bfo_ctl_in与输出管理模块oc的输出缓存管理输出接口bfo_ctl_out连接,其输出缓存反馈输出接口bfo_back_out与输出管理模块oc的输出缓存反馈输入接口bfo_back_in连接,其数据输出接口bfo_dout与外部数据接收接口连接。
76.进一步的,还包括输出数据管理模块oc;
77.所述流程调度模块pc还包括输出反馈输入接口oc_back_in;
78.所述输出数据管理模块,包括与所述输出反馈输入接口oc_back_in连接的输出反馈输出信号oc_back_out、与n组所述加/解密模块mm一一对应连接的n个运算状态输入接口mm_inf_in、以及与所述输出数据缓存模块连接的输出缓存管理输出接口bfo_ctl_out。
79.具体的,所述输出管理模块oc,其输出反馈输出信号oc_back_out与流程调度模块pc的输出反馈输入接口oc_back_in连接,其n个运算状态输入接口mm_inf_in1、mm_inf_in2、
……
、mm_inf_inn分别与n组加/解密模块mm1、mm2、
……
、mmn的n个运算状态输出接口mm_inf_out1、mm_inf_out2、
……
、mm_inf_outn连接,其输出缓存管理输出接口bfo_ctl_out与输出数据缓存模块bfo的输出缓存管理输入接口bfo_ctl_in连接,其输出缓存反馈输入接口bfo_back_in与输出数据缓存模块bfo的输出缓存反馈输出接口bfo_back_out连接,其数据状态输出接口mm_vld_out与外部数据状态接收接口连接。
80.进一步的,所述输出数据缓存模块bfo以及所述所述输入数据缓存模块bfi均包括寄存器、加法器、d触发器、比较电路、ram存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路。
81.进一步的,还包括轮密钥/配置信息缓存模块bfc,所述流程调度模块pc还包括配置信息输入接口config_inf_in和轮密钥缓存管理输出接口bfc_ctl_out,所述密钥扩展模
块包括轮密钥输出接口rkey_out;
82.所述轮密钥/配置信息缓存模块bfc包括与外部配置/加密模式输入接口连接的配置输入接口mode_in、与所述轮密钥输出接口rkey_out连接的轮密钥输入接口rkey_in,与所述配置信息输入接口config_inf_in连接的配置信息输出接口config_inf_out,与所述轮密钥缓存管理输出接口bfc_ctl_out连接的轮密钥缓存管理输入接口bfc_ctl_in与n组所述加/解密模块mm一一对应连接的连接的轮密钥输出接口bf_rk_out。
83.所述的分组密码算法的硬件控制系统主要包括以下功能:
84.(1)密钥扩展:密钥扩展模块ke在接收到扩展启动信号后将外部输入密钥扩展为m组轮密钥(m为正整数,其值须根据具体分组密码算法确定),然后输出轮密钥和扩展完成信号;其中,ke模块包括p组轮密钥扩展运算单元(p为正整数,其值根据具体分组密码算法参数、用户对处理资源和速度要求确定);
85.(2)轮密钥/配置信息缓存:轮密钥/配置信息缓存模块bfc根据接受到的配置/加密模式信息、轮密钥、缓存管理信号完成相应功能,具体包括:输入轮密钥缓存、输入配置/加密模式信息缓存、缓存轮密钥输出、缓存配置/加密模式信息输出;
86.(3)输入数据缓存:输入数据缓存模块bfi根据接收到的缓存管理信号,完成相应功能,具体包括:输入数据缓存、缓存数据输出、缓存反馈输出和缓存满状态输出;
87.(4)加/解密运算:本发明共有n个加/解密模块mm(n为正整数,其值根据具体场合下数据流速度通过输入配置信息确定),其可根据输入的密码运算启动信号并行进行加/解密运算;其中,每个加/解密模块内包含x组加/解密运算单元(x为正整数,其值根据具体分组密码算法参数、用户对处理资源和速度要求确定);
88.(5)输出数据缓存:输出数据缓存模块bfo根据接收到缓存管理信号后,完成相应功能,包括:将n个通道输入的加/解密数据进行缓存、缓存数据的按序输出、缓存状态反馈;
89.(6)流程调度:流程调度模块pc根据输入的启动信号和配置信息,完成相应功能,具体包括:密钥扩展、轮密钥输入和缓存、数据输入缓存、缓存数据输出、缓存轮密钥输出、加/解密模块启动功能之间的时序配合和状态管理;
90.(7)输出管理:输出管理模块oc根据输入的n个mm模块的状态信息、输出数据缓存反馈信息,完成相应功能,具体包括:输出数据缓存管理信息输出、输出数据状态信息输出、输出缓存状态反馈;
91.进一步地,所述密钥扩展轮运算调度逻辑kcl,其由寄存器、加法器、d触发器、比较电路、时序逻辑电路和/或组合逻辑电路构成;所述循环入口选择逻辑电路if1,其由寄存器、时序逻辑电路和/或组合逻辑电路构成;所述循环入口选择逻辑电路if2,其由寄存器、时序逻辑电路和/或组合逻辑电路构成;所述轮密钥扩展运算单元lkzi,其由寄存器、加法器、d触发器、比较电路、rom存储器和/或ram存储器、时序逻辑电路和/或组合逻辑电路构成;所述流程调度模块pc,其特征在于:其由寄存器、加法器、d触发器、比较电路、时序逻辑电路和/或组合逻辑电路构成;所述输入数据缓存模块bfi,其特征在于:其由寄存器、加法器、d触发器、比较电路、ram存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路构成;所述轮密码运算调度逻辑mcl,其由寄存器、加法器、d触发器、比较电路、时序逻辑电路和/或组合逻辑电路构成;所述循环入口选择逻辑电路if3,其由寄存器、时序逻辑电路和/或组合逻辑电路构成;所述循环出口判断逻辑电路
if4,其由寄存器、时序逻辑电路和/或组合逻辑电路构成;所述轮加/解密运算单元lmmj,其由寄存器、加法器、d触发器、比较电路、rom存储器和/或ram存储器、时序逻辑电路和/或组合逻辑电路构成;所述的输出管理模块oc,其特征在于:其由寄存器、加法器、d触发器、比较电路、时序逻辑电路和/或组合逻辑电路构成;所述的输出数据缓存模块bfo,其特征在于:其由寄存器、加法器、d触发器、比较电路、ram存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路构成;
92.在本发明的技术方案与现有技术相比,能够取得以下有益效果:
93.(1)针对利用专用芯片实现分组密码算法的方案中存在的灵活性较差、小批量应用时成本较高问题,本发明专利提供了一种分组密码算法硬件实现的可配置结构或方法,通过对内部模块的并行数量和层次配置,使得运算速度和资源可以灵活配置,在不同场合下易于实现成本与性能的更优解;
94.(2)针对利用可编程逻辑器件实现的常规方案中存在的算法或应用场景更换时开发调试周期较长问题,本发明专利提供了一种分组密码算法硬件实现的通用结构或方法,通过提取分组密码算法的通用模块或单元,结合流程调度、数据缓存等结构,使得算法实现方式结构清晰且层次分明,在更换算法时只需替换相应子单元,易于开发调试,缩短开发周期;
95.(3)同时,本发明专利提供了一种分组密码算法的硬件模块化解决方案,通过各个独立子模块的有机组合来实现整体功能,易于根据具体场合进行可适应调整,例如可以增加分组密码模式配置来提高算法的可靠性
96.以下结合sm4密码算法实施案例作进一步说明:
97.本发明专利基于xilinx公司的xc7k325tffg900 fpga器件,提供了一种sm4密码算法的硬件实现方法,包括:密钥扩展模块ke、流程调度模块pc、输入数据缓存模块bfi、轮密钥/配置信息缓存模块bfc、2组加/解密模块mm、输出管理模块oc、输出数据缓存模块bfo,其中:
98.密钥扩展模块ke,其密钥数据输入接口key_in与外部密钥输入接口连接,其开始信号输入接口ke_star_in与流程调度模块pc密钥扩展开始信号输出接口ke_start_out连接,其扩展完成信号输出接口ke_done_out与模块pc扩展完成信号输入接口ke_done_in连接,其轮密钥输出接口rkey_out与轮密钥/配置信息缓存bfc模块轮密钥输入模块rkey_in连接;用于完成密钥扩展运算和轮密钥输出功能;
99.流程调度模块pc,其启动信号输入接口start_in与外部启动信号输入接口连接,其密钥扩展开始信号输出接口ke_start_out与密钥扩展模块ke开始信号输入接口ke_star_in连接,其扩展完成信号输入接口ke_done_in与密钥扩展模块ke的扩展完成信号输出接口ke_done_out连接,其缓存管理输出接口bfi_ctl_out与输入数据缓存模块bfi缓存管理输入接口bfi_ctl_in连接,其缓存反馈输入接口bfi_back_in与模块bfi缓存反馈输出接口bfi_back_out连接,其轮密钥缓存管理输出接口bfc_ctl_out与轮密钥/配置信息缓存模块bfc轮密钥缓存管理输入接口bfc_ctl_in连接,其配置信息输入接口config_inf_in与bfc模块的配置信息输出接口config_inf_out连接,其2个密码运算启动信号输出接口jm_start_out1、jm_start_out2分别与2组加/解密模块mm1、mm2的密码运算开始信号输入接口jm_start_in1、jm_start_in2连接,其输出反馈输入接口oc_back_in与输出管理模块oc的
输出反馈输出信号oc_back_out连接;其中,bfc模块缓存容量为2
×
128bytes;于完成密钥扩展、轮密钥输入和缓存、数据输入缓存、缓存数据输出、缓存轮密钥输出、加/解密模块启动功能之间的时序配合和状态管理功能;
100.输入数据缓存模块bfi,其数据输入接口data_in与外部数据输入接口连接,其缓存满状态输出接口bfi_full_out与外部数据输入使能接口连接,其缓存管理输入接口bfi_ctl_in与流程调度模块pc缓存管理输出接口bfi_ctl_out连接,其缓存反馈输出接口bfi_back_out与流程调度模块pc的缓存反馈输入接口bfi_back_in连接,其2个数据输出接口bf_dout1、bf_dout2分别与2组加/解密模块mm1、mm2的数据输入接口mm_din1、mm_din2连接;其中,缓存容量大小为2
×
512bytes;用于完成输入轮密钥缓存、输入配置/加密模式信息缓存、缓存轮密钥输出、缓存配置/加密模式信息输出功能;
101.加/解密模块mm1、mm2的密码运算启动信号输入接口jm_start_in1、jm_start_in2分别与流程调度模块pc的2个密码运算开始信号输出接口jm_start_out1、jm_start_out2连接,其2个数据输入接口mm_din1、mm_din2分别与输入数据缓存模块bfi的2个数据输出接口bf_dout1、bf_dout2连接,其2个轮密钥输入接口mm_rk_in1、mm_rk_in2与轮密钥/配置信息缓存模块bfc的轮密钥输出接口bf_rk_out连接,其2个运算状态输出接口mm_inf_out1、mm_inf_out2分别与输出管理模块oc的2个运算状态输入接口mm_inf_in1、mm_inf_in2连接,其2个输出数据接口mm_dout1、mm_dout2分别与输出数据缓存bfo的2个输入数据接口of_din1、of_din2连接;用于完成对输入数据的并行加/解密运算功能;
102.输出管理模块oc,其输出反馈输出信号oc_back_out与流程调度模块pc的输出反馈输入接口oc_back_in连接,其2个运算状态输入接口mm_inf_in1、mm_inf_in2分别与2组加/解密模块mm1、mm2的2个运算状态输出接口mm_inf_out1、mm_inf_out2连接,其输出缓存管理输出接口bfo_ctl_out与输出数据缓存模块bfo的输出缓存管理输入接口bfo_ctl_in连接,其输出缓存反馈输入接口bfo_back_in与输出数据缓存模块bfo的输出缓存反馈输出接口bfo_back_out连接,其数据状态输出接口mm_vld_out与外部数据状态接收接口连接;用于完成输出数据缓存管理信息输出、输出数据状态信息输出、输出缓存状态反馈功能;
103.输出数据缓存模块bfo,其2个输入数据接口of_din1、of_din2分别与2组加/解密模块mm1、mm2的2个输出数据接口mm_dout1、mm_dout2连接,其输出缓存管理输入接口bfo_ctl_in与输出管理模块oc的输出缓存管理输出接口bfo_ctl_out连接,其输出缓存反馈输出接口bfo_back_out与输出管理模块oc的输出缓存反馈输入接口bfo_back_in连接,其数据输出接口bfo_dout与外部数据接收接口连接;其中,缓存容量大小为2
×
512bytes;用于对n个通道输入的加/解密数据进行缓存、缓存数据的按序输出、缓存状态反馈功能。
104.具体而言,本实施案例中,密钥扩展模块ke包括密钥扩展轮运算调度逻辑kcl、循环入口选择逻辑电路if1、循环出口判断逻辑电路if2和1组轮密钥扩展运算单元lkz1、lkz2、lkz3、lkz4,且4组轮密钥扩展运算单元须进行32次循环运算(sm4密码算法轮密钥扩展运算轮数为32);加/解密模块mm,包括轮密码运算调度逻辑mcl、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和4组轮加/解密运算单元lmm1、lmm2、lmm3、lmm4,且3组轮加/解密运算单元须进行8次循环运算(sm4密码算法一次加/解密运算轮数为32);其中:
105.所述kcl模块,其启动信号输入接口ke_start_in_q与上层启动信号接口ke_start_in连接,用于接收密钥扩展启动信号;其轮扩展启动信号输出接口lk_start_out1与
轮密钥扩展运算单元lkz1的启动信号输入接口lk_start_in1连接,用于控制密钥扩展轮运算单元lkz1;其轮运算反馈信号输入接口lk_back_in1与轮密钥扩展运算单元lkz1的轮运算反馈信号输出接口lk_back_out1连接,用于接收轮运算反馈信号;其扩展完成信号输出接口ke_done_out_p与上层扩展完成信号输出接口ke_done_out连接,用于输出密钥扩展完成信号;其循环入口选择信号输出接口ke_cycle_cod_out与循环入口选择逻辑电路if1的选择信号输入接口ke_cycle_cod_in连接,用于在循环入口处选择运算输入数据;其循环结束使能信号输出接口ke_cycle_end_out与循环出口判断逻辑电路if2的使能信号输入接口ke_cycle_end_in连接,用于输出循环结束使能信号;
106.所述循环入口选择逻辑电路if1,其变量输入接口一rk0_tmp_in1与上层密钥数据输入接口key_in连接,用于接收初始密钥数据;其变量输入接口二rk0_tmp_in2与逻辑电路if2的变量输出接口一rkl_tmp_out1连接,用于接收上次循环输出变量;其变量输出接口rk0_tmp_out与轮密钥扩展运算单元lkz1的变量输入接口rk_tmp1_in连接,用于输出本次循环运算初始变量;其选择信号输入接口ke_cycle_cod_in与kcl模块的循环入口选择信号输出接口ke_cycle_cod_out连接,用于接收循环入口数据选择信号;
107.所述循环出口判断逻辑电路if2,其变量输入接口rkl_tmp_in与轮密钥扩展运算单元lkzp的变量输出接口rk_tmpp_out连接,用于接收本次循环运算输出变量;其变量输出接口一rkl_tmp_out1与循环入口选择逻辑电路if1的变量输入接口二rk0_tmp_in2连接,用于输出下次循环循环运算初始变量;其变量输出接口二rkl_tmp_out2与上层轮密钥输出接口rkey_out连接,用于输出轮密钥;其使能信号输入接口ke_cycle_end_in与kcl模块的循环结束使能信号输出接口ke_cycle_end_out连接,用于接收循环结束使能或轮密钥输出使能信号;
108.所述轮密钥扩展运算单元lkz1,其启动信号输入接口lk_start_in1与kcl模块的轮扩展启动信号输出接口lk_start_out1连接,用于接收密钥扩展轮运算启动信号;其轮运算反馈信号输出接口lk_back_out1与kcl模块的轮运算反馈信号输入接口lk_back_in1连接,用于输出密钥扩展轮运算反馈信号;其变量输入接口rk_tmp1_in与循环入口选择逻辑电路if1的变量输出接口rk0_tm1_out连接;其变量输出接口rk_tmp1_out与循环入口选择逻辑电路if2的变量输入接口rkl_tmp_in连接,用于输出该轮循环运算结果变量;
109.所述mcl模块,其启动信号输入接口jm_start_in_q与上层密码运算启动信号输入接口jm_start_in1、连接(k为正整数,1≤k≤2),用于接收密码运算启动信号;其轮密钥/配置输入接口mm_rk_in_q与上层轮密钥输入接口mm_rk_ink连接,用于接收轮密钥/配置信息;其状态信号输出接口mm_inf_out_p与上层运算状态输出接口mm_inf_outk连接,用于输出密码运算状态信息;其4个轮加/解密运算启动信号输出接口lm_start_out1、lm_start_out2、lm_start_out3、lm_start_out4分别与4组轮加/解密运算单元lmm1、lmm2、lmm3、lmm4的启动信号输入接口lm_start_in1、lm_start_in2、lm_start_in3、lm_start_in4连接,用于分别输出各组密码运算模块启动信号;其4个轮密钥/配置信息输出接口mm1_rk_out、mm2_rk_out、mm3_rk_out、mm4_rk_out分别与4组轮加/解密运算单元lmm1、lmm2、lmm3、lmm4的轮密钥/配置信息输入接口mm1_rk_in、mm2_rk_in、mm3_rk_in、mm4_rk_in连接,用于输出轮密码运算配置信息和轮密钥;其4个轮运算反馈信号输入接口lm_back_in1、lm_back_in2、lm_back_in3、lm_back_in4分别与4组轮加/解密运算单元lmm1、lmm2、lmm3、lmm4的轮
运算反馈信号输出接口lm_back_out1、lm_back_out2、lm_back_out3、lm_back_out4连接,用于接收各组密码运算模块反馈信号;其循环入口选择信号输出接口lm_cycle_cod_out与循环入口选择逻辑电路if3的选择信号输入接口lm_cycle_cod_in连接,用于输出循环入口选择信号;其循环结束使能信号输出接口lm_cycle_end_out与循环出口判断逻辑电路if4的使能信号输入接口lm_cycle_end_in连接,用于输出循环结束使能信号或数据输出使能信号;
110.所述循环入口选择逻辑电路if3,其数据输入接口一data0_tmp_in1与上层数据输入接口mm_dink连接,用于接收加/解密运算初始明文/密文数据段;其数据输入接口二data0_tmp_in2与逻辑电路if4的数据输出接口一datal_tmp_out1连接,用于接收上轮密码运算输出变量;其数据输出接口data0_tmp_out与轮加/解密运算单元lmm1的数据输入接口data_tmp1_in连接,用于输出本轮密码运算初始数据变量;其选择信号输入接口lm_cycle_cod_in与mcl模块的循环入口选择信号输出接口lm_cycle_cod_out连接,用于接收初始数据变量选择信号;
111.所述循环入口选择逻辑电路if4,其数据输入接口datal_tmp_in与轮加/解密运算单元lmm4的数据输出接口data_tmp4_out连接,用于接收本次循环密码运算输出变量;其数据输出接口一datal_tmp_out1与循环入口选择逻辑电路if3的数据输入接口二data0_tmp_in2连接,用于输出本次循环密码运算输出变量至下轮密码运算;其数据输出接口二datal_tmp_out2与上层数据输出接口mm_dout连接,用于输出本次循环密码运算输出变量至上层出口;其使能信号输入接口lm_cycle_end_in与mcl模块的循环结束使能信号输出接口lm_cycle_end_out连接,用于接收循环结束使能信号或数据输出使能信号;
112.所述4组轮加/解密运算单元lmm1、lmm2、lmm3、lmm4其启动信号输入接口lm_start_in1、lm_start_in2、lm_start_in3、lm_start_in4与mcl模块的轮加/解密运算启动信号输出接口lm_start_out1、lm_start_out2、lm_start_out3、lm_start_out4连接,用于接收轮密码运算启动信号;其轮密钥/配置信息输入接口mm1_rk_in、mm2_rk_in、mm3_rk_in、mm4_rk_in与mcl模块的轮密钥/配置信息输出接口mm1_rk_out、mm2_rk_out、mm3_rk_out、mm4_rk_out连接,用于接收轮密码运算配置信息和轮密钥;其轮运算反馈信号输出接口lm_back_out1、lm_back_out2、lm_back_out3、lm_back_out4与mcl模块的轮运算反馈信号输入接口lm_back_in1、lm_back_in2、lm_back_in3、lm_back_in4连接,用于输出轮密码运算反馈信号;其中,模块的lmm1的数据输入接口data_tmp1_in与循环入口选择逻辑电路if3的数据输出接口data0_tmp_out相连接,用于接收循环密码运算初始变量;当3≥j≥1时,模块lmmj的数据输出接口data_tmpj_out与模块lmm(j 1)的数据输入接口data_tmp(j 1)_in连接,用于输出本轮密码运算结果变量;模块lmm4的变量输出接口data_tmp4_out与循环入口选择逻辑电路if4的数据输入接口datal_tmp_in连接,用于接收上轮密码运算结果变量。
113.本发明专利通过一种硬件实现分组密码算法的可配置通用结构或方法,解决硬件实现分组密码算法时成本较高、灵活性较差、调试复杂的技术问题,使得运算速度和资源可以灵活配置,在不同场合下易于实现成本与性能的更优解;同时,通过提取分组密码算法的通用模块或单元,结合流程调度、数据缓存等结构,缩短开发调试周期,提高算法的适用性。
114.在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第
一实施例~第x实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料、方法步骤或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
115.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
116.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献