(57)【要約】  ＡＥＳアルゴリズムの暗号機能を実施するためのプログラマブルデータ暗号化エンジンは、第１モードにおいて、ＡＥＳ選択機能を実施し且つＧＦ−１（２８）で逆数を実行し且つアフィンオーバーＧＦ（２）変換を適用するための第１データブロックに応答してサブバイト変換(subbytetransformation)を獲得し、且つ、第２モードにおいて、サブバイト変換に対して前記サブバイト変換を変換してシフトロウ変換を獲得する並列ルックアップテーブルシステムと、シフトロウ変換を変換して、ミックスカラム変換を獲得し且つラウンドキーを加えて、前記第１データブロックのＡＥＳ暗号機能をもたらすためのガロアフィールド乗算器とを備える。
2005513541.tif 000002
【特許請求の範囲】
【請求項１】
ＡＥＳ(Advanced Encryption Standard)アルゴリズムの暗号機能を実施するためのプログラマブルデータ暗号化エンジンであって、
ＡＥＳ選択機能を実施し且つＧＦ−１（２８）で逆数を実行し且つアフィンオーバーＧＦ（２）変換を適用してサブバイト変換を得るために第１データブロックに応答する第１パラレルルックアップテーブルと、
前記サブバイト変換を変換してシフトロウ変換を得るための第２パラレルルックアップテーブルと、
前記シフトロウ変換を変換してミックスカラム変換を獲得すると共にラウンドキーを加えて前記第１データブロックのＡＥＳ暗号機能をもたらすガロアフィールド乗算器と、
を備えたプログラマブルデータ暗号化エンジン。
【請求項２】
複数のラウンドキーを前記ガロアフィールド乗算器に供給するためのキージェネレータを更に備えた請求項１記載のプログラマブルデータ暗号化エンジン。
【請求項３】
前記キージェネレータは、マスターキーに応答して前記ラウンドキーを発生するキージェネレータ回路を備えた請求項２記載のプログラマブルデータ暗号化エンジン。
【請求項４】
前記キージェネレータ回路が、前記マスターキーをローテイションしてローテイションされたサブキーを得るための第３パラレルルックアップテーブルシステムを備えた請求項３記載のプログラマブルデータ暗号化エンジン。
【請求項５】
前記キージェネレータ回路が、ＧＦ−１（２８）で逆数を実行し且つアフィンオーバーＧＦ（２）変換を適用して前記ラウンドキーを得るための第４パラレルルックアップテーブルシステムを備えた請求項４記載のプログラマブルデータ暗号化エンジン。
【請求項６】
前記第１および第２パラレルルックアップテーブル及び前記第１ガロアフィールド乗算器が、変換の多くのラウンドを実施し、且つ各ラウンドについて発生されたラウンドキーが存在する請求項５記載のプログラマブルデータ暗号化エンジン。
【請求項７】
前記各ラウンドキーが複数のサブキーを備えた請求項６記載のプログラマブルデータ暗号化エンジン。
【請求項８】
前記ガロアフィールド乗算器は、
二つの多項式をガロアフィールド上の係数と乗算してそれらの積を得るための乗算回路と、
既約多項式について前記多項式の積のモジューロ剰余を予測するために前記乗算回路に応答するガロアフィールドリニア変換回路と、
所定の既約多項式についてモジューロ剰余を予測するために係数のセットを前記ガロアフィールドリニア変換回路に供給するためのストレージ回路と、
単一のサイクルで前記乗算および加算演算を実施するために、前記乗算回路の前記積を、ガロアフィールド上の係数を持つ第３多項式に加えるためのガロアフィールド加算回路と、
を備えた請求項１記載のプログラマブルデータ暗号化エンジン。
【請求項９】
前記パラレルルックアップテーブルは、
メモリと、
前記メモリに格納された複数のルックアップテーブルと、
前記ルックアップテーブルにおいてルックアップされる値を保持するためのロウインデックスレジスタと、
前記メモリに格納された前記各ルックアップテーブルの開始アドレスを表す値を格納するためのカラムインデックスレジスタと、
前記カラムインデックスレジスタ及び前記ロウインデックスレジスタに応答して、前記ロウインデックスレジスタにおける各値に対するアドレスを同時に発生し、各ルックアップテーブルにそれらの値の機能を並列に配置するアドレス変換回路と、
を備えた請求項１記載のプログラマブルデータ暗号化エンジン。
【請求項１０】
ＡＥＳ(Advanced Encryption Standard)アルゴリズムの暗号機能を実施するためのプログラマブルデータ暗号化エンジンであって、
ＡＥＳ選択機能を実施し且つＧＦ−１（２８）で前記逆数を実行し且つアフィンオーバーＧＦ（２）変換を適用してサブバイト変換を獲得するために第１モードにおいて第１データブロックに応答すると共に、第２モードにおいて前記サブバイト変換に応答して前記サブバイト変換を変換してシフトロウ変換を得るパラレルルックアップテーブルシステムと、
前記シフトロウ変換を変換してミックスカラム変換を得ると共にラウンドキーを加えて前記第１データブロックのＡＥＳ(Advanced Encryption Standard)暗号機能をもたらすガロアフィールド乗算器と、
を備えたプログラマブルデータ暗号化エンジン。
【請求項１１】
前記パラレルルックアップテーブルシステムが、第３モードにおいてマスターキーに応答してサブキーを獲得すると共に、第４モードにおいて前記サブキーに応答してラウンドキーを発生する請求項１０記載のプログラマブルデータ暗号化エンジン。
【請求項１２】
前記パラレルルックアップテーブルシステムが、前記サブバイト／サブワード変換を実施するための第１パラレルルックアップテーブルと、前記シフトロウ／ローテイションワード変換を実施するための第２ルックアップテーブルとを備えた請求項１１記載のプログラマブルデータ暗号化エンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＥＳ(Advanced Encryption Standard)の暗号機能(cipher function)を実施するためのプログラマブルデータ暗号化エンジンに関する。
本出願は、２００１年１２月１８日に出願された米国仮出願シリアル番号６０／３４１６３４の優先権を主張する。
【背景技術】
【０００２】
ＡＮＳＩ(American National Standard Institute)ＡＥＳ(Advanced encryption standard)を実施するための暗号化エンジンは、２５６ビットまでの可変長キーを用いて一般には１２８ビット（ブロックサイズ）のデータのブロックを暗号化し且つ解読する。解読は、暗号化に使用されたものと同一のキーを用いてなされるが、解読処理が暗号化処理の逆となるようにキービットがアドレッシングのスケジュールで変えられる。
【０００３】
ＡＥＳを実施するための異なる多くのアルゴリズムが存在し、より著名なもののひとつに、リジャンダール(Rijndael)アルゴリズムがある。一般に、そのアルゴリズムは、４、４バイト、３２ビットワードを入力し、それについてガロアフィールドＧＦ−１（２８）での逆数を備えるサブバイト変換を実施し、アフィン（オーバーＧＦ（２））変換を適用する。次に、シフトロウ変換(shift rows transformation)がなされ、その後にミックスカラム(mix columns)変換が続き、ミックスカラム変換を適用すると共にラウンドキー(round key)を加える。
【０００４】
一連のステップは、何回も繰り返される。繰り返し数(the number of iterations)はリジャンダールアルゴリズムに従ってキーの長さとブロックサイズに依存する。例えば、キーの長さが４、３２ビットワード（１２８ビット）、および、ブロックサイズが４、３２ビットワードに対しては、繰り返し数は１０であり、キーの長さが６（１９２ビット）でブロックサイズが４に対しては、繰り返し数は１２であり、そしてキーの長さが８（２５６ビット）でブロックサイズが４に対して繰り返し数は１４である。ここで、キーの長さは、そのキーにおける３２ビットワードの数であり、且つブロックサイズは、同時に暗号化される３２ビットワードの数である。従って、例えば、キーの長さが４でブロックサイズが４については、１０の繰り返し(iteration)又はラウンド(round)を必要とし、４で３２ビットワードの１０個のラウンドキーのそれぞれは、４で３２ビットワードの入力マスターキーから、各繰り返し又はラウンドに対して一つだけ発生されることを必要とする。これらは、キーの長さ及びラウンドの数に応じて一つ又は二つのステップを通して４０個の異なるサブキーとして発生される。ラウンドキーの発生における最初のワードは、（ａ）ワードローテイション(word Rotation)を経て、その後にサブワード(subword)、逆ガロアフィールド(inverse Galois field)及びアフィン変換(affine transformation)の組み合わせが続き、そしてRcon[i]（繰り返し依存値）がＧＦ（２８）フィールド上で加えられ、（ｂ）３２ビットワードの順列(permutation)が（ａ）の結果と排他的ＯＲがとられる。例えば、１０個のラウンドと４のキーの長さでは、４番目ごとのサブキー発生サイクルは（ａ）及び（ｂ）の両方のステップを経る。他のキー発生サイクルは、（ｃ）３２ビットワード順列が前のサブキーと排他的ＯＲがとられるステップを経る。従って、サイクル０,４,８,１２,１６,２０，２４，２８，３２，３６，４０は、（ａ）および（ｂ）の両方のステップを採用し、残りのサイクルはステップ（ｃ）のみを使用する。一般には、これは、各ワードに対し９０又はそれ以上のクロックサイクルを必要とし、または、４ワードからなる各ブロックに対して３６０クロックサイクルを必要とし、そして、ＡＥＳについてリジャンダールアルゴリズムを完結するために３６００クロックサイクルを必要とする。従って、１２８ビットの４、３２ビットワードブロックに関する１０メガビットデータストリーム動作については、必要条件が２８１ＭＩＰＳ(Mega Instruction Per Second)となる。
【発明の開示】
【課題を解決するための手段】
【０００５】
従って、本発明の目的は、ＡＥＳ(Advanced Encryption Standard)の暗号機能(cipher function)を実施するための改良されたプログラマブルデータ暗号化エンジンを提供することである。
さらに、本発明の目的は、リジャンダールアルゴリズムを用いてＡＥＳ(Advanced Encryption Standard)の暗号機能を実施するための上記の改良されたプログラマブルデータ暗号化エンジンを提供することである。
さらに、本発明の目的は、ソフトウェアで実施可能なＡＥＳ(Advanced Encryption Standard)の暗号機能を実施するための上記の改良されたプログラマブルデータ暗号化エンジンを提供することである。
【０００６】
さらに、本発明の目的は、大規模に高速なＡＥＳ(Advanced Encryption Standard)の暗号機能を実施するための上記の改良されたプログラマブルデータ暗号化エンジンを提供することである。
さらに、本発明の目的は、極めて柔軟性があり且つ多くの異なる順列(permutation)及びアプリケーションについて再プログラムできるＡＥＳ(Advanced Encryption Standard)の暗号機能を実施するための上記の改良されたプログラマブルデータ暗号化エンジンを提供することである。
【０００７】
本発明は、ＡＥＳ選択機能を実施し且つＧＦ−１（２８）での逆数を実行し且つアフィンオーバーＧＦ（２）変換を適用してサブバイト変換を得るための第１データブロックに応答する第１パラレルルックアップテーブルを備えるＡＥＳ(Advanced Encryption Standard)アルゴリズムの暗号機能を実施するためのプログラマブルデータ暗号化エンジンを特徴とする。第２パラレルルックアップテーブルは、サブバイト変換を変換してシフトロウ変換(shift row transformation)を得る。ガロアフィールド乗算器は、上記シフトロウ変換を変換して、ミックスカラム変換を獲得し、そしてラウンドキーを加え、結果として上記第１データブロックのＡＥＳ暗号機能をもたらす。
【０００８】
好ましい実施形態において、複数のラウンドキーをガロアフィールド乗算器に提供するためのキージェネレータを備えてもよい。上記キージェネレータは、上記ラウンドキーを発生するためのマスターキーに応答するキージェネレータ回路を備えてもよい。上記キージェネレータは、マスターキーをローテイション(rotating)してローテイション(rotated)されたサブキーを得るための第３のパラレルルックアップテーブルを備えてもよい。キージェネレータ回路は、ＧＦ−１（２８）での逆数を実行し、そしてアフィンオーバーＧＦ（２）を適用して上記ラウンドキーを得るための第４のパラレルルックアップテーブルを備えてもよい。上記第１および第２のパラレルルックアップテーブルおよび上記第１のガロアフィールド乗算器は、多くのラウンドの変換を実施してもよく、そして、各ラウンドに対して発生されるキーが存在していてもよい。各ラウンドキーは複数のサブキーを備えてもよい。ガロアフィールド乗算器は、二つの多項式をガロアフィールド上の係数と乗算してそれらの積を得るための乗算回路と、既約多項式(irreducible polynomial)について多項式のモジューロ剰余(modulo remainder)を予測するための上記乗算回路に応答するガロアフィールドリニア変換回路と、所定の既約の多項式についてモジューロ剰余を予測するための係数のセットを上記ガロアフィールドリニア変換回路に供給するためのストレージ回路と、単一のサイクルにおいて乗算および加算演算を実施するためにガロアフィールド上の係数と共に第３の多項式と上記乗算回路の積を加算するためのガロアフィールド加算回路とを備えてもよい。パラレルルックアップテーブルシステムは、メモリと、該メモリに格納された複数のルックアップテーブルと、上記ルックアップテーブルでルックアップ(look up)されるべき値を保持するためのロウインデックスレジスタと、上記メモリに格納された各ルックアップテーブルの開始アドレスを表す値を格納するためのカラムインデックスレジスタと、上記ロウインデックスレジスタにおける各値についてアドレスを同時に発生して各ルックアップテーブルにそれらの値の機能を並列に配置するために上記カラムインデックスレジスタ及びロウインデックスレジスタに応答するアドレス変換回路(address translation circuit)とを備えても良い。
【０００９】
また、本発明は、ＡＥＳ(Advanced Encryption Standard)アルゴリズムの暗号機能を実施するための上記の改良されたプログラマブルデータ暗号化エンジンを特徴とする。第１モードにおいて、ＡＥＳ選択機能を実施し且つＧＦ−１（２８）での逆数を実行し且つアフィンオーバーＧＦ（２）変換を適用するために第１データブロックに応答してサブバイト変換を獲得し、且つ、第２モードにおいて、上記サブバイト変換に応答して、上記サブバイト変換を変換してシフトロウ変換を得るパラレルルックアップテーブルシステムを備える。ガロアフィールド乗算器は、上記シフトロウ変換を変換してミックスカラム変換を得ると共にラウンドキーを加え、結果として上記第１データブロックのＡＥＳ(Advanced Encryption Standard)暗号機能をもたらす。
好ましい実施形態において、上記パラレルルックアップテーブルは、第３モードにおいて、マスターキーに応答してサブキーを取得してもよく、そして第４モードにおいて、上記サブキーに応答してラウンドキーを発生してもよい。
【００１０】
その他の目的、特徴および利点については、当業者であれば、添付の図面と好ましい実施形態の以下の記載から理解するであろう。
【発明を実施するための最良の形態】
【００１１】
好ましい実施形態、または以下に開示される実施形態の他に、本発明は、他の実施形態が可能であり、種々の方法で実行または実施できる。従って、本発明は、以下の説明に述べられ又は図示される要素の配置および構成の細部に対する適用に制限されない。
【００１２】
図１には、関連する入力回路１２および出力回路１４と共に、本発明によるＡＥＳ(Advanced Encryption Standard)暗号化エンジン１０が示されている。ＡＥＳ暗号化エンジン１０によって実施されるＡＥＳ(Advanced Encryption Standard)アルゴリズムは図２に示され、ここでは、入来するデータブロック１６は最初にＳＢＯＸ変換１８を経て、そしてシフトロウ変換(shift row transformation)２０の後に、キー２３が付加されるミックスカラム変換(mix column transformation)２２を経る。２４での出力はライン２６上を何回もフィードバックされ、その回数は、選択された特定のＡＥＳアルゴリズムに依存する。例えば、以下のチャートIのようである。
【００１３】
【表１】
2005513541.tif 000003
【００１４】
アルゴリズムＡＥＳ−１２８については、キーの長さは４であり、ブロックサイズは４であり、そしてラウンド(round)または繰り返し(iteration)の数は１０であり、一方、ＡＥＳ−１９２については、キーの長さは６であり、ブロックサイズは４であり、繰り返し数は１２であり、そしてＡＥＳ−２５６については、繰り返し数は１４である。ラウンドが実行される度に、新たなキーが取り入れられる。ＡＥＳアルゴリズムサブバイト変換は、Ｓ−ＢＯＸを用いて達成され、ここで、データブロック１６は４つのワード３０，３２，３４，３６から構成され、それぞれは４バイトのＳ００−Ｓ０３，Ｓ１０−Ｓ１３，Ｓ２０−Ｓ２３，Ｓ３０−Ｓ３３である。Ｓ−ＢＯＸ変換は、最初に、ＧＦ−１（２８）での逆数(multiplicative inverse)をとり、そして図３のボックス３８に示されるように行列表現により定義されたアフィンオーバーＧＦ（２）変換(affine over GF(2) transformation)を適用する。その出力は、データブロック１６のサブバイト変換(subbyte transformation)１７である。そして、図４のサブバイト変換１７は、シフトロウ変換を経て、その変換において、第１ロウ３０ａは全くローテイション(rotation)されず、第２ロウ３２ａは１バイトだけローテイションされ、第３ロウ３４ａは２バイトだけローテイションされ、第４ロウ３６ａは３バイトだけローテイションされる。このシフトは図式４０で表現され、結果としてシフトロウ変換されたデータブロック１９を発生し、そこには同一の値が現れるが、ロウ３２ｂ，３４ｂ，３６ｂにおいて１つ，２つ，３つの場所(place)だけシフトされる。それから、図５のミックスカラム変換およびラウンドキーの付加により、データブロック１９は、１回でカラムがミックスカラム変換行列４２と乗算され、この例では、第２のカラム４４がミックスカラム変換行列と乗算されることが示されている。これにラウンドキーが加えられ、このケースではカラム４６であり、第１データブロック１６の完結したＡＥＳ(Advanced Encryption Standard)暗号機能４８が得られる。
【００１５】
一実施形態において、本発明によれば、ＡＥＳ暗号化エンジン１０は、Ｓ−ＢＯＸ変換を実施するためのパラレルルックアップテーブル(parallel look-up table)６０と、シフトロウ変換を実施するためのパラレルルックアップテーブル６２と、ミックスカラム及びキー付加演算を実施するためのガロアフィールド乗算器６４を備えても良い。各繰り返しで異なるキーまたはラウンドキーが提供される。例えば、ＡＥＳ１２８アルゴリズムの実施では、１０のラウンドが存在し、各ラウンドはキーが供給される。各繰り返しで異なるラウンドキー６６が取り入れられる。ラウンドキーは、ローテイションワードパラレルルックアップテーブル７４及びＳ−ＢＯＸパラレルルックアップテーブル７６を備えるキージェネレータ回路７２により、入力７１を通して取り入れられたマスターキーからキージェネレータ６８によって発生される。ローテイションワードパラレルルックアップテーブル７４は、ワード（ａ０，ａ１，ａ２，ａ３）を入力として取り、そして巡回順列(cyclical permutation)を実施し、そしてワードを（ａ１，ａ２，ａ３，ａ０）として返す。Ｓ−ＢＯＸパラレルルックアップテーブル７６は、図３に更に詳細に表現されるように、図２のＳ−ＢＯＸ機能１８と同じようなＳ−ＢＯＸ機能を実施する。一旦、キー又はサブキーが発生され、図６におけるキーストレージ８０に格納されると、それらは、各繰り返し又は実施されるラウンドについて同時にラウンドキーとして使用され、ここで、ラウンドキーは４つのワードを備え、それぞれ８ビットバイトである。
【００１６】
Ｓ−ＢＯＸパラレルルックアップテーブル６０は、図７に示されるように作用し、ここで、４つの８ビットバイトから成るデータワード９０は、アドレス変換回路９２に与えられ、それはメモリ９４における特定のアドレスを指定し、そしてメモリは或る相関関係で読み出され、サブバイト変換に従ってデータワード９０’を生成し、その結果として図３のデータブロック１７を生じる。シフトロウパラレルルックアップテーブル６２は、アドレス変換回路１０２を通して図８のデータワード１００を適用して、図４に示されるようなローテイションされたバイト構成１０６を生じることに関連して読み出されるメモリ１０４の特定の場所を指定することにより、図４に示されるようなバイトローテイションを実施する。
【００１７】
ミックスカラムガロアフィールド乗算器６４は、図９の４つのガロアフィールド乗算リニア変換器１１０，１１２，１１４，１１６を用いて実施され、それぞれがデータブロック１２６のカラム１１８，１２０，１２２，１２４を処理してデータブロック全体が一度に処理されるように実施されてもよい。各ガロアフィールド乗算リニア変換器１１０−１１６は、３つの抵抗ＲＡ，ＲＢ，ＲＣを備え、４つの全てが同じように動作し、従ってガロアフィールドリニア変換器１１０の説明は、４つの全ての動作を説明するのに足りる。ガロアフィールド乗算リニア変換器１１０は、サイクル１，２，３，４として識別される４サイクルにわたって動作するものとして示されている。サイクル１においては乗算および加算(multiply and add)動作がなされ、一方、サイクル２，３，４では乗算積算(multiply accumulation)動作が発生する。抵抗ＲＡは、ミックスカラム変換行列１２８を入力する。抵抗ＲＢは、カラム１１８における複数のバイトを入力し、抵抗ＲＣは、キー１３０，Ｋ０−Ｋ３を入力する。第１サイクルにおいて、行列１２８における最初の位置の値は、カラム１１８におけるＳ００の値と乗算され、そしてキーＫ０がそれに加えられて出力Ｚ０が形成される。次のサイクルでは、行列１２８からの次の値０３がカラム１１８の次の値Ｓ１０と乗算され、そしてここでは出力Ｚ０に加えられて乗算積算動作が完結する。次の二つのサイクルは、行列における次の二つの値とカラムにおける次の二つの値を用いて同様に動作を実施する。最終的な出力は次の式として示される。
【００１８】
【数１】
2005513541.tif 000004
【００１９】
ガロアフィールド乗算リニア変換器１１０−１１６のそれぞれは、図１０に示されるようにプログラムされ、ここで、サークル１４０は、イネーブルにされた排他的ＯＲゲートとの接続を示す。このプログラミングは、ＡＥＳガロアフィールドＧＦ−１（２８）既約多項式（ｘ８＋ｘ４＋ｘ３＋ｘ＋１）を達成する。ローテイションワードパラレルルックアップテーブル７４は、図８に示されるようなシフトロウパラレルルックアップテーブル６２と同様の方法で実施されてもよい。そして、キージェネレータ６８におけるＳ−ＢＯＸパラレルルックアップテーブル７６は、図７に示されるＳ−ＢＯＸパラレルルックアップテーブル６０として実施されてもよい。
【００２０】
これまでに示された実施形態は、二つに分離したパラレルルックアップテーブルを使用してＡＥＳ暗号化エンジンにおけるシフトロウ及びＳ−ＢＯＸを実施し、そして第３及び第４パラレルルックアップテーブルを使用してラウンドキー発生におけるＳ−ＢＯＸ動作およびローテイションワードを行ったが、これは本発明の必然的な制限ではない。例えば、図１１に示されるように、入力回路１２ａは、コンフィギュレーションコントロール回路１５０を介して単一のパラレルルックアップテーブル６１と相互接続されてもよく、コンフィギュレーションコントロール回路１５０は、ライン１５２上の命令でＳ−ＢＯＸ動作またはシフトロウ動作の何れかのためにパラレルルックアップテーブル６１を設定することができる。これらの動作は異なる時刻に発生するので、同一のパラレルルックアップテーブルは２倍のデューティで各機能を実施できるが、異なる時刻であれば必然的にハードウェアを節約する結果になる。加えて、図１２のパラレルルックアップテーブル６１ａは、４つの異なるモード、即ち、コンフィグレーション回路１５４の制御の下で、暗号ラウンドのためのシフトロウおよびＳ−ＢＯＸ、並びにキー発生のためのＳ−ＢＯＸおよびローテイションワードに取り入れられてもよい。従って、ライン１５６上の命令に応答するコンフィギュレーション回路１５４は、パラレルルックアップテーブル６１ａを構成して、暗号Ｓ−ＢＯＸ、暗号シフトロウ、キーローテイションワード、又は、キーＳ−ＢＯＸ動作の何れかを実施することができる。暗号動作が発生する第１及び第２のモードにおいて、パラレルルックアップテーブル６１ａからの出力は、ガロアフィールド乗算器６４に直接的に与えられるであろう。キー発生、ローテイションワード、およびＳ−ＢＯＸ機能が実施される第３および第４のモードにおいては、パラレルルックアップテーブル６１ａからの出力は、キーストレージ８０ａに配信され、ここで、それはガロアフィールド乗算器６４によってアクセスされることができる。図１２は、実際の論理回路を備えるモードスイッチ回路１５４を使用するが、これは本発明の必然的な制限ではない。本発明は、４つのパラレルルックアップテーブル（ＰＬＵＴｓ）が一つの２７２バイトリニアパラレルルックアップテーブル（ＰＬＵＴ）として取り扱われることを実現して簡単化できる。２５６バイトのＳ−ＢｏｘＰＬＵＴは、暗号およびラウンドキージェネレータによって共有することができる。そして、二つのメモリレスのバイトローテイション動作であるところのシフトロウ及びワードシフト変換は、同一の１６バイトルックアップテーブルを共有することができる。パラレルルックアップテーブルにおける正確なアドレスは、開始アドレスをルックアップされる値に加えることにより見つけ出される。従って、モードスイッチ回路は、単に、二つのパラレルルックアップテーブル開始アドレスとして実施できる。パラレルルックアップテーブルの動作は、２００２年４月２４日に出願されたSteinらの「RECONFIGURABLE LOOK-UP TABLE SYSTEM」と題された米国特許出願（ＡＤ−３０５Ｊ）において更に詳しく説明されている。
【００２１】
図１３に、本発明の実施例におけるガロアフィールド乗算／乗算−加算／乗算−積算システム２１０が示されており、それは、選択的に、レジスタ２１４および２１６の値を乗算してそれらの積を出力レジスタ２１１に供給し、または、レジスタ１４および１６の値を乗算してそれらの積をレジスタ２１５の値と合計し、その結果を出力レジスタ２１１に供給する。
【００２２】
図１３におけるシステム２１０の図１４における更なる詳細な実施形態の説明の前に、ガロアフィールド乗算および加算を簡単に次に述べる。
【００２３】
ガロアフィールドＧＦ（ｎ）は、二つの２進演算が実施可能な要素のセットである。加算および乗算は、交換法則、結合法則、分配法則を満足しなければならない。有限数の要素を持っているフィールドは有限フィールドである。２進フィールド(binary field)の例は、モジューロ２加算(modulo 2 addition)およびモジューロ２乗算(modulo 2 multiplication)の下での{0,1}のセットであり、ＧＦ（２）と表される。モジューロ２加算およびモジューロ２乗算は、次の図に示される表によって定義される。第１ロウおよび第１カラムは、ガロアフィールド加算器および乗算器への入力を示す。例えば、１＋１＝０および１＊１＝１についてである。
【００２４】
【表２】
2005513541.tif 000005
【００２５】
【表３】
2005513541.tif 000006
【００２６】
一般に、ｐが素数であれば、ＧＦ（ｐ）がｐ要素を持つ有限フィールド(finite field)であり、ＧＦ（ｐｍ）がｐｍ要素を持つ拡大フィールド(extension field)であることが示される。加えて、フィールドの種々の要素は、それを異なる指数に上げることにより、一つのフィールド要素αの様々な累乗として発生できる。例えば、ＧＦ（２５６）は、原始要素(primitive element)αを２５６の異なる累乗に上げることにより、全て発生され得る２５６個の要素を有する。
【００２７】
加えて、係数が２進値(binary)である多項式はＧＦ（２）に属する。ｍ次(degree m)のＧＦ（２）上の多項式は、ｍよりも小さく且つゼロよりも大きい次数(degree)のＧＦ（２）上の任意の多項式で割り切れなければ、既約(irreducible)であると言われる。多項式Ｆ（Ｘ）＝Ｘ２＋Ｘ＋１は、ＸまたはＸ＋１の何れでも割り切れないので、既約多項式である。Ｘ２ｍ−１＋１を割り切れる次数ｍの既約多項式は原始多項式として知られている。所定のｍについて、一つよりも多くの原始多項式が存在するかもしれない。最もよく通信基準(communication standard)において使用されるｍ＝８についての原始多項式の例は、Ｆ（Ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ２＋ｘ＋１である。
【００２８】
ガロアフィールド加算(Galois field addition)は、モジューロ加算と同一であるので、ソフトウェアで実施することが容易である。例えば、もし、２９および１６がＧＦ（２８）における二つの要素であれば、それらの加算は、単に次のようなＸＯＲ演算として行われる。
【００２９】
【数２】
2005513541.tif 000007
【００３０】
他方のガロアフィールド乗算は、原始要素αの繰り返し乗算により、ＧＦ（２４）の全ての要素を計算する次の例によって示されるように、やや複雑である。ＧＦ（２４）についてフィールド要素を発生するために、次数ｍ＝４の原始多項式Ｇ（ｘ）は、Ｇ（ｘ）＝Ｘ４＋Ｘ＋１のように選択される。乗算の結果が依然としてフィールドの要素であるように乗算をモジューロとするために、５番目のビットセットを有する要素は、次の恒等式(identity)Ｆ（α）＝α４＋α＋１＝０を用いて４ビットの計算結果に持ち込まれる。この恒等式は、α４＝１＋αとすることにより、繰り返し使用されてフィールドの異なる要素を形成する。従って、フィールドの要素は次のように表される。
{0,1,α,α２,α３,1+α,α+α２,α２+α３,1+α+α３,…1+α３}
αはＧＦ（２４）についての原始要素であるから、それは２に設定されて、ＧＦ（２４）のフィールド要素を{0,1,2,4,8,3,6,12,11,…9}として発生する。
【００３１】
ガロアフィールド多項式乗算は二つの基本的なステップで実施できることが分かる。第１ステップは、代数的に拡大された多項式積c(x)=a(x)*b(x)の計算であり、同類の指数は収集（対応する項の間のＸＯＲ演算に相当する加算）されて、c(x)を与える。
例えば、c(x)=(a3x3+a2x2+a1x1+a0)*(b3x3+b2x2+b1x1+b0)
C(x)=c6x6+c5x5+c4x4+c3x3+c2x2+c1x1+c0
ここで：
【００３２】
【数３】
2005513541.tif 000008
【００３３】
第２ステップは、d(x)=c(x) modulo p(x) の計算である。ここで、p(x)は既約多項式である。
説明のため、乗算は、多項式 モジューロ 既約多項式の乗算で実施される。例えば、（p(x)=x8+x4+x3+x+1であれば）
{57}*{83}={c1}
であり、なぜなら、
これら{*}バイトのそれぞれは、{b7,b6,b5,b4,b3,b2,b1,b0}の順で個々のビット値（０または１）の連結であり、多項式表現：
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0x0=Σbixi
を用いて有限要素として解釈されるからである。
【００３４】
【数４】
2005513541.tif 000009
【００３５】
本発明による図２の改良されたガロアフィールド乗算システム１０は、レジスタ１４の二つの２進多項式をレジスタ１６の多項式と乗算してそれらの積を得るための２進多項式乗算回路１２を備え、その積は、チャートIIIのように定義されるような１６項の多項式c(x)によって与えられる。乗算回路１２は、実際には複数の乗算セル１２ａ，１２ｂ，１２ｃ…１２ｎを備える。
【００３６】
【数５】
2005513541.tif 000010
【００３７】
各項は、＊により表されるようなＡＮＤ関数を含み、各一対の項は、
【００３８】
【数６】
2005513541.tif 000011
【００３９】
により表される論理排他的ＯＲで結合される。この積は、ガロアフィールドリニア変換回路１８に与えられ、このガロアフィールドリニア変換回路１８は、それぞれが１６ｘ８セル３５からなる多数のガロアフィールドリニア変換ユニット１８ａ，１８ｂ，１８ｃ…１８ｎを備えてもよく、それは、乗算器１２によって発生された積に応答して、所定の既約多項式について多項式積のモジューロ剰余を１サイクルで予測する。乗算は、ユニット１８ａ，１８ｂ，１８ｃ…１８ｎにおいて実施される。このガロアフィールドリニア変換回路の動作及び構成並びにその変換ユニットのそれぞれ及びその乗算機能は、２００２年１月１８日に出願されたシリアル番号１０／０５１５３３のSteinらによる米国特許出願「GALOIS FIELD LINEAR TRANSFORMER」（ＡＤ−２３９Ｊ）、および、２００１年１１月３０日に出願されたシリアル番号６０／３３４５１０のSteinらによる「GALOIS FIELD MULTIPLIER SYSTEM」（ＡＤ−２４０Ｊ）において更に詳細に説明されており、それぞれは、参照として本明細書に完全に組み込まれる。ガロアフィールドリニア変換ユニットのそれぞれは、既約多項式で多項式積を除算することにより、１サイクルでモジューロ剰余を予測する。その既約多項式は、例えばチャートIVに示されるもののどれであってもよい。
【００４０】
【数７】
2005513541.tif 000012
【００４１】
【数８】
2005513541.tif 000013
【００４２】
ＧＦ（２８）が全累乗２８(all powers ２８)及びそれ以下で実施することができるガロアフィールド乗算器がチャートIVに示されている。より低い多項式については、選択された指数よりも高い係数がゼロであり、例えば、ＧＦ（２５）が実施されれば、ＧＦ（２５）とＧＦ（２８）との間の係数はゼロであろう。そして、予測はそのレベルを超えないであろう。
【００４３】
この特定の例について、グループＧＦ（２８）における既約または原始多項式０ｘ１１Ｄが選択されている。ストレージセル２２６を持っているストレージ回路２２０は、その特定の原始または既約多項式についてモジューロ剰余を予測するために係数のセットをガロアフィールドリニア変換回路に供給する。
本発明によるＧＦ乗算の例は次のようである。
【００４４】
【数９】
2005513541.tif 000014
【００４５】
図１４の本発明によれば、ガロアフィールド上の係数を持つ第３多項式を備える第３レジスタ２１５が存在する。通常、レジスタ２１４，２１６および２１５のそれぞれは、各レジスタがトータルで４バイトまたは３２ビットを含むように、それぞれが８ビットの４つのバイトセクションを備える。レジスタ２１５からの出力は、ガロアフィールド加算回路２１９に配信され、それは、この実施形態では、バス２１７と、バス２１７の各ビットに対して一つの複数の排他的ＯＲゲート２１９とを備える。ガロアフィールドリニア変換回路２１８で得られた積は、出力レジスタ回路２１１のＭｐｙレジスタ２２３において乗算の簡単な積が得られるようにバス２２１上を配信され、一方、バス２２１上の積と第３多項式との組み合わせは、排他的ＯＲ回路２１９’を備える加算回路２１９において結合されて、出力レジスタ回路２１１のＭｐａレジスタ２２５に乗算加算または乗算積算結果が供給される。例えば、もし二つの新たな値が入力レジスタ回路２１４および２１６に渡される間にガロアフィールド乗算システム２１０の出力が再帰的に入力レジスタ回路２１５にフィードバックされれば、乗算積算(MAC; Multiply and accumulate)が実施される。他方、もし二つの新たな値が入力レジスタ２１５および２１６に渡される間にガロアフィールド乗算システム２１０の出力が再帰的に入力レジスタ２１４にフィードバックされれば、乗算加算(MPA; Multiply and add)が実施される。このようにして、レジスタ２１４および２１６における多項式全体の乗算と、レジスタ２１５における多項式とそれらの加算とが全て１サイクルの動作で完結する。ガロアフィールド乗算システム２１０は、２００２年８月２６日に出願されたSteinらによる「GALOIS FIELD MULTIPLY/MULTIPLY-ADD/MULTIPLY ACCUMULATE」と題された米国特許出願（ＡＤ−２９９Ｊ）において更に詳しく説明されており、これを参照することにより本明細書に組み込まれる。
【００４６】
図１５に、本発明を実施するための再設定可能(reconfigurable)なパラレルルックアップテーブルシステム３１０が示されており、ロウインデックスレジスタＲ２ ３１２と、カラムインデックスレジスタＲ１ ３１４と、アドレス変換回路３１６と、多数のルックアップテーブルを含むメモリ３１８とを備える。メモリ３１８からの出力は、出力レジスタ３２０に配信される。メモリ３１８は、複数のルックアップテーブルと、それらのルックアップテーブルにおいてルックアップされる値を保持するロウインデックスレジスタ３１２とを備える。例えば、ロウインデックスレジスタ３１２は、メモリ３１８でルックアップテーブルにおいてルックアップされる角度(angle)を保持してもよく、ここでは、それらの角度に対し、ルックアップテーブルのそれぞれが、異なる機能、サイン値、コサイン値、タンジェント値の中の一つ、等々を備えてもよい。カラムインデックスレジスタ３１４は、メモリに格納された各ルックアップテーブルの開始アドレスを表す値を格納する。例えば、もしメモリ３１８が、それぞれ６４バイトの８個のルックアップテーブルを保持すれば、カラム３０，３２，３４，３６，３８，４０，４２，４４と一致するそれらルックアップテーブルについての開始点は、０，６４，１２８，１９２，２５６，３２０，３８４，４４８であろう。アドレス変換回路１６は、ロウインデックスレジスタ３１２の値を、ルックアップテーブルのそれぞれの開始アドレスの表示と結びつけて、インデックスレジスタにおける各値に対するアドレスを同時に発生し、それらの値の機能を並列に各ルックアップテーブルに配置する。パラレルルックアップテーブルシステム３１０は、２００２年４月２４日に出願されたSteinらの米国特許出願シリアル番号１０／１３１００７の「RECONFIGURABLE LOOK UP TABLE SYSTEM」（ＡＤ−３０５Ｊ）に更に詳細に説明されており、これ参照することにより本明細書に組み込まれる。
【００４７】
本発明の特定の特徴がいくつかの図面に示されると共に他には示されていないが、これは、単に便宜のためであり、各特徴は、本発明による任意の又は全ての他の特徴と結びつけられてもよい。本明細書で使用されている用語“備える(include)”、“具備する(comprising)”、“有する(having)”および“持つ(with)”は、広く且つ包括的に解釈されるべきであり、如何なる物理的な相互接続にも限定されない。更に、本願の如何なる実施形態も、単にあり得るものとして捉えるべきではない。
他の実施形態は当業者には明らかであり、本願請求項の範囲内である。
【図面の簡単な説明】
【００４８】
【図１】本発明によるＡＥＳ(Advanced Encryption Standard)暗号化エンジンのブロックダイアグラムである。
【図２】基本的ＡＥＳ暗号アルゴリズムを示す図式的ブロックダイアグラムである。
【図３】図２のＡＥＳ暗号アルゴリズムのサブバイト変換を示す図式的ブロックダイアグラムである。
【図４】図２のＡＥＳ暗号アルゴリズムのシフトロウ変換を示す図式的ブロックダイアグラムである。
【図５】図２のＡＥＳ暗号アルゴリズムによるラウンドキーの付加とミックスカラム変換を示す図式的ブロックダイアグラムである。
【図６】本発明による図１のＡＥＳ暗号化エンジンの更に詳細な図式的ブロックダイアグラムである。
【図７】図６のＳＢＯＸパラレルルックアップテーブルの更に詳細な図式的ブロックダイアグラムである。
【図８】図６のシフトロウパラレルルックアップテーブルの更に詳細な図式的ブロックダイアグラムである。
【図９】図６のミックスカラムガロアフィールド乗算器の更に詳細な図式的ブロックダイアグラムである。
【図１０】ＡＥＳアルゴリズムのミックスカラム機能を達成するためのガロアフィールド変換器のプログラミングを示す図式的ブロックダイアグラムである。
【図１１】暗号Ｓ−ＢＯＸおよびシフトロウ動作を実施するために単一のパラレルルックアップテーブルが使用される本発明によるＡＥＳ暗号化エンジンの図式的ブロックダイアグラムである。
【図１２】ラウンドキー発生についてのＳ−ＢＯＸ動作およびローテイションワードと同様に、シフトロウ動作および暗号Ｓ−ＢＯＸを実施するために単一のパラレルルックアップテーブルが使用される本発明によるＡＥＳ暗号化エンジンの図式的ブロックダイアグラムである。
【図１３】本発明を実施するために使用できるガロアフィールド乗算／乗算−加算／乗算−積算システムの簡単化されたブロックダイアグラムである。
【図１４】図１３の乗算／乗算−加算／乗算−積算システムの更に詳細な図である。
【図１５】本発明を実施するために使用される再設定可能(reconfigurable)なパラレルルックアップテーブルシステムの簡単化されたブロックダイアグラムである。
【図１】
2005513541.tif 000015
【図２】
2005513541.tif 000016
【図３】
2005513541.tif 000017
【図４】
2005513541.tif 000018
【図５】
2005513541.tif 000019
【図６】
2005513541.tif 000020
【図７】
2005513541.tif 000021
【図８】
2005513541.tif 000022
【図９】
2005513541.tif 000023
【図１０】
2005513541.tif 000024
【図１１】
2005513541.tif 000025
【図１２】
2005513541.tif 000026
【図１３】
2005513541.tif 000027
【図１４】
2005513541.tif 000028
【図１５】
2005513541.tif 000029
【国際調査報告】
2005513541.tif 000030