CN101520965A - 包括执行变换序列以隔离一个变换的指令的指令组合 - Google Patents

包括执行变换序列以隔离一个变换的指令的指令组合 Download PDF

Info

Publication number
CN101520965A
CN101520965A CN200910128119A CN200910128119A CN101520965A CN 101520965 A CN101520965 A CN 101520965A CN 200910128119 A CN200910128119 A CN 200910128119A CN 200910128119 A CN200910128119 A CN 200910128119A CN 101520965 A CN101520965 A CN 101520965A
Authority
CN
China
Prior art keywords
instruction
samsara
byte
conversion
carried out
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.)
Granted
Application number
CN200910128119A
Other languages
English (en)
Other versions
CN101520965B (zh
Inventor
S·格伦
Z·斯波伯
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
Publication of CN101520965A publication Critical patent/CN101520965A/zh
Application granted granted Critical
Publication of CN101520965B publication Critical patent/CN101520965B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)

Abstract

高级加密标准(AES)是可加密和解密信息的对称块密码。加密(密码)利用私钥(密码密钥)执行变换序列(移行、替换字节、混合列)以将称为“明文”的可理解数据变换成称为“密文”的不可理解形式。逆向译码(解密)中的变换(逆移行、逆替换字节、逆混合列)是密码中的变换的逆变换。通过使用执行该变换序列的指令,高效率地执行加密和解密。这些指令的组合允许隔离将获取的变换(移行、替换字节、混合列、逆移行、逆替换字节、逆混合列)。

Description

包括执行变换序列以隔离一个变换的指令的指令组合
领域
本发明公开涉及高级加密标准(AES),尤其涉及使用包括执行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轮回指令隔离AES算法中的混合列(MixColumn)变换的混合列隔离变换函数的实施例的流程图;
图4是利用至少一个AES轮回指令隔离AES算法中的混合列逆变换的混合列隔离逆变换函数的实施例的流程图;
图5示出使用压缩混洗字节(PSHUFB)指令来隔离移行和移行逆变换;
图6是利用至少一个AES轮回指令隔离AES算法中的替换字节变换的替换字节隔离变换函数的实施例的流程图;以及
图7是利用至少一个AES轮回指令隔离AES算法中的替换字节逆变换的替换字节隔离逆变换函数的实施例的流程图;
尽管以下的详细描述将参照所要求保护主题的说明性实施例进行,但它的很多替换、修改和变化对本领域的技术人员是显而易见的。因此,旨在广泛地理解所要求保护的主题,并且仅按照所附权利要求中阐述地限定所要求保护的主题。
详细描述
由国家标准技术研究所(NIST)公布作为联邦信息处理标准(FIPS)197的高级加密标准(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)AddRoundKey(加轮回密钥)变换:利用异或(XOR)运算将轮回(round)密钥(从密码密钥导出的值)加至状态(字节的二维128位阵列)。AddRoundKey是(128位,128位)→128位变换,该变换被定义为其两个自变量的逐位异或(XOR)。在AES流中,自变量是状态和轮回密钥。
(2)SubBytes(替换字节)变换利用非线性字节替换表(S-Box)处理状态。SubBytes是通过将S-box变换施加到输入的16字节中的每一个所定义的16字节至16字节(逐字节)变换。S-box变换可由查找表表示如下:查找表的输入是字节[7:0],其中x和y指示低四位和高四位x[3:0]=B[7:4],y[3:0]=B[3:0]。输出字节在表中被编码为十六进制(H)记数法的两个数字。例如,输入85H得到97H。
(3)ShiftRows(移行)变换:以不同的偏移循环地移位状态的最后三行。ShiftRows是以下的逐字节排列:(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)→(11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0)。将该变换看作对状态的4×4矩阵表示的运算。4×4矩阵中的第一行是不变的。使第二行左旋转一字节位置。使第三行左旋转二字节位置。使第四行左旋转三字节位置。
(4)MixColumns(混合列)变换:混合来自状态的所有列的数据(相互独立地)以产生新的列。MixColumns是对输入的4×4矩阵表示的列进行运算的128位→128位变换。该变换将每个列视为带有AES-伽罗瓦字段256中的系数的三次多项式。状态的4×4矩阵表示的每个列乘以多项式a(x)={03}x3+{01}x2+{01}x+{02}并取模(reduced modulo)x4+1。
针对上述加密轮回的变换序列可通过如下表1所示的单个AES加密轮回指令AESENC来执行,且针对最后加密轮回的变换序列通过如下表2所示的单个AES最后加密轮回指令AESENCLAST执行。
AESENC xmm1,xmm2/m128
状态=xmm1;
轮回密钥=xmm2/m128;
Tmp=移行(状态);
Tmp=替换字节(Tmp);
Tmp=混合列(Tmp);
Output=xmm1=加轮回密钥(Tmp,Round Key)
表1
AESENCLAST xmm1,xmm2/m128
状态=xmm1;
轮回密钥=xmm2/m128;
Tmp=移行(状态);
Tmp=替换字节(Tmp);
输出=xmm1=加轮回密钥(Tmp,Round Key)
表2
表1和表2中所示的AESENC和AESENCLAST指令对状态(xmm寄存器中指定的128位)和轮回密钥(xmm寄存器中或作为存储器指针指定的128位)或对密钥(xmm寄存器和/存储器中指定的128位、192位或256位)执行某些变换序列。这些指令产生128位输出。利用FIPS公布197的术语,描述对应的128位→128位变换序列。
如FIPS公布197所定义的,以上表1和表2中所示的AES指令(AESENC,AESENCLAST)串行处理存储在128位变量(temp)(也称为状态)中的数据。在以下的表3中示出用于处理N个数据块的串行运算序列的示例。
For i从1到N_BLOCKS do
    xmm1=BLOCK[i]//加载
    xmm1=AESENC(xmm1,RK[1])
    xmm1=AESENC(xmm1,RK[2])
    xmm1=AESENC(xmm1,RK[3])
    ...
    xmm1=AESENC(xmm1,RK[9])
    xmm1=AESENCLAST(xmm1,RK[10])
    存储xmm1
Fnd
表3
对于待加密的N_Block中的每一个,数据块被存储在寄存器中,例如具有128位的xmm寄存器(xmm1)可用于存储128位块。对数据块串行执行10次加密轮回。对于10次轮回AES运算的轮回1至9,调用AESENC指令以利用轮回密钥和前一轮回的结果或初始块数据(在轮回1时)来执行轮回运算。调用AESENCLAST指令来处理最后的轮回(在该示例中为轮回10)。
解密轮回的变换序列包括:
(1)AddRoundKey(加轮回密钥)变换:利用异或(XOR)运算将轮回(round)密钥(从密码密钥导出的值)加至状态(字节的二维128位阵列)。AddRoundKey是(128位,128位)→128位变换,该变换被定义为其两个自变量的逐位异或(XOR)。在AES流中,自变量是状态和轮回密钥。
逆替换字节(SubBytes)变换:利用非线性字节逆替换表(S-Box)处理状态。逆替换字节是通过将InvS-Box函数施加到输入的每个字节来定义的16字节→16字节(逐字节)变换,即[P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A]→[InvS-Box(P),InvS-Box(O),InvS-Box(N),InvS-Box(M),InvS-Box(L),InvS-Box(K),InvS-Box(J),InvS-Box(I),InvS-Box(H),InvS-Box(G),InvS-Box(F),InvS-Box(E),InvS-Box(D),InvS-Box(C),InvS-Box(B),InvS-Box(A)]。
(3)ShiftRows(移行)逆变换:这种变换是ShiftRows变换的逆变换。ShiftRows逆变换是以下的逐字节排列:(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)→(3,6,9,12,15,2,5,8,11,14,1,4,7,10,13,0)。在P-A符号中,它读取[P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A]→[D,G,J,M,P,C,F,I,L,O,B,E,H,K,N,A]。
MixColumns逆变换是对输入的4×4矩阵表示的列运算的128位→128位变换。该变换将4×4矩阵中的每个列视为带有AES-GF256-Field中的系数的三次多项式。状态的4×4矩阵表示的每个列乘以多项式a-1(x)={0b}x3+{0d}x2+{09}x+{0e}并取模x4+1。
针对上述加密轮回的变换序列可通过如下表4所示的单个AES加密轮回指令AESDEC来执行,且针对最后加密轮回的变换序列通过如下表5所示的单个AES最后加密轮回指令AESDECCLAST执行。
以下表4和表5中所示的AESDEC和AESDECLAST指令对状态(xmm寄存器中指定的128位)和轮回密钥(xmm寄存器中或作为存储器指针指定的128位)或对密钥(xmm寄存器和/存储器中指定的128位、192位或256位)执行某些变换序列。这些指令产生128位输出。利用FIPS公布197的术语,描述对应的128位→128位变换序列。
AESDEC xmm1,xmm2/m128
状态=xmm1;
轮回密钥=xmm2/m128;
Tmp=逆移行(状态);
Tmp=逆替换字节(Tmp);
Tmp=逆混合列(Tmp=);
输出=xmm1=加轮回密钥(Tmp=,轮回密钥)
表4
AESDECLAST xmm1,xmm2/m128
状态=xmm1;
轮回密钥=xmm2/m128
Tmp=逆移行(State);
Tmp=逆替换字节(Tmp);
输出=xmm1=加轮回密钥(Tmp,Round Key)
表5
表1、2、4和5所示的四个AES轮回指令(AESENC、AESNECLAST、AESDEC、AESDECLAST)中的每一个通过共同执行数个AES变换而提升性能。然而,指令仅支持AES标准的当前版本。
本发明的实施例使用包括AES加密和解密指令的指令组合来获取AES算法的子步骤(变换)作为隔离的变换。隔离的变换包括:由加密AES指令(AESENC、AESENCLAST)所使用的移行、替换字节和混合列变换以及由解密AES指令(AESDEC、AESDECLAST)所使用的逆移行、逆替换字节和混合列逆变换。
隔离变换的能力增加了使用AES加密和解密指令的灵活性。例如,获取AES算法的子步骤(变换)的能力允许构造AES变量,并允许支持AES标准中的可能未来修改。还允许将AES原语(变换)用作其它密码和密码学散列函数的构建块。
图1是包括在通用处理器中执行AES加密和解密的指令的系统100的框图。系统100包括处理器101、存储器控制器集线器(MCH)或(图形存储器控制器集线器(GMCH))102和输入/输出(I/O)控制器集线器(ICH)104。MCH102包括控制处理器101和存储器108之间的通信的存储器控制器106。处理器101和MCH 102通过系统总线116通信。
处理器101可以是诸如单核Intel
Figure A200910128119D0011193315QIETU
 Pentium IV
Figure A200910128119D0011193315QIETU
处理器、单核Intel Celeron处理器、Intel
Figure A200910128119D0011193315QIETU
 XScale处理器或诸如Intel
Figure A200910128119D0011193315QIETU
Pentium D、Intel
Figure A200910128119D0011193315QIETU
 Xeon
Figure A200910128119D0011193315QIETU
处理器或Intel
Figure A200910128119D0011193315QIETU
 Core
Figure A200910128119D0011193315QIETU
 Duo处理器之类的多核处理器或任何其它类型的处理器等多个处理器中的任一个。
存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双数据率2(DDR2)RAM或Rambus动态随机存取存储器(RDRAM)或任何其它类型的存储器。
ICH 104可利用诸如直接媒体接口(DMI)之类的高速芯片至芯片互连114耦合到MCH 102。DMI支持经由两个单向线路的2千兆位/秒的并发传输速率。
ICH 104可包括用于控制耦合至ICH 104的至少一个存储设备112的通信存储I/O控制器110。存储设备可以是例如盘驱动器、数字视频盘(DVD)驱动器、紧致盘(CD)驱动器、独立盘冗余阵列(RAID)、磁带驱动器或其它存储设备。ICH 104可通过存储协议互连118利用诸如串行连接小型计算机系统接口(SAS)或串行高级技术附件(SATA)的串行存储协议与存储设备112通信。
处理器101包括执行AES加密和解密运算的AES函数103。AES函数103可用于加密或解密可存储在存储器108和/或存储在存储设备112中的信息。
可存储在存储器108中或存储设备112中的变换隔离函数120使用AES函数103来隔离AES加密或解密指令中的变换之一。稍后将结合图3-7描述变换隔离函数120。
图2是图1所示的处理器101的实施例的框图。处理器101包括用于解码从1级(L1)指令高速缓存202接收的处理器指令的取出(fetch)和解码单元206。用于执行处理器指令的数据可被存储在寄存器堆(register file)208中。在一个实施例中,寄存器堆208包括多个128位寄存器,它们被AES轮回指令用于存储由AES轮回指令所使用的数据。
在一个实施例中,寄存器堆208是一组与设置在Intel Pentium MMX处理器中的具有(单指令多数据(SIMD))流送扩展(SSE)指令集的128位MMX寄存器类似的128位寄存器。在SIMD处理器中,通过一次加载一个128位块来分128位块地处理数据。
取出和解码单元206从L1指令高速缓存202取出宏指令,解码宏指令并将其分成可存储在微码只读存储器(ROM)214中的称为微运算(μops)的简单运算。流水线化的执行单元210编排并执行微运算。在所示的实施例中,执行单元210中的AES函数103包括对含有AES加密/解密轮回指令的AES轮回指令集的微运算。AES轮回指令是完全流水线化的使得处理器(CPU)可在每个周期分派指令,如果有数据准备好要处理的话。退役单元212将所执行的指令的结果写入寄存器或存储器。AES轮回指令所使用的轮回密钥216可被存储在L1数据高速缓存204中并加载到执行单元210,由微运算用其执行AES加密/解密轮回指令中的任一个。在L1数据高速缓存204中存储轮回密钥216保护轮回密钥216免受侧面信道攻击,例如尝试获取轮回密钥以便获得存储在系统100中的加密信息。
在AES轮回指令已经被取出和解码单元206解码之后,由执行单元210执行AES轮回指令包括执行与可存储在微码ROM 214中的AES轮回指令相关联的微运算。
在一实施例中,提供AES轮回指令集,其包括用于执行加密轮回、解密轮回、加密最后轮回和解密最后轮回的单独AES轮回指令。在实施例中,每个AES轮回指令具有唯一的运算码(opcode)。
正如结合表1、2、4和5已经讨论的,AES指令集包括四个AES轮回指令(加密、解密、加密最后轮回、解密最后轮回)。AES指令集中的AES轮回指令包括单个轮回运算以执行将用于除最后轮回以外的所有轮回的加密和解密轮回运算。
例如,在表1所示的AESENC单轮回指令中,输入数据被存储在128位寄存器(xmmsrcdst)中且轮回密钥被存储在另一个128位寄存器(Xmm)中。该指令对存储在128位xmmsrcdst寄存器中的输入数据(源)执行AES轮回运算,并用轮回运算的执行结果重写存储在128位xmmsrcdst寄存器中的输入数据。因此xmmsrcdst首先存储输入数据,稍后存储AES轮回运算的结果。
例如,在表2所示的AESENCLAST单轮回指令中,输入数据被存储在128位寄存器(xmmsrcdst)中且轮回密钥被存储在另一个128位寄存器(Xmm)中。该指令对存储在xmmsrcdst寄存器中的输入数据(源)执行AES轮回运算,并用轮回运算的执行结果重写存储在xmmsrcdst寄存器中的输入数据。因此xmmsrcdst首先存储输入数据,稍后存储轮回运算的结果。Xmm寄存器存储用于轮回运算的轮回密钥。
密钥的大小可以是128位、192位或256位。将执行的轮回次数(n)可以是1、10、12或14,这取决于密钥的大小,且每个轮回密钥是固定大小的(128位)。利用值为10、12、14的多次轮回,AES微运算可针对128位、192位或256位的密钥大小执行标准AES加密和解密。
当将相同的密钥用于很多块时,可将用于每次轮回的轮回密钥(密钥编排)预先计算并存储在存储器中(例如轮回密钥216存储在1级数据高速缓存204中)。轮回密钥216可包括具有10个元素的阵列(RK)以存储用于该密钥的密钥编排。用于AES-128加密的输入密钥被存储在RK[0]中,且预先计算9个轮回密钥RK[0]-RK[1]。
在一个实施例中,寄存器堆304具有可由AES指令使用的多个128位寄存器。128位寄存器可存储源运算数、轮回密钥和AES指令的结果。对于第一轮回,AES指令接收可以是待加密的128位明文或待解密的128位密文的源运算数。
在本发明的实施例中,前面描述的AES指令集(AESENC、AESDEC、AESENCLAST、AESDECLAST)可用于隔离由FIPS197定义的AES算法的子步骤(变换)。该子步骤是移行、替换字节、混合列、逆移行、逆替换字节和逆混合列。
六个子步骤(变换)对128位状态进行运算并产生128位结果。“逆向”变换是变换的相对应的逆变换,例如,如果Tmp=替换字节(状态),则逆替换字节(Tmp)=状态。加轮回密钥变换对两个128位输入(状态和轮回密钥)进行运算,并输出其逐位XOR。
图3是利用至少一个AES轮回指令隔离AES算法中的混合列变换的混合列隔离变换函数300的实施例的流程图。
针对混合列变换的微运算仅在表1所示的AESENC指令中使用。AESDEC指令包括对AESENC指令中变换的逆变换。
在框302,混合列变换隔离函数调用AESDECLAST指令,且当前状态和轮回密钥被设置为0。AESDECLAST执行以下表6所示的微运算。
Tmp=逆移行(状态)
Tmp=逆替换字节(Tmp)
Tmp=AddRoundKey(Tmp,轮回密钥)
表6
首先,对状态执行移行逆变换,并将变换的结果存储在Tmp中。接下来,对Tmp的内容执行替换字节逆变换并将结果存储在Tmp中。最后,对Tmp的内容和设置为0的轮回密钥执行AddRoundKey变换。AddRoundKey微运算基本上是NOP(无运算),因为对Tmp的内容和0执行异或运算且结果是Tmp的内容。然后,将AESENCLAST指令的输出X作为输入提供给AESENC指令。
在框304,AESENC指令接收AESDECLAST指令的结果(X)。结果X是逆替换字节(逆移行(状态)),即对状态的两个变换逆替换字节和逆移行的结果。AESINC指令的输入是AESBECLAST指令和设置为0的轮回密钥的结果。AESENC指令执行以下表7所示的微运算。
Tmp1=移行(X)
Tmp1=替换字节(Tmp1)
Tmp1=混合列(Tmp1)
Tmp1=AddRoundKey(Tmp1,轮回密钥)
表7
首先,对输入X执行移行变换,并将变换的结果存储在Tmp中。接下来,对Tmp的内容执行替换字节变换并将结果存储在Tmp中。接下来,对Tmp的内容执行混合列变换。最后,对Tmp的内容和为0的轮回密钥执行AddRoundKey变换。AddRoundKey微运算基本上是NOP(无运算),因为对Tmp的内容和0执行异或运算且结果是Tmp的内容。AESENCLAST指令和AESENC指令的组合隔离混合列变换,因为AddRoundKey微运算执行NOP,且其它微运算(移行、替换字节)通过执行逆微运算(逆移行、逆替换字节)进行换算。
因此,AESENC指令的输出是利用如下所示的AESDECLAST指令和AESENC指令的组合隔离的混合列(状态)。
Y=逆混合列(逆替换字节(逆移行(替换字节(移行(状态))))
图4是利用至少一个AES轮回指令隔离AES算法中的混合列逆变换的混合列隔离逆变换函数400的实施例的流程图。
针对混合列逆变换的微运算仅在表2所示的AESENCLAST指令中使用。AESDEC指令包括对AESENC指令中的变换的逆变换。
在框402,混合列逆变换隔离函数400中的第一指令是在轮回密钥设置为0的情况下调用的AESENCLAST指令。AESENCLAST指令执行下表8所示的微运算:
Tmp=移行(State)
Tmp=替换字节(Tmp)
Tmp=AddRoundKey(Tmp,轮回密钥)
表8
首先,对状态执行移行变换,并将变换的结果存储在Tmp中接下来,对Tmp的内容执行替换字节变换并将结果存储在Tmp中。最后,对Tmp的内容和为0的轮回密钥执行AddRoundKey变换。AddRoundKey微运算基本上是无运算(NOP),因为利用Tmp的内容和0执行异或运算且XOR运算的结果是Tmp的原始内容。AESENCLAST指令的输出X被输入到AESECC指令。
在框404,混合列逆变换隔离函数中的第二指令是向其提供AESENCLAST指令的结果(X)的AESDEC指令。结果X是替换字节(移行(状态)),即对状态的两个变换替换字节和移行的结果。AESDEC指令的输入是AESENCLAST指令和设置为0的轮回密钥的结果。AESDEC指令执行下表9所示的微运算。
Tmp=逆移行(X)
Tmp=逆替换字节(Tmp)
Tmp=逆混合列(Tmp)
Tmp=AddRoundKey(Tmp,轮回密钥)
表9
首先,对输入X执行移行逆变换,并将变换的结果存储在Tmp中接下来,对Tmp的内容执行替换字节逆变换并将结果存储在Tmp中。然后,对Tmp的内容进行混合列逆变换。最后,对Tmp的内容和为0的轮回密钥执行AddRoundKey变换。AddRoundKey微运算基本上是NOP(无运算),因为对Tmp的内容和0执行异或运算且结果是Tmp的内容。
因此,AESENCLAST指令和AESENC指令的组合隔离混合列逆变换,因为AddRoundKey微运算执行NOP,且其它微运算(移行、替换字节)通过执行逆微运算(逆移行、逆替换字节)进行换算。因此,AESDEC指令的输出是通过组合由如下所示的AESENCLAST指令所执行的变换和AESDEC指令所执行的变换隔离的逆混合列(状态)。
Y=逆混合列(逆替换字节(逆移行(替换字节(移行(状态))))
因此,两个AES指令序列的结果是隔离的混合列逆变换。
图5示出使用压缩混洗字节(PSHUFB)指令来隔离移行变换和移行逆变换。状态500具有标记为A-L的16个字节(128位)。PSHUFB指令具有两个128位输入,其可被称为字节A和B的两个寄存器。PSHUFB指令取出字节A=[a15 a14 a13...a0]和B=[b15 b14 b13...b0]的两个寄存器,并用[ab15 ab14 ab13...ab0]取代寄存器A。如果bi的最高位被设置为1,则结果的第i位条目是0。
在图5所示的示例中,状态500对应于字节A=[a15 a14 a13...a0]。移行变换的结果在状态502中示出。为了执行移行变换,将字节B=[b15 b14 b13...b0]设置成‘0B06010C07020D08030E09040F0A0500’(十六进制)。将状态500的字节[15:0]移到状态502的位位置(3,6,9,12,15,2,5,8,11,14,1,4,7,10,13,0)。例如,状态500的标记为“A”的字节[0]被移到状态502的字节[0],而状态500的标记为“L”的字节[15]被移到状态502的字节[11]“B”。
利用字节A被设置成状态502而字节B被设置成‘0306090C0F0205080B0E0104070A0D00’(十六进制)的PSHUSB指令对状态502执行移行逆变换。将状态500的字节[15:0]移到状态502的位位置(3,6,9,12,15,2,5,8,11,14,1,4,7,10,13,0)。例如,状态502的标记为“A”的字节[0]被移到状态504的字节[0],而状态500的标记为“L”的字节[15]被移到状态504的字节[3]。
因此,可基于B字节的选择利用PSHUFB指令执行移行变换和移行逆变换,即‘0B06010C07020D08030E09040F0A0500’(十六进制)用于执行移行变换而‘0306090C0F0205080B0E0104070A0D00’(十六进制)用于执行移行逆变换。
图6是利用至少一个AES轮回指令隔离AES算法中的替换字节变换的替换字节隔离变换函数600的实施例的流程图。
针对替换字节变换的微运算在表2所示的AESENCLAST指令和表1所示的AESENC指令中使用。在结合图5所述的实施例中,AESENCLAST指令用于隔离替换字节变换。
在框602,在B寄存器被设置为0306090C0F0205080B0E0104070A0D00(十六进制)以对状态执行逆移行的情况下,调用替换字节隔离变换函数600的PSHUFB指令。如前面结合图5所讨论的,移行逆变换基于B寄存器中存储的相应字节位置执行状态中字节的排列。
在框604,利用PSHUFB指令的结果(X),调用替换字节变换隔离函数600中的AESDECLAST指令。AESDECLAST指令的输入是PSHUFB指令和设置为0的轮回密钥的结果。AESDECLAST指令执行下表10所示的微运算。
Tmp=移行(X)
Tmp=替换字节(Tmp)
Tmp=AddRoundKey(Tmp,轮回密钥)
表10
首先,对输入X执行移行变换,并将变换的结果存储在Tmp中。接下来,对Tmp的内容执行替换字节变换并将结果存储在Tmp中。最后,对Tmp的内容和为0的轮回密钥执行AddRoundKey变换。AddRoundKey微运算基本上是NOP(无运算),因为对Tmp的内容和0执行异或运算且结果是Tmp的内容。PSHUFB指令和AESENCLAST指令的组合隔离替换字节变换,因为AddRoundKey微运算执行NOP,且其它微运算(移行)通过由PSHUFB指令所执行逆微运算(逆移行)进行换算。因此,AESENCLAST指令的输出是利用如下所示的AESENCLAST指令和PSHUFB指令的组合隔离的替换字节(状态)。
Y=替换字节(移行(X))=替换字节(移行(逆移行(状态)))=替换字节(状态)
因此,包括一个AES轮回指令的该指令序列的结果是隔离的替换字节变换。
在另一个实施例中,可利用以下的AES指令隔离替换字节变换:
AESKEYGENASSIST xmm1,xmm2/m128,imm8
AESKEYGENASSIST指令用于帮助生成用于密钥编排的轮回密钥,并且与密钥的大小无关地运算,即不论密钥大小是128位、192位还是256位都可执行相同的运算。AESKEYGENASSIST指令执行用于生成FIPS197密钥编排的“temp=SubWord(RotWord(temp))xor Rcon[i/Nk]”和“temp=SubWord(temp)”运算。
然而,代替一次对一个32位字(dword)的运算,AESKEYGENASSIST指令一次对四个32位字执行运算(即同时对四个dwords(128位)),从而增加生成轮回密钥的速度。
AESKEYGENASSIST指令提供以下运算的结果:
结果:=
[ Rot ( S - Box 4 ( X 3 ) ) ⊕ RCON , S - Box 4 ( X 3 ) , Rot ( S - Box 4 ( X 1 ) ) ⊕
RCON , S - Box 4 ( X 1 ) ]
其中:
X3[31-0]:=Tmp1[127-96];
X2[31-0]:=Tmp1[95-64];
X1[31-0]:=Tmp1[63-32];以及
X0[31-0]:=Tmp1[31-0];
以及
RCON[7-0]:=imm8[7]imm8[6]imm8[5]imm8[4]
imm8[3]imm8[2]imm8[1]imm8[0]
RotWord(Rot)是取出四字节32位dword并执行周期性排列的函数。Rotword按顺序{a0,a1,a2,a3}取出标记为a0-a4的四个字节,并执行周期性排列以返回按顺序{a1,a2,a3,a0}的四个字节。RotWord函数在小端(little Endian)变换中被定义为:
RotWord X[31-0]=[X[7-0]‖X[31-8]],
即,Rot(x)=(X>>8)|(X<<24);
例如,如果X[31-0]=`3c4fcf09;RotWord(`3c4fcf09`)=[‘09’|`3c4fcf`)=(`093c4fcf`)
S-Box4指示单个dword S-Box函数至4个dword的应用如下:
S-Box4(X)[31-0])=[S-Box(X[31-24]),S-Box(X[23-16]),S-Box(X[15-8]),S-Box(X[7-0])]。
S-box是字节值的一对一替换的非线性替换表。SubWord函数取出四字节输入(32位字(dword))并将S-box(字节替换(SubBytes))施加于dword中的四个字节中的每一个以产生32位输出dword。SubWord函数(32位)得到4个独立的(并行)SubByte运算(8位)。
因此,替换字节变换可利用AESKEYGENASSIST指令来隔离,且中间输入(imm8)被设置为0且将输入预混洗如下:
AESKEYGENASSIST xmm1,xmm1,imm8
PSHUFB xmm1,mask
AESKEYGENASSIST指令去除与rcon异或的效应,且针对PSHUFB指令的掩码被选择成不旋转编号为3和1的双字。
图7是利用至少一个AES轮回指令隔离AES算法中的替换字节逆变换的替换字节隔离逆变换函数700的实施例的流程图。
针对替换逆变换的微运算在表5所示的AESDECCLAST指令中使用。在结合图5所述的实施例中,PSHUFB指令用于隔离移行变换。
在框702,在B寄存器被设置为‘0B06010C07020D08030E09040F0A0500’以对状态执行移行的情况下,调用替换字节隔离变换函数600的PSHUFB指令。如前面结合图5所讨论的,移行变换基于另一个寄存器中存储的相应字节位置来执行第一寄存器中存储的状态中字节的排列。
在框704,利用PSHUFB指令的结果(X),调用替换字节变换隔离函数700中的AESDECLAST指令。AESDECLAST指令的输入是PSHUFB指令和设置为0的轮回密钥的结果。AESDECLAST指令执行下表10所示的微运算。
Tmp=逆移行(X)
Tmp=逆替换字节(Tmp)
Tmp=AddRoundKey(Tmp,轮回密钥)
表10
首先,对输入X执行移行逆变换,并将变换的结果存储在Tmp中接下来,对Tmp的内容执行替换字节逆变换并将结果存储在Tmp中。最后,对Tmp的内容和为0的轮回密钥执行AddRoundKey变换。AddRoundKey微运算基本上是NOP(无运算),因为对Tmp的内容和0执行异或运算且结果是Tmp的内容。PSHUFB指令和AESDECLAST指令的组合隔离替换字节变换,因为AddRoundKey微运算执行NOP,且其它微运算(逆移行)通过由PSHUFB指令所执行的微运算(移行)进行换算。因此,AESDECLAST指令的输出是利用如下所示的AESDECLAST指令和PSHUFB指令的组合隔离的逆替换字节(状态)。
Y=逆替换字节(逆移行(X))=逆替换字节(逆移行(移行(状态)))=逆替换字节(状态)
因此,包括至少一个AES轮回指令的该指令序列的结果是隔离的替换字节逆变换。
如上所述,通过使用AES轮回加密/解密指令的特定组合,可隔离由AES轮回加密/解密指令执行的AES变换。这增加了AES指令使用的灵活性,因为它们可用于例如构造AES变量,支持AES标准中可能的未来修改和/或将AES原语用作密码和密码学散列函数的构建块。由AES指令的组合隔离的变换可用于特别是全芯片和认证目的的调试、确认。
本领域的技术人员将显而易见,本发明的实施例中所涉及的方法可具体体现在包括计算机可用介质的计算机程序产品中。例如,这种计算机可用介质可包括诸如紧致盘只读存储器(CD ROM)盘或常规ROM设备的只读存储设备或具有计算机可读程序代码存储于其上的计算机磁盘。
尽管已经参考本发明的实施例具体示出并描述了本发明的实施例,但本领域的技术人员将理解可在其中进行各种形式和细节的变化,而不背离由所附权利要求书包括的本发明的实施例的范围。

Claims (20)

1.一种方法,包括:
组合多个指令,所述指令中的至少一个执行变换序列,所述指令被组合成这样的顺序:在执行时,所述指令的组合仅执行所述变换序列中的变换之一。
2.如权利要求1所述的方法,其特征在于,所述指令的组合包括AESDECLAST轮回指令和AESENC轮回指令,所述指令的组合执行MixColumns变换。
3.权利要求2所述的方法,其特征在于,由所述AESDECLAST轮回指令执行的所述变换序列包括移行逆变换和替换字节逆变换,且由所述AESENC轮回指令执行的所述变换序列包括移行变换、替换字节变换和MixColumns变换。
4.如权利要求1所述的方法,其特征在于,所述指令的组合包括AESENCLAST轮回指令和AESDEC轮回指令,所述指令的组合执行MixColumns逆变换。
5.权利要求4所述的方法,其特征在于,由所述AESENCLAST轮回指令执行的所述变换序列包括移行变换和替换字节逆变换,且由所述AESDEC轮回指令执行的所述变换序列包括移行逆变换、替换字节逆变换和MixColumns逆变换。
6.如权利要求1所述的方法,其特征在于,所述指令的组合包括PSHUFB指令和AESENCLAST轮回指令,所述指令的组合执行替换字节变换。
7.权利要求6所述的方法,其特征在于,由所述AESENCLAST轮回指令执行的所述变换序列包括移行变换和替换字节变换,且所述PSHUFB指令包括移行变换。
8.如权利要求1所述的方法,其特征在于,所述指令的组合包括PSHUFB指令和AESDECLAST轮回指令,所述指令的组合执行替换字节逆变换。
9.权利要求7所述的方法,其特征在于,由所述AESDECLAST轮回指令执行的所述变换序列包括移行逆变换和替换字节逆变换,且所述PSHUFB指令包括移行逆变换。
10.如权利要求1所述的方法,其特征在于,所述变换序列包括来自下组的变换:由联邦信息处理标准(FIPS)197定义的移行、逆移行、替换字节、逆替换字节、MixColumns和逆MixColumns。
11.一种装置,包括:
存储器,用于存储多个指令,所述指令中的至少一个执行变换序列;以及
处理器,其包括执行单元,所述指令在所述存储器中被存储成这样的顺序:在被所述执行单元执行时,所述执行单元仅提供所述变换序列中的变换之一的结果。
12.如权利要求11所述的装置,其特征在于,所述指令的组合包括AESDECLAST轮回指令和AESENC轮回指令,所述指令的组合执行MixColumns变换。
13.如权利要求11所述的装置,其特征在于,所述指令的组合包括AESENCLAST轮回指令和AESDEC轮回指令,所述指令的组合执行MixColumns逆变换。
14.如权利要求11所述的装置,其特征在于,所述指令的组合包括PSHUFB指令和AESENCLAST轮回指令,所述指令的组合执行替换字节变换。
15.如权利要求11所述的装置,其特征在于,所述指令的组合包括PSHUFB指令和AESDECLAST轮回指令,所述指令的组合执行替换字节逆变换。
16.如权利要求11所述的装置,其特征在于,所述变换序列包括来自下组的变换:由联邦信息处理标准(FIPS)197定义的移行、逆移行、替换字节、逆替换字节、MixColumns和逆MixColumns。
17.一种包括含相关联信息的机器可访问介质的制品,
其中所述信息在被访问时致使机器执行:
组合多个指令,所述指令中的至少一个执行变换序列,所述指令被组合成这样的顺序:在执行时,所述指令的组合仅执行所述变换序列中的变换之一。
18.如权利要求17所述的制品,其特征在于,所述变换序列包括来自下组的变换:由联邦信息处理标准(FIPS)197定义的移行、逆移行、替换字节、逆替换字节、MixColumns和逆MixColumns。
19.一种系统,包括:
处理器;以及
存储设备,其可由处理器访问且在其中存储有多个指令,所述指令中的至少一个执行变换序列,所述指令被组合成这样的顺序:在被所述处理器执行时,导致处理器至少
仅执行所述变换序列中的变换之一。
20.如权利要求19所述的系统,其特征在于,所述变换序列包括来自下组的变换:由联邦信息处理标准(FIPS)197定义的移行、逆移行、替换字节、逆替换字节、MixColumns和逆MixColumns。
CN200910128119.6A 2008-02-29 2009-03-02 包括执行变换序列以隔离一个变换的指令的指令组合 Expired - Fee Related CN101520965B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/040,214 US8879725B2 (en) 2008-02-29 2008-02-29 Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US12/040,214 2008-02-29

Publications (2)

Publication Number Publication Date
CN101520965A true CN101520965A (zh) 2009-09-02
CN101520965B CN101520965B (zh) 2016-03-16

Family

ID=40785278

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910128119.6A Expired - Fee Related CN101520965B (zh) 2008-02-29 2009-03-02 包括执行变换序列以隔离一个变换的指令的指令组合

Country Status (5)

Country Link
US (1) US8879725B2 (zh)
EP (1) EP2096786B1 (zh)
JP (1) JP5538736B2 (zh)
KR (1) KR101036103B1 (zh)
CN (1) CN101520965B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103930869A (zh) * 2011-11-17 2014-07-16 Arm有限公司 密码算法中用于支持散列值生成的simd指令
CN104871476A (zh) * 2013-01-11 2015-08-26 高通股份有限公司 用于可计算、大型、可变及安全的替换盒的方法及设备
CN106034021A (zh) * 2015-03-12 2016-10-19 中国科学院上海高等研究院 轻量级双模兼容aes加解密模块及其方法

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
US8150031B2 (en) * 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
CN101938349A (zh) * 2010-10-01 2011-01-05 北京航空航天大学 一种适用于硬件实现的s盒及其电路实现方法
CN101958790B (zh) * 2010-10-09 2012-10-17 中国人民解放军信息工程大学 无线通信网络数字信息加密或解密方法
CN102043916B (zh) * 2010-12-01 2012-10-03 戴葵 一种高性能可扩展公钥密码协处理器结构
WO2013095473A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Systems and methods for protecting symmetric encryption keys
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
CN103051443B (zh) * 2012-12-20 2015-05-13 山东华芯半导体有限公司 Aes密钥扩展的方法
CN103401680B (zh) * 2013-07-24 2016-06-15 大连理工大学 一种矩阵旋转移位数字加密方法
RU2656734C2 (ru) * 2013-12-27 2018-06-06 Евгений Иванович Пряхин Способ кодирования и декодирования цифровой информации в виде ультрасжатого нанобар-кода (варианты)
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
JP6251151B2 (ja) * 2014-10-27 2017-12-20 日本電信電話株式会社 ラウンド関数計算装置及び暗号装置、これらの方法並びにプログラム
JP2016127405A (ja) * 2014-12-26 2016-07-11 株式会社Dnpハイパーテック 暗号化装置
US20170085371A1 (en) * 2015-04-07 2017-03-23 Secure Channels Sa System and method for an enhanced xor cipher through extensions
US10579389B2 (en) * 2015-11-02 2020-03-03 Arm Limited Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions
US11190498B1 (en) 2018-01-11 2021-11-30 Secure Channels, Inc. System and method for use of filters within a cryptographic process
US11403234B2 (en) * 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11580234B2 (en) * 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11250165B2 (en) * 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US11804955B1 (en) 2019-09-13 2023-10-31 Chol, Inc. Method and system for modulated waveform encryption
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11700135B2 (en) * 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function
US11706039B2 (en) 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function
US20220209967A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Isa accessible physical unclonable function

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040071291A1 (en) * 2001-02-08 2004-04-15 Fabrice Romain Secure method for secret key cryptographic calculation and component using said method

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926475A (en) * 1988-11-30 1990-05-15 Motorola, Inc. Data encryption key failure monitor
US5295188A (en) * 1991-04-04 1994-03-15 Wilson William J Public key encryption and decryption circuitry and method
US5375170A (en) * 1992-11-13 1994-12-20 Yeda Research & Development Co., Ltd. Efficient signature scheme based on birational permutations
US6952478B2 (en) 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
US7181016B2 (en) * 2003-01-27 2007-02-20 Microsoft Corporation Deriving a symmetric key from an asymmetric key for file encryption or decryption
KR100594265B1 (ko) 2004-03-16 2006-06-30 삼성전자주식회사 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법.
DE102004062825B4 (de) * 2004-12-27 2006-11-23 Infineon Technologies Ag Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit
US7961876B2 (en) * 2005-01-11 2011-06-14 Jintai Ding Method to produce new multivariate public key cryptosystems
KR100668664B1 (ko) 2005-11-22 2007-01-12 한국전자통신연구원 Aes 라인달 블록 알고리즘을 이용하는 암호화/복호화장치 및 방법
KR100720525B1 (ko) * 2005-12-28 2007-05-22 동부일렉트로닉스 주식회사 Aes코어를 포함하는 집적회로 및 aes코어 검증용래퍼
US8194854B2 (en) 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040071291A1 (en) * 2001-02-08 2004-04-15 Fabrice Romain Secure method for secret key cryptographic calculation and component using said method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J. DAEMEN ET AL: "Specification of Rijndael", 《THE DESIGN OF RIJNDAEL INFORMATION SECURITY AND CRYPTOGRAPHY》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103930869A (zh) * 2011-11-17 2014-07-16 Arm有限公司 密码算法中用于支持散列值生成的simd指令
CN103930869B (zh) * 2011-11-17 2017-10-10 Arm 有限公司 密码算法中用于支持散列值生成的simd指令
CN104871476A (zh) * 2013-01-11 2015-08-26 高通股份有限公司 用于可计算、大型、可变及安全的替换盒的方法及设备
CN104871476B (zh) * 2013-01-11 2018-05-25 高通股份有限公司 用于可计算、大型、可变及安全的替换盒的方法及设备
US10142099B2 (en) 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
CN106034021A (zh) * 2015-03-12 2016-10-19 中国科学院上海高等研究院 轻量级双模兼容aes加解密模块及其方法

Also Published As

Publication number Publication date
EP2096786A3 (en) 2012-01-25
JP5538736B2 (ja) 2014-07-02
US8879725B2 (en) 2014-11-04
KR101036103B1 (ko) 2011-05-19
EP2096786A2 (en) 2009-09-02
EP2096786B1 (en) 2016-04-06
JP2009211071A (ja) 2009-09-17
US20090220071A1 (en) 2009-09-03
KR20090093900A (ko) 2009-09-02
CN101520965B (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
CN101520965B (zh) 包括执行变换序列以隔离一个变换的指令的指令组合
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP5020987B2 (ja) パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置
CN101350714B (zh) 采用混合rijndael s-box的有效高级加密标准数据路径
US20080159526A1 (en) Architecture and instruction set for implementing advanced encryption standard (AES)
US20090052659A1 (en) Method and apparatus for generating an advanced encryption standard (aes) key schedule

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160316

Termination date: 20190302

CF01 Termination of patent right due to non-payment of annual fee