一种基于粗粒度可重构架构的DES算法密钥扩展系统及扩展方法与流程

文档序号:11829642阅读:247来源:国知局
一种基于粗粒度可重构架构的DES算法密钥扩展系统及扩展方法与流程

本发明涉及一种应用于通信、加密等领域的基于大规模粗粒度嵌入式可重构系统及其处理方法,属于嵌入式可重构系统领域。



背景技术:

通用处理器与专用集成电路(ASIC)是传统的计算机系统结构领域的两大主流方法。然而,随着应用领域对系统的性能、能耗、上市时间等指标需求的不断提高,这两种传统计算模式的弊端就暴露出来。

通用处理器方法适用范围广,但是计算效率低,专用集成电路虽然可以提高计算速度和计算效率,满足性能需求,但是ASIC器件的灵活性很差。

为了在灵活性和计算效率之间实现很好的权衡,可重构计算(reconfigurable computing)技术应运而生。可重构计算是当前计算机系统结构领域的发展趋势之一,它的架构介于通用处理器和ASIC之间,并且综合了二者长处。它通过对可重构设备进行配置,可以使之由一个通用的计算平台转化为一个专用的硬件系统,以完成具体的计算任务,相当于计算任务同时在时间和空间上展开,显示出了应用的灵活性和很高的计算性能。此外,可重构计算技术还具有系统能耗低、可靠性高、上市时间短等优势。这些优势使得可重构计算技术在各个应用领域尤其是嵌入式应用领域有着广阔的应用前景。很多在嵌入式领域中的主流应用,例如多媒体应用、加/解密应用以及通信应用等都非常适合利用可重构计算技术实现。当前的可重构计算技术主要还是用于尖端技术领域中的计算平台,但随着可重构逻辑器件成本逐渐降低,运行时可重构计算技术不断完善,我们有理由相信可重构计算技术具备的种种优势会使其在更多的领域里大有作为。

目前国内外已研究有多重可重构系统,如ReMAP,AsAP,DRP等。但是,这些阵列的互联方式较为简单,在DES算法密钥扩展运算中需要大量的比特移位以及较多的轮数,因此运算的效率和速度较低。传统的可重构计算系统在DES的运算效率与运算周期方面存在较大问题。

现有的中国专利201510886219.0,发明名称为:一种基于大规模粗粒度可重构处理器的SHA256实现方法及系统,其针对SHA256方法,通过将多轮迭代在可重构处理器中部分展开和中间结果数据缓存的方式进行优化和加速,但是对于DES算法来说,该方法及系统不适用。



技术实现要素:

发明目的:为了克服现有技术中存在的不足,本发明提供一种基于粗粒度可重构架构的DES算法密钥扩展系统及扩展方法,本发明利用可重构技术的并行性处理、运算模块独立可配置等优点,在支持一定的灵活性的同时,通过提高对DES算法的并行度以及优化流水线等方法实现了DES算法的高效运算。

技术方案:为实现上述目的,本发明采用的技术方案为:

一种基于粗粒度可重构架构的DES算法密钥扩展系统,包括系统总线、可重构处理器和微处理器。

所述可重构处理器包括配置单元、输入先进先出寄存器组、输出先进先出寄存器组、通用寄存器堆、M个可重构阵列块,所述配置单元的进线口通过系统总线与微处理器连接,且配置单元的出线口分别与可重构阵列块连接。而所述输入先进先出寄存器组通过系统总线与微处理器连接。这M个可重构阵列块分别为第1个可重构阵列块、第2个可重构阵列块、…、第m个可重构阵列块、…、第M个可重构阵列块,m=1...M,M取整数。其中第1个可重构阵列块与输入先进先出寄存器组连接,而第M个可重构阵列块与输出先进先出寄存器组连接,且这M个可重构阵列块均与通用寄存器堆连接,同时这M个可重构阵列块按顺序依次连接。这M个可重构阵列块之间通过通用寄存器堆互相进行数据的储存、读取和传递。所述输出先进先出寄存器组通过系统总线与微处理器连接。

所述微处理器通过分析DES的特征来确定密钥扩展的运算流程,将多轮的密钥扩展运算展开成一幅数据流图映射到可重构处理器中形成配置信息发送给配置单元。微处理器通过系统总线发送明文数据给可重构处理器,明文数据将存入输入先进先出寄存器组,生成的密钥将存入输入先进先出寄存器组。

所述配置单元用于存储配置信息,并将配置信息发送给各个可重构阵列块。

第1个可重构阵列块用于获取输入先进先出寄存器组的明文数据,并根据配置信息第1个可重构阵列块对明文数据进行密钥扩展,经过密钥扩展后得到本步密钥扩展的中间信息和本步密钥。根据配置信息将本步密钥载入通用寄存器堆中,而得到的本步密钥扩展的中间信息根据配置信息载入到下一个可重构阵列块中。

