本发明涉及嵌入式可重构系统领域,尤其涉及一种应用于信息安全领域的基于大规模粗粒度可重构计算系统及其处理方法。
背景技术:
通用处理器(gpp,generalpurposeprocessor)与专用集成电路(asic,applicationspecificintegratedcircuit)是实现信息领域中加解密算法的两大主流方法。然而,虽然asic实现方式可以通过对特定密码算法进行数据通路与流水线的优化从而达到极高的性能和面积和能量效率,但是该实现方式灵活性差,难以满足密码算法可重构的需求,不是理想的实现方案。gpp实现则采用指令驱动的方式执行,其数据通路采用通用的体系结构,可以适应各种类型的应用,具有较高的灵活性。gpp作为密码算法的实现方案能够充分满足其可重构的需求,通过指令编程gpp可以快速支持不同的密码算法。但由于gpp中都是通用指令,且其计算架构没有针对密码算法的特征做优化,所以密码算法中的s盒、置换等核心计算模块在gpp上的运算速度很慢,从而导致了算法整体性能低下。
可重构计算结合了gpp与asic的优点,既拥有gpp的灵活性,也具有asic的高效率特性,能够较好地满足众多复杂应用的计算要求。在可重构计算中,计算资源的功能和其之间的互连结构可以根据计算任务的不同而改变;在执行运算前,可以对计算资源和互连结构进行配置,一旦配置完成,可重构计算的执行方式即与asic一致,均为数据驱动型,因此可以获得较高的计算性能。
目前国内外的科研机构和公司提出了多种不同的粗粒度可重构架构,如cobra,prodfa,cryptoraptor等。但是,这些阵列的配置系统与计算阵列较为简单,而在skinny-128-128加密算法方法的运算中,执行轮数较多,产生的中间缓存数据量大,因此运算的效率和速度较低。传统的可重构计算系统在skinny-128-128加密算法的面积效率和能量效率方面存在较大问题。
技术实现要素:
为了克服现有技术中存在的不足,本发明的目的是提供一种基于粗粒度可重构计算单元的skinny-128-128加密算法系统,利用可重构技术计算资源多、功能可动态配置、并行展开能力强等优点,提高了加密运算的效率和速度。本发明采用的技术方案是:
一种基于粗粒度可重构计算单元的skinny-128-128加密算法系统,包括可重构配置系统、可重构数据通路及计算模块、主控微处理器、系统总线;
所述可重构配置系统包括配置信息初始化接口、多级配置信息存储单元、配置信息解析模块、位置信息寄存器;
所述可重构数据通路及计算模块包括可重构计算阵列、寄存器通道、中间结果存储单元、输入先进先出寄存器组、输出先进先出寄存器组。
进一步地,
可重构配置系统中,配置信息初始化接口用于对接主控微处理器,以接收配置信息;多级配置信息存储单元用于缓存配置信息;配置信息解析模块用于对接收的配置信息进行格式解析;位置信息寄存器用于缓存格式解析后的配置信息,供可重构数据通路及计算模块读取;
所述配置信息寄存器的输出端连接可重构数据通路及计算模块;
所述可重构计算阵列包括可重构计算单元块,可重构计算单元块包括多行算子、读控制模块、写控制模块;其中,算子包括逻辑运算、算术运算、移位运算、查表运算和置换运算功能;
所述读控制模块和写控制模块用于完成可重构计算单元块与输入先进先出寄存器组、输出先进先出寄存器组、寄存器通道、中间结果存储单元的数据读写控制;
所述主控微处理器通过系统总线与配置信息初始化接口、输入先进先出寄存器组、输出先进先出寄存器组相连;所述的输入先进先出寄存器组与可重构计算阵列的输入相连,可重构计算阵列的输出与输出先进先出寄存器相连;所述的寄存器通道、中间结果存储单元与可重构计算阵列相连;
通过分析skinny-128-128加密算法的计算特征来确定其加密算法的运算流程,将skinny-128-128加密算法的若干轮运算展开成一幅数据流图映射到可重构计算阵列中,通过依次映射多幅数据流图最终完成skinny-128-128加密算法的整个运算;主控微处理器在每次映射均生成相应配置信息,并将配置信息发送至可重构计算阵列,完成对可重构计算阵列的加密配置;
主控微处理器通过系统总线发送明文数据给可重构数据通路及计算模块,可重构数据通路及计算模块将明文数据存入输入先入先出寄存器组,可重构计算阵列完成加密运算后输出密文数据到输出先入先出寄存器组,并向主控微处理器发送中断信号,微处理器接受到中断信号后,读出存储于输出先入先出寄存器组中的密文数据。
进一步地,
所述的可重构数据通路及计算模块包括1个可重构计算阵列、1个中间结果存储单元、1个寄存器通道、1个输入先入先出寄存器组和1个输出先入先出寄存器组;其中,1个可重构计算阵列通过1个中间结果存储单元和1个寄存器通道互相进行数据的储存、读取和传递;所述的1个可重构计算阵列包括m个可重构计算单元块,其中m为正整数。
进一步地,
所述的可重构计算单元块包含n行计算资源,每n行计算资源共享1个读控制模块和1个写控制模块,其中n为正偶数;其中,奇数行和偶数行的算子类型不同。
进一步地,
所述的n行计算资源中,每行包括p个算子,p为正整数;奇数行的算子包含逻辑运算、算术运算、移位运算、置换运算;偶数行的算子包含逻辑运算、算术运算、移位运算、查表运算;其中,逻辑运算包括一个操作数的直通操作、取反操作,两个操作数的异或操作、与操作、或操作;算术运算包括两个算子的加法操作、带取模的加法操作;移位运算包括算术左移操作、循环左移操作、算术右移操作、循环右移操作;查表运算包括最多4路并行的查表操作,查表操作数据位宽从4比特到32比特;置换运算支持64比特数据的任意置换。
进一步地,
所述的每行p个算子,每个算子最多有4个输入和最多有4个输出,除了置换运算的算子外,其余算子每个输入和输出的数据位宽不大于32比特。
进一步地,
该系统的加密算法包括如下步骤,对于密钥长度为128比特,明文数据位宽为128比特,40轮迭代的加密算法,按步骤(1)~(6)顺序操作,其中步骤(1)执行1次,步骤(2)~(6)依次循环执行40次;
(1)初始化:常数c和密钥k依次通过可重构计算单元块中算子的直通操作,存储到中间结果存储单元中;
可重构计算单元块中查找表的值由主控微处理器通过配置信息初始化接口写入到可重构计算阵列中;
(2)计算查表结果a[i]:将明文数据p_text[i]读取到可重构计算单元块中,将算子配置成查表功能,根据明文数据p_text[i]查询查找表,完成查表结果的计算(其中0≤i≤127);
(3)计算常数加结果b[i]:将算子配置成异或操作,将a[i]与中间结果存储器中的常数c进行异或,完成常数加的结果计算;
(4)计算行移位结果c[i]:将算子配置成移位功能,对b[i]完成行移位计算,得到行移位结果c[i];
(5)计算密钥加结果d[i]:首先将一行计算资源配置成置换操作,对密钥进行更新得到rk[i],再将下一行计算资源的算子配置成异或和直通,通过计算c[127:64]与rk[127:64]的异或值,其余位置的数据直通操作,完成密钥加结果的计算;
(6)计算密文结果c_text[i]:对d[i]进行列混淆计算:将两行算子配置成异或和直通操作,d[31:0]与d[63:32]异或后再与d[95:64]异或得到c_text[31:0],d[31:0]直通操作得到c_text[63:32],d[31:0]与d[63:32]异或得到c_text[95:64];d[31:0]与d[95:64]异或后得到c_text[127:96]。
一种基于粗粒度可重构计算单元的skinny-128-128加密算法的实现方法,包括以下步骤:
(1)分析skinny-128-128加密算法的计算特点,并完成数据流图的设计;
(2)确定数据流图之后,针对可重构计算阵列中可重构计算单元块的硬件特点,将数据流图映射到可重构计算阵列上,并生成配置信息;
(3)由主控微处理器将可重构计算阵列的配置信息以及加密算法的各初始数据发送至可重构计算阵列;
(4)主控微处理器向可重构计算单元块发起开始加密的命令,完成对其的配置,并启动对明文数据的加密过程;
(5)可重构计算阵列完成当前加密任务后,发送中断信号,主控微处理器接受到中断信号,完成加密过程。
本发明的优点在于:本发明利用可重构技术计算资源多、功能可动态配置、并行展开能力强等优点,在保障可重构架构灵活性的同时,通过提高对skinny-128-128加密算法算法的并行计算展开程度、优化中间数据存储方式等方法以实现skinny-128-128加密算法算法的高效运算。
附图说明
图1为本发明的加密算法系统框图。
图2a和图2b为本发明的算法在可重构计算单元块上的运算流程图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
如图1所示,本发明提出的一种基于粗粒度可重构计算单元的skinny-128-128加密算法系统,包括可重构配置系统、可重构数据通路及计算模块、主控微处理器、系统总线;
所述可重构配置系统包括配置信息初始化接口、多级配置信息存储单元、配置信息解析模块、位置信息寄存器;其中配置信息初始化接口用于对接主控微处理器,以接收配置信息;多级配置信息存储单元用于缓存配置信息;配置信息解析模块用于对接收的配置信息进行格式解析;位置信息寄存器用于缓存格式解析后的配置信息,供可重构数据通路及计算模块读取;
所述可重构数据通路及计算模块包括可重构计算阵列、寄存器通道、中间结果存储单元、输入先进先出寄存器组、输出先进先出寄存器组;
所述配置信息寄存器的输出端连接可重构数据通路及计算模块;
所述可重构计算阵列包括可重构计算单元块,可重构计算单元块包括多行算子、读控制模块、写控制模块;其中,算子包括逻辑运算、算术运算、移位运算、查表运算和置换运算功能;
所述读控制模块和写控制模块用于完成可重构计算单元块与输入先进先出寄存器组、输出先进先出寄存器组、寄存器通道、中间结果存储单元的数据读写控制;
所述主控微处理器通过系统总线与配置信息初始化接口、输入先进先出寄存器组、输出先进先出寄存器组相连;所述的输入先进先出寄存器组与可重构计算阵列的输入相连,可重构计算阵列的输出与输出先进先出寄存器相连;所述的寄存器通道、中间结果存储单元与可重构计算阵列相连;
通过分析skinny-128-128加密算法的计算特征来确定其加密算法的运算流程,将skinny-128-128加密算法的若干轮运算展开成一幅数据流图映射到可重构计算阵列中,通过依次映射多幅数据流图最终完成skinny-128-128加密算法的整个运算;主控微处理器在每次映射均生成相应配置信息,并将配置信息发送至可重构计算阵列,完成对可重构计算阵列的加密配置;
主控微处理器通过系统总线发送明文数据给可重构数据通路及计算模块,可重构数据通路及计算模块将明文数据存入输入先入先出寄存器组,可重构计算阵列完成加密运算后输出密文数据到输出先入先出寄存器组,并向主控微处理器发送中断信号,微处理器接受到中断信号后,读出存储于输出先入先出寄存器组中的密文数据。
所述的可重构数据通路及计算模块包括1个可重构计算阵列、1个中间结果存储单元、1个寄存器通道、1个输入先入先出寄存器组和1个输出先入先出寄存器组;其中,1个可重构计算阵列通过1个中间结果存储单元和1个寄存器通道互相进行数据的储存、读取和传递;所述的1个可重构计算阵列包括m个可重构计算单元块,其中m为正整数;作为优选方案,1个可重构计算阵列包括4个可重构计算单元块;
所述的可重构计算单元块包含n行计算资源,每n行计算资源共享1个读控制模块和1个写控制模块,其中n为正偶数;其中,奇数行和偶数行的算子类型不同;
所述的n行计算资源中,每行包括p个算子,p为正整数;奇数行的算子包含逻辑运算、算术运算、移位运算、置换运算;偶数行的算子包含逻辑运算、算术运算、移位运算、查表运算;其中,逻辑运算包括一个操作数的直通操作、取反操作,两个操作数的异或操作、与操作、或操作;算术运算包括两个算子的加法操作、带取模的加法操作;移位运算包括算术左移操作、循环左移操作、算术右移操作、循环右移操作;查表运算包括最多4路并行的查表操作,查表操作数据位宽从4比特到32比特;置换运算由1个64比特的无阻塞网络构成,支持64比特数据的任意置换。作为优选方案,所述的可重构计算单元块包含8行计算资源,每行包括4个算子。
所述的每行p个算子,每个算子最多有4个输入和最多有4个输出,除了置换运算的算子外,其余算子每个输入和输出的数据位宽不大于32比特。
如图2a、图2b所示为加密算法在可重构计算阵列上的执行流图,该系统的加密算法包括如下步骤,对于密钥长度为128比特,明文数据位宽为128比特,40轮迭代的加密算法,按步骤(1)~(6)顺序操作,其中步骤(1)执行1次,步骤(2)~(6)依次循环执行40次;
(1)初始化:常数c和密钥k依次通过可重构计算单元块中算子的直通操作,存储到中间结果存储单元中;直通操作如图2a中第0行计算资源所示;逻辑运算、算术运算、移位运算、查表运算的算子支持32位的操作,置换运算的算子支持64位的操作;
可重构计算单元块中查找表的值由主控微处理器通过配置信息初始化接口写入到可重构计算阵列中;
(2)计算查表结果a[i]:将明文数据p_text[i]读取到可重构计算单元块中,将算子配置成查表功能,根据明文数据p_text[i]查询查找表,完成查表结果的计算(其中0≤i≤127);如图2b中第0行计算资源所示;
(3)计算常数加结果b[i]:将算子配置成异或操作,将a[i]与中间结果存储器中的常数c进行异或,完成常数加的结果计算;如图2b中第1行计算资源所示;
(4)计算行移位结果c[i]:将算子配置成移位功能,对b[i]完成行移位计算,得到行移位结果c[i];如图2b中第2行计算资源所示;
(5)计算密钥加结果d[i]:首先将一行计算资源配置成置换操作,对密钥进行更新得到rk[i],再将下一行计算资源的算子配置成异或和直通,通过计算c[127:64]与rk[127:64]的异或值,其余位置的数据直通操作,完成密钥加结果的计算;如图2b中第3、4行计算资源所示;
(6)计算密文结果c_text[i]:对d[i]进行列混淆计算:将两行算子配置成异或和直通操作,
d[31:0]与d[63:32]异或后再与d[95:64]异或得到c_text[31:0];如图2b中第5行中的第一个算子(异或)和第6行中的第一个算子(异或)所示;
d[31:0]直通操作得到c_text[63:32];如图2b中第5行中的第二个算子(直通)和第6行中的第二个算子(直通)所示;
d[31:0]与d[63:32]异或后得到c_text[95:64];如图2b中第5行中的第三个算子(异或)和第6行中的第四个算子(直通)所示;
d[31:0]与d[95:64]异或后得到c_text[127:96];如图2b中第5行中的第四个算子(异或)和第6行中的第四个算子(直通)所示。
基于粗粒度可重构计算单元的skinny-128-128加密算法的实现方法,其特征在于:包括以下步骤:
(1)分析skinny-128-128加密算法的计算特点,并完成数据流图的设计;
(2)确定数据流图之后,针对可重构计算阵列中可重构计算单元块的硬件特点,在了解其配置系统、数据通路、计算阵列等各功能模块的作用机制的情况下,将数据流图映射到可重构计算阵列上,并生成配置信息;
(3)由主控微处理器将可重构计算阵列的配置信息以及加密算法的各初始数据发送至可重构计算阵列;
(4)主控微处理器向可重构计算单元块发起开始加密的命令,完成对其的配置,并启动对明文数据的加密过程;
(5)可重构计算阵列完成当前加密任务后,发送中断信号,主控微处理器接受到中断信号,完成加密过程。
由此实现skinny-128-128加密算法方法。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。