CN113938268B - 分组密码算法的硬件控制系统 - Google Patents

分组密码算法的硬件控制系统 Download PDF

Info

Publication number
CN113938268B
CN113938268B CN202111205097.6A CN202111205097A CN113938268B CN 113938268 B CN113938268 B CN 113938268B CN 202111205097 A CN202111205097 A CN 202111205097A CN 113938268 B CN113938268 B CN 113938268B
Authority
CN
China
Prior art keywords
round
encryption
key
input interface
interface
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.)
Active
Application number
CN202111205097.6A
Other languages
English (en)
Other versions
CN113938268A (zh
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.)
Hunan Qilin Xin'an Technology Co ltd
Original Assignee
Hunan Qilin Xin'an Technology Co ltd
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 Hunan Qilin Xin'an Technology Co ltd filed Critical Hunan Qilin Xin'an Technology Co ltd
Priority to CN202111205097.6A priority Critical patent/CN113938268B/zh
Publication of CN113938268A publication Critical patent/CN113938268A/zh
Application granted granted Critical
Publication of CN113938268B publication Critical patent/CN113938268B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种分组密码算法的硬件控制系统,包括密钥扩展模块、流程调度模块、输入数据缓存模块、轮密钥/配置信息缓存模块、加解密处理模块、输出管理模块以及输出数据缓存模块。其中,加解密处理模块包括N组用于进行密码运算的加/解密模块,每组加/解密模块内又包括轮运算模块和x个轮加/解密运算单元。本发明的分组密码算法的硬件控制系统通过流程调度,实现密钥扩展和n个独立加/解密运算并行处理,提高运算速度;通过加/解密模块内部轮运算调度模块完成分组密码算法轮运算的全并行或局部并行运算,实现对加/解密模块数量和轮运算单元数量的配置,使得在不同速度数据流下实现资源与速度的更优解。

Description

