发明内容
有鉴于此,本发明的主要目的是提供一种实现加密、解密的方法和装置,以实现数据吞吐率和占用硬件资源最优折中的加密、解密算法。
为实现上述目的,本发明提供如下技术方案:
本发明提供了一种实现加密的方法,采用多级流水线对接收的待加密数据进行多级加密处理,其中:
接收待加密数据的当前流水线,根据当前流水线的级数对所述数据进行包括至少一轮加密处理在内的对应处理,并将处理后的数据作为下一级流水线的待加密数据输出,直至最后一级流水线进行对应处理完毕;其中,各级流水线进行所述对应处理的总时长相等并且各级流水线执行的所述加密处理的总轮数之和为数据加密需执行的总轮数。
优选地,
当前流水线为第一级流水线时,包括至少一轮加密处理在内的对应处理包括:顺序执行的第一处理和n轮加密处理。
当前流水线为第一级和最后一级流水线除外的中间级时,包括至少一轮加密处理在内的对应处理包括:顺序执行的n+1轮加密处理。
当前流水线为最后一级时,包括至少一轮加密处理在内的对应处理包括:顺序执行的n轮加密处理和第二处理。
其中,所述第一处理为读取明文数据,所述第二处理为存储处理后的数据,所述第一处理、第二处理与一轮所述加密处理的处理时间相同。
优选地,
所述根据当前流水线的级数对所述数据进行包括至少一轮加密处理在内的对应处理之后进一步包括:将对应处理后的数据存入寄存器。
优选地,
采用多级流水线对接收的待解密数据进行多级解密处理,其中:
接收待解密数据的当前流水线,对所述数据进行包括至少一轮解密处理在内的处理,并将处理后的数据作为下一级流水线的待解密数据输出,直至最后一级流水线进行对应处理完毕;其中,各级流水线进行所述处理的总时长相等并且各级流水线执行的所述解密处理的总轮数之和为数据解密需执行的总轮数。
优选地,
当前流水线为第一级流水线时,包括至少一轮解密处理在内的对应处理包括:顺序执行的第一处理和n轮解密处理。
当前流水线为第一级和最后一级流水线除外的中间级时,包括至少一轮解密处理在内的对应处理包括:顺序执行的n+1轮解密处理。
当前流水线为最后一级时,包括至少一轮解密处理在内的对应处理包括:顺序执行的n轮解密处理和第二处理。
其中,所述第一处理为读取密文数据,所述第二处理为存储处理后的数据,所述第一处理、第二处理与一轮所述解密处理的处理时间相同。
优选地,
所述根据当前流水线的级数对所述数据进行包括至少一轮解密处理在内的对应处理之后进一步包括:将对应处理后的数据存入寄存器。
本发明还提供了一种实现加密的装置,该装置由多级流水线构成。
所述多级流水线的任一级流水线包括:控制单元、二选一选择器、寄存器以及加密处理单元;所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线中的控制单元用于发送第一控制信号至当前流水线的二选一选择器,在加密处理单元执行相应的加密处理后判断当前流水线对待加密数据已执行的加密处理的轮数是否达到所述当前流水线对应处理中需执行的加密处理的轮数,如果否,发送第二控制信号至当前流水线的寄存器和发送第三控制信号至所述二选一选择器,如果是,发送第四控制信号至当前流水线的寄存器。
所述第一控制信号控制二选一选择器选择该选择器的第一输入端的数据作为输入数据并且输出端输出该输入数据至所述加密处理单元,第二控制信号控制所述寄存器发送保存的数据至二选一选择器的第二输入端,所述第三控制信号控制二选一选择器选择第二输入端的数据作为输入数据并且输出端输出该输入数据至当前流水线的加密处理单元,第四控制信号控制所述寄存器发送保存的数据至下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待加密数据。
所述二选一选择器用于接收到第一控制信号时选择第一输入端的数据作为输入数据,接收到第三控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至加密处理单元。
所述加密处理单元用于对接收到的数据执行相应的加密处理,并将处理后的数据发送至所述寄存器保存。
所述寄存器用于保存所述加密处理单元处理后的数据,以及接收到第三控制信号时发送保存的数据至二选一选择器的第二输入端,接收到第四控制信号时发送保存的数据至下一级流水线中的二选一选择器的第一输入端并将其作为下一级流水线的待加密数据。
优选地,所述装置进一步包括第一存储器和第二存储器。
第一级流水线的控制单元进一步用于控制第一存储器将第一存储器中存储到明文数据作为待加密数据发送至第一级流水线。
最后一级流水线的控制单元进一步用于加密处理完毕时将处理后的数据存入第二存储器。
本发明还提供了一种实现加密的装置,该装置由多级流水线构成;
多级流水线的任一级流水线包括:控制单元、二选一选择器、寄存器以及加密处理单元;所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线的控制单元用于发送第五控制信号至当前流水线的二选一选择器,在加密处理单元执行相应的加密处理后判断当前流水线对待加密数据已执行的加密处理的轮数是否达到所述当前流水线对应处理中需执行的加密处理的轮数,如果否,发送第六控制信号至当前流水线的二选一选择器和发送第七控制信号至当前流水线的加密处理单元,如果是,发送第八控制信号至当前流水线的加密处理单元。
所述第五控制信号控制所述二选一选择器将第一输入端接收的数据输出至所述寄存器,所述第六控制信号控制所述二选一选择器将第二输入端接收的数据输出至所述寄存器,所述第七控制信号控制加密处理单元将处理之后的数据输出到所述二选一选择器的第二输入端,所述第八控制信号控制加密处理单元将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待加密数据。
所述二选一选择器用于接收到第五控制信号时选择第一输入端的数据作为输入数据,接收到第六控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至寄存器。
所述寄存器用于保存所述二选一选择器的输出数据并且将保存的数据输出到加密处理单元。
所述加密处理单元用于对接收到的数据执行相应的加密处理,并且接收到第七控制信号时将处理之后的数据输出到所述二选一选择器的第二输入端,接收到第八控制信号时将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待加密数据。
本发明还提供了一种实现解密的装置,该装置由多级流水线构成。
所述多级流水线的任一级流水线包括:控制单元、二选一选择器、寄存器以及解密处理单元;所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线中的控制单元用于发送第一控制信号至当前流水线的二选一选择器,在解密处理单元执行相应的解密处理后判断当前流水线对待解密数据已执行的解密处理的轮数是否达到所述当前流水线对应处理中需执行的解密处理的轮数,如果否,发送第二控制信号至当前流水线的寄存器和发送第三控制信号至所述二选一选择器,如果是,发送第四控制信号至当前流水线的寄存器。
所述第一控制信号控制二选一选择器选择该选择器的第一输入端的数据作为输入数据并且输出端输出该输入数据至所述解密处理单元,第二控制信号控制所述寄存器发送保存的数据至二选一选择器的第二输入端,所述第三控制信号控制二选一选择器选择第二输入端的数据作为输入数据并且输出端输出该输入数据至当前流水线的解密处理单元,第四控制信号控制所述寄存器发送保存的数据至下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待解密数据。
所述二选一选择器用于接收到第一控制信号时选择第一输入端的数据作为输入数据,接收到第三控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至解密处理单元。
所述解密处理单元用于对接收到的数据执行相应的解密处理,并将处理后的数据发送至所述寄存器保存。
所述寄存器用于保存解密处理单元处理后的数据,以及接收到第三控制信号时发送保存的数据至二选一选择器的第二输入端,接收到第四控制信号时发送保存的数据至下一级流水线中的二选一选择器的第一输入端并将其作为下一级流水线的待解密数据。
优选地,所述装置进一步包括第一存储器和第二存储器。
第一级流水线的控制单元进一步用于控制第一存储器将第一存储器中存储到密文数据作为待解密数据发送至第一级流水线。
最后一级流水线的控制单元进一步用于解密处理完毕时将处理后的数据存入第二存储器。
本发明还提供了一种实现解密的装置,该装置由多级流水线构成。
多级流水线的任一级流水线包括:控制单元、二选一选择器、寄存器以及解密处理单元;所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线的控制单元用于发送第五控制信号至当前流水线的二选一选择器,在解密处理单元执行相应的解密处理后判断当前流水线对待解密数据已执行的解密处理的轮数是否达到所述当前流水线对应处理中需执行的解密处理的轮数,如果否,发送第六控制信号至当前流水线的二选一选择器和发送第七控制信号至当前流水线的解密处理单元,如果是,发送第八控制信号至当前流水线的解密处理单元。
所述第五控制信号控制所述二选一选择器将第一输入端接收的数据输出至所述寄存器,所述第六控制信号控制所述二选一选择器将第二输入端接收的数据输出至所述寄存器,所述第七控制信号控制解密处理单元将处理之后的数据输出到所述二选一选择器的第二输入端,所述第八控制信号控制解密处理单元将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待解密数据。
所述二选一选择器用于接收到第五控制信号时选择第一输入端的数据作为输入数据,接收到第六控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至寄存器。
所述寄存器用于保存所述二选一选择器的输出数据并且将保存的数据输出到解密处理单元。
所述解密处理单元用于对接收到的数据执行相应的解密处理,并且接收到第七控制信号时将处理之后的数据输出到所述二选一选择器的第二输入端,接收到第八控制信号时将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待解密数据。
经由上述的技术方案可知,本发明的方法采用了流水线的方式,并且通过对各级流水线进行所述对应处理的总时长相等,保证了实现的加密、解密方法既不会使得数据吞吐率过低,也不会占用过多的硬件资源,因此得到了较高的数据吞吐率和占用硬件资源之比,实现了数据吞吐率和占用硬件资源的最优折中。
具体实施方式
本发明提供的一种实现加密的方法为采用多级流水线对接收的待加密数据进行多级加密处理,其中:
接收待加密数据的当前流水线,根据当前流水线的级数对所述数据进行包括至少一轮加密处理在内的对应处理,并将处理后的数据作为下一级流水线的待加密数据输出,直至最后一级流水线进行对应处理完毕;其中,各级流水线进行所述对应处理的总时长相等并且各级流水线执行的所述加密处理的总轮数之和为数据加密需执行的总轮数。
所述将处理后的数据作为下一级流水线的待加密数据输出之后可以进一步包括:接收新一轮的待加密的数据。这样该级流水线在完成了当前的处理后可以接收下一轮的数据并对该数据进行相应的处理,保证了该方法较高的数据吞吐率。
所述当前流水线为第一级流水线,所述根据当前流水线的级数对所述数据进行包括至少一轮加密处理在内的对应处理之前可以进一步包括:判断所述第一级流水线是否空闲,如果是,则执行所述对所述数据进行包括至少一轮加密处理在内的与第一级对应的处理,如果否,等待所述第一级流水线直至所述第一级流水线空闲,执行所述对所述数据进行包括加密处理在内的与第一级对应的处理。
根据当前流水线的级数对所述数据进行包括至少一轮加密处理在内的对应处理之后可以进一步包括:将对应处理后的数据存入寄存器。
下面介绍一种保证各轮对应处理的总时长相等的方案:
当前流水线为第一级流水线时,所述包括至少一轮加密处理在内的对应处理包括:顺序执行的第一处理和n轮加密处理。
当前流水线为第一级和最后一级流水线除外的中间级时,所述包括至少一轮加密处理在内的对应处理包括:顺序执行的n+1轮加密处理。
当前流水线为最后一级时,所述包括至少一轮加密处理在内的对应处理包括:顺序执行的n轮加密处理和第二处理。
其中,所述第一处理、第二处理与一轮所述加密处理的处理时间相同。
第一处理可以为读取明文数据,第二处理可以为存储处理后的数据。
AES算法是继DES和3DES之后又一种被NIST推荐使用的分组加密算法。
AES算法在Rijndael算法可变数据分组长度和可变密钥长度的基础上,将数据分组长度固定为128位,并且仅支持128位、196位和256位长度的密钥。当密钥长度分别为128位、192位和256位时,加/解密处理总轮数分别为10轮、12轮和14轮。
AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个字节)。请参阅图1,AES加密过程中,输入为Plaintext(明文),输出为Ciphertext(密文),各轮AES加密处理(除最后一轮外)均包含4个步骤:
S101:AddRound key操作,矩阵中的每一个字节都与该次round key(回合金钥)做异或运算;每个子密钥由密钥生成方案产生。
S102:SubBytes操作,具体是透过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
S103:ShiftRows操作,具体是将矩阵中的每个横列进行循环式移位。
S104:MixColumns操作,具体是为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每行内的四个字节。
最后一轮加密处理只包括AddRound key、SubBytes以及ShiftRows操作。
图2为与图1对应的解密过程,输入为密文,输出为明文。
图3为实现本发明加密方法的具体实施例,采用的是AES加密算法,密钥长度为128位,因此加密处理需要执行的总轮数为10轮,并且采用了4级流水线。该实施例的具体步骤包括:
S301:第一级流水线从第一存储器中读取明文数据,对该明文数据执行第一和第二轮加密处理,其中每一轮的加密处理均包括Add round Key操作、SubBytes操作、ShiftRows操作以及MixColumns操作。并将处理后的数据输出给第二级流水线,并作为第二级流水线的待加密数据。
为保证本发明方法具有较高的数据吞吐率,各级流水线在处理过程中的总时长相同。这里设定完成一次处理的时间均为T,在这个具体实施例S301中处理包括加密处理以及第一级流水线从第一存储器中读取明文数据。因此在S301中一轮加密处理的时间为T,并且从第一存储器读取明文数据的时间也为T。可以看出,第一级流水线执行的总时长为3T,加密处理的总轮数为2。
在其他具体实施例中处理的方式不加限定,可以为空操作,也可以为对加密系统进行初始化。这里,该时间T不小于每一次处理的实际操作的时间,在本实施例S301中该时间T不小于每一轮的实际加密处理时间,且不小于第一级流水线从第一存储器中实际读取明文数据的时间。如果在一次处理中已完成了实际操作的时间而未到达时间T时,则进行等待直至到达时间T时才执行下一次处理。
第一级流水线执行完此轮对应的处理后,接收新的一轮的待加密数据,并对新一轮的待加密数据执行以上相同的步骤。如果第一级流水线还未执行完此轮对应的处理就接收到了新一轮的待加密数据,则需要等待直至第一级流水线执行完此轮对应的处理,也就是第一级流水线空闲,此时执行对新一轮待加密数据的处理。当然在其他实施例中第一级流水线也可以相隔大于T的时间接收明文数据,并不影响本发明的实现。
S302:第二级流水线接收到待加密数据后,对该待加密数据执行第三、第四以及第五轮加密处理。并将处理后的数据作为第三级流水线的待加密数据输出给第三级流水线。该步骤中执行了三轮加密处理,并且执行的总时长为3T。执行完此轮对应的处理后,接收新一轮的待加密数据,并对新一轮的待加密数据执行以上相同的步骤。
S303:第三级流水线接收到待加密数据后,对该待加密数据执行第六、第七以及第八轮加密处理。并将处理后的数据作为第四级流水线的待加密数据输出给第四级流水线。该步骤中执行了三轮加密处理,并且执行的总时长为3T。执行完此轮对应的处理后,接收新一轮的待加密数据,并对新一轮的待加密数据执行以上相同的步骤。
S304:第四级流水线接收到待加密数据后,对该加密数据执行第九和第十轮加密处理,其中第十轮加密处理与其他九轮的加密处理相比,不执行MixColumn s操作。将第十轮加密处理后的密文数据存入第二存储器。这里时间T不小于实际存入第二存储器所需的时间。该步骤中执行了二轮加密处理,并且执行的总时长为3T。执行完此轮对应的处理后,接收新一轮的待加密数据,并对新一轮的待加密数据执行以上相同的步骤。
可以从该具体实施例看出,第一级至第四级流水线执行的加密处理轮数之和为10,与数据加密需执行的总轮数相同,且每一级流水线执行的总时长均为3T。通过该具体实施例所述的加密方法,数据加密的最短周期为3T。也就是说如果第一级流水线以不小于3T的时间为周期从第一存储器读取明文数据,则第四级流水线以3T为周期向第二存储器存储密文数据。
该实施例中第一级流水线和第四级流水线执行的加密处理的轮数均比第二级流水线和第三级流水线加密处理的轮数小1,因此在加密开始时的取数过程或者初始化过程和加密完毕时的存储过程不会造成流水线额外的等待时间。在其他实施例中为了保证流水线不会出现额外的等待时间,可以将第一级和最后一级流水线执行的加密处理轮数比第一和最后一级除外的中间级的加密处理轮数小1。此时如果流水线的级数为S,需执行的加密处理的总轮数为R,除第一级和最后一级外的中间级流水线执行的加密处理轮数均为N,则第一级和最后一级执行的加密处理轮数为N-1,此时满足公式N×S-2=R。
在该实施例中密钥长度为128,加密处理总轮数为10轮。下面介绍密钥长度分别为128、192、256时,每一级流水线需要执行的加密处理的轮数。
表1为密钥长度为128,加密处理总轮数为10轮时,3、4以及6级流水线中每一级流水线需要执行的加密处理的轮数。图4为密钥长度为128,4级流水线时每一级流水线的加密流程时空图。
表1
表2为密钥长度为192,加密处理总轮数为12轮时,4级和7级流水线中每一级流水线需要执行的加密处理的轮数。图5为密钥长度为192,4级流水线时每一级流水线的加密流程时空图。
表2
表3为密钥长度为256,加密处理总轮数为14轮时,4级以及8级流水线中每一级流水线需要执行的加密处理的轮数。图6为密钥长度为256,4级流水线时每一级流水线的加密流程时空图。
表3
本发明还提供的一种实现解密的方法为采用多级流水线对接收的待解密数据进行多级解密处理,其中:
接收待解密数据的当前流水线,根据当前流水线的级数对所述数据进行包括至少一轮解密处理在内的对应处理,并将处理后的数据作为下一级流水线的待解密数据输出,直至最后一级流水线进行对应处理完毕;其中,各级流水线进行所述对应处理的总时长相等并且各级流水线执行的所述解密处理的总轮数之和为数据解密需执行的总轮数。
所述将处理后的数据作为下一级流水线的待解密数据输出之后可以进一步包括:接收新一轮的待解密的数据。这样流水线在完成了当前的处理后可以接收下一轮的数据并对该数据进行相应的处理,保证了该方法较高的数据吞吐率。
所述当前流水线为第一级流水线,所述根据当前流水线的级数对所述数据进行包括至少一轮解密处理在内的对应处理之前可以进一步包括:判断所述第一级流水线是否空闲,如果是,则执行所述对所述数据进行包括至少一轮解密处理在内的与第一级对应的处理,如果否,等待所述第一级流水线直至所述第一级流水线空闲,执行所述对所述数据进行包括解密处理在内的与第一级对应的处理。
下面介绍一种保证各轮对应处理的总时长相等的方案:
当前流水线为第一级流水线时,所述包括至少一轮解密处理在内的对应处理包括:顺序执行的第一处理和n轮解密处理。
当前流水线为第一级和最后一级流水线除外的中间级时,所述包括至少一轮解密处理在内的对应处理包括:顺序执行的n+1轮解密处理。
当前流水线为最后一级时,所述包括至少一轮解密处理在内的对应处理包括:顺序执行的n轮解密处理和第二处理。
其中,所述第一处理、第二处理与一轮所述解密处理的处理时间相同。
第一处理可以为读取密文数据,第二处理可以为存储处理后的数据。
根据当前流水线的级数对所述数据进行包括至少一轮解密处理在内的对应处理之后可以进一步包括:将对应处理后的数据存入寄存器。
该解密的步骤与加密相对应。并且对于与加密对应的解密的方法,采用的流水线级数和流水线每一级解密处理的轮数可以与加密的方法一致。
本发明还提供了一种实现加密的装置。所述装置包括多级流水线。
所述多级流水线中的当前流水线用于接收待加密数据,根据该级流水线的级数对所述数据进行包括至少一轮加密处理在内的对应处理,并将处理后的数据作为下一级流水线的待加密数据输出,直至最后一级流水线进行对应处理完毕。
其中,各级流水线进行所述对应处理的总时长相等并且各级流水线执行的所述加密处理的总轮数之和为数据加密需执行的总轮数。
所述多级流水线将处理后的数据作为下一级流水线的待加密数据输出之后可以进一步用于接收新一轮的待加密数据。
本发明还提供了一种实现加密的装置。所述装置包括多级流水线。所述多级流水线的任一级流水线包括:控制单元、二选一选择器、寄存器以及加密处理单元,所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线中的控制单元用于发送第一控制信号至当前流水线的二选一选择器,在加密处理单元执行相应的加密处理后判断当前流水线对待加密数据已执行的加密处理的轮数是否达到所述当前流水线对应处理中需执行的加密处理的轮数,如果否,发送第二控制信号至当前流水线的寄存器和发送第三控制信号至所述二选一选择器,如果是,发送第四控制信号至当前流水线的寄存器。
所述第一控制信号控制二选一选择器选择该选择器的第一输入端的数据作为输入数据并且输出端输出该输入数据至所述加密处理单元,第二控制信号控制所述寄存器发送保存的数据至二选一选择器的第二输入端,所述第三控制信号控制二选一选择器选择第二输入端的数据作为输入数据并且输出端输出该输入数据至当前流水线的加密处理单元,第四控制信号控制所述寄存器发送保存的数据至下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待加密数据。
所述二选一选择器用于接收到第一控制信号时选择第一输入端的数据作为输入数据,接收到第三控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至加密处理单元。
所述加密处理单元用于对接收到的数据执行相应的加密处理,并将处理后的数据发送至所述寄存器保存。
所述寄存器用于保存加密处理单元处理后的数据,以及接收到第三控制信号时发送保存的数据至二选一选择器的第二输入端,接收到第四控制信号时发送保存的数据至下一级流水线中的二选一选择器的第一输入端并将其作为下一级流水线的待加密数据。
其中将待加密的明文数据发送至第一级流水线中的二选一选择器的第一输入端。
所述装置可以进一步包括第一存储器和第二存储器,
第一级流水线的控制单元进一步用于控制第一存储器将第一存储器中存储到明文数据作为待加密数据发送至第一级流水线。
最后一级流水线的控制单元进一步用于加密处理完毕时将处理后的数据存入第二存储器。
最后一级流水线的控制单元进一步用于加密处理完毕时将处理后的数据存入第二存储器。
图7为实现本发明加密装置的具体实施例,采用的是AES加密算法,密钥长度为128位,因此加密处理需要执行的总轮数为10轮。该装置包括第一级流水线701、第二级流水线702、第三级流水线703、第四级流水线704、第一存储器705以及第二存储器706。
其中第一级流水线701包括二选一选择器7011、加密处理单元7012、寄存器7013以及控制单元7014。其中第二级流水线702包括二选一选择器7021、加密处理单元7022、寄存器7023以及控制单元7024。第三级流水线703包括二选一选择器7031、加密处理单元7032、寄存器7033以及控制单元7034。第四级流水线701包括二选一选择器7041、加密处理单元7042、寄存器7043以及控制单元7044。其中二选一选择器均包括第一、第二输入端和一个输出端。
第一级流水线701中的控制单元7014用于以3T为周期,控制第一存储器705将第一存储器705存储的明文数据发送至第一级流水线701中二选一选择器7011的第一输入端,并将该明文数据作为第一级流水线的待加密数据,并发送第一控制信号至二选一选择器7011,加密处理单元7012执行完相应的加密处理后判断第一级流水线对明文数据已执行的加密处理的轮数是否达到2轮,如果否,发送第二控制信号至寄存器7013和发送第三控制信号至二选一选择器7011,如果是,发送第四控制信号至寄存器7013。
所述第一控制信号控制二选一选择器7011选择该选择器第一输入端的输入作为输入数据,并且输出端输出该输入数据至加密处理单元7012,第二控制信号控制寄存器7013发送保存的数据至二选一选择器7011的第二输入端,第三控制信号控制二选一选择器7011选择第二输入端的输入作为输入数据并且输出端输出该输入数据至该级加密处理单元7012,第四控制信号控制寄存器7013将保存的数据发送至第二级流水线702的二选一选择器7021的第一输入端,将其作为第二级流水线702的待加密数据。
第一级流水线701中的二选一选择器7011用于接收到的第一控制信号时选择第一输入端作为输入,接收到第三控制信号时选择第二输入端作为输入,并且输出端输出相应的输入数据至加密处理单元7012。
第一级流水线701中的加密处理单元7012用于对第一次接收到的数据执行第一轮加密处理、对第二次接收到的数据执行第二轮加密处理并分别将处理后的数据发送至寄存器7013保存。
第一级流水线701中的寄存器7013用于接收到加密处理单元7012发送的数据后进行保存,接收到第三控制信号时将保存的数据发送至二选一选择器7011的第二输入端,接收到第四控制信号时将保存的数据发送至第二级流水线702中的二选一选择7021的第一输入端,并将其作为第二级流水线702的待加密数据。
第二级流水线702、第三级流水线703、第四级流水线704与第一级流水线701的结构和工作过程类似,区别在于第二级流水线702和第三级流水线703执行的加密处理均为3轮,第四级流水线704执行的加密处理为2轮,并且第二级、第三级和第四级流水线的控制单元不需要从第一存储器中读取明文数据,而是由二选一选择器的第一输入端直接接收上一级流水线输出的处理后的数据作为该级的待加密数据,第四级流水线704中的控制器7044进一步用于控制寄存器7043将保存的处理完毕的密文数据存入第二存储器706,其他类似的过程不再赘述。
可以从该具体实施例看出,第一级至第四级流水线执行的加密处理轮数之和为10,与数据加密需执行的总轮数相同。这里设定执行一次处理的时间均为T,在这个具体实施例中中处理包括加密处理、第一控制器从第一存储器中读取明文数据以及第二控制器向第二存储器存入数据,则每一级流水线执行的总时长均为3T。
在该具体实施例中,每一级流水线都包括了一个控制单元,在实现本发明的其他实施例中,全部流水线的控制单元也可以为同一控制单元,并不影响本发明的实现。
本发明还提供了一种实现加密的装置。所述装置包括多级流水线。所述多级流水线的任一级流水线可以包括:控制单元、二选一选择器、寄存器以及加密处理单元;所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线的控制单元用于发送第五控制信号至当前流水线的二选一选择器,在加密处理单元执行相应的加密处理后判断当前流水线对待加密数据已执行的加密处理的轮数是否达到所述当前流水线对应处理中需执行的加密处理的轮数,如果否,发送第六控制信号至当前流水线的二选一选择器和发送第七控制信号至当前流水线的加密处理单元,如果是,发送第八控制信号至当前流水线的加密处理单元。
所述第五控制信号控制所述二选一选择器将第一输入端接收的数据输出至所述寄存器,所述第六控制信号控制所述二选一选择器将第二输入端接收的数据输出至所述寄存器,所述第七控制信号控制加密处理单元将处理之后的数据输出到所述二选一选择器的第二输入端,所述第八控制信号控制加密处理单元将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待加密数据。
所述二选一选择器用于接收到第五控制信号时选择第一输入端的数据作为输入数据,接收到第六控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至寄存器。
所述寄存器用于保存所述二选一选择器的输出数据并且将保存的数据输出到加密处理单元。
所述加密处理单元用于对接收到的数据执行相应的加密处理,并且接收到第七控制信号时将处理之后的数据输出到所述二选一选择器的第二输入端,接收到第八控制信号时将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待加密数据。
其中将待加密的明文数据发送至第一级流水线中的二选一选择器的第一输入端。
所述装置可以进一步包括第一存储器和第二存储器,
第一级流水线的控制单元进一步用于控制第一存储器将第一存储器中存储到明文数据作为待加密数据发送至第一级流水线。
最后一级流水线的控制单元进一步用于加密处理完毕时将处理后的数据存入第二存储器。
本发明还提供了一种实现解密的装置。所述装置包括多级流水线。
所述多级流水线中的每一级流水线用于接收待解密数据,根据该级流水线的级数对所述数据进行包括至少一轮解密处理在内的对应处理,并将处理后的数据作为下一级流水线的待解密数据输出,直至最后一级流水线进行对应处理完毕。
其中,各级流水线进行所述对应处理的总时长相等并且各级流水线执行的所述解密处理的总轮数之和为数据解密需执行的总轮数。
所述多级流水线将处理后的数据作为下一级流水线的待解密数据输出之后可以进一步用于接收新一轮的待解密数据。
本发明还提供了一种实现解密的装置。所述装置包括多级流水线。所述多级流水线的任一级流水线包括:控制单元、二选一选择器、寄存器以及解密处理单元,所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线中的控制单元用于发送第一控制信号至当前流水线的二选一选择器,在解密处理单元执行相应的解密处理后判断当前流水线对待解密数据已执行的解密处理的轮数是否达到所述当前流水线对应处理中需执行的解密处理的轮数,如果否,发送第二控制信号至当前流水线的寄存器和发送第三控制信号至所述二选一选择器,如果是,发送第四控制信号至当前流水线的寄存器。
所述第一控制信号控制二选一选择器选择该选择器的第一输入端的数据作为输入数据并且输出端输出该输入数据至所述解密处理单元,第二控制信号控制所述寄存器发送保存的数据至二选一选择器的第二输入端,所述第三控制信号控制二选一选择器选择第二输入端的数据作为输入数据并且输出端输出该输入数据至当前流水线的解密处理单元,第四控制信号控制所述寄存器发送保存的数据至下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待解密数据。
所述二选一选择器用于接收到第一控制信号时选择第一输入端的数据作为输入数据,接收到第三控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至解密处理单元。
所述解密处理单元用于对接收到的数据执行相应的解密处理,并将处理后的数据发送至所述寄存器保存。
所述寄存器用于保存解密处理单元处理后的数据,以及接收到第三控制信号时发送保存的数据至二选一选择器的第二输入端,接收到第四控制信号时发送保存的数据至下一级流水线中的二选一选择器的第一输入端并将其作为下一级流水线的待解密数据。
其中将待解密的密文数据发送至第一级流水线中的二选一选择器的第一输入端。
所述装置可以进一步包括第一存储器和第二存储器,
第一级流水线的控制单元进一步用于控制第一存储器将第一存储器中存储到明文数据作为待解密数据发送至第一级流水线。
最后一级流水线的控制单元进一步用于解密处理完毕时将处理后的数据存入第二存储器。
本发明还提供了一种实现解密的装置。所述装置包括多级流水线。所述多级流水线的任一级流水线可以包括:控制单元、二选一选择器、寄存器以及解密处理单元;所述二选一选择器具有第一、第二输入端和一个输出端。
当前流水线的控制单元用于发送第五控制信号至当前流水线的二选一选择器,在解密处理单元执行相应的解密处理后判断当前流水线对待解密数据已执行的解密处理的轮数是否达到所述当前流水线对应处理中需执行的解密处理的轮数,如果否,发送第六控制信号至当前流水线的二选一选择器和发送第七控制信号至当前流水线的解密处理单元,如果是,发送第八控制信号至当前流水线的解密处理单元。
所述第五控制信号控制所述二选一选择器将第一输入端接收的数据输出至所述寄存器,所述第六控制信号控制所述二选一选择器将第二输入端接收的数据输出至所述寄存器,所述第七控制信号控制解密处理单元将处理之后的数据输出到所述二选一选择器的第二输入端,所述第八控制信号控制解密处理单元将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待解密数据。
所述二选一选择器用于接收到第五控制信号时选择第一输入端的数据作为输入数据,接收到第六控制信号时选择第二输入端的数据作为输入数据,并且输出端输出相应的输入数据至寄存器。
所述寄存器用于保存所述二选一选择器的输出数据并且将保存的数据输出到解密处理单元。
所述解密处理单元用于对接收到的数据执行相应的解密处理,并且接收到第七控制信号时将处理之后的数据输出到所述二选一选择器的第二输入端,接收到第八控制信号时将处理之后的数据输出到下一级流水线中的二选一选择器的第一输入端,并将其作为下一级流水线的待解密数据。
其中将待解密的密文数据发送至第一级流水线中的二选一选择器的第一输入端。
所述装置可以进一步包括第一存储器和第二存储器,
第一级流水线的控制单元进一步用于控制第一存储器将第一存储器中存储到明文数据作为待解密数据发送至第一级流水线。
最后一级流水线的控制单元进一步用于解密处理完毕时将处理后的数据存入第二存储器。
解密装置与加密装置相对应。并且对于与加密的装置对应的解密的装置,采用的流水线级数和流水线每一级解密处理的轮数可以与加密的装置一致。
本发明实现的加密以及解密方法可以应用到大容量安全存储芯片中,此芯片能够对USB(通用串行总线)、SATA(串行高级技术附件)等接口的大容量存储设备中的数据进行加密、解密,从而保证大容量数据存储的安全性。通过本发明的方法可以极大提高加密、解密的数据吞吐率,从而可以克服加密、解密模块数据吞吐率太低时对大容量安全存储方案存储速度的影响。
请参阅图8,当主机需要将大量数据存入USB接口的大容量存储设备时,首先通过USB接口将相关命令和数据发出,安全存储芯片中的USB设备(USBDevice)801接收到相关命令和数据后进行USB协议解析,解析出的有效数据通过系统总线(AHB总线)802存入片上内存(DPRAM)803中,然后本发明实现的加密、解密装置804对DPRAM 803中的数据进行加密,加密的结果存入DPRAM804中,之后USB主设备(USB Host)807通过AHB总线806将DPRAM 805中的密文组成USB协议的数据包并发送给USB接口的大容量存储设备;当主机需要读入大容量存储设备中的数据时,安全存储芯片中的USB Host807接收来自于存储设备中的数据并进行USB协议解析,解析出的有效密文存入片上内存DPRAM806中,然后AES模块804对DPRAM 806中的数据进行解密,解密的结果存入DPRAM 803中,然后USB Device 804通过AHB总线802将DPRAM 803中的明文组成USB协议的数据包并发送给主机。
也可以不采用USB接口,而采用SATA接口等具有类似功能的接口,并不影响本发明的实现。
由于加密、解密装置在大容量安全存储方案的数据存储通路上,所以它的加密、解密的数据吞吐率直接影响了安全存储的速度,使用了本发明实现的加密、解密装置后,由于流水线划分的独特性,在不显著增加芯片面积的情况下,大大提高了数据吞吐率,从而克服了加密、解密模块对存储速度的影响。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。