TW200845689A - Flexible architecture and instruction for advanced encryption standard (AES) - Google Patents

Flexible architecture and instruction for advanced encryption standard (AES) Download PDF

Info

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
Application number
TW97111091A
Other languages
English (en)
Other versions
TWI369885B (en
Inventor
Shay Gueron
Wajdi Feghali
Vinodh Gopal
Makaram Raghunandan
Martin Dixon
Srinivas Chennupaty
Michael E Kounavis
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200845689A publication Critical patent/TW200845689A/zh
Application granted granted Critical
Publication of TWI369885B publication Critical patent/TWI369885B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

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)

  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 料快取中之該預先計算的回合金鑰,執行各先進加密標準 回合操作。
TW097111091A 2007-03-28 2008-03-27 Flexible architecture and instruction for advanced encryption standard (aes) TWI369885B (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050087271A (ko) * 2004-02-26 2005-08-31 삼성전자주식회사 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8787565B2 (en) * 2007-08-20 2014-07-22 Intel Corporation Method and apparatus for generating an advanced encryption standard (AES) key schedule
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
GB2463031B (en) * 2008-08-28 2010-12-15 Samsung Electronics Co Ltd Device and method for encrypting data or providing an encryption key
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
JP4687775B2 (ja) 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
US8233620B2 (en) * 2009-02-27 2012-07-31 Inside Secure Key recovery mechanism for cryptographic systems
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1496421A (en) 1922-04-01 1924-06-03 Koranicki Johann Animal trap
US1519509A (en) 1923-09-06 1924-12-16 Brown Co System for and method of producing sulphate and sulphite pulp
US1596530A (en) 1925-05-09 1926-08-17 Newport Co Anthracene dye and a process of manufacture
US1677921A (en) 1925-07-16 1928-07-24 Jules K Johnson Vacuum cleaner
US2447563A (en) 1947-04-11 1948-08-24 Sutherland Paper Co Collapsible covered container or box
US4641238A (en) * 1984-12-10 1987-02-03 Itt Corporation Multiprocessor system employing dynamically programmable processing elements controlled by a master processor
US5781758A (en) 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US7277540B1 (en) * 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US6324288B1 (en) * 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
US6738845B1 (en) * 1999-11-05 2004-05-18 Analog Devices, Inc. Bus architecture and shared bus arbitration method for a communication device
US7371397B2 (en) 2000-01-18 2008-05-13 Albemarle Corporation Methods for microbiological control in aqueous systems
US20020108059A1 (en) * 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
KR100366790B1 (ko) 2000-08-26 2003-01-09 엘지전자 주식회사 동기식 전송장치의 계위단위 스위치
KR100525389B1 (ko) 2001-01-17 2005-11-02 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
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

Cited By (7)

* Cited by examiner, † Cited by third party
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

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

Similar Documents

Publication Publication Date Title
TW200845689A (en) Flexible architecture and instruction for advanced encryption standard (AES)