TW200845689A - Flexible architecture and instruction for advanced encryption standard (AES) - Google Patents
Flexible architecture and instruction for advanced encryption standard (AES) Download PDFInfo
- Publication number
- TW200845689A TW200845689A TW97111091A TW97111091A TW200845689A TW 200845689 A TW200845689 A TW 200845689A TW 97111091 A TW97111091 A TW 97111091A TW 97111091 A TW97111091 A TW 97111091A TW 200845689 A TW200845689 A TW 200845689A
- Authority
- TW
- Taiwan
- Prior art keywords
- encryption standard
- advanced encryption
- key
- round
- standard round
- Prior art date
Links
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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
Description
200845689 九、發明說明 【發明所屬之技術領域】 本發明是有關於一種加密演算法,且特別是一種先進 力口 密標準(advanced encryption standard,AES)演算法。 【先前技術】 加密技術是一種依靠演算法及用來保護資訊之金鑰的 工具。演算法是一種複雜的數學演算法’金鑰則是一位元 串列。有兩種主要的加密系統:密鑰系統(secret key system)及公鑰系統(public key system)。密綸系統也 被稱爲對稱系統,具有一單一金鑰(密鑰),由雙方或更 多方所共用。單一金鑰用以加密及解密資訊。 先進力口 密標準(advanced encryption standard,AES ) ,由美國國家標準及技術局(National Institute of Standards and Technology,NIST)所公布,稱爲聯邦資訊
處理標準(Federal Information Processing Standard,FIPS )197的密鑰系統。AES是可以加密及解密資訊的對稱區 塊密碼。 加密(譯碼)使用密鑰(譯碼金鑰)執行一連串轉換 ,將稱爲「一般文件」的可理解的資料轉換爲「譯碼文件 」的不可理解之形式。密碼的轉換包含:(1 )加入一回 合金錄(從譯碼金鑰得到的値)到狀態(位元組的二維陣 列),使用的是互斥OR操作;(2 )使用非線性位元替 換表(S-box )處理該狀態(3 )以不同的位移量循環移位 -5- 200845689 該狀態的最後三列;以及(4 )將該狀態所有的欄混合# 資料(各自獨立)以產生新的欄。 解密(反譯碼)使用該譯碼金鑰執行一連串轉換’將 「譯碼文件」區塊,轉換爲相同大小的「一般文件」區塊 。反譯碼轉換是將譯碼的轉換反相進行。
Rijindael演算法在AES標準中專門處理128位元資 料區塊,使用長度爲128、192及256位元的譯碼金鑰。 不同的金鑰長度被稱爲AES-128、AES-192及AES-256。 AES演算法在10、12或14連續回合內轉換一般文件 爲譯碼文件,或將譯碼文件轉換爲一般文件,回合數與金 鑰長度有關。 【發明內容】 提供用於一般用途處理器之一彈性先進加密標準( aes )指令集。該指令集包含執行用於先進加密標準加密 或解密之多個「一回合」通過之指令,以及也包含執行金 鑰產生之多個指令。一中間値可用以指示1 28/1 92/256位 元金鑰之金鑰產生的回合數及金鑰大小。因爲不需要追蹤 內部暫存器,該彈性先進加密標準指令集能夠完全使用管 芽泉(pipelining )會g 力。 【實施方式】 先進加密標準(AES )演算法係爲電腦強化演算法, 一般係執行於軟體或特殊目的處理器當中。因此,加密一 -6- 200845689 般僅用於加密儲存在電腦中之資訊的一子集合’例如列爲 「最高機密」的資訊。然而,有需要加密更多儲存在電腦 內的資訊。例如,假設儲存在行動電腦上的資訊係被加密 ,當行動電腦被偷時資訊可以受到保護。 AES是以128、192或256位元尺寸之金鑰’操作於 1 2 8位元區塊之區塊譯碼器。操作序列根據金鑰尺寸進行 迭代數回合(10、12或14)。 每一回合的金鑰產生可以即時(on the fly)(也就 是在每一回合前)進行,其係使用內含128位元暫存器儲 存回合金鑰。然而,使用內含暫存器,因需要前面指令的 結果,可能減少x86暫存架構處理器的效能。 已經有應用出現,例如,處理網路封包之應用,封包 在每一流量中具有不同金鑰使用即時金鑰產生較爲有利。 可能有其他應用需要使用單一金鑰產生較佳效能,例如, 使用單一金鑰加密/解密磁碟中的內容。因此,對於彈性 產生金鑰的需求增加了。本發明之實施例提供一種彈性結 構及指令,用以在一般用途處理器中執行AES加密及解 密。 第1圖繪示在一般用途處理器中根據本發明之規則之 彈性架構及執行AE S加密及解密的指令之實施例的系統 1 〇 〇的方塊圖。系統1 ο 〇包含處理器1 ο 1、記憶體控制集 線器(Memory Controller Hub,MCB)或圖形記憶體控制 集線器(Graphics Memory Controller Hub,GMCH) 102, 及輸入/輸出(I/O)控制集線器(Input/Output Controller 200845689
Hub,ICH ) 104。MCH 102包含記憶體控制器 106,其控 制在處理器1 〇 1及記憶體1 08之間的通訊。處理器1 0 1及 MCH 102經由系統匯流排1 16通訊。 處理器1 〇 1可以是複數個處理器中的任一個,例如單 核心 Intel® Pentium IV®處理器,單核心 Intel Celeron 處 理器,Intel® XScale處理器,或多核心處理器,例如 Intel® Pentium D,Intel® Xeon® 處理器,或 Intel® Core® Duo處理器或其他種類的處理器。 記體體108可以是動態隨機存取記憶體(DRAM)、 靜態隨機存取記憶體(SRAM )、同步動態隨機存取記憶 體(SDRAM ),雙資料速率2 ( DDR2 )隨機存取記憶體 或Rambus動態隨機存取記憶體(RDRAM )或其他種類的 記憶體。 ICH 104可以使用晶片間互連1 14連接MSH 102,例 如直接媒體介面(Direct Media Interface,DMI) ,DMI 支援2G位元/秒雙通道同步傳輸。 IC Η 104可以包含儲存I/O控制器1 10,用以控制與 IC Η 104連接之至少一儲存裝置1 12。儲存裝置例如可以 是硬碟、數位影碟(Digital Video Disk,DVD )、光碟( Compact Disk,CD)、重複磁碟陣歹[J ( Redundant Array of Independent Disk, RAID)、磁帶機或其他儲存裝置。ICH 1 04可以經由儲存協定互連1 1 8和儲存裝置1 1 2通訊,可 使用多種儲存協定例如序列連接小型電腦系統介面( Serial Attached Small Computer System Interface,S A S ) 200845689 或序列高技術配置(Serial Advanced Technology Attachment,SATA) o 處理器1 0 1包括一 AE S函數1 0 3,執行先進加密標準 加密及解密操作。AES函數1 03可用以加密或解密儲存在 記憶體1 〇 8及/或儲存裝置1 1 2中的資訊。 第2圖係爲第1圖之處理器101之實施例的方塊圖。 處理器1〇1包括一取得及解碼單元206,用以將從一階( L 1 )指令快取2 0 2接收的處理指令解碼。用以執fT該指令 的資料可以儲存在暫存檔208。在一實施例中暫存檔208 包含複數個128位元暫存器,用以在一先進加密標準指令 中儲存先進加密標準指令使用的資料。 在一實施例中,暫存檔是一群1 2 8位元暫存器,類似 於具有串流單一指令多重資料延伸指令集(Streaming ( Single Instruction Multiple Data?SIMD) Extention ( SSE )Instruction Set)之 Intel Pentium MMX 處理器。在一 SIMD處理器中,資料在128位元區塊內處理,且一次載 入一個128位元區塊。 取得及解碼單元202從L1指令快取202取得巨集指 令(macroinstruction),將巨集指令解碼並拆開爲稱爲 微操作(μ〇Ρ s )的簡單操作,微操作可以儲存在微碼唯讀 記憶體(Read Only Memory, ROM) 214。執行單元 210 排程並執行微操作。在所示實施例中,在執行單元2 1 0中 的先進加密標準函數1 3 0包括用於一先進加密標準指令集 中的微操作。退休單元(retirement unit) 212將指令執 -9 - 200845689 行結果寫到暫存器或記憶體中。先進加密標準指令所使用 的回合金鑰2 1 4可以儲存在L1資料快取2 〇 4並位於執行 單元2 1 0中,執行單元係在微操作中執行先進加密標準指 令集中的先進加密標準指令。儲存回合金鑰2 1 4於資料快 取2 0 4可以避免側面通道攻擊,例如,意圖取得回合金鑰 以存取儲存於系統1 0 0中的加密資訊。 第3圖係爲包含第2圖中根據本發明之規則用以執行 A E S加密及解密之執行單元的方塊圖。第3圖與第2圖一 倂描述。 在先進加密標準指令被取得及解碼單元2 0 6解碼後, 執行單元2 1 0執行的先進加密標準指令包含執行微操作及 儲存於微碼R Ο Μ 2 1 4中的先進加密標準指令。 根據本發明之一實施例的彈性A E S指令使得程式設 計師在效能及處理資料數量、記憶體頻寬及容量上取得妥 協。 部分應用可以連續使用相同金鑰。在效能重要的應用 中,可以預計算該金鑰的金鑰排程(也就是各回合的回合 金鏡)一次並儲存在記憶體中來取得妥協。其他應用可能 要將用以儲存金鑰排程的記憶體數量最小化,而在多區塊 操作中仍可達到好的效能。對這樣的操作,金鑰排程可以 在多重區塊被處理前預先計算。記憶體覆蓋區可以經由僅 儲存譯碼金鏡或反相譯碼金_進一步減小,然後犧牲部分 效能以導出其他必要的先進加密標準。
在x86處理器中,可用在AES回合金鑰操作及AES -10- 200845689 排程操作的執行埠的面積及數量包含AES指令的效能。 在每一區塊加密需要金鑰擴充的系統中,可以藉由置放 AES排程操作及AES回合金鑰操作在分開的執行埠中來 改善效能。然而,在x86處理器中可能要具備分開的執行 埠及額外控制分開執行埠的區域。 在一實施例中,提供包含分開的執行加密回合的先進 加密標準指令、加密回合、解密回合、加密最後回合、解 密最後回合及計算加密回合金鑰或解密回合金鑰之先進加 密標準指令集。在一實施例中有六個先進加密標準指令在 先進加密標準指令集當中。各個先進加密標準回合指令具 有獨特的操作碼(opcode )。在一實施例中用於固定寬度 回合金鑰(例如1 28位元)中的先進加密標準指令集中的 先進加密標準回合指令如表1所示。 -11 - 200845689 AESENCRYPTRound xmmsrcdst xmm 輸入: 資料(=目的地),回合金鑰 輸出: 經由使用回合金鑰之AES回合轉換後的 資料 AESENCRYPTLastRound xmmsrcdst xmm 輸入: 資料(=目的地),回合金鑰 輸出: 經由使用回合金鑰之AES最後回合轉換 後的資料 AESDECRYPTRound xmmsrcdst xmm 輸入: 資料(=目的地),回合金鑰 輸出: 經由使用回合金鑰之A E S回合轉換後的 資料 AESDECR YPTLastRound xmmsrcdst xmm 輸入: 資料(=目的地),回合金錄 輸出: 經由使用回合金鑰之AES最後回合轉換 後的資料 AESNextRound Key xmmsrcl.2 xmm dst (立即) 輸入: 低128位元金鑰、高128位元金鑰,回 合數指標 輸出: 從輸入導出之下一回合金鑰 AESPreviousRound Key xmmsrcl.2 xmm dst (立即) 輸入: 低128位元金鑰、高128位元金鑰,回 合數指標 輸出: 從輸入導出之前一回合金鑰 表1 先進加密標準指令集包含四個先進加密標準回合指令 (加密、解密、加密最後回合、解密最後回合)及兩個先 進加密標準金鑰指令(下一回合金鑰及前一回合金鑰)。 先進加密標準指令集中的先進加密標準回合指令包含執行 除了最後回合外,所有回合使用的加密及解密回合操作之 -12- 200845689 單一回合指令。例如,在表i中的AESENCRYPTRound中 的單一回合指令,輸入資料儲存在一 128位元暫存器( xmmsrcdst)而回合金鑛儲存在另一 128位元暫存器( xmm)。這個指令根據儲存在128位元xmmsrcdst暫存器 中的輸入資料執行一先進加密標準回合操作,並以回合操 作的執行結果覆寫儲存在128位元xmmsrcdst暫存器中的 輸入資料。因此xmmsrcdst首先儲存輸入資料並接著儲存 先進加密標準回合操作的結果。 先進加密標準指令集也包含用在最後解密回合的解密 指令及用在最後加密回合中的先進加密標準加密指令。例 如,在表 1中的AESENCRYPTLLastRound單一回合指令 中,輸入資料儲存在128位元暫存器(xmmsrcdst)中, 而回合金鑰儲存在128位元暫存器(xmm )中。這指令根 據儲存在xmmsrcdst上的暫存器的輸入資料(資料來源) 執行一先進加密標準回合操作並以回合操作的執行結果覆 寫儲存在 xmmsrcdst 暫存器上的輸入資料。因此 xmmsrcdst首先儲存輸入資料並接著儲存回合操作的結果 。xmm暫存器儲存用於回合操作的回合金鑰。 在另一實施例中,該回合及最後回合指令,例如 AESDECRYPTRound 及 A E S D E C R Y P T L a s t Ro u n d 可以採用 從記憶體(m/1 2 8 )而非暫存檔3 04取得資料,例如,先 進力D密標準回合指令可以是 AESDECRYPTRound xmmsrcdst m/128 〇 其他兩個位於先進加密標準指令集中的先進加密標準 -13- 200845689 指令產生一回合金鑰,用於與金鑰大小相關的先進加密標 準回合,也就是128位元、192位元或256位元。其中一 個先進加密標準回合金鑰指令產生一用於加密操作回合金 鑰,而其他先進加密標準回合金鑰指令產生用於解密作業 的回合金鑰。在 AESNextRoundKey 及 AESPreviousRoundKey 指令中的立即欄位具體描述金鑰的尺寸{128,192,256}。 在另一實施例中,不使用立即欄位,不同金鑰尺寸可 以爲分開的指令,各指令具有獨特的操作碼。在此一實施 例中,先進加密標準回合金鑰指令數包含這些用在各回合 金鑰操作的分開的指令,例如,AESNextRoundKey_128、 AESNextRoundKey l 92 及 AESNextRoundKey_256,且對 於 AESPreviousRoundKey也會有類似一組的三個指令。 在此一實施例中,指令集中的指令總數量是1 〇而不是前 述實施例中的6。 暫存檔304具有複數個可以被先進加密標準指令集中 的先進加密標準指令使用的1 2 8位元暫存器。1 2 8位元暫 存器可以儲存來源運算元、回合金鑰及先進加密標準指令 的結果。對第一回合來說,先進加密標準指令接收一來源 運算元,該來源運算元可以是要加密的1 2 8位元一般文件 或是要解密的1 2 8位元譯碼文件。產生用於1 2 8位元、 1 92位元或2 5 6位元金鑰的金鑰排程的金鑰可以儲存在任 何一個暫存檔中的1 2 8位元暫存器3 0 8當中。所有指令使 用暫存檔中的暫存器,並且也從先前討論的記憶體中直接 採用輸入値。 -14- 200845689 使用表1所示的先進加密標準指令集中的一實施例的 原始碼的例子如下表2所示。在本例子中,效能在應用中 最佳化以執行使用相同金鑰於多個區塊中的加密。這樣的 應用使用單一金鑰加密光碟中的內容,相同的金鑰也用以 加密儲存進入光碟前的所有資料。在本例子中,係執行 A E S -1 2 8 力口密。 金鑰的尺寸可以是128位元、192位元或256位元。 執行的回合數可以是1、1 0、1 2或14,視各回合金鑰固 定的尺寸(128位元)決定。隨著回合數爲10、12、14, 先進加密標準微操作可以對應金鑰尺寸爲128位元、192 位元或2 5 6位元執行標準先進加密標準加密及解密。 當相同金鑰使用於多個區塊時,各回合(金鑰排程) 的回合金鑰可以預先計算並儲存在記憶體(例如一階資料 快取204 ),致使相同金鑰排程不必在各區塊上的一個加 密/解密作業操作前預先計算。 RK[0] = Input Key
For 1 = 1..10 RK[i] = AESNextRoundKey(RK[i-l])
END STATE = Input Block STATE = STATE xor RK[0]
For i=1..9 STATE = AESNCRYPTRound(STATE,RK[i])
END STATE = AESENCRYPTLastRound(STATE,RK[10]) 表2 -15- 200845689 一具有十個元素的陣列(RK )用於儲存金鑰的金鑰 排程。用於AES-128加密的輸入金鑰儲存在rk[0],而9 回合金鑰RK[0]-RK[1]係經由先進加密標準指令集呼叫的 AESNextRoundKey 預先計算。AESNextRoundKey 指令根 據這一回合的金鑰計算下一回合。用於金鑰排程的預先計 算回合金鑰可以儲存在一階資料快取204內的回合金鑰 214 ° 在這個例子中,當部分金鑰排程(擴張金鑰)(亦即 用於該回合的回合金鑰)被直接從暫存檔3 04輸入時,一 互斥OR (XOR)操作係在進入執行該先進加密標準回合 的迴圏之前執行於該狀態及金鑰。對於1到9的各回合, 來自先進加密標準指令集的AESENCRYPTRound指令被呼 叫來執行一回合的先進加密標準回合操作。對最後回合( 回合 10 )來說,呼叫來自先進加密標準指令集的 AESENCRYPTLastRound指令,以執行最後回合的先進加 密標準回合操作。 經由先進加密標準指令被加密或解密的資訊’在核發 第一先進加密標準指令開始加密或解密操作之前,被載入 於一來源/目的位於暫存檔3 04內的暫存器3 06。用於加密 /解密位於來源暫存器3 0 6上的資訊的金鑰,係儲存在一 或更多其他位於暫存檔304內的暫存器308上。在128位 元金鑰的情況下,整個金鑰的1 2 8位元被儲存在其他任何 一個暫存檔304內的128位元暫存器上。對於尺寸超過 1 2 8位元的金鑰,最高有效位元(超過1 2 8位元)被儲存 -16- 200845689 在另一個128位元暫存器上。 在表2的範例中,各回合的回合金鑰也可以儲存在一 或更多位於暫存檔304內的暫存器上’或可以儲存在一階 資料快取204內的回合金錄214上。 AES具有固定128位元的區塊大小,以及128、192 或2 5 6位元的金鑰尺寸,以及操作於4 X 4的位元組陣列( 也就是16位元組(128位元固定區塊尺寸))’這些被 稱爲「狀態」。AE S演算法轉換1 2 8位元一般文件區塊爲 一 1 2 8位元譯碼文件(加密)區塊,或將1 2 8位元譯碼文 件區塊轉換爲一般文件(解密)的1 2 8位元區塊於1 0、 12或14連續回合內,回合數與金鑰尺寸(128、192或 2 5 6位元)有關。 在執行各回合加密或解密操作之前,執行單元2 1 0取 回儲存在暫存檔3 04內的狀態及金鑰。各加密/解密回合 操作使用儲存在唯讀記憶體(ROM) 2 14上的金鑰排程器 3 0 2內,用於先進加密標準指令的微操作來執行。在所示 實施例中,狀態(128位元區塊狀態)儲存於暫存器306 內,且金鑰儲存在一或更多其他暫存檔3 04內的暫存器 3 08上。在先進加密標準指令執行完成後,結果狀態儲存 在暫存檔3 04內的暫存器3 06上。狀態可以是下一先進加 密標準回合或AES加密或解密操作的最後結果使用的中 間回合日期。 在所示實施例中,金鑰排程器產生用於一先進加密標 準回合的回合金鑰。金鑰排程器302可以建構爲一微碼操 -17- 200845689 作,而且可以包括執行一序列操作,以產生
FlPSPublication 197 定義的 128 位元、192 位元及 25 6 位 元的回合金鑰的微碼操作。 在另一實施例中,金鑰排程器可以在執行單元2 1 〇內 建構爲一硬體狀態機序列。在再一個實施例當中,部分金 鑰排程器可以建構爲儲存於微碼R0M 214內的微碼操作 ,且金錄排程器其餘部分可以建構爲執行單兀210內的 硬體狀態機序列。 金鑰排程器3 0 2擴張一金鑰的η位元組爲一擴張金鑛 (金鑰排程)的b位元組,擴張金鑰的第一 η位元組作爲 初始金鑰。例如,對一 1 2 8位元金鑰,1 2 8位元金鑰擴張 爲1 7 6位元組擴張金鑰,也就是說’ 1 1 χ 1 6位元組(1 2 8 位元),第一 1 6位元組作爲初始1 2 8位元金鑰,因此回 合數爲10。一 192位元金鑰的24位元組擴張爲208位兀 組(1 3 X 1 6位元組)提供各1 2回合1 2個「回合金鑰」’ 且一 2 5 6位元金鑰的3 2位元組擴張爲2 4 0位元組(1 5 X 1 6 位元組),已提供各1 4回合1 4個「回合金鑰」。 將一先進加密標準指令內的操作碼(0 P c 0 d e )解碼之 後,多個用以控制一先進加密標準回合的先進加密標準指 令流程的參數儲存於控制邏輯3 22內。參數包括操作類型 (加密或解密),且不論是否爲最後回合。 先進加密標準回合邏輯3 2 4可以包括微操作,用於下 列階段:區塊狀態314、S-盒/反相S-盒316、移位列318 及混合反相、混合欄或空(係指「混合攔」)3 2 0及增加 -18- 200845689 回合金鑰326。 在區塊狀態3 1 4,至先進加密標準回合邏輯3 24之 128位元輸入(狀態)係使用按位元(bitwise ) XOR而增 加一金鑰(與該回合相關的擴張金鑰的1 2 8位元部分), 以產生一 128位元中間値(狀態)。 在S-盒/反相S-盒3 16中,此128位元中間値的各位 元組係以可能儲存於查詢表並從查詢表中接收的另一位元 組値替換,查詢表也稱爲替換區塊或「s -盒」。s -盒採用 某輸入位元數m,並將之轉換爲某輸出位元數η,而建構 出一查詢表。固定的查詢表係經常被使用。此操作經由透 過伽羅瓦代數體(Galois Field) (GF) (28)的反函數 提供非線性。例如,η位元輸出可以使用輸入的m位元的 外面兩位元,經由在查詢表選擇一列找到,並使用輸入的 m位元的內部位元選擇一欄。 在移位列318中,來自S-盒/反相S-盒316的結果通 過一位元位元轉換,將4 X 4陣列(1 2 8位元(1 6位元組) 狀態)中接收自次位元組階段(S u b B y t e s s t a g e )的各列 循環移位到左側。對於4x4陣列的各列,各位元組的空間 數係有不同的移位。 在混合欄3 20中,來自移位列3 20的結果通過位元線 性轉換,其中4 X 4陣列(狀態)的各欄係以二元伽羅瓦代 數體(Galois Field) ( GF ) (28)上的多項式處理,並 接著將x4+l的模數(modulo)乘上固定多項式c(x) = 3x3 + x2 + x + 2。一最後先進加密標準回合與其他先進加密 -19- 200845689 標準回合不同之處在於其省略混合欄320。 在混合欄階段3 20執行一互斥OR函數於來自擴張金 鑰及對於該先進加密標準回合之移位列318或混合欄320 的結果的回合金鑰後,增加回合金鑰324。 例如,下列先進加密標準指令可以核發以執行先進加 密標準解碼的一個回合: A E S D E C R Y P T R 〇 un d xmmsrcdst xmm 這例子,以一具有表示爲{RK[1],RK[2],...RK[10]}的 擴張金鑰的回合金鑰,執行一 128位元AES加密回合操 作。回合金鑰可以在核發AESDECRYPTRound指令前,經 由核發 一 AESPreiousRoundKey xmmsrcl,2 xmm dst (立即 )指令來產生。該回合金鑰可以從Level資料快取204直 接載入一區塊狀態3 1 4,或一開始儲存在暫存檔案3 04內 的暫存器(xmm)而接著從暫存器載入區塊狀態314。 當不同金鑰使用於加密/解密各區塊,例如,在網路 介面控制器(network interface controller, NIC)的情況 (其係加密/解密資料封包),回合金鑰可以在執行各回 合加密/解密之前即時計算,如表3的虛擬碼所示,用於 AES-128 力口密: •20- 200845689 RK[0] = Input Key STATE = Input Block STATE = STATE xor RK[0]
For i=1..9 RK[i] = AESNextRoundKey(RK[i-l]) STATE = AESENCRYPTRound(STATE,RK[i])
END RK[10] = AESNextRoundKey(RK[9]) STATE = AESENCRYPTLastRound(STATE? RK[10]) 表3 在此例子中,用於該回合的回合金鑰,係於使用於金 鑰排程(擴張金鑰)中的各1 0回合的回合金鑰進行加密 前產生。也就是說,回合1-9及回合10(最後回合)。 先進加密標準指令集包括單一先進加密標準回合指令 及單一先進加密標準回合金鑰產生指令,可以使AES的 變數具有不同回合數及金鑰排程,也就是說, FIPS Publication 197沒有定義的變數。因此,在先進加密 標準指令集中的單一回合先進加密標準指令提供執行先進 加密標準加密及解密的彈性。 當先進加密標準指令集所能執行的回合數不被固定, 則任思回口數都可以執行(若有必要)。例如,假設引入 雜湊(hash )或針對MAc攻擊,或對AES的攻擊的新標 準’回合數可以改變以支持未來加密/解密標準。 -21 - 200845689 第4圖繪示經由第3圖繪示之執行單元2 1 〇之先進加 密標準加密最後回合指令之流程的流程圖。 在方塊400中,執行單元210等待一先進加密標準加 密回合指令。假設一 AE S加密回合指令已經被取得及解 碼單元203解碼,則進行方塊402。假若不是,繼續處理 方塊400,等待一先進加密標準加密回合指令。 在方塊402中,在取得及解碼單元206解碼指令期間 ,執行加密的指標儲存在控制邏輯3 22中,且用於執行加 密回合的回合金鑰及1 2 8位元區塊狀態(來源)係從暫存 檔3 04載入執行單元210。繼續處理方塊404。 在方塊404中,執行一替換操作於128區塊狀態,也 就是來自區塊4 0 6或4 1 8的結果。1 2 8位元區塊狀態的各 位元組係以另一可以儲存於查詢表並取回的位元組値替換 ,也稱爲一替換區塊或「S-盒」。S-盒取得某輸入位元數 m,並將之轉換爲某輸出位元數η,且係經常被建構爲一 查詢表。該結果被儲存爲一 1 2 8位元區塊狀態。繼續處理 方塊4 0 6。 在方塊406中,128位元區塊狀態(4x4陣列)通過 一位元線性轉換將該4 χ.4陣列中各列的位元組循環移位到 左側。各位元組移位的空間數對4 X 4陣列的各列都不同。 繼續處理方塊4 0 8。 在方塊408中,該128位元區塊狀態(4x4陣列)通 過一位元線性轉換將4 X 4陣列(狀態)的各欄透過GF ( 2 8 )作爲多項式處理,接著將將X 4 + 1的模數(m 〇 d u 1 〇 ) -22- 200845689 乘上固定多項式c(x)=3x3 + x2 + x + 2。繼續處理方塊410 〇 在方塊410中,一互斥〇R函數係執行於一來自擴充 金鑰及對於該先進加密標準回合之移位列318或混合攔 3 20的結果的回合金鑰。繼續處理方塊4 1 2。 在方塊412中,用於該回合(I28位兀區塊狀態)的 加密操作結果係儲存於暫存檔3 0 4上的來源/目的暫存器 3 02。先進加密標準加密指令的處理完成。 下列表4顯示在表3顯示的虛擬碼執行後’使用一 128位元金鑰於一 128位元區塊輸入上執行AES-128加密 的結果。 128 位元輸入:001 12233445566778899aabbccddeeff ( 16 進位) 128 位元金鑰:000102030405060708090a0b0c0d0e0f ( 16 進位) 128 位元結果:69c4e0d86a7b0430d8cdb78070b4c55a ( 16 進位) 表4 第5圖繪示經由第3圖繪示之執行單元2 1 0之先進加 您標準加密最後回合指令之流程的流程圖。 在方塊5 0 0中,執行等待一先進加密標準加密最後回 合指令。假設一 AES加密最後回合指令已經被取得及解 碼單元206解碼,則繼續處理方塊5 02。假設不是,處理 仍停留在方塊5 00等待一先進加密標準指令。 在方塊502中,一 s -盒在最後回合中係以與於方塊 -23- 200845689 4 〇 4 (第4圖)一倂討論的S -盒查詢的類似方式執仃查δ旬 。繼續處理方塊504 ° 在方塊504中’以與於方塊406(第4圖)一倂討論 的其他回合的類似方式執行查詢執行一最後回合的移位列 操作。繼續處理方塊506。 在方塊506中’ 一互斥〇R函數於最後回合執行於來 自擴充金鑰及對於該先進加密標準回合之移位列3 1 8或混 合欄3 2 0的結果的回合金鑰。繼續處理方塊5 0 8。 在方塊5 0 8中,最後回合操作的加密結果儲存在暫存 檔304內的來源/目的暫存器306上。先進加密標準指令 處理完成。 第6圖繪示經由第3圖繪示之執行單元2 1 0之先進加 密標準解密回合指令之流程的流程圖。 在方塊6 0 0中,執行等待一先進加密標準解密回合指 令。假設一 AE S解密回合指令已經被取得及解碼單元2 〇 6 解碼,則繼續處理方塊602。假設不是,則處理停留在方 塊6 00等待一先進加密標準解密回合指令。 在方塊602中,在取得及解碼單元2〇6解碼指令期間 ,執行解密回合的指標儲存在控制邏輯3 22上,且用以執 行解密回合的回合金鑰及來源(1 2 8位元區塊狀態)係從 暫存檔304載入執行單元210。繼續處理方塊6〇4。 在方塊6 0 4中,要執行的操作是解密。經由執行— AES標準定義的反相S-盒查詢,執行一替換操作於ι28 位元區塊狀態。繼續處理方塊606。 -24- 200845689 在方塊606中,執行一 FIPS Publication 1 97定義的 反相移位列操作。繼續處理方塊6 0 8。 在方塊60 8中,執行一 FIPS Publication 197定義的 反相混合欄操作。繼續處理方塊6 1 0。 在方塊610中,執行一互斥OR函數於來自擴充金鑰 及對於該先進加密標準回合之移位列3 1 8或混合欄320的 結果的回合金鑰。繼續處理方塊6 1 2。 在方塊61 2中,用於該回合(12 8位元區塊狀態)解 密操作的結果儲存於暫存檔3 04內的來源/目的暫存器302 上。解密回合指令的處理完成。 第7圖繪示經由第3圖繪示之執行單元2 1 0之先進加 密標準解密最後回合指令之流程的流程圖。 在方塊700中,執行單元210等待一先進加密標準解 密最後回合指令。假設一 AES解密最後回合指令已經被 取得及解碼單元206解碼,則繼續處理方塊702。假設不 是,則處理停留在區塊700等待一先進加密標準解密最後 回合指令。 在方塊702中,經由執行一 FIPS Publication 197定 義的反相S -盒查詢,以執行一替換操作於用於最後回合 的1 2 8位元區塊狀態。繼續處理方塊7〇4。 在方塊7〇4中,執行一 FIP SPublication 197定義的 反相移位列操作於最後回合。繼續處理方塊706。 在方塊706中,執行一互斥OR函數於來自擴充金鑰 及對於該先進加密標準回合之移位列3 1 8或混合欄3 20的 -25- 200845689 結果的回合金鑰。繼續處理方塊7 0 8。 在方塊7 0 8中,解密最後回合操作的結果儲存在來源 /目的暫存檔3 04內的暫存器3 06中。先進加密標準解密 最後回合指令的處理完成。 在一實施例中,第4 - 7圖的流程圖中的方塊可以建構 爲執行單元2 1 0內的硬體狀態機序列。在另一實施例中部 分方塊可以建構爲微程式,可以儲存在唯讀記憶體(R0M )2 1 4內。方塊建構爲硬體狀態機序列的實施例可以提供 更高的效能。 第8圖繪示一具有立即位元組之先進加密標準回合指 令的實施例,可用以產生回合金鑰並執行加密及解密。取 代表1所示的先進加密標準指令集,一單一回合指令係被 提供以執行該先進加密標準指令集的功能。欲經由單一先 進加密標準指令執行的特定功能在立即位元組( key_select_modifier )中以位元編碼。立即位元組可以將 先進加密標準回合指令擴充來增加新特徵,而非建立多個 個別具有獨特的操作碼的新指令。 先進加密標準回合指令可以符號定義如下: dest: = aes_key_round(source2? source 1), key —select一modifier 該aes_key_round指令根據埠數來核發給特定執行單 元2 1 0,以執行一 A E S加密或解密操作。如實施例所示, 4號執行埠是AE S回合指令指定的特定執行埠。執行單元 -26- 200845689 210分割爲δ午多平f了璋(超純量(super-scalar))。然而 ’並非所有執行埠的數量相同。部分執行埠係爲特定資源 例如大型整數乘法器,或是浮點乘法器或除法器。較簡單 或較普通的指令例如加法、減法及互斥〇 R係爲多重執行 埠所支援以達最大效能。因此對各指令或微操作而言,核 發控制邏輯決定核發微操作/指令的執行埠。在本實施例 中,先進加密標準指令一直會核發給4號執行埠。然而, 其他實施例可以使用其他編號的執行埠。 請參照第8圖’ dest儲存回合N的擴充金鑰的128 位元,source2儲存回合N-1的擴充金鑰的128位元, sourcel儲存回合 N-2的擴充金鑰的128位元。 Key_select_modifier是一 8位元立即値,用以提供目前回 合數(N )、操作方向(加密/解密)以及AES金鑰尺寸 。對AES-128而言,不需要sourcel而加以忽略。執行單 元是AES單元且不使用旗標(整數或浮點)。 在一實施例中,立即値的最後四個最低有效位元的位 元編碼表示回合數。例如,AES-128的回合數 1-1〇, AES-192的回合數1-12及AES-256的回合數2-14。對於 AES-128及192,回合數0因爲第一回合使用沒有修改的 輸入金鑰而不使用。對AES-256而言,回合數〇及i因 爲未修改的2 5 6位元輸入金鑰使用於最初2個1 2 8位元回 合而不使用。 立即位元組的位元4表示操作方向(加密或解密), 例如,一實施例中 〇 =加密,1二解密’而在另一實施例 -27- 200845689 中1二加密,〇二解密。立即位元組的位元5及6表示 AES金鑰尺寸。在一實施例中 AES金鑰尺寸如下列表5 所定義: 金鑰尺寸 128 192 256 保留 位元[6:5] 00 01 10 11
在其他實施例中,具有値爲11的位元[6:5]也是128 位元金鑰尺寸的指標。在此實施例中,所有位元[6: 5]的値 可以使用且可被剖析(parsed )。 對熟習此技藝者本發明中的實施例的方法確實可以包 括電腦可使用媒體的電腦程式產品來實施。例如,電腦可 使用媒體可包含唯讀記憶裝置,例如於其中儲存有電腦可 讀取程式碼之 CD ROM ( Compact Disk Read Only Memory )光碟或傳統ROM裝置,或是電腦磁碟。 本發明上述實施例已經參照其實施例具體描繪及敘述 ,熟悉此技藝者必須暸解,在不偏離申請專利範圍所涵蓋 之本發明的所有實施例的範圍下,可以從事各種形式及細 節的改變。 【圖式簡單說明】 -28- 200845689 所要求保護的標的之實施例特徵經由詳細的描述並參 照圖式可以明確瞭解,相同標號表示相同元件。 第1圖繪示在一般用途處理器中根據本發明之規則之 彈性架構及執行AES加密及解密的指令之實施例的系統 方塊圖; 第2圖繪示第1圖中處理器之實施例的方塊圖; 第3圖繪示包含第2圖中根據本發明之規則用以執行 A E S加密及解密之執行單元的方塊圖; 第4圖繪示經由第3圖繪示之執行單元之先進加密標 準加密最後回合指令之流程的流程圖; 第5圖繪示經由第3圖繪示之執行單元之先進加密標 準加密最後回合指令之流程的流程圖; 第6圖繪示經由第3圖繪示之執行單元之先進加密標 準解密回合指令之流程的流程圖; 第7圖繪示經由第3圖繪示之執行單元之先進加密標 準解密最後回合指令之流程的流程圖;以及 第8圖繪示具有能夠產生回合金鑰並執行加密及解密 的立即位元組之先進加密標準回合指令之實施例。 【主要元件符號說明】 1 〇 〇 :系統 1 〇 1 ··處理器 102 :記憶體控制集線器 103 : AES加密’/解密操作 -29 - 200845689 104 : I/O控制集線器 106 :記憶體控制器 1 〇 8 :記憶體 1 10 :儲存I/O控制器 1 1 2 :儲存裝置 1 1 4 :晶片間互連 1 1 6 :系統匯流排 1 1 8 :儲存協定互連 2 0 0 :匯流排介面單元 202 : —階指令快取 204 : —階資料快取 206 :取得及解碼單元 208 :暫存檔
2 1 0 :執行單元 2 1 2 :退休單元 214 :微碼 ROM 2 1 4 :回合金鑰 3 02 :金鑰排程器 3 04 :暫存檔 3 06 :暫存器 3 0 8 :暫存器 3 1 4 :區塊狀態 316 : S-盒/反相S-盒 3 1 8 :移位列 -30- 200845689 3 20 :混合反相、混合欄或空 3 22 :控制邏輯 3 24 :先進加密標準回合邏輯 326 :增加回合金鑰 -31 -
Claims (1)
- 200845689 十、申請專利範圍 1.一種裝置,包含: 一金鑰排程器,該金鑰排程器根據一接收金鑰產生用 於一先進加密標準(aes)回合的一回合金綸(round key ),該先進加密標準回合與一先進加密標準回合金鑰操作 相關連;以及 先進加密標準回合邏輯,用以執行複數個先進加密標 準回合操作其中之一,以針對該先進加密標準回合及用於 該先進加密標準回合之該回合金鑰之輸入計算一先進加密 標準操作的一結果,以提供一下個輸入給一下個先進加密 標準回合,或該先進加密標準操作之該結果。 2 .如申請專利範圍第1項之裝置,其中該回合金鑰儲 存於一資料快取中。 3 .如申請專利範圍第2項之裝置,其中該金鑰排程器 預先計算用於該先進加密標準操作之所有回合金鑰,並在 開始該先進加密標準操作之前將所有回合金鑰儲存於該資 料快取中,且該先進加密標準回合邏輯使用儲存於該資料 快取中之該預先計算的回合金鑰,執行各先進加密標準回 合操作。 4 .如申請專利範圍第2項之裝置,其中一先進加密標 準回合操作致使執行單元: 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行一互斥OR (X0R)操作,以產 生一中間値; -32- 200845689 根據儲存於一查詢表中的値,對該中間値中之各位元 組執行一替換操作;及 經由移位該中間値之數列之一位元線性轉換,傳遞該 替換操作之結果。 5 ·如申請專利範圍第1項之裝置,其中用於先進加密 標準回合數-1之一先進加密標準回合操作致使執行單元 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行一互斥OR(XOR)操作,以產 生一中間値; 根據儲存於一查詢表中的値,對該中間値中之各位元 組執行一替換操作; 經由移位該中間値之數列之一位元線性轉換,傳遞該 替換操作之結果;以及 經由混合該中間値之數欄之一位元線性轉換,傳遞該 替換操作之結果。 6·如申請專利範圍第5項之裝置,其中用於一最後回 合之一先進加密標準回合操作致使執行單元: 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行一互斥OR(XOR)操作,以產 生一中間値; 根據儲存於一查詢表中的値,對該中間値中之各位元 組執行一替換操作;以及 經由移位該中間値之數列之一位元線性轉換,傳遞該 -33- 200845689 替換操作之結果。 7 .如申請專利範圍第1項之裝置,其中該結果係爲一 加密値。 8 ·如申請專利範圍第1項之裝置,其中該結果係爲一 解密値。 9 ·如申請專利範圍第1項之裝置,其中該金鑰及用於 第一先進加密標準回合之輸入儲存於一暫存檔。 10.如申請專利範圍第9項之裝置,其中該暫存檔包 括複數個1 2 8位元暫存器。 1 1 · 一種方法,包含: 根據一接收金鑰產生用於一先進加密標準回合的一回 合金鑰,該先進加密標準回合與一先進加密標準回合金鑰 操作相關連;以及 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行該先進加密標準回合操作,以提 供一下個輸入給一下個先進加密標準回合,或該先進加密 標準操作之結果。 1 2 ·如申請專利範圍第1 1項之方法,更包含: 儲存該產生之回合金鑰於一資料快取中。 1 3 .如申請專利範圍第1 1項之方法,其中產生該回合 金鑰更包含: 預先計算用於該先進加密標準操作之所有回合金鑰; 在開始該先進加密標準操作之前,儲存所有回合金鑰 於該資料快取中;以及 -34- 200845689 使用儲存於該資料快取中之該等預先計算的回合金鑰 ,執行各先進加密標準回合操作。 1 4 ·如申請專利範圍第1 3項之方法,其中執行該先進 加密標準回合金鑰操作包含: 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑛之輸入執f了 一^互斥〇R(X〇R)操作,以產 生一中間値; 根據儲存於一查詢表中的値,對該中間値中之各位元 組執行一替換操作;以及 經由移位該中間値之數列之一位元線性轉換,傳遞該 替換操作之結果。 1 5 ·如申請專利範圍第1 1項之方法,其中執行用於先 進加密標準回合數-1之該先進加密標準回合操作包含: 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行一互斥OR(XOR)操作,以產 生一中間値; 根據儲存於一查詢表中的値,對該中間値中之各位元 組執行一替換操作; 經由移位該中間値之數列之一位元線性轉換,傳遞該 替換操作之結果;以及 經由混合該中間値之數欄之一位元線性轉換,傳遞該 替換操作之結果。 1 6 ·如申請專利範圍第1 4項之方法,其中執行用於一 最後先進加密標準回合之該先進加密標準回合操作包含: -35- 200845689 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行一互斥0R( x〇R)操作,以產 生一中間値; 根據儲存於一查詢表中的値’對該中間値中之各位元 組執行一替換操作;以及 經由移位該中間値之數列之一位元線性轉換,傳遞該 替換操作之結果。 17.如申請專利範圍第11項之方法,其中該結果係爲 一加密値。 1 8.如申請專利範圍第1 1項之方法,其中該結果係爲 一解密値。 1 9.如申請專利範圍第1 1項之方法,其中該金鑰及用 於第一先進加密標準回合之輸入儲存於一暫存檔。 20.如申請專利範圍第19項之方法,其中該暫存檔包 含複數個128位元暫存器。 2 1 . —種物品,包括具有相關資訊之一機器可存取媒 體,其中當存取該資訊時,致使該機器執行: 根據一接收金鑰產生用於一先進加密標準回合的一回 合金鑰,該先進加密標準回合與一先進加密標準回合金鑰 操作相關連;以及 針對該先進加密標準回合及用於該先進加密標準回合 之該回合金鑰之輸入執行該先進加密標準回合操作,以提 供一下個輸入給一下個先進加密標準回合,或該先進加密 標準操作之結果。 -36- 200845689 2 2.如申請專利範圍第21項之物品,更包含: 儲存該產生之回合金鑰於一資料快取中。 2 3.如申請專利範圍第21項之物品,其中若該先進加 密標準回合數等於1,在執行先進加密標準回合操作之序 列前,根據該金鑰載入用於該先進加密標準回合之一預先 計算的回合金鑰。 2 4 . —種系統,包含: 一動態隨機存取記憶體,用以儲存資料及指令;以及 耦接至該記憶體的一處理器,用以執行該等指令,該 處理器包含: 一金鑰排程器,該金鑰排程器根據一接收金鑰產 生用於一先進加密標準回合的一回合金鑰,該先進加密標 準回合與一先進加密標準回合金鑰操作相關連;以及 先進加密標準回合邏輯,用以執行複數個先進加 密標準回合操作其中之一,以針對該先進加密標準回合及 用於該先進加密標準回合之該回合金鑰之輸入計算一先進 加密標準操作的一結果,以提供一下個輸入給一下個先進 加密標準回合,或該先進加密標準操作之該結果。 2 5 .如申請專利範圍第2 4項之系統,其中該回合金鑰 儲存於一資料快取中。 2 6.如申請專利範圍第24項之系統,其中該金鑰排程 器預先計算用於該先進加密標準操作之所有回合金鑰,並 在開始該先進加密標準操作之前將所有回合金鑰儲存於該 資料快取中,且該先進加密標準回合邏輯使用儲存於該資 -37- 200845689 料快取中之該預先計算的回合金鑰,執行各先進加密標準 回合操作。
Applications Claiming Priority (1)
| 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) |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200845689A true TW200845689A (en) | 2008-11-16 |
| TWI369885B TWI369885B (en) | 2012-08-01 |
Family
ID=39794399
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW097111091A TWI369885B (en) | 2007-03-28 | 2008-03-27 | Flexible architecture and instruction for advanced encryption standard (aes) |
Country Status (8)
| Country | Link |
|---|---|
| US (24) | US8538015B2 (zh) |
| EP (5) | EP2132899B1 (zh) |
| JP (6) | JP2010520517A (zh) |
| CN (5) | CN101622816B (zh) |
| ES (1) | ES2805125T3 (zh) |
| SG (1) | SG146584A1 (zh) |
| TW (1) | TWI369885B (zh) |
| WO (1) | WO2008121614A1 (zh) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI397300B (zh) * | 2009-09-25 | 2013-05-21 | Univ Shu Te | Digital information encryption method |
| TWI407307B (zh) * | 2009-06-18 | 2013-09-01 | Univ Ishou | Identification tag and radio frequency identification system |
| TWI489280B (zh) * | 2009-04-14 | 2015-06-21 | Mega Chips Corp | 記憶體控制器,記憶體控制裝置,記憶體裝置,記憶體資訊保護系統及記憶體控制裝置之控制方法 |
| TWI571091B (zh) * | 2014-05-21 | 2017-02-11 | 英特爾公司 | 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術 |
| TWI739772B (zh) * | 2015-12-18 | 2021-09-21 | 美商英特爾公司 | 處理器、用於安全指令執行管線之方法、及運算系統 |
| TWI921667B (zh) | 2022-07-05 | 2026-04-11 | 美商萬國商業機器公司 | 用於加密功能之基於硬體之密鑰生成及儲存 |
Families Citing this family (64)
| 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 |
| 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 |
| 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 |
| US9680637B2 (en) | 2009-05-01 | 2017-06-13 | Harris Corporation | Secure hashing device using multiple different SHA variants and related methods |
| US9990201B2 (en) * | 2009-12-22 | 2018-06-05 | Intel Corporation | Multiplication instruction for which execution completes without writing a carry flag |
| US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
| US8549264B2 (en) | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
| 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 | 中国科学院数据与通信保护研究教育中心 | 一种抵抗物理攻击和系统攻击的密钥保护方法 |
| 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 |
| CN107547194A (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 | 长城汽车股份有限公司 | 基于汽车总线的报文加密方法、车辆的控制器及车辆 |
| EP4553650A1 (en) * | 2017-03-20 | 2025-05-14 | INTEL Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
| US11139953B2 (en) * | 2017-04-12 | 2021-10-05 | Beijing Lianshi Networks Technology Co., Ltd. | Methods and apparatus for secure and efficient implementation of block ciphers |
| 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 | 南方电网数字电网科技(广东)有限公司 | 基于双芯智能电表的数据清空方法、装置和计算机设备 |
| TWI845059B (zh) * | 2021-12-17 | 2024-06-11 | 美商谷歌有限責任公司 | 執行安全密碼操作之積體電路及方法 |
| US20220224511A1 (en) * | 2022-03-31 | 2022-07-14 | Intel Corporation | Cipher and authentication technologies |
| CN115134070B (zh) * | 2022-05-31 | 2025-08-08 | 阿里巴巴(中国)有限公司 | 一种分组密码算法实现的方法、装置和设备 |
| US20240015004A1 (en) * | 2022-07-05 | 2024-01-11 | International Business Machines Corporation | Hardware-based key generation and storage for cryptographic function |
| US12411996B2 (en) | 2022-08-10 | 2025-09-09 | International Business Machines Corporation | Hardware-based implementation of secure hash algorithms |
| US12288064B2 (en) | 2022-08-10 | 2025-04-29 | International Business Machines Corporation | Hardware-based message block padding for hash algorithms |
| CN115580477A (zh) * | 2022-10-24 | 2023-01-06 | 深圳市大头兄弟科技有限公司 | 基于aes加密的文件加密方法、解密方法及相关设备 |
Family Cites Families (76)
| 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 | 富士通株式会社 | 暗号回路 |
| EP1419436B1 (en) | 2001-08-20 | 2010-10-13 | Infineon Technologies AG | Apparatus and method for performing a cryptographic algorithm |
| 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 |
| US7461115B2 (en) * | 2002-05-01 | 2008-12-02 | Sun Microsystems, Inc. | Modular multiplier |
| JP2005527853A (ja) * | 2002-05-23 | 2005-09-15 | アトメル・コーポレイション | 高度暗号化規格(aes)のハードウェア暗号法エンジン |
| 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 |
| KR20050032588A (ko) * | 2002-08-08 | 2005-04-07 | 마츠시타 덴끼 산교 가부시키가이샤 | 암호화 복호화장치 및 방법, 암호화장치 및 방법,복호화장치 및 방법, 그리고 송수신장치 |
| 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 |
| US7502943B2 (en) | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
| US7925891B2 (en) | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
| US7539876B2 (en) | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
| US7536560B2 (en) * | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
| US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
| US7532722B2 (en) | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
| 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 |
| JP2006529031A (ja) * | 2003-05-14 | 2006-12-28 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Mixcolumn/invmixcolumn関数のハードウェア実装 |
| 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 |
| 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 |
-
2007
- 2007-03-28 US US11/729,199 patent/US8538015B2/en active Active
-
2008
- 2008-03-25 WO PCT/US2008/058128 patent/WO2008121614A1/en not_active Ceased
- 2008-03-25 EP EP08744319.8A patent/EP2132899B1/en active Active
- 2008-03-25 CN CN2008800064951A patent/CN101622816B/zh active Active
- 2008-03-25 EP EP14169143.6A patent/EP2852088B1/en 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 EP18165550.7A patent/EP3361668B1/en active Active
- 2008-03-25 EP EP20176663.1A patent/EP3737031B1/en active Active
- 2008-03-25 CN CN202011411255.9A patent/CN112532376B/zh active Active
- 2008-03-25 CN CN201710815596.4A patent/CN107493163B/zh active Active
- 2008-03-25 CN CN201710815893.9A patent/CN107465501B/zh active Active
- 2008-03-25 EP EP16191616.8A patent/EP3145113B1/en active Active
- 2008-03-25 JP JP2009552935A patent/JP2010520517A/ja active Pending
- 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,584 patent/US9641320B2/en not_active Expired - Fee Related
- 2014-12-16 US US14/572,423 patent/US9647831B2/en not_active Expired - Fee Related
- 2014-12-16 US US14/572,578 patent/US9641319B2/en not_active Expired - Fee Related
- 2014-12-16 US US14/572,602 patent/US9654282B2/en not_active Expired - Fee Related
- 2014-12-16 US US14/572,545 patent/US10181945B2/en active Active
- 2014-12-16 US US14/572,607 patent/US10270589B2/en active Active
- 2014-12-16 US US14/572,620 patent/US9634830B2/en not_active Expired - Fee Related
- 2014-12-16 US US14/572,540 patent/US9634828B2/en active Active
- 2014-12-16 US US14/572,565 patent/US9634829B2/en not_active Expired - Fee Related
- 2014-12-16 US US14/572,593 patent/US9654281B2/en not_active Expired - Fee Related
-
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,663 patent/US10171231B2/en active Active
- 2015-12-30 US US14/984,656 patent/US10187201B2/en active Active
- 2015-12-30 US US14/984,637 patent/US10581590B2/en active Active
- 2015-12-30 US US14/984,588 patent/US10164769B2/en active Active
- 2015-12-30 US US14/984,629 patent/US10256972B2/en active Active
- 2015-12-30 US US14/984,673 patent/US10158478B2/en active Active
- 2015-12-30 US US14/984,601 patent/US10256971B2/en active Active
- 2015-12-30 US US14/984,647 patent/US10263769B2/en active Active
- 2015-12-30 US US14/984,616 patent/US10313107B2/en not_active Expired - Fee Related
- 2015-12-30 US US14/984,686 patent/US10171232B2/en active Active
-
2017
- 2017-01-06 JP JP2017001149A patent/JP6592804B2/ja not_active Expired - Fee Related
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI489280B (zh) * | 2009-04-14 | 2015-06-21 | Mega Chips Corp | 記憶體控制器,記憶體控制裝置,記憶體裝置,記憶體資訊保護系統及記憶體控制裝置之控制方法 |
| 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 |
| TWI571091B (zh) * | 2014-05-21 | 2017-02-11 | 英特爾公司 | 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術 |
| US9800406B2 (en) | 2014-05-21 | 2017-10-24 | Intel Corporation | Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher |
| TWI739772B (zh) * | 2015-12-18 | 2021-09-21 | 美商英特爾公司 | 處理器、用於安全指令執行管線之方法、及運算系統 |
| TWI921667B (zh) | 2022-07-05 | 2026-04-11 | 美商萬國商業機器公司 | 用於加密功能之基於硬體之密鑰生成及儲存 |
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW200845689A (en) | Flexible architecture and instruction for advanced encryption standard (AES) |