分组密码算法的硬件控制系统
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种分组密码算法的硬件控制系统。
背景技术
分组密码算法是一种将明文切分为特定长度数据段后,通过对数据段进行多次行移位、列混淆、有限域运算、字节替代等迭代运算来实现对明文加密的方法,其具有加密速度快、便于实现对大数据量安全可靠加密、易于进行标准化设计,以及可并行运算等优势,因此在信息安全领域得到了广泛的研究和应用。常见的分组密码算法主要有:SM4算法、DES算法、3DES算法、AES算法、IDES算法等。
分组密码算法主要有两种实现方式:软件实现和硬件实现。软件实现方式具有结构简单、结构灵活、易于移植等优点,但在一些对加密速度要求较高的场合有所局限;硬件实现方式又主要分为两种:其一是使用特定算法专用ASIC芯片实现,其具有加密速度快、可靠性高;其二是使用FPGA、CPLD等可编程逻辑器件实现,其具有灵活性较强,易于根据实际应用场合需要更改算法。
目前分组密码算法的硬件实现方式主要具有以下局限性:
(1)对于使用专用ASIC芯片实现特定密码算法的方式,其不便于更换算法,灵活性较差,且在需求数量不大时成本较高;
(2)对于使用可编程逻辑器件实现方式,其可以根据不同的应用场合对运算速度和成本的不同要求,通过修改代码和硬件调试实现。但由于硬件算法的修改和调试周期较长,在应用场合经常切换时容易增加项目时间成本。
因此,有必要在此基础上,构建的一个新的分组密码算法的硬件实现方法,以解决上述技术问题。
发明内容
本发明的主要目的在于提供一种分组密码算法的硬件控制系统,以解决上述的技术问题。
为实现上述目的,本发明提供的一种实现分组密码算法的硬件控制系统,包括;
密钥扩展模块,包括用于接收外部密钥输入的密钥数据输入接口Key_in、开始信号输入接口KE_star_in、扩展完成信号输出接口KE_done_out、轮密钥输出接口rkey_out以及用于轮密钥扩展运算的轮密钥扩展运算单元;所述轮密钥扩展运算单元连接所述密钥数据输入接口Key_in、开始信号输入接口KE_star_in、扩展完成信号输出接口KE_done_out以及轮密钥输出接口rkey_out;
流程调度模块,包括用于接收外部加解密启动信号的启动信号输入接口start_in、与所述开始信号输入接口KE_star_in连接的密钥扩展开始信号输出接口KE_start_out、缓存管理输出接口BFI_ctl_out、以及N个密码运算启动信号输出接口JM_start_out;
加解密处理模块,包括N组用于进行密码运算的加/解密模块MM,N组所述加/解密模块MM与所述N个密码运算启动信号输出接口JM_start_out一一对应连接;
输入数据缓存模块,包括用于接收外部数据输入的数据输入接口DATA_in,与所述缓存管理输出接口BFI_ctl_out连接的缓存管理输入接口BFI_ctl_in,与N组所述加/解密模块MM一一对应连接的N个数据输出接口BF_dout
输出数据缓存模块,与所述加解密处理模块连接,用于对所述加解密处理模块处理后的数据进行缓存存储并输出。
进一步的,还包括输出数据管理模块;
所述流程调度模块还包括输出反馈输入接口OC_back_in;
所述输出数据管理模块,包括与所述输出反馈输入接口OC_back_in连接的输出反馈输出信号OC_back_out、与N组所述加/解密模块MM一一对应连接的N个运算状态输入接口MM_inf_in、以及与所述输出数据缓存模块连接的输出缓存管理输出接口BFO_ctl_out。
进一步的,所述输出数据缓存模块以及所述所述输入数据缓存模块均包括寄存器、加法器、D触发器、比较电路、RAM存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路。
进一步的,还包括轮密钥/配置信息缓存模块,所述流程调度模块还包括配置信息输入接口Config_inf_in和轮密钥缓存管理输出接口BFC_ctl_out,所述密钥扩展模块包括轮密钥输出接口rkey_out;
所述轮密钥/配置信息缓存模块包括与外部配置/加密模式输入接口连接的配置输入接口Mode_in、与所述轮密钥输出接口rkey_out连接的轮密钥输入接口rkey_in,与所述配置信息输入接口Config_inf_in连接的配置信息输出接口Config_inf_out,与所述轮密钥缓存管理输出接口BFC_ctl_out连接的轮密钥缓存管理输入接口BFC_ctl_in与N组所述加/解密模块MM一一对应连接的连接的轮密钥输出接口BF_rk_out。
进一步的,所述密钥扩展模块包括密钥扩展轮运算调度逻辑单元、循环入口选择逻辑电路if1、循环出口判断逻辑电路if2和p组轮密钥扩展运算单元,且p组所述轮密钥扩展运算单元须进行q次循环运算,其中p、q为正整数;数量p与次数q须满足数量关系:p×q=分组密码算法轮密钥扩展运算轮数。
进一步的,所述密钥扩展轮运算调度逻辑单元包括与上层启动信号接口KE_start_in连接的用于接收扩展启动信号的启动信号输入接口KE_start_in_q、与p组所述轮密钥扩展运算单元分别一一对应连接的p个轮扩展启动信号输出接口;
所述循环入口选择逻辑电路if1包括与上层密钥数据输入接口Key_in连接的变量输入接口一rk0_tmp_in1、与所述循环出口判断逻辑电路if2的变量输出接口一rkL_tmp_out1连接变量输入接口二rk0_tmp_in2、与第一组所述轮密钥扩展运算单元连接的变量输出接口rk0_tmp_out、以及与所述密钥扩展轮运算调度逻辑单元的循环入口选择信号输出接口KE_cycle_cod_out连接选择信号输入接口KE_cycle_cod_in;
p组所述轮密钥扩展运算单元依次连接;
所述循环出口判断逻辑电路if2包括与第p组所述轮密钥扩展运算单元连接的变量输入接口rkL_tmp_in、与上层轮密钥输出接口rkey_out连接的变量输出接口二rkL_tmp_out2以及与所述密钥扩展轮运算调度逻辑单元的循环结束使能信号输出接口KE_cycle_end_out连接的使能信号输入接口KE_cycle_end_in。
进一步的,每组所述加/解密模块MM包括轮密码运算调度逻辑单元、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和x组轮加/解密运算单元,且x组轮加/解密运算单元须进行y次循环运算,其中x、y为正整数,数量x与次数y须满足数量关系:x×y=分组密码算法加/解密运算轮数。
进一步的,所述轮密码运算调度逻辑单元包括与上层密码运算启动信号输入接口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个轮加/解密运算启动信号输出接口;
所述循环入口选择逻辑电路if3包括与上层数据输入接口MM_dink连接的数据输入接口一data0_tmp_in1、与所述循环出口判断逻辑电路if4的数据输出接口一dataL_tmp_out1连接的数据输入接口二data0_tmp_in2、与第一组所述轮加/解密运算单元连接的数据输出接口data0_tmp_out、以及与所述轮密码运算调度逻辑单元的循环入口选择信号输出接口LM_cycle_cod_out连接的选择信号输入接口LM_cycle_cod_in;
x组所述轮加/解密运算单元依次连接;
所述循环出口选择逻辑电路if4包括与第x个所述轮加/解密运算单元的数据输出接口data_tmpx_out连接的其数据输入接口dataL_tmp_in,与上层数据输出接口MM_dout连接的数据输出接口二dataL_tmp_out2、以及与循环结束使能信号输出接口LM_cycle_end_out连接的使能信号输入接口LM_cycle_end_in。
在本发明的技术方案与现有技术相比,能够取得以下有益效果:
(1)针对利用专用芯片实现分组密码算法的方案中存在的灵活性较差、小批量应用时成本较高问题,本发明专利提供了一种分组密码算法硬件实现的可配置结构或方法,通过对内部模块的并行数量和层次配置,使得运算速度和资源可以灵活配置,在不同场合下易于实现成本与性能的更优解;
(2)针对利用可编程逻辑器件实现的常规方案中存在的算法或应用场景更换时开发调试周期较长问题,本发明专利提供了一种分组密码算法硬件实现的通用结构或方法,通过提取分组密码算法的通用模块或单元,结合流程调度、数据缓存等结构,使得算法实现方式结构清晰且层次分明,在更换算法时只需替换相应子单元,易于开发调试,缩短开发周期;
(3)同时,本发明专利提供了一种分组密码算法的硬件模块化解决方案,通过各个独立子模块的有机组合来实现整体功能,易于根据具体场合进行可适应调整,例如可以增加分组密码模式配置来提高算法的可靠性。
附图说明
图1为本发明一实施例中的实现分组密码算法的硬件控制系统的模块结构示意图;
图2为本发明一实施例中的密钥扩展模块KE的模块结构示意图;
图3为本发明一实施例中的加/解密模块MM的模块结构示意图;
图4为本发明一实施例中的密钥扩展模块KE的接口结构示意图;
图5为本发明一实施例中的轮秘钥/配置信息缓存BFC的接口结构示意图;
图6为本发明一实施例中的流程调度模块PC的接口结构示意图;
图7为本发明一实施例中的加/解密模块MM的接口结构示意图;
图8为本发明一实施例中的输入数据缓存模块BFI的接口结构示意图;
图9为本发明一实施例中的输出管理模块OC的接口结构示意图;
图10为本发明一实施例中的输出数据缓存模块BFO的接口结构示意图;
图11为本发明一实施例中的密钥扩展轮运算调度逻辑单元KCL的接口结构示意图;
图12为本发明一实施例中的循环入口选择逻辑电路if1的接口结构示意图;
图13为本发明一实施例中的轮密钥扩展运算单元LKZi的接口结构示意图;
图14为本发明一实施例中的循环出口判断逻辑电路if2的接口结构示意图;
图15为本发明一实施例中的轮密码运算调度逻辑单元MCL的接口结构示意图;
图16为本发明一实施例中的循环入口选择逻辑电路if3的接口结构示意图;
图17为本发明一实施例中的循环出口判断逻辑电路if4的接口结构示意图;
图18为本发明一实施例中的轮密钥扩展运算单元LMMj的接口结构示意图;
本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
请参阅图1~18,为实现上述目的,本发明的第一实施例中提供一种实现分组密码算法的硬件控制系统,包括;密钥扩展模块KE、流程调度模块PC、输入数据缓存模块BFI、轮密钥/配置信息缓存模块BFC、n组加/解密模块MMn(其中n为正整数)、输出管理模块OC、输出数据缓存模块BFO。
密钥扩展模块KE,包括用于接收外部密钥输入的密钥数据输入接口Key_in、开始信号输入接口KE_star_in、扩展完成信号输出接口KE_done_out、轮密钥输出接口rkey_out以及用于轮密钥扩展运算的轮密钥扩展运算单元;所述轮密钥扩展运算单元连接所述密钥数据输入接口Key_in、开始信号输入接口KE_star_in、扩展完成信号输出接口KE_done_out以及轮密钥输出接口rkey_out。
具体的,如图2所示,密钥扩展模块KE,其密钥数据输入接口Key_in与外部密钥输入接口连接,其开始信号输入接口KE_star_in与流程调度模块PC密钥扩展开始信号输出接口KE_start_out连接,其扩展完成信号输出接口KE_done_out与模块PC扩展完成信号输入接口KE_done_in连接,其轮密钥输出接口rkey_out与轮密钥/配置信息缓存BFC模块轮密钥输入模块rkey_in连接;用于完成密钥扩展运算和轮密钥输出功能。
进一步的,密钥扩展模块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=(分组密码算法加/解密运算轮数);其中:
所述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连接,用于输出循环结束使能信号;
所述循环入口选择逻辑电路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连接,用于接收循环入口数据选择信号;
所述循环出口判断逻辑电路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连接,用于接收循环结束使能或轮密钥输出使能信号;
所述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连接,用于输出该轮循环运算结果变量。
流程调度模块PC,包括用于接收外部加解密启动信号的启动信号输入接口start_in、与所述开始信号输入接口KE_star_in连接的密钥扩展开始信号输出接口KE_start_out、缓存管理输出接口BFI_ctl_out、以及N个密码运算启动信号输出接口JM_start_out。
加解密处理模块,包括N组用于进行密码运算的加/解密模块MM,N组所述加/解密模块MM与所述N个密码运算启动信号输出接口JM_start_out一一对应连接。
具体的,所述加/解密模块MM,包括轮密码运算调度逻辑MCL、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和x组轮加/解密运算单元LMM1、LMM2、…、LMMj、…、LMMx,且x组轮加/解密运算单元须进行y次循环运算,其中j、x、y为正整数,1≤j≤x;
进一步地,所述轮加/解密运算单元,其数量x选择须根据具体分组密码算法的加/解密运算轮数和具体数据加/解密运算速度要求来进行选择,数量x与次数y须满足数量关系:x×y=(分组密码算法加/解密运算轮数);
进一步地,所述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连接;
进一步地,所述循环入口选择逻辑电路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连接;
进一步地,所述循环入口选择逻辑电路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连接;
进一步地,所述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连接;
输入数据缓存模块BFI,包括用于接收外部数据输入的数据输入接口DATA_in,与所述缓存管理输出接口BFI_ctl_out连接的缓存管理输入接口BFI_ctl_in,与N组所述加/解密模块MM一一对应连接的N个数据输出接口BF_dout。
输出数据缓存模块BFO,与所述加解密处理模块连接,用于对所述加解密处理模块处理后的数据进行缓存存储并输出。
具体的,所述输入数据缓存模块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为正整数。
所述输出数据缓存模块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与外部数据接收接口连接。
进一步的,还包括输出数据管理模块OC;
所述流程调度模块PC还包括输出反馈输入接口OC_back_in;
所述输出数据管理模块,包括与所述输出反馈输入接口OC_back_in连接的输出反馈输出信号OC_back_out、与N组所述加/解密模块MM一一对应连接的N个运算状态输入接口MM_inf_in、以及与所述输出数据缓存模块连接的输出缓存管理输出接口BFO_ctl_out。
具体的,所述输出管理模块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与外部数据状态接收接口连接。
进一步的,所述输出数据缓存模块BFO以及所述所述输入数据缓存模块BFI均包括寄存器、加法器、D触发器、比较电路、RAM存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路。
进一步的,还包括轮密钥/配置信息缓存模块BFC,所述流程调度模块PC还包括配置信息输入接口Config_inf_in和轮密钥缓存管理输出接口BFC_ctl_out,所述密钥扩展模块包括轮密钥输出接口rkey_out;
所述轮密钥/配置信息缓存模块BFC包括与外部配置/加密模式输入接口连接的配置输入接口Mode_in、与所述轮密钥输出接口rkey_out连接的轮密钥输入接口rkey_in,与所述配置信息输入接口Config_inf_in连接的配置信息输出接口Config_inf_out,与所述轮密钥缓存管理输出接口BFC_ctl_out连接的轮密钥缓存管理输入接口BFC_ctl_in与N组所述加/解密模块MM一一对应连接的连接的轮密钥输出接口BF_rk_out。
所述的分组密码算法的硬件控制系统主要包括以下功能:
(1)密钥扩展:密钥扩展模块KE在接收到扩展启动信号后将外部输入密钥扩展为m组轮密钥(m为正整数,其值须根据具体分组密码算法确定),然后输出轮密钥和扩展完成信号;其中,KE模块包括p组轮密钥扩展运算单元(p为正整数,其值根据具体分组密码算法参数、用户对处理资源和速度要求确定);
(2)轮密钥/配置信息缓存:轮密钥/配置信息缓存模块BFC根据接受到的配置/加密模式信息、轮密钥、缓存管理信号完成相应功能,具体包括:输入轮密钥缓存、输入配置/加密模式信息缓存、缓存轮密钥输出、缓存配置/加密模式信息输出;
(3)输入数据缓存:输入数据缓存模块BFI根据接收到的缓存管理信号,完成相应功能,具体包括:输入数据缓存、缓存数据输出、缓存反馈输出和缓存满状态输出;
(4)加/解密运算:本发明共有n个加/解密模块MM(n为正整数,其值根据具体场合下数据流速度通过输入配置信息确定),其可根据输入的密码运算启动信号并行进行加/解密运算;其中,每个加/解密模块内包含x组加/解密运算单元(x为正整数,其值根据具体分组密码算法参数、用户对处理资源和速度要求确定);
(5)输出数据缓存:输出数据缓存模块BFO根据接收到缓存管理信号后,完成相应功能,包括:将n个通道输入的加/解密数据进行缓存、缓存数据的按序输出、缓存状态反馈;
(6)流程调度:流程调度模块PC根据输入的启动信号和配置信息,完成相应功能,具体包括:密钥扩展、轮密钥输入和缓存、数据输入缓存、缓存数据输出、缓存轮密钥输出、加/解密模块启动功能之间的时序配合和状态管理;
(7)输出管理:输出管理模块OC根据输入的n个MM模块的状态信息、输出数据缓存反馈信息,完成相应功能,具体包括:输出数据缓存管理信息输出、输出数据状态信息输出、输出缓存状态反馈;
进一步地,所述密钥扩展轮运算调度逻辑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存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路构成;
在本发明的技术方案与现有技术相比,能够取得以下有益效果:
(1)针对利用专用芯片实现分组密码算法的方案中存在的灵活性较差、小批量应用时成本较高问题,本发明专利提供了一种分组密码算法硬件实现的可配置结构或方法,通过对内部模块的并行数量和层次配置,使得运算速度和资源可以灵活配置,在不同场合下易于实现成本与性能的更优解;
(2)针对利用可编程逻辑器件实现的常规方案中存在的算法或应用场景更换时开发调试周期较长问题,本发明专利提供了一种分组密码算法硬件实现的通用结构或方法,通过提取分组密码算法的通用模块或单元,结合流程调度、数据缓存等结构,使得算法实现方式结构清晰且层次分明,在更换算法时只需替换相应子单元,易于开发调试,缩短开发周期;
(3)同时,本发明专利提供了一种分组密码算法的硬件模块化解决方案,通过各个独立子模块的有机组合来实现整体功能,易于根据具体场合进行可适应调整,例如可以增加分组密码模式配置来提高算法的可靠性
以下结合SM4密码算法实施案例作进一步说明:
本发明专利基于Xilinx公司的XC7K325TFFG900 FPGA器件,提供了一种SM4密码算法的硬件实现方法,包括:密钥扩展模块KE、流程调度模块PC、输入数据缓存模块BFI、轮密钥/配置信息缓存模块BFC、2组加/解密模块MM、输出管理模块OC、输出数据缓存模块BFO,其中:
密钥扩展模块KE,其密钥数据输入接口Key_in与外部密钥输入接口连接,其开始信号输入接口KE_star_in与流程调度模块PC密钥扩展开始信号输出接口KE_start_out连接,其扩展完成信号输出接口KE_done_out与模块PC扩展完成信号输入接口KE_done_in连接,其轮密钥输出接口rkey_out与轮密钥/配置信息缓存BFC模块轮密钥输入模块rkey_in连接;用于完成密钥扩展运算和轮密钥输出功能;
流程调度模块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;于完成密钥扩展、轮密钥输入和缓存、数据输入缓存、缓存数据输出、缓存轮密钥输出、加/解密模块启动功能之间的时序配合和状态管理功能;
输入数据缓存模块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;用于完成输入轮密钥缓存、输入配置/加密模式信息缓存、缓存轮密钥输出、缓存配置/加密模式信息输出功能;
加/解密模块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连接;用于完成对输入数据的并行加/解密运算功能;
输出管理模块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与外部数据状态接收接口连接;用于完成输出数据缓存管理信息输出、输出数据状态信息输出、输出缓存状态反馈功能;
输出数据缓存模块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个通道输入的加/解密数据进行缓存、缓存数据的按序输出、缓存状态反馈功能。
具体而言,本实施案例中,密钥扩展模块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);其中:
所述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连接,用于输出循环结束使能信号;
所述循环入口选择逻辑电路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连接,用于接收循环入口数据选择信号;
所述循环出口判断逻辑电路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连接,用于接收循环结束使能或轮密钥输出使能信号;
所述轮密钥扩展运算单元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连接,用于输出该轮循环运算结果变量;
所述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连接,用于输出循环结束使能信号或数据输出使能信号;
所述循环入口选择逻辑电路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连接,用于接收初始数据变量选择信号;
所述循环入口选择逻辑电路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连接,用于接收循环结束使能信号或数据输出使能信号;
所述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连接,用于接收上轮密码运算结果变量。
本发明专利通过一种硬件实现分组密码算法的可配置通用结构或方法,解决硬件实现分组密码算法时成本较高、灵活性较差、调试复杂的技术问题,使得运算速度和资源可以灵活配置,在不同场合下易于实现成本与性能的更优解;同时,通过提取分组密码算法的通用模块或单元,结合流程调度、数据缓存等结构,缩短开发调试周期,提高算法的适用性。
在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第一实施例~第X实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料、方法步骤或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (7)

