并行运算模式中优化高级加密标准加解密的方法和装置的制作方法

文档序号:2404527阅读:221来源:国知局
专利名称:并行运算模式中优化高级加密标准加解密的方法和装置的制作方法
并行运算模式中优化高级加密标准加解密的方法和装置领域本公开涉及高级加密标准(AES),尤其涉及优化AES加密/解密。些旦密码学是一种依赖于算法和密钥来保护信息的工具。算法是复杂的数学算 法,而密钥是一串位。有两种基本类型的密码学系统私钥系统和公钥系统。 也被称为对称系统的私钥系统具有由两方或更多方共享的单个密钥("私钥")。 单个密钥用于加密和解密信息。由国家标准技术研究所(NIST)公布作为联邦信息处理标准(FIPS) 197 的高级加密标准(AES)是私钥系统。AES是可加密和解密信息的对称块密码。加密(密码)利用私钥(密码密钥)执行一系列的变换以将称为"明文" 的可理解数据变换成称为"密文"的不可理解形式。密码中的变换可包括(1) 利用异或(XOR)运算将轮回(round)密钥(从密码密钥导出的值)加至状 态(字节的二维阵列);(2)利用非线性字节替换表(S-Box)处理状态;(3) 以不同的偏移循环地移位状态的最后三行;以及(4)取出状态的所有列并混 合它们的数据(相互独立地)以产生新的列。解密(逆向译码)利用密码密钥执行一系列变换以将"密文"块变换成相 同大小的"明文"块。逆向译码中的变换是密码中的逆向变换。在AES标准中指定Rijindael算法来利用长度是128位、192位和256位 的密码密钥处理128位数据块。通常可将不同的密钥长度称为AES-128、 AES-192和AES-256。AES算法在10、 12或14个连续轮回中将明文变换成密文或将密文变换 成明文,且轮回的数量取决于密钥的长度。附图简述在参照附图进行以下的详细描述时所要求保护的主题的实施例的特征将变得显而易见,其中相似的附图标记描述相似的部件,附图中