对于第p个可重构阵列块,2≤p≤M-1。第p个可重构阵列块用于获取第(p-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信息,第(p-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信记为上一步得到的密钥扩展的中间信息。根据配置信息第p个可重构阵列块对上一步得到的密钥扩展的中间信息进行密钥扩展,经过密钥扩展后得到本步密钥扩展的中间信息和本步密钥。根据配置信息将本步密钥载入通用寄存器堆中,而得到的本步密钥扩展的中间信息根据配置信息载入到下一个可重构阵列块中。

对于第M个可重构阵列块,第M个可重构阵列块用于获取第(M-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信息,该第(M-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信息为上一步得到的密钥扩展的中间信息,根据配置信息第M个可重构阵列块对上一步得到的密钥扩展的中间信息进行密钥扩展,经过密钥扩展后得到本步密钥扩展的中间信息和本步密钥。根据配置信息将本步密钥载入通用寄存器堆中,完成密钥扩展。

优选的:所述配置单元包括依次连接在一起的配置与控制接口、配置存储器和配置解析模块,且所述配置与控制接口和系统总线连接。微处理器依次通过系统总线和配置与控制接口将所需要的配置信息发送给配置存储器,所述配置存储器存储发送过来的配置信息,而配置解析模块用于解析配置存储器的配置信息,且将解析的配置信息发送给可重构阵列块,实现对可重构阵列块的配置、启动以及切换操作。

优选的:所述可重构阵列块包括读端口运算行选择器、写端口运算行选择器以及N行可重构阵列运算行,且这N行可重构阵列运算行共享读端口运算行选择器和写端口运算行选择器。其中,第m个可重构阵列块中的读端口运算行选择器记为第m个读端口运算行选择器,第m个可重构阵列块中的写端口运算行选择器记为第m个写端口运算行选择器,第m个可重构阵列块中的第n行可重构阵列运算行记为第行可重构阵列运算行,m=1...M,n=1...N,M为可重构阵列块的个数,N为可重构阵列块包括的可重构阵列运算行的行数,M,N取整数。且所述可重构阵列块之间按顺序依次连接,而每个可重构阵列块内部的可重构阵列运算行之间按顺序依次连接。

在密钥扩展中可重构阵列块运算得到的密钥通过写端口运算行选择器存在通用寄存器堆中。

优选的:每行可重构阵列运算行均包括X1个数据载入单元、X2个数据输出单元、X3个字节置换网络、X4个比特置换网络和X5个8位算术逻辑单元,字节置换网络与比特置换网络组成置换网络,字节置换网络与比特置换网络的输出X5个8位的数据分别固定对应于X5个8位算术逻辑单元。每个算术逻辑单元使用对应的读端口运算行选择器选择任意三个置换网络的输出作为其输入。第m个可重构阵列块第n行可重构阵列运算行的第k1个数据载入单元记为第个数据载入单元,第m个可重构阵列块第n行可重构阵列运算行的第k2个数据输出单元记为第个数据输出单元,第m个可重构阵列块第n行可重构阵列运算行的第k3个字节置换网络记为第个字节置换网络,第m个可重构阵列块第n行可重构阵列运算行的第k4个比特置换网络记为第个比特置换网络,第m个可重构阵列块第n行可重构阵列运算行的第k1个数据载入单元记为第个算术逻辑单元,k1=1...X1,k2=1...X2,k3=1...X3,k4=1...X4,k5=1...X5,X1,X2,X3,X4和X5均取整数。第m个读端口运算行选择器读取的上一步的中间数据以及接收解析配置解析模块的配置信息来选择中间数据流入的字节置换网络和比特置换网络。

优选的:所述算术逻辑单元中包括模加运算、异或运算、与运算、与非运算、直通输出运算操作。同时每个算术逻辑单元有最多3个输入和最多2个输出,其中算术逻辑单元执行上述运算操作的同时,支持任选一个输入作为输出。每4个8位的算术逻辑单元通过进位端口连接成为1个32位的算术逻辑单元。

优选的:所述可重构阵列块的个数为8个,通用寄存器堆的个数为1个,输入先进先出寄存器组的个数为1个,输出先进先出寄存器组的个数为1个。

优选的:每个可重构阵列块包括4行可重构阵列运算行、1个读端口运算行选择器和1个写端口运算行选择器。

优选的:每行可重构阵列运算行包括2个数据载入单元、2个数据输入单元、16个8位算术运算单元、2个字节置换网络和2个比特置换网络。

一种基于粗粒度可重构架构的DES算法密钥扩展方法,包括以下步骤。

步骤1,分析DES算法密钥扩展的计算特点,并归纳出数据流图。

步骤2,根据数据流图中的运算流程,制定DES的数据输入方式。

步骤3,根据步骤2确定的数据输入方式以及步骤2确定的数据流图针对可重构处理器的特点配置可重构处理器,并生成配置信息。

步骤4,通过微处理器将配置信息以及可重构处理器初始数据存入相应的存储器中。

步骤5,微处理器启动可重构处理器,并将配置信息及待处理数据发送给可重构处理器。

步骤6,可重构处理器根据配置信息及待处理数据进行数据处理,当可重构处理器完成当前任务后,发送中断信号。并将处理好的数据通过通过系统总线发送给微处理器。

步骤6中可重构处理器根据配置信息及待处理数据进行数据处理的方法:

步骤61:第行可重构阵列运算行中的第个数据载入单元从输入先进先出寄存器组中载入初始64比特的密钥。通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对初始64比特的密钥实现PC-1移位变换,移位后的数据通过第个算术逻辑单元的逻辑计算得到最低56比特的初始左信息C[0]、初始右信息D[0],字节置换网络与比特置换网络用于控制数据的流向,从而为算术逻辑单元输出合适的操作数,第个算术逻辑单元都配置为直通,最低56比特的初始左信息C[0]、初始右信息D[0]通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行中的第个数据载入单元从第个数据输出单元中载入最低56比特的初始左信息C[0]、初始右信息D[0],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最低56比特的初始左信息C[0]、初始右信息D[0]进行LS1循环移位,得到的LS1循环移位的数据通过第个算术逻辑单元的逻辑计算得到最低56比特的左信息C[1]、右信息D[1],最低56比特的左信息C[1]、右信息D[1]通过第个数据输出单元根据配置信息发送出,第个算术逻辑单元都配置为直通。

第行可重构阵列运算行的第个数据载入单元从第个数据输出单元中载入最低56比特的左信息C[1]、右信息D[1],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最低56比特的左信息C[1]、右信息D[1]进行LS2循环移位,LS2循环移位的数据通过第个算术逻辑单元的逻辑计算结果放置在最高58比特,得到最高58比特的左信息C[2]、右信息D[2]。同时,而另一个第个比特置换网络对最低56比特的左信息C[1]、右信息D[1]进行PC-2移位,PC-2移位的数据通过第个算术逻辑单元的逻辑计算得到48比特的密钥K1。第个算术逻辑单元都配置为直通。最高56比特为左信息C[2]、右信息D[2],最低48比特的密钥K1通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行的第个数据载入单元从第个数据输出单元中载入最高56比特为左信息C[2]、右信息D[2],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最高56比特为左信息C[2]、右信息D[2]进行LS3循环移位,LS3循环移位的数据通过第个算术逻辑单元的逻辑计算得到左信息C[3]和右信息D[3]。第个算术逻辑单元都配置为直通。另一第个比特置换网络对最低48比特的密钥K1进行PC-2移位,PC-2移位的数据通过第个算术逻辑单元的逻辑计算得到最高48比特的密钥K2。得到左信息C[3]、右信息D[3]根据配置信息通过第个数据输出给下一个可重构阵列块运行。得到的最低48比特的密钥K1和最高48比特的密钥K2根据配置信息通过第个数据输出单元输出到通用寄存器堆中。第个算术逻辑单元都配置为直通。

步骤62:对于第(p-1)个可重构阵列块遗留下来的左信息C[i]、右信息D[i],第p个可重构阵列块中的第行可重构阵列运算行中的第个数据载入单元载入左信息C[i]、右信息D[i],通过第p个读端口运算行选择器读取配置单元的配置信息;根据配置信息通过第个比特置换网络对左信息C[i]、右信息D[i]进行LS[i+1]移位,LS[i+1]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[i+1]和右信息D[i+1];而另一个第个比特置换网络对左信息C[i]、右信息D[i]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[i];得到的左信息C[i+1]、右信息D[i+1]以及密钥K[i]通过第个数据输出单元根据配置信息发送出;第个算术逻辑单元都配置为直通。

第行可重构阵列运算行中的第个数据载入单元载入左信息C[i+1]、右信息D[i+1]以及密钥K[i];通过第p读端口运算行选择器读取配置单元的配置信息;根据配置信息通过第个比特置换网络对左信息C[i]、右信息D[i]进行LS[i+1]移位,LS[i+1]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[i+2]和右信息D[i+2];而另一个第个比特置换网络对左信息C[i+1]、右信息D[i+1]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[i+1];得到左信息C[i+2]和右信息D[i+2]根据配置信息通过第个数据输出给下一个可重构阵列块运行;得到的密钥K[i]和密钥K[i+1]根据配置信息通过第个数据输出单元输出到通用寄存器堆中;3<=i<=15,表示向下取整;重复步骤62直到i=15;第个算术逻辑单元都配置为直通。

步骤63:对于第7个可重构阵列块遗留下来的左信息C[15]、右信息D[15],第8个可重构阵列块中的第行可重构阵列运算行中的第个数据载入单元载入左信息C[15]、右信息D[15],通过第8个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[15]、右信息D[15]进行LS[16]移位,LS[16]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[16]和右信息D[16]。而另一个第个比特置换网络对左信息C[15]、右信息D[15]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[15]。得到的左信息C[16]、右信息D[16]以及密钥K[15]通过第个数据输出单元根据配置信息发送出。第个算术逻辑单元都配置为直通。

第行可重构阵列运算行中的第个数据载入单元载入左信息C[16]、右信息D[16],通过第8个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[16]、右信息D[16]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[16]。得到的密钥K[16]和密钥K[15]通过第个数据输出单元输出存入通用寄存器堆中。同时左信息C[16]、右信息D[16]通过第个数据输出单元输出到输出先进先出寄存器组中。第个算术逻辑单元都配置为直通。

有益效果:本发明提供的一种基于粗粒度可重构架构的DES算法密钥扩展系统及扩展方法,相比现有技术,具有以下有益效果:

本发明针对DES算法密钥扩展,通过将多轮迭代在可重构处理器中并行移位替换的方式进行优化和加速。通过8个可重构阵列块包含多个运算单元,借助通用寄存器堆提高DES算法的运算并行度,在具有一定灵活性的同时,提高DES方法的运算效率,尽可能的减少运算周期。

附图说明

图1为本发明的基于大规模粗粒度嵌入式可重构系统处理器框图。

图2为第一个可重构阵列块的整个密钥扩展的数据流图。

图3为中间可重构阵列块的整个密钥扩展的数据流图。

图4为最后一个可重构阵列块的整个密钥扩展的数据流图

图5为64比特的初始密钥PC-1移位的规则表。初始密钥从左往右依次为1,2…64比特位。

图6为LS[i]的移位规则,根据每一轮的轮数不同,循环左移的位数也有差别。

图7为C[i]、D[i]PC-2移位得到K[i]的比特移位规则表。

图8为DES算法密钥扩展整体流图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

一种基于粗粒度可重构架构的DES算法密钥扩展系统,如图1-8所示,包括系统总线、可重构处理器和微处理器。

如图1所示,所述可重构处理器包括1个配置单元、1个输入先进先出寄存器组、1个输出先进先出寄存器组、1个通用寄存器堆、M个可重构阵列块,所述配置单元的进线口通过系统总线与微处理器连接,且配置单元的出线口分别与可重构阵列块连接。而所述输入先进先出寄存器组通过系统总线与微处理器连接。这M个可重构阵列块分别为第1个可重构阵列块、第2个可重构阵列块、…、第m个可重构阵列块、…、第M个可重构阵列块,m=1...M,M取整数。其中第1个可重构阵列块与输入先进先出寄存器组连接,而第M个可重构阵列块与输出先进先出寄存器组连接,且这M个可重构阵列块均与通用寄存器堆连接,同时这M个可重构阵列块按顺序依次连接。这M个可重构阵列块之间通过通用寄存器堆互相进行数据的储存、读取和传递,且多个可重构阵列块中相邻的两个可重构阵列块通过其内部的数据载入单元和数据输出单元连接。所述输出先进先出寄存器组通过系统总线与微处理器连接。通过1个通用寄存器读端口运算行选择器可以选择从可重构阵列块中的指定可重构阵列运算行读取通用寄存器堆的数据,通用寄存器堆写端口可以选择数据从指定可重构阵列运算行写入寄存器堆,大大增加量数据流通的灵活性。

所述微处理器通过分析DES的特征来确定密钥扩展的运算流程,将多轮的密钥扩展运算展开成一幅数据流图映射到可重构处理器中形成配置信息发送给配置单元。微处理器通过系统总线发送明文数据给可重构处理器,明文数据将存入输入先进先出寄存器组,生成的密钥将存入输入先进先出寄存器组,并在最终计算完成后输出密文数据到输出先进先出寄存器组,并发送中断信号,最终输出先进先出寄存器组中的数据由微处理器读出。

在DES运算中可重构阵列运算行可通过通用寄存器堆读出各种缓冲数据以及各种临时的消息摘要,同时可以向通用寄存器堆写入消息摘要的每轮计算的扩展密钥,这些密钥被用于后续加密计算。

所述配置单元用于存储配置信息,并将配置信息发送给各个可重构阵列块。

第1个可重构阵列块用于获取输入先进先出寄存器组的明文数据,并根据配置信息第1个可重构阵列块对明文数据进行密钥扩展,经过密钥扩展后得到本步密钥扩展的中间信息和本步密钥。根据配置信息将本步密钥载入通用寄存器堆中,而得到的本步密钥扩展的中间信息根据配置信息载入到下一个可重构阵列块中。

对于第p个可重构阵列块,2≤p≤M-1。第p个可重构阵列块用于获取第(p-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信息,第(p-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信记为上一步得到的密钥扩展的中间信息。根据配置信息第p个可重构阵列块对上一步得到的密钥扩展的中间信息进行密钥扩展,经过密钥扩展后得到本步密钥扩展的中间信息和本步密钥。根据配置信息将本步密钥载入通用寄存器堆中,而得到的本步密钥扩展的中间信息根据配置信息载入到下一个可重构阵列块中。

对于第M个可重构阵列块,第M个可重构阵列块用于获取第(M-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信息,该第(M-1)个可重构阵列块密钥扩展得到的密钥扩展的中间信息为上一步得到的密钥扩展的中间信息,根据配置信息第M个可重构阵列块对上一步得到的密钥扩展的中间信息进行密钥扩展,经过密钥扩展后得到本步密钥扩展的中间信息和本步密钥。根据配置信息将本步密钥载入通用寄存器堆中,完成密钥扩展。

如图1所示,所述配置单元包括依次连接在一起的配置与控制接口、配置存储器和配置解析模块,且所述配置与控制接口和系统总线连接。微处理器依次通过系统总线和配置与控制接口将所需要的配置信息发送给配置存储器,所述配置存储器存储发送过来的配置信息,而配置解析模块用于解析配置存储器的配置信息,且将解析的配置信息发送给可重构阵列块,实现对可重构阵列块的配置、启动以及切换操作。

对配置单元中的配置存储器进行初始化,微处理器将所需要的配置信息通过配置与控制接口发送到配置存储器中,然后通过配置解析模块解析配置存储器,实现对计算阵列的配置、启动以及切换操作。

所述可重构阵列块包括读端口运算行选择器、写端口运算行选择器以及N行可重构阵列运算行,且这N行可重构阵列运算行共享读端口运算行选择器和写端口运算行选择器。其中,第m个可重构阵列块中的读端口运算行选择器记为第m个读端口运算行选择器,第m个可重构阵列块中的写端口运算行选择器记为第m个写端口运算行选择器,第m个可重构阵列块中的第n行可重构阵列运算行记为第行可重构阵列运算行,m=1...M,n=1...N,M为可重构阵列块的个数,N为可重构阵列块包括的可重构阵列运算行的行数,M,N取整数。且所述可重构阵列块之间按顺序依次连接,而每个可重构阵列块内部的可重构阵列运算行之间按顺序依次连接。1个可重构阵列块通过第行可重构阵列运算行的数据载入单元与输入先进先出寄存器组相连,同时第M个可重构阵列块通过第行可重构阵列运算行的数据输出单元与输出先进先出寄存器组相连。

在密钥扩展中可重构阵列块运算得到的密钥通过写端口运算行选择器存在通用寄存器堆中。

第行可重构阵列运算行与输入先进先出寄存器组相连,同时第行可重构阵列运算行与输出先进先出寄存器组相连。

第行可重构阵列运算行用于输入先进先出寄存器组中的明文数据,通过第1个读端口运算行选择器读取配置单元的配置信息。第行可重构阵列运算行根据配置信息对明文数据进行PC-1移位变换得到本步密钥扩展的中间数据。并根据配置信息将本步密钥扩展的中间数据载入第行可重构阵列运算行中。

第行可重构阵列运算行用于根据载入的上一步密钥扩展的中间数据,通过第1个读端口运算行选择器读取配置单元的配置信息。第行可重构阵列运算行根据配置信息对上一步密钥扩展的中间数据进行LS1循环移位得到本步的密钥扩展的中间数据。并根据配置信息将本步的密钥扩展的中间数据载入第行可重构阵列运算行中。

第行可重构阵列运算行用于根据载入的上一步密钥扩展的中间数据,通过第1个读端口运算行选择器读取配置单元的配置信息。第行可重构阵列运算行根据配置信息对上一步密钥扩展的中间数据进行LS2循环移位得到本步密钥扩展的中间数据。并根据配置信息将本步密钥扩展的中间数据载入第行可重构阵列运算行中。同时根据配置信息对本步密钥扩展的中间数据进行PC-2移位变换得到本步密钥。并根据配置信息将本步密钥载入通用寄存器堆中。

第行可重构阵列运算行用于根据载入的上一步密钥扩展的中间数据,通过第1个读端口运算行选择器读取配置单元的配置信息。第行可重构阵列运算行根据配置信息对上一步密钥扩展的中间数据进行LS3循环移位得到本步密钥扩展的中间数据。并根据配置信息将本步密钥扩展的中间数据载入第行可重构阵列运算行中。同时根据配置信息对上一步密钥扩展的中间数据进行PC-2移位变换得到本步密钥。并根据配置信息将本步密钥载入通用寄存器堆中。

对于第p个可重构阵列块,2≤p≤M-1。第p个可重构阵列块中的第行可重构阵列运算行用于载入第(p-1)个可重构阵列块中得到的上一步的密钥扩展的中间数据。通过第p个读端口运算行选择器读取配置单元的配置信息。根据配置信息对上一步的密钥扩展的中间数据进行LS移位得到本步的密钥扩展的中间数据。同时根据配置信息对本步的密钥扩展的中间数据进行PC-2移位得到本步的密钥。得到的本步的密钥扩展的中间数据和本步的密钥根据配置信息载入第行可重构阵列运算行中,进行下一步的密钥扩展。

第行可重构阵列运算行用于载入单元载入上一步得到的密钥扩展的中间数据和上一步得到的密钥。通过第p个读端口运算行选择器读取配置单元的配置信息。根据配置信息对上一步得到的密钥扩展的中间数据进行LS移位得到本步密钥扩展的中间数据。同时根据配置信息对上一步得到的密钥扩展的中间数据进行PC-2移位得到本步的密钥。得到的本步密钥扩展的中间数据根据配置信息载入第行可重构阵列运算行中。而得到的本步的密钥和上一步得到的密钥根据配置信息载入通用寄存器堆中。

对于第M个可重构阵列块,第M个可重构阵列块中的第行可重构阵列运算行用于载入上一步得到的密钥扩展的中间数据,第M个读端口运算行选择器读取配置单元的配置信息。根据配置信息对上一步得到的密钥扩展的中间数据进行LS移位得到本步密钥扩展的中间数据。同时根据配置信息对上一步得到的密钥扩展的中间数据进行PC-2移位得到本步的密钥。同时根据配置信息对本步的密钥扩展的中间数据进行PC-2移位得到本步的密钥。得到的本步的密钥扩展的中间数据和本步的密钥根据配置信息载入第行可重构阵列运算行中,进行下一步的密钥扩展。

第行可重构阵列运算行用于载入上一步得到的密钥扩展的中间数据和上一步得到的密钥,通过第M个读端口运算行选择器读取配置单元的配置信息。根据配置信息对上一步得到的密钥扩展的中间数据进行PC-2移位得到本步的密钥。得到的上一步得到的密钥和本步的密钥通过第M个写端口运算行选择器载入通用寄存器堆中。同时上一步得到的密钥扩展的中间数据通过第M个写端口运算行选择器输出到输出先进先出寄存器组中。

每行可重构阵列运算行均包括X1个数据载入单元、X2个数据输出单元、X3个字节置换网络、X4个比特置换网络和X5个8位算术逻辑单元,X5为16个,字节置换网络与比特置换网络组成置换网络,字节置换网络与比特置换网络的输出X5个8位的数据分别固定对应于X5个8位算术逻辑单元。数据经过数据载入单元,由选择器通过读取并解析不同的配置信息来选择数据流入的字节置换网络和比特置换网络;字节置换网络与比特置换网络的输出分为X5个8位的数据分别固定对应于X5个8位算术逻辑单元;每个算术逻辑单元使用数据选择器选择任意三个置换网络的输出作为其输入;字节置换网络与比特置换网络的128位的输出分为16个8位的数据分别固定对应于16个8位算术逻辑单元,一次性可以运算4组DES数据;每个算术逻辑单元可以使用数据选择器选择其中三个置换网络的输出作为其输入;数据输出单元暂存算术逻辑单元的结果并读取配置信息决定将数据输出到先进先出寄存器组、下一个可重构阵列运算行或通用寄存器堆。第m个可重构阵列块第n行可重构阵列运算行的第k1个数据载入单元记为第个数据载入单元,第m个可重构阵列块第n行可重构阵列运算行的第k2个数据输出单元记为第个数据输出单元,第m个可重构阵列块第n行可重构阵列运算行的第k3个字节置换网络记为第个字节置换网络,第m个可重构阵列块第n行可重构阵列运算行的第k4个比特置换网络记为第个比特置换网络,第m个可重构阵列块第n行可重构阵列运算行的第k1个数据载入单元记为第个算术逻辑单元,k1=1...X1,k2=1...X2,k3=1...X3,k4=1...X4,k5=1...X5,X1,X2,X3,X4和X5均取整数。第m个读端口运算行选择器读取的上一步的中间数据以及接收解析配置解析模块的配置信息来选择中间数据流入的字节置换网络和比特置换网络。

每个可重构阵列运算行中具有2个数据载入单元、2个数据输入单元、2个算术运算单元、2个字节置换网络和2个比特置换网络,用于充当各可重构阵列运算行算术运算单元之间的数据互联。其中数据载入单元可以选择该可重构阵列运算行的数据来源,可选的数据来源为上一个可重构阵列运算行的数据输出单元、输入先进先出寄存器组以及通用寄存器堆。数据输出单元可以选择该可重构阵列运算行的数据输出方向,可选的数据输出为通用寄存器堆、输出先进先出寄存器组以及输出先进先出寄存器组。同时,只有第一个可重构阵列块的第一个可重构阵列运算行可以选择输入为输入先进先出寄存器组,最后一个可重构阵列块的最后一个可重构阵列运算行可以选择输出先进先出寄存器组。算术逻辑单元与比特置换网络承担了DES算法密钥扩展中的所有运算操作。其中比特置换网络用于数据的循环移位和算术移位。算术逻辑单元承担了DES中的模加、异或、非、同或等运算操作。

第行可重构阵列运算行中的第个数据载入单元用于载入输入先进先出寄存器组中的明文数据。通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对初始64比特的密钥实现PC-1移位变换,移位后的数据通过第个算术逻辑单元的逻辑计算得到最低56比特的初始左信息C[0]、初始右信息D[0]。最低56比特的初始左信息C[0]、初始右信息D[0]通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行中的第个数据载入单元用于从第个数据输出单元中载入最低56比特的初始左信息C[0]、初始右信息D[0],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最低56比特的初始左信息C[0]、初始右信息D[0]进行LS1循环移位,得到的LS1循环移位的数据通过第个算术逻辑单元的逻辑计算得到最低56比特的左信息C[1]、右信息D[1],最低56比特的左信息C[1]、右信息D[1]通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行的第个数据载入单元用于从第个数据输出单元中载入最低56比特的左信息C[1]、右信息D[1],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最低56比特的左信息C[1]、右信息D[1]进行LS2循环移位,LS2循环移位的数据通过第个算术逻辑单元的逻辑计算结果放置在最高58比特,得到最高58比特的左信息C[2]、右信息D[2]。同时,而另一个第个比特置换网络对最低56比特的左信息C[1]、右信息D[1]进行PC-2移位,PC-2移位的数据通过第个算术逻辑单元的逻辑计算得到48比特的密钥K1。最高56比特为左信息C[2]、右信息D[2],最低48比特的密钥K1通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行的第个数据载入单元用于从第个数据输出单元中载入最高56比特为左信息C[2]、右信息D[2],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最高56比特为左信息C[2]、右信息D[2]进行LS3循环移位,LS3循环移位的数据通过第个算术逻辑单元的逻辑计算得到左信息C[3]和右信息D[3]。第个算术逻辑单元都配置为直通。另一第个比特置换网络对最低48比特的密钥K1进行PC-2移位,PC-2移位的数据通过第个算术逻辑单元的逻辑计算得到最高48比特的密钥K2。得到左信息C[3]、右信息D[3]根据配置信息通过第个数据输出给下一个可重构阵列块运行。得到的最低48比特的密钥K1和最高48比特的密钥K2根据配置信息通过第个数据输出单元输出到通用寄存器堆中。

对于第p个可重构阵列块,2≤p≤M-1。第(p-1)个可重构阵列块遗留下来的左信息C[i]、右信息D[i],第p个可重构阵列块中的第行可重构阵列运算行中的第个数据载入单元用于载入左信息C[i]、右信息D[i],通过第p个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[i]、右信息D[i]进行LS[i+1]移位,LS[i+1]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[i+1]和右信息D[i+1]。而另一个第个比特置换网络对左信息C[i]、右信息D[i]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[i]。得到的左信息C[i+1]、右信息D[i+1]以及密钥K[i]通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行中的第个数据载入单元用于载入左信息C[i+1]、右信息D[i+1]以及密钥K[i]。通过第p个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[i]、右信息D[i]进行LS[i+1]移位,LS[i+1]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[i+2]和右信息D[i+2]。而另一个第个比特置换网络对左信息C[i+1]、右信息D[i+1]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[i+1]。得到左信息C[i+2]和右信息D[i+2]根据配置信息通过第个数据输出给下一个可重构阵列块运行。得到的密钥K[i]和密钥K[i+1]根据配置信息通过第个数据输出单元输出到通用寄存器堆中。3<=i<=15,表示向下取整。重复步骤62直到i=15。

对于第8个可重构阵列块,第7个可重构阵列块遗留下来的左信息C[15]、右信息D[15],第8个可重构阵列块中的第行可重构阵列运算行中的第个数据载入单元用于载入左信息C[15]、右信息D[15],通过第8个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[15]、右信息D[15]进行LS[16]移位,LS[16]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[16]和右信息D[16]。而另一个第个比特置换网络对左信息C[15]、右信息D[15]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[15]。得到的左信息C[16]、右信息D[16]以及密钥K[15]通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行中的第个数据载入单元用于载入左信息C[16]、右信息D[16],通过第8个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[16]、右信息D[16]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[16]。得到的密钥K[16]和密钥K[15]通过第个数据输出单元输出存入通用寄存器堆中。同时左信息C[16]、右信息D[16]通过第个数据输出单元输出到输出先进先出寄存器组中。

所述算术逻辑单元中包括模加运算、异或运算、与运算、与非运算、直通输出、3输入异或加、3输入异或同或加运算运算操作。同时每个算术逻辑单元有最多3个输入和最多2个输出,其中算术逻辑单元执行上述运算操作的同时,支持任选一个输入作为输出。由于DES方法中全部为32位运算,因此每4个8位的算术逻辑单元通过进位端口连接成为1个32位的算术逻辑单元。

所述可重构阵列块的个数为8个,通用寄存器堆的个数为1个,输入先进先出寄存器组的个数为1个,输出先进先出寄存器组的个数为1个。

每个可重构阵列块包括4行可重构阵列运算行、1个读端口运算行选择器和1个写端口运算行选择器。

每行可重构阵列运算行包括2个数据载入单元、2个数据输入单元、16个8位算术运算单元、2个字节置换网络和2个比特置换网络。

一种基于粗粒度可重构架构的DES算法密钥扩展方法,该方法基于DES方法,需要将其转化为数据流图,并制定DES方法的数据输入方式,然后根据数据流图和数据输入方式对应特定的可重构系统处理器生成相应的配置信息,通过配置可重构阵列块将DES映射到该阵列上,由此实现DES方法,具体包括以下步骤:

步骤1,分析DES算法密钥扩展的计算特点,并归纳出数据流图。

DES算法的初始密钥为64比特的数据块,DES算法总共需要实行16轮轮迭代,每轮轮迭代所使用的密钥各不相同,由初始密钥经过PC-1移位,LS移位和PC-2移位等操作生成16个子密钥。为了节省通用寄存器堆的空间和提高可重构阵列资源利用率,利用每个可重构阵列块生成两个子密钥,两个子密钥分为高低48比特存入通用寄存器堆

步骤2,根据数据流图中的运算流程,制定DES的数据输入方式。

步骤3,根据步骤2确定的数据输入方式以及步骤2确定的数据流图针对可重构处理器的特点,在了解其各寄存器、运算器以及各功能模块的作用机制的情况下配置可重构处理器,并生成配置信息。

步骤4,通过微处理器将配置信息以及可重构处理器初始数据存入相应的存储器中。

其中配置信息为上述步骤所生成的配置信息,初始数据为k[i]缓冲区数据等各种常量。

步骤5,微处理器启动可重构处理器,并将配置信息及待处理数据发送给可重构处理器。

步骤6,可重构处理器根据配置信息及待处理数据进行数据处理,当可重构处理器完成当前任务后,发送中断信号。并将处理好的数据通过通过系统总线发送给微处理器。

如图8所示,步骤6中可重构处理器根据配置信息及待处理数据进行数据处理的方法:

步骤61:如图2、5所示,第行可重构阵列运算行中的第个数据载入单元从输入先进先出寄存器组中载入初始64比特的密钥。通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对初始64比特的密钥实现PC-1移位变换,移位后的数据通过第个算术逻辑单元的逻辑计算得到最低56比特的初始左信息C[0]、初始右信息D[0],字节置换网络与比特置换网络用于控制数据的流向,从而为算术逻辑单元输出合适的操作数,第个算术逻辑单元都配置为直通,最低56比特的初始左信息C[0]、初始右信息D[0]通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行中的第个数据载入单元从第个数据输出单元中载入最低56比特的初始左信息C[0]、初始右信息D[0],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最低56比特的初始左信息C[0]、初始右信息D[0]进行LS1循环移位,得到的LS1循环移位的数据通过第个算术逻辑单元的逻辑计算得到最低56比特的左信息C[1]、右信息D[1],最低56比特的左信息C[1]、右信息D[1]通过第个数据输出单元根据配置信息发送出,第个算术逻辑单元都配置为直通。

第行可重构阵列运算行的第个数据载入单元从第个数据输出单元中载入最低56比特的左信息C[1]、右信息D[1],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最低56比特的左信息C[1]、右信息D[1]进行LS2循环移位,LS2循环移位的数据通过第个算术逻辑单元的逻辑计算结果放置在最高58比特,得到最高58比特的左信息C[2]、右信息D[2]。同时,而另一个第个比特置换网络对最低56比特的左信息C[1]、右信息D[1]进行PC-2移位,PC-2移位的数据通过第个算术逻辑单元的逻辑计算得到48比特的密钥K1。第个算术逻辑单元都配置为直通。最高56比特为左信息C[2]、右信息D[2],最低48比特的密钥K1通过第个数据输出单元根据配置信息发送出。

第行可重构阵列运算行的第个数据载入单元从第个数据输出单元中载入最高56比特为左信息C[2]、右信息D[2],通过第1个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对最高56比特为左信息C[2]、右信息D[2]进行LS3循环移位,LS3循环移位的数据通过第个算术逻辑单元的逻辑计算得到左信息C[3]和右信息D[3]。第个算术逻辑单元都配置为直通。另一第个比特置换网络对最低48比特的密钥K1进行PC-2移位,PC-2移位的数据通过第个算术逻辑单元的逻辑计算得到最高48比特的密钥K2。得到左信息C[3]、右信息D[3]根据配置信息通过第个数据输出给下一个可重构阵列块运行。得到的最低48比特的密钥K1和最高48比特的密钥K2根据配置信息通过第个数据输出单元输出到通用寄存器堆中。第个算术逻辑单元都配置为直通。

步骤62:如图3、6、7所示,对于第(p-1)个可重构阵列块遗留下来的左信息C[i]、右信息D[i],第p个可重构阵列块中的第行可重构阵列运算行中的第个数据载入单元载入左信息C[i]、右信息D[i],通过第p个读端口运算行选择器读取配置单元的配置信息;根据配置信息通过第个比特置换网络对左信息C[i]、右信息D[i]进行LS[i+1]移位,LS[i+1]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[i+1]和右信息D[i+1];而另一个第个比特置换网络对左信息C[i]、右信息D[i]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[i];得到的左信息C[i+1]、右信息D[i+1]以及密钥K[i]通过第个数据输出单元根据配置信息发送出;第个算术逻辑单元都配置为直通。

第行可重构阵列运算行中的第个数据载入单元载入左信息C[i+1]、右信息D[i+1]以及密钥K[i];通过第p读端口运算行选择器读取配置单元的配置信息;根据配置信息通过第个比特置换网络对左信息C[i]、右信息D[i]进行LS[i+1]移位,LS[i+1]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[i+2]和右信息D[i+2];而另一个第个比特置换网络对左信息C[i+1]、右信息D[i+1]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[i+1];得到左信息C[i+2]和右信息D[i+2]根据配置信息通过第个数据输出给下一个可重构阵列块运行;得到的密钥K[i]和密钥K[i+1]根据配置信息通过第个数据输出单元输出到通用寄存器堆中;3<=i<=15,表示向下取整;重复步骤62直到i=15;第个算术逻辑单元都配置为直通。

步骤63:如图4所示,对于第7个可重构阵列块遗留下来的左信息C[15]、右信息D[15],第8个可重构阵列块中的第行可重构阵列运算行中的第个数据载入单元载入左信息C[15]、右信息D[15],通过第8个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[15]、右信息D[15]进行LS[16]移位,LS[16]移位得到的数据通过第个算术逻辑单元的逻辑计算得到左信息C[16]和右信息D[16]。而另一个第个比特置换网络对左信息C[15]、右信息D[15]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[15]。得到的左信息C[16]、右信息D[16]以及密钥K[15]通过第个数据输出单元根据配置信息发送出。第个算术逻辑单元都配置为直通。

第行可重构阵列运算行中的第个数据载入单元载入左信息C[16]、右信息D[16],通过第8个读端口运算行选择器读取配置单元的配置信息。根据配置信息通过第个比特置换网络对左信息C[16]、右信息D[16]进行PC-2移位,PC-2移位得到的数据通过第个算术逻辑单元的逻辑计算得到密钥K[16]。得到的密钥K[16]和密钥K[15]通过第个数据输出单元输出存入通用寄存器堆中。同时左信息C[16]、右信息D[16]通过第个数据输出单元输出到输出先进先出寄存器组中。第个算术逻辑单元都配置为直通。

以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1