1.一种实现分组密码算法的硬件控制系统,其特征在于,包括;
密钥扩展模块,包括用于接收外部密钥输入的密钥数据输入接口Key_in、开始信号输入接口KE_star_in、扩展完成信号输出接口KE_done_out、轮密钥输出接口rkey_out以及用于轮密钥扩展运算的轮密钥扩展运算单元;所述轮密钥扩展运算单元连接所述密钥数据输入接口Key_in、开始信号输入接口KE_star_in、扩展完成信号输出接口KE_done_out以及轮密钥输出接口rkey_out;
流程调度模块,包括用于接收外部加解密启动信号的启动信号输入接口start_in、与所述开始信号输入接口KE_star_in连接的密钥扩展开始信号输出接口KE_start_out、缓存管理输出接口BFI_ctl_out、以及N个密码运算启动信号输出接口JM_start_out,所述流程调度模块还包括配置信息输入接口Config_inf_in和轮密钥缓存管理输出接口BFC_ctl_out,所述密钥扩展模块包括轮密钥输出接口rkey_out;
轮密钥/配置信息缓存模块,包括与外部配置/加密模式输入接口连接的配置输入接口Mode_in、与所述轮密钥输出接口rkey_out连接的轮密钥输入接口rkey_in,与所述配置信息输入接口Config_inf_in连接的配置信息输出接口Config_inf_out,与所述轮密钥缓存管理输出接口BFC_ctl_out连接的轮密钥缓存管理输入接口BFC_ctl_in与n个加/解密模块MM一一对应连接的轮密钥输出接口BF_rk_out,其中,所述轮密钥/配置信息缓存模块根据接受到的配置/加密模式信息、轮密钥、缓存管理信号完成相应功能,具体包括:输入轮密钥缓存、输入配置/加密模式信息缓存、缓存轮密钥输出、缓存配置/加密模式信息输出;
加解密处理模块,包括n个加/解密模块MM,其中,n为正整数,其值根据具体场合下数据流速度通过输入配置信息确定,n个所述加/解密模块MM与所述N个密码运算启动信号输出接口JM_start_out一一对应连接,所述n个加/解密模块MM根据输入的密码运算启动信号并行进行加/解密运算;每个加/解密模块内包含x组加/解密运算单元,其中,x为正整数,其值根据具体分组密码算法参数、用户对处理资源和速度要求确定;
输入数据缓存模块,包括用于接收外部数据输入的数据输入接口DATA_in,与所述缓存管理输出接口BFI_ctl_out连接的缓存管理输入接口BFI_ctl_in,与n个所述加/解密模块MM一一对应连接的N个数据输出接口BF_dout;
输出数据缓存模块,与所述加解密处理模块连接,用于对所述加解密处理模块处理后的数据进行缓存存储并输出。
2.根据权利要求1所述的实现分组密码算法的硬件控制系统,其特征在于,还包括输出数据管理模块;
所述流程调度模块还包括输出反馈输入接口OC_back_in;
所述输出数据管理模块,包括与所述输出反馈输入接口OC_back_in连接的输出反馈输出信号OC_back_out、与n个所述加/解密模块MM一一对应连接的N个运算状态输入接口MM_inf_in、以及与所述输出数据缓存模块连接的输出缓存管理输出接口BFO_ctl_out。
3.根据权利要求1或2所述的实现分组密码算法的硬件控制系统,其特征在于,所述输出数据缓存模块以及所述输入数据缓存模块均包括寄存器、加法器、D触发器、比较电路、RAM存储器和/或其他能够根据时钟脉冲进行读写数据操作的存储器、时序逻辑电路和/或组合逻辑电路。
4.根据权利要求1所述的实现分组密码算法的硬件控制系统,其特征在于,所述密钥扩展模块包括密钥扩展轮运算调度逻辑单元、循环入口选择逻辑电路if1、循环出口判断逻辑电路if2和p组轮密钥扩展运算单元,且p组所述轮密钥扩展运算单元须进行q次循环运算,其中p、q为正整数;数量p与次数q须满足数量关系:p×q=分组密码算法轮密钥扩展运算轮数。
5.根据权利要求4所述的实现分组密码算法的硬件控制系统,其特征在于,所述密钥扩展轮运算调度逻辑单元包括与上层启动信号接口KE_start_in连接的用于接收扩展启动信号的启动信号输入接口KE_start_in_q、与p组所述轮密钥扩展运算单元分别一一对应连接的p个轮扩展启动信号输出接口;
所述循环入口选择逻辑电路if1包括与上层密钥数据输入接口Key_in连接的变量输入接口一rk0_tmp_in1、与所述循环出口判断逻辑电路if2的变量输出接口一rkL_tmp_out1连接变量输入接口二rk0_tmp_in2、与第一组所述轮密钥扩展运算单元连接的变量输出接口rk0_tmp_out、以及与所述密钥扩展轮运算调度逻辑单元的循环入口选择信号输出接口KE_cycle_cod_out连接选择信号输入接口KE_cycle_cod_in;
p组所述轮密钥扩展运算单元依次连接;
所述循环出口判断逻辑电路if2包括与第p组所述轮密钥扩展运算单元连接的变量输入接口rkL_tmp_in、与上层轮密钥输出接口rkey_out连接的变量输出接口二rkL_tmp_out2以及与所述密钥扩展轮运算调度逻辑单元的循环结束使能信号输出接口KE_cycle_end_out连接的使能信号输入接口KE_cycle_end_in。
6.根据权利要求1所述的实现分组密码算法的硬件控制系统,其特征在于,每组所述加/解密模块MM包括轮密码运算调度逻辑单元、循环入口选择逻辑电路if3、循环出口判断逻辑电路if4和x组轮加/解密运算单元,且x组轮加/解密运算单元须进行y次循环运算,其中x、y为正整数,数量x与次数y须满足数量关系:x×y=分组密码算法加/解密运算轮数。
7.根据权利要求6所述的实现分组密码算法的硬件控制系统,其特征在于,所述轮密码运算调度逻辑单元包括与上层密码运算启动信号输入接口JM_start_ink连接的启动信号输入接口JM_start_in_q、与上层轮密钥输入接口MM_rk_ink连接的轮密钥/配置输入接口MM_rk_in_q、与上层运算状态输出接口MM_inf_outk连接的状态信号输出接口MM_inf_out_p、以及与x组所述轮加/解密运算单元分别一一对应连接的x个轮加/解密运算启动信号输出接口,其中,k为正整数,1≤k≤n;
所述循环入口选择逻辑电路if3包括与上层数据输入接口MM_dink连接的数据输入接口一data0_tmp_in1、与所述循环出口判断逻辑电路if4的数据输出接口一dataL_tmp_out1连接的数据输入接口二data0_tmp_in2、与第一组所述轮加/解密运算单元连接的数据输出接口data0_tmp_out、以及与所述轮密码运算调度逻辑单元的循环入口选择信号输出接口LM_cycle_cod_out连接的选择信号输入接口LM_cycle_cod_in;
x组所述轮加/解密运算单元依次连接;
所述循环出口判断逻辑电路if4包括与第x个所述轮加/解密运算单元的数据输出接口data_tmpx_out连接的其数据输入接口dataL_tmp_in,与上层数据输出接口MM_dout连接的数据输出接口二dataL_tmp_out2;以及与循环结束使能信号输出接口LM_cycle_end_out连接的使能信号输入接口LM_cycle_end_in。
CN202111205097.6A 2021-10-15 2021-10-15 分组密码算法的硬件控制系统 Active CN113938268B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111205097.6A CN113938268B (zh) 2021-10-15 2021-10-15 分组密码算法的硬件控制系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111205097.6A CN113938268B (zh) 2021-10-15 2021-10-15 分组密码算法的硬件控制系统

Publications (2)

Publication Number Publication Date
CN113938268A CN113938268A (zh) 2022-01-14
CN113938268B true CN113938268B (zh) 2023-07-28

Family

ID=79279808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111205097.6A Active CN113938268B (zh) 2021-10-15 2021-10-15 分组密码算法的硬件控制系统

Country Status (1)

Country Link
CN (1) CN113938268B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050019086A (ko) * 2002-05-23 2005-02-28 아트멜 코포레이숀 진보된 암호화 표준(aes)의 하드웨어 암호 엔진
WO2009029842A1 (en) * 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
US8565421B1 (en) * 2009-01-15 2013-10-22 Marvell International Ltd. Block cipher improvements
CN103812641A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种实现sm4分组对称密码算法的系统
US9960908B1 (en) * 2015-06-19 2018-05-01 Amazon Technologies, Inc. Reduced-latency packet ciphering
CN111865560A (zh) * 2020-06-23 2020-10-30 华中科技大学 一种aes密码协处理器及终端设备
CN112350819A (zh) * 2020-10-23 2021-02-09 四川九洲电器集团有限责任公司 一种全流水线sms4加解密方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2486713A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
GB0214620D0 (en) * 2002-06-25 2002-08-07 Koninkl Philips Electronics Nv Round key generation for AES rijndael block cipher
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US8094816B2 (en) * 2008-10-21 2012-01-10 Apple Inc. System and method for stream/block cipher with internal random states
US9503256B2 (en) * 2014-12-24 2016-11-22 Intel Corporation SMS4 acceleration hardware
CN109462472A (zh) * 2017-09-06 2019-03-12 阿里巴巴集团控股有限公司 数据加密和解密的方法、装置和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050019086A (ko) * 2002-05-23 2005-02-28 아트멜 코포레이숀 진보된 암호화 표준(aes)의 하드웨어 암호 엔진
WO2009029842A1 (en) * 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
US8565421B1 (en) * 2009-01-15 2013-10-22 Marvell International Ltd. Block cipher improvements
CN103812641A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种实现sm4分组对称密码算法的系统
US9960908B1 (en) * 2015-06-19 2018-05-01 Amazon Technologies, Inc. Reduced-latency packet ciphering
CN111865560A (zh) * 2020-06-23 2020-10-30 华中科技大学 一种aes密码协处理器及终端设备
CN112350819A (zh) * 2020-10-23 2021-02-09 四川九洲电器集团有限责任公司 一种全流水线sms4加解密方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
分组密码算法SM4的低复杂度实现;王晨光;乔树山;黑勇;;计算机工程(第07期);全文 *