图1是包括在通用处理器中执行AES加密和解密的指令的系统的框图; 图2是图1所示的处理器的实施例的框图;图3是示出根据本发明的原理通过对不同的数据块并行地执行独立运算 来提高AES加密/解密运算的吞吐量的方法的实施例的流程图;以及 图4示出每个周期分派一个AES轮回指令的示例。尽管以下的详细描述将参照所要求保护主题的说明性实施例进行,但它的 很多替换、修改和变化对本领域的技术人员是显而易见的。因此,旨在广泛地 理解所要求保护的主题,并且仅按照所附权利要求中阐述地限定所要求保护的 主题。详细描述高级加密标准(AES)算法是通常在软件或专用处理器中执行的计算密集 算法。AES算法在软件中通过执行存储在存储器中的加载/存储/递增中央处理 单元(CPU)指令序列来执行。该变换很慢,因为AES算法消耗很多CPU周 期来变换明文或密文的每个字节。因此,加密一般仅用于加密计算机中存储的 信息的子集,例如,可被归类为"绝密"的信息。然而,需要加密更多存储在 计算机上的信息。例如,如果加密存储在移动计算机中的所有信息,则在移动 计算机丢失的情况下可保护该信息。AES是对128位块运算的块密码,且密钥大小是128、 192或256位。AES 算法在10、 12或14连续轮回中将128位明文块变换成128位密文块(加密), 或将128位密文块变换成128位明文块(解密),且轮回的数量取决于密钥的 大小(128、 192或256位)。对于每个轮回(10、 12或14)重复-一运算序列。 加密轮回的运算序列包括(1)利用异或(XOR)运算将轮回密钥(从密码 密钥导出的值)加至状态(字节的二维128位阵列);(2)利用非线性字节 替换表(S-Box)处理状态;(3)以不同的偏移循环地移位状态的最后三行; 以及(4)取出状态的所有列并混合它们的数据(相互独立地)以产生新的列。块密码可使用多种运算模式之一。运算模式包括向任何长度的消息提供保 密性的电子密码本(ECB)、密码块链(CBC)、输出反馈(OFB)、计数和密码反馈5(CFB)。诸如用密码块链-消息认证码(CCM)的计数、伽罗瓦计数模式(GCM) 和偏移密码本模式(OCB)的其它运算模式确保保密性和消息完整性。在ECB模式中,将待加密的明文分成n位块,且分别加密每个块,即独 立于其它块加密各块。在CBC模式中, 一次处理n位明文,并将链接机制用 于加密明文块,且明文块的加密取决于前一块的加密。例如,可如以下的表l 所示地描述用于加密运算的CBC运算模式 初始化向量(IV),Cj=AES—ENCRYPT (P」'XOR Cj》对于j=l, 2,…,加密的块数(NB). 其中Cj是密文块数j,以及 Pj是明文块(输入)数j。 表1在CBC运算模式中,在计算Cj.,之前不能计算Cj,因此CBC运算模式是 串行模式。并行运算模式是其中一个块的加密/解密与其它块的加密/解密结果无关的 运算模式。例如,ECB和计数运算模式是并行运算模式。以下在表2中示出利 用ECB模式的AES加密运算的伪代码的示例,并在表3中示出利用计数运算 模式的AES加密运算的伪代码的示例forj从1到待加密的块数(NB)TargetBuffer [j] = AES—ENCRYPT—PROCEDURE (DataBlock[j], cipher—key) End循环 其中DataBlock 〃具有保持待加密数据的NB个128位的条目的缓 冲器TargetBuffer 〃具有NB个128位的条目的缓冲器以存储加密结 果(可与DataBlock相同) 表2初始化COUNTER (随机初始化向量(IV))6forj从1到待加密的块数(NB)Tmpl = AES一ENCRYPT PROCEDURE (COUNTER, cipher—key)TargetBuffer [j〗=XOR (Tmpl, DataBlock[j]) End循环 其中DataBlock //具有保持待加密数据的NB个128位的条目的缓冲器TargetBuffer//具有NB个128位的条目的缓冲器以存储加密结 果(可与DataBlock相同)表3表2和表3中的加密运算(AES—ENCRYPT_PROCEDURE)可在指令集 扩展中执行,用于在通用处理器中执行AES加密和解密。单个AES加密运算 包括可经由串行AES指令序列实施的串行运算序列。以下在表4中示出执行 多个128位数据块的加密的指令序列的示例。 for (i=l; i <NB; i++)temp = Load (DataBlock [i])temp = xor (temp, RK
); 〃轮回0for(j=l;j <10;j++)〃对于10次AES轮回 temp = AESENC (temp, RK [j]); temp = AESENCLAST(temp, RK [10]); 将temp存储到TargetBuffer [i]其中-NB是待加密的块数;IV是用于初始化计数器的随机数;DataBlock是存储待加密数据的缓冲器;TargetBuffer是存储加密结果的缓冲器;RK是存储轮回密钥的缓冲器;temp是一 128位变量表4表4中示出的AES指令(AESENC, AESENCLAST)串行地处理存储在 128位变量(temp)(也称为状态)中的数据,如AES规范(FIPS出版197) 所定义的。以下在表5中示出用于处理数据的串行运算序列的示例。 For i从1至廿N一BLOCKS do Xmml = BLOCK [i] 〃加载 Xmml = AESENC (Xmml, RK [l]) Xmml = AESENC (Xmml, RK [2]) Xmml = AESENC (Xmml, RK [3])Xmml = AESENC (Xmml, RK [9]) Xmml = AESENCLAST(Xmml, RK [10]) 存储XmmlEnd表5对于待加密的N—Block中的每一个,数据块被存储在寄存器中,例如具有 128位的Xmm寄存器(Xmml)可用于存储128位块。对数据块串行执行10 次加密轮回。对于10次轮回AES运算的轮回1至9,调用AESENC指令以利 用轮回密钥和前一轮回或初始块数据(在轮回1时)来执行轮回运算。调用 AESENCLAST来处理最后的轮回(在该示例中为轮回10)。如果AES轮回指令(AESENC, AESENCLAST)的等待时间由L个处理 器周期(周期)表示。忽略加载、存储和其它额外开销的周期,如果以表5所 示的顺序处理,表5的示例所示的10次AES轮回的N—BLOCKS的处理消耗 约N—BLOCKSH(^L周期。清楚地,执行N—Blocks的加密/解密的总等待时间 取决于各个AES指令(AESENC, AESENCLAST)的等待时间。在本发明的实施例中,根据本发明的原理,通过并行加密(解密)多个数 据块,AES轮回指令(L)的等待时间效应被减少,致使执行AES加密/解密 运算所需的总等待时间减少。在并行运算模式中,可通过在每一个周期分派 AES轮回指令来并行执行不同数据块的不同独立加密(解密),而无需等待前一指令完成。图1是包括在通用处理器中执行AES加密和解密的指令的系统100的框图。系统100包括处理器101、存储器控制器集线器(MCH)或(图形存储器 控制器集线器(GMCH) ) 102和输入/输出(I/O)控制器集线器(ICH) 104。 MCH 102包括控制处理器101和存储器108之间的通信的存储器控制器106。 处理器101和MCH 102通过系统总线116通信。处理器101可以是诸如单核Intel Pentium IV⑧处理器、单核Intel Celeron 处理器、Intel XScale处理器或诸如Intel Pentium D、 Intel Xeon⑧处理器或 Intel Core Duo处理器之类的多核处理器或任何其它类型的处理器等多个处 理器中的任一个。存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器 (SRAM)、同步动态随机存取存储器(SDRAM)、双数据率2 (DDR2) RAM或 Rambus动态随机存取存储器(RDRAM)或任何其它类型的存储器。ICH 104可利用诸如直接媒体接口(DMI)之类的高速芯片至芯片互连114 耦合到MCH 102。DMI支持经由两个单向线路的2千兆位/秒的并发传输速率。 ICH 104可包括用于控制耦合至ICH 104的至少一个存储设备112的通 信存储I/0控制器110。存储设备可以是例如盘驱动器、数字视频盘(DVD) 驱动器、紧致盘(CD)驱动器、独立盘冗余阵列(RAID)、磁带驱动器或其 它存储设备。ICH 104可通过存储协议互连118利用诸如串行连接小型计算机 系统接口 (SAS)或串行高级技术附件(SATA)的串行存储协议与存储设备 112通信。处理器101包括执行AES加密和解密运算的AES函数103。 AES函数 103可用于加密或解密可存储在存储器108和/或存储在存储设备112中的信 息。图2是图1所示的处理器101的实施例的框图。处理器101包括用于解码 从1级(LI)指令高速缓存202接收的处理器指令的取出(fetch)和解码单元 206。用于执行处理器指令的数据可被存储在寄存器堆(register file) 208中。 在一个实施例中,寄存器堆208包括多个128位寄存器,它们被AES轮回指 令用于存储由AES轮回指令所使用的数据。在一个实施例中,寄存器堆208是一组与设置在Intel Pentium MMX处理 器中的具有(单指令多数据(SIMD))流送扩展(SSE)指令集的128位MMX 寄存器类似的128位寄存器。在SIMD处理器中,通过一次加载一个128位块 来分128位块地处理数据。
取出和解码单元206从LI指令高速缓存202取出宏指令,解码宏指令 并将其分成可存储在微码只读存储器(ROM) 214中的称为微运算(pops)的 简单运算。流水线化的执行单元210编排并执行微运算。在所示的实施例中, 执行单元210中的AES函数103包括对AES轮回指令集的微运算。AES指令 是完全流水线化的使得处理器(CPU)可在每个周期分派指令,如果有数据准 备好要处理的话。退役单元212将所执行的指令的结果写入寄存器或存储器。 AES轮回指令所使用的轮回密钥216可被存储在LI数据高速缓存204中并加 载到执行单元210,由微运算用其执行AES轮回指令中的任一个。在Ll数据 高速缓存204中存储轮回密钥216保护轮回密钥216免受侧面信道攻击,例如 尝试获取轮回密钥以便获得存储在系统100中的加密信息。
在AES轮回指令已经被取出和解码单元206解码之后,由执行单元210 执行AES轮回指令包括执行与可存储在微码ROM 214中的AES轮回指令相 关联的微运算。
在一实施例中,提供AES指令集,其包括用于执行加密轮回、解密轮 回、加密最后轮回和解密最后轮回的单独AES轮回指令。在实施例中,每个 AES轮回指令具有唯一的运算码(opcode)。以下在表6中示出关于固定宽度 轮回密钥(例如128位)的一个实施例的AES指令集中的AES轮回指令。 AESENC xmmsrcdst xmm
输入 数据(=目的地),轮回密钥
输出在利用轮回密钥通过AES轮回的变换之后的数据
AESENCLASTxmmsrcdst xmm
输入 数据(=目的地),轮回密钥
输出在利用轮回密钥通过AES最后轮回的变换之后的数据
AESDEC xmmsrcdst xmm
输入 数据(=目的地),轮回密钥输出在利用轮回密钥通过AES轮回的变换之后的数据
AESDECLAST xmmsrcdst xmm
输入 数据(=目的地),轮回密钥
输出在利用轮回密钥通过AES最后轮回的变换之后的数据
表6
AES指令集包括四个AES轮回指令(加密、解密、加密最后轮回、解 密最后轮回)。AES指令集中的AES轮回指令包括单个轮回运算以执行将用 于除最后轮回以外的所有轮回的加密和解密轮回运算。例如,在表6中的 AESENC单轮回指令中,输入数据被存储在128位寄存器(xmmsrcdst)中且轮回 密钥被存储在另一个128位寄存器(Xmm)中。该指令对存储在128位xmmsrcdst 寄存器中的输入数据(源)执行AES轮回运算并用轮回运算的执行结果重写 存储在128位xmmsrcdst寄存器中的输入数据。因此xmmsrcdst首先存储输入 数据,稍后存储AES轮回运算的结果。
密钥的大小可以是128位、192位或256位。将执行的轮回数可以是1、 10、 12或14,这取决于密钥的大小,且每个轮回密钥是固定大小的(128位)。 利用值为10、 12、 14的多个轮回,AES微运算可针对128位、192位或256 位的密钥大小执行标准AES加密和解密。
当将相同的密钥用于很多块时,可将用于每个轮回的轮回密钥(密钥编 排)预先计算并存储在存储器(例如轮回密钥216存储在1级数据高速缓存204 中)中。轮回密钥216可包括具有10个元素的阵列(RK)以存储用于该密钥 的密钥编排。用于AES-128加密的输入密钥被存储在RK
中,且预先计算9 个轮回密钥RK
-RK[l]。
AES指令集还包括用于最后解密轮回的AES解密指令和用于最后加密 轮回的AES加密指令。例如,在表l中的AESENCLAST单轮回指令中,输入 数据被存储在128位寄存器(xmmsrcdst)中,且轮回密钥被存储在另一个128位 寄存器(Xmm)中。该指令对存储在xmmsrcdst寄存器中的输入数据(源)执行 AES轮回运算,并用轮回运算的执行结果重写存储在xmmsrcdst寄存器中的输 入数据。因而,xmmsrcdst首先存储输入数据,稍后存储AES轮回运算的结 果。Xmm寄存器存储用于轮回运算的轮回密钥。
11在一个实施例中,寄存器堆304具有可由AES指令使用的多个128位 寄存器。128位寄存器可存储源运算数、轮回密钥和AES指令的结果。对于第 一轮回,AES指令接收可以是待加密的128位明文或待解密的128位密文的源
运算数。
图3是示出根据本发明的原理通过在不同的数据块上并行执行独立运 算来提高AES加密/解密运算的吞吐量的方法的实施例的流程图。
通过允许数据块的加密/解密流程与另一个数据块的加密/解密流程并 行运行以提供数据用于处理并允许在每个周期分派AES轮回指令,提高了AES 运算的吞吐量。如果(1)将同一密码密钥用在多个数据块上,即密码编排生 成一次,且利用相同的密钥编排处理多个数据块;以及(2)利用单个完全流 水线化的AES轮回指令执行AES轮回,则可并行处理数据块。每个周期分派 一次AES轮回指令增加了 AES加密/解密运算的吞吐量,即使每个AES轮回
指令的等待时间大于一个周期。
将描述关于AES-128加密运算的实施例,即关于利用128位数据块和128 位密钥的具有10次AES轮回的AES加密运算。
以下表7示出可用于通过对不同的数据块并行执行独立运算使AES加密 的吞吐量最大化的软件指令的例子。
For i从0至U N—BLOCKS/8陽l do
xmml = BLOCK [8*i+l], xmm2 = BLOCK [8*i+2]; ... x腿8 = BLOCK
xmml = AESENC (xmml, RK [l]) xmm2 = AESENC (xmm2, RK [l]) xmm3 = AESENC (xmm2, RK [l])
xmm8 = AESENC (xmm8, RK [l]) xmml = AESENC (xmml, RK [2]) xmm2 = AESENC (xmm2, RK [2])
雄m8 = AESENC (xmm8, RK [2])
12xmml = AESENCLAST(xmml, RK [10]) xmm2 = AESENCLAST(xmm2, RK [10])
xmm8 = AESENCLAST(xmm8, RK [10]) 存储xmml;存储xmm2;…存储xmm8 End
表7
参照表7, AES轮回指令"AESENC"在每个周期上分派,因为使用各 Xmm寄存器的运算独立于使用其它Xmm寄存器的运算。如前面讨论的,这 是由于并行运算模式的性质引起的。例如,在ECB模式中,将待加密的明文 分成n位块,且分别加密每个块,即独立于其它块加密各块。如果使用的Xmm 寄存器的数目(在本示例中为8)被选择成大于或等于指令等待时间(L), 即完成该指令的周期数,则可每个周期甚至横跨AES轮回分派AES轮回指令。
在框300,将待加密/解密的多个数据块存储在多个寄存器中(例如,多 个128位Xmm寄存器)。在具有128位寄存器的实施例中,由于AES的数据 块大小是128位,可将不同的数据块存储在k个128位寄存器的每一个中。为 了使性能最大化,用于存储不同他数据块的寄存器的数目取决于AES轮回指 令的等待时间。这允许在每个周期分派一个AES轮回指令,使得可并行处理 多个不同的数据块。处理继续到框302。
在框302, AES加密/解密运算的轮回0中执行的运算不同于其它轮回 中执行的运算。因此,对k个128位寄存器中所存储的k个不同数据块的每一 个顺序地执行轮回0中的运算。处理继续到框304。
在框304,向所有其它的轮回(例如,AES-128的轮回1至10)分派相 同的AES轮回指令。使用与当前轮回相关联的轮回密钥[RK],在每个周期向k 个寄存器中所存储的k个不同的数据块中的每一个分派一个AES指令,用于 当前轮回。在已经向k个寄存器中所存储的k个不同的数据块中的每一个分派 AES轮回指令之后,处理继续到框306。
在框306,如果有另一个轮回用于AES运算,处理继续到框304以处理下一轮回。如果不是的话处理继续到框308
在框308,如果有其它数据块要针对AES运算进行处理,则处理继续 到框300以向k个寄存器加载接下来的数据块。如果不是的话,处理继续到框 310以返回AES运算的结果。
图4示出在每个周期调度一个AES循环指令的示例。在图4所示的示 例中,寄存器的数目(k)和AES轮回指令等待时间(L)两者都是6。图4 示出对于表7所示、并结合图3中的框304讨论的"for"循环之一的AES指令 的分派。当k=L=6时对轮回2的"for"循环分派的指令可被清楚地写成如下 表8所示。
Xmml = AESENC (Xmml, RK[l])
Xmm2 = AESENC (Xmm2, RK[l])
Xmm3 = AESENC (Xmm3, RK[l])
Xmm4 = AESENC (Xmm4, RK[l])
Xmm5 = AESENC (Xmm5, RK[l])
Xmm6 = AESENC (Xmm6, RK[l]) 表8
在该示例中,寄存器是Xmm寄存器堆中的Xmm寄存器,而六个Xmm 寄存器(标注为Xmml-Xmm6)用于存储6个不同的数据块。然而,本发明不 限于Xmm寄存器,且可使用能够存储用于AES轮回的128位数据块且可通过 AES轮回指令存取的任何寄存器。每一个周期都能够分派一 AESENC指令,
因为使用Xmml的运算独立于使用其它Xmm寄存器(Xmm2.....Xmm6)
中的每一个的运算。在理想的编排状况下,该"for"循环的完成需要 k+L-l(6+6-141)个周期。
参照图3,在其中L和k两者都是6的系统中每个周期分派一 AESENC 指令。对于每个轮回(除轮回0之外),利用相同的轮回密钥RK,最初的6 个指令在6个不同的Xmm寄存器(Xmml-Xmm6)上运算。例如,在周期1 中利用Xmml和RK[1]分派AESENC指令,而在周期2中利用Xmm2和RK[2] 分派AESENC指令。在周期1中分派的AESENC具有6周期等待时间且因此 在周期6结束时完成。
14在周期7中分派的第七AESENC指令可使用具有轮回密钥RK[2]的存 储在Xmml寄存器中的第七数据块,因为到此时为止,在周期1中利用存储在 Xmml寄存器中的第一数据块和轮回密钥RK[1]分派的AESENC指令已经完成 (基于6个周期等待时间)。因此,6个AESENC指令可并行独立地运算,且 每一个使用存储在六个Xmm寄存器之一中的不同数据块。因此,使用存储在 多个寄存器中的数据块的第二 AES轮回在总共11周期之后完成,而不是如在 用于两个AES轮回的数据块如前面结合表5所示的示例讨论地串行地处理的 情形中地在12周期之后。在每个周期中分派AESENC指令(或AESENCLAST 指令),直到用于AES-128运算的全部IO个AES轮回完成。
如所讨论的,可并行加密k个数据块,其中根据用于存储数据块的可用 寄存器数选择k。如果寄存器数(k) ^AES指令等待时间(L),则可在每个 周期甚至"横跨AES轮回"分派AES轮回指令,即用于特定AES轮回的所有 AES轮回指令不需要在分派用于下一个AES轮回的AES轮回指令之前完成。
例如,如果第一寄存器用于使用轮回密钥RK[1]处理AES轮回1,则直 到经过k个周期之后第一寄存器才能用于使用轮回密钥RK[2]处理AES轮回2。 因此,如果k》L,存在其中AES指令被分派用于AES轮回1的k个周期,且 在k+l周期中,第一寄存器可用于存储用轮回密钥RK[2]处理的AES轮回2 的数据块。
并行处理k个不同数据块需要用于执行异或(XOR)运算的AES轮回 0的k个周期加上用于处理其它NR AES轮回的其它NR*k+L-l周期。因此可 根据每k个数据块(NR+k+L-l)周期来估计吞吐量,即约为每数据块NR + (L-l)/k周期。
性能受可用寄存器的数目和AES轮回等待时间限制。轮回密钥(RK) 或者可从存储器读取(寄存器-存储器模式)或者可加载到另一个寄存器(寄 存器-寄存器模式)。如果在第一次读取之后将轮回密钥存储在第一级高速缓 存中,则寄存器至存储器模式可提供较高性能。
不使用AES轮回指令的AES-128的实现消耗约每字节12周期。忽略 存储/加载/递增和其它额外开销的等待时间,并假设k=L-8,在串行运算模式 中,利用AES轮回指令的AES-128 (IO次轮回)加密消耗约每128位(16字节)1(^L周期,即约5周期/字节。通过并行处理多个不同的数据块,如前面
所讨论的,8个块的加密消耗NR*k+L-l,即约每8个块72周期(0.56周期/
字节)。因此,对不同数据块并行执行独立运算实现了几乎是在使用如结合表 5所讨论的用于处理数据的串行运算序列时的9倍的性能提升。
通过并行执行运算,AES轮回指令的等待时间(L)被"隐藏",只要 寄存器的数目(k)大于或等于L即可。这允许高效率地使用用于AES运算的 加密/解密的AES轮回指令,AES运算使用对一个块独立于其它块进行运算的 运算模式,例如这种运算模式包括ECB、 CCM、 GCM和计数的运算模式。
本领域的技术人员将显而易见,本发明的实施例中所涉及的方法可具体 体现在包括计算机可用介质的计算机程序产品中。例如,这种计算机可用介质 可包括诸如紧致盘只读存储器(CD ROM)盘或常规ROM设备的只读存储设 备或具有计算机可读程序代码存储于其上的计算机磁盘。
尽管已经参考本发明的实施例具体示出并描述了本发明的实施例,但本 领域的技术人员将理解可在其中进行各种形式和细节的变化,而不背离由所附 权利要求书包括的本发明的实施例的范围。
1权利要求
1. 一种方法,包括利用对一个块独立于其它块进行运算的运算模式对多个固定大小的块执行高级加密标准(AES)运算,包括在k个寄存器中存储所述多个固定大小的块的一组k个连续块,k大于或等于AES轮回指令的等待时间(L),所述AES轮回指令对所述块执行用于AES轮回的AES轮回运算的序列;以及通过为所述k个块中的每一个每周期分派一个AES轮回指令对所述那组k个连续块并行地执行AES轮回运算的序列。
2. 如权利要求l所述的方法,其特征在于,还包括在所述k个寄存器之一中存储针对所述k个块中的每一个的所述AES轮 回指令的结果。
3. 如权利要求l所述的方法,其特征在于,每个块具有128位。
4. 如权利要求l所述的方法,其特征在于,所述寄存器是Xmm寄存器。
5. 如权利要求l所述的方法,其特征在于,所述AES轮回指令是流水线 化的。
6. 如权利要求l所述的方法,其特征在于,所述运算模式是电子密码本 (ECB)、计数、密码块链-消息认证码(CCM)或伽罗瓦计数模式(GCM)。
7. —种装置,包括寄存器堆,用于在k个寄存器中存储多个固定大小的块的一组k个连续块, k大于或等于AES轮回指令的等待时间(L),所述AES轮回指令对所述块执 行用于轮回的AES轮回运算序列;以及执行单元,用于利用对一个块独立于其它块进行运算的运算模式对多个固定大小的块执行高级加密标准(AES)运算,所述执行单元通过在每个周期对 所述k个块中的每一个分派一个AES轮回指令来对所述那组k个连续块并行 地执行AES轮回运算序列。
8. 如权利要求7所述的装置,其特征在于,所述执行单元在所述k个寄 存器之一中存储针对所述k个块中的每一个的所述AES轮回指令的结果。
9. 如权利要求7所述的装置,其特征在于,每个块具有128位。
10. 如权利要求7所述的装置,其特征在于,所述寄存器是Xmm寄存器。
11. 如权利要求7所述的装置,其特征在于,所述AES轮回指令是流水 线化的。
12. 如权利要求7所述的装置,其特征在于,所述运算模式是电子密码本 (ECB)、计数、密码块链消息认证码(CCM)或伽罗瓦计数模式(GCM)。
13. —种包括含相关联信息的机器可访问介质的制品,其中所述信息在被 访问时致使机器执行利用对一个块独立于其它块进行运算的运算模式对多个固定大小的块执 行高级加密标准(AES)运算,包括在k个寄存器中存储所述多个固定大小的块的一组k个连续块,k大 于或等于AES轮回指令的等待时间(L),所述AES轮回指令对所述块 执行用于AES轮回的AES轮回运算序列;以及通过在每个周期向所述k个块中的每一个分派一个AES轮回指令对 所述那组k个连续块并行地执行AES轮回运算序列。
14. 如权利要求13所述的制品,其特征在于,还包括在所述k个寄存器之一中存储针对所述k个块中的每一个的AES轮回指 令的结果。
15. 如权利要求13所述的制品,其特征在于,每个块具有128位。
16. 如权利要求13所述的制品,其特征在于,所述寄存器是Xmm寄存器。
17. 如权利要求13所述的制品,其特征在于,所述AES轮回指令是流水 线化的。
18. 如权利要求13所述的制品,其特征在于,所述运算模式是电子密码 本(ECB)、计数、密码块链消息认证码(CCM)或伽罗瓦计数模式(GCM)。
全文摘要
在具有流水线化执行单元的系统中增加加密/解密运算的吞吐量。可通过在每个周期分派AES轮回指令并行地执行不同数据块的不同独立的加密(解密)。
文档编号G09C1/06GK101520966SQ20091000839
公开日2009年9月2日 申请日期2009年2月27日 优先权日2008年2月27日
发明者A·格雷德斯廷, S·格伦, Z·斯波伯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1