JP2013057946A - 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令 - Google Patents

新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令 Download PDF

Info

Publication number
JP2013057946A
JP2013057946A JP2012226077A JP2012226077A JP2013057946A JP 2013057946 A JP2013057946 A JP 2013057946A JP 2012226077 A JP2012226077 A JP 2012226077A JP 2012226077 A JP2012226077 A JP 2012226077A JP 2013057946 A JP2013057946 A JP 2013057946A
Authority
JP
Japan
Prior art keywords
round
aes
key
aes round
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012226077A
Other languages
English (en)
Inventor
Gueron Shay
ゲロン、シェイ
K Feghali Wajdi
フェガリ、ワジ、ケー.
Gopal Vinodh
ゴーパル、ヴィノード
Raghunandan Makaram
ラグナンダン、マカラム
G Dixon Martin
ディクソン、マーティン、ジー.
Chennupaty Srinivas
チェヌパティ、スリニヴァス
E Kounavis Michael
クーナヴィス、マイケル、イー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2013057946A publication Critical patent/JP2013057946A/ja
Pending legal-status Critical Current

Links

Images

Classifications

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

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】汎用プロセッサ用の柔軟なAES命令セットを提供する。
【解決手段】AES命令セットは、AES暗号化または復号化用に「1ラウンド」パスを行う命令を含み、さらに、鍵生成を行う命令を含む。128/192/256ビット鍵用の鍵生成の鍵サイズおよびラウンド数を示すのに直近を利用してよい。柔軟なAES命令セットは、暗黙のレジスタをトラッキングする必要がないので、パイプライン能力の最大限の発揮が可能である。
【選択図】図1

Description

本開示は、暗号化アルゴリズムに係り、特に、新暗号規格(AES)アルゴリズムに係る。
暗号学はアルゴリズムに依存するツールであり、情報保護における要諦である。アルゴリズムは、複雑な数学的アルゴリズムであり、ビット列がその要諦である。暗号システムには、秘密鍵システムと公開鍵システムという2つの基本的な種類がある。秘密鍵システムは、2以上の当事者間で共有される単一の鍵(「秘密鍵」)を有する対称システムとも称される。単一の鍵は、情報の暗号化および復号化両方に用いられる。
(米国)標準技術局(NIST)がFIPS(Federal Information Processing Standard)197として刊行した新暗号規格(AES)は秘密鍵システムである。AESは、情報の暗号化および復号化を行うことのできる対称ブロック暗号である。
暗号化は、秘密鍵(暗号鍵)を用いて一連の変換を行うことで、「平文」と称される理解可能なデータを「暗号文」と称される理解不能な形式に変換する。暗号の変換は、(1)排他的論理和(XOR)演算を用いて、ラウンド鍵(暗号鍵から得られる値)を、状態(2次元のバイト列)に加算すること、(2)非線形バイト置換テーブル(S−Box)を用いて状態を処理すること、(3)状態の最後の3行を異なるオフセットで周期的にシフトすること、および(4)状態の全ての列を取り出して、そのデータを(互いに独立して)混合して、新たな列を作成すること、を含む。
復号化(逆暗号化)は、暗号鍵を用いて一連の変化を行うことで、「暗号文」ブロックを、同じサイズの「平文」ブロックに変換する。逆暗号化における変換は、暗号化における変換の逆の処理である。
AES規格では、128ビットのデータブロックの処理に、長さが128、192、および256ビットの暗号鍵を用いるラインデールアルゴリズムを指定する。異なる鍵の長さは、通常、AES−128、AES−192、およびAES−256と称される。
AESアルゴリズムは、平文を暗号文に、または暗号文を平文に、10、12、または14個の連続したラウンドで変換し、ラウンド数は鍵の長さに依存している。
請求されている主題の実施形態の特徴は、以下の詳細な記載を、図面を参照して読むことで明らかになるが、図面において同様の要素には同様の参照番号が付されている。
本発明の原理による、汎用プロセッサにおいてAES暗号化および復号化を行う柔軟なアーキテクチャおよび命令の一実施形態を含むシステムのブロック図である。 図1に示すプロセッサの一実施形態のブロック図である。 本発明の原理による、AES暗号化および復号化を行う図2に示す実行部の一実施形態を含むブロック図である。 図3の実行部によるAES暗号化ラウンド命令のフローを示すフローグラフである。 図3の実行部によるAES暗号化最終ラウンド命令のフローを示すフローグラフである。 図3の実行部によるAES復号化ラウンド命令のフローを示すフローグラフである。 図3の実行部によるAES復号化最終ラウンド命令のフローを示すフローグラフである。 ラウンド鍵を生成し暗号化および復号化を行うのに利用されうる直近のバイトを有するAESラウンド命令の一実施形態を示す。 以下の詳細な記載は、請求されている主題の例示的な実施形態を参照しながら述べるが、当業者には多くの代替例、変形例、および変更例が明らかである。故に、請求されている主題は広義に解釈されることが意図されており、添付請求項で定義が行われることが意図されている。
新暗号規格(AES)アルゴリズムは、通常ソフトウェアまたは専用プロセッサで実行されるコンピューティング集約型のアルゴリズムである。故にこの暗号化は、通常、コンピュータに格納されている情報のサブセット(「トップシークレット」として機密扱いされうるような類の情報等)の暗号化に限って利用されている。しかし、コンピュータに格納されている情報を今まで以上に暗号化する必要がでてきている。例えば、携帯コンピュータに格納されている全ての情報が暗号化されれば、携帯コンピュータの盗難に際しても情報保護が可能となる。
AESは、128、192、または256ビットのサイズの鍵を用いて、128ビットブロックに施されるブロック暗号である。鍵のサイズに応じて、演算列を多くのラウンド(10、12、または14)について繰り返す。
各ラウンドにおける鍵の生成は、ラウンド鍵を格納する暗黙の128ビットレジスタを利用して、その都度(on the fly)(つまり各ラウンド直前に)行われてよい。しかし、暗黙のレジスタの利用により、前の命令結果に対する依存性から、x86レジスタベースのプロセッサの性能が低下する虞がある。
例えば、アプリケーションによっては、フロー毎に異なる鍵を有しうるネットワークパケットを処理するためその都度鍵生成することが好都合なものもある。一方で、例えばディスクドライブのコンテンツを暗号化/復号化するのに用いられる単一の鍵に多くの性能が必要とされる類のアプリケーションもある。このように、鍵生成には柔軟性が求められる。本発明の一実施形態は、汎用プロセッサでAES暗号化および復号化を行う柔軟なアーキテクチャおよび命令を提供する。
図1は、本発明の原理による、汎用プロセッサにおいてAES暗号化および復号化を行う柔軟なアーキテクチャおよび命令の一実施形態を含むシステム100のブロック図である。システム100は、プロセッサ101、メモリコントローラハブ(MCH)またはグラフィックメモリハブ(GMCH)102、および入出力(I/O)コントローラハブ(ICH)104を含む。MCH102は、プロセッサ101とメモリ108との間の通信を制御するメモリコントローラ106を含む。プロセッサ101とMCH102とは、システムバス116を介して通信する。
プロセッサ101は、シングルコアIntel(登録商標)Pentium(登録商標) IV(登録商標)プロセッサ、シングルコアIntel Celeronプロセッサ、Intel(登録商標)XScaleプロセッサ、または、Intel(登録商標)Pentium(登録商標) D、Intel(登録商標)Xeon(登録商標)プロセッサ等のマルチコアプロセッサ、または、Intel(登録商標)Core(登録商標)Duoプロセッサ、または任意の他の種類のプロセッサ等の複数のプロセッサのいずれかであってよい。
メモリ108は、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート2(DDR2)RAM、またはランバスDRAM(RDRAM)、または任意の他の種類のメモリであってよい。
ICH104は、ディレクトメディアインタフェース(DMI)等の高速チップツーチップインターコネクト114を用いてMCH102に連結されてよい。DMIは、2ギガビット/秒の同時転送レートを2つの単方向レーンによりサポートする。
ICH104は、ICH104に連結された少なくとも1つの格納デバイス112との通信を制御する格納I/Oコントローラ110を含みうる。格納デバイスは、例えば、ディスクドライブ、デジタルビデオディスク(DVD)ドライブ、コンパクトディスク(CD)ドライブ、RAID(Redundant Array of Independent Disks)、テープドライブまたは他の格納デバイスであってよい。ICH104は、格納プロトコルインターコネクト118を介して、SAS(Serial Attached Small Computer System Interface)またはSATA (Serial Advanced Technology Attachment)等のシリアル格納プロトコルを用いて格納デバイス112と通信しうる。
プロセッサ101は、AES暗号化および復号化演算を行うAES機能103を含む。AES機能103は、メモリ108に格納されている、および/または、格納デバイス112に格納されている情報の暗号化または復号化に利用されうる。
図2は、図1に示すプロセッサ101の一実施形態のブロック図である。プロセッサ101は、レベル1(L1)命令キャッシュ202から受信したプロセッサ命令を復号化するフェッチ復号化部206を含む。命令実行に利用されるデータはレジスタファイル208に格納されていてよい。一実施形態においては、レジスタファイル208は、複数の128ビットレジスタを含み、これらは、AES命令が利用するデータを格納する際、AES命令が利用する。
一実施形態においては、レジスタファイルは、ストリーミング(シングルインストラクションマルチプルデータ(SIMD))エクステンション(SSE)インストラクションのセットを有するIntel Pentium(登録商標) MMXプロセッサに提供されている128ビットのMMXレジスタに類似した128ビットレジスタ群である。SIMDプロセッサでは、データが128ビットブロックで処理され、一度に1つの128ビットブロックがロードされる。
フェッチ復号化部206は、L1命令キャッシュ202からマイクロインストラクションをフェッチして、該マイクロインストラクションを復号化して、マイクロコード読み取り専用メモリ(ROM)214に格納されうるマイクロ演算(μops)と称される簡単な演算に分割する。実行部210は、マイクロ演算をスケジューリングして実行する。示されている実施形態では、実行部210のAES機能103は、AES命令セット用のマイクロ演算を含む。リタイヤ部212は、実行された命令の結果を、レジスタまたはメモリに書き込む。AES命令が利用するラウンド鍵214は、L1データキャッシュ204に格納されており、実行部210にロードされて、マイクロ演算がAES命令セットのAES命令を実行するのに利用されてよい。ラウンド鍵214をデータキャッシュ204に格納することで、例えばシステム100に格納されている暗号化情報にアクセスすべくラウンド鍵を取得しようとする試みのようなサイドチャネル攻撃からラウンド鍵を守る。
図3は、本発明の原理によりAES暗号化および復号化を行う図2に示す実行部210の一実施形態を示すブロック図である。図3を、図2との関連で説明する。
フェッチ復号化部206がAES命令を復号した後、実行部210はAES命令を、マイクロコードROM214に格納されていてよいAES命令に関するマイクロ演算を行うことで実行する。
本発明の一実施形態による柔軟なAES命令セットにより、プログラマーは、処理データ量、メモリ帯域幅および容量に対する性能のトレードオフを行うことができる。
アプリケーションによっては、同じ鍵を使い続けるものもある。性能が非常に重要なアプリケーションでは、鍵の鍵スケジュールを1度予め計算して(つまり、ラウンド毎のラウンド鍵)、それをメモリに格納しておくという観点でのトレードオフが行われる。他の種類のアプリケーションには、鍵スケジュールを格納するのに利用されるメモリ量を最小限に抑え、且つ、マルチブロック演算では良好な性能を達成することを望むものもある。この種類のアプリケーションでは、鍵スケジュールを、処理前に多数のブロックについて予め演算しておくことが考えられる。暗号鍵または逆暗号鍵のみを格納して、他のものは適宜性能面の犠牲を鑑みながら生成することによって、メモリフットプリントがさらに低減されうる。
x86−型プロセッサでは、AESラウンド鍵演算およびAESスケジューリング演算が利用可能な領域および実行ポート数により、AES命令の性能に制限が加わる。鍵拡張が全てのブロック暗号化で必要となるシステムにおいては、AESスケジューリング演算およびAESラウンド鍵演算を異なる実行ポートに実装することで、性能を向上させる可能性がある。しかし、x−86型プロセッサでは、異なる実行ポートおよびこれら異なるポート制御用の追加領域は提供不可能なことがある。
一実施形態では、暗号化ラウンド、復号化ラウンド、暗号化復号化最終ラウンド最終ラウンドを行い、ラウンド暗号鍵またはラウンド復号鍵を算出するのに、それぞれ別個のAES命令を含むAES命令セットが提供される。一実施形態では、AES命令セットが6つのAES命令を含む。各AESラウンド命令は、固有演算コード(opcode)を有する。固定幅ラウンド鍵の一実施形態(例えば128ビット)におけるAES命令セットのAESラウンド命令を、以下の表1に示す。
Figure 2013057946
AES命令セットは、4つのAESラウンド命令(暗号化、復号化、暗号化最終ラウンド、復号化最終ラウンド)、および2つのAESラウンド鍵命令(次のラウンド鍵および前のラウンド鍵)を含む。AES命令セットのAESラウンド命令は、最終ラウンド以外の全てのラウンドに利用される暗号化および復号化ラウンド演算を行うシングルラウンド演算を含む。例えば、表1のAESENCRYPTRoundのシングルラウンド命令では、入力データが128ビットレジスタ(xmmsrcdst)に格納され、ラウンド鍵が別の128ビットレジスタ(xmm)に格納される。この命令は、128ビットxmmsrcdstレジスタに格納されている入力データ(ソース)に対してAESラウンド演算を行い、128ビットxmmsrcdstレジスタに格納されている入力データを、ラウンド演算実行結果で上書きする。故に、xmmsrcdstは当初は入力データを、そして後には、AESラウンド演算結果を格納する。
さらにAES命令セットは、最終復号化ラウンドのAES復号命令および最終暗号化ラウンドのAES暗号命令を含む。例えば、表1のAESENCRYPTLastRoundのシングルラウンド命令では、入力データが128ビットレジスタ(xmmsrcdst)に格納され、ラウンド鍵が別の128ビットレジスタ(xmm)に格納される。この命令は、xmmsrcdstレジスタに格納されている入力データ(ソース)に対してAESラウンド演算を行い、xmmsrcdstレジスタに格納されている入力データを、ラウンド演算実行結果で上書きする。故に、xmmsrcdstは当初は入力データを、そして後には、ラウンド演算結果を格納する。xmmレジスタは、ラウンド演算のラウンド鍵を格納する。
別の実施形態では、ラウンドおよび最終ラウンド命令(例えば、AESENCRYPTRoundおよびAESENCRYPTLastRound)が、レジスタファイル304からではなくて、メモリ(m/128)から入力を受け取ってよい(例えば、AESラウンド命令は、AESENCRYPTRound xmmsrcdst m/128であってよい)。
AES命令セットの他の2つのAES命令は、鍵のサイズ(つまり、128ビット、192ビット、または256ビット)に応じてAESラウンド用のラウンド鍵を生成する。これらAESラウンド鍵命令の一方は暗号化演算に利用されるラウンド鍵を生成し、他方は復号化演算に利用されるラウンド鍵を生成する。AESNextRoundKey AESPreviousRoundKey命令における直近のフィールドは、鍵のサイズを特定する{128、192、256}。
また別の実施形態では、直近のフィールドの代わりに、異なる鍵のサイズが、各々が固有演算コードを有する別個の命令として実装されてよい。この実施形態では、AESラウンド鍵命令の数は、各ラウンド鍵演算(例えばAESNextRoundKey_128、AESNextRoundKey_192、およびAESNextRoundKey_256)について3つの別個の命令を含み、AESPreviousRoundKeyもまた、これらに類似した3つの命令のセットを含む。この実施形態では、命令セット内の命令の総数は、先に述べた実施形態の6つに比して、10となっている。
レジスタファイル304は、AES命令セットのAES命令が利用しうる128ビットレジスタを複数有する。128ビットレジスタは、ソースオペランド、ラウンド鍵、およびAES命令の結果を格納しうる。第1ラウンドでは、AES命令は、暗号される128ビットの平文または復号される128ビットの暗号文であってよいソースオペランドを受信する。128ビット、192ビット、または256ビットの鍵の鍵スケジュールを生成する鍵は、レジスタファイル304内の複数の128ビットレジスタ308のいずれかに格納されていてよい。またラウンド鍵も、レジスタファイルの128ビットレジスタ308のいずれかに格納されてよい。全ての命令は、レジスタファイルのレジスタを利用し、さらに、後述するようにメモリから直接入力を得てよい。
表1に示すAES命令セットの一実施形態を利用するソースコードの例を、以下の表2に示す。本例においては、多くのブロックに対して同じ鍵を利用する暗号化を行うアプリケーションで性能が最適化されている。このようなアプリケーションの1つに、ディスクに格納する前に全てのデータを暗号化する際に同じ鍵を利用するようなディスクのコンテンツを暗号化するのに単一の鍵を利用するものがある。本例では、AES−128暗号が行われる。
鍵のサイズは、128ビット、192ビット、または256ビットであってよい。行われるラウンドの数(n)は、鍵のサイズに応じて1、10、12、または14で、各ラウンド鍵は固定サイズ(128ビット)であってよい。ラウンド値数が10、12、14の場合、AESマイクロ演算は、128ビット、192ビット、または256ビットの鍵サイズに対して標準的なAES暗号化および復号化を行ってよい。
多くのブロックについて同じ鍵を利用する場合、各ラウンドのラウンド鍵(鍵スケジュール)は、予め計算されてメモリ(例えばレベル1データキャッシュ204)に格納されているので、各ブロックの暗号化/復号化演算の前に同じ鍵スケジュールを再度計算する必要がない。
Figure 2013057946
10エレメントを有するアレイ(RK)を利用して、鍵の鍵スケジュールを格納する。AES−128暗号の入力鍵を、RK[0]に格納して、9ラウンド鍵RK[0]−RK[1]を、AES命令セットからAESNextRoundKey命令を読み出すことで予め計算する。AESNextRoundKey命令は、現在のラウンド鍵に基づいて次のラウンドを計算する。鍵スケジュールについて予め計算されたラウンド鍵は、レベル1データキャッシュ204のラウンド鍵214に格納されてよい。
本例においては、そのラウンドのラウンド鍵である鍵スケジュールの該当部分(拡張鍵)が直接レジスタファイル304から入力されると、AESラウンドを行うループに入る前に、排他的論理和(XOR)演算を、状態と鍵とに対して行う。各ラウンド1から9においては、AES命令セットからAESENCRYPTRound命令を呼び出して、AESラウンド演算を1ラウンドについて行う。最終ラウンド(ラウンド10)については、AES命令セットからAESENCRYPTLastRound命令を呼び出して、この最終ラウンドにAESラウンド演算を行う。
AES命令が暗号化または復号化する情報は、暗号または複号演算を開始する第1のAES命令が発行される前に、レジスタファイル304のソース/宛先レジスタ306へロードされる。ソースレジスタ306の情報の暗号化/復号化に利用される鍵は、レジスタファイル304の1以上の他のレジスタ308に格納されている。128ビット鍵の場合、鍵の全128ビットが、レジスタファイル304の他の128ビットレジスタのいずれかに格納される。128ビットより大きい鍵のサイズに対しては、最上位ビット(128ビットより大きい)を、128ビットレジスタのうち別のものに格納する。
表2に示す例においては、レジスタファイル304のレジスタ308のいずれかにロードされる前に、鍵に基づいて各ラウンドのラウンド鍵が予め計算されて、レベル1データキャッシュ204に格納されていてよい。各ラウンドの鍵は、さらに、レジスタファイル304の1以上のレジスタに格納されていてもよく、または、レベル1データキャッシュ204のラウンド鍵214に格納されていてもよい。
AESは、128ビットの固定ブロックサイズと、128、192、または256ビットの鍵サイズとを有し、4x4バイトアレイ(つまり16バイト(128ビット固定ブロックサイズ))で動作する(これを「状態」と称する)。AESアルゴリズムは、128ビットの平文ブロックを、128ビットの暗号文ブロックに変換(暗号化)する、または、128ビットの暗号文ブロックを、128ビットの平文ブロックに変換(復号化)し、これらは、10、12、または14の連続したラウンドで行われ、このラウンド数は鍵のサイズに応じている(128、192、または256ビット)。
ラウンド毎の暗号化または復号化演算を行う前に、実行部210は、状態および鍵をレジスタファイル304から取得する。各暗号化/復号化ラウンド演算は、読み取り専用メモリ(ROM)214の鍵スケジューラ302に格納されているAES命令のマイクロ演算を利用して行われる。ここに示す実施形態では、状態(128ビットブロックの状態)は、レジスタ306に格納されており、鍵は、レジスタファイル304の他のレジスタ308の1以上に格納されている。AES命令の実行の結果生じる状態をレジスタファイル304のレジスタ306に格納する。状態は、次のAESラウンドまたはAES暗号化または復号化演算の最終結果が利用する中間ラウンドデータであってよい。
ここで示す実施形態においては、鍵スケジューラ302は、AESラウンドで利用するラウンド鍵を生成する。鍵スケジューラ302は、マイクロコード演算として実装されてよく、FIPS PUB197で定義される128ビット、196ビット、および256ビット鍵のラウンド鍵を生成する一連の演算を行うマイクロコード演算を含みうる。
別の実施形態では、鍵スケジューラは、実行部210のハードウェア状態マシン列として実装されてよい。また別の実施形態では、鍵スケジューラの幾らかの部分がマイクロコードROM214に格納されているマイクロコード演算として実装され、鍵スケジューラの残りの部分が実行部210のハードウェア状態マシン列として実装されてもよい。
鍵スケジューラ302は、nバイトの鍵を、bバイトの拡張鍵(鍵スケジュール)に拡張してよく、この拡張鍵の最初のnバイトが元の鍵であってよい。例えば、128ビットの鍵においては、128ビットの鍵を176バイト(つまり、11x16バイト(128ビット))の拡張鍵に拡張して、この最初の16バイトが元の128ビットの鍵であり、ラウンド数は10である。192ビットの鍵の24バイトを、208バイト(13x16バイト)に拡張して、12個の「ラウンド鍵」を、12ラウンドそれぞれに対して1つずつ割り当てるよう提供し、256ビットの鍵の32バイトを、240バイト(15x16バイト)に拡張して、14個の「ラウンド鍵」を、14ラウンドそれぞれに対して1つずつ割り当てるよう提供する。
演算コード(opcode)をAES命令で複号する際、1回のAESラウンドのAES命令のフローを制御するのに利用されるパラメータ数は、制御ロジック322に格納されている。パラメータは、演算の種類(暗号または復号)およびそれが最終ラウンドであるかの情報を含む。
AESラウンドロジック324は、ブロック状態314、S−ボックス/逆S−ボックス316、行シフト316および逆列混合またはヌル混合(mix inverse, mix columns or null)(「列混合」と称される)320、およびラウンド鍵加算326という段階のマイクロ演算を含みうる。
ブロック状態314では、AESラウンドロジック324への128ビットの入力(状態)に、ビットワイズXORを用いて、鍵(ラウンドに関連付けられた拡張鍵の128ビットの部分)を追加して、128ビットの中間値(状態)を生成する。
S−ボックス/逆S−ボックス316では、この128ビットの中間値の各バイトを、これも置換ボックスまたは「S−ボックス」と称されるルックアップテーブルから格納・取得されうる別のバイト値で置換してよい。S−ボックスは、幾らかの数の入力ビットmを取り、それらを幾らかの数の出力ビットnに変換して、通常ルックアップテーブルとして実装する。固定ルックアップテーブルが通常利用される。この演算は、ガロア体(GF)(2)において逆関数を利用することで非線形性を生じる。例えば、nビットの出力は、mビットの入力の外側の2ビットを用いてルックアップテーブルで行を選択し、mビットの入力の内側のビットを用いて列を選択することで、見つけることができる。
行シフト318ではS−ボックス/逆S−ボックス316の結果に、ビット線形変換を行い、サブバイト段階から受け取った4x4アレイ(128ビット(16バイト)状態)の各行のバイトを、周期的に左にシフトさせる。各バイトをシフトさせる位置の数は、4x4アレイの各行によって異なる。
列混合320では、行シフト318の結果に、ビット線形変換を行い、4x4アレイ(状態)の各行を、バイナリガロア体(GF)(2)上の多項式として扱い、その後、c(x)=3x+x+x+2を固定多項式として、モジュロx+1乗算する。最終AESラウンドは、他のAESラウンドと、列混合320が省かれている点で異なっている。
列混合段階320の後、ラウンド鍵加算324では、拡張鍵からのラウンド鍵、およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。
例えば、以下のAES命令を発行して、AES復号の1ラウンドを行うことができる。
AESDECRYPTRound xmmsrcdst xmm
本例では、128ビットAES暗号化ラウンド演算を、拡張鍵が{RK[1],RK[2],…RK[10]}として表される鍵を利用して行う。ラウンド鍵は、AESDECRYPTRound命令を発行する前に、AESPreviousRoundKey xmmsrc1,2 xmm dst(中間)命令を発行することで生成されうる。ラウンド鍵は、レベル1データキャッシュ204からブロック状態314へ直接ロードされてもよいし、または、先ずレジスタファイル304のレジスタ(xmm)に格納されていて、その後、レジスタからブロック状態314へロードされてもよい。
異なる鍵を利用して各ブロックを暗号化/復号化する場合(例えば、データパケットを暗号化/復号化するネットワークインタフェースコントローラ(NIC)の場合)、ラウンド鍵は、以下の表3でAES−128暗号の疑似コードで示すように各ラウンドについて暗号化/復号化を行う前に、その都度計算されてよい。
Figure 2013057946
本例においては、該ラウンドのラウンド鍵は、鍵スケジュール(拡張鍵)の10ラウンド各々(つまり、ラウンド1−9およびラウンド10(最終ラウンド))に対してラウンド鍵を利用して暗号化を行う前に生成される。
シングルAESラウンド命令およびシングルAESラウンド鍵生成命令を含むAES命令セットにより、異なる数のラウンドおよび鍵スケジュールを有するAESの変形例を生成することができる、つまり、FIPS PUB197では定義されていないAESの変形例を生成することができる。故に、AES命令セットのシングルラウンドAES命令は、AES暗号化および復号化を行う際に柔軟性を提供する。
AES命令セットが行うラウンド数は固定されていないので、適宜任意の数のラウンドを行うことができる。例えば、ラウンド数は、ハッシュまたはMAC攻撃またはAESへの攻撃に対する新たな規格が導入された場合、将来の暗号化/復号化規格をサポートするよう変更可能である。
図4は、図3の実行部210によるAES暗号化ラウンド命令のフローを示すフローグラフである。
ブロック400で、実行部210は、AES暗号化ラウンド命令を待つ。AES暗号化ラウンド命令がフェッチ復号化部206により既に復号化されている場合、処理はブロック402に進む。復号化されていない場合は、ブロック400に留まり、AES暗号化ラウンド命令を待つ。
ブロック402で、フェッチ復号化部206による命令復号化中、暗号化が必要である旨を制御ロジック322に格納して、暗号化ラウンド実行に利用されるラウンド鍵および128ビットブロック状態(ソース)をレジスタファイル304から実行部210へロードする。処理はブロック404へ進む。
ブロック404で、置換演算を128ビットブロック状態に対して、つまり、ブロック406または418の結果に対して、行う。128ビットブロック状態の各バイトを、これも置換ボックスまたは「S−ボックス」と称されるルックアップテーブルから格納・取得されうる別のバイト値で置換してよい。S−ボックスは、幾らかの数の入力ビットmを取り、それらを幾らかの数の出力ビットnに変換して、通常ルックアップテーブルとして実装する。結果を、128ビットブロック状態として格納する。処理はブロック406へ進む。
ブロック406で、128ビットブロック状態(4x4アレイ)に、ビット線形変換を行い、4x4アレイの各行のバイトを、周期的に左にシフトさせる。各バイトをシフトさせる位置の数は、4x4アレイの各行によって異なる。処理はブロック408へ進む。
ブロック408で、128ビットブロック状態(4x4アレイ)に、ビット線形変換を行い、4x4アレイ(状態)の各行を、GF(2)により多項式として扱い、その後、c(x)=3x+x+x+2を固定多項式として、モジュロx+1乗算する。処理はブロック410へ進む。
ブロック410で、拡張鍵からのラウンド鍵、およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック412へ進む。
ブロック412で、そのラウンドの暗号化演算の結果(128ビットブロック状態)を、レジスタファイル304のソース/宛先レジスタ302に格納する。これでAES暗号化命令処理が完了する。
以下の表4は、表3に示す疑似コードの実行後に、128ビットブロック入力に128ビット鍵を利用してAES−128暗号化を行った結果の一例を示す。
Figure 2013057946
図5は、図3の実行部210によるAES暗号化最終ラウンド命令のフローを示すフローグラフである。
ブロック500で、実行は、AES暗号化最終ラウンド命令を待つ。もしもAES暗号化最終ラウンド命令がフェッチ復号化部206で既に復号化されている場合、処理はブロック502に進む。復号化されていない場合は、ブロック500に留まり、AESラウンド暗号化命令を待つ。
ブロック502で、ブロック404(図4)との関連で説明したS−ボックスルックアップに類似した方法で最終ラウンドにS−ボックスルックアップを行う。処理はブロック504へ進む。
ブロック504で、ブロック406(図4)で他のラウンドとの関連で説明したような方法で最終ラウンドに行シフト演算を行う。処理はブロック506へ進む。
ブロック506で、拡張鍵からのラウンド鍵、およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック508へ進む。
ブロック508で、暗号化最終ラウンド演算の結果を、レジスタファイル304のソース/宛先レジスタ306に格納する。これでAES命令の処理が完了する。
図6は、図3の実行部210によるAES復号化ラウンド命令のフローを示すフローグラフである。
ブロック600で、実行は、AES復号化ラウンド命令を待つ。AES復号化ラウンド命令がフェッチ復号化部206により既に復号化されている場合、処理はブロック602に進む。復号化されていない場合は、ブロック600に留まり、AES復号化ラウンド命令を待つ。
ブロック602で、フェッチ復号化部206による命令復号化中、復号化ラウンドを行う必要がある旨を制御ロジック322に格納して、復号化ラウンド実行に利用されるラウンド鍵およびソース(128ビットブロック状態)をレジスタファイル304から実行部210へロードする。処理はブロック604へ進む。
ブロック604で行う処理は復号化である。AES規格に定義されている逆s−ボックスルックアップを行うことで、置換演算を128ビットブロック状態に対して行う。処理はブロック606へ進む。
ブロック606で、FIPS PUB197で定義されている逆行シフト演算を行う。処理はブロック608へ進む。
ブロック608で、FIPS PUB197で定義されている逆行シフト演算を行う。処理はブロック610へ進む。
ブロック610で、拡張鍵からのラウンド鍵、およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック612へ進む。
ブロック612で、そのラウンドの復号化演算の結果(128ビットブロック状態)を、レジスタファイル304のソース/宛先レジスタ302に格納する。これでAES復号化ラウンド命令処理が完了する。
図7は、図3の実行部210によるAES復号化最終ラウンド命令のフローを示すフローグラフである。
ブロック700で、実行部210は、AES復号化最終ラウンド命令を待つ。もしもAES復号化最終ラウンド命令がフェッチ復号化部206で既に復号化されている場合、処理はブロック702に進む。復号化されていない場合は、ブロック700に留まり、AES復号化ラウンド命令を待つ。
ブロック702で、FIPS PUB197で定義されている逆s−ボックスルックアップを行うことで、最終ラウンドの128ビットブロック状態に置換演算を行う。処理はブロック704へ進む。
ブロック704で、FIPS PUB197で定義されているような方法で最終ラウンドに逆行シフト演算を行う。処理はブロック706へ進む。
ブロック706で、拡張鍵からのラウンド鍵、およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック708へ進む。
ブロック708で、復号化最終ラウンド演算の結果を、レジスタファイル304のソース/宛先レジスタ306に格納する。これでAES復号化最終ラウンド命令の処理が完了する。
一実施形態では、図4−7のフローグラフのブロックを、実行部210のハードウェア状態マシン列として実装することができる。別の実施形態では、ブロックの幾らかの部分が読み取り専用メモリ(ROM)214に格納されうるマイクロプログラムとして実装することもできる。ブロックがハードウェア状態マシン列として実装されている実施形態のほうが性能は高いと考えられる。
図8は、ラウンド鍵を生成し暗号化および復号化を行うのに利用されうる直近のバイトを有するAESラウンド命令の一実施形態を示す。表1に示すAES命令セットの代わりに単一のAESラウンド命令を提供することで、AES命令セットの機能を行う。単一のAES命令が行う特定の機能は、直近のバイト(key_select_modifier)内のビットに暗号化されている。直近のバイトにより、AESラウンド命令は、各命令が固有演算コードを有する複数の新たな命令を作成する代わりに、新たな特徴を追加するよう拡張される。
AESラウンド命令は、記号として以下のように定義されうる。
dest:=aes_key_round(source2,source1),key_select_modifier
aes_key_round命令はAES暗号または復号化演算を行うべく、ポート番号に基づいて特定の実行部210に発行される。示されている実施形態では、ポート番号4がAESラウンド命令に指定された実行ポートである。実行部210は、多くのパラレルポート(スーパー−スカラー)に分割される。しかし、全てのポートが等しいわけではない。ポートの中には、大きな整数のマルチプライアー、浮動小数点のマルチプライアーまたはデバイダ等の専用リソースを有するものがある。加算、減算、および排他的論理和等の、これらより簡単で一般的な命令は、多数のポートによりサポートされて最大の性能を発揮する。故に、各命令またはマイクロ演算では、発行制御ロジックがマイクロ演算/命令を発行するポートを決定する。本実施形態では、AES命令は常にポート番号4に対して発行される。しかし、他の実施形態では他のポート番号を利用することができる。
図8を参照すると、destはラウンドNに対して128ビットの拡張鍵を格納し、ソース2はラウンドN−1に対して128ビットの拡張鍵を格納し、ソース1はラウンドN−2に対して128ビットの拡張鍵を格納する。key_select_modifierは、現在のラウンド数(N)、演算の方向(暗号化/復号化)、およびAES鍵のサイズを提供するのに利用される8ビットの直近の値である。AES−128では、ソース1は不要であるので無視される。実行部はAES部であり、フラグ(整数または浮動小数点)は利用されない。
一実施形態では、直近の値の4つの最下位ビットのビット暗号化は、AES−128に対して1−10のラウンド数、AES−192に対して1−12のラウンド数、およびAES−256に対して2−14のラウンド数、といったラウンド数を示す。AES128および192では、ラウンド数0は無効である、というのも、最初のラウンドが無変更の入力鍵を利用するからである。AES−256では、ラウンド数0と1は無効である、というのも、最初の2つの128ビットラウンドが無変更の256ビット入力鍵を利用するからである。
直近のバイトのビット4は演算の方向(暗号化または復号化)を示す(例えば一実施形態では0=暗号、および1=復号、また別の実施形態では1=暗号、および0=復号、というように)。直近のバイトのビット5および6は、AES鍵のサイズを示す。一実施形態では、AES鍵のサイズは以下の表5に示すように定義される。
Figure 2013057946
別の実施形態では、値11を有するビット[6:5]も、128ビットの鍵のサイズのインジケータである。この実施形態では、ビット[6:5]の全ての値が有効であり、パースされうる。
当業者であれば、本発明の実施形態に係る方法を、コンピュータ利用可能な媒体を含むコンピュータプログラムプロダクトに具現化することができることを想到しよう。例えば、コンピュータ利用可能な媒体は、コンピュータ可読プログラムコードが記憶されたコンパクトディスク読み取り専用メモリ(CD ROM)ディスクまたは従来のROMデバイス、またはコンピュータディスク等の読み取り専用メモリデバイスから形成されてよい。
本発明の実施形態を特別に示し、実施形態を参照しながら記載してきたが、当業者であれば添付請求項が包括する本発明の実施形態の範囲を逸脱することなく、様々な変更を形態および詳細に対して加えることが可能であることを理解しよう。