Also Published As

Publication number Publication date
CN113938268A (zh) 2022-01-14

Similar Documents

Publication Publication Date Title
US9065654B2 (en) Parallel encryption/decryption
EP2186250B1 (en) Method and apparatus for hardware-accelerated encryption/decryption
KR100583635B1 (ko) 다수의 동작 모드들을 지원하는 암호화 장치
JP4486680B2 (ja) Rc4暗号化を実行するための装置および方法
US20090316899A1 (en) Encryption/decryption device and security storage device
US20030202658A1 (en) High throughput AES architecture
CN101702709B (zh) 一种适用于mips处理器的aes加密单元
US9910790B2 (en) Using a memory address to form a tweak key to use to encrypt and decrypt data
US7623660B1 (en) Method and system for pipelined decryption
US9172537B1 (en) Array encryption core
US10809925B2 (en) Configurable security memory region
CN105007154B (zh) 一种基于aes算法的加密解密装置
CN111722831B (zh) 一种加密系统及其实现方法
CN103973432A (zh) 一种基于fpga和usb接口芯片的sm4算法加密设备
US7447311B2 (en) Method of designing optimum encryption function and optimized encryption apparatus in a mobile communication system
CN116488794B (zh) 基于fpga的高速sm4密码模组实现方法及装置
KR100734877B1 (ko) Aria 암호 모듈 및 그 방법
CN113938268B (zh) 分组密码算法的硬件控制系统
CN103346878A (zh) 一种基于fpga高速串行io的保密通信方法
CN108874702A (zh) 基于axi总线的多路对称加解密ip核并行处理装置和方法
CN111082918B (zh) 一种二维随机加扰的aes抗功耗攻击系统和方法
CN116073987A (zh) 一种分组密码模式的可靠性设计方法、密码卡、服务器
Taqieddin et al. Efficient FPGA implementation of the RC4 stream cipher using block RAM and pipelining
CN212112472U (zh) 一种轮运算电路
CN112487448B (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
GR01 Patent grant
GR01 Patent grant