CN101622816B - 用于高级加密标准(aes)的灵活结构和指令 - Google Patents

用于高级加密标准(aes)的灵活结构和指令 Download PDF

Info

Publication number
CN101622816B
CN101622816B CN2008800064951A CN200880006495A CN101622816B CN 101622816 B CN101622816 B CN 101622816B CN 2008800064951 A CN2008800064951 A CN 2008800064951A CN 200880006495 A CN200880006495 A CN 200880006495A CN 101622816 B CN101622816 B CN 101622816B
Authority
CN
China
Prior art keywords
aes
circulation
key
instruction
median
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
CN2008800064951A
Other languages
English (en)
Other versions
CN101622816A (zh
Inventor
S·格伦
W·K·费加利
V·戈帕尔
M·拉古纳丹
M·G·狄克逊
S·陈努帕蒂
M·E·科纳维斯
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 CN201710815893.9A priority Critical patent/CN107465501B/zh
Priority to CN201310110523.7A priority patent/CN103152168B/zh
Priority to CN201710815596.4A priority patent/CN107493163B/zh
Priority to CN202011411255.9A priority patent/CN112532376A/zh
Publication of CN101622816A publication Critical patent/CN101622816A/zh
Application granted granted Critical
Publication of CN101622816B publication Critical patent/CN101622816B/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • 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
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • 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
    • 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

Abstract

提供了用于通用处理器的灵活AES指令集。该指令集包括用于执行AES加密或解密的“一次循环”的指令,并且还包括用于执行密钥生成的指令。可以使用立即数来指示循环数和128/192/256位密钥的密钥生成的密钥长度。由于灵活AES指令集不要求跟踪隐式寄存器,所以可以充分利用管道能力。

Description

用于高级加密标准(AES)的灵活结构和指令
技术领域
本公开涉及密码算法,并且具体而言,涉及高级加密标准(AES)算法。
背景技术
密码是依靠算法和密钥来保护信息的工具。这种算法是复杂的数学算法,而所述密钥是比特串。密码系统具有两种基本类型:私用密钥系统和公共密钥系统。私用密钥系统又称为对称系统,其具有两方或多方共享的单个密钥(“私用密钥”)。该单个密钥既用于加密信息也用于解密信息。
国家标准和技术研究所(NIST)发布的作为联邦信息处理标准(FIPS)197的高级加密标准(AES)是一种私用密钥系统。AES是能够加密和解密信息的对称块加密(block cipher)。
加密技术(加密)使用私用密钥(加密密钥)执行一系列的转换,以将被称为“明文”的可理解数据转换为被称为“密文”的无法理解的形式。加密中的转换包括:(1)使用异或(XOR)操作将循环(round)密钥(从加密密钥导出的值)与体(state)(字节的二维阵列)相加;(2)使用非线性字节替换表(S-盒(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是包括图2中示出的用于根据本发明的原理来执行AES加密和解密的执行单元的实施例的框图;
图4是示出了通过图3中示出的执行单元的AES加密循环指令流的流程图;
图5是示出了通过图3中示出的执行单元的AES加密最后一个循环指令流的流程图;
图6是示出了通过图3中示出的执行单元的AES解密循环指令流的流程图;
图7是示出了通过图3中示出的执行单元的AES解密最后一个循环指令流的流程图;以及
图8示出了可以用来生成循环密钥并执行加密和解密的具有立即(immediate)字节的AES循环指令的实施例。
尽管以下详细描述将参考要求保护主题的说明性实施例来进行,但是本领域的技术人员会清楚其多种替换、更改和变化。因此,应当宽泛地看待所要求保护的主题,并且应该仅由所附权利要求对所要求保护的主题进行限定。
具体实施方式
高级加密标准(AES)算法是典型地在软件或专用处理器中执行的计算密集算法。因此,典型地,仅将加密操作用于对存储在计算机中的信息的子集进行加密,例如,所述子集为可以归类为“最高机密”的信息。然而,需要对存储在计算机中的更多信息进行加密。例如,如果存储在移动计算机中的所有信息都进行了加密,那么就算该移动计算机被盗,这些信息仍能受到保护。
AES是利用128、192或256位的密钥长度对128位的比特块进行操作的块加密。根据密钥长度,将一系列的操作反复执行若干个(10、12或14个)循环。
通过使用隐式128位寄存器来存储循环密钥,可以动态地(即,刚好在每个循环之前)生成用于每个循环的密钥。然而,由于依赖于先前指令的结果,使用隐式寄存器可能降低x86型基于寄存器的处理器的性能。
存在一些应用受益于动态密钥生成,例如,用于处理可能每个流具有不同密钥的网络分组的应用。可能存在要求更高性能的使用单个密钥的其它应用,例如,使用单个密钥来加密/解密磁盘驱动器的内容。因此,出现了对密钥生成的灵活性的要求。本发明的实施例提供了用于在通用处理器中执行AES加密和解密的灵活结构和指令。
图1是系统100的框图,其包括根据本发明的原理用于在通用处理器中执行AES加密和解密的灵活结构和指令的实施例。系统100包括处理器101、存储器控制器中心(MCH)或(图形存储器控制器中心(GMCH))102以及输入/输出(I/O)控制器中心(ICH)104。MCH 102包括存储器控制器106,其控制处理器101和存储器108之间的通信。处理器101和MCH102通过系统总线116进行通信。
处理器101可以是多种处理器中的任意一个,诸如:单核奔腾
Figure GSB00000637600700032
处理器、单核Intel赛扬处理器、
Figure GSB00000637600700033
处理器,或者诸如
Figure GSB00000637600700034
奔腾D、至强
Figure GSB00000637600700036
处理器或
Figure GSB00000637600700037
酷睿
Figure GSB00000637600700038
处理器等多核处理器,或者任何其它类型的处理器。
存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双数据速率2(DDR2)RAM或者Rambus动态随机存取存储器(RDRAM)或者任何其它类型的存储器。
ICH 104可以使用高速芯片到芯片互联114(例如,直接介质接口(DMI))来耦合到MCH 102。DMI支持经由两个单向通道的2千兆比特/秒的并发传输速率。
ICH 104可以包括存储I/O控制器110,用于控制与耦合到ICH 104的至少一个存储设备112的通信。存储设备可以是诸如:磁盘驱动器、数字视频盘(DVD)驱动器、紧致盘(CD)驱动器、独立冗余磁盘阵列(RAID)、磁带驱动器或其它存储设备。ICH 104可以使用串行存储协议通过存储协议互联118与存储设备112进行通信,所述串行存储协议诸如:串行连接微型计算机系统接口(SAS)或者串行高级技术连接(SATA)。
处理器101包括AES功能模块103,用于执行AES加密和解密操作。AES功能模块103可以用于对存储在存储器108和/或存储在存储设备112中的信息进行加密或解密。
图2是图1中示出的处理器101的实施例的框图。处理器101包括提取和解码单元206,用于对从第一级(L1)指令高速缓存202处接收的处理器指令进行解码。可以将用于执行指令的数据存储在寄存器堆208中。在一个实施例中,寄存器堆208包括多个128位寄存器,AES指令使用这些128位寄存器来存储由AES指令使用的数据。
在一个实施例中,寄存器堆是一组128位寄存器,这些128位寄存器类似于在具有流(单指令多数据(SIMD))扩展(SSE)指令集的Intel奔腾MMX处理器中提供的128位MMX寄存器。在SIMD处理器中,以128位的块来处理数据,其中一次载入一个128位的块。
提取和解码单元206从L1指令高速缓存202中提取宏指令、解码所述宏指令并且将其分解为称为微操作(μops)的简单操作,这些微操作可以存储在微码只读存储器(ROM)214中。执行单元210调度和执行这些微操作。在示出的实施例中,执行单元210中的AES功能模块103包括用于AES指令集的微操作。退出单元212将所执行指令的结果写入寄存器或存储器。AES指令使用的循环密钥214可以存储在L1数据高速缓存204中,并且可以被载入到执行单元210中以供微操作用于执行AES指令集中的AES指令。将循环密钥214存储在数据高速缓存204中的处理使循环密钥免于受到邻近信道的攻击,例如,尝试获取循环密钥以便能访问存储在系统100中的加密信息。
图3是示出了图2中示出的用于根据本发明的原理来执行AES加密和解密的执行单元210的实施例的框图。将结合图2来描述图3。
在提取和解码单元206已经将AES指令进行解码之后,执行单元210对AES指令的执行涉及执行可存储在微码ROM 214中的与AES指令相关联的微操作。
根据本发明的实施例的灵活AES指令集允许程序员针对待处理的数据量以及存储器带宽和容量来对性能进行折衷。
一些应用可以一直使用同一个密钥。在性能至关重要的应用中,可以在每次预先计算密钥的密钥调度(即,每个循环的循环密钥)以及将其存储在存储器中等方面进行折衷。其它应用可能需要将用于存储密钥调度的存储器数量最小化并且仍然能够实现多块操作的良好性能。对于这种应用,可以在处理之前对多个块预先计算密钥调度。通过仅存储加密密钥或反加密密钥以及之后以一些性能为代价导出其它必要的信息,可以进一步使存储器占用量(footprint)最小化。
在x86类型的处理器中,可用于AES循环密钥操作和AES调度操作的执行端口的区域和数量限制了AES指令的性能。在每个块加密都需要密钥扩展的系统中,可以通过将AES调度操作和AES循环密钥操作置于单独的执行端口来提高性能。然而,在x86类型的处理器中,可能无法使用单独的执行端口和用于控制该单独端口的附加区域。
在一个实施例中,提供了AES指令集,其包括单独的AES指令,用于执行加密循环、解密循环、加密最后一个循环、解密最后一个循环,以及用于计算加密循环密钥或解密循环密钥。在一个实施例中,AES指令集中存在六个AES指令。每个AES循环指令具有唯一的操作码(opcode)。下面在表1中示出了根据一个实施例的用于固定宽度循环密钥(例如,128位)的AES指令集中的AES循环指令。
Figure GSB00000637600700051
Figure GSB00000637600700061
表1
所述AES指令集包括四个AES循环指令(加密、解密、加密最后一个循环和解密最后一个循环)以及两个AES循环密钥指令(下一个循环密钥以及上一个循环密钥)。所述AES指令集中的AES循环指令包括用于执行加密和解密循环操作的多个单循环操作,其用于除了最后一个循环的所有循环。例如,在表1的AES加密循环(AESENCRYPTRound)单循环指令中,输入数据存储在128位的寄存器(xmmsrcdst)中并且循环密钥存储在另一个128位的寄存器(xmm)中。该指令对存储在128位的xmmsrcdst寄存器中的输入数据(源)执行AES循环操作,并且使用该循环操作的执行结果来改写存储在该128位的xmmsrcdst寄存器中的输入数据。因此,xmmsrcdst先是存储输入数据,而后存储AES循环操作的结果。
所述AES指令集还包括:用于最后一个解密循环的AES解密指令,以及用于最后一个加密循环的AES加密指令。例如,在表1的AES加密最后一个循环(AESENCRYPTLastRound)单循环指令中,输入数据存储在128位的寄存器(xmmsrcdst)中并且循环密钥存储在另一个128位的寄存器(xmm)中。该指令对存储在xmmsrcdst寄存器中的输入数据(源)执行AES循环操作,并且使用该循环操作的执行结果来改写存储在xmmsrcdst寄存器中的输入数据。因此,xmmsrcdst先是存储输入数据,而后存储循环操作的结果。xmm寄存器存储用于循环操作的循环密钥。
在另一个实施例中,诸如AESENCRYPTRound和AESENCRYPTLastRound的循环指令和最后一个循环指令可以从存储器(m/128)而不是从寄存器堆304中获取输入,例如,AES循环指令可以是AESENCRYPTRound xmmsrcdst m/128。
所述AES指令集中的其它两个AES指令根据密钥的长度(即,128位、192位或256位)来生成用于AES循环的循环密钥。一个AES循环密钥指令生成用于加密操作的循环密钥,以及另一个AES循环密钥指令生成用于解密操作的循环密钥。AES下一个循环密钥(AESNextRoundKey)指令和AES前一个循环密钥(AESPreviousRoundKey)指令中的立即(immediate)字段指定密钥的长度{128,192,256}。
在另一个实施例中,不使用立即字段,而是将不同的密钥长度实现为各自具有唯一操作码的单独的指令。在该实施例中,多个AES循环密钥指令包括用于每个循环密钥操作的三个单独的指令,例如,AESNextRoundKey_128、AESNextRoundKey_192和AESNextRoundKey_256,以及,将会具有用于AESPreviousRoundKey的类似的包含三个指令的指令集。在该实施例中,指令集中的指令总数是10个,这与前述实施例中指令总数为6个的情况不同。
寄存器堆304具有多个128位的寄存器,其可以由AES指令集中的AES指令使用。所述128位的寄存器可以存储源操作数、循环密钥和AES指令的结果。对于第一循环而言,AES指令接收的源操作数可以是将要进行加密的128位的明文或者是将要进行解密的128位的密文。用于生成128位、192位或256位密钥的密钥调度的密钥可以存储在寄存器堆304中的任何一个128位寄存器308中。循环密钥也可以存储在寄存器堆中的任何128位寄存器308中。所有指令使用寄存器堆中的寄存器并且也可以如前文所述直接地从存储器获取输入。
下面在表2中示出了使用表1所示的AES指令集的实施例的源码的实例。在该实例中,在对多个块使用同一个密钥以执行加密的应用中优化了性能。一个此类应用是使用单个密钥来加密磁盘的内容,其中,在将数据存储到磁盘中之前,使用同一个密钥对所有数据进行加密。在该实例中,执行AES-128加密。
密钥的长度可以是128位、192位或256位。根据密钥的长度,将要执行的循环次数可以是1、10、12或14,其中,每个循环密钥具有固定的长度(128位)。在循环次数的值为10、12、14的情况下,AES微操作可以针对128位、192位或256位的密钥长度执行标准AES加密和解密。
当对多个块使用同一个密钥时,可以预先计算用于每个循环的循环密钥(密钥调度),并且将其存储在存储器(例如,第1级数据高速缓存204)中,从而在对每个块进行加密/解密操作之前不需要再次计算同一个密钥调度。
表2
具有10个元素的阵列(RK)用于存储密钥的密钥调度。用于AES-128加密的输入密钥存储在RK[0]中,以及通过从AES指令集中调用AESNextRoundKey指令来预先计算出9个循环密钥RK[0]-RK[1]。AESNextRoundKey指令根据当前循环密钥来计算下一个循环。预先计算的用于密钥调度的循环密钥可以存储在第1级数据高速缓存204的循环密钥214中。
在该实例中,作为密钥调度(扩展密钥)的一部分,在进入环路以执行AES循环之前,从寄存器堆304直接输入用于该循环的循环密钥,对所述体和密钥执行异或(XOR)操作。对于循环1到循环9中的每一个循环,从AES指令集调用AESENCRYPTRound指令以对一个循环执行AES循环操作。对于最后一个循环(循环10)而言,从AES指令集调用AESNECYRPTLastRound指令以对最后一个循环执行AES循环操作。
在发出第一个AES指令以开始加密或解密操作之前,将待由AES指令进行加密或解密的信息载入到寄存器堆304中的源/目的寄存器306中。用于加密/解密源寄存器306中的信息的密钥存储在寄存器堆304中的一个或多个其它寄存器308中。在128位密钥的情况下,将整个128位密钥存储在寄存器堆304中的任意一个其它128位的寄存器中。对于长度超过128位的密钥而言,将(高于128位的)最高有效位存储在另一个128位寄存器中。
在表2所示的实例中,根据密钥来预先计算每个循环的循环密钥,并且在将该循环密钥载入到寄存器堆304的任何一个寄存器308之前,将其存储在第1级数据高速缓存204中。用于每个循环的密钥还可以存储在寄存器堆304中的一个或多个寄存器中,或者可以存储在第1级数据高速缓存204的循环密钥214中。
AES具有128位的固定块长度以及128、192或256位的密钥长度,并且AES对4x4的字节阵列(即,16个字节(128位的固定块长度))进行操作,将该4x4字节阵列称为“体”。AES算法在10、12或14个连续循环中将128位的明文块转换为128位的密文块(加密)或者将128位的密文块转换为128位的明文块(解密),其中,循环的次数取决于密钥长度(128、192或256位)。
在执行每个循环加密操作或解密操作之前,执行单元210接收存储在寄存器堆304中的体和密钥。使用存储在只读存储器(ROM)214的密钥调度器302中的AES指令的微操作来执行每个加密/解密循环操作。在示出的实施例中,体(128位的块体)存储在寄存器306中,并且密钥存储在寄存器堆304的一个或多个其它寄存器308中。在完成AES指令的执行之后,所得到的体存储在寄存器堆304的寄存器306中。所述体可以是由下一个AES循环使用的中间循环数据,或者是AES加密或解密操作的最终结果。
在示出的实施例中,密钥调度器302生成在AES循环中使用的循环密钥。密钥调度器302可以实现为多个微码操作,并且可以包括用于执行操作序列的微码操作,所述操作序列用于针对FIPS文档197所定义的128位、197位和256位密钥来生成循环密钥。
在另一个实施例中,密钥调度器可以实现为执行单元210中的硬件状态机序列。在另一个实施例中,密钥调度器的一些部分可以实现为存储在微码ROM 214中的微码操作,并且密钥调度器的剩余部分可以实现为执行单元210中的硬件状态机序列。
密钥调度器302将密钥的n个字节扩展为扩展密钥(密钥调度)的b个字节,其中,扩展密钥的前面n个字节是原来的密钥。例如,对于128位的密钥而言,将该128位密钥扩展为176字节的扩展密钥,即,11x16字节(128位),其中,前面的16个字节是原来的128位密钥,因此,循环的次数为10。将192位密钥的24个字节扩展为208个字节(13x16字节),以提供12个“循环密钥”,每个循环密钥用于12个循环中的一个,以及,将256位密钥的32个字节扩展为240个字节(15x16字节),以提供14个“循环密钥”,每个循环密钥用于14个循环中的一个。
在解码AES指令中的操作码(opcode)之后,将用于控制用于一个AES循环的AES指令中的流的多个参数存储在控制逻辑322中。这些参数包括操作类型(加密或解密)以及该循环是否是最后一个循环。
AES循环逻辑324可以包括用于以下阶段的微操作:块体314、S-box/逆S-box 316、移位行316和混合逆、混合列或空(称为“混合列”)320和加循环密钥326。
在块体314中,使用逐位XOR将对AES循环逻辑324的128位输入(体)与密钥(与该循环关联的扩展密钥的128位的部分)相加,以产生128位的中间值(体)。
在S-box/逆S-box 316中,使用可以存储在查询表中并从查询表检索的其它字节值来替换该128位中间值的每个字节,其中,又将所述查询表称为替换盒或“S-Box”。S-box获取一些数量的输入比特m且将其转换为一些数量的输出比特n,并且S-box典型地实现为查询表。典型地使用固定的查询表。通过使用伽罗瓦域(Galois Field)(GF)(28)上的逆函数,该操作提供了非线性。例如,可以通过使用m位输入的外部两个比特在查询表中选择行以及通过使用m位输入的内部比特选择列来寻找n位输出。
在移位行318中,S-box/逆S-box 316的结果通过比特线性转换,其中,将从替换字节阶段接收的4x4阵列(128位(16字节)的体)的每一行中的字节向左侧进行循环移位。对于4x4阵列中的每一行,对每个字节移位的位数不同。
在混合列320中,来自于移位行320的结果通过比特线性转换,其中,将4x4阵列(体)中的每一列视作二进制伽罗瓦域(GF)(28)上的多项式,并且之后使用固定多项式c(x)=3x3+x2+x+2将其与模x4+1相乘。最后一个AES循环与其它AES循环的不同之处在于其省略了混合列320。
对于该AES循环,混合列阶段320之后的加循环密钥324对来自于扩展密钥的循环密钥以及移位行318或混合列320的结果执行异或函数。
例如,可以发出下述AES指令以执行AES解密的一个循环:
AESDECRYPTRound xmmsrcdst xmm
该实例使用密钥来执行128位的AES加密循环操作,其中,该密钥的扩展密钥由(RK[1],RK[2],...RK[10])来表示。可以通过在发出AES解密循环(AESDECRYPTRound)指令之前发出AESPreviousRoundKey xmmsrc 1,2xmm dst(immediate)指令来生成该循环密钥。可以从第1级数据高速缓存204中直接将循环密钥载入到块体314中,或者可以将循环密钥首先存储在寄存器堆304的寄存器(xmm)中并且之后将循环密钥从寄存器载入到块体314中。
当使用不同的密钥来加密/解密每个块时,例如,对于用于加密/解密数据分组的网络接口控制器(NIC)而言,可以在执行加密/解密之前动态地计算每个循环的循环密钥,如下表3中用于AES-128加密的伪码中所示:
Figure GSB00000637600700121
表3
在该实例中,在将循环密钥用于密钥调度(扩展密钥)的10个循环(即,循环1-9以及循环10(最后一个循环))中的每一个以执行加密之前,生成用于该循环的循环密钥。
包括单AES循环指令和单AES循环密钥生成指令的AES指令集允许具有不同次数的循环和密钥调度的AES的变型,即,FIPS文档197未定义的AES的变型。因此,AES指令集中的单个循环AES指令提供了在执行AES加密和解密过程中的灵活性。
由于AES指令集所执行的循环的次数是不固定的,所以如果需要的话,可以执行任意次数的循环。例如,如果引入了用于散列或MAC攻击或者AES攻击的新标准,则可以改变循环的次数以支持未来的加密/解密标准。
图4是示出了通过图3中示出的执行单元210的AES加密循环指令流的流程图。
在方框400处,执行单元210等待AES加密循环指令。如果提取和解码单元206已经解码了AES加密循环指令,则处理继续进行到方框402。如果提取和解码单元206尚未解码AES加密循环指令,则处理保持在方框400中,等待AES加密循环指令。
在方框402处,在提取和解码单元206进行指令解码期间,表示将进行加密的指示被存储在控制逻辑322中,并且在执行加密循环过程中使用的循环密钥和128位的块体(源)被从寄存器堆304载入到执行单元210中。处理继续进行到方框404。
在方框404处,对128位的块体,即,来自于方框406或418的结果,执行替换操作。使用可以存储在查询表中并从查询表检索的其它字节值来替换该128位的块体的每个字节,其中,又将所述查询表称为替换盒或“S-Box”。S-box获取一些数量的输入比特m且将其转换为一些数量的输出比特n,典型地将S-box实现为查询表。将结果存储为128位的块体。处理继续进行到方框406。
在方框406处,128位的块体(4x4阵列)通过比特线性转换,其中,4x4阵列的每一行中的字节向左侧进行循环移位。对于4x4阵列中的每一行,对每个字节移位的位数不同。处理继续进行到方框408。
在方框408处,128位的块体(4x4阵列)通过比特线性转换,其中,将4x4阵列(体)中的每一列视作GF(28)上的多项式,并且之后使用固定多项式c(x)=3x3+x2+x+2将其与模x4+1相乘。处理继续进行到方框410。
在方框410处,对于该AES循环,对来自于扩展密钥的循环密钥以及移位行318或混合列320的结果执行异或函数。处理继续进行到方框412。
在方框412处,将该循环(128位的块体)的加密操作的结果存储在寄存器堆304的源/目的寄存器302中。用于AES加密指令的处理结束。
下面的表4示出了在执行表3所示的伪码之后,使用128位的密钥对128位的块输入执行AES-128加密的结果的实例。
128位输入:00112233445566778899aabbccddeeff    (十六进制)
128位密钥:000102030405060708090a0b0c0d0e0f    (十六进制)
128位结果:69c4e0d86a7b0430d8cdb78070b4c55a    (十六进制)
表4
图5是示出了通过图3中示出的执行单元210的AES加密最后一个循环指令流的流程图。
在方框500处,执行单元等待AES加密最后一个循环指令。如果提取和解码单元206已经解码了AES加密最后一个循环指令,则处理继续进行到方框502。如果提取和解码单元206尚未解码AES加密最后一个循环指令,则处理保持在方框500中,等待AES指令。
在方框502处,以结合方框404(图4)所讨论的S-box查询的类似方式来执行最后一个循环的S-box查询。处理继续进行到方框504。
在方框504处,与结合方框406(图4)的其它循环所讨论的类似方式来执行最后一个循环的移位行操作。处理继续进行到方框506。
在方框506处,对于该AES循环,对来自于扩展密钥的循环密钥以及移位行318或混合列320的结果执行异或函数。处理继续进行到方框508。
在方框508处,将加密最后一个循环操作的结果存储在寄存器堆304的源/目的寄存器306中。用于AES指令的处理结束。
图6是示出了通过图3中示出的执行单元210的AES解密循环指令流的流程图。
在方框600处,执行单元等待AES解密循环指令。如果提取和解码单元206已经解码了AES解密循环指令,则处理继续进行到方框602。如果提取和解码单元206尚未解码AES解密循环指令,则处理保持在方框600中,等待AES解密循环指令。
在方框602处,在提取和解码单元206进行指令解码期间,表示将进行解密的指示被存储在控制逻辑322中,并且在执行解密循环过程中使用的循环密钥和源(128位的块体)被从寄存器堆304载入到执行单元210中。处理继续进行到方框604。
在方框604处,将要执行的操作是解密。通过执行AES标准定义的逆S-box查询来对128位的块体执行替换操作。处理继续进行到方框606。
在方框606处,按照FIPS文档197的定义执行逆移位行操作。处理继续进行到方框608。
在方框608处,按照FIPS文档197的定义执行逆移位行操作。处理继续进行到方框610。
在方框610处,对于AES循环,对来自于扩展密钥的循环密钥以及移位行318或混合列320的结果执行异或函数。处理继续进行到方框612。
在方框612处,将该循环的解密操作的结果(128位的块体)存储在寄存器堆304的源/目的寄存器302中。用于AES解密循环指令的处理结束。
图7是示出了通过图3中示出的执行单元210的AES解密最后一个循环指令流的流程图。
在方框700处,执行单元210等待AES解密最后一个循环指令。如果提取和解码单元206已经解码了AES解密最后一个循环指令,则处理继续进行到方框702。如果提取和解码单元206尚未解码AES解密最后一个循环指令,则处理保持在方框700中,等待AES解密最后一个循环指令。
在方框702处,通过执行FIPS文档197所定义的逆S-box查询来对128位的块体执行最后一个循环的替换操作。处理继续进行到方框704。
在方框704处,按照FIPS文档197的定义对最后一个循环执行逆移位行操作。处理继续进行到方框706。
在方框706处,对于AES循环,对来自于扩展密钥的循环密钥以及移位行318或混合列320的结果执行异或函数。处理继续进行到方框708。
在方框708处,将解密最后一个循环操作的结果存储在寄存器堆304的源/目的寄存器306中。用于AES解密最后一个循环指令的处理结束。
在一个实施例中,图4-图7的流程图中的方框可以实现为执行单元210中的硬件状态机序列。在另一个实施例中,可以将部分方框实现为可以存储在只读存储器(ROM)214中的微程序。将方框实现为硬件状态机序列的实施例可以提供较高的性能。
图8示出了可以用来生成循环密钥并执行加密和解密的具有立即字节的AES循环指令的实施例。替代了表1中示出的AES指令集,提供了用于执行AES指令集的功能的单AES循环指令。将单AES指令所执行的特定功能编码在立即字节的比特之中(密钥_选择_修改量(key_select_modifier))。立即字节允许对AES循环指令进行扩展以增加新的特性,取代创建多个各自具有唯一操作码的新指令的方法。
可以将AES循环指令符号性地定义为:
dest:=AES_key_round(source2,source1),key_select_modifier
根据端口号将AES_密钥_循环(AES_key_round)指令发送给特定的执行单元210,以执行AES加密或解密操作。在示出的实施例中,端口号4是指定的用于AES循环指令的执行端口。将执行单元210分为多个并行端口(超标量)。然而,并非所有端口都是等同的。一些端口具有特定的资源,诸如:大整数乘法器或者浮点乘法器或除法器。在多个端口处支持更简单和更常见的指令,诸如加法、减法和异或,以使性能最大化。因此,对于每个指令或微操作,发出控制逻辑确定用于发出微操作/指令的端口。在该实施例中,总是将AES指令发往端口号4。然而,在其它实施例中,可以使用其它端口号。
参考图8,目标字段(dest)存储用于循环N的128位的扩展密钥,源2(source2)字段存储用于循环N-1的128位的扩展密钥,以及源1(souce1)字段存储用于循环N-2的128位的扩展密钥。key_select_modifier是一个8位的立即值,用于提供当前循环数(N)、操作方向(加密/解密)以及AES密钥长度。对于AES-128而言,不需要并且可以省略source1。执行单元是AES单元并且不使用标志(整数或浮点数)。
在一个实施例中,立即值的四个最低有效位的位编码指示循环数,例如,AES-128的循环数1-10、AES-192的循环数1-12以及AES-256的循环数2-14。对于AES-128和AES-192而言,由于第一个循环使用未修改的输入密钥,所以循环数0是无效的。对于AES-256而言,由于将未修改的256位的输入密钥用于前两个128位的循环,所以循环数0和1是无效的。
立即字节的第4位指示操作方向(加密或解密),例如,在一个实施例中,0=加密且1=解密,以及在另一个实施例中,1=加密且0=解密。立即字节的第5位和第6位指示AES密钥长度。在一个实施例中,按照下面的表5所示来定义AES密钥长度:
Figure GSB00000637600700161
表5
在另一个实施例中,值为11的位[6:5]也是128位密钥长度的指示符。在该实施例中,位[6:5]的全部值都是有效的并且可以被解析。
本领域的技术人员将理解,本发明的实施例所涉及的方法可以实现在包括计算机可用介质的计算机程序产品中。例如,此类计算机可用介质可以包括只读存储器设备,诸如:存储有计算机可读程序代码的紧致盘只读存储器(CD-ROM)盘或常规ROM设备、或者计算机软盘。
虽然已经具体地示出了本发明的实施例并且参考其实施例进行了描述,本领域的技术人员可以理解,可以在不偏离所附权利要求限定的本发明实施例范围的情况下对其形式和细节进行各种改变。

Claims (18)

1.一种用于执行高级加密标准循环的方法,包括:
使用一组高级加密标准AES指令来执行可编程次数的AES循环,所述一组AES指令包括至少一个单循环AES循环指令和至少一个单循环AES循环密钥生成指令,其中,如果可编程AES循环次数大于1,则
将密钥载入到临时密钥寄存器中;
通过下述来生成用于所述可编程次数的AES循环中的每一个的循环密钥:
当所述密钥是将被用于多个所述AES循环的单个密钥时,根据所述密钥来预先计算用于多个所述AES循环的循环密钥调度;以及
当所述密钥包括将被用于不同的AES循环中的多个不同的密钥时,对于至少一个AES循环,在该至少一个AES循环中执行加密和解密中的至少一个之前,动态地计算用于该至少一个AES循环的循环密钥;以及
在每个AES循环中对该AES循环的输入和用于该AES循环的所述循环密钥执行AES循环操作序列,以提供对下一个AES循环的下一个输入或者提供所述一组AES指令的结果。
2.如权利要求1所述的方法,其中,如果所述AES循环次数为1,则所述方法还包括:在执行所述AES循环操作序列之前,
根据所述密钥来预先计算用于该AES循环的循环密钥;以及
载入预先计算的用于该AES循环的循环密钥。
3.如权利要求2所述的方法,其中,执行所述AES循环操作序列包括:
对该AES循环的输入和用于该至少一个AES循环的所述循环密钥执行异或(XOR)操作,以产生中间值;
根据存储在查询表中的值对所述中间值中的每个字节执行替换操作;以及
通过对所述中间值中的行进行移位的比特线性转换来传递所述替换操作的结果。
4.如权利要求1所述的方法,其中,对于所述循环次数-1,执行所述AES循环操作序列包括:
对该AES循环的所述输入和用于该AES循环的所述循环密钥执行异或(XOR)操作,以产生中间值;
根据存储在查询表中的值对所述中间值中的每个字节执行替换操作;
通过对所述中间值中的行进行移位的比特线性转换来传递所述替换操作的结果;以及
通过对所述中间值中的列进行混合的比特线性转换来传递所述替换操作的结果。
5.如权利要求4所述的方法,其中,所述可编程次数的AES循环包括最后一个AES循环,对于该最后一个AES循环,执行所述AES循环操作序列包括:
对该最后一个AES循环的输入和用于该最后一个AES循环的所述循环密钥执行异或(XOR)操作,以产生中间值;
根据存储在查询表中的值对所述中间值中的每个字节执行替换操作;以及
通过对所述中间值中的行进行移位的比特线性转换来传递所述替换操作的结果。
6.如权利要求1所述的方法,其中,所述结果是加密值。
7.如权利要求1所述的方法,其中,所述结果是解密值。
8.如权利要求1所述的方法,其中,用于第一个AES循环的所述密钥和所述输入存储在寄存器堆中。
9.如权利要求8所述的方法,其中,所述寄存器堆包括多个128位的寄存器。
10.一种用于执行高级加密标准循环的装置,包括:
用于使用一组高级加密标准AES指令来执行可编程次数的AES循环的模块,所述一组AES指令包括至少一个单循环AES循环指令和至少一个单循环AES循环密钥生成指令,其中,如果可编程AES循环次数大于1,则
将密钥载入到临时密钥寄存器中;
通过下述来生成用于所述可编程次数的AES循环中的每一个的循环密钥:
当所述密钥是将被用于多个所述AES循环的单个密钥时,根据所述密钥来预先计算用于多个所述AES循环的循环密钥调度;以及
当所述密钥包括将被用于不同的AES循环中的多个不同的密钥时,对于至少一个AES循环,在该至少一个AES循环中执行加密和解密中的至少一个之前,动态地计算用于该至少一个AES循环的循环密钥;以及
用于在每个AES循环中对该AES循环的输入和用于该AES循环的所述循环密钥执行AES循环操作序列,以提供对下一个AES循环的下一个输入或者提供所述一组AES指令的结果的模块。
11.如权利要求10所述的装置,其中,如果所述AES循环次数为1,则所述装置还包括:在执行所述AES循环操作序列之前,
用于根据所述密钥来预先计算用于该AES循环的循环密钥的模块;以及
用于载入预先计算的用于该AES循环的循环密钥的模块。
12.如权利要求11所述的装置,其中,执行所述AES循环操作序列包括:
对该AES循环的输入和用于该至少一个AES循环的所述循环密钥执行异或(XOR)操作,以产生中间值;
根据存储在查询表中的值对所述中间值中的每个字节执行替换操作;以及
通过对所述中间值中的行进行移位的比特线性转换来传递所述替换操作的结果。
13.如权利要求10所述的装置,其中,对于所述循环次数-1,执行所述AES循环操作序列包括:
对该AES循环的所述输入和用于该AES循环的所述循环密钥执行异或(XOR)操作,以产生中间值;
根据存储在查询表中的值对所述中间值中的每个字节执行替换操作;
通过对所述中间值中的行进行移位的比特线性转换来传递所述替换操作的结果;以及
通过对所述中间值中的列进行混合的比特线性转换来传递所述替换操作的结果。
14.如权利要求13所述的装置,其中,所述可编程次数的AES循环包括最后一个AES循环,对于该最后一个AES循环,执行所述AES循环操作序列包括:
对该最后一个AES循环的输入和用于该最后一个AES循环的所述循环密钥执行异或(XOR)操作,以产生中间值;
根据存储在查询表中的值对所述中间值中的每个字节执行替换操作;以及
通过对所述中间值中的行进行移位的比特线性转换来传递所述替换操作的结果。
15.如权利要求10所述的装置,其中,所述结果是加密值。
16.如权利要求10所述的装置,其中,所述结果是解密值。
17.如权利要求10所述的装置,其中,用于第一个AES循环的所述密钥和所述输入存储在寄存器堆中。
18.如权利要求17所述的装置,其中,所述寄存器堆包括多个128位的寄存器。
CN2008800064951A 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令 Active CN101622816B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710815893.9A CN107465501B (zh) 2007-03-28 2008-03-25 用于高级加密标准aes的处理器和系统
CN201310110523.7A CN103152168B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的处理器和指令
CN201710815596.4A CN107493163B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令
CN202011411255.9A CN112532376A (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/729,199 US8538015B2 (en) 2007-03-28 2007-03-28 Flexible architecture and instruction for advanced encryption standard (AES)
US11/729,199 2007-03-28
PCT/US2008/058128 WO2008121614A1 (en) 2007-03-28 2008-03-25 Flexible architecture and instruction for advanced encryption standard (aes)

Related Child Applications (4)

Application Number Title Priority Date Filing Date
CN202011411255.9A Division CN112532376A (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令
CN201310110523.7A Division CN103152168B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的处理器和指令
CN201710815596.4A Division CN107493163B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令
CN201710815893.9A Division CN107465501B (zh) 2007-03-28 2008-03-25 用于高级加密标准aes的处理器和系统

Publications (2)

Publication Number Publication Date
CN101622816A CN101622816A (zh) 2010-01-06
CN101622816B true CN101622816B (zh) 2013-05-01

Family

ID=39794399

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201310110523.7A Active CN103152168B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的处理器和指令
CN201710815893.9A Active CN107465501B (zh) 2007-03-28 2008-03-25 用于高级加密标准aes的处理器和系统
CN202011411255.9A Pending CN112532376A (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令
CN2008800064951A Active CN101622816B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令
CN201710815596.4A Active CN107493163B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201310110523.7A Active CN103152168B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的处理器和指令
CN201710815893.9A Active CN107465501B (zh) 2007-03-28 2008-03-25 用于高级加密标准aes的处理器和系统
CN202011411255.9A Pending CN112532376A (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201710815596.4A Active CN107493163B (zh) 2007-03-28 2008-03-25 用于高级加密标准(aes)的灵活结构和指令

Country Status (8)

Country Link
US (24) US8538015B2 (zh)
EP (5) EP3737031B1 (zh)
JP (6) JP2010520517A (zh)
CN (5) CN103152168B (zh)
ES (1) ES2805125T3 (zh)
SG (1) SG146584A1 (zh)
TW (1) TWI369885B (zh)
WO (1) WO2008121614A1 (zh)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050087271A (ko) * 2004-02-26 2005-08-31 삼성전자주식회사 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8787565B2 (en) 2007-08-20 2014-07-22 Intel Corporation Method and apparatus for generating an advanced encryption standard (AES) key schedule
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
GB2463031B (en) * 2008-08-28 2010-12-15 Samsung Electronics Co Ltd Device and method for encrypting data or providing an encryption key
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
JP4687775B2 (ja) 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
US8233620B2 (en) * 2009-02-27 2012-07-31 Inside Secure Key recovery mechanism for cryptographic systems
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi 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
JP5564194B2 (ja) * 2009-04-14 2014-07-30 株式会社メガチップス メモリコントローラ、メモリ制御装置およびメモリ装置
US9680637B2 (en) 2009-05-01 2017-06-13 Harris Corporation Secure hashing device using multiple different SHA variants and related methods
TWI407307B (zh) * 2009-06-18 2013-09-01 Univ Ishou Identification tag and radio frequency identification system
TWI397300B (zh) * 2009-09-25 2013-05-21 Univ Shu Te Digital information encryption method
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US9990201B2 (en) 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US8954755B2 (en) 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US9244840B2 (en) 2012-12-12 2016-01-26 International Business Machines Corporation Cache swizzle with inline transposition
US9135834B2 (en) * 2013-04-30 2015-09-15 The United Sates of America as represented by the Secretary of the Air Force Apparatus and method to prevent side channel power attacks in advanced encryption standard using floating point operation
US9160523B2 (en) * 2013-04-30 2015-10-13 The United States Of America As Represented By The Secretary Of The Air Force Apparatus and method to prevent side channel power attacks in advanced encryption standard
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
FR3011653B1 (fr) * 2013-10-09 2018-01-12 Oberthur Technologies Procedes et dispositifs de masquage et demasquage
US9900149B2 (en) * 2013-12-24 2018-02-20 Synopsys, Inc. Area efficient cryptographic method and apparatus
US9361106B2 (en) * 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
CN104883256B (zh) * 2014-02-27 2019-02-01 中国科学院数据与通信保护研究教育中心 一种抵抗物理攻击和系统攻击的密钥保护方法
US9800406B2 (en) * 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
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
US9992171B2 (en) * 2014-11-03 2018-06-05 Sony Corporation Method and system for digital rights management of encrypted digital content
US9503256B2 (en) * 2014-12-24 2016-11-22 Intel Corporation SMS4 acceleration hardware
CN106027225B (zh) * 2015-03-23 2019-07-26 联想(北京)有限公司 数据的解密方法以及电子设备
US9773432B2 (en) 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
RU2598781C1 (ru) * 2015-07-31 2016-09-27 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ линейного преобразования (варианты)
US10103877B2 (en) * 2015-09-24 2018-10-16 Intel Corporation SMS4 acceleration processors having round constant generation
US10049057B2 (en) * 2015-12-18 2018-08-14 Intel Corporation Instruction and logic for secure instruction execution pipeline
CN107547190A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 用于保护使用替换表的替换运算免受侧信道分析的方法
US10341085B2 (en) * 2016-09-06 2019-07-02 Nxp B.V. Software protection against differential fault analysis
CN108011708B (zh) * 2016-10-28 2021-05-25 长城汽车股份有限公司 基于汽车总线的报文加密方法、车辆的控制器及车辆
CN107315964B (zh) * 2017-06-14 2020-09-25 苏州浪潮智能科技有限公司 一种基于加密机实现加密卷转换的方法
JP6938250B2 (ja) * 2017-07-05 2021-09-22 キーサイト テクノロジーズ, インク. 測定システムのプログラム作成方法、測定システム、及び、コンピュータ可読記憶媒体
CN107800530B (zh) * 2017-11-28 2020-09-18 聚辰半导体股份有限公司 一种sms4的s盒掩码方法
CN108132834B (zh) * 2017-12-08 2020-08-18 西安交通大学 多级共享高速缓冲存储器架构下的任务分配方法和系统
US10505521B2 (en) * 2018-01-10 2019-12-10 Ememory Technology Inc. High voltage driver capable of preventing high voltage stress on transistors
US11032061B2 (en) * 2018-04-27 2021-06-08 Microsoft Technology Licensing, Llc Enabling constant plaintext space in bootstrapping in fully homomorphic encryption
CN109005027B (zh) * 2018-08-16 2021-09-14 成都映潮科技股份有限公司 一种随机数据加解密法、装置及系统
KR102628010B1 (ko) 2018-10-05 2024-01-22 삼성전자주식회사 가상 암호화 연산을 수행하는 암호화 회로
US11444748B2 (en) * 2019-03-29 2022-09-13 Intel Corporation Ultra-low latency advanced encryption standard
WO2020222547A1 (ko) * 2019-05-02 2020-11-05 삼성전자 주식회사 암호화 및 복호화를 수행하는 전자 장치 및 그 제어 방법
CN110336662B (zh) * 2019-06-06 2022-02-18 平安科技(深圳)有限公司 数字信息加密方法、装置、计算机设备和存储介质
US20210091928A1 (en) * 2019-09-23 2021-03-25 Qualcomm Incorporated Iterative cipher key-schedule cache for caching round keys used in an iterative encryption/decryption system and related methods
CN110807202B (zh) * 2019-10-31 2022-03-18 北京字节跳动网络技术有限公司 校验信息的处理方法、装置、电子设备及计算机可读介质
CN110908603B (zh) * 2019-11-01 2024-01-19 惠州市德赛西威汽车电子股份有限公司 一种数据存储防错处理系统及方法
CN111865560B (zh) * 2020-06-23 2021-07-27 华中科技大学 一种aes密码协处理器及终端设备
CN112395012B (zh) * 2020-11-03 2024-02-27 南方电网数字电网科技(广东)有限公司 基于双芯智能电表的数据清空方法、装置和计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1655496A (zh) * 2004-04-16 2005-08-17 威盛电子股份有限公司 产生密码钥匙排程的装置及方法
CN1898896A (zh) * 2001-12-18 2007-01-17 阿纳洛格装置公司 高级加密标准算法的可编程数据加密引擎

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1496421A (en) 1922-04-01 1924-06-03 Koranicki Johann Animal trap
US1519509A (en) 1923-09-06 1924-12-16 Brown Co System for and method of producing sulphate and sulphite pulp
US1596530A (en) 1925-05-09 1926-08-17 Newport Co Anthracene dye and a process of manufacture
US1677921A (en) 1925-07-16 1928-07-24 Jules K Johnson Vacuum cleaner
US2447563A (en) 1947-04-11 1948-08-24 Sutherland Paper Co Collapsible covered container or box
US4641238A (en) 1984-12-10 1987-02-03 Itt Corporation Multiprocessor system employing dynamically programmable processing elements controlled by a master processor
US5781758A (en) 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
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
US7277540B1 (en) 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US6324288B1 (en) 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
US6738845B1 (en) 1999-11-05 2004-05-18 Analog Devices, Inc. Bus architecture and shared bus arbitration method for a communication device
US7371397B2 (en) 2000-01-18 2008-05-13 Albemarle Corporation Methods for microbiological control in aqueous systems
US20020108059A1 (en) 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
KR100366790B1 (ko) 2000-08-26 2003-01-09 엘지전자 주식회사 동기식 전송장치의 계위단위 스위치
KR100525389B1 (ko) 2001-01-17 2005-11-02 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치
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
JP3851115B2 (ja) 2001-06-28 2006-11-29 富士通株式会社 暗号回路
DE60143275D1 (de) 2001-08-20 2010-11-25 Infineon Technologies Ag Vorrichtung und Verfahren zur Durchführung eines kryptographischen Algorithmus
US7203310B2 (en) 2001-12-04 2007-04-10 Microsoft Corporation Methods and systems for cryptographically protecting secure content
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US7570760B1 (en) * 2004-09-13 2009-08-04 Sun Microsystems, Inc. Apparatus and method for implementing a block cipher algorithm
US20030196096A1 (en) 2002-04-12 2003-10-16 Sutton James A. Microcode patch authentication
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
US7346159B2 (en) 2002-05-01 2008-03-18 Sun Microsystems, Inc. Generic modular multiplier using partial reduction
WO2003101020A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
US6963991B2 (en) 2002-05-31 2005-11-08 Intel Corporation Synchronizing and aligning differing clock domains
GB0214620D0 (en) 2002-06-25 2002-08-07 Koninkl Philips Electronics Nv Round key generation for AES rijndael block cipher
CN100521599C (zh) 2002-08-08 2009-07-29 松下电器产业株式会社 加密解密装置、加密装置以及解密装置
US7185177B2 (en) 2002-08-26 2007-02-27 Gerald George Pechanek Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors
FR2845397B1 (fr) * 2002-10-02 2005-07-29 Allevard Rejna Autosuspensions Installation de trempe par induction, notamment pour la fabrication d'elements de suspension
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 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
JP3818263B2 (ja) 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
TW595183B (en) 2003-03-14 2004-06-21 Acer Labs Inc Crypto-system with an inverse key evaluation circuit
US7533273B2 (en) * 2003-03-19 2009-05-12 Broadcom Corporation Method and system for controlling an encryption/decryption engine using descriptors
FR2853425B1 (fr) * 2003-04-07 2006-01-13 Atmel Corp Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
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
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7536560B2 (en) * 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US20060198524A1 (en) * 2003-05-14 2006-09-07 Sexton Bonnie C Hardware implementation of the mixcolumn/invmiscolumn functions
US7472285B2 (en) 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
JPWO2005006191A1 (ja) * 2003-07-10 2006-08-24 富士通株式会社 複数種類の情報を登録する装置および方法
CN1599338A (zh) * 2003-09-19 2005-03-23 皇家飞利浦电子股份有限公司 增强无线局域网安全的方法
US20050097315A1 (en) * 2003-10-30 2005-05-05 Tzahi Carmeli Method and apparatus to configure transmitter and receiver to encrypt and decrypt data
US7636858B2 (en) * 2003-12-11 2009-12-22 Intel Corporation Management of a trusted cryptographic processor
TWI244299B (en) 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
KR100800468B1 (ko) * 2004-01-29 2008-02-01 삼성전자주식회사 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN1677921A (zh) 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
TWI268686B (en) 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US20050251662A1 (en) 2004-04-22 2005-11-10 Samra Nicholas G Secondary register file mechanism for virtual multithreading
US7561689B2 (en) * 2004-06-17 2009-07-14 Agere Systems Inc. Generating keys having one of a number of key sizes
US7496196B2 (en) 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
JP2006041118A (ja) * 2004-07-26 2006-02-09 Toshiba Corp 半導体装置及びその製造方法
US20060023875A1 (en) 2004-07-30 2006-02-02 Graunke Gary L Enhanced stream cipher combining function
US7620821B1 (en) 2004-09-13 2009-11-17 Sun Microsystems, Inc. Processor including general-purpose and cryptographic functionality in which cryptographic operations are visible to user-specified software
US8005209B2 (en) 2005-01-06 2011-08-23 Polytechnic University Invariance based concurrent error detection for the advanced encryption standard
US20060194386A1 (en) * 2005-02-25 2006-08-31 Dell Products L.P. Method and apparatus for supporting port aggregation of serial attached SCSI wide ports via virtual ports
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
CN1761185B (zh) * 2005-11-18 2011-08-17 清华大学 乱序执行的数据流aes加密电路结构
US7649992B2 (en) * 2006-01-06 2010-01-19 Fujitsu Limited Apparatuses for encoding, decoding, and authenticating data in cipher block chaining messaging authentication code
US7610537B2 (en) 2006-04-04 2009-10-27 International Business Machines Corporation Method and apparatus for testing multi-core microprocessors
US8074017B2 (en) 2006-08-11 2011-12-06 Intel Corporation On-disk caching for raid systems
CN1921382B (zh) * 2006-09-06 2010-05-12 华为技术有限公司 一种基于aes算法的加解密方法及加解密器
US8301905B2 (en) 2006-09-08 2012-10-30 Inside Secure System and method for encrypting data
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538012B2 (en) 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8781110B2 (en) 2007-06-30 2014-07-15 Intel Corporation Unified system architecture for elliptic-curve cryptography
US7930519B2 (en) 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1898896A (zh) * 2001-12-18 2007-01-17 阿纳洛格装置公司 高级加密标准算法的可编程数据加密引擎
CN1655496A (zh) * 2004-04-16 2005-08-17 威盛电子股份有限公司 产生密码钥匙排程的装置及方法

Also Published As

Publication number Publication date
US10171231B2 (en) 2019-01-01
EP3361668B1 (en) 2020-05-27
US10171232B2 (en) 2019-01-01
EP2132899A4 (en) 2011-03-16
US20160119123A1 (en) 2016-04-28
US9654281B2 (en) 2017-05-16
SG146584A1 (en) 2008-10-30
CN103152168A (zh) 2013-06-12
US20160196219A1 (en) 2016-07-07
US20150104007A1 (en) 2015-04-16
JP2013057946A (ja) 2013-03-28
CN107465501B (zh) 2020-12-25
EP2852088B1 (en) 2019-02-06
US9634829B2 (en) 2017-04-25
US20080240426A1 (en) 2008-10-02
US10187201B2 (en) 2019-01-22
CN103152168B (zh) 2017-12-05
JP2014041382A (ja) 2014-03-06
US9634830B2 (en) 2017-04-25
US20160248580A1 (en) 2016-08-25
EP2852088A1 (en) 2015-03-25
US20160119127A1 (en) 2016-04-28
US20160119124A1 (en) 2016-04-28
US10256972B2 (en) 2019-04-09
US8538015B2 (en) 2013-09-17
JP2010520517A (ja) 2010-06-10
US9641319B2 (en) 2017-05-02
US20150100796A1 (en) 2015-04-09
US20160119129A1 (en) 2016-04-28
JP6592804B2 (ja) 2019-10-23
US20160119125A1 (en) 2016-04-28
US10270589B2 (en) 2019-04-23
EP3361668A1 (en) 2018-08-15
US20160197720A1 (en) 2016-07-07
EP2132899A1 (en) 2009-12-16
US20150104010A1 (en) 2015-04-16
US10313107B2 (en) 2019-06-04
US20150104008A1 (en) 2015-04-16
US20160119128A1 (en) 2016-04-28
ES2805125T3 (es) 2021-02-10
US10181945B2 (en) 2019-01-15
US10554386B2 (en) 2020-02-04
WO2008121614A1 (en) 2008-10-09
CN107465501A (zh) 2017-12-12
US20150104009A1 (en) 2015-04-16
US20160119131A1 (en) 2016-04-28
JP2017083879A (ja) 2017-05-18
US20150100798A1 (en) 2015-04-09
US10256971B2 (en) 2019-04-09
EP3737031B1 (en) 2023-08-30
EP3145113B1 (en) 2018-11-07
TW200845689A (en) 2008-11-16
EP3145113A1 (en) 2017-03-22
US9641320B2 (en) 2017-05-02
US20150169473A1 (en) 2015-06-18
JP2015096976A (ja) 2015-05-21
US10164769B2 (en) 2018-12-25
US9654282B2 (en) 2017-05-16
US20150169474A1 (en) 2015-06-18
US20160119126A1 (en) 2016-04-28
CN107493163A (zh) 2017-12-19
US20160119130A1 (en) 2016-04-28
EP3737031A1 (en) 2020-11-11
CN101622816A (zh) 2010-01-06
US10158478B2 (en) 2018-12-18
US9647831B2 (en) 2017-05-09
US20140003602A1 (en) 2014-01-02
CN112532376A (zh) 2021-03-19
EP2132899B1 (en) 2018-06-06
US9634828B2 (en) 2017-04-25
US10581590B2 (en) 2020-03-03
US20150100797A1 (en) 2015-04-09
CN107493163B (zh) 2021-06-25
JP2015108853A (ja) 2015-06-11
JP5715218B2 (ja) 2015-05-07
US10263769B2 (en) 2019-04-16
TWI369885B (en) 2012-08-01
US10291394B2 (en) 2019-05-14
US20150154122A1 (en) 2015-06-04

Similar Documents

Publication Publication Date Title
CN101622816B (zh) 用于高级加密标准(aes)的灵活结构和指令

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