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

用于数据加密的方法、系统和装置与流程

2022-11-16 13:58:04 来源:中国专利 TAG:


1.本公开文件一般性地涉及数据加密,具体地,涉及在基于xts-aes的数据加密中改进数据吞吐率和运算效率。


背景技术:

2.高级加密标准(aes)算法被广泛地应用于数据加密。aes算法具有多种工作模式,例如,具有密文挪用的xex可调分组密码(xts)工作模式等。采用aes算法和xts工作模式的数据加密可以被简称为xts-aes数据加密。所要被加密的原始数据段可以包括多个原始数据块。原始数据段中的最后一个原始数据块的大小可能小于aes算法规定的预定数据块大小,例如,128比特。在这种情况下,xts-aes数据加密方案可以对原始数据段中的最后两个原始数据块执行特定的处理,例如,将与倒数第二原始数据块相对应的加密数据块的一部分与最后一个原始数据块进行组合,以使得所得到的组合数据块符合预定数据块大小。传统的xts-aes数据加密方案采用依次处理原始数据块的方式,即,按照原始数据块的序号依次执行加密。这将导致在对倒数第二原始数据块执行加密期间,整体处理进程需要暂停下来,并且只有在完成了对倒数第二原始数据块的加密且获得了与倒数第二原始数据块相对应的加密数据块之后,才能继续对最后一个原始数据块进行处理。对倒数第二原始数据块的加密结果的等待将导致数据吞吐量受到不利的影响并且降低整体运算效率,由此使得传统的xts-aes数据加密方案难以适应对数据吞吐量和运算效率要求较高的应用场景。


技术实现要素:

3.提供本发明内容以便介绍一组概念,这组概念将在以下的具体实施方式中做进一步描述。本发明内容并非旨在标识所保护主题的关键特征或必要特征,也不旨在用于限制所保护主题的范围。
4.本公开文件的实施例提出了用于数据加密的方法、系统和装置。所述数据加密采用aes算法和xts工作模式。可以检测原始数据段中的倒数第二原始数据块是否已被写入到输入缓冲器中。响应于检测到所述倒数第二原始数据块已被写入到所述输入缓冲器中,可以紧接在从所述输入缓冲器中读取了当前原始数据块以用于加密之后,从所述输入缓冲器中读取所述倒数第二原始数据块以用于加密。可以在从所述输入缓冲器中读取了所述倒数第二原始数据块以用于加密之后,继续从所述输入缓冲器中读取所述当前原始数据块之后的后续原始数据块以用于加密。可以提供通过对所述倒数第二原始数据块进行加密而得到的中间态加密数据块,以用于对从所述输入缓冲器中读取的、所述原始数据段中的最后一个原始数据块的加密。
5.应当注意,以上一个或多个方面包括以下详细描述以及权利要求中具体指出的特征。下面的说明书及附图详细提出了所述一个或多个方面的某些说明性特征。这些特征仅仅指示可以实施各个方面的原理的多种方式,并且本公开旨在包括所有这些方面和其等同变换。
附图说明
6.以下将结合附图描述所公开的多个方面,这些附图被提供用以说明而非限制所公开的多个方面。
7.图1示出了根据实施例的示例性数据加密系统。
8.图2示出了根据实施例的用于数据加密的示例性过程。
9.图3示出了根据实施例的执行数据加密的实例。
10.图4示出了根据实施例的输入缓冲器的指针操作的示例。
11.图5示出了根据实施例的输出缓冲器的指针操作的示例。
12.图6示出了根据实施例的用于数据加密的示例性方法的流程图。
13.图7示出了根据实施例的用于数据加密的示例性装置。
具体实施方式
14.现在将参考多种示例性实施方式来讨论本公开。应当理解,这些实施方式的讨论仅仅用于使得本领域技术人员能够更好地理解并从而实施本公开文件的实施例,而并非教导对本公开文件的范围的任何限制。
15.本公开文件的实施例突破了传统的xts-aes数据加密方案中依次处理原始数据块的限制,提出了在xts-aes数据加密的整体处理进程中,对原始数据段中的倒数第二原始数据块提前进行处理。例如,在依次处理其它原始数据块期间,可以预取倒数第二原始数据块并提前对倒数第二原始数据块执行加密。相应地,当处理到最后一个原始数据块时,可以直接使用通过对倒数第二原始数据块的提前处理而获得的与倒数第二原始数据块相对应的加密数据块。例如,当处理到最后一个原始数据块时,在已经完成了对倒数第二原始数据块的加密的情况下,可以直接使用与倒数第二原始数据块相对应的加密数据块对最后一个原始数据块进行处理,从而避免了等待完成对倒数第二原始数据块执行加密的等待时间。此外,例如,当处理到最后一个原始数据块时,即便在尚未完成对倒数第二原始数据块的加密的情况下,由于对倒数第二原始数据块的加密操作已经被提前执行,因此,可以有效地缩短等待完成对倒数第二原始数据块执行加密的等待时间。本公开文件的实施例通过避免或缩短与对倒数第二原始数据块执行加密操作相关联的等待时间,可以显著地改进数据吞吐率和运算效率。此外,本公开文件的实施例还提出了针对输入缓冲器的改进的读取操作,以便更有效地支持对倒数第二原始数据块的预取。此外,本公开文件的实施例还提出了针对输出缓冲器的改进的写入操作,以便更高效地写入最后两个加密数据块。
16.图1示出了根据实施例的示例性数据加密系统100。数据加密系统100是采用aes算法和xts工作模式来实现数据加密的系统,其也可以被称为xts-aes数据加密系统。
17.数据加密系统100可以用于对原始数据段102执行加密,以输出与原始数据段102相对应的加密数据段104。原始数据段102可以是原始数据集中的一段示例性的数据。通过将原始数据集中包括的多个原始数据段逐个地提供给数据加密系统100以进行加密,可以最终实现对整个原始数据集的加密。以下描述以采用数据加密系统100对原始数据集中的示例性原始数据段102执行加密为例。
18.原始数据段102中的数据可以被称为明文。根据aes算法所规定的预定数据块大小,例如,128比特,可以将原始数据段102划分为多个原始数据块。每个原始数据块也可以
被称为明文数据块。原始数据段102中的最后一个原始数据块的大小可能小于预定数据块大小,例如,最后一个原始数据块的大小可能介于1比特至127比特之间。在这种情况下,xts-aes数据加密可以对原始数据段102中的最后两个原始数据块执行特定的处理。加密数据段104中的数据可以被成为密文。加密数据段104可以包括与原始数据段102中的多个原始数据块分别对应的多个加密数据块。每个加密数据块也可以被称为密文数据块。
19.数据加密系统100可以包括例如输入缓冲器110、数据处理(dp)单元集合120、输出缓冲器130、控制器140、临时寄存器150等。
20.输入缓冲器110用于存储原始数据段102中的原始数据块。在一个方面,可以通过针对输入缓冲器110的输入缓冲器写处理,将原始数据段102中的多个原始数据块依次写入到输入缓冲器110中。输入缓冲器110可以包括与原始数据段102中的多个原始数据块分别对应的多个存储区。每个存储区存储一个原始数据块。示例性地,可以为原始数据段102中的多个原始数据块分配连续的序号,从而,可以按照序号的顺序将每个原始数据块依次写入到输入缓冲器110中的对应存储区内。在另一个方面,可以通过针对输入缓冲器110的输入缓冲器读处理,从输入缓冲器110中读取原始数据块以用于加密。可以逐个地读取输入缓冲器110中存储的多个原始数据块。根据本公开文件的实施例,在依次读取其它原始数据块期间,可以预取倒数第二原始数据块。例如,尽管当前被读取的原始数据块并非是紧接在倒数第二原始数据块之前的原始数据块,但是可以在读取了当前原始数据块之后立即读取倒数第二原始数据块,以便可以提前对倒数第二原始数据块执行加密。在一种实现方式中,输入缓冲器110可以是改进的先进先出(fifo)缓冲器。例如,输入缓冲器110可以是传统fifo缓冲器的改进版本,以至少支持对倒数第二原始数据块的预取。
21.dp单元集合120用于执行加密处理。dp单元集合120可以包括多个dp单元。每个dp单元可以被构建为能够执行全部的加密所需的运算轮数。例如,假设对每个数据块的加密需要执行总共14轮的运算,即,运算轮数为14,则每个dp单元可以执行全部的14轮运算。相应地,每个dp单元可以独立地将输入数据块加密为对应的加密数据块。假设每1轮运算可以在1个时钟周期内完成,则每个dp单元可以通过14个时钟周期来完成对一个输入数据块的加密操作。应当理解,本公开文件的实施例并不局限于采用任何特定类型的dp单元,只要该dp单元能够执行全部的加密所需的运算轮数以将输入数据块加密为对应的加密数据块即可。
22.对于在倒数第二原始数据块之前的每个原始数据块,对应的dp单元可以将该原始数据块加密为对应的加密数据块以用于进一步存储到输出缓冲器130中。对于倒数第二原始数据块,对应的dp单元可以将倒数第二原始数据块加密为对应的中间态加密数据块,该中间态加密数据块被存储在临时寄存器150中而不是存储到输出缓冲器130中。对于在最后一个原始数据块之前的每个原始数据块,该原始数据块可以作为对应的dp单元的输入数据块。然而,对于最后一个原始数据块,对应的dp单元的输入数据块则是由该最后一个原始数据块与中间态加密数据块的一部分所组成的组合数据块,并且该dp单元将该组合数据块加密为对应的加密数据块以用于进一步存储到输出缓冲器130中。此外,中间态加密数据块中的未被用于形成所述组合数据块的部分也作为独立的加密数据块而被进一步存储到输出缓冲器130中。
23.输出缓冲器130用于存储与原始数据块相对应的加密数据块。在一个方面,可以通
过针对输出缓冲器130的输出缓冲器写处理,将通过dp单元集合120所获得的多个加密数据块依次写入到输出缓冲器130中。输出缓冲器130可以包括与多个加密数据块分别对应的多个存储区。每个存储区存储一个加密数据块。示例性地,可以为多个加密数据块分配连续的序号,从而,可以按照序号的顺序将每个加密数据块依次写入到输出缓冲器130中的对应存储区内。在一种实现方式中,可以对最后两个加密数据块执行特定的写入处理。例如,可以将针对由最后一个原始数据块与中间态加密数据块的一部分所组成的组合数据块所获得的加密数据块写入到输出缓冲器130中的倒数第二存储区内,而将中间态加密数据块中的未被用于形成所述组合数据块的部分作为单独的加密数据块写入到输出缓冲器130中的最后一个存储区内。优选地,可以通过对写指针的预定操作,来向输出缓冲器130中的最后两个存储区内同时写入最后两个加密数据块。在另一个方面,可以通过针对输出缓冲器130的输出缓冲器读处理,从输出缓冲器130中读取加密数据块以用于输出。可以逐个地读取输出缓冲器130中存储的多个加密数据块。所读取的多个加密数据块将形成加密数据段104。在一种实现方式中,输出缓冲器130可以是改进的fifo缓冲器。例如,输出缓冲器130可以是传统fifo缓冲器的改进版本,以至少支持对最后两个加密数据块的同时写入。
24.控制器140可以实现对输入缓冲器110、dp单元集合120、输出缓冲器130、临时寄存器150等的各种控制和管理。控制器140可以是至少通过例如处理器、状态机等各种处理单元来实施的,并且所述处理单元可以通过执行在存储单元中存储的相应计算机程序代码或指令以实现特定的控制和管理逻辑。本公开文件的实施例并不局限于用于实施控制器140的任何特定硬件和/或软件技术。
25.在一种实现方式中,控制器140可以检测原始数据段102中的倒数第二原始数据块是否已被写入到输入缓冲器110中。例如,控制器140可以持续地检查输入缓冲器110中与倒数第二原始数据块相对应的存储区,以确定在该存储区中是否已经包含倒数第二原始数据块。
26.在一种实现方式中,如果控制器140已经检测到倒数第二原始数据块已被写入到输入缓冲器110中,则紧接在从输入缓冲器110中读取了当前原始数据块以用于加密之后,控制器140可以触发对倒数第二原始数据块的预取,例如,从输入缓冲器110中读取倒数第二原始数据块以用于加密。优选地,当检测到倒数第二原始数据块已被写入到输入缓冲器110中时,控制器140还可以计算倒数第二原始数据块的序号与当前原始数据块的序号之间的序号差,并且在所述序号差不大于加密所需的运算轮数的情况下,控制器140可以触发从输入缓冲器110中读取倒数第二原始数据块。假设在每1个时钟周期处读取一个原始数据块,则所述序号差可以用于估计当处理到最后一个原始数据块时所需的等待时间。例如,如果所述序号差等于加密所需的运算轮数,则当处理到最后一个原始数据块时,刚好完成了对倒数第二原始数据块的加密,从而避免了等待时间。例如,如果所述序号差小于加密所需的运算轮数,则当处理到最后一个原始数据块时,等待时间可以是例如由加密所需的运算轮数减去所述序号差所得到的差值来表示的。因此,通过在所述序号差不大于加密所需的运算轮数的情况下立即读取倒数第二原始数据块,可以有效地避免等待时间或尽可能地减少等待时间。应当理解,如果所述序号差大于加密所需的运算轮数,则表明在处理到最后一个原始数据块之前的特定时间处已经提前完成了对倒数第二原始数据块的加密,该提前时间的数量可以是例如由所述序号差减去加密所需的运算轮数所得到的差值来表示的。在所
述序号差大于加密所需的运算轮数的情况下,也可以立即读取倒数第二原始数据块,或者可选地,等到当后续计算的序号差不大于加密所需的运算轮数时,再读取倒数第二原始数据块。
27.在一种实现方式中,在从输入缓冲器110中读取了倒数第二原始数据块以用于加密之后,控制器140可以控制以继续从输入缓冲器110中读取当前原始数据块之后的后续原始数据块以用于加密。所述后续原始数据块可以指具有紧接在当前原始数据块的序号之后的一系列序号的原始数据块。
28.在一种实现方式中,控制器140可以提供通过对倒数第二原始数据块进行加密而得到的中间态加密数据块,以用于对最后一个原始数据块的加密。例如,控制器140可以从临时寄存器150中读取中间态加密数据块,以便将其用于对最后一个原始数据块的加密。
29.在一种实现方式中,控制器140可以利用最后一个原始数据块与中间态加密数据块的一部分来组成组合数据块。
30.在一种实现方式中,控制器140可以通过对写指针的预定操作,来向输出缓冲器130中的最后两个存储区内同时写入最后两个加密数据块。例如,控制器140可以通过将写指针递增2的方式,来支持向输出缓冲器130中同时写入最后两个加密数据块。
31.应当理解,以上对于数据加密系统100中包括的各个部件的描述都是示例性的,本公开文件的实施例可以涵盖关于由数据加密系统100中的各个部件所执行的操作或处理的各种变型,并且可以包括更多或更少的细节。例如,优选地,可以将输入缓冲器110的深度和输出缓冲器130的深度设置为相同,即,输入缓冲器110所包括的存储区的数量与输出缓冲器130所包括的存储区的数量相同,相应地,原始数据段102中的原始数据块的数量与加密数据段104中的加密数据块的数量相同。例如,优选地,可以将输入缓冲器110的深度和输出缓冲器130的深度设置为均大于加密所需的运算轮数,以便实现dp单元的最佳利用率,并且避免由于输入缓冲器和输出缓冲器的深度小于加密所需的运算轮数而导致的额外的等待时间。例如,优选地,可以将dp单元集合120中的多个dp单元的数量设置为等于加密所需的运算轮数,以便实现dp单元的最佳利用率。此外,应当理解,尽管以上描述了在输入缓冲器和输出缓冲器的深度、加密所需的运算轮数、dp单元的数量等之间的示例性的数量或大小关系,但是本公开文件的实施例并不局限于这些示例性的描述,而是也可以在输入缓冲器和输出缓冲器的深度、加密所需的运算轮数、dp单元的数量等之间具有任何其它数量或大小关系的情况下实现避免或缩短与对倒数第二原始数据块执行加密操作相关联的等待时间、进而改进数据吞吐率和运算效率的目的。
32.图2示出了根据实施例的用于数据加密的示例性过程200。过程200是对例如图1中的数据加密系统100所执行的操作和处理的示例性说明。此外,过程200中所涉及的全部或部分步骤和操作可以是在例如图1中的控制器140的控制下所执行的。假设旨在通过执行过程200来获得与原始数据段202相对应的加密数据段204。
33.在210处,可以执行输入缓冲器写处理。例如,可以将原始数据段202中的原始数据块依次写入到输入缓冲器中。
34.在一种实现方式中,在执行输入缓冲器写处理期间,可以在212处检测原始数据段202中的倒数第二原始数据块是否已被写入到输入缓冲器中。
35.在220处,可以执行输入缓冲器读处理。例如,可以从输入缓冲器中读取原始数据
块以用于加密。可以逐个地读取输入缓冲器中存储的多个原始数据块。
36.在一种实现方式中,在220处的输入缓冲器读处理可以至少包括在222处对倒数第二原始数据块进行预取。例如,响应于在212处检测到倒数第二原始数据块已被写入到输入缓冲器中,紧接在从输入缓冲器中读取了当前原始数据块以用于加密之后,可以从输入缓冲器中读取倒数第二原始数据块以用于加密。优选地,可以至少利用输入缓冲器的读指针操作来实现对倒数第二原始数据块的预取。例如,响应于检测到倒数第二原始数据块已被写入到输入缓冲器中,可以对输入缓冲器中的原始数据块阵列进行重新排列,其中,倒数第二原始数据块可以被移动到输入缓冲器中的、紧接在当前原始数据块之后的位置处,即,被插入在当前原始数据块与在序号上与当前原始数据块相邻的下一原始数据块之间。经过重新排列后,可以通过读指针迭代更新的方式来继续从输入缓冲器中读取原始数据。首先,在读取了当前原始数据块之后,可以对指向当前原始数据块的读指针进行更新,以使得经更新的读指针指向倒数第二原始数据块,并且可以基于该经更新的读指针来读取倒数第二原始数据块。然后,可以通过读指针的进一步迭代更新来读取当前原始数据块之后的后续原始数据块。例如,可以对用于读取倒数第二原始数据块的所述经更新的读指针进行迭代地更新,以使得经迭代更新的读指针分别依次指向所述后续原始数据块中的每一个,并且可以基于经迭代更新的读指针来依次读取所述后续原始数据块中的每一个。对读指针的迭代更新可以指例如每次使得读指针递增1。在一种实现方式中,优选地,在222处对倒数第二原始数据块的预取可以进一步采用利用序号差和加密所需的运算轮数所定义的判断条件。例如,响应于检测到倒数第二原始数据块已被写入到输入缓冲器中,可以计算倒数第二原始数据块的序号与当前原始数据块的序号之间的序号差,并且在确定序号差不大于加密所需的运算轮数的情况下,从输入缓冲器中读取倒数第二原始数据块。
37.在230处,可以执行加密处理,以将从输入缓冲器中所读取的原始数据块加密为对应的加密数据块。可以利用例如图1中的dp单元集合120中的dp单元来执行加密。
38.在一种实现方式中,在230处的加密处理可以至少包括在232处对倒数第二原始数据块执行加密,以得到中间态加密数据块234。中间态加密数据块234可以被存储在临时寄存器中。在230处的加密处理可以进一步至少包括在236处对最后一个原始数据块执行加密。可以提供中间态加密数据块,以用于对最后一个原始数据块的加密。例如,可以从临时寄存器中读取先前所存储的中间态加密数据块,并将其用于对最后一个原始数据块的加密。可以利用最后一个原始数据块与中间态加密数据块的一部分来组成组合数据块,并且将该组合数据块加密为对应的加密数据块。
39.在240处,可以执行输出缓冲器写处理,以将通过230处的加密处理所获得的加密数据块写入到输出缓冲器中。
40.在一种实现方式中,优选地,在240处的输出缓冲器写处理可以至少包括在242处执行对最后两个加密数据块的同时写入。所述最后两个加密数据块包括与组合数据块相对应的加密数据块以及由中间态加密数据块中的未被用于形成所述组合数据块的部分所形成的加密数据块。可以通过例如使得写指针一次递增2的方式,来支持向输出缓冲器中同时写入最后两个加密数据块,使得在该写入操作结束后,写指针正确地指向最后一个加密数据块。
41.在250处,可以执行输出缓冲器读处理,以从输出缓冲器中依次读取加密数据块。
例如,可以利用读指针的迭代更新来依次读取输出缓冲器中的多个加密数据块。所读取的加密数据块可以一起形成加密数据段204。
42.应当理解,以上结合图2所描述的过程200中的所有操作或步骤都是示例性的,取决于具体的应用场景和需求,过程200可以包括更多或更少的操作或步骤,并且本公开文件的实施例将涵盖对过程200所做的任意方式的修改。
43.图3示出了根据实施例的执行数据加密的实例300。实例300是基于xts-aes-256数据加密方案来提出的。xts-aes-256数据加密可以指密钥长度为256比特的xts-aes数据加密。在xts-aes-256数据加密中,对每一个数据块的加密需要14轮运算,相应地,一个dp单元需要14个时钟周期来完成对一个输入数据块的加密。在实例300中,将dp单元集合320中的dp单元的数量设置为与加密所需的运算轮次(即,14轮)相同,即,dp单元集合320包括14个dp单元dp0~dp13。此外,在实例300中,将输入缓冲器310的深度和输出缓冲器330的深度都设置为16,其大于加密所需的运算轮次(即,14轮)或dp单元的数量(即,14个)。
44.假设在输入缓冲器310中依次写入了原始数据段中的16个原始数据块,其序号依次为din0~din15,其中,din0表示第一个原始数据块,din14表示倒数第二原始数据块,din15表示最后一个原始数据块。如图所示,最后一个原始数据块din15的大小小于aes算法规定的预定数据块大小,从而,其仅填充了对应存储区的一部分,而剩余一部分存储区未被填充,如阴影区域所示。
45.可以从输入缓冲器310中读取原始数据块以用于加密。在时刻t0处,读取din0,并将din0提供给dp0以进行加密。在dp0完成了对din0的加密后,所得到的对应的加密数据块dout0被写入到输出缓冲器330中。
46.在对输入缓冲器310进行读取的同时,可以检测倒数第二原始数据块din14是否已被写入到输入缓冲器310中。假设在时刻t0处,检测到din14已被写入到输入缓冲器310中,此时,din0是当前原始数据块。响应于检测到din14已被写入到输入缓冲器310中,紧接在从输入缓冲器310中读取了当前原始数据块din0以用于加密之后,即,仅接在时刻t0之后,将在下一时刻t1处从输入缓冲器310中读取din14以用于加密。将din14提供给dp1以进行加密。在dp1完成了对din14的加密后,所得到的对应的中间态加密数据块s被存储到临时寄存器(未示出)中。应当理解,可选地,响应于检测到din14已被写入到输入缓冲器310中,可以首先计算出倒数第二原始数据块的序号din14与当前原始数据块的序号din0之间的序号差为14,然后,响应于该序号差14不大于加密所需的运算轮数(即,14轮),则决定在时刻t1处从输入缓冲器中读取din14。
47.在从输入缓冲器310中读取了din14之后,可以继续从输入缓冲器310中读取当前原始数据块din0之后的后续原始数据块din1~din13和din15以用于加密。例如,依次在时刻t2~t13处分别读取原始数据块din1~din12,并且分别利用dp2~dp13对din1~din12执行加密,所得到的对应的加密数据块dout1~dout12分别被写入到输出缓冲器330中。
48.在实例300,每个时刻对应于1个时钟周期,因此,在时刻t14到来时,dp0刚好完成了在14个时钟周期内对din0执行的14轮加密运算。从而,在时刻t14处,可以读取din13,并将din13提供给dp0以进行加密。在dp0完成了对din13的加密后,所得到的对应的加密数据块dout13被写入到输出缓冲器330中。
49.在时刻t15到来时,dp1刚好完成了在14个时钟周期内对din14执行的14轮加密运
算。从而,在时刻t15处,可以读取最后一个原始数据块din15,并将中间态加密数据块s用于对din15的处理。例如,中间态加密数据块s可以被划分为两部分cm和cp,其中,cm的大小对应于din15的大小,而cp的大小与din15的大小的和刚好等于aes算法规定的预定数据块大小。可以将din15与中间态加密数据块s中的部分cp组合成组合数据块,并且在时刻t15处将该组合数据块提供给dp1。在dp1完成了对组合数据块的加密后,所得到的对应的加密数据块dout14被写入到输出缓冲器330中。此外,中间态加密数据块s中的部分cm将作为独立的加密数据块dout15而被写入到输出缓冲器330中。
50.根据实例300,当处理到最后一个原始数据块din15时,刚好已经完成了对倒数第二原始数据块din14的加密并且可以直接将中间态加密数据块s用于对din15的处理。从而,避免了在要处理din15时等待完成对din14执行加密的等待时间。即,在时刻t14之后,无需等待时间,可以直接在时刻t15处形成组合数据块以用于加密。至少得益于将dp单元的数量设置为与加密所需的运算轮次相同,可以实现上述的等待时间的避免。
51.应当理解,实例300中的所有细节都是示例性的,本公开文件的实施例将涵盖对实例300所做的任意方式的修改。例如,取代将输入缓冲器310和输出缓冲器330的深度设置为16,其也可以被设置为其它值。例如,取代将dp单元的数量设置为与加密所需的运算轮次相同,也可以设置比加密所需的运算轮次更多数量的dp单元,这也将有助于避免等待时间。例如,取代将dp单元的数量设置为与加密所需的运算轮次相同,也可以设置比加密所需的运算轮次更少数量的dp单元,尽管这可能导致一定的等待时间,但是得益于对倒数第二原始数据块的预取,该等待时间与现有的xts-aes数据加密相比仍然得到了有效地缩短。
52.此外,应当理解,实例300是基于xts-aes-256数据加密方案来提出的。替代地,如果xts-aes数据加密采用128比特长度的密钥或者192比特长度的密钥时,则加密所需的运算轮次将分别为10轮和12轮。相应地,优选地,可以将dp单元的数量分别设置为10个和12个。
53.图4示出了根据实施例的输入缓冲器的指针操作的示例400。示例400是关于对图3中的输入缓冲器310的写处理和读处理的进一步实现方式。
54.在一个方面,可以利用写指针wr_ptr来实现将原始数据段中的多个原始数据块依次写入到输入缓冲器310中。例如,可以通过对写指针的迭代更新来依次写入多个原始数据块din0~din15。写指针的迭代更新可以是例如每次将写指针递增1。如图所示,已经将最后一个原始数据块din15写入到输入缓冲器310中。此时,写指针保持指向din15。
55.在另一个方面,可以利用读指针rd_ptr来实现从输入缓冲器310中读取原始数据块。在时刻t0处,读指针指向din0,从而,可以利用该读指针读取din0。假设在时刻t0处,检测到倒数第二原始数据块din14已被写入到输入缓冲器310中,此时,din0是当前原始数据块。为了利用写指针预取din14,可以对输入缓冲器310中的原始数据块阵列进行重新排列。如图所示,在时刻t1处,din14已经被移动到紧接在当前原始数据块din0之后的位置处,即,din14被插入在din0与din1之间。同时,在已经在时刻t0处读取了din0之后,先前指向din0的读指针被更新为在时刻t1处指向din14。从而,在时刻t1处,可以基于该经更新的读指针来读取din14。
56.在已经在时刻t1处读取了din14之后,可以对在时刻t1处的读指针进行迭代地更新,以使得经迭代更新的读指针分别依次指向在序号上紧接在din0之后的后续原始数据块
din1~din13和din15中的每一个,并且可以基于经迭代更新的读指针来依次读取这些后续原始数据块中的每一个。以时刻t2为例,此时,读指针已经被更新为指向din1,从而,在时刻t2处,可以基于读指针来读取din1。以此类推。
57.应当理解,示例400中给出的对倒数第二原始数据块进行预取的实现方式仅仅是示例性的,本公开文件的实施例并不局限于示例400中的任何细节,而是可以涵盖对示例400的任何修改以及对倒数第二原始数据块进行预取的任何其它实现方式。
58.图5示出了根据实施例的输出缓冲器的指针操作的示例500。示例500是关于对图3中的输出缓冲器330的写处理和读处理的进一步实现方式。
59.在一个方面,可以利用写指针wr_ptr来实现将加密数据块写入到输出缓冲器330中。可以通过对写指针的迭代更新来依次写入加密数据块dout0~din13。在写入dout0~din13期间,写指针的迭代更新可以是例如每次将写指针递增1。如图所示,在时刻tm处,已经将dout13写入到输出缓冲器330中。此时,写指针指向dout13。
60.优选地,为了提高写入效率,可以进而同时写入最后两个加密数据块dout14和dout15。例如,可以将在时刻tm处的写指针直接递增2,使得当在时刻tm 1处已经同时写入了dout14和dout15之后,写指针被更新为指向dout15。
61.在另一个方面,可以利用读指针rd_ptr来实现从输出缓冲器330中读取加密数据块。例如,可以通过对读指针进行迭代地更新,依次从输出缓冲器330中读取加密数据块dout0~din15。读指针的迭代更新可以是例如每次将读指针递增1。
62.应当理解,示例500中给出的同时写入最后两个加密数据块的实现方式仅仅是示例性的,本公开文件的实施例并不局限于示例500中的任何细节,而是可以涵盖对示例500的任何修改。例如,取代同时写入最后两个加密数据块,可以逐个地写入最后两个加密数据块,在这种情况下,写指针以递增1的方式进行更新。
63.此外,应当理解,在以上结合图4的示例400和图5的示例500的描述中,写入操作也可以广泛地指压入操作,而读取操作也可以广泛地指弹出操作。
64.图6示出了根据实施例的用于数据加密的示例性方法600的流程图。所述数据加密采用aes算法和xts工作模式。
65.在610处,可以检测原始数据段中的倒数第二原始数据块是否已被写入到输入缓冲器中。
66.在620处,响应于检测到所述倒数第二原始数据块已被写入到所述输入缓冲器中,可以紧接在从所述输入缓冲器中读取了当前原始数据块以用于加密之后,从所述输入缓冲器中读取所述倒数第二原始数据块以用于加密。
67.在630处,可以在从所述输入缓冲器中读取了所述倒数第二原始数据块以用于加密之后,继续从所述输入缓冲器中读取所述当前原始数据块之后的后续原始数据块以用于加密。
68.在640处,可以提供通过对所述倒数第二原始数据块进行加密而得到的中间态加密数据块,以用于对从所述输入缓冲器中读取的、所述原始数据段中的最后一个原始数据块的加密。
69.在一种实现方式中,所述读取所述倒数第二原始数据块可以包括:将所述倒数第二原始数据块移动到所述输入缓冲器中的、紧接在所述当前原始数据块之后的位置处;在
读取了所述当前原始数据块之后,更新指向所述当前原始数据块的读指针,以使得经更新的读指针指向所述倒数第二原始数据块;以及基于所述经更新的读指针来读取所述倒数第二原始数据块。
70.所述读取所述当前原始数据块之后的后续原始数据块可以包括:对所述经更新的读指针进行迭代地更新,以使得经迭代更新的读指针分别依次指向所述后续原始数据块中的每一个;以及基于所述经迭代更新的读指针来依次读取所述后续原始数据块中的每一个。
71.在一种实现方式中,所述读取所述倒数第二原始数据块可以包括:计算所述倒数第二原始数据块的序号与所述当前原始数据块的序号之间的序号差;以及响应于所述序号差不大于加密所需的运算轮数,从所述输入缓冲器中读取所述倒数第二原始数据块。
72.在一种实现方式中,方法600还可以包括:将所述中间态加密数据块存储在临时寄存器中。所述提供中间态加密数据块可以包括:从所述临时寄存器中读取所述中间态加密数据块。
73.在一种实现方式中,方法600还可以包括:将从所述输入缓冲器中读取的每一个原始数据块提供给一个dp单元。所述dp单元可以被构建为通过执行全部的加密所需的运算轮数来将输入数据块加密为对应的加密数据块。
74.在一种实现方式中,方法600还可以包括:通过将写指针递增2的方式,向输出缓冲器中同时写入最后两个加密数据块。
75.在一种实现方式中,所述最后一个原始数据块的大小小于所述aes算法规定的预定数据块大小。
76.应当理解,方法600还可以包括根据上述本公开文件的实施例的用于数据加密的任何其他步骤/过程。
77.图7示出了根据实施例的用于数据加密的示例性装置700。
78.装置700可以包括至少一个处理单元710。装置700还可以包括与至少一个处理单元710连接的存储单元720。存储单元720可以存储计算机可执行指令,所述计算机可执行指令在被执行时使得至少一个处理单元710执行根据上述本公开文件的实施例的用于数据加密的方法的任何操作和步骤。
79.本公开文件的实施例还提出了用于实现数据加密的系统,所述数据加密采用aes算法和xts工作模式。所述系统可以包括:输入缓冲器,其用于存储原始数据段中的原始数据块;dp单元集合,其包括多个dp单元,每个dp单元被构建为通过执行全部的加密所需的运算轮数来将输入数据块加密为对应的加密数据块;输出缓冲器,其用于存储与所述原始数据块相对应的加密数据块;以及控制器。所述控制器可以用于:检测所述原始数据段中的倒数第二原始数据块是否已被写入到所述输入缓冲器中;响应于检测到所述倒数第二原始数据块已被写入到所述输入缓冲器中,紧接在从所述输入缓冲器中读取了当前原始数据块以用于加密之后,从所述输入缓冲器中读取所述倒数第二原始数据块以用于加密;在从所述输入缓冲器中读取了所述倒数第二原始数据块以用于加密之后,继续从所述输入缓冲器中读取所述当前原始数据块之后的后续原始数据块以用于加密;以及提供通过对所述倒数第二原始数据块进行加密而得到的中间态加密数据块,以用于对从所述输入缓冲器中读取的、所述原始数据段中的最后一个原始数据块的加密。所述系统还可以包括临时寄存器,其
用于存储所述中间态加密数据块。优选地,所述输入缓冲器的深度和所述输出缓冲器的深度相同,并且所述输入缓冲器的深度和所述输出缓冲器的深度均大于加密所需的运算轮数。优选地,所述多个dp单元的数量等于加密所需的运算轮数。此外,所述控制器还可以执行根据上述本公开文件的实施例的用于数据加密的方法的任何其他操作和步骤。
80.本公开文件的实施例还提出了用于数据加密的装置,所述数据加密采用aes算法和xts工作模式,所述装置可以包括:检测模块,用于检测原始数据段中的倒数第二原始数据块是否已被写入到输入缓冲器中;倒数第二原始数据块读取模块,用于响应于检测到所述倒数第二原始数据块已被写入到所述输入缓冲器中,紧接在从所述输入缓冲器中读取了当前原始数据块以用于加密之后,从所述输入缓冲器中读取所述倒数第二原始数据块以用于加密;后续原始数据块读取模块,用于在从所述输入缓冲器中读取了所述倒数第二原始数据块以用于加密之后,继续从所述输入缓冲器中读取所述当前原始数据块之后的后续原始数据块以用于加密;以及中间态加密数据块提供模块,用于提供通过对所述倒数第二原始数据块进行加密而得到的中间态加密数据块,以用于对从所述输入缓冲器中读取的、所述原始数据段中的最后一个原始数据块的加密。此外,所述装置还可以包括被配置用于执行根据上述本公开文件的实施例的用于数据加密的方法的任何步骤/过程的任何其他模块。
81.本公开文件的实施例提出了用于数据加密的计算机程序产品,包括计算机程序,所述计算机程序被至少一个处理器运行用于执行根据上述本公开文件的实施例的用于数据加密的方法的任何步骤/过程。
82.本公开文件的实施例提出了用于数据加密的非暂时性计算机可读介质。该非暂时性计算机可读介质可以包括指令,当所述指令被执行时,使得一个或多个处理器执行根据上述本公开文件的实施例的用于数据加密的方法的任何步骤/过程。
83.应当理解,以上描述的方法中的所有操作都仅仅是示例性的,本公开并不限制于方法中的任何操作或这些操作的顺序,而是应当涵盖在相同或相似构思下的所有其他等同变换。
84.另外,除非另有规定或者从上下文能清楚得知针对单数形式,否则如本说明书和所附权利要求书中所使用的冠词“一(a)”和“一个(an)”通常应当被解释为意指“一个”或者“一个或多个”。
85.还应当理解,以上描述的装置中的所有模块都可以通过各种方式来实施。这些模块可以被实施为硬件、软件、或其组合。此外,这些模块中的任何模块可以在功能上被进一步划分成子模块或组合在一起。
86.已经结合各种装置和方法描述了处理器。这些处理器可以使用电子硬件、计算机软件或其任意组合来实施。这些处理器是实施为硬件还是软件将取决于具体的应用以及施加在系统上的总体设计约束。作为示例,本公开中给出的处理器、处理器的任意部分、或者处理器的任意组合可以实施为微处理器、微控制器、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)、状态机、门逻辑、分立硬件电路、以及配置用于执行在本公开中描述的各种功能的其他适合的处理部件。本公开给出的处理器、处理器的任意部分、或者处理器的任意组合的功能可以实施为由微处理器、微控制器、dsp或其他适合的平台所执行的软件。
87.软件应当被广泛地视为表示指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、运行线程、过程、函数等。软件可以驻留在计算机可读介质中。计算机可读介质可以包括例如存储器,存储器可以例如为磁性存储设备(如,硬盘、软盘、磁条)、光盘、智能卡、闪存设备、随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、寄存器或者可移动盘。尽管在本公开给出的多个方面中将存储器示出为是与处理器分离的,但是存储器也可以位于处理器内部(如,缓存或寄存器)。
88.以上描述被提供用于使得本领域任何技术人员可以实施本文所描述的各个方面。这些方面的各种修改对于本领域技术人员是显而易见的,本文限定的一般性原理可以应用于其他方面。因此,权利要求并非旨在被局限于本文示出的方面。关于本领域技术人员已知或即将获知的、对本公开所描述各个方面的元素的所有结构和功能上的等同变换,都将由权利要求所覆盖。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献