CN101272238B - 利用单指令在多种模式中执行aes加密或解密 - Google Patents

利用单指令在多种模式中执行aes加密或解密 Download PDF

Info

Publication number
CN101272238B
CN101272238B CN200810096342.2A CN200810096342A CN101272238B CN 101272238 B CN101272238 B CN 101272238B CN 200810096342 A CN200810096342 A CN 200810096342A CN 101272238 B CN101272238 B CN 101272238B
Authority
CN
China
Prior art keywords
encrypted
result
operand
instruction
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200810096342.2A
Other languages
English (en)
Other versions
CN101272238A (zh
Inventor
M·狄克逊
S·陈努帕蒂
S·格伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201410197191.5A priority Critical patent/CN103957100B/zh
Publication of CN101272238A publication Critical patent/CN101272238A/zh
Application granted granted Critical
Publication of CN101272238B publication Critical patent/CN101272238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Abstract

一种机器可读介质,其中可以存储有指令,当该指令被机器执行时使得该机器执行一种方法。该方法可以包括将该指令的第一操作数与该指令的第二操作数相结合以产生一个结果。可以根据高级加密标准(AES)算法,使用一个密钥对该结果进行加密以产生一个加密结果。该方法还可以包括将该加密结果放在该指令的第一操作数的位置上。

Description

利用单指令在多种模式中执行AES加密或解密
背景技术
所要求保护的发明的具体实现通常会涉及到处理器,尤其是涉及用于使处理器执行高级加密标准(AES)加密或解密的指令。
AES是由美国国家标准与技术研究院(NIST)制定的高级加密标准,并在FIPS Publication 197中进行定义。AES可以具有可变的密钥尺寸。其中3种可接受的密钥尺寸为:128比特、192比特以及256比特。AES加密使用128比特的明文输入和一密钥,然后产生128比特的密文(例如,已被用AES加密过的明文)输出。类似地,AES解密执行反向的操作,其使用128比特的密文和一密钥,产生128比特的明文。
AES可以用于多种操作模式。一种较常见的模式是所谓的密码块链接(CBC)模式。一种稍微不常见的模式是所谓的电子密码本(ECB)模式。其它的模式也是可以的,例如新兴的所谓的计数器模式(CTR),它在概念上类似于ECB模式。
在计算系统中,期望有一个或多个针对专用于AES加密和/或解密的处理器的指令。
附图说明
附图被并入且构成本说明书的一部分,其说明了与本发明的原理相一致的一个或多个具体实现,并与说明书一起解释了这些具体实现。这些附图不必是按比例确定的,而是重点在于解释本发明的原理。这些附图中:
图1说明了根据某些具体实现的示例计算机系统;
图2说明了根据某些具体实现的处理器的寄存器文件;
图3概念性地说明了用于ECB模式的AES加密指令;
图4说明了在ECB模式中使用AES加密指令的示例代码;
图5概念性地说明了用于CBC模式的AES加密指令;
图6概念性地说明了用于CBC模式的两个链接的AES加密指令;
图7说明了在CBC模式中使用AES加密指令的示例代码;
图8概念性地说明了用于CTR模式的AES加密指令;
图9说明了在CTR模式中使用AES加密指令的示例代码。
具体实施方式
以下详细说明参考了所附各图。不同附图中可以使用相同的参考数字来标识相同或相似的要素。在以下的描述中,为了解释而不是限定,阐述了许多特定细节,例如特殊的结构、架构、接口、技术等,以便提供对于所要求保护的发明的各个方面的透彻理解。然而,也可以在与这些特定细节不同的其它实例中实现所要求保护的本发明的各个方面,这对于受益于本公开内容的所属领域技术人员而言是显而易见的。在某些实例中,省略了对公知的设备、电路和方法的描述,以避免不必要的细节使本发明的说明书变得难以理解。
概述
本申请描述了在处理器中包括用于执行AES加密和/或解密的指令的方法、装置和系统的实施例。两个这样的指令是:
AESENCRYPT(arg1)xmmdestination,(arg2)xmmsource/memory
AESDECRYPT(arg1)xmmdestination,(arg2)xmmsource/memory
在加密情况下,xmmsource/memory提供要用的明文,而xmmdestination将是密文。在解密情况下,它们的角色颠倒,信源是密文而目标是明文。在某些具体实现中,如下文将进一步解释的,两个操作数都被用于加密或解密。这两种情况下,通过使用一个或多个128比特的隐式寄存器(implicitregister)(例如,以下将更详细描述的XMM0和XMM1)将加密密钥提供给AESENCRYPT和/或AESDECRYPT指令。
尽管以下许多描述都将集中于加密指令AESENCRYPT,但加密领域的技术人员应当理解,也可以以类似的方式替代和/或使用解密指令AESDECRYPT以用于进行解密。主要描述AESENCRYPT仅仅是为了说明的清楚和方便,并不表示这些指令中的一个比另一个更重要。
计算机系统
图1示出了根据本发明的一个实施例的示例计算机系统100。计算机系统100包括用于信息通信的互连101。该互连101可以包括一个多点总线、一个或多个点到点互连、或者这两者的任意组合、以及任何其它的通信硬件和/或软件。
图1示出了用于处理信息的处理器109,其与互连101耦合。处理器109代表任意类型架构(包括CISC或RISC类型架构)的中央处理单元。
计算机系统100进一步包括随机存取存储器(RAM)或其它动态存储设备(被称为主存储器104),其耦合至互连101以存储将被处理器109执行的信息和指令。主存储器104也可以在处理器109执行指令的过程中用于存储临时变量或其它中间信息。
计算机系统100还包括只读存储器(ROM)106和/或其它静态存储设备,其耦合至互连101以存储处理器109的静态信息和指令。数据存储设备107耦合至互连101以用于存储信息和指令。
图1还示出了处理器109包括执行单元130、寄存器文件150、高速缓存160、解码器165和内部互连170。当然,处理器109还包含了对于理解本发明而言不必要的其它电路。
解码器165用于对处理器109接收到的指令进行解码,执行单元130用于执行处理器109接收到的指令。除了识别通用处理器中所实现的典型指令外,解码器165和执行单元130还识别这里所描述的用于执行AES加密或解密(AESENCRYPT或AESDECRYPT)操作的指令。解码器165和执行单元130识别用于对压缩(packed)和非压缩数据执行AESENCRYPT或AESDECRYPT操作的指令。
执行单元130通过内部互连170耦合至寄存器文件150。同样地,内部互连170不必一定是多点总线,在替代性的实施例中,也可以是点到点互连或者其它类型的通信路径。
寄存器文件150表示处理器109的一个存储区域,其用于存储包括数据在内的信息。应该理解,本发明的一个方面在于所描述的用于对压缩或非压缩数据执行AESENCRYPT或AESDECRYPT操作的指令实施例。根据本发明的这个方面,用于存储数据的存储区域并不是关键的。不过,寄存器文件150的实施例将参照图2随后描述。
执行单元130耦合至高速缓存160和解码器165。高速缓存160用于对来自例如主存储器104的数据和/或控制信号进行缓存。解码器165用于将处理器109接收到的指令解码为控制信号和/或微代码入口点(microcodeentry point)。这些控制信号和/或微代码入口点可从解码器165转发到执行单元130。
响应于这些控制信号和/或微代码入口点,执行单元130执行恰当的操作。例如,如果接收到AESENCRYPT或AESDECRYPT指令,解码器165使得执行单元130执行所需的比特加密或解密。至少在某些实施例中,执行单元130可以使用一个或多个密钥来加密或解密128比特的明文或密文(参见,例如密码电路145)。
解码器165可以用任意数量的不同机制来实现(例如,查找表、硬件实现、PLA等)。因此,虽然由解码器165和执行单元130执行各种指令在此处可以用一系列if/then语句来表示,但应该理解,一条指令的执行并不需要这些if/then语句的一系列处理。而是,任何用于逻辑地执行该if/then处理的机制都被认为落入本发明的范围内。
图1还示出了可以耦合至计算机系统100的数据存储设备107(例如,磁盘、光盘、和/或其它机器可读媒体)。另外,所示的数据存储设备107包括要由处理器109执行的代码195。代码195可包括AESENCRYPT或AESDECRYPT指令142的一个或多个实施例,并且其可以被写入以使处理器109为了任何与安全相关的目的而利用AESENCRYPT或AESDECRYPT指令142来执行比特AES加密或解密。
计算机系统100还可以通过互连101耦合至显示设备121,以便向计算机用户显示信息。显示设备121可以包括帧缓冲器、专业图形渲染设备、液晶显示器(LCD)、和/或平板显示器。
输入设备122包括字母数字和其它按键,其可被耦合至互连101以向处理器109传送信息和命令选择。另一类用户输入设备是光标控制器123,例如鼠标、轨迹球、笔、触摸屏、或者光标方向键,用于向处理器109传送方向信息和命令选择、以及用于控制显示设备121上的光标移动。这类输入设备典型地具有两个轴的自由度,第一轴(例如,x)和第二轴(例如,y),这使得该设备能够指定平面上的位置。然而,本发明并不限于输入设备只有二自由度。
可耦合至互连101的另一个设备是硬拷贝设备124,其可以用于在介质(例如纸、胶片、或相似类型的媒体)上印制指令、数据或其它信息。另外,计算机系统100可以耦合至用于声音记录和/或回放的设备125,例如耦合至麦克风的用于记录信息的音频数字化转换器(audio digitizer)。此外,设备125可以包括扬声器,其耦合至数模(D/A)转换器,用于回放数字化的声音。
计算机系统100可以是计算机网络(例如,LAN)中的一个终端。计算机系统100可以是计算机网络的一个计算机子系统。可选地,计算机系统100包括视频数字化设备126和/或通信设备190(例如,串行通信芯片、无线接口、以太网芯片或调制解调器,其提供与外部设备或者网络的通信)。视频数字化设备126可用于捕获能够传送至计算机网络中的其它计算机的视频图像。
在至少一个实施例中,处理器109支持与由加利福尼亚州Santa Clara的英特尔公司制造的现有处理器(比如说,处理器、
Figure S2008100963422D00052
Figure S2008100963422D00053
Pro处理器、
Figure S2008100963422D00054
II处理器、
Figure S2008100963422D00055
III处理器、4处理器、
Figure S2008100963422D00057
处理器、
Figure S2008100963422D00058
2处理器、或者
Figure S2008100963422D00059
CoreTM Duo处理器)所使用的指令集相兼容的指令集。因此,处理器109除了支持本发明中的操作外,也可以支持现有的处理器操作。处理器109也可适于用一种或多种工艺技术来制造,并通过足够详细地表示在机器可读媒体上的方式,其适于促进所述制造。虽然在以下描述中本发明被具体表现为基于x86的指令集,但是替代性的实施例可将本发明具体表现为其它的指令集。例如,本发明可具体表现为一64位处理器,其使用的指令集不同于基于x86的指令集。
图2示出了根据本发明的一个替代性实施例的处理器的寄存器文件。寄存器文件150可以用于存储信息,包括控制/状态信息、整数数据、浮点数据和压缩数据。在图2所示的实施例中,寄存器文件150包括整数寄存器201、寄存器209、状态寄存器208、扩展寄存器210以及指令指针寄存器211。状态寄存器208、指令指针寄存器211、整数寄存器201和寄存器209都耦合至内部互连170。另外,扩展寄存器210也耦合至内部互连170。内部互连170可以是多点总线,但这不是必须的。替代地,内部互连170可以是任意其它类型的通信路径,包括点到点互连。
在至少一个实施例中,扩展寄存器210被用于压缩的整数数据和压缩的浮点数据。在替代性的实施例中,扩展寄存器210可用于标量数据、压缩的布尔数据、压缩的整数数据和/或压缩的浮点数据。当然,替代性的实施例可被实现为包含更多或更少组的寄存器、在每组中具有更多或更少的寄存器、或者在每个寄存器中具有更多或更少的数据存储比特,这些都不脱离本发明的更广范围。
在至少一个实施例中,整数寄存器201被实现为存储32比特,寄存器209被实现为存储80比特(所有80比特都被用于存储浮点数据,而只有64比特用于压缩数据),扩展寄存器210被实现为存储128比特。此外,扩展寄存器210可以包含8个寄存器,XR0213a至XR7213h。XR0213a、XR1213b和XR2 213c都是寄存器210中单个寄存器的示例。例如,128比特的扩展寄存器210可以用于提供AESENCRYPT指令的一个或两个操作数,并且可用于提供由该AESENCRYPT指令使用的一个或两个隐式寄存器(例如,XMM0和XMM1)。
在另一个实施例中,每个整数寄存器201包含64比特,每个扩展寄存器210包含64比特,并且扩展寄存器210包含16个寄存器。在一个实施例中,扩展寄存器210中的两个寄存器可以被成对操作。在另一个替代性的实施例中,扩展寄存器210包含32个寄存器。
AES加密和/或解密操作
图3概念性地示出了用于ECB模式的AES加密指令(AESENCRYPTArg1,Arg2)310。如图所示,AESENCRYPT 310具有两个操作数,其中一个是Arg2,它提供将被加密的明文。加密后的密文被写入到AESENCRYPT310的Arg1中。加密密钥由一个或多个隐式的128比特寄存器XMM0和XMM1提供。如果例如加密密钥长度为128比特,则它可由一个寄存器XMM0来提供。在这种情况下,另一个寄存器XMM1可用于其它功能,将参照图4进行说明。
如图3所示,在ECB模式中,AESENCRYPT 310是用一个密钥对来自于Arg2的明文进行加密。一种用于确定AESENCRYPT 310工作于哪种模式(例如,ECB、CBC等)的方案是利用操作数来确定模式。在一个具体实现中,AESENCRYPT 310对其操作数Arg1和Arg2执行异或(XOR)后,再使用密钥对该结果进行加密。这种方案允许AESENCRYPT 310具有一个或两个输入,将参考图4对其作进一步的详细说明。如果只需要一个输入,例如图3所示的用于ECB模式的Arg2,则另一个操作数Arg1可被设为0,从而AESENCRYPT 310的XOR运算只生成第一个操作数Arg2,以用密钥进行加密。如何将这种XOR方案用于CBC和CTR模式将参照图5-9进一步说明。
另一种用于确定AESENCRYPT 310工作于何种模式的方案(未示出)是在AESENCRYPT 310指令中除了两个操作数Arg1和Arg2之外,使用一个立即字节(immediate byte)。与对操作数执行XOR的第一种方案相比,第二种方案可以基于立即字节的内容来指定如何和/或是否使用AESENCRYPT 310的一个或两个操作数。除这两种方案之外的其它方案都是可能的,并设想使单个的二操作数指令(例如AESENCRYPT 310(或AESDECRYPT))可用于多种不同的模式(例如,ECB、CBC、CTR等)中。
图4示出了用于在ECB模式中使用AESENCRYPT 310的示例代码410(例如,当其被处理器109执行时,构成一个方法)。首先加密密钥被(通过MOV指令或类似指令)装入一个隐式寄存器XMM0。随后一个值(例如,16)被(通过MOV指令或类似指令)装入另一个寄存器ECX,以设定要进行AES加密的128比特明文块的数目。将该值乘以128比特可以指定将被代码410加密的明文的总长度。上述初始化完成后,包括AESENCRYPT 310的循环将被执行ECX次。
在该循环中,对于ECB模式,第二隐式寄存器XMM1通过装入0值而被清零。如上所述,当AESENCRYPT 310对该0值与第二操作数执行XOR时,产生的是该第二操作数,这正是在ECB模式中工作的期望结果。转向下一条指令,AESENCRYPT 310取得Plainmemory[ECX]中的明文,利用XMM0中的密钥加密该明文,并将该结果写入到第二隐式寄存器XMM1。随后XMM1中的密文被存储到Ciphermemory[ECX],并且在跳转回到该循环的起点之前将ECX中的循环值递减。
在下一次循环中,再一次清空了XMM1中之前128比特的加密结果。这样,AESENCRYPT 310令对应于ECX中递减值的Plainmemory[ECX]的单个输入被用XMM0中的密钥进行加密。继续代码410的循环执行,直到由装入ECX的初始值指定的所有明文块都被以ECB模式进行了AES加密。
图5概念性地示出了用于CBC模式的AES加密指令(AESENCRYPTArg1,Arg2)310。如图所示,AESENCRYPT 310具有两个操作数,其中一个操作数Arg2提供将被加密的明文。在CBC模式中,另一个操作数Arg1提供来自先前加密块的所谓的“旧”密文,AESENCRYPT 310在加密之前将其与所述明文进行XOR。加密密钥由一个或多个隐式的128比特寄存器XMM0和XMM1提供。对于当前块的加密后的密文被覆写到AESENCRYPT 310的Arg1。
图6概念性地示出了用于CBC模式的两个链接的AES加密指令600。这直观地显示了CBC模式的暂时性(时间上首先发生的运算出现在图的左边),其中对前一个加密块的结果与新的明文进行XOR。这将产生一个比ECB模式更加随机的密文(例如,在ECB模式中,如果是相同的密钥,则相同的明文块将被加密为相同的密文块)。图6所示的CBC模式中,针对一个给定明文块的密文取决于前一轮的密文结果。
图7示出了用于在CBC模式中使用AES加密指令的示例代码710(例如,当其被处理器109执行时,构成一个方法)。首先,加密密钥被(通过MOV指令或类似指令)装入一个隐式寄存器XMM0。然后一个值(例如,16,但该数字可以更高或更低)可被(通过MOV指令或类似指令)装入另一个寄存器ECX,以设定要进行AES加密的128比特明文块的数目。将该值乘以128比特可以指定将被代码710加密的明文的总长度。同样,第一次执行该循环时,XMM1被装入一个0而被清零,这是因为没有来自先前块的密文可用于与第一个明文块相结合。上述初始化完成后,包括AESENCRYPT 310的循环将被执行ECX次。
在该循环中,AESENCRYPT 310取得Plainmemeory[ECX]中的明文,将其与XMM1中的值(例如,第一遍循环中为0)进行XOR,用XMM0中的密钥对该XOR结果进行加密,并将结果写入到第二隐式寄存器XMM1中以覆盖其中已经存在的值。随后XMM1中的密文被存储到Ciphermemory[ECX]中,并在跳转回到该循环的起点之前将ECX中的循环值递减。
在下一次循环中,与ECB模式不同,XMM1中前一次128比特的非0密文结果不被清零。相反地,根据CBC模式,在使用密钥进行加密前,AESENCRYPT 310将该加密结果与下一个明文块进行XOR。这样,AESENCRYPT 310具有两个输入,即对应于ECX中递减值的Plainmemory[ECX]、以及XMM1中来自前一次循环的密文值。AESENCRYPT 310指令将这两个输入进行XOR并使用XMM0中的密钥对该结果进行加密。继续代码710的循环执行,直到由装入ECX的初始值指定的所有明文块都被以CBC模式进行了AES加密。
以上描述的方案和系统可以有利地使用一个二操作数指令来执行CBC模式和ECB模式加密。该指令支持在AES最常见的两种模式中实现更紧密的AES循环。该指令具有有限数量的操作数,并且将AES最常见的使用转移到单指令中,该单指令仍支持次常见的使用。
图8概念性地示出了用于CTR模式的AES加密指令(AESENCRYPTArg1,Arg2)810。如图所示,AESENCRYPT 810具有两个操作数,其中一个操作数Arg2提供将被加密的计数器值。在CTR模式中,另一个操作数Arg1提供将被加密的明文,在加密后由AESENCRYPT 810将其与明文进行XOR。加密密钥由一个或多个隐式的128比特寄存器XMM0和XMM1提供。对于当前块的加密后的密文被覆写到AESENCRYPT 810的Arg1。
图9示出了用于在CTR模式中使用AES加密指令的示例代码910(例如,当其被处理器109执行时,构成一个方法)。首先加密密钥被(通过MOV指令或类似指令)装入一个隐式寄存器XMM0中。然后一个值(例如,16,但该数字可以更高或更低)被(通过MOV指令或类似指令)装入另一个寄存器ECX,以设定要进行AES加密的128比特明文块的数目。将该值乘以128比特可以指定将被代码910加密的明文的总长度。然后,一个计数器值被(通过MOV指令或类似指令)装入另一个XMM寄存器(例如XMM4)。上述初始化完成后,包括AESENCRYPT 810的循环将被执行ECX次。
在该循环中,AESENCRYPT 810取得计数器值,将实际加密该计数器值,随后将其与明文数据执行XOR以产生密文。然后XMM3中的密文被存储到Ciphermemory[ECX],并且在跳转回到该循环的起点之前将ECX中的循环值递减。随后,该计数器被适当调整(通过ADD、MUL或其它指令)。该循环的其它过程与ECB模式相同。
以上对一个或多个实施例的描述提供了示例和说明,但是其并不意味着穷举或者将本发明的保护范围限制在其所公开的精确形式内。基于以上启示可知各种修改或变型,或者也可以从对本发明的各种具体实现的实施中获得。
例如,尽管针对128比特的密钥描述了AES加密和解密,但FIPSPublication 197中的NIST标准允许192比特和256比特的密钥。在这种情况下,XMM1可以用于192比特或256比特密钥中另外的64比特或者128比特。在这种情况下,可以使用某些其它128比特寄存器(例如,XMM2、XMM3等),来代替代码410或代码710或代码910(或者任何其中包含AESENCRYPT或AESDECRYPT的代码)中的XMM1,这是因为密钥的一部分将存储在XMM1中。
尽管以上描述了AESENCRYPT,但是也可以以类似方式使用AESDECRYPT Arg1,Arg2,以支持在ECB模式、CTR模式以及CBC模式中的AES解密。本领域技术人员将认识到,使用ECB模式的AESDECRYPT会相对直接,而CBC模式将带来额外的计算,例如对于在加密过程中由AESENCRYPT执行的XOR运算的逆或反运算。
应该理解,尽管没有呈现AESENCRYPT和AESDECRYPT如何精确执行AES算法的细节,但这些都在加密领域的技术人员的能力范围之内。特定的实施例可能旨在对其中执行AESENCRYPT和AESDECRYPT的特定处理器109进行优化。在某些实施例中,这些指令被用机器语言优化从而使最快速的执行成为可能。这些优化的细节与所请求保护的发明并非特别相关,所以为了说明的清楚而将其省略。
本申请的说明书中所使用的元素、动作或指令不应被解释为对本发明是关键的或基本的,除非被明确描述为这样。而且,如这里所使用的,冠词“一个”旨在包括一项或多项。可对所要求保护的发明的上述具体实现进行许多改变或变型,而本质上并不脱离本发明的实质和原理。所有这样的变型和改变在这里都应该被认为包含在本公开的范围之内并受所附权利要求的保护。

Claims (20)

1.一种用于执行加密的方法,包括:
响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将该指令的第一操作数与该指令的第二操作数相结合,以产生一结果;
根据高级加密标准(AES)算法,使用由第一隐式寄存器提供的密钥对该结果进行加密,以产生一加密结果,其中,所述第一操作数用于确定所述多种加密模式中的一种模式,
其中,在第一模式中并且响应于所述单个加密指令,执行第一循环以:清空第二隐式寄存器,对从第一存储器中由计数器值指示的位置获得的所述第二操作数所提供的明文值与由所述第二隐式寄存器提供的第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥来对所述结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第一循环直到所述计数器值为零,以及
在第二模式中并且响应于所述单个加密指令,清空所述第二隐式寄存器,然后,执行第二循环以:对所述明文值与所述第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥对所述结果进行加密以产生所述加密结果,将所述加密结果存储在所述第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第二循环直到所述计数器值为零;以及
将该加密结果放在该指令的第一操作数的位置上。
2.如权利要求1所述的方法,其中,所述结合包括:
对所述指令的第一操作数和该指令的第二操作数进行异或,以产生所述结果。
3.如权利要求1所述的方法,其中,所述加密包括:
从一个或多个预定的寄存器中获得所述密钥。
4.如权利要求3所述的方法,其中,所述密钥的长度为128比特、192比特或256比特。
5.如权利要求1所述的方法,其中,所述第二操作数是长度为128比特的要被加密的明文。
6.如权利要求5所述的方法,其中,所述第一操作数是0。
7.如权利要求5所述的方法,其中,所述第一操作数是来自先前加密操作的先前加密结果。
8.一种用于执行加密的处理器,包括:
解码器,用于对所述处理器接收到的指令进行解码;
执行单元,用于执行所述指令;
寄存器文件,其通过内部互连耦合至所述执行单元;
所述执行单元包括密码电路,该密码电路用于响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将明文值与第二值进行逻辑结合以产生一结合结果,并且使用高级加密标准(AES)算法和由第一隐式寄存器提供的密钥来对该结合结果进行加密以产生一加密结果,其中,所述第一操作数用于确定所述多种加密模式中的一种模式,
其中,在第一模式中并且响应于所述单个加密指令,执行第一循环以:清空第二隐式寄存器,对从第一存储器中由计数器值指示的位置获得的所述第二操作数所提供的明文值与由所述第二隐式寄存器提供的第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥来对所述结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第一循环直到所述计数器值为零,以及
在第二模式中并且响应于所述单个加密指令,清空所述第二隐式寄存器,然后,执行第二循环以:对所述明文值与所述第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥对所述结果进行加密以产生所述加密结果,将所述加密结果存储在所述第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第二循环直到所述计数器值为零。
9.如权利要求8所述的处理器,其中,所述密码电路用于对所述明文值和所述第二值进行异或(XOR),以产生所述结合结果,并且所述第一操作数被写入所述加密结果,而所述第二操作数提供所述明文值。
10.如权利要求8所述的处理器,还包括:
第一寄存器,用于存储所述第二值;以及
第二寄存器,用于存储所述密钥,其中所述第二寄存器是用于所述单个加密指令的隐式寄存器。
11.如权利要求10所述的处理器,其中,所述密码电路用于将所述加密结果存储在所述第一寄存器中。
12.如权利要求10所述的处理器,其中,所述第二值是前一次加密的结果或者0。
13.如权利要求8所述的处理器,其中,所述明文值和所述加密结果的长度均为128比特。
14.一种用于执行加密的装置,包括:
结合模块,用于响应于具有第一操作数和第二操作数、并可在多种加密模式中使用的单个加密指令,将该指令的第一操作数与该指令的第二操作数相结合,以产生一结果;
加密模块,用于根据高级加密标准(AES)算法,使用由第一隐式寄存器提供的密钥对该结果进行加密,以产生一加密结果,其中,所述第一操作数用于确定所述多种加密模式中的一种模式,
其中,在第一模式中并且响应于所述单个加密指令,执行第一循环以:清空第二隐式寄存器,对从第一存储器中由计数器值指示的位置获得的所述第二操作数所提供的明文值与由所述第二隐式寄存器提供的第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥来对所述结果进行加密以产生所述加密结果,将所述加密结果存储在第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第一循环直到所述计数器值为零,以及
在第二模式中并且响应于所述单个加密指令,清空所述第二隐式寄存器,然后,执行第二循环以:对所述明文值与所述第二值进行逻辑结合以产生所述结果,使用AES算法和所述密钥对所述结果进行加密以产生所述加密结果,将所述加密结果存储在所述第二存储器中由所述计数器值指示的位置中,递减所述计数器值,并且重新执行所述第二循环直到所述计数器值为零;以及
放置模块,用于将该加密结果放在该指令的第一操作数的位置上。
15.如权利要求14所述的装置,其中,所述结合模块包括:
用于对所述指令的第一操作数和该指令的第二操作数进行异或,以产生所述结果的模块。
16.如权利要求14所述的装置,其中,所述加密模块包括:
用于从一个或多个预定的寄存器中获得所述密钥的模块。
17.如权利要求16所述的装置,其中,所述密钥的长度为128比特、192比特或256比特。
18.如权利要求14所述的装置,其中,所述第二操作数是长度为128比特的要被加密的明文。
19.如权利要求18所述的装置,其中,所述第一操作数是0。
20.如权利要求18所述的装置,其中,所述第一操作数是来自先前加密操作的先前加密结果。
CN200810096342.2A 2007-03-14 2008-03-14 利用单指令在多种模式中执行aes加密或解密 Active CN101272238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410197191.5A CN103957100B (zh) 2007-03-14 2008-03-14 利用单指令在多种模式中执行aes加密或解密

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/724,005 2007-03-14
US11/724,005 US8538012B2 (en) 2007-03-14 2007-03-14 Performing AES encryption or decryption in multiple modes with a single instruction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201410197191.5A Division CN103957100B (zh) 2007-03-14 2008-03-14 利用单指令在多种模式中执行aes加密或解密

Publications (2)

Publication Number Publication Date
CN101272238A CN101272238A (zh) 2008-09-24
CN101272238B true CN101272238B (zh) 2014-06-04

Family

ID=39328229

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410197191.5A Active CN103957100B (zh) 2007-03-14 2008-03-14 利用单指令在多种模式中执行aes加密或解密
CN200810096342.2A Active CN101272238B (zh) 2007-03-14 2008-03-14 利用单指令在多种模式中执行aes加密或解密

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201410197191.5A Active CN103957100B (zh) 2007-03-14 2008-03-14 利用单指令在多种模式中执行aes加密或解密

Country Status (7)

Country Link
US (3) US8538012B2 (zh)
JP (1) JP4767985B2 (zh)
KR (3) KR20080084752A (zh)
CN (2) CN103957100B (zh)
DE (1) DE102008014359B4 (zh)
GB (1) GB2447563B (zh)
TW (1) TWI390401B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8447796B2 (en) * 2008-11-25 2013-05-21 Intel Corporation Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ)
EP2196937A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for instruction level software encryption
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US9990201B2 (en) * 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
EP2717511A1 (en) * 2012-10-05 2014-04-09 Nagravision S.A. Method and device for digital data blocks encryption and decryption
DE102013205166A1 (de) * 2013-03-22 2014-09-25 Robert Bosch Gmbh Verfahren zum Erzeugen einer Einwegfunktion
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
EP3552339A4 (en) 2016-12-09 2020-04-22 Cryptography Research, Inc. PROGRAMMABLE BLOCK ENCRYPTION WITH MASKED INPUTS
CN108777611B (zh) * 2018-05-11 2021-06-18 吉林大学 基于双密钥流密码的双向链表顺序加密解密方法
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
GB2601666B (en) * 2019-08-06 2023-04-26 Ictk Holdings Co Ltd Processor, processor operation method and electronic device comprising same
KR20210018130A (ko) * 2019-08-06 2021-02-17 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1677921A (zh) * 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
CN1914852A (zh) * 2004-12-07 2007-02-14 索尼株式会社 信息处理设备、信息记录介质和信息处理方法以及计算机程序

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3547474B2 (ja) 1994-03-22 2004-07-28 富士通株式会社 暗号演算回路
CA2179971C (en) * 1995-06-30 2001-10-30 Takahisa Yamamoto An adaptable communication apparatus and an adaptable communication system
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6324288B1 (en) * 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
WO2001056221A2 (en) * 2000-01-31 2001-08-02 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US7280657B2 (en) * 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7289524B2 (en) * 2001-10-04 2007-10-30 Bbn Technologies Corp. Execution unit for a network processor
GB2374260B (en) * 2001-10-12 2003-08-13 F Secure Oyj Data encryption
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
DE10201449C1 (de) * 2002-01-16 2003-08-14 Infineon Technologies Ag Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
CN1672352A (zh) * 2002-05-23 2005-09-21 爱特梅尔股份有限公司 基于先进加密标准(aes)的硬件密码机
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
US6950517B2 (en) * 2002-07-24 2005-09-27 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US7532726B2 (en) 2002-08-08 2009-05-12 Panasonic Corporation Encryption/decryption device and method, encryption device and method, decryption device and method, and transmission/reception apparatus
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
KR100583635B1 (ko) 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
JP3818263B2 (ja) * 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7337314B2 (en) * 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7392399B2 (en) * 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
US8055910B2 (en) * 2003-07-07 2011-11-08 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
TWI244299B (en) 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
EP2099154A3 (en) * 2004-02-05 2010-01-27 Research In Motion Limited On-chip storage, creation, and manipulation of an encryption key
TWI268686B (en) * 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
US8094811B2 (en) * 2005-03-31 2012-01-10 Panasonic Corporation Data encryption device and data encryption method
US7606363B1 (en) * 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
JP4890976B2 (ja) * 2005-08-31 2012-03-07 キヤノン株式会社 暗号処理装置
DE602005022001D1 (de) * 2005-11-08 2010-08-05 Irdeto Access Bv Verfahren zur Verschlüsselung und Entschlüsselung von Dateneinheiten
US8189774B2 (en) * 2006-01-06 2012-05-29 Fujitsu Semiconductor Limited Processors for network communications
US7831039B2 (en) * 2006-06-07 2010-11-09 Stmicroelectronics S.R.L. AES encryption circuitry with CCM
US7769166B2 (en) * 2006-08-24 2010-08-03 Lsi Corporation Dual mode AES implementation to support single and multiple AES operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1677921A (zh) * 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
CN1914852A (zh) * 2004-12-07 2007-02-14 索尼株式会社 信息处理设备、信息记录介质和信息处理方法以及计算机程序

Also Published As

Publication number Publication date
GB2447563A (en) 2008-09-17
DE102008014359B4 (de) 2011-08-25
TW200903254A (en) 2009-01-16
JP2008283672A (ja) 2008-11-20
JP4767985B2 (ja) 2011-09-07
KR101394710B1 (ko) 2014-05-15
KR101302799B1 (ko) 2013-09-03
DE102008014359A1 (de) 2008-10-16
US20130202106A1 (en) 2013-08-08
CN103957100B (zh) 2018-10-16
KR20100082748A (ko) 2010-07-19
KR20130076834A (ko) 2013-07-08
GB2447563B (en) 2009-09-30
US20160261406A1 (en) 2016-09-08
TWI390401B (zh) 2013-03-21
CN103957100A (zh) 2014-07-30
US9325498B2 (en) 2016-04-26
KR20080084752A (ko) 2008-09-19
GB0804870D0 (en) 2008-04-16
US8538012B2 (en) 2013-09-17
US20080229116A1 (en) 2008-09-18
CN101272238A (zh) 2008-09-24

Similar Documents

Publication Publication Date Title
CN101272238B (zh) 利用单指令在多种模式中执行aes加密或解密
US11563556B2 (en) Architecture and instruction set for implementing advanced encryption standard (AES)
US7472285B2 (en) Apparatus and method for memory encryption with reduced decryption latency
JP4684550B2 (ja) 多数の動作モードを支援する暗号化装置
CN111814167B (zh) 数据加解密处理系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant