JP2012507212A - Raid処理を実行するための方法及び装置 - Google Patents

Raid処理を実行するための方法及び装置 Download PDF

Info

Publication number
JP2012507212A
JP2012507212A JP2011533440A JP2011533440A JP2012507212A JP 2012507212 A JP2012507212 A JP 2012507212A JP 2011533440 A JP2011533440 A JP 2011533440A JP 2011533440 A JP2011533440 A JP 2011533440A JP 2012507212 A JP2012507212 A JP 2012507212A
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.)
Granted
Application number
JP2011533440A
Other languages
English (en)
Other versions
JP5301675B2 (ja
Inventor
グエロン,シャイ
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2012507212A publication Critical patent/JP2012507212A/ja
Application granted granted Critical
Publication of JP5301675B2 publication Critical patent/JP5301675B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

AES処理を利用してRAID6のQシンドロームを計算する方法及び装置が提供される。実施例では、AES処理を用いて実行されるGF乗算の結果は、専用のRAIDコントローラを必要とすることなくRAID−6サポートを提供することを可能にする。

Description

本開示は、RAID(Redundant Array of Independent Disks)に関し、特にレベル6RAIDに関する。
RAIDは、リライアビリティ、キャパシティ又はパフォーマンスのため、複数の物理的ハードディスクドライブを論理的ドライブに合成する。このため、複数の物理的ハードディスクドライブの代わりに、オペレーティングシステムは、単一の論理的ドライブを参照する。当業者に周知なように、RAIDシステムの物理的ハードディスクドライブにデータを分散させるため、RAIDレベルと呼ばれる多数の標準的な方法が存在する。
例えば、レベル0RAIDシステムでは、データをブロックに分割し、各ブロックを別々のハードディスクドライブに書き込むことによって、データが物理的ハードディスクドライブアレイにストライピングされる。入出力(I/O)パフォーマンスは、多数のハードディスクドライブにロードを分散させることによって向上する。レベル0RAIDはI/Oパフォーマンスを向上させるが、1つのハードディスクドライブが故障した場合にはすべてのデータが失われるため、冗長性を提供しない。
レベル5RAIDシステムは、データとパリティ情報との両方を少なくとも3つのハードディスクドライブにストライピングすることによって、高いレベルの冗長性を提供する。データストライピングは、故障した場合のリカバリパスを提供するため、分散化されたパリティと合成される。
レベル6RAID(RAID−6)は、2つのディスクの故障からのリカバリを可能にすることによって、レベル5RAIDシステムよりさらに高いレベルの冗長性を提供する。レベル6RAIDシステムでは、PシンドロームとQシンドロームと呼ばれる2つのシンドロームが、データに対して生成され、RAIDシステムのハードディスクドライブに格納される。
Pシンドロームは、ストライプにおけるデータのパリティ情報を計算することによって生成される(データブロック(ストリップ)、Pシンドロームブロック及びQシンドロームブロック)。Qシンドロームの生成は、ガロア体(Galois Field)乗算を必要とし、ディスクドライブの故障のイベントでは複雑である。ガロア体(有限体)の計算GF(2)は、還元多項式x+x+x+x+1(すなわち、11B(16進法による))を介し定義される。
ディスクリカバリ処理中に実行されるデータ、Pシンドローム及び/又はQシンドロームをリカバリするための再生成方式は、ガロア体乗算と逆演算との両方を必要とする。
例えば、n個のデータディスクD0,D1,D2,...,Dn−1(n≦255)を備えたRAIDアレイでは、2つの数量、すなわち、パリティ(P)とリードソロモンコード(Q)とが、2つのディスクの消失からリカバリするために必要とされる。
P及びQは、
Figure 2012507212
により定義される。ここで、g={02}は、ガロア体(有限体)GF(2)の要素であり、“+”及び“・”はこの体における演算である。
RAID−6システムに関する計算上のボトルネックは、Qを計算するコストである。この困難さは、従来のプロセッサ(CPU(Central Processing Unit))はガロア体(有限体)GF(2)における計算についてパフォーマンスが低いという事実から生じている。従って、典型的には、パフォーマンスを向上させるため、テーブルルックアップベースアルゴリズムが利用される。テーブルルックアップの利用は、本来的に低速なシリアルプロセスをもたらす。
請求される主題の各実施例の特徴は、同様の数字が同様の部分を示す図面を参照して以下の詳細な説明を参照することにより明らかになる。
図1は、各ストライプがハードディスクアレイにストライピングされるデータブロック(ストリップ)、Pシンドローム及びQシンドロームを有する複数のストライプを示すRAID−6アレイの実施例を示すブロック図である。 図2は、汎用プロセッサにおいてAES暗号化及び解読を実行するための命令を有するシステムのブロック図である。 図3は、図1に示されるプロセッサの実施例のブロック図である。 図4は、本発明の原理によるガロア体乗算を実行する方法の実施例のフローチャートである。 図5Aは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。 図5Bは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。 図5Cは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。 図6Aは、ガロア体乗算が複数の16バイトデータブロック上で同時に実行されることを可能にするサンプルコードである。 図6Bは、ガロア体乗算が複数の16バイトデータブロック上で同時に実行されることを可能にするサンプルコードである。 図6Cは、ガロア体乗算が複数の16バイトデータブロック上で同時に実行されることを可能にするサンプルコードである。 以下の詳細な説明は請求された主題の例示的な実施例を参照して進められるが、当業者には多数の代替、改良及び変更が明らかであろう。従って、請求された主題は広くみなされるべきであり、添付した請求項に与えられるものによってのみ規定されるものである。
図1は、各ストライプがハードディスク150のアレイ全体にストライピングされたデータブロック(ストリップ)、Pシンドローム及びQシンドロームを含む複数のストライプを示すRAID−6アレイ100の実施例を示すブロック図である。図示される実施例では、RAIDアレイ100は、5つのハードディスク150を有する。ラウンドロビン方式によりメンバーのハードディスク全体に分散されたP及びQシンドロームによるブロックレベルのストライピングを用いて、データがRAID−6アレイに書き込まれる。ブロックにセグメント化されたファイルなどのシーケンシャルデータが、データディスク150の3つのデータブロック102,104,106に格納されるブロックの1つを有するホリゾンタルストライプ0などのストライプ全体に分散されてもよい。一実施例では、ストライプの各ブロックには512バイトがある。
ホリゾンタルストライプ0のデータブロック102,104,106について計算されたP及びQシンドロームは、ストライプ0のPブロック130とQブロック132にそれぞれ格納される。P及びQシンドロームブロックは、各ストライプの異なるハードディスク150に格納される。
Pシンドロームは、排他的OR(XOR)演算を実行することにより生成されてもよい。XORは、オペランドの1つのみが“1”の論理値を有する場合に限って、論理値“1”を生じさせる2つのオペランドに対する論理演算である。例えば、“11001010”の値を有する第1オペランドと、“10000011”の値を有する第2オペランドとのXORは、“01001001”の値を有する結果を提供する。第1オペランドを格納するハードディスクが故障した場合、第1オペランドは、第2オペランドとこの結果とに対してXOR演算を実行することによってリカバリされてもよい。
Pシンドロームは、
Figure 2012507212
の(XOR)演算を用いてストライプ全体に対して計算されるデータ(D)のシンプルなパリティである。n個のデータディスクを有するシステムでは、Pシンドロームの生成は、以下の式1により表される。
Figure 2012507212
Qシンドロームの計算は、ガロア体多項式(g)を用いた乗算(・)を要求する。極めて高いパフォーマンスにより8ビット(バイト)ガロア体多項式に対して、算出演算が実行される。多項式は、有限個の定数と変数とが加算、減算、乗算及び非負の整数の指数のみを用いて結合された式である。1つの原始多項式は、x+x+x+x+1である。多項式に対するガロア体(GF)演算はまた、GF(2)計算とも呼ばれる。n個のデータディスクを有するシステムでは、Qシンドロームの生成は、以下の式2により表される。
Figure 2012507212
バイト単位のガロア体演算は、ブロックの各バイトがその他のバイトから計算上独立しているストライプベースにより実行される。バイト単位のガロア体演算は、255(2−1)個のデータディスクまで収容可能である。
Qシンドロームの生成のパフォーマンスは、以下の式3により表されるように、QをそれのHorner表現により表すことによって向上されてもよい。
Figure 2012507212
従って、2つの演算がQを計算するのに用いられる。
Figure 2012507212
式2に示される計算とは対照的に、式3の計算はGF256の一般的な乗算を必要としない。その代わりに、乗算はg{02}によるものである。1バイトについて、g={02}との乗算は、値を左に1ビットだけシフトすることによって実行可能である。その後、条件付の排他的OR(XOR)演算が、乗算の結果と、当該結果の最上位ビットの状態に基づく他の値とに対して実行される。一時に4バイトをパラレルに計算するため、{02}による乗算は、4バイトに格納されている値を左に1ビットだけシフトし、後述されるようにバイト毎に4つの条件付XOR演算を実行することによって実行される。
Figure 2012507212
“&0xfefefefe”は、所望されないキャリを回避するためのマスクである。しかしながら、条件付XOR演算はあまり効率的でない。その計算時間は、4バイトの代わりに8バイトをパラレルに処理し、8バイトのそれぞれにおける最上位ビット(MSB)に基づくマスクを用いることによって、低減されてもよい。
RAID−6アルゴリズムのQシンドロームの計算は、Federal Information Processing Standard(FIPS)197としてNational Institute of Standards and Technology(NIST)により公表されたAdvanced Encryption Standard(AES)のために用いられるGF(2)の同一表現を利用する。AESは、情報を暗号化及び解読可能なシンメトリックブロック暗号化である。
一実施例では、GF(2)を用いるAES命令は、本発明の原理によりRAIDレベル6に対して要求されるQシンドロームを計算するために、ガロア体乗算演算を実行するため用いられる。
図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を介し通信する。
プロセッサ201は、シングルコアIntel(登録商標)Pentium(登録商標) IVプロセッサ、シングルコアIntel Celeronプロセッサ、Intel(登録商標)XScaleプロセッサ、Intel(登録商標)Pentium(登録商標) D、Intel(登録商標)Xeon(登録商標)プロセッサ、Intel(登録商標)Core(登録商標)Duoプロセッサなどのマルチコアプロセッサ、又は他の何れかのタイプのプロセッサの何れかであってもよい。
メモリ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ギガビット/秒の同時伝送レートをサポートする。
ICH204は、RAID100(図1)などの少なくとも1つの記憶装置212との通信を制御するためのストレージI/Oコントローラ210を有してもよい。ICH204は、Serial Attached Small Computer System Interface(SAS)やSerial Advanced Technology Attachment(SATA)などのシリアルストレージプロトコルを用いて、ストレージプロトコルインターコネクト218を介し記憶装置212と通信してもよい。
プロセッサ201は、AES暗号化及び解読処理を実行するAES機能203を有する。AES機能203は、メモリ208及び/又は記憶装置212に格納される情報を暗号化又は解読するのに利用される。
暗号化は、秘密鍵(暗号鍵)を用いて“平文”と呼ばれる理解できるデータを“暗号文”と呼ばれる理解できない形式に変換する一連の変換処理を実行する。暗号化における変換処理は、(1)ラウンド鍵(暗号鍵から導出される値)を排他的OR(XOR)演算を用いた状態(2次元バイトアレイ)に加算し、(2)非線形バイト置換テーブル(S−Box)を用いて当該状態を処理し、(3)状態の最後の3列を異なるオフセットだけ循環的にシフトし、(4)状態のすべての列を抽出し、ミックスカラム変換と呼ばれる新たな列を生成するため、それらのデータを合成する(互いに独立して)、ことを含む。これら4つの変換処理は、後述される単一のAES命令により実行される。
ミックスカラム変換では、状態のすべての列からのデータが、新たな列を生成するため合成される(互いに独立して)。ミックスカラムは、128ビット(16バイト)入力の4×4マトリックス表現の列上で実行される128ビット→128ビット変換である。当該変換は、各列をAES−ガロア体256の係数を有する3次の多項式として扱う。状態の4×4のマトリックス表現の各列は、多項式a(x)={03}x+{01}x+{01}x+{02}と乗算され、x+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バイト)である。
ミックスカラム変換は、GF(2)計算(モジュロx+x+x+x+1)に基づくマトリックス乗算である。従って、ミックスカラム変換は、後述されるようにレベル6RAIDシステムのためのQシンドロームを計算するため、ガロア体乗算機能250により利用されてもよい。ミックスカラム乗算を利用するため、ミックスカラム変換は、AES命令から隔離される。
ミックスカラム変換は、状態の4つの列に対して個別に実行される。4つの列は、(1)[p,o,n,m]、(2)[i,k,j,i]、(3)[h,g,f,e]及び(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’]である。
Figure 2012507212
テーブル1に示されるように、4つの列のそれぞれに対して同一の処理が実行される。
従って、これらの処理が各ダブルワード(列)について同様のものであると仮定すると、4つの列の1つに対するミックスカラム変換を記述するため、簡単な表記が利用されてもよい(例えば、最下位ダブルワードであるカラム4など)。
カラム4について、ダブルワード(dword)=[d,c,b,a]であり、簡単な表記によるミックスカラム変換は、以下に示されるように表記される。
Figure 2012507212
図3は、図2に示されるプロセッサ201の実施例のブロック図である。プロセッサ201は、レベル1(L1)命令キャッス302から受け取ったプロセッサ命令を復号化するためのフェッチ復号化ユニット306を有する。プロセッサ命令を実行するため用いられるデータは、レジスタファイル308に格納されてもよい。一実施例では、レジスタファイル308は、AES命令により使用されるデータを格納するため、AES命令により用いられる複数の128ビットレジスタを有する。
一実施例では、レジスタファイル308は、Streaming(Single Instruction Multiple Data(SIMD))Extension(SSE)命令セットを有するIntel Pentium(登録商標) MMXプロセッサに備えられている128ビットMMXレジスタに類似した128ビットレジスタ群である。SIMDプロセッサでは、1つの128ビットブロックが一度にロードされることによって、データが128ビットブロックで処理される。
フェッチ復号化ユニット306は、L1命令キャッシュ302からマクロ命令をフェッチし、マクロ命令を復号化し、マイクロコードROM(Read Only Memory)314に格納されるマイクロ処理(μops)と呼ばれるシンプルな処理に分割する。パイプライン化された実行ユニット310が、マイクロ処理をスケジューリング及び実行する。図示された実施例では、実行ユニット310のAES機能203は、AES命令のためのマイクロ命令を含む。処理準備されたデータがある場合、プロセッサ(CPU)がすべてのサイクルにおいて命令を送ってもよいように、AES命令は完全にパイプライン化される。リタイアメントユニット312は、実行されたAES命令の結果をレジスタ又はメモリに書き込む。AES命令により用いられるラウンドキー316は、L1データキャッシュ304に格納され、AES命令の何れかを実行するためマイクロ処理による利用のため、実行ユニット310にロードされてもよい。
AES命令がフェッチ復号化ユニット306により復号化された後、実行ユニット310によるAES命令の実行は、マイクロコードROM314に格納されるAES命令に係るマイクロ処理を実行することを伴う。
AES命令セットは、暗号化ラウンド、解読ラウンド、暗号化最終ラウンド及び解読最終ラウンドを実行するための個別のAES命令を有する。一実施例では、各AES命令は一意的な処理コード(opcode)を有する。
AES命令セットは、テーブル2に示されるように、4つのAES命令(encrypt,decrypt,encrypt last round,decrypt last round)を有する。AES命令セットのAES命令は、最終ラウンドを除くすべてのラウンドに用いられる暗号化及び解読ラウンド処理を実行するための単一のラウンド処理を含む。
Figure 2012507212
例えば、テーブル2のAESENCシングルラウンド命令では、入力データは128ビットレジスタ(xmmsrcdst)に格納され、ラウンドキーは他の128ビットレジスタ(xmm)に格納される。この命令は、128ビットxmmsrcdstレジスタに格納される入力データ(ソース)に対して1つのAES暗号化ラウンドの一連の4つの変換処理を実行し、ラウンド処理の実行結果によって128ビットxmmsrcdstレジスタに格納される入力データを上書きする。このため、xmmsrcdstはまず、入力データを格納し、その後にAESラウンド処理の結果を格納する。
テーブル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は、以下のバイト単位の順列である。
Figure 2012507212
この変換は、状態の4×4のマトリックス表現に対する処理としてみなされる。4×4のマトリックスの第1行は変更されない。第2行は、1バイトポジションだけ左回転される。第3行は、2バイトポジションだけ左回転される。第4行は、3バイトポジションだけ左回転される。
(4)ミックスカラム変換:状態のすべての列からのデータが、新たな列を生成するためミックスされる(互いに独立して)。ミックスカラムは、128ビット(16バイト)入力の4×4のマトリックス表現の列に対して実行される128ビット→128ビットへの変換である。この変換は、各列をAESガロア体256の係数を有する3次の多項式として扱う。状態の4×4のマトリックス表現の各列は、多項式a(x)={03}x+{01}x+{01}x+{02}と乗算され、x+1の還元モジュローされる。
テーブル2に示されるように、AES最終暗号化ラウンド命令AESENCLASTは、ミックスカラム変換を実行しない。
解読(逆暗号化)は、暗号鍵を用いて“暗号文”を同一サイズの“平文”に変換する一連の変換処理を実行する。逆暗号化における変換処理は、暗号化の変換処理の逆である。
上述された解読ラウンドの変換シーケンスは、テーブル2に示されるように、単一のAES解読ラウンド命令AESDECにより実行され、最後の解読ラウンドに対しては、単一のAES最終解読ラウンド命令AESDECCLASTにより実行される。
AES暗号化及び解読命令を含む命令の組み合わせは、隔離された変換としてAESアルゴリズムのサブステップ(変換)を取得するのに利用されてもよい。隔離された変換は、暗号化AES命令(AESENC,AESENCLAST)により用いられるShift Rows、Substitute Bytes及びミックスカラムを含む。
本発明の実施例は、AES暗号化及び解読命令を用いた命令の組み合わせを利用して取得された隔離されたAESミックスカラム変換を用いて、レベル6RAIDのQシンドロームを計算する。
図4は、本発明の原理によるガロア体(GF)乗算を実行する方法の実施例のフローチャートである。
ミックスカラム変換のためのマイクロ処理は、AESENC命令とAESDEC命令との両方において用いられる。テーブル2に示されるように、AESDEC命令は、AESENC命令における変換処理と逆の変換処理を含む。このため、ミックスカラム変換のマイクロ処理は、(1)ゼロに設定されたラウンドキーによるAESENC命令と、その後の(2)ゼロに設定されたラウンドキーによるAESDECLAST命令との命令シーケンスを実行することによって隔離されてもよい。
各AES命令のための変換シーケンスを参照して、この命令シーケンスは、ミックスカラム変換を隔離する。これは、AddRoundKeyマイクロ処理が、No処理(NOP)を実行し、その他のマイクロ処理(Shift Rows,Substitute Bytes)が、逆マイクロ処理(Inverse Shift Rows,Inverse Substitute Bytes)とを実行することによって変更される。
従って、AES命令(AESENC,AESENCLAST)のシーケンスの実行は、以下に示されるようなミックスカラム(状態)変換を隔離させる。
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}とを乗算する実施例が説明される。
本実施例では、有限体は、還元多項式(reduction polynomial)0x11bにより規定される。他の実施例では、体表現の選択は設定可能であってもよい。
図4を参照して、ブロック400において、(0,c,0,a)を提供するため、入力データ(d,c,b,a)の奇数バイトポジションがゼロに、すなわち、b=d=0に設定される。一実施例では、Packedシャッフルバイト(PSHUFB)命令が、奇数バイトポジションをゼロに設定するのに用いられる。
図5A〜5Cは、Packedシャッフルバイト(PSHUFB)命令の利用を示す。PSHUFB命令は、第2オペランドに格納されたシャッフル制御マスクに基づき第1オペランドのバイトをシャッフルする(バイトのインプレースシャッフルを実行する)。シャッフル制御マスクのバイトの最上位ビットが設定されている場合、第1オペランドの対応するバイトにゼロが書き込まれる。
PSHUFB命令は、バイトA及びBの2つのレジスタと呼ばれる2つの128ビット入力を有する。PSHUFBは、バイトA=[a151413...a]及びB=[b151413...b]の2つの128ビットレジスタをとりあげ、レジスタAを[ab15b14b13...ab0]と置換する。bの先頭ビットが1に設定されている場合、その結果の第iエントリは0となる。
図5Aを参照して、ブロック500は、128ビット第1レジスタの下位4バイトの初期的な内容を示し、ブロック502は、PSHUFB命令が“ff02ff00h”のシャッフル制御マスクにより実行された後、第1レジスタの下位4バイトの内容を示す。図示されるように、2つの奇数バイト(バイト1とバイト3)は、MSBが“1”に設定されているため、“0”に設定されている。
図4を参照して、奇数バイトが“0”に設定された後、ミックスカラム変換が、第1レジスタの内容を用いて、AESDECLASTとその後のAESENCの命令シーケンスを実行することによって実行される。この命令シーケンスは、
Figure 2012507212
という変換を実行する。
dとbの両方がゼロであるため、“d=0,c,b=0,a”の命令シーケンスの結果は、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レジスタに格納される。
ブロック404において、(d,0,b,0)を提供するため、入力データ(d,c,b,a)の偶数バイトポジションがゼロに、すなわち、a=c=0に設定される。一実施例では、Packedシャッフルバイト(PSHUFB)命令が、偶数バイトポジションをゼロに設定するため用いられる。
図5Bを参照すると、502は、第1レジスタの初期的な内容を示し、504は、PSHUFB命令が“03ff01ffh”のシャッフル制御マスクにより実行された後の第1レジスタの内容を示す。図示されるように、すべての偶数バイトポジションは“0”に設定されている。
図4を参照して、偶数バイトポジションが“0”に設定された後、ミックスカラム変換が、第1レジスタの内容を用いてAESDECLASTの後にAESENCとの命令シーケンスを実行することによって実行される。この命令シーケンスは、
Figure 2012507212
という変換を実行する。
cとaの両方がゼロであるため、“d,c=0,b,a=0”の命令シーケンスの結果は、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レジスタに格納される。
ブロック408において、第1レジスタ(ブロック402)に格納された結果と、第2レジスタ(ブロック406)に格納された結果とが、両方のミックスカラム変換の結果(b+2d,a+2c,2b+d,2a+c)を提供するためにXOR演算される。実施例では、この結果は、PXOR命令を用いてXOR演算される。PXOR命令は、2つのレジスタの内容に対してXOR演算を実行し、レジスタの1つにその結果を格納する。
ブロック410において、Packedシャッフルバイト(PSHUFB)命令が、マスクに基づき入力データ(d,c,b,a)のバイトをシャッフルするのに利用される。
図5Cを参照して、506は、第3レジスタの初期的な内容を示し、508は、PSHUFB命令が“000302h”のシャッフル制御マスクにより実行された後の第3レジスタの内容を示す。図示されるように、入力データ(d,c,b,a)のバイトは、第3レジスタに格納される結果(b,a,d,c)510を提供するためシャッフルされる。
図4に続いて、ブロック412において、乗算の結果、すなわち、(2d,2c,2b,2a)を提供するため、レジスタ3(b+2d,b+3d,2b+d,3b+d)とレジスタ2(b,a,d,c)の内容に対してXOR演算が実行される。
4バイトデータブロックに対してg={02}による乗算を実行する実施例が説明された。以下のテーブル4は、1つの16バイトデータブロックに対して実行される機能的な正確な最適化されたに実施例のコードサンプル(アセンブラ)を示す。
Figure 2012507212
テーブル4のコードサンプルに示されるように、ガロア体乗算は、11個の命令(5つのPSHUFB命令、2つのPXOR命令、2つのAESENC命令、2つのAESDECLAST命令)、3個のマスク(マスク1,マスク2,マスク3)及び3個のxmmレジスタ(xmm1,xmm2,xmm3)を用いて、16バイトのデータに対して実行される。
例えば、入力データ“e598271ef11141b8ae52b4e0305dbfd4”に対するガロア体乗算の実行結果は、出力“d12b4e3cf922826b47a473db60ba65b3”をもたらす。
このコードサンプルでは、命令が逐次処理される場合、スループットは、AES命令の遅延により遅くなる。例えば、実施例では、PSHUFBとPXOR命令の遅延は1サイクルであり、AES命令の遅延は6サイクルである。従って、AES命令のペアが逐次処理される場合、12サイクルの遅延が生じる。他の実施例では、AES命令のペアの第2AES命令が、第1AES命令がスケジューリングされた6サイクル後にスケジューリングされるように、全体的な遅延は、インタリーブされた命令による複数の16バイトの入力データを同時に処理することによって減少されてもよい。テーブル4に示されるサンプルコードの命令の順序は、図6A〜6Cに示される例に示されるように変更されてもよい。この命令順序は、複数の16バイトデータブロックが同時に処理することを可能にする。これは、AES命令の遅延はPXOR及びPSHUFB命令の遅延より大きいためである。
図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に格納されている制御マスクに基づきシャッフルされる。
次に、ブロック602のAESDECLAST命令が、xmm1,xmm4,xmm7及びxmm10レジスタに格納されたゼロに設定されている奇数バイトポジションを有する入力データに対して実行される。
ブロック604の命令は、図5Cに関して説明されたように、入力データをxmmレジスタ(xmm2,xmm5)に移し、奇数バイトポジションをゼロに設定し、xmmレジスタ(xmm0,xmm3)において入力バイトをリシャッフルする。
図6Bを参照して、ブロック606のAESENC命令は、ミックスカラム変換を隔離し、その結果をxmmレジスタ(xmm1,xmm3,xmm7,xmm10)に格納する。
ブロック608の命令は、図5Cに関して説明されたように、入力データをxmmレジスタ(xmm8,xmm11)に移動し、偶数バイトポジションをゼロに設定し、xmmレジスタ(xmm6,xmm9)の入力バイトをリシャッフルする。
ブロック610の命令は、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されているゼロに設定された偶数バイトポジションを有する入力データに対してAESDECLAST命令を実行する。
ブロック612の命令は、xmmレジスタ(xmm1,xmm4,xmm7,xmm10)に格納されているデータの奇数ポジションのバイトをゼロにする。
ブロック614の命令は、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されているデータに対してAESENC命令を実行し、xmmレジスタ(xmm2,xmm5,xmm8,xmm11)に格納されている結果において偶数バイトポジションをゼロに設定する。
ブロック616の命令は、xmmレジスタ(xmm0,xmm3,xmm6,xmm9)において乗算の結果を提供するため、xmmレジスタ(xmm0〜xmm11)の内容に対してXOR演算を実行する。
ブロック618の命令は、xmmレジスタ(xmm0,xmm3,xmm6,xmm9)に格納されている乗算の結果をrbxレジスタに移動する。
ブロック620の命令は、乗算対象の次の16バイトブロックの位置へのポインタを計算する。
他の実施例では、RAID−6計算がGF(2)の他の表現により実行される場合、AES命令が適用可能な“好適な”表現(還元多項式11Bにより)に入力を変換することによって、上述した技術を利用することが可能である。当初の表現への最終的な変換が必要とされる(しかしながら、リカバリが実際に要求されるケースに留保可能である)。この変換は、予め計算されたテーブルを用いて実行可能である。
本発明の他の実施例はまた、本発明の処理を実行するための命令を含むマシーンアクセス可能な媒体を含む。このような実施例はまた、プログラムプロダクトと呼ばれてもよい。このようなマシーンアクセス可能な媒体は、限定することなく、フロッピー(登録商標)ディスク、ハードディスク、CD−ROM(Compact Disk−Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶媒体と、マシーン又はデバイスにより形成又は製造された粒子の他の有形な構成とを含むものであってもよい。命令はまた分散環境で利用されてもよく、シングル又はマルチプロセッサマシーンによるアクセスのため、ローカル及び/又はリモートに格納されてもよい。
本発明の実施例がそれの実施例を参照して図示及び説明されたが、当業者は、添付した請求項により包含される本発明の実施例の範囲から逸脱することなく、形式及び詳細について各種変更が可能であることを理解するであろう。

Claims (20)

  1. バイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算を実行するステップを有する方法であって、
    前記ガロア体乗算演算を実行するステップは、
    第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行するステップと、
    第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行するステップと、
    前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成するステップと、
    を有する方法。
  2. 前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項1記載の方法。
  3. 前記AESミックスカラム変換を実行するステップは、AESDECLASTラウンド命令と、その後にAESENCラウンド命令とを実行することを含む、請求項1記載の方法。
  4. 前記AESDECLASTラウンド命令により実行される変換系列は、Inverse Shift Rows変換と、Inverse Substitute Bytes変換とを含み、
    前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項3記載の方法。
  5. 第3の結果を提供するため、前記第1の結果と前記第2の結果とに対して排他的OR(XOR)演算を実行するステップと、
    第4の結果を提供するため、前記バイトのブロックにおける各4バイトブロックの下位の2バイトと上位の2バイトとをスイッチするため、前記バイトのブロックに格納されているデータをシャッフルするステップと、
    前記第3の結果と前記第4の結果とに対してXOR演算を実行するステップと、
    をさらに有する、請求項1記載の方法。
  6. 前記AESミックスカラム変換は、4バイトブロックシーケンスd,c,b,aを他の4バイトブロックシーケンス3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+dに変換する、請求項1記載の方法。
  7. 前記合成は、レベル6RAIDシステムのQシンドロームを計算するのに利用される、請求項1記載の方法。
  8. バイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算をパラレルに実行するための複数の命令を格納するメモリと、
    実行ユニットを含むプロセッサと、
    を有する装置であって、
    前記命令は、前記実行ユニットにより実行されると、前記実行ユニットが、第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行し、第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行し、前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成する順序により前記メモリに格納される装置。
  9. 前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項8記載の装置。
  10. 前記実行ユニットは、AESDECLASTラウンド命令と、その後にAESENCラウンド命令とを実行することによって、前記AESミックスカラム変換を実行する、請求項8記載の装置。
  11. 前記AESDECLASTラウンド命令により実行される変換系列は、Inverse Shift Rows変換と、Inverse Substitute Bytes変換とを含み、
    前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項10記載の装置。
  12. 前記AESミックスカラム変換は、4バイトブロックシーケンスd,c,b,aを他の4バイトブロックシーケンス3a+b+c+2d,a+b+2c+3d,a+2b+3c+d,2a+3b+c+dに変換する、請求項8記載の装置。
  13. 前記合成は、レベル6RAIDシステムのQシンドロームを計算するのに利用される、請求項8記載の装置。
  14. 関連する情報を有するマシーンアクセス可能な媒体を含む物であって、
    前記情報は、アクセスされるとマシーンにバイトのブロックの複数のバイトのそれぞれに対してガロア体乗算演算を実行させ、
    前記ガロア体乗算演算の実行は、
    第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行するステップと、
    第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行するステップと、
    前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成するステップと、
    を有する物。
  15. 前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項14記載の物。
  16. 前記AESミックスカラム変換を実行するステップは、AESDECLASTラウンド命令と、その後にAESENCラウンド命令とを実行することを含む、請求項14記載の物。
  17. 前記AESDECLASTラウンド命令により実行される変換系列は、Inverse Shift Rows変換と、Inverse Substitute Bytes変換とを含み、
    前記AESENCラウンド命令により実行される変換系列は、Shift Rows変換と、Substitute Bytes変換と、ミックスカラム変換とを含む、請求項14記載の物。
  18. プロセッサと、
    前記プロセッサによりアクセス可能であって、複数の命令を格納する記憶装置と、
    を有するシステムであって、
    前記命令の少なくとも1つは、変換シーケンスを実行し、前記プロセッサにより実行されると、前記プロセッサに、第1の結果を提供するため、すべての偶数ポジションバイトがゼロに設定された前記バイトのブロックに対してAES(Advanced Encryption Standard)ミックスカラム変換を実行させ、第2の結果を提供するため、すべての奇数ポジションバイトがゼロに設定された前記バイトのブロックに対して前記AESミックスカラム変換を実行させ、前記ガロア体乗算演算の結果を提供するため、前記第1の結果と前記第2の結果とを合成させる順序により構成されるシステム。
  19. 前記ガロア体乗算演算における有限体は、還元多項式0x11Bにより規定される、請求項18記載のシステム。
  20. AESDECLASTラウンド命令と、その後にAESENCラウンド命令とが、前記AESミックスカラム変換を実行する、請求項18記載のシステム。
JP2011533440A 2008-12-19 2009-12-04 Raid処理を実行するための方法及び装置 Expired - Fee Related JP5301675B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/317,082 2008-12-19
US12/317,082 US8150031B2 (en) 2008-12-19 2008-12-19 Method and apparatus to perform redundant array of independent disks (RAID) operations
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 true JP2012507212A (ja) 2012-03-22
JP5301675B2 JP5301675B2 (ja) 2013-09-25

Family

ID=42266129

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011533440A Expired - Fee Related JP5301675B2 (ja) 2008-12-19 2009-12-04 Raid処理を実行するための方法及び装置

Country Status (6)

Country Link
US (1) US8150031B2 (ja)
EP (1) EP2359234B1 (ja)
JP (1) JP5301675B2 (ja)
KR (1) KR101245056B1 (ja)
CN (1) CN102171646B (ja)
WO (1) WO2010080263A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235027A (ja) * 2012-05-02 2013-11-21 Nippon Telegr & Teleph Corp <Ntt> 演算装置、その方法およびプログラム

Families Citing this family (21)

* Cited by examiner, † Cited by third party
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
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
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
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8037391B1 (en) * 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
US8296515B1 (en) 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method
US8612680B1 (en) * 2010-06-30 2013-12-17 Emc Corporation Data caching system and method
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
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
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
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
JP6093718B2 (ja) * 2014-01-17 2017-03-08 日本電信電話株式会社 拡大体乗算装置、拡大体乗算方法及びプログラム
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 (zh) * 2018-09-05 2020-05-29 郑州云海信息技术有限公司 一种raid硬件加密装置与方法
KR102578869B1 (ko) * 2019-03-06 2023-09-15 삼성에스디에스 주식회사 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003015522A (ja) * 2001-06-28 2003-01-17 Fujitsu Ltd 暗号回路
JP2005100085A (ja) * 2003-09-25 2005-04-14 Toshiba Corp 演算装置、および、暗号・復号演算装置
JP2008209499A (ja) * 2007-02-23 2008-09-11 Toshiba Corp Aes復号装置及びプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP4288486B2 (ja) * 2003-11-17 2009-07-01 日本電気株式会社 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路
KR100610367B1 (ko) * 2004-06-19 2006-08-10 삼성전자주식회사 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
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 (de) * 2004-12-27 2006-11-23 Infineon Technologies Ag Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit
WO2006113541A2 (en) * 2005-04-13 2006-10-26 Northwestern University Streaming implementation of alphaeta physical layer encryption
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 (ja) 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
JP4905161B2 (ja) 2007-01-31 2012-03-28 富士通株式会社 Raid装置及びガロア体を用いたデータ復元装置
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003015522A (ja) * 2001-06-28 2003-01-17 Fujitsu Ltd 暗号回路
JP2005100085A (ja) * 2003-09-25 2005-04-14 Toshiba Corp 演算装置、および、暗号・復号演算装置
JP2008209499A (ja) * 2007-02-23 2008-09-11 Toshiba Corp Aes復号装置及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6013025985; Hua Li et al.: 'An efficient architecture for the AES mix columns operation' Circuits and Systems, 2005. ISCAS 2005. IEEE International Symposium on Vol. 5, 20050526, pp.4637-4640 *
JPN6013025987; 清家 秀律 外1名: 'FPGAを用いたAES暗号回路の改良' 電子情報通信学会技術研究報告 Vol. 101, No. 388, 20011019, pp.15-21 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235027A (ja) * 2012-05-02 2013-11-21 Nippon Telegr & Teleph Corp <Ntt> 演算装置、その方法およびプログラム

Also Published As

Publication number Publication date
EP2359234A2 (en) 2011-08-24
EP2359234B1 (en) 2018-07-11
WO2010080263A3 (en) 2010-09-02
KR101245056B1 (ko) 2013-03-22
US20100158241A1 (en) 2010-06-24
KR20110050723A (ko) 2011-05-16
US8150031B2 (en) 2012-04-03
EP2359234A4 (en) 2015-03-11
JP5301675B2 (ja) 2013-09-25
CN102171646B (zh) 2014-05-14
CN102171646A (zh) 2011-08-31
WO2010080263A2 (en) 2010-07-15

Similar Documents

Publication Publication Date Title
JP5301675B2 (ja) Raid処理を実行するための方法及び装置
US9960917B2 (en) Matrix multiply accumulate instruction
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
TWI518589B (zh) 用以執行groestl雜湊法之指令
CN101520965B (zh) 包括执行变换序列以隔离一个变换的指令的指令组合
TWI463858B (zh) 用於已改善之aes加密與解密的處理器指令
JP5226062B2 (ja) プログラム可能な巡回冗長度検査(crc)計算のための命令セット・アーキテクチャ
US9270460B2 (en) Instructions to perform JH cryptographic hashing in a 256 bit data path
US9251374B2 (en) Instructions to perform JH cryptographic hashing

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 Request for written amendment filed

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