CN107493163B - 用于高级加密标准(aes)的灵活结构和指令 - Google Patents
用于高级加密标准(aes)的灵活结构和指令 Download PDFInfo
- Publication number
- CN107493163B CN107493163B CN201710815596.4A CN201710815596A CN107493163B CN 107493163 B CN107493163 B CN 107493163B CN 201710815596 A CN201710815596 A CN 201710815596A CN 107493163 B CN107493163 B CN 107493163B
- Authority
- CN
- China
- Prior art keywords
- aes
- processor
- instruction
- key
- loop
- 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
Links
- 230000015654 memory Effects 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 21
- 230000009466 transformation Effects 0.000 claims description 6
- 238000006467 substitution reaction Methods 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims 4
- 238000010168 coupling process Methods 0.000 claims 4
- 238000005859 coupling reaction Methods 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 10
- 239000003607 modifier Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了用于通用处理器的灵活AES指令集。该指令集包括用于执行AES加密或解密的“一次循环”的指令,并且还包括用于执行密钥生成的指令。可以使用立即数来指示循环数和128/192/256位密钥的密钥生成的密钥长度。由于灵活AES指令集不要求跟踪隐式寄存器,所以可以充分利用管道能力。
Description
本申请是申请日为2008年3月25日、申请号为201310110523.7的同名专利申请的分案申请。
技术领域
本公开涉及密码算法,并且具体而言,涉及高级加密标准(AES)算法。
背景技术
密码是依靠算法和密钥来保护信息的工具。这种算法是复杂的数学算法,而所述密钥是比特串。密码系统具有两种基本类型:私用密钥系统和公共密钥系统。私用密钥系统又称为对称系统,其具有两方或多方共享的单个密钥(“私用密钥”)。该单个密钥既用于加密信息也用于解密信息。
国家标准和技术研究所(NIST)发布的作为联邦信息处理标准(FIPS)197的高级加密标准(AES)是一种私用密钥系统。AES是能够加密和解密信息的对称块加密(blockcipher)。
加密技术(加密)使用私用密钥(加密密钥)执行一系列的转换,以将被称为“明文”的可理解数据转换为被称为“密文”的无法理解的形式。加密中的转换包括:(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进行通信。
存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或者任何其它类型的存储器。在一个示例中,该DRAM可以包括同步动态随机存取存储器(SDRAM)、双数据速率(DDR)RAM、双数据速率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循环指令。
AESENCRYPTRound xmmsrcdst xmm
输入:数据(=目标),循环密钥
输出:使用循环密钥通过AES循环进行转换之后的数据
AESENCRYPTLastRound xmmsrcdst xmm
输入:数据(=目标),循环密钥
输出:使用循环密钥通过AES最后一个循环进行转换之后的数据
AESDECRYPTRound xmmsrcdst xmm
输入:数据(=目标),循环密钥
输出:使用循环密钥通过AES循环进行转换之后的数据
AESDECRYPTLastRound xmmsrcdst xmm
输入:数据(=目标),循环密钥
输出:使用循环密钥通过AES最后一个循环进行转换之后的数据
AESNextRoundKey xmmsrc1,2xmm dst(immediate)
输入:密钥的低128位,密钥的高128位,循环数的指示符
输出:从输入导出的下一个循环密钥
AESPreviousRoundKey xmmsrc1,2xmm dst(immediate)
输入:密钥的低128位,密钥的高128位,循环数的指示符
输出:从输入导出的上一个循环密钥
表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加密的伪码中所示:
表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,source 1),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密钥长度:
表5
在另一个实施例中,值为11的位[6:5]也是128位密钥长度的指示符。在该实施例中,位[6:5]的全部值都是有效的并且可以被解析。
本领域的技术人员将理解,本发明的实施例所涉及的方法可以实现在包括计算机可用介质的计算机程序产品中。例如,此类计算机可用介质可以包括只读存储器设备,诸如:存储有计算机可读程序代码的紧致盘只读存储器(CD-ROM)盘或常规ROM设备、或者计算机软盘。
虽然已经具体地示出了本发明的实施例并且参考其实施例进行了描述,本领域的技术人员可以理解,可以在不偏离所附权利要求限定的本发明实施例范围的情况下对其形式和细节进行各种改变。
Claims (77)
1.一种处理器,包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
指令提取逻辑单元,其从所述L1指令高速缓存提取指令;
解码逻辑单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES解密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES解密操作的所述循环解密的输入数据;
执行单元,其包括AES执行逻辑单元,所述AES执行逻辑单元执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES解密操作的所述循环,所述AES解密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行解密,并且将所述AES解密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES解密操作的所述循环包括:
对所述输入数据执行的替换操作,所述替换操作包括逆替换盒查询,
逆移位行操作,
逆混合列操作,以及
加循环密钥操作,在所述加循环密钥操作中,异或函数使用来自所述循环密钥的数据。
2.一种处理器,包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
解码单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES解密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES解密操作的所述循环解密的输入数据;
执行单元,其执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES解密操作的所述循环,所述AES解密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行解密,并且将所述AES解密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES解密操作的所述循环包括:
对所述输入数据执行的替换操作,所述替换操作包括逆替换盒查询,
逆移位行操作,
逆混合列操作,以及
加循环密钥操作,在所述加循环密钥操作中,异或函数使用来自所述循环密钥的数据。
3.一种处理器,包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
指令提取逻辑单元,其从所述L1指令高速缓存提取指令;
解码逻辑单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES加密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES加密操作的所述循环加密的输入数据;
执行单元,其包括AES执行逻辑单元,所述AES执行逻辑单元执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES加密操作的所述循环,所述AES加密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行加密,并且将所述AES加密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES加密操作的所述循环包括:
替换字节转换,其对所述输入数据执行字节替换,所述替换字节转换包括替换盒S-box查询,以得到被替换数据的第一阵列;
移位行转换,其将所述第一阵列中的行数据移位一指定量,以得到第二阵列;
混合列转换,在所述混合列转换中,所述第二阵列的列被视作伽罗瓦域GF(28)上的多项式,并且被与固定多项式相乘且对x4+1取模,以生成混合列结果;以及
加循环密钥转换,在所述加循环密钥转换中,异或函数使用来自所述循环密钥和所述混合列结果的数据。
4.一种处理器,包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
解码单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES加密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES加密操作的所述循环加密的输入数据;
执行单元,其执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES加密操作的所述循环,所述AES加密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行加密,并且将所述AES加密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES加密操作的所述循环包括:
替换字节转换,其对所述输入数据执行字节替换,所述替换字节转换包括替换盒S-box查询,以得到被替换数据的第一阵列;
移位行转换,其将所述第一阵列中的行数据移位一指定量,以得到第二阵列;
混合列转换,在所述混合列转换中,所述第二阵列的列被视作伽罗瓦域GF(28)上的多项式,并且被与固定多项式相乘且对x4+1取模,以生成混合列结果;以及
加循环密钥转换,在所述加循环密钥转换中,异或函数使用来自所述循环密钥和所述混合列结果的数据。
5.一种系统,包括:
处理器,其包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
指令提取逻辑单元,其从所述L1指令高速缓存提取指令;
解码逻辑单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES解密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES解密操作的所述循环解密的输入数据;
执行单元,其包括AES执行逻辑单元,所述AES执行逻辑单元执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES解密操作的所述循环,所述AES解密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行解密,并且将所述AES解密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES解密操作的所述循环包括:
对所述输入数据执行的替换操作,所述替换操作使用逆替换盒,
逆移位行操作,
逆混合列操作,以及
加循环密钥操作,在所述加循环密钥操作中,异或函数使用来自所述循环密钥的数据;
其中,所述系统还包括系统存储器,其包括通过一个或多个互连耦合到所述处理器的多数据速率动态随机存取存储器;以及
其中,所述系统还包括一个或多个存储设备,其在所述处理器外部并且耦合到所述处理器。
6.如权利要求5所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
7.如权利要求5所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
8.如权利要求5所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口。
9.如权利要求5所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
10.如权利要求5所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
11.如权利要求5所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
12.如权利要求5所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
13.一种系统,包括:
处理器,其包括:
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
解码单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES解密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES解密操作的所述循环解密的输入数据;
执行单元,其执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES解密操作的所述循环,所述AES解密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行解密,并且将所述AES解密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES解密操作的所述循环包括:
对所述输入数据执行的替换操作,所述替换操作使用逆替换盒,
逆移位行操作,
逆混合列操作,以及
加循环密钥操作,在所述加循环密钥操作中,异或函数使用来自所述循环密钥的数据;
其中,所述系统还包括系统存储器,其包括通过一个或多个互连耦合到所述处理器的多数据速率动态随机存取存储器;以及
其中,所述系统还包括一个或多个存储设备,其在所述处理器外部并且耦合到所述处理器。
14.如权利要求13所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
15.如权利要求13所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
16.如权利要求13所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口。
17.如权利要求13所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
18.如权利要求13所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
19.如权利要求13所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
20.如权利要求13所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
21.一种系统,包括:
处理器,其包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
指令提取逻辑单元,其从所述L1指令高速缓存提取指令;
解码逻辑单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES加密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES加密操作的所述循环加密的输入数据;
执行单元,其包括AES执行逻辑单元,所述AES执行逻辑单元执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES加密操作的所述循环,所述AES加密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行加密,并且将所述AES加密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES加密操作的所述循环包括:
替换字节转换,其对所述输入数据执行字节替换,所述替换字节转换使用替换盒S-box,以得到被替换数据的第一阵列,
移位行转换,其将所述第一阵列中的行数据移位一指定量,以得到第二阵列,
混合列转换,在所述混合列转换中,所述第二阵列的列被视作伽罗瓦域GF(28)上的多项式,并且被与固定多项式相乘且对x4+1取模,以生成混合列结果,以及
加循环密钥转换,在所述加循环密钥转换中,异或函数使用来自所述循环密钥和所述混合列结果的数据;
其中,所述系统还包括系统存储器,其包括通过一个或多个互连耦合到所述处理器的多数据速率动态随机存取存储器;以及
其中,所述系统还包括一个或多个存储设备,其在所述处理器外部并且耦合到所述处理器。
22.如权利要求21所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
23.如权利要求21所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
24.如权利要求21所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口。
25.如权利要求21所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
26.如权利要求21所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
27.如权利要求21所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
28.如权利要求21所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
29.一种系统,包括:
处理器,其包括:
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
解码单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES加密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES加密操作的所述循环加密的输入数据;
执行单元,其执行所述处理器的所述指令集的所述第一AES指令,以执行所述AES加密操作的所述循环,所述AES加密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行加密,并且将所述AES加密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES加密操作的所述循环包括:
替换字节转换,其对所述输入数据执行字节替换,所述替换字节转换使用替换盒S-box,以得到被替换数据的第一阵列,
移位行转换,其将所述第一阵列中的行数据移位一指定量,以得到第二阵列,
混合列转换,在所述混合列转换中,所述第二阵列的列被视作伽罗瓦域GF(28)上的多项式,并且被与固定多项式相乘且对x4+1取模,以生成混合列结果,以及
加循环密钥转换,在所述加循环密钥转换中,异或函数使用来自所述循环密钥和所述混合列结果的数据;
其中,所述系统还包括系统存储器,其包括通过一个或多个互连耦合到所述处理器的多数据速率动态随机存取存储器;以及
其中,所述系统还包括一个或多个存储设备,其在所述处理器外部并且耦合到所述处理器。
30.如权利要求29所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
31.如权利要求29所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
32.如权利要求29所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口。
33.如权利要求29所述的系统,其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
34.如权利要求29所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
35.如权利要求29所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
36.如权利要求29所述的系统,还包括耦合到所述处理器以处理数据分组的网络接口,并且其中,所述一个或多个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器,并且所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
37.一种系统,包括:
处理器,其包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
指令提取逻辑单元,其从所述L1指令高速缓存提取指令;
解码逻辑单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES解密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES解密操作的所述循环解密的输入数据;
执行单元,其包括AES执行逻辑单元,所述AES执行逻辑单元执行所述第一AES指令以执行所述AES解密操作的所述循环,所述AES解密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行解密,并且将所述AES解密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES解密操作的所述循环包括:
对所述输入数据执行的替换操作,所述替换操作使用逆替换盒,
逆移位行操作,
逆混合列操作,以及
加循环密钥操作,在所述加循环密钥操作中,异或函数使用来自所述循环密钥的数据;
其中,所述系统还包括存储器控制器,其将所述处理器耦合到动态随机存取存储器DRAM;以及
其中,所述系统还包括输入/输出I/O控制器,其将所述处理器耦合到在所述处理器外部的一个或多个设备。
38.如权利要求37所述的系统,其中,所述存储器控制器是图形存储器控制器。
39.如权利要求37所述的系统,其中,所述I/O控制器是存储I/O控制器。
40.如权利要求37所述的系统,其中,所述一个或多个设备包括一个或多个存储设备。
41.如权利要求40所述的系统,其中,所述一个或多个存储设备中的至少一个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
42.如权利要求40所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
43.如权利要求37所述的系统,所述一个或多个设备包括至少一个盘驱动器。
44.如权利要求37所述的系统,所述一个或多个设备包括至少一个数字视频盘(DVD)驱动器。
45.如权利要求37所述的系统,所述一个或多个设备包括网络接口。
46.如权利要求45所述的系统,其中,所述网络接口耦合到所述处理器以处理数据分组。
47.如权利要求37所述的系统,还包括网络接口控制器NIC。
48.如权利要求47所述的系统,其中,所述NIC用于处理数据分组。
49.如权利要求37所述的系统,所述一个或多个设备包括一个或多个存储设备,并且所述一个或多个设备包括网络接口。
50.如权利要求49所述的系统,其中,所述一个或多个存储设备中的至少一个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
51.如权利要求49所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
52.如权利要求37所述的系统,其中,所述DRAM是同步动态随机存取存储器(SDRAM)。
53.如权利要求37所述的系统,其中,所述DRAM是双数据速率(DDR)随机存取存储器。
54.如权利要求37所述的系统,其中,所述DRAM是双数据速率2(DDR2)随机存取存储器。
55.如权利要求37所述的系统,其中,所述DRAM是Rambus动态随机存取存储器(RDRAM)。
56.如权利要求37所述的系统,其中,所述一个或多个设备包括至少一个存储设备,并且所述DRAM是双数据速率(DDR)随机存取存储器。
57.一种系统,包括:
处理器,其包括:
多个核心;
第一级L1指令高速缓存,其存储多个指令,所述多个指令包括所述处理器的指令集的第一高级加密标准AES指令,所述指令集包括多个AES指令,每个AES指令包括不同的操作码;
L1数据高速缓存;
指令提取逻辑单元,其从所述L1指令高速缓存提取指令;
解码逻辑单元,其对指令进行解码;
第一源寄存器,其存储将被用于AES加密操作的循环的循环密钥;
第二源寄存器,其存储将被所述AES加密操作的所述循环加密的输入数据;
执行单元,其包括AES执行逻辑单元,所述AES执行逻辑单元执行所述第一AES指令以执行所述AES加密操作的所述循环,所述AES加密操作使用来自所述第一源寄存器的所述循环密钥对来自所述第二源寄存器的所述输入数据进行加密,并且将所述AES加密操作的所述循环的结果存储在目的寄存器中;
其中,所述AES加密操作的所述循环包括:
替换字节转换,其对所述输入数据执行字节替换,所述替换字节转换使用替换盒S-box,以得到被替换数据的第一阵列,
移位行转换,其将所述第一阵列中的行数据移位一指定量,以得到第二阵列,
混合列转换,在所述混合列转换中,所述第二阵列的列被视作伽罗瓦域GF(28)上的多项式,并且被与固定多项式相乘且对x4+1取模,以生成混合列结果,以及
加循环密钥转换,在所述加循环密钥转换中,异或函数使用来自所述循环密钥和所述混合列结果的数据;
其中,所述系统还包括存储器控制器,其将所述处理器耦合到动态随机存取存储器DRAM;以及
其中,所述系统还包括输入/输出I/O控制器,其将所述处理器耦合到在所述处理器外部的一个或多个设备。
58.如权利要求57所述的系统,其中,所述存储器控制器是图形存储器控制器。
59.如权利要求57所述的系统,其中,所述I/O控制器是存储I/O控制器。
60.如权利要求57所述的系统,其中,所述一个或多个设备包括一个或多个存储设备。
61.如权利要求60所述的系统,其中,所述一个或多个存储设备中的至少一个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
62.如权利要求60所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
63.如权利要求57所述的系统,所述一个或多个设备包括至少一个盘驱动器。
64.如权利要求57所述的系统,所述一个或多个设备包括至少一个数字视频盘(DVD)驱动器。
65.如权利要求57所述的系统,所述一个或多个设备包括网络接口。
66.如权利要求65所述的系统,其中,所述网络接口耦合到所述处理器以处理数据分组。
67.如权利要求57所述的系统,还包括网络接口控制器NIC。
68.如权利要求67所述的系统,其中,所述NIC用于处理数据分组。
69.如权利要求57所述的系统,所述一个或多个设备包括一个或多个存储设备,并且所述一个或多个设备包括网络接口。
70.如权利要求69所述的系统,其中,所述一个或多个存储设备中的至少一个存储设备通过至少一个串行连接小型计算机系统接口(SAS)耦合到所述处理器。
71.如权利要求69所述的系统,其中,所述一个或多个存储设备包括独立磁盘冗余阵列(RAID)。
72.如权利要求57所述的系统,其中,所述DRAM是同步动态随机存取存储器(SDRAM)。
73.如权利要求57所述的系统,其中,所述DRAM是双数据速率(DDR)随机存取存储器。
74.如权利要求57所述的系统,其中,所述DRAM是双数据速率2(DDR2)随机存取存储器。
75.如权利要求57所述的系统,其中,所述DRAM是Rambus动态随机存取存储器(RDRAM)。
76.如权利要求57所述的系统,其中,所述一个或多个设备包括至少一个存储设备,并且所述DRAM是双数据速率(DDR)随机存取存储器。
77.一种装置,包括:
执行单元,其执行一组高级加密标准AES指令以执行可编程次数的AES循环,每个AES指令包括不同的操作码,其中,所述执行单元通过下述操作来生成用于所述可编程次数的AES循环中的每一个的循环密钥:
当载入到密钥寄存器中的密钥是将被用于多个AES循环的单个密钥时,根据所述密钥来预先计算用于多个AES循环的循环密钥调度;以及
当所述密钥包括将被用于不同的AES循环中的多个不同的密钥时,对于至少一个AES循环,在该至少一个AES循环中执行加密和解密中的至少一个之前,动态地计算用于该至少一个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 | ||
CN2008800064951A CN101622816B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准(aes)的灵活结构和指令 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008800064951A Division CN101622816B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准(aes)的灵活结构和指令 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107493163A CN107493163A (zh) | 2017-12-19 |
CN107493163B true CN107493163B (zh) | 2021-06-25 |
Family
ID=39794399
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008800064951A Active CN101622816B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准(aes)的灵活结构和指令 |
CN201710815893.9A Active CN107465501B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准aes的处理器和系统 |
CN201310110523.7A Active CN103152168B (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 |
---|---|---|---|
CN2008800064951A Active CN101622816B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准(aes)的灵活结构和指令 |
CN201710815893.9A Active CN107465501B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准aes的处理器和系统 |
CN201310110523.7A Active CN103152168B (zh) | 2007-03-28 | 2008-03-25 | 用于高级加密标准(aes)的处理器和指令 |
Country Status (8)
Country | Link |
---|---|
US (24) | US8538015B2 (zh) |
EP (5) | EP2852088B1 (zh) |
JP (6) | JP2010520517A (zh) |
CN (4) | CN101622816B (zh) |
ES (1) | ES2805125T3 (zh) |
SG (1) | SG146584A1 (zh) |
TW (1) | TWI369885B (zh) |
WO (1) | WO2008121614A1 (zh) |
Families Citing this family (60)
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 |
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 |
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 |
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 |
US8549264B2 (en) | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
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 |
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 |
CN107547193A (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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1599338A (zh) * | 2003-09-19 | 2005-03-23 | 皇家飞利浦电子股份有限公司 | 增强无线局域网安全的方法 |
EP1586971A2 (en) * | 2004-04-16 | 2005-10-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
Family Cites Families (70)
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 | 富士通株式会社 | 暗号回路 |
ATE484794T1 (de) | 2001-08-20 | 2010-10-15 | 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 |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
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 |
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 |
WO2004015916A1 (ja) | 2002-08-08 | 2004-02-19 | Matsushita Electric Industrial Co., Ltd. | 暗号化復号化装置及び方法、暗号化装置及び方法、復号化装置及び方法、並びに送受信装置 |
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 |
US7502943B2 (en) | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
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 |
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 |
WO2004102870A2 (en) * | 2003-05-14 | 2004-11-25 | Koninklijke Philips Electronics N.V. | A hardware implementation of the mixcolumn/ invmixcolumn functions |
US7472285B2 (en) | 2003-06-25 | 2008-12-30 | Intel Corporation | Apparatus and method for memory encryption with reduced decryption latency |
US20070061276A1 (en) * | 2003-07-10 | 2007-03-15 | Akira Sato | Device and method for registering a plurality of types of information |
US20050097315A1 (en) * | 2003-10-30 | 2005-05-05 | Tzahi Carmeli | Method and apparatus to configure transmitter and receiver to encrypt and decrypt data |
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 |
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 |
-
2007
- 2007-03-28 US US11/729,199 patent/US8538015B2/en active Active
-
2008
- 2008-03-25 EP EP14169143.6A patent/EP2852088B1/en active Active
- 2008-03-25 JP JP2009552935A patent/JP2010520517A/ja active Pending
- 2008-03-25 CN CN2008800064951A patent/CN101622816B/zh active Active
- 2008-03-25 EP EP18165550.7A patent/EP3361668B1/en active Active
- 2008-03-25 WO PCT/US2008/058128 patent/WO2008121614A1/en active Application Filing
- 2008-03-25 CN CN201710815893.9A patent/CN107465501B/zh active Active
- 2008-03-25 CN CN201310110523.7A patent/CN103152168B/zh active Active
- 2008-03-25 ES ES18165550T patent/ES2805125T3/es active Active
- 2008-03-25 EP EP20176663.1A patent/EP3737031B1/en active Active
- 2008-03-25 EP EP16191616.8A patent/EP3145113B1/en active Active
- 2008-03-25 CN CN201710815596.4A patent/CN107493163B/zh active Active
- 2008-03-25 EP EP08744319.8A patent/EP2132899B1/en active Active
- 2008-03-26 SG SG200802383-0A patent/SG146584A1/en unknown
- 2008-03-27 TW TW097111091A patent/TWI369885B/zh active
-
2012
- 2012-10-11 JP JP2012226077A patent/JP2013057946A/ja active Pending
-
2013
- 2013-08-29 US US14/014,091 patent/US10554386B2/en active Active
- 2013-10-25 JP JP2013222466A patent/JP5715218B2/ja active Active
-
2014
- 2014-12-16 US US14/572,593 patent/US9654281B2/en active Active
- 2014-12-16 US US14/572,607 patent/US10270589B2/en active Active
- 2014-12-16 US US14/572,540 patent/US9634828B2/en active Active
- 2014-12-16 US US14/572,565 patent/US9634829B2/en active Active
- 2014-12-16 US US14/572,545 patent/US10181945B2/en active Active
- 2014-12-16 US US14/572,620 patent/US9634830B2/en active Active
- 2014-12-16 US US14/572,584 patent/US9641320B2/en active Active
- 2014-12-16 US US14/572,423 patent/US9647831B2/en active Active
- 2014-12-16 US US14/572,578 patent/US9641319B2/en active Active
- 2014-12-16 US US14/572,602 patent/US9654282B2/en active Active
-
2015
- 2015-01-26 JP JP2015012125A patent/JP2015096976A/ja active Pending
- 2015-03-12 JP JP2015049638A patent/JP2015108853A/ja active Pending
- 2015-10-01 US US14/872,584 patent/US10291394B2/en active Active
- 2015-10-01 US US14/872,556 patent/US20160197720A1/en not_active Abandoned
- 2015-12-30 US US14/984,616 patent/US10313107B2/en not_active Expired - Fee Related
- 2015-12-30 US US14/984,637 patent/US10581590B2/en active Active
- 2015-12-30 US US14/984,647 patent/US10263769B2/en active Active
- 2015-12-30 US US14/984,656 patent/US10187201B2/en active Active
- 2015-12-30 US US14/984,663 patent/US10171231B2/en active Active
- 2015-12-30 US US14/984,686 patent/US10171232B2/en active Active
- 2015-12-30 US US14/984,601 patent/US10256971B2/en active Active
- 2015-12-30 US US14/984,629 patent/US10256972B2/en active Active
- 2015-12-30 US US14/984,588 patent/US10164769B2/en active Active
- 2015-12-30 US US14/984,673 patent/US10158478B2/en active Active
-
2017
- 2017-01-06 JP JP2017001149A patent/JP6592804B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1599338A (zh) * | 2003-09-19 | 2005-03-23 | 皇家飞利浦电子股份有限公司 | 增强无线局域网安全的方法 |
EP1586971A2 (en) * | 2004-04-16 | 2005-10-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107493163B (zh) | 用于高级加密标准(aes)的灵活结构和指令 | |
CN112532376B (zh) | 用于高级加密标准(aes)的灵活结构和指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |