JP5301675B2 - Method and apparatus for performing RAID processing - Google Patents
Method and apparatus for performing RAID processing Download PDFInfo
- Publication number
- JP5301675B2 JP5301675B2 JP2011533440A JP2011533440A JP5301675B2 JP 5301675 B2 JP5301675 B2 JP 5301675B2 JP 2011533440 A JP2011533440 A JP 2011533440A JP 2011533440 A JP2011533440 A JP 2011533440A JP 5301675 B2 JP5301675 B2 JP 5301675B2
- Authority
- JP
- Japan
- Prior art keywords
- bytes
- conversion
- result
- aes
- block
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1009—Cache, i.e. caches used in RAID system with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Description
本開示は、RAID(Redundant Array of Independent Disks)に関し、特にレベル6RAIDに関する。 The present disclosure relates to RAID (Redundant Array of Independent Disks), and more particularly to level 6 RAID.
RAIDは、リライアビリティ、キャパシティ又はパフォーマンスのため、複数の物理的ハードディスクドライブを論理的ドライブに合成する。このため、複数の物理的ハードディスクドライブの代わりに、オペレーティングシステムは、単一の論理的ドライブを参照する。当業者に周知なように、RAIDシステムの物理的ハードディスクドライブにデータを分散させるため、RAIDレベルと呼ばれる多数の標準的な方法が存在する。 RAID combines multiple physical hard disk drives into logical drives for reliability, capacity or performance. Thus, instead of multiple physical hard disk drives, the operating system refers to a single logical drive. As is well known to those skilled in the art, there are a number of standard methods called RAID levels for distributing data across the physical hard disk drives of a RAID system.
例えば、レベル0RAIDシステムでは、データをブロックに分割し、各ブロックを別々のハードディスクドライブに書き込むことによって、データが物理的ハードディスクドライブアレイにストライピングされる。入出力(I/O)パフォーマンスは、多数のハードディスクドライブにロードを分散させることによって向上する。レベル0RAIDはI/Oパフォーマンスを向上させるが、1つのハードディスクドライブが故障した場合にはすべてのデータが失われるため、冗長性を提供しない。
For example, in a
レベル5RAIDシステムは、データとパリティ情報との両方を少なくとも3つのハードディスクドライブにストライピングすることによって、高いレベルの冗長性を提供する。データストライピングは、故障した場合のリカバリパスを提供するため、分散化されたパリティと合成される。 Level 5 RAID systems provide a high level of redundancy by striping both data and parity information to at least three hard disk drives. Data striping is combined with distributed parity to provide a recovery path in case of failure.
レベル6RAID(RAID−6)は、2つのディスクの故障からのリカバリを可能にすることによって、レベル5RAIDシステムよりさらに高いレベルの冗長性を提供する。レベル6RAIDシステムでは、PシンドロームとQシンドロームと呼ばれる2つのシンドロームが、データに対して生成され、RAIDシステムのハードディスクドライブに格納される。 Level 6 RAID (RAID-6) provides a higher level of redundancy than a Level 5 RAID system by allowing recovery from the failure of two disks. In the level 6 RAID system, two syndromes called P syndrome and Q syndrome are generated for data and stored in the hard disk drive of the RAID system.
Pシンドロームは、ストライプにおけるデータのパリティ情報を計算することによって生成される(データブロック(ストリップ)、Pシンドロームブロック及びQシンドロームブロック)。Qシンドロームの生成は、ガロア体(Galois Field)乗算を必要とし、ディスクドライブの故障のイベントでは複雑である。ガロア体(有限体)の計算GF(28)は、還元多項式x8+x4+x3+x+1(すなわち、11B(16進法による))を介し定義される。 P syndrome is generated by calculating parity information of data in a stripe (data block (strip), P syndrome block, and Q syndrome block). The generation of Q syndrome requires Galois Field multiplication and is complicated in the event of a disk drive failure. The Galois field (finite field) calculation GF (2 8 ) is defined via the reduction polynomial x 8 + x 4 + x 3 + x + 1 (ie, 11B (in hexadecimal)).
ディスクリカバリ処理中に実行されるデータ、Pシンドローム及び/又はQシンドロームをリカバリするための再生成方式は、ガロア体乗算と逆演算との両方を必要とする。 The regeneration scheme for recovering data, P syndrome and / or Q syndrome executed during the disk recovery process requires both Galois field multiplication and inverse operation.
例えば、n個のデータディスクD0,D1,D2,...,Dn−1(n≦255)を備えたRAIDアレイでは、2つの数量、すなわち、パリティ(P)とリードソロモンコード(Q)とが、2つのディスクの消失からリカバリするために必要とされる。 For example, n data disks D0, D1, D2,. . . , Dn−1 (n ≦ 255), two quantities are required to recover from the loss of two disks, two quantities: parity (P) and Reed-Solomon code (Q). .
P及びQは、 P and Q are
RAID−6システムに関する計算上のボトルネックは、Qを計算するコストである。この困難さは、従来のプロセッサ(CPU(Central Processing Unit))はガロア体(有限体)GF(28)における計算についてパフォーマンスが低いという事実から生じている。従って、典型的には、パフォーマンスを向上させるため、テーブルルックアップベースアルゴリズムが利用される。テーブルルックアップの利用は、本来的に低速なシリアルプロセスをもたらす。 The computational bottleneck for RAID-6 systems is the cost of calculating Q. This difficulty stems from the fact that conventional processors (CPU (Central Processing Unit)) have poor performance for computations in Galois field (finite field) GF (2 8 ). Therefore, table lookup based algorithms are typically used to improve performance. The use of table lookup results in an inherently slow serial process.
請求される主題の各実施例の特徴は、同様の数字が同様の部分を示す図面を参照して以下の詳細な説明を参照することにより明らかになる。
図1は、各ストライプがハードディスク150のアレイ全体にストライピングされたデータブロック(ストリップ)、Pシンドローム及びQシンドロームを含む複数のストライプを示すRAID−6アレイ100の実施例を示すブロック図である。図示される実施例では、RAIDアレイ100は、5つのハードディスク150を有する。ラウンドロビン方式によりメンバーのハードディスク全体に分散されたP及びQシンドロームによるブロックレベルのストライピングを用いて、データがRAID−6アレイに書き込まれる。ブロックにセグメント化されたファイルなどのシーケンシャルデータが、データディスク150の3つのデータブロック102,104,106に格納されるブロックの1つを有するホリゾンタルストライプ0などのストライプ全体に分散されてもよい。一実施例では、ストライプの各ブロックには512バイトがある。
FIG. 1 is a block diagram illustrating an embodiment of a RAID-6
ホリゾンタルストライプ0のデータブロック102,104,106について計算されたP及びQシンドロームは、ストライプ0のPブロック130とQブロック132にそれぞれ格納される。P及びQシンドロームブロックは、各ストライプの異なるハードディスク150に格納される。
The P and Q syndromes calculated for the
Pシンドロームは、排他的OR(XOR)演算を実行することにより生成されてもよい。XORは、オペランドの1つのみが“1”の論理値を有する場合に限って、論理値“1”を生じさせる2つのオペランドに対する論理演算である。例えば、“11001010”の値を有する第1オペランドと、“10000011”の値を有する第2オペランドとのXORは、“01001001”の値を有する結果を提供する。第1オペランドを格納するハードディスクが故障した場合、第1オペランドは、第2オペランドとこの結果とに対してXOR演算を実行することによってリカバリされてもよい。 The P syndrome may be generated by performing an exclusive OR (XOR) operation. XOR is a logical operation on two operands that yields a logical value “1” only if only one of the operands has a logical value of “1”. For example, an XOR of a first operand having a value of “11001010” and a second operand having a value of “10000011” provides a result having a value of “01001001”. If the hard disk storing the first operand fails, the first operand may be recovered by performing an XOR operation on the second operand and the result.
Pシンドロームは、 P syndrome is
Qシンドロームの生成のパフォーマンスは、以下の式3により表されるように、QをそれのHorner表現により表すことによって向上されてもよい。
The performance of Q syndrome generation may be improved by representing Q by its Horner representation, as represented by
RAID−6アルゴリズムのQシンドロームの計算は、Federal Information Processing Standard(FIPS)197としてNational Institute of Standards and Technology(NIST)により公表されたAdvanced Encryption Standard(AES)のために用いられるGF(28)の同一表現を利用する。AESは、情報を暗号化及び解読可能なシンメトリックブロック暗号化である。 The calculation of the RAID-6 Q syndrome is used by Advanced Institute of Standards (NIST) Advanced GF 8 published by National Institute of Standards (NIST) as Federal Information Processing Standard (FIPS) 197. Use the same expression. AES is symmetric block encryption that can encrypt and decrypt information.
一実施例では、GF(28)を用いるAES命令は、本発明の原理によりRAIDレベル6に対して要求されるQシンドロームを計算するために、ガロア体乗算演算を実行するため用いられる。 In one embodiment, an AES instruction using GF (2 8 ) is used to perform a Galois field multiplication operation to calculate the Q syndrome required for RAID level 6 in accordance with the principles of the present invention.
図2は、汎用プロセッサにおいてAES暗号化及び解読を実行するための命令を含むシステム200のブロック図である。システム200は、プロセッサ201と、MCH(Memory Controller Hub)又はGMCH(Graphics Memory Controller Hub)202と、入出力(I/O)コントローラハブ(ICH)204とを有する。MCH202は、プロセッサ201とメモリ208との間の通信を制御するメモリコントローラ206を有する。プロセッサ201とMCH202とは、システムバス216を介し通信する。
FIG. 2 is a block diagram of a
プロセッサ201は、シングルコアIntel(登録商標)Pentium(登録商標) IVプロセッサ、シングルコアIntel Celeronプロセッサ、Intel(登録商標)XScaleプロセッサ、Intel(登録商標)Pentium(登録商標) D、Intel(登録商標)Xeon(登録商標)プロセッサ、Intel(登録商標)Core(登録商標)Duoプロセッサなどのマルチコアプロセッサ、又は他の何れかのタイプのプロセッサの何れかであってもよい。
The
メモリ208は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronized Dynamic Random Access Memory)、DDR2(Double Date Rate 2)RAM、RDRAM(Rambus Dynamic Random Access Memory)又は他の何れかのタイプのメモリであってもよい。
ICH204は、DMI(Direct Media Interface)などの高速チップ・ツー・チップインターコネクト214を用いてMCH202に接続されてもよい。DMIは、2つの一方向のレーンを介し2ギガビット/秒の同時伝送レートをサポートする。
The
ICH204は、RAID100(図1)などの少なくとも1つの記憶装置212との通信を制御するためのストレージI/Oコントローラ210を有してもよい。ICH204は、Serial Attached Small Computer System Interface(SAS)やSerial Advanced Technology Attachment(SATA)などのシリアルストレージプロトコルを用いて、ストレージプロトコルインターコネクト218を介し記憶装置212と通信してもよい。
The
プロセッサ201は、AES暗号化及び解読処理を実行するAES機能203を有する。AES機能203は、メモリ208及び/又は記憶装置212に格納される情報を暗号化又は解読するのに利用される。
The
暗号化は、秘密鍵(暗号鍵)を用いて“平文”と呼ばれる理解できるデータを“暗号文”と呼ばれる理解できない形式に変換する一連の変換処理を実行する。暗号化における変換処理は、(1)ラウンド鍵(暗号鍵から導出される値)を排他的OR(XOR)演算を用いた状態(2次元バイトアレイ)に加算し、(2)非線形バイト置換テーブル(S−Box)を用いて当該状態を処理し、(3)状態の最後の3列を異なるオフセットだけ循環的にシフトし、(4)状態のすべての列を抽出し、ミックスカラム変換と呼ばれる新たな列を生成するため、それらのデータを合成する(互いに独立して)、ことを含む。これら4つの変換処理は、後述される単一のAES命令により実行される。 Encryption performs a series of conversion processes for converting understandable data called “plaintext” into an incomprehensible format called “ciphertext” using a secret key (encryption key). In the conversion process in encryption, (1) a round key (value derived from the encryption key) is added to a state (two-dimensional byte array) using an exclusive OR (XOR) operation, and (2) a nonlinear byte replacement table. Process the state using (S-Box), (3) cyclically shift the last three columns of the state by different offsets, (4) extract all the columns of the state, referred to as mix column transformation Combining these data (independent of each other) to generate a new column. These four conversion processes are executed by a single AES instruction described later.
ミックスカラム変換では、状態のすべての列からのデータが、新たな列を生成するため合成される(互いに独立して)。ミックスカラムは、128ビット(16バイト)入力の4×4マトリックス表現の列上で実行される128ビット→128ビット変換である。当該変換は、各列をAES−ガロア体256の係数を有する3次の多項式として扱う。状態の4×4のマトリックス表現の各列は、多項式a(x)={03}x3+{01}x2+{01}x+{02}と乗算され、x4+1とreduced moduloされる。128ビットから128ビットへのミックスカラム変換は、16バイトから16バイトへの変換である。例えば、16バイト(状態)は、[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a]として示されてもよく、ここで、aが最下位バイトであり、状態は4つの列を有し、各列は32ビットダブルワード(4バイト)である。 In mixed column transformations, data from all the columns in the state are combined (independent of each other) to generate a new column. The mix column is a 128 bit → 128 bit conversion performed on a 4 × 4 matrix representation column with 128 bits (16 bytes) input. This transformation treats each column as a third-order polynomial having coefficients of AES-Galois field 256. Each column of the 4 × 4 matrix representation of the state is multiplied by the polynomial a (x) = {03} x 3 + {01} x 2 + {01} x + {02} and is reduced modulo x 4 +1. . The mixed column conversion from 128 bits to 128 bits is a conversion from 16 bytes to 16 bytes. For example, 16 bytes (state) may be indicated as [p, o, n, m, i, k, j, i, h, g, f, e, d, c, b, a], where Where a is the least significant byte, the state has four columns, and each column is a 32-bit doubleword (4 bytes).
ミックスカラム変換は、GF(28)計算(モジュロx8+x4+x3+x+1)に基づくマトリックス乗算である。従って、ミックスカラム変換は、後述されるようにレベル6RAIDシステムのためのQシンドロームを計算するため、ガロア体乗算機能250により利用されてもよい。ミックスカラム乗算を利用するため、ミックスカラム変換は、AES命令から隔離される。
The mix column transformation is a matrix multiplication based on the GF (2 8 ) calculation (modulo x 8 + x 4 + x 3 + x + 1). Accordingly, the mix column transform may be utilized by the Galois
ミックスカラム変換は、状態の4つの列に対して個別に実行される。4つの列は、(1)[p,o,n,m]、(2)[i,k,j,i]、(3)[h,g,f,e]及び(4)[d,c,b,a]である。 Mix column transformations are performed individually on the four columns of states. The four columns are (1) [p, o, n, m], (2) [i, k, j, i], (3) [h, g, f, e] and (4) [d, c, b, a].
[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a]に対するミックスカラム変換の結果は、テーブル1に示されるように、[p’,o’,n’,m’,i’,k’,j’,i’,h’,g’,f’,e’,d’,c’,b’,a’]である。 As shown in Table 1, the result of the mix column conversion for [p, o, n, m, i, k, j, i, h, g, f, e, d, c, b, a] p ′, o ′, n ′, m ′, i ′, k ′, j ′, i ′, h ′, g ′, f ′, e ′, d ′, c ′, b ′, a ′]. .
従って、これらの処理が各ダブルワード(列)について同様のものであると仮定すると、4つの列の1つに対するミックスカラム変換を記述するため、簡単な表記が利用されてもよい(例えば、最下位ダブルワードであるカラム4など)。
Thus, assuming that these processes are similar for each doubleword (column), a simple notation may be used to describe the mix column transformation for one of the four columns (eg,
カラム4について、ダブルワード(dword)=[d,c,b,a]であり、簡単な表記によるミックスカラム変換は、以下に示されるように表記される。
For
一実施例では、レジスタファイル308は、Streaming(Single Instruction Multiple Data(SIMD))Extension(SSE)命令セットを有するIntel Pentium(登録商標) MMXプロセッサに備えられている128ビットMMXレジスタに類似した128ビットレジスタ群である。SIMDプロセッサでは、1つの128ビットブロックが一度にロードされることによって、データが128ビットブロックで処理される。
In one embodiment,
フェッチ復号化ユニット306は、L1命令キャッシュ302からマクロ命令をフェッチし、マクロ命令を復号化し、マイクロコードROM(Read Only Memory)314に格納されるマイクロ処理(μops)と呼ばれるシンプルな処理に分割する。パイプライン化された実行ユニット310が、マイクロ処理をスケジューリング及び実行する。図示された実施例では、実行ユニット310のAES機能203は、AES命令のためのマイクロ命令を含む。処理準備されたデータがある場合、プロセッサ(CPU)がすべてのサイクルにおいて命令を送ってもよいように、AES命令は完全にパイプライン化される。リタイアメントユニット312は、実行されたAES命令の結果をレジスタ又はメモリに書き込む。AES命令により用いられるラウンドキー316は、L1データキャッシュ304に格納され、AES命令の何れかを実行するためマイクロ処理による利用のため、実行ユニット310にロードされてもよい。
The fetch
AES命令がフェッチ復号化ユニット306により復号化された後、実行ユニット310によるAES命令の実行は、マイクロコードROM314に格納されるAES命令に係るマイクロ処理を実行することを伴う。
After the AES instruction is decoded by the fetch
AES命令セットは、暗号化ラウンド、解読ラウンド、暗号化最終ラウンド及び解読最終ラウンドを実行するための個別のAES命令を有する。一実施例では、各AES命令は一意的な処理コード(opcode)を有する。 The AES instruction set has separate AES instructions for performing an encryption round, a decryption round, an encryption final round, and a decryption final round. In one embodiment, each AES instruction has a unique processing code (opcode).
AES命令セットは、テーブル2に示されるように、4つのAES命令(encrypt,decrypt,encrypt last round,decrypt last round)を有する。AES命令セットのAES命令は、最終ラウンドを除くすべてのラウンドに用いられる暗号化及び解読ラウンド処理を実行するための単一のラウンド処理を含む。 As shown in Table 2, the AES instruction set has four AES instructions (encrypt, decrypt, encrypt last round, and decrypt last round). The AES instruction of the AES instruction set includes a single round process to perform the encryption and decryption round processes used for all rounds except the final round.
テーブル2に示されるように、FOPISパブリケーション197の用語を用いて、128ビット→128ビット変換の対応するシーケンスが説明される。暗号化ラウンドの変換シーケンスは、以下を含む。
(1)AddRoundKey変換:ラウンドキー(暗号鍵から導出された値)が、排他的OR(XOR)演算を用いて状態(2次元128ビットバイトアレイ)に加えられる。AddRoundKeyは、それの2つの引数のビット単位のXORとして規定される(128ビット,128ビット)→128ビット変換である。AESフローでは、これらの引数は状態とラウンドキーである。
(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は、以下のバイト単位の順列である。
As shown in Table 2, using the terminology of FOPIS Publication 197, the corresponding sequence of 128 bit → 128 bit conversion is described. The encryption round conversion sequence includes:
(1) AddRoundKey transformation: A round key (value derived from an encryption key) is added to a state (two-dimensional 128-bit byte array) using an exclusive OR (XOR) operation. AddRoundKey is defined as a bitwise XOR of its two arguments (128 bits, 128 bits) → 128 bit conversion. In the AES flow, these arguments are state and round key.
(2) SubBytes transformation: the state is processed using a non-linear byte replacement table (S-Box). SubBytes is a conversion from 16 bytes to 16 bytes (byte unit) defined by applying S-box conversion to each of the 16 bytes of input. The S-box conversion can be expressed through a lookup table as follows. The input to the lookup table is bytes B [7: 0]. However, x and y indicate a low nibble and a high nibble, and x [3: 0] = B [7: 4] and y [3: 0] = B [3: 0]. The output byte is encoded in the table as a 2-digit number in hexadecimal (H) notation. For example, input 85H results in 97H.
(3) ShiftRows transformation: The last three rows of the state are cyclically shifted by different offsets. ShiftRows is a permutation of the following byte units.
(4)ミックスカラム変換:状態のすべての列からのデータが、新たな列を生成するためミックスされる(互いに独立して)。ミックスカラムは、128ビット(16バイト)入力の4×4のマトリックス表現の列に対して実行される128ビット→128ビットへの変換である。この変換は、各列をAESガロア体256の係数を有する3次の多項式として扱う。状態の4×4のマトリックス表現の各列は、多項式a(x)={03}x3+{01}x2+{01}x+{02}と乗算され、x4+1の還元モジュローされる。
(4) Mixed column conversion: Data from all columns in the state are mixed (independent of each other) to generate a new column. The mix column is a 128 bit → 128 bit conversion performed on a 4 × 4 matrix representation column with 128 bits (16 bytes) input. This conversion treats each column as a cubic polynomial having coefficients of AES Galois field 256. Each column of the 4 × 4 matrix representation of the state is multiplied by the polynomial a (x) = {03} x 3 + {01} x 2 + {01} x + {02} and reduced modulo x 4 +1. .
テーブル2に示されるように、AES最終暗号化ラウンド命令AESENCLASTは、ミックスカラム変換を実行しない。 As shown in Table 2, the AES final encryption round instruction AESENCLAST does not perform mix column conversion.
解読(逆暗号化)は、暗号鍵を用いて“暗号文”を同一サイズの“平文”に変換する一連の変換処理を実行する。逆暗号化における変換処理は、暗号化の変換処理の逆である。 Decryption (reverse encryption) executes a series of conversion processes for converting “ciphertext” into “plaintext” of the same size using an encryption key. The conversion process in reverse encryption is the reverse of the conversion process in encryption.
上述された解読ラウンドの変換シーケンスは、テーブル2に示されるように、単一のAES解読ラウンド命令AESDECにより実行され、最後の解読ラウンドに対しては、単一のAES最終解読ラウンド命令AESDECCLASTにより実行される。 The decryption round conversion sequence described above is performed by a single AES decryption round instruction AESDEC, as shown in Table 2, and for the last decryption round, by a single AES final decryption round instruction AESDECCLAST. Is done.
AES暗号化及び解読命令を含む命令の組み合わせは、隔離された変換としてAESアルゴリズムのサブステップ(変換)を取得するのに利用されてもよい。隔離された変換は、暗号化AES命令(AESENC,AESENCLAST)により用いられるShift Rows、Substitute Bytes及びミックスカラムを含む。 A combination of instructions including AES encryption and decryption instructions may be used to obtain sub-steps (transformations) of the AES algorithm as isolated transforms. Isolated transformations include Shift Rows, Substitute Bytes, and Mix columns used by encrypted AES instructions (AESENC, AESENCLAST).
本発明の実施例は、AES暗号化及び解読命令を用いた命令の組み合わせを利用して取得された隔離されたAESミックスカラム変換を用いて、レベル6RAIDのQシンドロームを計算する。 Embodiments of the present invention compute a level 6 RAID Q syndrome using an isolated AES mix column transform obtained using a combination of instructions using AES encryption and decryption instructions.
図4は、本発明の原理によるガロア体(GF)乗算を実行する方法の実施例のフローチャートである。 FIG. 4 is a flowchart of an embodiment of a method for performing Galois field (GF) multiplication according to the principles of the present invention.
ミックスカラム変換のためのマイクロ処理は、AESENC命令とAESDEC命令との両方において用いられる。テーブル2に示されるように、AESDEC命令は、AESENC命令における変換処理と逆の変換処理を含む。このため、ミックスカラム変換のマイクロ処理は、(1)ゼロに設定されたラウンドキーによるAESENC命令と、その後の(2)ゼロに設定されたラウンドキーによるAESDECLAST命令との命令シーケンスを実行することによって隔離されてもよい。 Microprocessing for mix column conversion is used in both AESENC and AESDEC instructions. As shown in Table 2, the AESDEC instruction includes a conversion process opposite to the conversion process in the AESENC instruction. Therefore, the micro processing of the mixed column conversion is performed by executing an instruction sequence of (1) AESENC instruction with a round key set to zero and (2) AESDECLAST instruction with a round key set to zero. It may be isolated.
各AES命令のための変換シーケンスを参照して、この命令シーケンスは、ミックスカラム変換を隔離する。これは、AddRoundKeyマイクロ処理が、No処理(NOP)を実行し、その他のマイクロ処理(Shift Rows,Substitute Bytes)が、逆マイクロ処理(Inverse Shift Rows,Inverse Substitute Bytes)とを実行することによって変更される。 With reference to the conversion sequence for each AES instruction, this instruction sequence isolates the mix column conversion. This is because the AddRoundKey micro process executes a No process (NOP), and the other micro process (Shift Rows, Substitute Bytes) is changed to a reverse micro process (Inverse Shift Rows, Inverse Substitute Bytes). The
従って、AES命令(AESENC,AESENCLAST)のシーケンスの実行は、以下に示されるようなミックスカラム(状態)変換を隔離させる。 Thus, execution of the sequence of AES instructions (AESENC, AESENCLAST) isolates the mix column (state) transformation as shown below.
Y=Inverse Mix Columns(Inverse Substitute Bytes(Inverse Shift Rows(Substitute Bytes(Shift Rows(State))))
隔離されたミックスカラム変換は、本発明の実施例に従ってAESガロア体において16バイトと{02}とを乗算するのに用いられる。16バイト(p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a)の4(d,c,b,a)と{02}とを乗算する実施例が説明される。
Y = Inverse Mix Columns (Inverse Substitute Bytes (Inverse Shift Rows (Substitute Bytes (Shift Rows)))
The isolated mix column transformation is used to multiply 16 bytes and {02} in an AES Galois field according to an embodiment of the present invention. 16 bytes (p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a) 4 (d, c, b, a) and {02} An embodiment for multiplying is described.
本実施例では、有限体は、還元多項式(reduction polynomial)0x11bにより規定される。他の実施例では、体表現の選択は設定可能であってもよい。 In this embodiment, the finite field is defined by a reduction polynomial 0x11b. In other embodiments, the selection of body representation may be configurable.
図4を参照して、ブロック400において、(0,c,0,a)を提供するため、入力データ(d,c,b,a)の奇数バイトポジションがゼロに、すなわち、b=d=0に設定される。一実施例では、Packedシャッフルバイト(PSHUFB)命令が、奇数バイトポジションをゼロに設定するのに用いられる。
Referring to FIG. 4, in
図5A〜5Cは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。PSHUFB命令は、第2オペランドに格納されたシャッフル制御マスクに基づき第1オペランドのバイトをシャッフルする(バイトのインプレースシャッフルを実行する)。シャッフル制御マスクのバイトの最上位ビットが設定されている場合、第1オペランドの対応するバイトにゼロが書き込まれる。 5A-5C illustrate the use of a packed shuffle byte (PSHUFB) instruction. The PSHUFB instruction shuffles the bytes of the first operand based on the shuffle control mask stored in the second operand (executes in-place shuffling of bytes). If the most significant bit of the shuffle control mask byte is set, zero is written to the corresponding byte of the first operand.
PSHUFB命令は、バイトA及びBの2つのレジスタと呼ばれる2つの128ビット入力を有する。PSHUFBは、バイトA=[a15a14a13...a0]及びB=[b15b14b13...b0]の2つの128ビットレジスタをとりあげ、レジスタAを[ab15ab14ab13...ab0]と置換する。biの先頭ビットが1に設定されている場合、その結果の第iエントリは0となる。 The PSHUFB instruction has two 128-bit inputs called two registers, bytes A and B. PSHUFB contains bytes A = [a 15 a 14 a 13 . . . a 0 ] and B = [b 15 b 14 b 13 . . . b 0 ] and take register A as [a b15 a b14 a b13 . . . a b0 ]. If the first bit of b i is set to 1, the resulting i-th entry is 0.
図5Aを参照して、ブロック500は、128ビット第1レジスタの下位4バイトの初期的な内容を示し、ブロック502は、PSHUFB命令が“ff02ff00h”のシャッフル制御マスクにより実行された後、第1レジスタの下位4バイトの内容を示す。図示されるように、2つの奇数バイト(バイト1とバイト3)は、MSBが“1”に設定されているため、“0”に設定されている。
Referring to FIG. 5A, block 500 shows the initial contents of the lower 4 bytes of the 128-bit first register, and block 502 shows the first after the PSHUFB instruction is executed with the shuffle control mask of “ff02ff00h”. Indicates the contents of the lower 4 bytes of the register. As shown in the figure, the two odd bytes (
図4を参照して、奇数バイトが“0”に設定された後、ミックスカラム変換が、第1レジスタの内容を用いて、AESDECLASTとその後のAESENCの命令シーケンスを実行することによって実行される。この命令シーケンスは、 Referring to FIG. 4, after the odd byte is set to “0”, the mix column conversion is performed by executing the AESDECLAST and subsequent AESENC instruction sequence using the contents of the first register. This instruction sequence is
dとbの両方がゼロであるため、“d=0,c,b=0,a”の命令シーケンスの結果は、3a+c,a+2c,a+3c,2a+cとなる。 Since both d and b are zero, the result of the instruction sequence “d = 0, c, b = 0, a” is 3a + c, a + 2c, a + 3c, 2a + c.
次に、結果(3a+c,a+2c,a+3c,2a+c)の奇数バイトは、Packedシャッフルバイト(PSHUFB)を用いてゼロに設定され、第2PSHUFB命令の結果である(0,a+2c,0,2a+c)が第1レジスタに格納される。 Next, the odd bytes of the result (3a + c, a + 2c, a + 3c, 2a + c) are set to zero using the packed shuffle byte (PSHUFB), and the result of the second PSHUFB instruction (0, a + 2c, 0, 2a + c) is the first. Stored in one register.
ブロック404において、(d,0,b,0)を提供するため、入力データ(d,c,b,a)の偶数バイトポジションがゼロに、すなわち、a=c=0に設定される。一実施例では、Packedシャッフルバイト(PSHUFB)命令が、偶数バイトポジションをゼロに設定するため用いられる。
At
図5Bを参照すると、502は、第1レジスタの初期的な内容を示し、504は、PSHUFB命令が“03ff01ffh”のシャッフル制御マスクにより実行された後の第1レジスタの内容を示す。図示されるように、すべての偶数バイトポジションは“0”に設定されている。
Referring to FIG. 5B,
図4を参照して、偶数バイトポジションが“0”に設定された後、ミックスカラム変換が、第1レジスタの内容を用いてAESDECLASTの後にAESENCとの命令シーケンスを実行することによって実行される。この命令シーケンスは、 Referring to FIG. 4, after the even byte position is set to “0”, the mix column conversion is executed by executing an instruction sequence with AESDECC after AESDECLAST using the contents of the first register. This instruction sequence is
cとaの両方がゼロであるため、“d,c=0,b,a=0”の命令シーケンスの結果は、b+2d,b+3d,2b+d,3b+dとなる。 Since both c and a are zero, the result of the instruction sequence “d, c = 0, b, a = 0” is b + 2d, b + 3d, 2b + d, 3b + d.
次に、結果(b+2d,b+3d,2b+d,3b+d)の偶数バイトが、Packedシャッフルバイト(PSHUFB)を用いてゼロに設定され、第4PSHUFB命令の結果(b+2d,0,2b+d,0)が第2レジスタに格納される。 Next, the even bytes of the result (b + 2d, b + 3d, 2b + d, 3b + d) are set to zero using the packed shuffle byte (PSHUFB), and the result (b + 2d, 0, 2b + d, 0) of the fourth PSHUFB instruction is stored in the second register. Stored in
ブロック408において、第1レジスタ(ブロック402)に格納された結果と、第2レジスタ(ブロック406)に格納された結果とが、両方のミックスカラム変換の結果(b+2d,a+2c,2b+d,2a+c)を提供するためにXOR演算される。実施例では、この結果は、PXOR命令を用いてXOR演算される。PXOR命令は、2つのレジスタの内容に対してXOR演算を実行し、レジスタの1つにその結果を格納する。
In
ブロック410において、Packedシャッフルバイト(PSHUFB)命令が、マスクに基づき入力データ(d,c,b,a)のバイトをシャッフルするのに利用される。
In
図5Cを参照して、506は、第3レジスタの初期的な内容を示し、508は、PSHUFB命令が“000302h”のシャッフル制御マスクにより実行された後の第3レジスタの内容を示す。図示されるように、入力データ(d,c,b,a)のバイトは、第3レジスタに格納される結果(b,a,d,c)510を提供するためシャッフルされる。 Referring to FIG. 5C, 506 shows the initial contents of the third register, and 508 shows the contents of the third register after the PSHUFB instruction is executed with the shuffle control mask of “000302h”. As shown, the bytes of input data (d, c, b, a) are shuffled to provide the result (b, a, d, c) 510 stored in the third register.
図4に続いて、ブロック412において、乗算の結果、すなわち、(2d,2c,2b,2a)を提供するため、レジスタ3(b+2d,b+3d,2b+d,3b+d)とレジスタ2(b,a,d,c)の内容に対してXOR演算が実行される。
Continuing with FIG. 4, in
4バイトデータブロックに対してg={02}による乗算を実行する実施例が説明された。以下のテーブル4は、1つの16バイトデータブロックに対して実行される機能的な正確な最適化されたに実施例のコードサンプル(アセンブラ)を示す。 An embodiment has been described in which multiplication by g = {02} is performed on a 4-byte data block. Table 4 below shows a functional accurate optimized code sample (assembler) executed on one 16-byte data block.
例えば、入力データ“e598271ef11141b8ae52b4e0305dbfd4”に対するガロア体乗算の実行結果は、出力“d12b4e3cf922826b47a473db60ba65b3”をもたらす。 For example, the execution result of Galois field multiplication for the input data “e598271ef11141b8ae52b4e0305dbfd4” yields the output “d12b4e3cf922826b47a473db60ba65b3”.
このコードサンプルでは、命令が逐次処理される場合、スループットは、AES命令の遅延により遅くなる。例えば、実施例では、PSHUFBとPXOR命令の遅延は1サイクルであり、AES命令の遅延は6サイクルである。従って、AES命令のペアが逐次処理される場合、12サイクルの遅延が生じる。他の実施例では、AES命令のペアの第2AES命令が、第1AES命令がスケジューリングされた6サイクル後にスケジューリングされるように、全体的な遅延は、インタリーブされた命令による複数の16バイトの入力データを同時に処理することによって減少されてもよい。テーブル4に示されるサンプルコードの命令の順序は、図6A〜6Cに示される例に示されるように変更されてもよい。この命令順序は、複数の16バイトデータブロックが同時に処理することを可能にする。これは、AES命令の遅延はPXOR及びPSHUFB命令の遅延より大きいためである。 In this code sample, if the instructions are processed sequentially, the throughput is slowed by the delay of the AES instruction. For example, in the embodiment, the delay of the PSHUFB and PXOR instructions is 1 cycle, and the delay of the AES instruction is 6 cycles. Thus, when AES instruction pairs are processed sequentially, a 12 cycle delay occurs. In another embodiment, the overall delay is a plurality of 16 bytes of input data from the interleaved instruction so that the second AES instruction of the pair of AES instructions is scheduled 6 cycles after the first AES instruction is scheduled. May be reduced by processing them simultaneously. The order of the sample code instructions shown in Table 4 may be changed as shown in the examples shown in FIGS. This instruction order allows multiple 16-byte data blocks to be processed simultaneously. This is because the delay of the AES instruction is greater than the delay of the PXOR and PSHUFB instructions.
図6A〜6Cは、ガロア体乗算が複数の16バイトデータブロックに対して同時に実行されることを可能にするサンプルコードである。このコードは、利用されうるコードの単なる一例である。他の多数の変形があってもよく、例えば、コードは特定のコンパイラによる利用に最適化されてもよい。図6A〜6Cは、NBLOCKSデータブロック(各ブロックは16バイト(16B)を有する)のデータバッファに対して{02}による乗算を実行する機能(インラインアセンブラ)を示す。4つの16バイトブロックがパラレルに処理され、256バイトデータバッファを利用するため、当該処理(パラレルな4つの16バイトブロック)が4回繰り返される(パラレルに4ブロック)。12個のxmmレジスタ(xmm0〜xmm11)が、入力データとその演算結果とを格納するのに用いられる。3つのマスクレジスタ(マスク1,マスク2,マスク3)が、テーブル4に示されるサンプルコードと同じマスクを格納する。図6Aを参照して、ブロック600の命令は、xmmレジスタ(xmm1,xmm4,xmm7,xmm10)に格納されている入力データの偶数バイトポジションをゼロに設定する。図示された例では、Packedシャッフルバイト(VPSHUFB)命令が、奇数バイトポジションをゼロに設定するため用いられる。VPSHUFB命令は、moveの後にPSHUFBなどを実行し、“vpshufb xmm1,xmm0,mask1”の命令に対して、xmm0の内容はxmm1に移され、xmm1の内容は、xmm0に格納されている制御マスクに基づきシャッフルされる。
6A-6C are sample code that allows Galois field multiplication to be performed simultaneously on multiple 16-byte data blocks. This code is just one example of a code that can be used. There may be many other variations, for example, the code may be optimized for use by a particular compiler. 6A to 6C show a function (inline assembler) for performing multiplication by {02} on a data buffer of an NBLOCKS data block (each block has 16 bytes (16B)). Since four 16-byte blocks are processed in parallel and a 256-byte data buffer is used, the processing (four parallel 16-byte blocks) is repeated four times (four blocks in parallel). Twelve xmm registers (xmm0 to xmm11) are used to store input data and its operation results. Three mask registers (
次に、ブロック602のAESDECLAST命令が、xmm1,xmm4,xmm7及びxmm10レジスタに格納されたゼロに設定されている奇数バイトポジションを有する入力データに対して実行される。 Next, the AESDECLAST instruction in block 602 is executed on the input data having odd byte positions set to zero stored in the xmm1, xmm4, xmm7 and xmm10 registers.
ブロック604の命令は、図5Cに関して説明されたように、入力データをxmmレジスタ(xmm2,xmm5)に移し、奇数バイトポジションをゼロに設定し、xmmレジスタ(xmm0,xmm3)において入力バイトをリシャッフルする。
The instruction in
図6Bを参照して、ブロック606のAESENC命令は、ミックスカラム変換を隔離し、その結果をxmmレジスタ(xmm1,xmm3,xmm7,xmm10)に格納する。 Referring to FIG. 6B, the AESENC instruction in block 606 isolates the mix column conversion and stores the result in the xmm registers (xmm1, xmm3, xmm7, xmm10).
ブロック608の命令は、図5Cに関して説明されたように、入力データをxmmレジスタ(xmm8,xmm11)に移動し、偶数バイトポジションをゼロに設定し、xmmレジスタ(xmm6,xmm9)の入力バイトをリシャッフルする。
The instruction in
ブロック610の命令は、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されているゼロに設定された偶数バイトポジションを有する入力データに対してAESDECLAST命令を実行する。 The instruction in block 610 executes the AESDECLAST instruction on input data having an even byte position set to zero stored in the xmm registers (xmm2, xmm5, xmm8, xmm11).
ブロック612の命令は、xmmレジスタ(xmm1,xmm4,xmm7,xmm10)に格納されているデータの奇数ポジションのバイトをゼロにする。 The instruction in block 612 zeroes out the odd position bytes of the data stored in the xmm registers (xmm1, xmm4, xmm7, xmm10).
ブロック614の命令は、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されているデータに対してAESENC命令を実行し、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されている結果において偶数バイトポジションをゼロに設定する。 The instruction in block 614 executes an AESENC instruction on the data stored in the xmm registers (xmm2, xmm5, xmm8, xmm11), and in the result stored in the xmm registers (xmm2, xmm5, xmm8, xmm11) Set even byte position to zero.
ブロック616の命令は、xmmレジスタ(xmm0,xmm3,xmm6,xmm9)において乗算の結果を提供するため、xmmレジスタ(xmm0〜xmm11)の内容に対してXOR演算を実行する。
The instruction in
ブロック618の命令は、xmmレジスタ(xmm0,xmm3,xmm6,xmm9)に格納されている乗算の結果をrbxレジスタに移動する。
The instruction in
ブロック620の命令は、乗算対象の次の16バイトブロックの位置へのポインタを計算する。 The instruction in block 620 calculates a pointer to the location of the next 16 byte block to be multiplied.
他の実施例では、RAID−6計算がGF(28)の他の表現により実行される場合、AES命令が適用可能な“好適な”表現(還元多項式11Bにより)に入力を変換することによって、上述した技術を利用することが可能である。当初の表現への最終的な変換が必要とされる(しかしながら、リカバリが実際に要求されるケースに留保可能である)。この変換は、予め計算されたテーブルを用いて実行可能である。 In another embodiment, if the RAID-6 calculation is performed with other representations of GF (2 8 ), by converting the input to a “preferred” representation (with the reduction polynomial 11B) to which the AES instruction can be applied. It is possible to use the technique described above. A final conversion to the original representation is required (however, it can be reserved in cases where recovery is actually required). This conversion can be performed using a pre-calculated table.
本発明の他の実施例はまた、本発明の処理を実行するための命令を含むマシーンアクセス可能な媒体を含む。このような実施例はまた、プログラムプロダクトと呼ばれてもよい。このようなマシーンアクセス可能な媒体は、限定することなく、フロッピー(登録商標)ディスク、ハードディスク、CD−ROM(Compact Disk−Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶媒体と、マシーン又はデバイスにより形成又は製造された粒子の他の有形な構成とを含むものであってもよい。命令はまた分散環境で利用されてもよく、シングル又はマルチプロセッサマシーンによるアクセスのため、ローカル及び/又はリモートに格納されてもよい。 Other embodiments of the present invention also include a machine accessible medium containing instructions for performing the processing of the present invention. Such an embodiment may also be referred to as a program product. Such machine-accessible media include, but are not limited to, floppy (registered trademark) disks, hard disks, CD-ROM (Compact Disk-Read Only Memory), ROM (Read Only Memory), RAM (Random Access Memory), and the like. Storage media and other tangible configurations of particles formed or manufactured by a machine or device. The instructions may also be utilized in a distributed environment and stored locally and / or remotely for access by a single or multiprocessor machine.
本発明の実施例がそれの実施例を参照して図示及び説明されたが、当業者は、添付した請求項により包含される本発明の実施例の範囲から逸脱することなく、形式及び詳細について各種変更が可能であることを理解するであろう。 While embodiments of the invention have been illustrated and described with reference to such embodiments, those skilled in the art will recognize the form and details without departing from the scope of the embodiments of the invention encompassed by the appended claims. It will be understood that various changes are possible.
Claims (20)
前記ガロア体乗算演算を実行するステップは、
第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行するステップと、
第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行するステップと、
前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成するステップと、
を有する方法。 Performing a Galois field multiplication operation on each of a plurality of bytes of a block of bytes, comprising:
Performing the Galois field multiplication operation,
Performing an Advanced Encryption Standard (AES) mix column transformation on the block of bytes in which all even position bytes are set to zero to provide a first result;
Performing the AES mix column conversion on the block of bytes in which all odd position bytes are set to zero to provide a second result;
Combining the first result and the second result to provide a result of the Galois field multiplication operation;
Having a method.
前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項3記載の方法。 The conversion sequence executed by the AESDECLAST round instruction includes an Inverse Shift Rows conversion and an Inverse Substitute Bytes conversion.
The method according to claim 3, wherein the conversion sequence executed by the AESENC round instruction includes a Shift Rows conversion, a Substitute Bytes conversion, and a mix column conversion.
第4の結果を提供するため、前記バイトのブロックにおける各4バイトブロックの下位の2バイトと上位の2バイトとをスイッチするため、前記バイトのブロックに格納されているデータをシャッフルするステップと、
前記第3の結果と前記第4の結果とに対してXOR演算を実行するステップと、
をさらに有する、請求項1記載の方法。 Performing an exclusive OR (XOR) operation on the first result and the second result to provide a third result;
Shuffling the data stored in the block of bytes to switch the lower 2 bytes and the upper 2 bytes of each 4-byte block in the block of bytes to provide a fourth result;
Performing an XOR operation on the third result and the fourth result;
The method of claim 1, further comprising:
実行ユニットを含むプロセッサと、
を有する装置であって、
前記命令は、前記実行ユニットにより実行されると、前記実行ユニットが、第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行し、第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行し、前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成する順序により前記メモリに格納される装置。 A memory for storing a plurality of instructions for executing a Galois field multiplication operation in parallel for each of a plurality of bytes of a block of bytes;
A processor including an execution unit;
A device comprising:
When the instruction is executed by the execution unit, the execution unit provides a first result so that the AES (Advanced Encryption Standard for all blocks of bytes with all even position bytes set to zero. ) Performing the AES mix column transform on the block of bytes where all odd position bytes are set to zero to perform a mix column transform and provide a second result, the Galois field multiplication operation An apparatus that is stored in the memory in order of combining the first result and the second result to provide a result.
前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項10記載の装置。 The conversion sequence executed by the AESDECLAST round instruction includes an Inverse Shift Rows conversion and an Inverse Substitute Bytes conversion.
The apparatus according to claim 10, wherein the conversion sequence executed by the AESENC round instruction includes a Shift Rows conversion, a Substitute Bytes conversion, and a mix column conversion.
前記情報は、アクセスされるとマシーンにバイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算を実行させ、
前記ガロア体乗算演算の実行は、
第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行するステップと、
第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行するステップと、
前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成するステップと、
を有する記憶媒体。 A machine-accessible storage medium having relevant information,
The information, when accessed, causes the machine to perform a Galois field multiplication operation on each of the plurality of bytes of the block of bytes,
The execution of the Galois field multiplication operation is as follows:
Performing an Advanced Encryption Standard (AES) mix column transformation on the block of bytes in which all even position bytes are set to zero to provide a first result;
Performing the AES mix column conversion on the block of bytes in which all odd position bytes are set to zero to provide a second result;
Combining the first result and the second result to provide a result of the Galois field multiplication operation;
A storage medium .
前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項14記載の記憶媒体。 The conversion sequence executed by the AESDECLAST round instruction includes an Inverse Shift Rows conversion and an Inverse Substitute Bytes conversion.
The storage medium according to claim 14, wherein the conversion sequence executed by the AESENC round instruction includes a Shift Rows conversion, a Substitute Bytes conversion, and a mix column conversion.
前記プロセッサによりアクセス可能であって、複数の命令を格納する記憶装置と、
を有するシステムであって、
前記命令の少なくとも1つは、変換シーケンスを実行し、前記プロセッサにより実行されると、前記プロセッサに、第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行させ、第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行させ、前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成させる順序により構成されるシステム。 A processor;
A storage device accessible by the processor and storing a plurality of instructions;
A system comprising:
At least one of the instructions performs a conversion sequence and, when executed by the processor, provides a first result to the processor to block the bytes with all even position bytes set to zero. To perform an AES (Advanced Encryption Standard) mix column conversion and provide the second result, the AES mix column conversion is performed on the block of bytes where all odd position bytes are set to zero. And a system configured by combining the first result and the second result to provide a result of the Galois field multiplication operation.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/317,082 US8150031B2 (en) | 2008-12-19 | 2008-12-19 | Method and apparatus to perform redundant array of independent disks (RAID) operations |
US12/317,082 | 2008-12-19 | ||
PCT/US2009/066717 WO2010080263A2 (en) | 2008-12-19 | 2009-12-04 | Method and apparatus to perform redundant array of independent disks (raid) operations |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012507212A JP2012507212A (en) | 2012-03-22 |
JP5301675B2 true JP5301675B2 (en) | 2013-09-25 |
Family
ID=42266129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011533440A Expired - Fee Related JP5301675B2 (en) | 2008-12-19 | 2009-12-04 | Method and apparatus for performing RAID processing |
Country Status (6)
Country | Link |
---|---|
US (1) | US8150031B2 (en) |
EP (1) | EP2359234B1 (en) |
JP (1) | JP5301675B2 (en) |
KR (1) | KR101245056B1 (en) |
CN (1) | CN102171646B (en) |
WO (1) | WO2010080263A2 (en) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20100246815A1 (en) * | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the kasumi cipher algorithm |
US8832464B2 (en) * | 2009-03-31 | 2014-09-09 | Oracle America, Inc. | Processor and method for implementing instruction support for hash algorithms |
US8296515B1 (en) | 2009-05-22 | 2012-10-23 | Nvidia Corporation | RAID-6 computation system and method |
US8037391B1 (en) * | 2009-05-22 | 2011-10-11 | Nvidia Corporation | Raid-6 computation system and method |
US8612680B1 (en) * | 2010-06-30 | 2013-12-17 | Emc Corporation | Data caching system and method |
JP5198526B2 (en) * | 2010-09-21 | 2013-05-15 | 株式会社東芝 | Encryption device and decryption device |
US9137250B2 (en) | 2011-04-29 | 2015-09-15 | Stephen Lesavich | Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks |
US9569771B2 (en) | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
US9361479B2 (en) | 2011-04-29 | 2016-06-07 | Stephen Lesavich | Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks |
US9037564B2 (en) | 2011-04-29 | 2015-05-19 | Stephen Lesavich | Method and system for electronic content storage and retrieval with galois fields on cloud computing networks |
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 |
JP5730812B2 (en) * | 2012-05-02 | 2015-06-10 | 日本電信電話株式会社 | Arithmetic apparatus, method and program |
JP6093718B2 (en) * | 2014-01-17 | 2017-03-08 | 日本電信電話株式会社 | Expansion field multiplication device, expansion field multiplication method and program |
US9425961B2 (en) * | 2014-03-24 | 2016-08-23 | Stmicroelectronics S.R.L. | Method for performing an encryption of an AES type, and corresponding system and computer program product |
US10230398B2 (en) | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
CN109145626B (en) * | 2018-09-05 | 2020-05-29 | 郑州云海信息技术有限公司 | RAID hardware encryption device and method |
KR102578869B1 (en) * | 2019-03-06 | 2023-09-15 | 삼성에스디에스 주식회사 | Apparatus and method for performing matrix multiplication operation being secure against side channel attack |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3851115B2 (en) * | 2001-06-28 | 2006-11-29 | 富士通株式会社 | Cryptographic circuit |
US7895253B2 (en) * | 2001-11-30 | 2011-02-22 | Analog Devices, Inc. | Compound Galois field engine and Galois field divider and square root engine and method |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
JP3940714B2 (en) * | 2003-09-25 | 2007-07-04 | 株式会社東芝 | Arithmetic device and encryption / decryption arithmetic device |
JP4288486B2 (en) * | 2003-11-17 | 2009-07-01 | 日本電気株式会社 | Disk array device, RAID parity data generation circuit, and Galois field multiplication circuit |
KR100610367B1 (en) * | 2004-06-19 | 2006-08-10 | 삼성전자주식회사 | The multiplication method and apparatus for preventing in Galois field, the apparatus for inversion in Galois field and the apparatus for AES byte substitution operation |
US7697687B2 (en) * | 2005-04-13 | 2010-04-13 | Nucrypt, Inc. | Streaming implementation of AlphaEta physical layer encryption |
US7512647B2 (en) * | 2004-11-22 | 2009-03-31 | Analog Devices, Inc. | Condensed Galois field computing system |
US7343546B2 (en) * | 2004-12-23 | 2008-03-11 | Intel Corporation | Method and system for syndrome generation and data recovery |
DE102004062825B4 (en) * | 2004-12-27 | 2006-11-23 | Infineon Technologies Ag | Cryptographic unit and method for operating a cryptographic unit |
US7734674B2 (en) * | 2005-08-08 | 2010-06-08 | Freescale Semiconductor, Inc. | Fast fourier transform (FFT) architecture in a multi-mode wireless processing system |
US7607068B2 (en) * | 2006-08-31 | 2009-10-20 | Intel Corporation | Apparatus and method for generating a Galois-field syndrome |
US7797612B2 (en) * | 2006-12-29 | 2010-09-14 | Intel Corporation | Storage accelerator |
JP4935367B2 (en) * | 2007-01-19 | 2012-05-23 | 富士通株式会社 | RAID device and Galois field product operation processing method |
JP4905161B2 (en) * | 2007-01-31 | 2012-03-28 | 富士通株式会社 | RAID device and data restoration device using Galois field |
JP2008209499A (en) * | 2007-02-23 | 2008-09-11 | Toshiba Corp | Aes decryption apparatus and program |
US8879725B2 (en) * | 2008-02-29 | 2014-11-04 | Intel Corporation | Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation |
US8150031B2 (en) | 2008-12-19 | 2012-04-03 | Intel Corporation | Method and apparatus to perform redundant array of independent disks (RAID) operations |
-
2008
- 2008-12-19 US US12/317,082 patent/US8150031B2/en not_active Expired - Fee Related
-
2009
- 2009-12-04 JP JP2011533440A patent/JP5301675B2/en not_active Expired - Fee Related
- 2009-12-04 EP EP09837806.0A patent/EP2359234B1/en not_active Not-in-force
- 2009-12-04 CN CN200980139241.1A patent/CN102171646B/en not_active Expired - Fee Related
- 2009-12-04 KR KR1020117007721A patent/KR101245056B1/en active IP Right Grant
- 2009-12-04 WO PCT/US2009/066717 patent/WO2010080263A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR101245056B1 (en) | 2013-03-22 |
US20100158241A1 (en) | 2010-06-24 |
EP2359234A4 (en) | 2015-03-11 |
CN102171646A (en) | 2011-08-31 |
WO2010080263A3 (en) | 2010-09-02 |
WO2010080263A2 (en) | 2010-07-15 |
US8150031B2 (en) | 2012-04-03 |
CN102171646B (en) | 2014-05-14 |
KR20110050723A (en) | 2011-05-16 |
EP2359234A2 (en) | 2011-08-24 |
JP2012507212A (en) | 2012-03-22 |
EP2359234B1 (en) | 2018-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5301675B2 (en) | Method and apparatus for performing RAID processing | |
US9960917B2 (en) | Matrix multiply accumulate instruction | |
JP6592804B2 (en) | Flexible architecture and instructions for the new encryption standard (AES) | |
CN101520965B (en) | Comprise and perform transform sequence to isolate the packing of orders of the instruction of a conversion | |
TWI518589B (en) | Instructions to perform groestl hashing | |
TWI463858B (en) | Processor instructions for improved aes encryption and decryption | |
JP5226062B2 (en) | Instruction set architecture for programmable cyclic redundancy check (CRC) computation | |
US9270460B2 (en) | Instructions to perform JH cryptographic hashing in a 256 bit data path |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130205 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130507 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130604 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130619 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |