JP2009211071A - 一連の変換を行って一変換を分離する命令を含む命令の組合せ - Google Patents

一連の変換を行って一変換を分離する命令を含む命令の組合せ Download PDF

Info

Publication number
JP2009211071A
JP2009211071A JP2009045094A JP2009045094A JP2009211071A JP 2009211071 A JP2009211071 A JP 2009211071A JP 2009045094 A JP2009045094 A JP 2009045094A JP 2009045094 A JP2009045094 A JP 2009045094A JP 2009211071 A JP2009211071 A JP 2009211071A
Authority
JP
Japan
Prior art keywords
instruction
instructions
transformation
conversion
round
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.)
Granted
Application number
JP2009045094A
Other languages
English (en)
Other versions
JP5538736B2 (ja
Inventor
Shay Gueron
グエロン シャイ
Zeev Sperber
スペルベル ゼーヴ
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 JP2009211071A publication Critical patent/JP2009211071A/ja
Application granted granted Critical
Publication of JP5538736B2 publication Critical patent/JP5538736B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)

Abstract

【課題】高度暗号化標準(AES)は、情報を暗号化し、復号することが可能な対称ブロック暗号である。
【解決手段】暗号化(暗号)は、秘密鍵(暗号鍵)を使用して一連の変換(ShiftRows、SubstituteBytes、MixColumns)を行って、「平文」として表す理解できるデータを、「暗号文」として表す理解できない形式に変換する。逆暗号(復号)における変換(InverseShiftRows、InverseSubstituteBytes、InverseMixColumns)は、暗号における変換の逆である。暗号化及び復号は、一連の変換を行う命令の使用によって効率的に行われる。前述の命令の組合せは、変換(ShiftRows、SubstituteBytes、MixColumns、InverseShiftRows、InverseSubstituteBytes、InverseMixColumns)の分離を得ることを可能にする。
【選択図】図1

Description

本明細書は、高度暗号化標準(AES)に関し、特に、AESの一連の変換の部分集合を行ってAES変換のうちの1つの結果を提供する命令を含む命令の組合せの使用に関する。
暗号は、情報を保護するための鍵及びアルゴリズムに依存するツールである。アルゴリズムは、高度な数学的アルゴリズムであり、鍵はビット列である。暗号システムには2つの基本タイプ(すなわち、秘密鍵システム及び公開鍵システム)がある。対称システムとしても表す秘密鍵システムは、二以上の者によって共有される単一の鍵(「秘密鍵」)を有する。単一の鍵を使用して情報を暗号化し、復号する。
国立標準技術研究所(NIST)により、連邦情報処理標準(FIPS)197として公表されている高度暗号化標準(AES)は、秘密鍵システムである。AESは、情報を暗号化し、復号することが可能な対称ブロック暗号である。
暗号化(暗号)は、秘密鍵(暗号鍵)を使用して一連の変換を行って、「平文」として表す、理解できるデータを、「暗号文」として表す、理解できない形式に変換する。暗号における変換には、(1)排他的OR(XOR)演算を使用して、ラウンド鍵(暗号鍵から導き出された値)を状態(2次元のバイト・アレイ)に加算する工程、(2)非線形バイト置換テーブル(S−ボックス)を使用して状態を処理する工程、(3)別々のオフセットだけ、状態の最後の3行を巡回シフトさせる工程、及び(4)状態の列全てを用い、そのデータを(互いに無関係に)混ぜて、新たな列を生成する工程が含まれる。
復号(逆暗号)は、暗号鍵を使用して一連の変換を行って、「暗号文」ブロックを、同じ容量の「平文」ブロックに変換する。逆暗号における変換は、暗号における変換の逆である。
ラインダール・アルゴリズムは、128、192及び256ビットの長さの暗号鍵を使用して、128ビットのデータ・ブロックを処理するために、AES標準において規定されている。上記別々の鍵の長さは通常、AES−128、AES−192及びAES−256として表される。
AESアルゴリズムは、10、12、又は14の連続ラウンドにおいて、平文を暗号文に、又は暗号文を平文に変換する。ラウンド数は鍵の長さに依存する。
以下の詳細な説明は、特許請求の範囲記載の主題を例証する実施例を参照して行うが、その多くの代替、修正及び変形は当業者には明らかになるだろう。よって、特許請求の範囲記載の主題が、広く捉えられ、特許請求の範囲においてのみ規定されることが意図されている。
汎用プロセッサにおいてAES暗号及び復号を行うための命令を含むシステムを示すブロック図である。 図1に示すプロセッサの実施例を示すブロック図である。 AESアルゴリズムにおけるMixColumns変換を分離するために少なくとも1つのAESラウンド命令を使用したMixColumn分離変換関数の実施例を示すフロー図である。 AESアルゴリズムにおけるInverseMixColumns変換を分離するために少なくとも1つのAESラウンド命令を使用したInverseMixColumn分離変換関数の実施例を示すフロー図である。 ShiftRows変換及びInverseShiftRows変換を分離するためにパックト・シャフル・バイト(PSHUFB)の使用を示す図である。 AESアルゴリズムにおけるSubstituteBytes変換を分離するために少なくとも1つのAESラウンド命令を使用したSubstituteBytes分離変換関数の実施例を示すフロー図である。 AESアルゴリズムにおけるInverseSubstituteBytes変換を分離するために少なくとも1つのAESラウンド命令を使用したInverseSubstituteBytes分離変換関数の実施例を示すフロー図である。
特許請求の範囲記載の主題の実施例の構成は、以下の詳細の説明が進むにつれて、かつ、図面を参照すると明らかになるであろう。図面では、同じ符号は同じ部分を表す。
国立標準技術研究所(NIST)により、連邦情報処理標準(FIPS)197として公表されている高度暗号化標準(AES)アルゴリズムは、通常、ソフトウェアにおいて、又は専用プロセッサにおいて行われるコンピュータ集約型アルゴリズムである。AESアルゴリズムは、ソフトウェアにおいて、メモリに記憶された、中央処理装置(CPU)のロード/ストア/インクリメント命令シーケンスを実行することによって行われる。平文又は暗号文の各バイトを変換するためにAESアルゴリズムは多くのCPUサイクルを消費するので、変換は低速である。よって、暗号化は、通常、コンピュータに記憶された情報の部分集合(例えば、「極秘」として分類され得る情報)の暗号化にのみ使用される。しかし、コンピュータ上に記憶された情報のより多くを暗号化する必要性が存在している。例えば、モバイル・コンピュータ上に記憶された情報全てが暗号化されている場合、この情報は、モバイル・コンピュータが盗まれた場合にも保護される。
AESは、鍵容量が128、192又は256バイトの128ビット・ブロックを処理するブロック暗号である。AESアルゴリズムは、10、12又は14の連続ラウンドにおいて、128ビットの平文ブロックを128ビットの暗号ブロックに変換する(暗号化する)か、又は128ビットの暗号文ブロックを128ビットの平文ブロックに変換する(復号する)。ラウンド数は鍵容量(128ビット、192ビット又は256ビット)に依存する。変換シーケンス(サブ工程)は、(10、12、又は14の)ラウンド毎に繰り返される。
暗号化ラウンドの変換シーケンスには以下が含まれる。
(1)AddRoundKey変換:ラウンド鍵(暗号鍵から導き出される値)が、排他的OR(XOR)演算を使用して状態(2次元の128ビット・バイト・アレイ)に加えられる。AddRoundKeyは、(128ビット, 128ビット)→128ビット変換であり、これは、その2つの引数の、ビット単位の排他的OR(XOR)として定義される。AESフローでは、引数はState及びラウンド鍵である。
(2)SubBytes変換:状態は、非線形バイト置換テーブル(S−Box)を使用して処理される。SubBytesは、入力の16バイトそれぞれにS−Box変換を施すことによって規定される、16バイトから16バイトへの(バイト単位の)変換である。S−Box変換は、ルックアップ・テーブルにより、以下のように表すことが可能である。すなわち、ルックアップ・テーブルへの入力は、バイトB[7:0]であり、ここで、x及びyは、低ニブル及び高ニブルx([3:0]=B[7:4],y[3:0]=B[3:0])を表す。出力バイトは、テーブルにおいて16進(H)表記で2桁の数としてコード化される。例えば、入力85Hは97Hをもたらす。
(3)ShiftRows変換:状態の最後の3行は、別々のオフセットによって巡回シフトされる。ShiftRowsは、(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)→(11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10, 5, 0)への、バイト単位の置換である。上記変換は、状態の4×4マトリクス表現に対する処理として捉えられる。4×4マトリクスにおける第1の行は変わらない。第2の行は、1バイト位置だけ、左回転させる。第3の行は、2バイト位置だけ、左回転させる。第4の行は、3バイト位置だけ、左回転させる。
(4)MixColumns変換:状態の列全てからのデータを(互いに無関係に)混ぜて、新たな列を生成する。MixColumnsは、入力の4x4マトリクス表現の列を処理する、128ビット→128ビット変換である。上記変換は、各列を、AES−ガロア・フィールド256における係数を備えた3次多項式として扱う。状態の4×4マトリクス表現の各列は、多項式a(x)={03}x+{01}x+{01}x+{02}で乗算され、modulo x+1で約分される。
上記暗号化ラウンドの変換シーケンスは、以下に表1として示すように単一のAES暗号化ラウンド命令AESENCによって行うことができ、最後の暗号化ラウンドの変換シーケンスは、以下に表2として示すように単一のAESの最後の暗号化ラウンド命令AESENCLASTによって行うことができる。
AESENC xmm1,xmm2/m128
State=xmm1、
RoundKey=xmm2/m128、
Tmp=ShiftRows(State)、
Tmp=SubstituteBytes(Tmp)、
Tmp=MixColumns(Tmp)、
Output=xmm1=Add RoundKey(Tmp,Round Key)
表1
AESENCLAST xmm1,xmm2/m128
State=xmm1、
RoundKey=xmm2/m128、
Tmp=ShiftRows(State)、
Tmp=Substitute Bytes(Tmp)、
Output=xmm1=AddRoundKey(Tmp,RoundKey)
表2
表1及び表2に示すAESENC命令及びAESENCLAST命令は、状態(xmmレジスタに規定された128ビット)、RoundKey(xmmレジスタにおいて、又はメモリ・ポインタとして規定された128ビット)、又は鍵(xmmレジスタ及び/又はメモリに規定された128、192又は256ビット)に対する特定の変換シーケンスを行う。前述の命令は128ビット出力を生成する。128ビット→128ビットの対応する変換シーケンスを、FIPSパブリケーション197の用語を使用して説明する。
上記表1及び表2に示すAES命令(AESENC,AESENCLAST)は、FIPSパブリケーション197によって規定されているように、128ビット変数(temp)(状態としても表される)に格納されたデータをシリアル処理する。N個のデータ・ブロックを処理するためのシリアル動作シーケンスの例を以下に、表3に示す。
For i from 1 to N_BLOCKS do
xmm1=BLOCK[i]//load
xmm1=AESENC(xmm1,RK[1])
xmm1=AESENC(xmm1,RK[2])
xmm1=AESENC(xmm1,RK[3])

xmm1=AESENC(xmm1,RK[9])
xmm1=AESENCLAST(xmm1,RK[10])
store xmm1
End
表3
暗号化する対象のN_Blocks毎に、データ・ブロックがレジスタに格納される。例えば、128ビットを有するxmmレジスタ(xmm1)を使用して128ビット・ブロックを格納することができる。10の暗号化ラウンドをデータ・ブロックに対して直列に行う。10ラウンドのAES処理のうちのラウンド1乃至9については、AESENC命令を呼び出して、ラウンド鍵、及び先行ラウンドの結果、又は(ラウンド1の場合)初期ブロック・データを使用してラウンド処理を行う。AESENCLAST命令を呼び出して、最終ラウンド(この例では、ラウンド10)を処理する。
復号ラウンドの変換シーケンスは、
(1)AddRoundKey変換:ラウンド鍵(暗号鍵から導き出される値)が、排他的OR(XOR)演算を使用して状態(2次元の128ビット・バイト・アレイ)に加えられる。AddRoundKeyは、(128ビット,128ビット)→128ビット変換であり、これは、その2つの引数の、ビット単位のXORとして定義される。AESフローでは、引数は状態及びラウンド鍵である。
(2)InverseSubstituteBytes(SubBytes)変換:状態は、逆非線形バイト置換テーブル(S−Box)を使用して処理される。InverseSubstituteBytesは、入力の各バイトにInvS−Box関数を施すことによって規定される16バイト→16バイト(バイト単位)変換(すなわち、[P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A]→[InvS−Box (P), InvS−Box (O), InvS−Box (N), InvS−Box (M), InvS−Box (L), InvS−Box (K), InvS−Box (J), InvS−Box (I), InvS−Box (H), InvS−Box (G), InvS−Box (F), InvS−Box (E), InvS−Box (D), InvS−Box (C), InvS−Box (B), InvS−Box (A)]である)。
(3)InverseShiftRows変換 この変換は、ShiftRows変換の逆である。InverseShiftRows変換は、(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)→(3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0)の、バイト単位の置換である。P−A表記では、[P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A]→[D,G,J,M,P,C,F,I,L,O,B,E,H,K,N,A]となる。
(4)InverseMixColumns変換は、入力の4×4マトリクス表現の列を処理する128ビット→128ビット変換である。変換は4×4マトリクス内の各列を、AES―GF256フィールド内の係数を備えた3次多項式として扱う。状態の4×4マトリクス表現の各列は、多項式a−1(x)={0b}x+{0d}x+{09}x+{0e}で乗算され、modulo x+1で約分される。
上記復号ラウンドの変換シーケンスは、以下に表4として示すように単一のAES復号ラウンド命令AESDECによって行うことができ、最後の復号ラウンドの変換シーケンスは、以下に表5として示すように単一のAESの最後の復号ラウンド命令AESDECCLASTによって行うことができる。
以下表4及び表5に示すAESDEC命令及びAESDECLAST命令は、State(xmmレジスタに規定された128ビット)、及びRoundKey(xmmレジスタにおいて、又はメモリ・ポインタとして規定された128ビット)、又は鍵(xmmレジスタ及び/又はメモリに規定された128、192又は256ビット)に対する特定の変換シーケンスを行う。前述の命令は128ビット出力を生成する。128ビット→128ビットの対応する変換シーケンスを、FIPSパブリケーション197の用語を使用して説明する。
AESDEC xmm1,xmm2/m128
State=xmm1、
RoundKey=xmm2/m128、
Tmp=InverseShiftRows(State)、
Tmp=InverseSubstituteBytes(Tmp)、
Tmp=InverseMixColumns(Tmp=)、
Output=xmm1=AddRoundKey(Tmp=,RoundKey)
表4
AESDECLAST xmm1,xmm2/m128
State=xmm1、
RoundKey=xmm2/m128、
Tmp=InverseShiftRows(State)、
Tmp=InverseSubstituteBytes(Tmp)、
Output=xmm1=AddRoundKey(Tmp,RoundKey)
表5
表1、2、4及び5に示す4つのAESラウンド命令(AESENC,AESNECLAST,AESDEC,AESDECLAST)はそれぞれ、いくつかのAES変換を併せて行うことによって性能を向上させる。しかし、上記命令は、AES標準の現行バージョンのみをサポートする。
本発明の実施例は、分離された変換としてAESアルゴリズムのサブ工程(変換)を得るためのAES暗号化命令及びAES復号命令を含む、命令の組合せを使用する。分離された変換には、暗号化AES命令(AESENC,AESENCLAST)によって使用されるShiftRows、SubstituteBytes及びMixColumns変換、並びに復号AES命令(AESDEC,AESDECLAST)によって使用されるInverseShiftRows、InverseSubstituteBytes及びInverseMixColumns変換が含まれる。
変換を分離させるための機能は、AES暗号化命令及びAES復号命令の使用に柔軟性を加える。例えば、AESアルゴリズムのサブ工程(変換)を得るための機能は、AESの変形を構成することを可能にし、サポートする対象のAES標準において考えられる将来の修正を可能にする。AESプリミティブ(変換)を他の暗号及び暗号ハッシュ関数の構築ブロックとして使用することも可能にする。
図1は、汎用プロセッサにおいてAES暗号化及び復号を行うための命令を含むシステム100を示すブロック図である。システム100は、プロセッサ101と、メモリ・コントローラ・ハブ(MCH)又はグラフィック・メモリ・コントローラ・ハブ(GMCH)102と、入出力(I/O)コントローラ・ハブ(ICH)104とを含む。MCH102は、プロセッサ101とメモリ108との間の通信を制御するメモリ・コントローラ106を含む。プロセッサ101及びMCH102はシステム・バス116を介して通信する。
プロセッサ101は、複数のプロセッサ(単一コアのインテル(登録商標)ペンティアム(登録商標)IVプロセッサ、単一コアのインテル・セレロン・プロセッサ、インテル(登録商標)XScaleプロセッサや、マルチコア・プロセッサ、例えば、インテル(登録商標)ペンティアム(登録商標)D、インテル(登録商標)ジーオン(登録商標)プロセッサや、インテル(登録商標)コア(登録商標)デュオ・プロセッサ、又は何れかの他のタイプのプロセッサ)のうちの何れか1つであり得る。
メモリ108は、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、同期化ダイナミック・ランダム・アクセス・メモリ(SDRAM)、ダブル・データ・レート2(DDR2RAM)若しくはランバス・ダイナミック・ランダム・アクセス・メモリ(RDRAM)、又は何れかの他のタイプのメモリであり得る。
ICH104は、ダイレクト・メディア・インタフェース(DMI)などの高速チップ間相互接続114を使用してMCH102に結合することができる。DMIは、2つの一方向レーンを介した2ギガビット/秒の同時転送レートをサポートする。
ICH104は、ICH104に結合された少なくとも1つの記憶装置112との通信を制御するために記憶I/Oコントローラ110を含み得る。記憶装置は例えば、ディスク・ドライブ、ディジタル・ビデオ・ディスク(DVD)ドライブ、コンパクト・ディスク(CD)ドライブ、レイド(RAID)、テープ・ドライブや他の記憶装置であり得る。ICH104は、例えば、直列に接続された小型コンピュータ・システム・インタフェース(SAS)やシリアル・アドバンスド・テクノロジー・アタッチメント(SATA)などの直列記憶プロトコルを使用して記憶プロトコル相互接続118を介して記憶装置112と通信することができる。
プロセッサ101は、AES暗号化処理及びAES復号処理を行うためのAES機能103を含む。AES機能103を使用して、メモリ108に記憶し、かつ/又は記憶装置112に記憶することができる情報を暗号化又は復号することができる。
メモリ108又は記憶装置112に記憶することができる変換分離機能120は、AES機能103を使用して、AES暗号命令又はAES復号命令における変換のうちの1つを分離することができる。変換分離機能120は後に、図3乃至図7に関して説明する。
図2は、図1に示すプロセッサ101の実施例のブロック図である。プロセッサ101は、レベル1(L1)命令キャッシュ202から受信されたプロセッサ命令をデコードするためのフェッチ及びデコード装置206を含む。プロセッサ命令を実行するために使用する対象のデータは、レジスタ・ファイル208に記憶することができる。一実施例では、レジスタ・ファイル208は、AESラウンド命令によって使用するためのデータを記憶するためのAESラウンド命令によって使用される複数の128ビット・レジスタを含む。
一実施例では、レジスタ・ファイル208は、ストリーミング(単一命令多重データ(SIMD))拡張(SSE)命令セットを有するインテル・ペンティアム(登録商標)MMXプロセッサに設けられた128ビットMMXレジスタと同様な128ビット・レジスタの群である。SIMDプロセッサでは、データは、一度に、一128ビット・ブロックがロードされて、128ビット・ブロック単位で処理される。
フェッチ及びデコード装置206は、L1命令キャッシュ202からマクロ命令をフェッチし、マクロ命令をデコードし、マイクロ操作(μops)と呼ばれる単純な操作(マイクロコード・リード・オンリー・メモリ(ROM)214に記憶することができる)に分割する。パイプラインされた実行装置210は、マイクロ操作をスケジューリングし、実行する。図示された実施例では、実行装置210におけるAES機能103は、AES暗号化/復号ラウンド命令を含むAESラウンド命令の組のマイクロ操作を含む。AESラウンド命令は、完全にパイプラインされており、よって、プロセッサ(CPU)は、処理する準備ができているデータが存在している場合、各サイクルにおいて命令をディスパッチすることができる。退避装置212は、実行された命令の結果をレジスタ又はメモリに書き込む。AESラウンド命令によって使用されるラウンド鍵216は、L1データ・キャッシュ204に記憶し、AES暗号化/復号ラウンド命令のうちの1つの何れかを実行するためにマイクロ操作によって使用するために実行装置210にロードすることができる。L1データ・キャッシュ204にラウンド鍵216を記憶することにより、サイドチャネル攻撃(例えば、システム100に記憶された暗号化情報に対するアクセスを得るためにラウンド鍵を得ようとする試行)からラウンド鍵216を保護する。
AESラウンド命令がフェッチ及びデコード装置206によってデコードされた後、実行装置210によるAESラウンド命令の実行は、マイクロコードROM214に記憶することができるAESラウンド命令に関連付けられたマイクロ操作を行うことを伴う。
一実施例では、暗号化ラウンド、復号ラウンド、暗号化最終ラウンド、及び復号最終ラウンドを行うための別個のAESラウンド命令セットを含むAESラウンド命令セットが提供される。一実施例では、AESラウンド命令はそれぞれ、一意の操作コード(opcode)を有する。
表1、表2、表4及び表5に関して既に記載したように、AES命令セットは、4つのAESラウンド命令(暗号化、復号、暗号化最終ラウンド、及び復号最終ラウンド)を含む。AES命令セットにおけるAESラウンド命令は、最終ラウンド以外のラウンド全てに使用する対象の暗号化及び復号ラウンド動作を行うための単一ラウンド動作を含む。
例えば、表1に示すAESENC単一ラウンド命令では、入力データは128ビット・レジスタ(xmmsrcdst)に記憶され、ラウンド鍵は、別の128ビット・レジスタ(Xmm)に記憶される。この命令は、128ビットのxmmsrcdstレジスタに記憶された入力データ(ソース)にAESラウンド処理を行い、128ビットのxmmsrcdstレジスタに記憶された入力データを上記ラウンド処理の実行の結果で上書きする。よって、xmmsrcdstはまず、入力データを記憶し、その後、AESラウンド処理の結果を記憶する。
例えば、表2に示すAESENCLAST単一ラウンド命令では、入力データは128ビット・レジスタ(xmmsrcdst)に記憶され、ラウンド鍵は、別の128ビット・レジスタ(Xmm)に記憶される。この命令は、xmmsrcdstレジスタに記憶された入力データ(ソース)にAESラウンド処理を行い、xmmsrcdstレジスタに記憶された入力データを上記ラウンド処理の実行の結果で上書きする。よって、xmmsrcdstはまず、入力データを記憶し、その後、上記ラウンド処理の結果を記憶する。Xmmレジスタは、ラウンド処理のラウンド鍵を記憶する。
鍵の容量は、128ビット、192ビット、又は256ビットであり得る。実行する対象のラウンドの数(n)は、鍵の容量に応じて、1、10、12又は14であり得る。各ラウンド鍵の容量は固定(128ビット)である。ラウンド数の値が10、12、14の場合、AESマイクロ操作は、128ビット、192ビット又は256ビットの鍵容量について、標準AES暗号化及び復号を行うことができる。
同じ鍵が多くのブロックにわたって使用される場合、ラウンド毎のラウンド鍵(鍵スケジュール)を、予め計算し、メモリに(例えば、ラウンド鍵216をレベル1データ・キャッシュ204に)記憶することができる。ラウンド鍵216は、鍵の鍵スケジュールを記憶するための10個の要素を有するアレイ(RK)を含み得る。AES−128暗号化の入力鍵はRK[0]に記憶され、9個のラウンド鍵RK[0] − RK[1]は予め計算される。
一実施例では、レジスタ・ファイル304は、AES命令によって使用することができる複数の128ビット・レジスタを有する。128ビット・レジスタは、ソース・オペランド、ラウンド鍵、及びAES命令の結果を記憶することができる。第1のラウンドの場合、AES命令は、暗号化する対象の128ビットの平文、又は復号する対象の128ビットの暗号文であり得るソース・オペランドを受け取る。
本発明の一実施例では、上述のAES命令の組(AESINC,AESDEC,AESENCLAST,AESDECLAST)を使用して、FIPS197によって規定されるAESアルゴリズムのサブ工程(変換)を分離することができる。サブ工程は、ShiftRows、SubstituteBytes、MixColumns、InverseShiftRows、InverseSubstituteBytes及びInverseMixColumnsである。
6つのサブ工程(変換)は128ビットの状態を処理し、128ビットの結果をもたらす。「逆」変換は、当該変換の対応する逆関数である。例えば、Tmp=SubstituteBytes(State)の場合、InverseSubstituteBytes(Tmp)=Stateである。AddRoundKey変換は2つの128ビット入力(State及びRoundKey)を処理し、そのビット単位のXORを出力する。
図3は、AESアルゴリズムにおけるMixColumns変換を分離するために少なくとも1つのAESラウンド命令を使用したMixColumn分離変換関数300の実施例のフロー図である。
MixColumns変換のマイクロ操作は、表1に示すAESENC命令にのみ使用される。AESDEC命令は、AESENC命令における変換に対する逆変換を含む。
ブロック302では、MixColumns変換の分離関数は、現在の状態、及び0にセットされたラウンド鍵により、AESDECLAST命令を呼び出す。AESDECLASTは、以下に表6に示すマイクロ操作を行う。
Tmp=InverseShiftRows(State)、
Tmp=InverseSubstituteBytes(Tmp)、
Tmp=AddRoundKey(Tmp,RoundKey)
表6
まず、InverseShiftRows変換がStateに対して行われ、上記変換の結果がTmpに記憶される。次いで、InverseSubstituteBytes変換がTmpの内容に対して行われ、その結果がTmpに記憶される。最後に、AddRoundKey変換が、Tmpの内容、及び0にセットされたRoundKeyに対して行われる。排他的OR演算がTmpの内容、及び0に対して行われ、その結果はTmpの内容になるので、AddRoundKeyマイクロ操作は基本的には、NOP(無演算)である。AESENCLAST命令の出力Xは次いで、AESENC命令に対する入力として供給される。
ブロック304では、AESENC命令は、AESDECLAST命令の結果(X)を受け取る。結果Xは、InverseSubstituteBytes(InverseShiftRows(State))、すなわち、2つの変換の結果:Stateに対するInverseSubstituteBytes及びInverseShiftRowsである。AESINC命令に対する入力は、AESDECLAST命令の結果、及び0にセットされたラウンド鍵である。AESENC命令は、以下、表7に示すマイクロ操作を行う。
Tmp1=ShiftRows(X)
Tmp1=SubstituteBytes(Tmp1)
Tmp1=MixColumns(Tmp1)
Tmp1=AddRoundKey(Tmp1,RoundKey)
表7
まず、ShiftRows変換が入力Xに対して行われ、上記変換の結果がTmpに記憶される。次いで、SubstituteBytes変換がTmpの内容に対して行われ、その結果がTmpに記憶される。次いで、MixColumns変換がTmpの内容に対して行われる。最後に、AddRoundKey変換がTmpの内容に対して行われ、RoundKeyが0にセットされる。排他的OR演算がTmpの内容、及び0に対して行われ、その結果はTmpの内容になるので、AddRoundKeyマイクロ操作は基本的にはNOP(無演算)である。AESENCLAST命令及びAESENC命令の組合せにより、MixColumns変換が分離する。AddRoundKeyマイクロ操作はNOPを行い、その他のマイクロ操作(ShiftRows、SubstituteBytes)は、逆マイクロ操作(InverseShiftRows、InverseSubstituteBytes)を行うことによって交換するからである。
よって、AESENC命令の出力は、MixColumns(State)であり、これは、以下に示すようにAESDECLAST命令及びAESENC命令の組合せを使用して分離される。
Y=InverseMixColumns(InverseSubstituteBytes(InverseShiftRows(SubstituteBytes(ShiftRows(State))))
図4は、AESアルゴリズムにおけるInverseMixColumns変換を分離するために少なくとも1つのAESラウンド命令を使用したInverseMixColumn分離変換関数400の実施例のフロー図である。
InverseMixColumns変換のマイクロ操作は、表2に示すAESENCLAST命令にのみ使用される。AESDEC命令は、AESENC命令における変換に対する逆変換を含む。
ブロック402では、InverseMixColumns変換の分離関数400における第1の命令はAESDECLAST命令である。これは、ラウンド鍵を0にセットして呼び出す。AESDECLAST命令は、以下に表8に示すマイクロ操作を行う。
Tmp=ShiftRows(State)、
Tmp=SubstituteBytes(Tmp)、
Tmp=AddRoundKey(Tmp,RoundKey)
表8
まず、ShiftRows変換をStateに対して行って、上記変換の結果をTmpに記憶する。次いで、SubstituteBytes変換がTmpの内容に対して行われ、その結果がTmpに記憶される。最後に、AddRoundKey変換がTmpの内容に対して行われ、RoundKeyが0にセットされる。排他的OR演算がTmpの内容、及び0に対して行われ、XOR演算の結果がTmpの元の内容になるので、AddRoundKeyマイクロ操作は基本的にはNOP(無演算)である。AESENCLAST命令の出力Xは、AESECC命令に入力される。
ブロック404では、InverseMixColumns変換分離関数における第2の命令は、AESENCLAST命令の結果(x)によって与えられるAESDEC命令である。結果Xは、SubstituteBytes(ShiftRows(State))である、すなわち、状態に対する2つの変換(SubstituteBytes及びShiftRows)の結果である。AESDEC命令に対する入力は、AESDECLAST命令の結果であり、ラウンド鍵は0にセットされる。AESENC命令は、以下、表9に示すマイクロ操作を行う。
Tmp=InverseShiftRows(X)、
Tmp=InverseSubstituteBytes(Tmp)、
Tmp=InverseMixColumns(Tmp)、
Tmp=AddRoundKey(Tmp,RoundKey)
表9
まず、InverseShiftRows変換を入力Xに対して行って、上記変換の結果をTmpに記憶する。次いで、InverseSubstituteBytes変換がTmpの内容に対して行われ、その結果がTmpに記憶される。次いで、InverseMixColumns変換がTmpの内容に対して行われる。最後に、AddRoundKey変換がTmpの内容に対して行われ、RoundKeyが0にセットされる。排他的OR演算がTmpの内容、及び0に対して行われ、その結果がTmpの内容になるので、AddRoundKeyマイクロ操作は基本的には、NOP(無演算)である。
よって、AESENCLAST命令及びAESDEC命令の組合せにより、InverseMixColumns変換が分離する。AddRoundKeyマイクロ操作はNOPを行い、その他のマイクロ操作(ShiftRows、SubstituteBytes)は、逆マイクロ操作(InverseShiftRows、InverseSubstituteBytes)を行うことによって交換するからである。よって、AESDEC命令の出力は、InverseMixColumns(State)であり、これは、以下に示すように、AESENCLAST命令によって行われる変換及びAESDEC命令によって行われる変換を組合せることによって分離される。
Y=InverseMixColumns(InverseSubstituteBytes(InverseShiftRows(SubstituteBytes(ShiftRows(State))))
よって、2つのAESラウンド命令の前述のシーケンスの結果は、分離されたInverseMixColumns変換になる。
図5は、ShiftRows変換及びInverseShiftRows変換を分離するためのパックト・シャフル・バイト(PSHUFB)の使用を示す。状態500は、A乃至Lを付した16バイト(128ビット)を有する。PSHUFB命令は、バイトA及びBという2つのレジスタとして表すことができる2つの128ビット入力である。PSHUFB命令は、バイトA=[a151413 ... a]及びバイトB = [b151413 ... b]という2つのレジスタを用い、レジスタAを[ab15b14b13 ... ab0]で置き換える。bの最上位ビットが1にセットされた場合、結果のi番目のエントリは0である。
図5に示す例では、状態500は、バイトA=[a151413 ... a]に対応する。ShiftRows変換の結果は状態502に示す。ShiftRows変換を行うために、バイトB=[b151413 ... b]は、0B06010C07020D08030E09040F0A0500(16進)にセットされる。状態500のバイト[15:0]は、状態502のビット位置(3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0)に移動する。例えば、「A」を付した状態500のバイト[0]は状態502のバイト[0]に移動し、「L」を付した状態500のバイト[15]は状態502のバイト[11]「B」に移動する。
InverseShiftRows変換は、バイトAを状態502にセットし、バイトBを「0306090C0F0205080B0E0104070A0D00」(16進)にセットして、PSHUSB命令を使用して行われる。状態500のバイト[15:0]は、状態502のビット位置(3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0)に移動する。例えば、「A」を付した状態502のバイト[0]は状態504のバイト[0]に移動し、「L」を付した状態500のバイト[15]は状態504のバイト[3]に移動する。
よって、ShiftRows変換及びInverseShiftRows変換は、Bバイトの選択(すなわち、ShiftRows変換を行うための「0B06010C07020D08030E09040F0A0500」(16進)、及びInverse Shift Rows変換を行うための「0306090C0F0205080B0E0104070A0D00」(16進))に基づいてPSHUFB命令を使用して行うことができる。
図6は、AESアルゴリズムにおけるSubstituteBytes変換を分離するための少なくとも1つのAESラウンド命令を使用したSubstituteBytes分離変換関数の実施例のフロー図である。
SubstituteBytes変換のマイクロ操作は、表2に示すAESENCLAST命令及び表1に示すAESENC命令に使用される。図5に関して説明した実施例では、AESENCLAST命令を使用してSubstituteBytes変換を分離する。
ブロック602では、PSHUFB命令のSubstituteBytes変換の分離関数600を、Bレジスタを0306090C0F0205080B0E0104070A0D00(16進)にセットして呼び出して、状態に対してInverseShiftRowsを行う。図5に関して上述したように、Inverseシフト行変換は、Bレジスタに記憶された対応するバイト位置に基づいて、状態におけるバイトの並び替えを行う。
ブロック604では、Substituteバイト変換分離関数600におけるAESDECLAST命令が、PSHUFB命令の結果(X)によって呼び出される。AESDECLAST命令に対する入力は、PSHUFB命令の結果、及び、0にセットされたラウンド鍵である。AESDECLAST命令は、以下、表10に示すマイクロ操作を行う。
Tmp=ShiftRows(X)、
Tmp=SubstituteBytes(Tmp)、
Tmp=AddRoundKey(Tmp,RoundKey)
表10
まず、ShiftRows変換を入力Xに対して行って、上記変換の結果をTmpに記憶する。次いで、SubstituteBytes変換がTmpの内容に対して行われ、その結果がTmpに記憶される。最後に、AddRoundKey変換がTmpの内容に対して行われ、RoundKeyが0にセットされる。排他的OR演算がTmpの内容、及び0に対して行われ、その結果がTmpの内容になるので、AddRoundKeyマイクロ操作は基本的には、NOP(無演算)である。PSHUFB命令及びAESENCLAST命令の組合せにより、SubstituteBytes変換が分離する。AddRoundKeyマイクロ操作はNOPを行い、その他のマイクロ操作(ShiftRows)は、PSHUFB命令によって逆マイクロ操作(InverseShiftRow)を行うことによって交換されるからである。よって、AESENCLAST命令の出力は、SubstituteBytes(State)であり、これは、以下に示すようにAESENCLAST命令及びPSHUFB命令の組合せを使用して分離される。
Y=SubstituteBytes(ShiftRows(X))=SubstituteBytes(ShiftRows(InverseShiftRows(State)))=SubstituteBytes(State)
よって、1つのAESラウンド命令の前述の命令シーケンスの結果は、分離されたSubstituteBytes変換になる。
別の実施例では、SubstituteBytes変換は以下のAES命令を使用して分離することができる。
AESKEYGENASSIST xmm1,xmm2/m128,imm8
AESKEYGENASSIST命令は、鍵スケジュールのラウンド鍵の生成を支援するために使用され、鍵の容量と無関係に動作し、すなわち、鍵容量が128ビットであるか、192ビットであるか、又は256ビットであるかに関係なく同じ処理が行われる。AESKEYGENASSIST命令は、FIPS197鍵スケジュールを生成するために使用される「temp=SubWord(RotWord(temp)) xor Rcon[i/Nk]」及び「temp=SubWord(temp)」の演算を行う。
しかし、一度に1つの32ビット・ワード(dword)を処理する代わりに、AESKEYGENASSIST命令は、4つの32ビット・ワードに対する処理を一度に(すなわち、4つのdword(128ビット)全てに対する処理を同時に)行い、それにより、ラウンド鍵が生成される速度を増加させる。
AESKEYGENASSIST命令は以下の処理の結果をもたらす。
結果:=
Figure 2009211071
ここで、
X3[31−0]:=Tmp1[127−96]、
X2[31−0]:=Tmp1[95−64]、
X1[31−0]:=Tmp1[63−32]、
X0[31−0]:=Tmp1[31−0]、
RCON[7−0]:=imm8[7]imm8[6]imm8[5]imm8[4]
imm8[3]imm8[2]imm8[1]imm8[0]
RotWord(Rot)は、4バイトの32ビットdwordを用い、巡回置換を行う関数である。Rotwordは、{a0,a1,a2,a3}の順序の、a0乃至a4を付した4バイトのdwordを用い、巡回置換を行って4バイトを{a1,a2,a3,a0}の順序で返す。RotWord関数は、リトルエンディアン表記で規定される。
RotWord X[31−0]=[X[7−0]||X[31−8]]、
すなわち、Rot(x)=(X>>8)|(X<<24)、
例えば、X[31−0]=`3c4fcf09;RotWord(`3c4fcf09`)=[‘09’|`3c4fcf`)=(`093c4fcf)の場合、
S−Box4は、以下のように、4つのdwordに、単一のdwordのS−Box関数を施すことを表す。
S−Box4(X)[31−0])=[S−Box(X[31−24]),S−Box(X[23−16]),S−Box(X[15−8]),S−Box(X[7−0])]。
S−boxは、バイト値の1対1の置換を行うために使用される非線形置換テーブルである。SubWord関数は、4バイト入力(32ビット・ワード(dword))を用い、S−box(バイト置換(SubBytes))をdword内の4バイトそれぞれに施して32ビット出力dwordを生成する。SubWord関数(32ビット)は、4つの独立した(並列の)SubByte処理(8ビット)をもたらす。
よって、置換バイト変換は、直近の入力(imm8)を0にセットしてAESKEYGENASSIST命令を使用し、入力を以下のように、予め並び替えて分離することができる。
AESKEYGENASSIST xmm1,xmm1,imm8
PSHUFB xmm1, mask
AESKEYGENASSIST命令は、rconとのXORの影響を除去し、PSHUFB命令のマスクを選択して、3及び1というダブルワードを元に戻す。
図7は、AESアルゴリズムにおけるInverseSubstituteBytes変換を分離するために少なくとも1つのAESラウンド命令を使用したInverseSubstituteBytes分離変換関数700の実施例のフロー図である。
InverseSubstituteBytes変換のマイクロ操作が、表5に示すAESDECCLAST命令に使用される。図5に関して説明した実施例では、PSHUFB命令を使用してShift Rows変換を分離する。
ブロック702では、PSHUFB命令のSubstituteBytes変換の分離関数600を、Bレジスタを「0B06010C07020D08030E09040F0A0500」にセットして呼び出して状態に対してShiftRowsを行う。図5に関して上述したように、ShiftRows変換は、別のレジスタに記憶された対応するバイト位置に基づいて、第1のレジスタに記憶された状態のバイトの並び替えを行う。
ブロック704では、Substituteバイト変換分離関数700におけるAESDECLAST命令が、PSHUFB命令の結果(X)によって呼び出される。AESDECLAST命令に対する入力は、PSHUFB命令の結果、及び、0にセットされたラウンド鍵である。AESDECLAST命令は、以下、表10に示すマイクロ操作を行う。
Tmp=InverseShiftRows(X)、
Tmp=InverseSubstituteBytes(Tmp)、
Tmp=AddRoundKey(Tmp,RoundKey)
表10
まず、InverseShiftRows変換を入力Xに対して行って、上記変換の結果をTmpに記憶する。次いで、InverseSubstituteBytes変換がTmpの内容に対して行われ、その結果がTmpに記憶される。最後に、AddRoundKey変換がTmpの内容に対して行われ、RoundKeyが0にセットされる。排他的OR演算がTmpの内容、及び0に対して行われ、その結果がTmpの内容になるので、AddRoundKeyマイクロ操作は基本的には、NOP(無演算)である。PSHUFB命令及びAESDECLAST命令の組合せにより、InverseSubstituteBytes変換が分離する。AddRoundKeyマイクロ操作はNOPを行い、その他のマイクロ操作(InverseShiftRows)は、PSHUFB命令によって行われるマイクロ操作(ShiftRow)によって交換されるからである。よって、AESDECLAST命令の出力は、InverseSubstituteBytes(State)であり、これは、以下に示すようにAESDECLAST命令及びPSHUFB命令の組合せを使用して分離される。
Y=InverseSubstituteBytes(InverseShiftRows(X))=InverseSubstituteBytes(InverseShiftRows(ShiftRows(State)))=InverseSubstituteBytes(State)
よって、少なくとも1つのAESラウンド命令を含む前述の命令シーケンスの結果は、分離されたInverseSubstituteBytes変換になる。
上述のようにAESラウンド暗号化/復号命令の特別な組合せを使用することにより、AESラウンド暗号化/復号命令によって行われるAES変換は分離することができる。これは、AES命令の使用に柔軟性を加える。AES命令は例えば、AES変形の構成に使用し、AES標準において考えられる将来の修正をサポートし、かつ/又は、暗号及び暗号ハッシュ関数に対する構築ブロックとしてAESプリミティブを使用するために使用することが可能であるからである。AES命令の組合せによって分離される変換は、デバッグ、検証に、特に、フル・チップ及び認証の目的で使用することができる。
本発明の実施例に関係する方法を、コンピュータ使用可能な媒体を含むコンピュータ・プログラムに実施することができるということは当業者に明らかになるであろう。例えば、前述のコンピュータ使用可能な媒体は、リード・オンリー・メモリ装置、例えば、コンパクト・ディスク・リード・オンリー・メモリ(CDROM)ディスクや従来のROM装置、又はコンピュータ読み取り可能なプログラム・コードを記憶させたコンピュータ・ディスケットを含み得る。
本発明の実施例は具体的には、その実施例を参照して示し、説明しているが、特許請求の範囲記載の本発明の実施例の範囲から逸脱しない限り、形態及び詳細における種々の変更を行うことができる。
100 システム
101 プロセッサ
108 メモリ

Claims (20)

  1. 方法であって、
    複数の命令を組み合わせる工程を含み、前記命令の少なくとも1つは、変換シーケンスを行い、前記命令は、実行されると、前記変換シーケンスにおける変換のうちの1つのみを前記命令の組合せが行うような順序で組み合わせられる方法。
  2. 請求項1記載の方法であって、前記命令の組合せは、AESDECLASTラウンド命令及びAESENCラウンド命令を含み、前記命令の組合せはMixColumns変換を行う方法。
  3. 請求項2記載の方法であって、前記AESDECLASTラウンド命令によって行われる一連の変換は、InverseShiftRows変換及びInverseSubstituteBytes変換を含み、前記AESENCラウンド命令によって行われる一連の変換は、ShiftRows変換、SubstituteBytes変換、及びMixColumns変換である方法。
  4. 請求項1記載の方法であって、前記命令の組合せは、AESENCLASTラウンド命令及びAESDECラウンド命令を含み、前記命令の組合せはInverseMixColumns変換を行う方法。
  5. 請求項4記載の方法であって、前記AESENCLASTラウンド命令によって行われる一連の変換は、ShiftRows変換及びSubstituteBytes変換を含み、 前記AESDECラウンド命令によって行われる一連の変換は、InverseShiftRows変換、InverseSubstituteBytes変換及びInverseMixColumns変換を含む方法。
  6. 請求項1記載の方法であって、前記命令の組合せは、PSHUFBラウンド命令及びAESENCLASTラウンド命令を含み、前記命令の組合せはSubstituteBytes変換を行う方法。
  7. 請求項6記載の方法であって、前記AESENCLASTラウンド命令によって行われる一連の変換は、ShiftRows変換及びSubstituteBytes変換を含み、前記PSHUFB命令は、ShiftRows変換を含む方法。
  8. 請求項1記載の方法であって、前記命令の組合せは、PSHUFBラウンド命令及びAESDECLASTラウンド命令を含み、前記命令の組合せはInverseSubstituteBytes変換を行う方法。
  9. 請求項7記載の方法であって、前記AESDECLASTラウンド命令によって行われる一連の変換は、InverseShiftRows変換及びInverseSubstituteBytes変換を含み、前記PSHUFB命令は、InverseShiftRows変換を含む方法。
  10. 請求項1記載の方法であって、前記命令の組合せは、連邦情報処理標準(FIPS)197によって規定されたShiftRows、InverseShiftRows、SubstituteBytes、InverseSubstituteBytes、MixColumn及びInverseMixColumnsを含む群からの変換を含む方法。
  11. 装置であって、
    複数の命令を記憶するためのメモリであって、前記命令の少なくとも1つは、変換シーケンスを行うメモリと、
    実行装置を含むプロセッサとを備え、前記命令は、前記実行装置によって実行されると、前記変換シーケンスにおける変換のうちの1つのみの結果を前記実行装置が供給するように前記メモリに順番に記憶される装置。
  12. 請求項11記載の装置であって、前記命令の組合せは、AESDECLASTラウンド命令及びAESENCラウンド命令を含み、前記命令の組合せはMixColumns変換を行う装置。
  13. 請求項11記載の装置であって、前記命令の組合せは、AESENCLASTラウンド命令及びAESDECラウンド命令を含み、前記命令の組合せはInverseMixColumns変換を行う装置。
  14. 請求項11記載の装置であって、前記命令の組合せは、PSHUFBラウンド命令及びAESENCLASTラウンド命令を含み、前記命令の組合せはSubstituteBytes変換を行う装置。
  15. 請求項11記載の装置であって、前記命令の組合せは、PSHUFBラウンド命令及びAESDECLASTラウンド命令を含み、前記命令の組合せはInverseSubstituteBytes変換を行う装置。
  16. 請求項11記載の装置であって、前記変換のシーケンスは、連邦情報処理標準(FIPS)197によって規定されたShiftRows、InverseShiftRows、SubstituteBytes、InverseSubstituteBytes、MixColumn及びInverseMixColumnsを含む群からの変換を含む装置。
  17. 関連した情報を有するマシンアクセス可能な媒体を含む製品であって、
    前記情報は、アクセスされると、
    複数の命令を組み合わせる機能
    をマシンが行うことをもたらし、前記命令の少なくとも1つは、変換シーケンスを行い、前記命令は、実行されると、前記変換シーケンスにおける変換のうちの1つのみを前記命令の組合せが行うような順序で組み合わせられる製品。
  18. 請求項17記載の製品であって、前記変換のシーケンスは、連邦情報処理標準(FIPS)197によって規定されたShiftRows、InverseShiftRows、SubstituteBytes、InverseSubstituteBytes、MixColumn及びInverseMixColumnsを含む群からの変換を含む製品。
  19. システムであって、
    プロセッサと、
    前記プロセッサによってアクセス可能であり、複数の命令を記憶させた記憶装置とを備え、前記命令の少なくとも1つは、変換シーケンスを行い、前記命令は、実行されると、前記変換シーケンスにおける変換のうちの1つのみを前記プロセッサが少なくとも行うような順序で組み合わせられるシステム。
  20. 請求項19記載のシステムであって、前記変換のシーケンスは、連邦情報処理標準(FIPS)197によって規定されたShiftRows、InverseShiftRows、SubstituteBytes、InverseSubstituteBytes、MixColumn及びInverseMixColumnsを含む群からの変換を含むシステム。
JP2009045094A 2008-02-29 2009-02-27 一連の変換を行って一変換を分離する命令を含む命令の組合せ Active JP5538736B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/040,214 US8879725B2 (en) 2008-02-29 2008-02-29 Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US12/040,214 2008-02-29

Publications (2)

Publication Number Publication Date
JP2009211071A true JP2009211071A (ja) 2009-09-17
JP5538736B2 JP5538736B2 (ja) 2014-07-02

Family

ID=40785278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009045094A Active JP5538736B2 (ja) 2008-02-29 2009-02-27 一連の変換を行って一変換を分離する命令を含む命令の組合せ

Country Status (5)

Country Link
US (1) US8879725B2 (ja)
EP (1) EP2096786B1 (ja)
JP (1) JP5538736B2 (ja)
KR (1) KR101036103B1 (ja)
CN (1) CN101520965B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015501946A (ja) * 2011-11-17 2015-01-19 エイアールエム リミテッド 暗号化アルゴリズム内のハッシュ値の生成をサポートするためのsimd命令
JP2016085341A (ja) * 2014-10-27 2016-05-19 日本電信電話株式会社 ラウンド関数計算装置及び暗号装置、これらの方法並びにプログラム
JP2016127405A (ja) * 2014-12-26 2016-07-11 株式会社Dnpハイパーテック 暗号化装置

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
US8150031B2 (en) * 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations
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
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
CN101938349A (zh) * 2010-10-01 2011-01-05 北京航空航天大学 一种适用于硬件实现的s盒及其电路实现方法
CN101958790B (zh) * 2010-10-09 2012-10-17 中国人民解放军信息工程大学 无线通信网络数字信息加密或解密方法
CN102043916B (zh) * 2010-12-01 2012-10-03 戴葵 一种高性能可扩展公钥密码协处理器结构
WO2013095473A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Systems and methods for protecting symmetric encryption keys
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
CN103051443B (zh) * 2012-12-20 2015-05-13 山东华芯半导体有限公司 Aes密钥扩展的方法
US10142099B2 (en) * 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
CN103401680B (zh) * 2013-07-24 2016-06-15 大连理工大学 一种矩阵旋转移位数字加密方法
RU2656734C2 (ru) * 2013-12-27 2018-06-06 Евгений Иванович Пряхин Способ кодирования и декодирования цифровой информации в виде ультрасжатого нанобар-кода (варианты)
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
CN106034021B (zh) * 2015-03-12 2020-04-10 中国科学院上海高等研究院 轻量级双模兼容aes加解密模块及其方法
US20170085371A1 (en) * 2015-04-07 2017-03-23 Secure Channels Sa System and method for an enhanced xor cipher through extensions
US10579389B2 (en) * 2015-11-02 2020-03-03 Arm Limited Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions
US11190498B1 (en) 2018-01-11 2021-11-30 Secure Channels, Inc. System and method for use of filters within a cryptographic process
US11403234B2 (en) * 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11580234B2 (en) * 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11250165B2 (en) * 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US11804955B1 (en) 2019-09-13 2023-10-31 Chol, Inc. Method and system for modulated waveform encryption
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11700135B2 (en) * 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function
US11706039B2 (en) 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function
US20220209967A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Isa accessible physical unclonable function

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009205161A (ja) * 2008-02-27 2009-09-10 Intel Corp パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926475A (en) * 1988-11-30 1990-05-15 Motorola, Inc. Data encryption key failure monitor
US5295188A (en) * 1991-04-04 1994-03-15 Wilson William J Public key encryption and decryption circuitry and method
US5375170A (en) * 1992-11-13 1994-12-20 Yeda Research & Development Co., Ltd. Efficient signature scheme based on birational permutations
US6952478B2 (en) 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages
FR2820577B1 (fr) * 2001-02-08 2003-06-13 St Microelectronics Sa Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
US7181016B2 (en) * 2003-01-27 2007-02-20 Microsoft Corporation Deriving a symmetric key from an asymmetric key for file encryption or decryption
KR100594265B1 (ko) 2004-03-16 2006-06-30 삼성전자주식회사 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법.
DE102004062825B4 (de) * 2004-12-27 2006-11-23 Infineon Technologies Ag Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit
US7961876B2 (en) * 2005-01-11 2011-06-14 Jintai Ding Method to produce new multivariate public key cryptosystems
KR100668664B1 (ko) 2005-11-22 2007-01-12 한국전자통신연구원 Aes 라인달 블록 알고리즘을 이용하는 암호화/복호화장치 및 방법
KR100720525B1 (ko) * 2005-12-28 2007-05-22 동부일렉트로닉스 주식회사 Aes코어를 포함하는 집적회로 및 aes코어 검증용래퍼

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009205161A (ja) * 2008-02-27 2009-09-10 Intel Corp パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015501946A (ja) * 2011-11-17 2015-01-19 エイアールエム リミテッド 暗号化アルゴリズム内のハッシュ値の生成をサポートするためのsimd命令
US9703966B2 (en) 2011-11-17 2017-07-11 Arm Limited Cryptographic support instructions
JP2016085341A (ja) * 2014-10-27 2016-05-19 日本電信電話株式会社 ラウンド関数計算装置及び暗号装置、これらの方法並びにプログラム
JP2016127405A (ja) * 2014-12-26 2016-07-11 株式会社Dnpハイパーテック 暗号化装置

Also Published As

Publication number Publication date
EP2096786A3 (en) 2012-01-25
JP5538736B2 (ja) 2014-07-02
US8879725B2 (en) 2014-11-04
CN101520965A (zh) 2009-09-02
KR101036103B1 (ko) 2011-05-19
EP2096786A2 (en) 2009-09-02
EP2096786B1 (en) 2016-04-06
US20090220071A1 (en) 2009-09-03
KR20090093900A (ko) 2009-09-02
CN101520965B (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
JP5538736B2 (ja) 一連の変換を行って一変換を分離する命令を含む命令の組合せ
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
US8787565B2 (en) Method and apparatus for generating an advanced encryption standard (AES) key schedule
KR20090092735A (ko) 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120628

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120705

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120727

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5538736

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140430

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250