利用单指令在多种模式中执行aes加密或解密的制作方法

文档序号:7803430阅读:297来源:国知局
利用单指令在多种模式中执行aes加密或解密的制作方法
【专利摘要】一种用于执行加密的处理器,包括:解码器,用于对所述处理器接收到的指令进行解码;执行单元,用于执行所述指令;寄存器文件,其通过内部互连耦合至所述执行单元;所述执行单元包括密码电路,该密码电路用于响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将明文值与第二值进行逻辑结合以产生一结合结果,并且使用高级加密标准(AES)算法和由第一隐式寄存器提供的密钥来对该结合结果进行加密以产生一加密结果,其中,所述第一操作数用于确定所述多种加密模式中的一种模式。
【专利说明】利用单指令在多种模式中执行AES加密或解密
[0001]本申请是申请日为2008年3月14日、申请号为200810096342.2的同名专利申请
的分案申请。
【背景技术】
[0002]所要求保护的发明的具体实现通常会涉及到处理器,尤其是涉及用于使处理器执行高级加密标准(AES)加密或解密的指令。
[0003]AES是由美国国家标准与技术研究院(NIST)制定的高级加密标准,并在FIPSPublicationl97中进行定义。AES可以具有可变的密钥尺寸。其中3种可接受的密钥尺寸为:128比特、192比特以及256比特。AES加密使用128比特的明文输入和一密钥,然后产生128比特的密文(例如,已被用AES加密过的明文)输出。类似地,AES解密执行反向的操作,其使用128比特的密文和一密钥,产生128比特的明文。
[0004]AES可以用于多种操作模式。一种较常见的模式是所谓的密码块链接(CBC)模式。一种稍微不常见的模式是所谓的电子密码本(ECB)模式。其它的模式也是可以的,例如新兴的所谓的计数器模式(CTR),它在概念上类似于ECB模式。
[0005]在计算系统中,期望有一个或多个针对专用于AES加密和/或解密的处理器的指令。
【专利附图】