Claims (22)

  1. AES命令の一連の演算を行う実行部を備える装置であって、
    前記一連の演算は、プラグラム可能な数のAESラウンドを行い、
    前記演算は前記実行部に、
    前記AESラウンドの数が1より大きい場合、鍵を一時的鍵レジスタにロードさせ、
    各AESラウンドを行う前に、前記鍵に基づいて前記AESラウンドのラウンド鍵を生成させ、
    各AESラウンドにおいて、前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて、次のAESラウンドの次の入力または前記AES命令の結果を提供させる、装置。
  2. 前記AESラウンドの数が1に等しい場合、前記一連のAESラウンド演算を行う前に、前記実行部は、前記鍵に基づいて前記AESラウンドについて予め計算されたラウンド鍵をロードする、請求項1に記載の装置。
  3. 前記一連のAESラウンド演算により、前記実行部は、
    前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って、中間値を生成し、
    ルックアップテーブルに格納されている値に基づいて、前記中間値の各バイトに対して置換演算を行い、
    前記置換演算の結果に、前記中間値の行をシフトさせるビット線形変換を行う、請求項2に記載の装置。
  4. 前記AESラウンドの数−1に対して前記一連のAESラウンド演算を行うことで、前記実行部は、
    前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って、中間値を生成し、
    ルックアップテーブルに格納されている値に基づいて、前記中間値の各バイトに対して置換演算を行い、
    前記置換演算の結果に、前記中間値の行をシフトさせるビット線形変換を行い、
    前記置換演算の結果に、前記中間値の列同士を混合させるビット線形変換を行う、請求項1に記載の装置。
  5. 最終ラウンドに前記一連のAESラウンド演算を行うことで、前記実行部は、
    前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って、中間値を生成し、
    ルックアップテーブルに格納されている値に基づいて、前記中間値の各バイトに対して置換演算を行い、
    前記置換演算の結果に、前記中間値の行をシフトさせるビット線形変換を行う、請求項4に記載の装置。
  6. 前記結果は暗号化された値である、請求項1に記載の装置。
  7. 前記結果は復号化された値である、請求項1に記載の装置。
  8. 第1のAESラウンドの鍵および入力がレジスタファイルに格納されている、請求項1に記載の装置。
  9. 前記レジスタファイルは複数の128ビットレジスタを含む、請求項8に記載の装置。
  10. AES命令のプログラム可能なAESラウンドの数が1より大きい場合、鍵を一時的鍵レジスタにロードして、各AESラウンドを行う前に、前記鍵に基づいて前記AESラウンドのラウンド鍵を生成する段階と、
    各AESラウンドにおいて、前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行い、次のAESラウンドの次の入力または前記AES命令の結果を提供する段階と、を備える方法。
  11. 前記AESラウンドの数が1に等しい場合、前記一連のAESラウンド演算を行う前に、前記鍵に基づいて前記AESラウンドについて予め計算されたラウンド鍵をロードする段階を備える、請求項10に記載の方法。
  12. 前記一連のAESラウンド演算を行う段階は、
    前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って、中間値を生成する段階と、
    ルックアップテーブルに格納されている値に基づいて、前記中間値の各バイトに対して置換演算を行う段階と、
    前記置換演算の結果に、前記中間値の行をシフトさせるビット線形変換を行う段階と、を有する、請求項11に記載の方法。
  13. 前記ラウンドの数1に対して前記一連のAESラウンド演算を行う段階は、
    前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って、中間値を生成する段階と、
    ルックアップテーブルに格納されている値に基づいて、前記中間値の各バイトに対して置換演算を行う段階と、
    前記置換演算の結果に、前記中間値の行をシフトさせるビット線形変換を行う段階と、
    前記置換演算の結果に、前記中間値の列同士を混合させるビット線形変換を行う段階と、を有する、請求項10に記載の方法。
  14. 最終AESラウンドに前記一連のAESラウンド演算を行う段階は、
    前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って、中間値を生成する段階と、
    ルックアップテーブルに格納されている値に基づいて、前記中間値の各バイトに対して置換演算を行う段階と、
    前記置換演算の結果に、前記中間値の行をシフトさせるビット線形変換を行う段階と、を有する、請求項13に記載の方法。
  15. 前記結果は暗号化された値である、請求項10に記載の方法。
  16. 前記結果は復号化された値である、請求項10に記載の方法。
  17. 第1のAESラウンドの鍵および入力がレジスタファイルに格納されている、請求項10に記載の方法。
  18. 前記レジスタファイルは複数の128ビットレジスタを含む、請求項17に記載の方法。
  19. 関連情報を有する機械アクセス可能な媒体を含む物品であって、前記情報はアクセスされると機械に、
    AES命令のプログラム可能なAESラウンドの数が1より大きい場合、鍵を一時的鍵レジスタにロードさせ、各AESラウンドを行う前に、前記鍵に基づいて前記AESラウンドのラウンド鍵を生成させ、
    各AESラウンドにおいて、前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて、次のAESラウンドの次の入力または前記AES命令の結果を提供させる、物品。
  20. 前記AESラウンドの数が1に等しい場合、前記一連のAESラウンド演算を行う前に、前記鍵に基づいて前記AESラウンドについて予め計算されたラウンド鍵がロードされる、請求項19に記載の物品。
  21. データおよび命令を格納するダイナミックランダムアクセスメモリと、
    前記メモリに連結されて前記命令を実行するプロセッサと、を備えるシステムであって、
    前記プロセッサは、
    AES命令の一連の演算を行う実行部を備え、
    前記一連の演算は、プラグラム可能な数のAESラウンドを行い、
    前記演算は前記実行部に、
    前記AESラウンドの数が1より大きい場合、鍵を一時的鍵レジスタにロードさせ、
    各AESラウンドを行う前に、前記鍵に基づいて前記AESラウンドのラウンド鍵を生成させ、
    各AESラウンドにおいて、前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて、次のAESラウンドの次の入力または前記AES命令の結果を提供させる、システム。
  22. 前記AESラウンドの数が1に等しい場合、前記一連のAESラウンド演算を行う前に、前記実行部は、前記鍵に基づいて前記AESラウンドについて予め計算されたラウンド鍵をロードする、請求項21に記載のシステム。
JP2012226077A 2007-03-28 2012-10-11 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令 Pending JP2013057946A (ja)

Applications Claiming Priority (2)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009552935A Division JP2010520517A (ja) 2007-03-28 2008-03-25 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013222466A Division JP5715218B2 (ja) 2007-03-28 2013-10-25 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令

Publications (1)

Publication Number Publication Date
JP2013057946A true JP2013057946A (ja) 2013-03-28

Family

ID=39794399

Family Applications (6)

Application Number Title Priority Date Filing Date
JP2009552935A Pending JP2010520517A (ja) 2007-03-28 2008-03-25 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2012226077A Pending JP2013057946A (ja) 2007-03-28 2012-10-11 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2013222466A Active JP5715218B2 (ja) 2007-03-28 2013-10-25 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2015012125A Pending JP2015096976A (ja) 2007-03-28 2015-01-26 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2015049638A Pending JP2015108853A (ja) 2007-03-28 2015-03-12 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2017001149A Active JP6592804B2 (ja) 2007-03-28 2017-01-06 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009552935A Pending JP2010520517A (ja) 2007-03-28 2008-03-25 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令

Family Applications After (4)

Application Number Title Priority Date Filing Date
JP2013222466A Active JP5715218B2 (ja) 2007-03-28 2013-10-25 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2015012125A Pending JP2015096976A (ja) 2007-03-28 2015-01-26 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2015049638A Pending JP2015108853A (ja) 2007-03-28 2015-03-12 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
JP2017001149A Active JP6592804B2 (ja) 2007-03-28 2017-01-06 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令

Country Status (8)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality

Families Citing this family (59)

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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080159526A1 (en) * 2006-12-28 2008-07-03 Shay Gueron Architecture and instruction set for implementing advanced encryption standard (AES)
US20080240426A1 (en) * 2007-03-28 2008-10-02 Shay Gueron Flexible architecture and instruction for advanced encryption standard (AES)

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1496421A (en) 1922-04-01 1924-06-03 Koranicki Johann Animal trap
US1519509A (en) 1923-09-06 1924-12-16 Brown Co System for and method of producing sulphate and sulphite pulp
US1596530A (en) 1925-05-09 1926-08-17 Newport Co Anthracene dye and a process of manufacture
US1677921A (en) 1925-07-16 1928-07-24 Jules K Johnson Vacuum cleaner
US2447563A (en) 1947-04-11 1948-08-24 Sutherland Paper Co Collapsible covered container or box
US4641238A (en) 1984-12-10 1987-02-03 Itt Corporation Multiprocessor system employing dynamically programmable processing elements controlled by a master processor
US5781758A (en) 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US6118870A (en) 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US7277540B1 (en) 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US6324288B1 (en) 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
US6738845B1 (en) 1999-11-05 2004-05-18 Analog Devices, Inc. Bus architecture and shared bus arbitration method for a communication device
US7371397B2 (en) 2000-01-18 2008-05-13 Albemarle Corporation Methods for microbiological control in aqueous systems
US20020108059A1 (en) 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
KR100366790B1 (ko) 2000-08-26 2003-01-09 엘지전자 주식회사 동기식 전송장치의 계위단위 스위치
KR100525389B1 (ko) 2001-01-17 2005-11-02 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치
US6937727B2 (en) 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
JP3851115B2 (ja) 2001-06-28 2006-11-29 富士通株式会社 暗号回路
DE60143275D1 (de) 2001-08-20 2010-11-25 Infineon Technologies Ag Vorrichtung und Verfahren zur Durchführung eines kryptographischen Algorithmus
US7203310B2 (en) 2001-12-04 2007-04-10 Microsoft Corporation Methods and systems for cryptographically protecting secure content
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
US7240084B2 (en) 2002-05-01 2007-07-03 Sun Microsystems, Inc. Generic implementations of elliptic curve cryptography using partial reduction
US6963991B2 (en) 2002-05-31 2005-11-08 Intel Corporation Synchronizing and aligning differing clock domains
GB0214620D0 (en) * 2002-06-25 2002-08-07 Koninkl Philips Electronics Nv Round key generation for AES rijndael block cipher
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
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7539876B2 (en) 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
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
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7536560B2 (en) * 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
CN1788450A (zh) * 2003-05-14 2006-06-14 皇家飞利浦电子股份有限公司 列混合函数的小型硬件实现
US7472285B2 (en) 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
WO2005006191A1 (ja) * 2003-07-10 2005-01-20 Fujitsu Limited 複数種類の情報を登録する装置および方法
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
TWI244299B (en) 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
KR100800468B1 (ko) 2004-01-29 2008-02-01 삼성전자주식회사 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN1677921A (zh) 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
TWI268686B (en) 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US20050251662A1 (en) 2004-04-22 2005-11-10 Samra Nicholas G Secondary register file mechanism for virtual multithreading
US7561689B2 (en) * 2004-06-17 2009-07-14 Agere Systems Inc. Generating keys having one of a number of key sizes
US7496196B2 (en) 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
JP2006041118A (ja) * 2004-07-26 2006-02-09 Toshiba Corp 半導体装置及びその製造方法
US20060023875A1 (en) 2004-07-30 2006-02-02 Graunke Gary L Enhanced stream cipher combining function
US7620821B1 (en) 2004-09-13 2009-11-17 Sun Microsystems, Inc. Processor including general-purpose and cryptographic functionality in which cryptographic operations are visible to user-specified software
US8005209B2 (en) 2005-01-06 2011-08-23 Polytechnic University Invariance based concurrent error detection for the advanced encryption standard
US20060194386A1 (en) * 2005-02-25 2006-08-31 Dell Products L.P. Method and apparatus for supporting port aggregation of serial attached SCSI wide ports via virtual ports
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
CN1761185B (zh) * 2005-11-18 2011-08-17 清华大学 乱序执行的数据流aes加密电路结构
US7649992B2 (en) * 2006-01-06 2010-01-19 Fujitsu Limited Apparatuses for encoding, decoding, and authenticating data in cipher block chaining messaging authentication code
US7610537B2 (en) 2006-04-04 2009-10-27 International Business Machines Corporation Method and apparatus for testing multi-core microprocessors
US8074017B2 (en) 2006-08-11 2011-12-06 Intel Corporation On-disk caching for raid systems
US8301905B2 (en) 2006-09-08 2012-10-30 Inside Secure System and method for encrypting data
US8538012B2 (en) 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US8781110B2 (en) 2007-06-30 2014-07-15 Intel Corporation Unified system architecture for elliptic-curve cryptography
US7930519B2 (en) 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080159526A1 (en) * 2006-12-28 2008-07-03 Shay Gueron Architecture and instruction set for implementing advanced encryption standard (AES)
US20080240426A1 (en) * 2007-03-28 2008-10-02 Shay Gueron Flexible architecture and instruction for advanced encryption standard (AES)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
CN112532376B (zh) 用于高级加密标准(aes)的灵活结构和指令

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130605

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131028

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131120

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20140131