【附图说明】
[0006]附图被并入且构成本说明书的一部分,其说明了与本发明的原理相一致的一个或多个具体实现,并与说明书一起解释了这些具体实现。这些附图不必是按比例确定的,而是重点在于解释本发明的原理。这些附图中:
[0007]图1说明了根据某些具体实现的示例计算机系统;
[0008]图2说明了根据某些具体实现的处理器的寄存器文件;
[0009]图3概念性地说明了用于ECB模式的AES加密指令;
[0010]图4说明了在ECB模式中使用AES加密指令的示例代码;
[0011]图5概念性地说明了用于CBC模式的AES加密指令;
[0012]图6概念性地说明了用于CBC模式的两个链接的AES加密指令;
[0013]图7说明了在CBC模式中使用AES加密指令的示例代码;
[0014]图8概念性地说明了用于CTR模式的AES加密指令;
[0015]图9说明了在CTR模式中使用AES加密指令的示例代码。
【具体实施方式】
[0016]以下详细说明参考了所附各图。不同附图中可以使用相同的参考数字来标识相同或相似的要素。在以下的描述中,为了解释而不是限定,阐述了许多特定细节,例如特殊的结构、架构、接口、技术等,以便提供对于所要求保护的发明的各个方面的透彻理解。然而,也可以在与这些特定细节不同的其它实例中实现所要求保护的本发明的各个方面,这对于受益于本公开内容的所属领域技术人员而言是显而易见的。在某些实例中,省略了对公知的设备、电路和方法的描述,以避免不必要的细节使本发明的说明书变得难以理解。
[0017]
[0018]本申请描述了在处理器中包括用于执行AES加密和/或解密的指令的方法、装置和系统的实施例。两个这样的指令是:
[0019]AESENCRYPT(argl)xmmdestination, (arg2)xmmsource/memory
[0020]AESDECRYPT(argl)xmmdestination, (arg2)xmmsource/memory
[0021]在加密情况下,xmmsource/memory提供要用的明文,而xmmdestination将是密文。在解密情况下,它们的角色颠倒,信源是密文而目标是明文。在某些具体实现中,如下文将进一步解释的,两个操作数都被用于加密或解密。这两种情况下,通过使用一个或多个128比特的隐式寄存器(implicit register)(例如,以下将更详细描述的XMMO和XMM1)将加密密钥提供给AESENCRYPT和/或AESDECRYPT指令。
[0022]尽管以下许多描述都将集中于加密指令AESENCRYPT,但加密领域的技术人员应当理解,也可以以类似的方式替代和/或使用解密指令AESDECRYPT以用于进行解密。主要描述AESENCRYPT仅仅是为了说明的清楚和方便,并不表示这些指令中的一个比另一个更重要。
[0023]计算机系统
[0024]图1示出了根据本发明的一个实施例的示例计算机系统100。计算机系统100包括用于信息通信的互连101。该互连101可以包括一个多点总线、一个或多个点到点互连、或者这两者的任意组合、以及任何其它的通信硬件和/或软件。
[0025]图1示出了用于处理信息的处理器109,其与互连101耦合。处理器109代表任意类型架构(包括CISC或RISC类型架构)的中央处理单元。
[0026]计算机系统100进一步包括随机存取存储器(RAM)或其它动态存储设备(被称为主存储器104),其耦合至互连101以存储将被处理器109执行的信息和指令。主存储器104也可以在处理器109执行指令的过程中用于存储临时变量或其它中间信息。
[0027]计算机系统100还包括只读存储器(ROM) 106和/或其它静态存储设备,其耦合至互连101以存储处理器109的静态信息和指令。数据存储设备107耦合至互连101以用于存储信息和指令。
[0028]图1还示出了处理器109包括执行单元130、寄存器文件150、高速缓存160、解码器165和内部互连170。当然,处理器109还包含了对于理解本发明而言不必要的其它电路。
[0029]解码器165用于对处理器109接收到的指令进行解码,执行单元130用于执行处理器109接收到的指令。除了识别通用处理器中所实现的典型指令外,解码器165和执行单元130还识别这里所描述的用于执行AES加密或解密(AESENCRYPT或AESDECRYPT)操作的指令。解码器165和执行单元130识别用于对压缩(packed)和非压缩数据执行AESENCRYPT或AESDECRYPT操作的指令。
[0030]执行单元130通过内部互连170耦合至寄存器文件150。同样地,内部互连170不必一定是多点总线,在替代性的实施例中,也可以是点到点互连或者其它类型的通信路径。
[0031]寄存器文件150表示处理器109的一个存储区域,其用于存储包括数据在内的信息。应该理解,本发明的一个方面在于所描述的用于对压缩或非压缩数据执行AESENCRYPT或AESDECRYPT操作的指令实施例。根据本发明的这个方面,用于存储数据的存储区域并不是关键的。不过,寄存器文件150的实施例将参照图2随后描述。
[0032]执行单元130耦合至高速缓存160和解码器165。高速缓存160用于对来自例如主存储器104的数据和/或控制信号进行缓存。解码器165用于将处理器109接收到的指令解码为控制信号和/或微代码入口点(microcode entry point)。这些控制信号和/或微代码入口点可从解码器165转发到执行单元130。
[0033]响应于这些控制信号和/或微代码入口点,执行单元130执行恰当的操作。例如,如果接收到AESENCRYPT或AESDECRYPT指令,解码器165使得执行单元130执行所需的比特加密或解密。至少在某些实施例中,执行单元130可以使用一个或多个密钥来加密或解密128比特的明文或密文(参见,例如密码电路145)。
[0034]解码器165可以用任意数量的不同机制来实现(例如,查找表、硬件实现、PLA等)。因此,虽然由解码器165和执行单元130执行各种指令在此处可以用一系列if/then语句来表示,但应该理解,一条指令的执行并不需要这些if/then语句的一系列处理。而是,任何用于逻辑地执行该if/then处理的机制都被认为落入本发明的范围内。
[0035]图1还示出了可以耦合至计算机系统100的数据存储设备107 (例如,磁盘、光盘、和/或其它机器可读媒体)。另外,所示的数据存储设备107包括要由处理器109执行的代码195。代码195可包括AESENCRYPT或AESDECRYPT指令142的一个或多个实施例,并且其可以被写入以使处理器109为了任何与安全相关的目的而利用AESENCRYPT或AESDECRYPT指令142来执行比特AES加密或解密。
[0036]计算机系统100还可以通过互连101耦合至显示设备121,以便向计算机用户显示信息。显示设备121可以包括帧缓冲器、专业图形渲染设备、液晶显示器(LCD)、和/或平板显示器。
[0037]输入设备122包括字母数字和其它按键,其可被耦合至互连101以向处理器109传送信息和命令选择。另一类用户输入设备是光标控制器123,例如鼠标、轨迹球、笔、触摸屏、或者光标方向键,用于向处理器109传送方向信息和命令选择、以及用于控制显示设备121上的光标移动。这类输入设备典型地具有两个轴的自由度,第一轴(例如,X)和第二轴(例如,y),这使得该设备能够指定平面上的位置。然而,本发明并不限于输入设备只有二自由度。
[0038]可耦合至互连101的另一个设备是硬拷贝设备124,其可以用于在介质(例如纸、胶片、或相似类型的媒体)上印制指令、数据或其它信息。另外,计算机系统100可以耦合至用于声音记录和/或回放的设备125,例如耦合至麦克风的用于记录信息的音频数字化转换器(audio digitizer)。此外,设备125可以包括扬声器,其稱合至数模(D/A)转换器,用于回放数字化的声音。
[0039]计算机系统100可以是计算机网络(例如,LAN)中的一个终端。计算机系统100可以是计算机网络的一个计算机子系统。可选地,计算机系统100包括视频数字化设备126和/或通信设备190 (例如,串行通信芯片、无线接口、以太网芯片或调制解调器,其提供与外部设备或者网络的通信)。视频数字化设备126可用于捕获能够传送至计算机网络中的其它计算机的视频图像。[0040]在至少一个实施例中,处理器109支持与由加利福尼亚州Santa Clara的英特尔公司制造的现有处理器(比如说,Intel? Pentium?.处理器、Intel? Pentium? Pro处理器、Intel? Pentium? I [处理器、Intel? Pentium? III 处」:Ψ.器、Intel? Pentium?4 处理器、Intel? Itanium? 处理器、Intel? Itanium? 2 处理器、或者Intel? Core? Duo
处理器)所使用的指令集相兼容的指令集。因此,处理器109除了支持本发明中的操作外,也可以支持现有的处理器操作。处理器109也可适于用一种或多种工艺技术来制造,并通过足够详细地表示在机器可读媒体上的方式,其适于促进所述制造。虽然在以下描述中本发明被具体表现为基于x86的指令集,但是替代性的实施例可将本发明具体表现为其它的指令集。例如,本发明可具体表现为一 64位处理器,其使用的指令集不同于基于x86的指令集。
[0041]图2示出了根据本发明的一个替代性实施例的处理器的寄存器文件。寄存器文件150可以用于存储信息,包括控制/状态信息、整数数据、浮点数据和压缩数据。在图2所示的实施例中,寄存器文件150包括整数寄存器201、寄存器209、状态寄存器208、扩展寄存器210以及指令指针寄存器211。状态寄存器208、指令指针寄存器211、整数寄存器201和寄存器209都耦合至内部互连170。另外,扩展寄存器210也耦合至内部互连170。内部互连170可以是多点总线,但这不是必须的。替代地,内部互连170可以是任意其它类型的通信路径,包括点到点互连。
[0042]在至少一个实施例中,扩展寄存器210被用于压缩的整数数据和压缩的浮点数据。在替代性的实施例中,扩展寄存器210可用于标量数据、压缩的布尔数据、压缩的整数数据和/或压缩的浮点数据。当然,替代性的实施例可被实现为包含更多或更少组的寄存器、在每组中具有更多或更少的寄存器、或者在每个寄存器中具有更多或更少的数据存储比特,这些都不脱离本发明的更广范围。
[0043]在至少一个实施例中,整数寄存器201被实现为存储32比特,寄存器209被实现为存储80比特(所有80比特都被用于存储浮点数据,而只有64比特用于压缩数据),扩展寄存器210被实现为存储128比特。此外,扩展寄存器210可以包含8个寄存器,XR0213a至XR7213h。XR0213a、XR1213b和XR2213c都是寄存器210中单个寄存器的示例。例如,128比特的扩展寄存器210可以用于提供AESENCRYPT指令的一个或两个操作数,并且可用于提供由该AESENCRYPT指令使用的一个或两个隐式寄存器(例如,XMMO和XMM1)。
[0044]在另一个实施例中,每个整数寄存器201包含64比特,每个扩展寄存器210包含64比特,并且扩展寄存器210包含16个寄存器。在一个实施例中,扩展寄存器210中的两个寄存器可以被成对操作。在另一个替代性的实施例中,扩展寄存器210包含32个寄存器。
[0045]AES加密和/或解密操作
[0046]图3概念性地示出了用于ECB模式的AES加密指令(AESENCRYPT Argl, Arg2) 310。如图所示,AESENCRYPT310具有两个操作数,其中一个是Arg2,它提供将被加密的明文。加密后的密文被写入到AESENCRYPT310的Argl中。加密密钥由一个或多个隐式的128比特寄存器XMMO和XMMl提供。如果例如加密密钥长度为128比特,则它可由一个寄存器XMMO来提供。在这种情况下,另一个寄存器XMMl可用于其它功能,将参照图4进行说明。
[0047]如图3所示,在ECB模式中,AESENCRYPT310是用一个密钥对来自于Arg2的明文进行加密。一种用于确定AESENCRYPT310工作于哪种模式(例如,ECB、CBC等)的方案是利用操作数来确定模式。在一个具体实现中,AESENCRYPT310对其操作数Argl和Arg2执行异或(XOR)后,再使用密钥对该结果进行加密。这种方案允许AESENCRYPT310具有一个或两个输入,将参考图4对其作进一步的详细说明。如果只需要一个输入,例如图3所示的用于ECB模式的Arg2,则另一个操作数Argl可被设为0,从而AESENCRYPT310的XOR运算只生成第一个操作数Arg2,以用密钥进行加密。如何将这种XOR方案用于CBC和CTR模式将参照图5-9进一步说明。
[0048]另一种用于确定AESENCRYPT310工作于何种模式的方案(未示出)是在AESENCRYPT310指令中除了两个操作数Argl和Arg2之外,使用一个立即字节(immediatebyte)。与对操作数执行XOR的第一种方案相比,第二种方案可以基于立即字节的内容来指定如何和/或是否使用AESENCRYPT310的一个或两个操作数。除这两种方案之外的其它方案都是可能的,并设想使单个的二操作数指令(例如AESENCRYPT310 (或AESDECRYPT))可用于多种不同的模式(例如,ECB、CBC、CTR等)中。
[0049]图4示出了用于在ECB模式中使用AESENCRYPT310的示例代码410 (例如,当其被处理器109执行时,构成一个方法)。首先加密密钥被(通过MOV指令或类似指令)装入一个隐式寄存器ΧΜΜ0。随后一个值(例如,16)被(通过MOV指令或类似指令)装入另一个寄存器ECX,以设定要进行AES加密的128比特明文块的数目。将该值乘以128比特可以指定将被代码410加密的明文的总长度。上述初始化完成后,包括AESENCRYPT310的循环将被执行ECX次。
[0050]在该循环中,对于ECB模式,第二隐式寄存器XMMl通过装入O值而被清零。如上所述,当AESENCRYPT310对该O值与第二操作数执行XOR时,产生的是该第二操作数,这正是在ECB模式中工作的期望结果。转向下一条指令,AESENCRYPT310取得Plainmemory [ECX]中的明文,利用XMMO中的密钥加密该明文,并将该结果写入到第二隐式寄存器XMM1。随后XMMl中的密文被存储到Ciphermemory [ECX],并且在跳转回到该循环的起点之前将ECX中的循环值递减。
[0051]在下一次循环中,再一次清空了 XMMl中之前128比特的加密结果。这样,AESENCRYPT310令对应于ECX中递减值的Plainmemory [ECX]的单个输入被用XMMO中的密钥进行加密。继续代码410的循环执行,直到由装入ECX的初始值指定的所有明文块都被以ECB模式进行了 AES加密。
[0052]图5概念性地示出了用于CBC模式的AES加密指令(AESENCRYPTArgl,Arg2) 310。如图所示,AESENCRYPT310具有两个操作数,其中一个操作数Arg2提供将被加密的明文。在CBC模式中,另一个操作数Argl提供来自先前加密块的所谓的“旧”密文,AESENCRYPT310在加密之前将其与所述明文进行X0R。加密密钥由一个或多个隐式的128比特寄存器XMMO和XMMl提供。对于当前块的加密后的密文被覆写到AESENCRYPT310的Argl。
[0053]图6概念性地示出了用于CBC模式的两个链接的AES加密指令600。这直观地显示了 CBC模式的暂时性(时间上首先发生的运算出现在图的左边),其中对前一个加密块的结果与新的明文进行X0R。这将产生一个比ECB模式更加随机的密文(例如,在ECB模式中,如果是相同的密钥,则相同的明文块将被加密为相同的密文块)。图6所示的CBC模式中,针对一个给定明文块的密文取决于前一轮的密文结果。[0054]图7示出了用于在CBC模式中使用AES加密指令的示例代码710 (例如,当其被处理器109执行时,构成一个方法)。首先,加密密钥被(通过MOV指令或类似指令)装入一个隐式寄存器ΧΜΜ0。然后一个值(例如,16,但该数字可以更高或更低)可被(通过MOV指令或类似指令)装入另一个寄存器ECX,以设定要进行AES加密的128比特明文块的数目。将该值乘以128比特可以指定将被代码710加密的明文的总长度。同样,第一次执行该循环时,XMMl被装入一个O而被清零,这是因为没有来自先前块的密文可用于与第一个明文块相结合。上述初始化完成后,包括AESENCRYPT310的循环将被执行ECX次。
[0055]在该循环中,AESENCRYPT310取得Plainmemeory [ECX]中的明文,将其与XMMl中的值(例如,第一遍循环中为O)进行X0R,用XMMO中的密钥对该XOR结果进行加密,并将结果写入到第二隐式寄存器XMMl中以覆盖其中已经存在的值。随后XMMl中的密文被存储到Ciphermemory [ECX]中,并在跳转回到该循环的起点之前将ECX中的循环值递减。
[0056]在下一次循环中,与ECB模式不同,XMMl中前一次128比特的非O密文结果不被清零。相反地,根据CBC模式,在使用密钥进行加密前,AESENCRYPT310将该加密结果与下一个明文块进行X0R。这样,AESENCRYPT310具有两个输入,即对应于ECX中递减值的Plainmemory [ECX]、以及XMMl中来自前一次循环的密文值。AESENCRYPT310指令将这两个输入进行XOR并使用XMMO中的密钥对该结果进行加密。继续代码710的循环执行,直到由装入ECX的初始值指定的所有明文块都被以CBC模式进行了 AES加密。
[0057]以上描述的方案和系统可以有利地使用一个二操作数指令来执行CBC模式和ECB模式加密。该指令支持在AES最常见的两种模式中实现更紧密的AES循环。该指令具有有限数量的操作数,并且将AES最常见的使用转移到单指令中,该单指令仍支持次常见的使用。
[0058]图8概念性地示出了用于CTR模式的AES加密指令(AESENCRYPT Argl, Arg2) 810。如图所示,AESENCRYPT810具有两个操作数,其中一个操作数Arg2提供将被加密的计数器值。在CTR模式中,另一个操作数Argl提供将被加密的明文,在加密后由AESENCRYPT810将其与明文进行X0R。加密密钥由一个或多个隐式的128比特寄存器XMMO和XMMl提供。对于当前块的加密后的密文被覆写到AESENCRYPT810的Argl。
[0059]图9示出了用于在CTR模式中使用AES加密指令的示例代码910 (例如,当其被处理器109执行时,构成一个方法)。首先加密密钥被(通过MOV指令或类似指令)装入一个隐式寄存器XMMO中。然后一个值(例如,16,但该数字可以更高或更低)被(通过MOV指令或类似指令)装入另一个寄存器ECX,以设定要进行AES加密的128比特明文块的数目。将该值乘以128比特可以指定将被代码910加密的明文的总长度。然后,一个计数器值被(通过MOV指令或类似指令)装入另一个XMM寄存器(例如XMM4)。上述初始化完成后,包括AESENCRYPT810的循环将被执行ECX次。
[0060]在该循环中,AESENCRYPT810取得计数器值,将实际加密该计数器值,随后将其与明文数据执行XOR以产生密文。然后XMM3中的密文被存储到Ciphermemory [ECX],并且在跳转回到该循环的起点之前将ECX中的循环值递减。随后,该计数器被适当调整(通过ADD、MUL或其它指令)。该循环的其它过程与ECB模式相同。
[0061]以上对一个或多个实施例的描述提供了示例和说明,但是其并不意味着穷举或者将本发明的保护范围限制在其所公开的精确形式内。基于以上启示可知各种修改或变型,或者也可以从对本发明的各种具体实现的实施中获得。
[0062]例如,尽管针对128比特的密钥描述了 AES加密和解密,但FIPS Publicationl97中的NIST标准允许192比特和256比特的密钥。在这种情况下,XMMl可以用于192比特或256比特密钥中另外的64比特或者128比特。在这种情况下,可以使用某些其它128比特寄存器(例如,XMM2、XMM3等),来代替代码410或代码710或代码910 (或者任何其中包含AESENCRYPT或AESDECRYPT的代码)中的XMMl,这是因为密钥的一部分将存储在XMMl中。
[0063]尽管以上描述了 AESENCRYPT,但是也可以以类似方式使用AESDECRYPTArgl, Arg2,以支持在ECB模式、CTR模式以及CBC模式中的AES解密。本领域技术人员将认识到,使用ECB模式的AESDECRYPT会相对直接,而CBC模式将带来额外的计算,例如对于在加密过程中由AESENCRYPT执行的XOR运算的逆或反运算。
[0064]应该理解,尽管没有呈现AESENCRYPT和AESDECRYPT如何精确执行AES算法的细节,但这些都在加密领域的技术人员的能力范围之内。特定的实施例可能旨在对其中执行AESENCRYPT和AESDECRYPT的特定处理器109进行优化。在某些实施例中,这些指令被用机器语言优化从而使最快速的执行成为可能。这些优化的细节与所请求保护的发明并非特别相关,所以为了说明的清楚而将其省略。
[0065]本申请的说明书中所使用的元素、动作或指令不应被解释为对本发明是关键的或基本的,除非被明确描述为这样。而且,如这里所使用的,冠词“一个”旨在包括一项或多项。可对所要求保护的发明的上述具体实现进行许多改变或变型,而本质上并不脱离本发明的实质和原理。所有这样的变型和改变在这里都应该被认为包含在本公开的范围之内并受所附权利要求的保护。
【权利要求】
1.一种用于执行加密的处理器,包括: 解码器,用于对所述处理器接收到的指令进行解码; 执行单元,用于执行所述指令; 寄存器文件,其通过内部互连耦合至所述执行单元; 所述执行单元包括密码电路,该密码电路用于响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将明文值与第二值进行逻辑结合以产生一结合结果,并且使用高级加密标准(AES)算法和由第一隐式寄存器提供的密钥来对该结合结果进行加密以产生一加密结果,其中,所述第一操作数用于确定所述多种加密模式中的一种模式。
2.如权利要求1所述的处理器,其中,在第一模式中并且响应于所述单个加密指令,所述执行单元执行第一循环以:清空第二隐式寄存器,对从第一存储器中由计数器值指示的位置获得的所述第二操作数所提供的明文值与由所述第二隐式寄存器提供的第二值进行逻辑结合以产生所述结合结果,使用AES算法和所述密钥来对所述结合结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第一循环直到所述计数器值为零。
3.如权利要求1所述的处理器,其中,在第二模式中并且响应于所述单个加密指令,所述执行单元执行第二循环以:对所述明文值与所述第二值进行逻辑结合以产生所述结合结果,使用AES算法和所述密钥对所述结合结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由计数器值指示的位置中,递减所述计数器值,并且重新执行所述第二循环直到所述计数器值为零。
4.如权利要求1所述的处理器,其中,所述密码电路用于对所述明文值和所述第二值进行异或(XOR),以产生所述结合结果,并且所述第一操作数中被写入所述加密结果,而所述第二操作数提供所述明文值。
5.如权利要求1所述的处理器,还包括: 第一寄存器,用于存储所述第二值;以及 第二寄存器,用于存储所述密钥,其中所述第二寄存器是用于所述单个加密指令的隐式寄存器。
6.如权利要求5所述的处理器,其中,所述密码电路用于将所述加密结果存储在所述第一寄存器中。
7.如权利要求6所述的处理器,其中,所述第二值是前一次加密的结果或者O。
8.如权利要求1所述的处理器,其中,所述明文值和所述加密结果的长度均为128比特。
9.一种用于执行加密的方法,包括: 响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将该指令的第一操作数与该指令的第二操作数相结合,以产生一结果; 根据高级加密标准(AES)算法,使用由第一隐式寄存器提供的密钥对该结果进行加密,以产生一加密结果,所述第一操作数用于确定所述多种加密模式中的一种模式, 其中,在第一模式中并且响应于所述单个加密指令,执行第一循环以执行所述加密,并且在在第二模式中并且响应于所述单个加密指令,执行第二循环以执行所述加密。
10.如权利要求9所述的方法,其中,在所述第一循环中,使用处理器的执行逻辑来:清空第二隐式寄存器,对从第一存储器中由计数器值指示的位置获得的所述第二操作数所提供的明文值与由所述第二隐式寄存器提供的第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥来对所述结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第一循环直到所述计数器值为零。
11.如权利要求10所述的方法,其中,在所述第二循环中,使用所述执行逻辑来:对所述明文值与所述第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥对所述结果进行加密以产生所述加密结果,将所述加密结果存储在所述第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第二循环直到所述计数器值为零。
12.如权利要求9所述的方法,其中,所述密钥的长度为128比特、192比特或256比特。
13.一种机器可读介质,所述机器可读介质包括代码,所述代码在被执行时使得机器执行如权利要求9-12中的任一项所述的方法。
14.一种用于执行加密的装置,包括: 第一逻辑,用于响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将该指令的第一操作数与该指令的第二操作数相结合,以产生一结果; 第二逻辑,用于根据高级加密标准(AES)算法,使用由第一隐式寄存器提供的密钥对该结果进行加密,以产生一加密结果,其中,所述第一操作数用于确定所述多种加密模式中的一种模式;以及 第三逻辑,用于将该加密结果放在该指令的第一操作数的位置上。
15.如权利要求14所述的装置,其中,在第一模式中并且响应于所述单个加密指令,执行逻辑执行第一循环以:清空第二隐式寄存器,对从第一存储器中由计数器值指示的位置获得的所述第二操作数所提供的明文值与由所述第二隐式寄存器提供的第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥来对所述结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第一循环直到所述计数器值为零。
16.如权利要求15所述的装置,其中,在第二模式中并且响应于所述单个加密指令,所述执行逻辑执行第二循环以:对所述明文值与所述第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥对所述结果进行加密以产生所述加密结果,将所述加密结果存储在所述第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第二循环直到所述计数器值为零。
17.如权利要求14所述的装置,其中,所述第一逻辑包括: 第四逻辑,用于对所述指令的第一操作数和该指令的第二操作数进行异或,以产生所述结果。
18.如权利要求14所述的装置,其中,所述第二逻辑包括: 第五逻辑,用于从一个或多个预定的寄存器中获得所述密钥。
19.如权利要求14所述的装置,其中,所述密钥的长度为128比特、192比特或256比特。
20.如权利要求14所述的装置,其中,所述第二操作数是长度为128比特的要被加密的明文。
21.如权利要 求14所述的装置,其中,所述第一操作数是O。
22.如权利要求14所述的装置,其中,所述第一操作数是来自先前加密操作的先前加S结果。
【文档编号】H04L9/06GK103957100SQ201410197191
【公开日】2014年7月30日 申请日期:2008年3月14日 优先权日:2007年3月14日
【发明者】M·狄克逊, S·陈努帕蒂, S·格伦 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1