(57)【要約】  暗号化／復号ユニット、変換モジュール、方法、およびコンピュータ・プログラムは、暗号化変換および逆暗号化変換の両方のための共通論理を共用して、待機時間を僅かに増加させるだけで、必要とされるゲートの数を削減する。鍵スケジュール・ユニットが、少なくとも１つの鍵の値を提供する。変換モジュールは、鍵スケジュール・ユニットと通信可能であり、平文／暗号文のブロックを第１の複数の行内の所定数のバイト・ユニットに変換する。変換モジュールは、第１の複数の行から第２の複数の行を生成する暗号化関数および第２の複数の行から第１の複数の行を生成する逆暗号化関数の両方の変換用に共用回路を利用するＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールを含む。ＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールは、ＡＥＳで実行されるＭｉｘＣｏｌｕｍｎおよびＩｎｖＭｉｘＣｏｌｕｍｎの組み合わせを実行する。ブロック・ラウンド・ユニットは、所定数のバイト・ユニットを暗号文／平文に暗号化／復号する。
2006529031.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの鍵の値を提供するための鍵スケジュール・ユニットと、
前記鍵スケジュール・ユニットと通信可能であり、平文／暗号文のブロックを第１の複数の行内の所定数のバイト・ユニットに変換する変換モジュールと、
前記所定数のバイト・ユニットを暗号文／平文に暗号化／復号するためのブロック・ラウンド・ユニットとを備え、
前記変換モジュールが、前記第１の複数の行から第２の複数の行を生成する暗号化関数および前記第２の複数の行から前記第１の複数の行を生成する逆暗号化関数の両方の変換用に共用回路を利用するＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールを含む、暗号化／復号ユニット。
【請求項２】
前記暗号化関数が、高度暗号化標準（ＡＥＳ）によるＭｉｘＣｏｌｕｍｎ関数を含む、請求項１に記載の装置。
【請求項３】
前記逆暗号化関数が、高度暗号化標準（ＡＥＳ）によるＩｎｖＭｉｘＣｏｌｕｍｎ関数を含む、請求項１に記載の装置。
【請求項４】
前記所定数のバイト・ユニットが、８バイト（１２８ビット）に等しい、請求項１に記載の装置。
【請求項５】
平文／暗号文のデータ・ブロックを入力するための入力モジュールと、暗号文／平文の出力を保存／表示するための出力モジュールとをさらに備える、請求項１に記載の装置。
【請求項６】
前記ＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールが、各ビットに関する以下の共通論理
Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]
Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]
Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]
Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]
Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]
Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]
Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]
Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]
のための共用回路を含む、請求項１に記載の装置。
【請求項７】
前記ＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールの前記共用回路が、ＣＭＯＳゲートを含む、請求項１に記載の装置。
【請求項８】
ＭｉｘＣｏｌｕｍｎＡｌｌ関数を実行するために前記ＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールによって使用されるゲートの総数が、別々の回路を利用するＭｉｘＣｏｌｕｍｎ関数およびＩｎｖＭｉｘＣｏｌｕｍｎ関数によって使用されるゲートの組み合わせ総数よりも少ない、請求項７に記載の装置。
【請求項９】
暗号化／復号のために複数行のデータの暗号化および逆暗号化を実行する変換モジュールであって、
前記複数行のデータから新しい行のデータを生成する暗号化関数および前記新しい行のデータから前記複数行を生成する逆暗号化関数の両方の変換用に共用回路を利用するＭｉｘＣｏｌｕｍｎＡｌｌサブモジュールを備える変換モジュール。
【請求項１０】
前記共用回路が、８ビット以上用に提供される、請求項９に記載の変換モジュール。
【請求項１１】
前記共用回路が、少なくとも８ビット用に提供され、各ビットに関する以下の共通ブール論理
Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]
Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]
Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]
Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]
Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]
Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]
Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]
Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]
を有する、請求項９に記載の変換モジュール。
【請求項１２】
前記モジュールが、無線通信によって受信される平文／暗号文を変換する手段を備える、請求項１１に記載の変換モジュール。
【請求項１３】
前記無線通信が、８０２．１１形式を含む、請求項１２に記載の変換モジュール。
【請求項１４】
前記複数行のデータが、合計で少なくとも１２８ビットになる、請求項９に記載の変換モジュール。
【請求項１５】
データ暗号化／復号のための方法であって、
（ａ）暗号化／復号のために少なくとも１つのデータ・ブロックを受信するステップと、
（ｂ）ステップ（ａ）からの前記少なくとも１つのブロックをバイト・ユニットに変換するステップと、
（ｃ）各ラウンド用の暗号化／復号のための鍵の値をブロック・ラウンド・ユニットに提供するステップと、
（ｄ）暗号化／復号されたブロックを出力装置に出力するステップとを含み、
少なくとも１つのブロックを変換する前記ステップが、暗号化変換および逆暗号化変換の両方で共通の論理を共用することによって実行される方法。
【請求項１６】
前記逆暗号化関数が、高度暗号化標準（ＡＥＳ）によるＩｎｖＭｉｘＣｏｌｕｍｎ関数を含む、請求項１５に記載の方法。
【請求項１７】
前記暗号化関数が、高度暗号化標準（ＡＥＳ）によるＭｉｘＣｏｌｕｍｎ関数を含む、請求項１５に記載の方法。
【請求項１８】
ブロック当たりのバイト・ユニットの総数が、８バイトに等しい、請求項１５に記載の方法。
【請求項１９】
コンピュータ可読媒体に収められた、暗号化／復号の際に共通論理を共用するための実行可能命令を含む、暗号化／復号のためのコンピュータ・プログラムであって、
（ａ）暗号化／復号のために少なくとも１つのデータ・ブロックを受信するための実行可能命令と、
（ｂ）ステップ（ａ）からの前記少なくとも１つのデータ・ブロックを所定数のバイト・ユニットに変換するための実行可能命令であって、少なくとも１つのブロックの前記変換が、暗号化変換および逆暗号化変換の両方で共通の論理を共用することによって実行される実行可能命令と、
（ｃ）各ラウンド用の暗号化／復号のための鍵の値をブロック・ラウンド・ユニットに提供するための実行可能命令と、
（ｄ）暗号化／復号されたデータ・ブロックを出力装置に出力するための実行可能命令とを含むコンピュータ・プログラム。
【請求項２０】
ステップ（ｂ）の実行可能命令が、各ビットに関する以下の共通論理
Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]
Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]
Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]
Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]
Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]
Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]
Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]
Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]
のための共用回路用の命令をさらに含む、請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
前記出力装置が、ディスプレイを含む、請求項１９に記載のコンピュータ・プログラム。
【請求項２２】
前記出力装置が、記憶装置を含む、請求項１９に記載のコンピュータ・プログラム。
【請求項２３】
前記出力装置が、プリンタを含む、請求項１９に記載のコンピュータ・プログラム。
【請求項２４】
前記出力装置が、無線通信を介して暗号化／復号されたデータを受信する、請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化を実行する方法および装置に関する。より詳細には、本発明は、高度暗号化標準（ＡＥＳ：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）など、暗号化の様々な方法において機能する、Ｍｉｘ  Ｃｏｌｕｍｎ関数の改良に関する。
【背景技術】
【０００２】
スマートカードなどのアイテムやインターネットを介した商取引の利用が拡大するのに伴い、データを暗号化および復号する必要性が、現在ほど不可欠となったことはない。実際、米国政府は、遡ること１９７６年に米国標準として選択されたＤＥＳ（データ暗号化標準）や、続いて標準となったトリプルＤＥＳなどの暗号化標準を、特に米国標準技術局（NIST:National Institute of Standards and Technology）を通じ、多年にわたって選択してきた。近年、ＮＩＳＴは、公式の暗号化標準となるであろう、ＡＥＳに基づく新しい標準を選択するため、複数のＡＥＳアルゴリズムを評価している。Ｊｏａｎ  ＤａｅｍｅｎおよびＶｉｎｃｅｎｔ  Ｒｉｊｍｅｎは、ＮＩＳＴによって承認される暗号化アルゴリズムを提出し、２００１年１１月２６日に同アルゴリズムを公表した。このアルゴリズムは、Ｒｉｊｎｄａｅｌアルゴリズムと呼ばれている。ＡＥＳは、性能、柔軟性、効率性、および実施がより容易な方法に関して、従来技術の５６ビット暗号化を改良するため、１２８、１９２、および２５６ビットの３つのシステムを使用する。
【０００３】
ＡＥＳアルゴリズムにおける処理の基本単位はバイトである。内部的に、ＡＥＳアルゴリズムの演算は、ＳＴＡＴＥと呼ばれる、バイトを要素とする２次元配列上で実行される。ＳＴＡＴＥは通常、バイトを要素とする４つの行をもち、各行はＮｂバイトを含むが、Ｎｂはブロック長を３２で割った値である。
【０００４】
暗号化は、データを暗号文と呼ばれる理解不能な形式に変換する。暗号文の復号は、「平文」と呼ばれるデータをその元の形式に変換し戻す。当技術分野における一般的な用語法では、平文を暗号文に変換する一連の変換を「暗号化（Ｃｉｐｈｅｒ）」と呼び、暗号文を平文に変換する一連の変換を「逆暗号化（Ｉｎｖｅｒｓｅ  Ｃｉｐｈｅｒ）」と呼ぶ。暗号化および逆暗号化の両方において、拡張鍵ルーチン（Ｅｘｐａｎｓｉｏｎ  Ｋｅｙ  Ｒｏｕｔｉｎｅ）によって使用される秘密暗号鍵である暗号鍵（Ｃｉｐｈｅｒ  Ｋｅｙ）が、暗号化および逆暗号化ルーチンでＳＴＡＴＥに適用される（ラウンド鍵（ｒｏｕｎｄ  ｋｅｙ）と呼ばれる）一連の値を生成する。
【０００５】
ＡＥＳアルゴリズムの入力および出力は各々、１２８個のビット（０または１の値をもつ数字）のシーケンスから成る。これらのシーケンスは、時にはブロックと呼ばれることがあり、ブロックが含むビットの数は、ブロックの長さと呼ばれる。
【０００６】
ＡＥＳは、情報を復号（ｄｅｃｒｙｐｔ）（復号（ｄｅｃｉｐｈｅｒ））および暗号化（ｅｎｃｒｙｐｔ）（暗号化（ｅｎｃｉｐｈｅｒ））するため、ＭｉｘＣｏｌｕｍｎ変換をその他の変換と共に使用する。暗号化におけるＭｉｘＣｏｌｕｍｎは、ＳＴＡＴＥのすべての行（カラム）を取り込み、行のデータを（他の行とは独立に）混合して、新しい行を生成する。ＩｎｖＭｉｘＣｏｌｕｍｎは、ＭｉｘＣｏｌｕｍｎの逆である逆暗号化の変換である。
【０００７】
図１は、ＳＴＡＴＥ配列の入力および出力の一例を示している。暗号化および逆暗号化の開始において、バイト（ｉｎ０からｉｎ１５）を要素とする入力配列が、図１に示すように、ＳＴＡＴＥにコピーされる。次に、暗号化または逆暗号化演算が、このＳＴＡＴＥ配列上で行われ、その後、その最終的な値が、出力バイトｏｕｔ０からｏｕｔ１５を要素とする配列にコピーされる。
【０００８】
従来技術においては、ハードウェア実装は、暗号化を実施する回路を逆暗号化でせいぜい部分的に再利用できるといったものである。単一回路で正および逆のＭｉｘＣｏｌｕｍｎアルゴリズムを実行して、必要とされる総ゲート数を削減し、その結果、回路全体のサイズを縮小する方法および装置があれば望ましいであろう。
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明は、ＭｉｘＣｏｌｕｍｎ関数用およびＩｎｖｅｒｓｅ  ＭｉｘＣｏｌｕｍｎ関数用に使用される回路の大部分を共用し、その結果、ゲート数を削減する。高速ネットワーキング・プロセッサおよびスマートカード・アプリケーション向けには、より小さなゲート・サイズおよび高いデータ速度が実現される。ダイ・サイズが増えると、デバイスの費用および電力消費はさらに膨らむが、本発明は、非常に小さなゲート・サイズを実現するので、ダイ・サイズを大きく増やすことなく、並列処理が利用可能である。本発明においては、最大パス遅延は、従来技術のデバイスに比べて、それほど長くなることはないが、回路デザインは、著しく小さくすることができる。本発明は、発明者によって「ＭｉｘＣｏｌｕｍｎＡｌｌ」と呼ばれる、これまで当技術分野で知られていなかった関数を実施し、その回路は、非常に僅かしか重複ロジックをもたずに、ＭｉｘＣｏｌｕｍｎおよびＩｎｖＭｉｘＣｏｌｕｍｎ変換の両方を実行する。
【００１０】
本発明はまた、ＭｉｘＣｏｌｕｍｎＡｌｌ関数を実行するための方法、および暗号化／復号プロセスの一部としてＭｉｘＣｏｌｕｍｎＡｌｌ関数を実行するコンピュータ・プログラムを含む。
【００１１】
本発明の上記およびその他の特徴および利点は、以下に示す詳細な説明を添付の図面と併せて読むことによって、より明瞭となるであろう。
【発明を実施するための最良の形態】
【００１２】
以下の説明においては、限定よりも説明を目的として、本発明の完全な理解を提供するために、特定の構成、インタフェース、技法などの具体的な詳細が説明される。しかし、本発明が、それらの具体的な詳細から逸脱する他の実施形態においても実施され得ることは、当業者には明らかであろう。さらに、明瞭さを目的として、よく知られたデバイス、回路、および方法についての詳細な説明は、本発明の説明を不要な詳細によって曖昧にしないために省略される。
【００１３】
図１に関して、ＮＩＳＴによる「ＦＩＰＳ  １９７」に開示されているように、暗号化および逆暗号化の開始において、バイトｉｎ０からｉｎ１５を要素とする配列である入力が、図示するように、ＳＴＡＴＥ配列にコピーされる。次に、暗号化または逆暗号化演算が、このＳＴＡＴＥ配列上で行われ、その後、その最終的な値が、ｏｕｔ０からｏｕｔ１５までのバイトを要素とする配列として示されている出力にコピーされる。有限体における２つの要素の加算は、２つの要素用の多項式の同次項の係数どうしを「加算する」ことによって達成される。加算は、ブール演算の排他的論理和（ＸＯＲ）演算によって実行される（「ＦＩＰＳ  １９７」、ＮＩＳＴ、ｐ．１０）。２つのバイトの加算に関する２進表記例が、以下に示されている。
【数１】
2006529031.tif 000003
…式（１．０）
【００１４】
多項式表現においては、ＧＦ（２８）での乗算は、次数８の既約多項式を法とする多項式の乗算に相当する。多項式は、その因数が１とそれ自身だけの場合、既約である。ＡＥＳアルゴリズムでは、この既約多項式は、
Ｍ<ｘ>＝ｘ8＋ｘ4＋ｘ3＋ｘ＋１    …方程式（１．１）
である。
【００１５】
各対角要素が１に等しい対角行列は、単位行列と呼ばれる。単位行列は、Ｉｎと表記される。
【数２】
2006529031.tif 000004
…式（１．２）
【００１６】
ＡおよびＢがｎ×ｎ行列である場合、
ＡＢ＝ＢＡ＝Ｉｎ      （１．３）
が成り立てば、互いに一方を他方の逆と呼ぶ。
【００１７】
ＭＩＸＣＯＬＵＭＮ（）変換は、Ｓｔａｔｅに１行ずつ作用し、各行を４項の多項式として取り扱う。行は、ＧＦ（２８）上の多項式と見なされ、ＦＩＰＳ、ＮＩＳＴ、１７ページに、
Ａ（ｘ）＝｛０３｝ｘ３＋｛０１｝ｘ２＋｛０１｝ｘ＋｛０２｝
として開示されている定められた多項式ａ（ｘ）を、ｘ４＋１を法として乗じられる。
【００１８】
これは、以下に示された行列の乗算として、書き表すことができる。
【数３】
2006529031.tif 000005
【００１９】
この乗算の結果として、１行内の４つのバイトは、以下によって置き換えられる。
【数４】
2006529031.tif 000006
…式（１．５）
【００２０】
ＭｉｘＣｏｌｕｍｎの逆は、正のＭｉｘＣｏｌｕｍｎと類似している。すべての行は、
Ｄ（ｘ）＝｛０Ｂ｝ｘ3＋｛０Ｄ｝ｘ2＋｛０９｝ｘ＋｛０９｝  …式（１．６）
によって除算される、特定の乗算多項式ｄ（ｘ）を乗じることによって変換される。
【００２１】
式１．６は、ＤａｅｍｅｎおよびＲｉｊｍｅｎ、「Ｔｈｅ  Ｒｉｊｎｄａｅｌ  Ｃｉｐｈｅｒ  Ｂｌｏｃｋ」の１３ページから引用したものである。
【００２２】
本発明は、正および逆変換の両方を実施する回路を使用して、ＭｉｘＣｏｌｕｍｎ変換用の縮小された組み合わせ論理実装を実現する。この実装は、総ゲート数については、従来技術の別々のＭｉｘＣｏｌｕｍｎおよびＩｎｖＭｉｘＣｏｌｕｍｎ変換より少なく、最大遅延パスについては、僅かに長くなる。
【００２３】
従来技術のＭｉｘＣｏｌｕｍｎを実施する、以下に示すようなＣ言語コードが、ＤａｅｍｅｎおよびＲｉｊｍｅｎによって提供されている。
【００２４】
Void MixColumn (word8 a[4] [MAXBC], word8 BC){
/*線形手法で各行の４バイトをミックスする*/
word8 b[4] MAXABC];
int i, j;
for (j=0; j<BC' j++)
for (i=0; i<4; i++)
b[i][j]=mul(2, a[i][j])
^a[(i+2)%4][j])
^a[(i+2)%4][j]
^a[(i+3)%4][j];
for (i=0; i<4; i++)
for (j=0; j<BC; j++)a[I]
注：関数ｍｕｌは、ＧＦ（２８）上の乗算である。
【００２５】
さらに、従来技術のＩｎｖＭｉｘＣｏｌｕｍｎを実施する、Ｃ言語コードが、以下に示すようにＤａｅｍｅｎおよびＲｉｊｍｅｎによって提供されている。
【００２６】
void InvMixColumn (word8 a[4] [MAXABC], word8 BC) {
/*線形手法で各行の４バイトをミックスする*/
/*これは、MixColumnの反対の動作である*/
*/
word8 b[4] [MAXABC];
int i, j;
for (j=0; j<BC; j++)
for (i=0; i<4; i++)
b[i][j]=mul(0xe, a[i][j])
^mul(0xb, a[(i+1)%4][j])
^mul(0xd, a[(i+2)%4][j])
^mul(0x9, a[(i+3)%4][j]);
for (i=0; i<4; i++)
for (j=0; j<BC; j++) a[i][j]=b[i][j];
ＭｉｘＣｏｌｕｍｎ変換が、ＡＮＤおよびＸＯＲゲートを用いて、ＤａｅｍｅｎおよびＲｉｊｍｅｎによって提案されたように実装される場合、回路方程式は、以下のようになるであろう。
【００２７】
ＭｉｘＣｏｌｕｍｎ変換式：
ブール式の縮約（Ｂｏｏｌｅａｎ  ｒｅｄｕｃｔｉｏｎ）後、１バイトに関する式は、以下のようになる。
Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]
Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]
Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]
Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]^b0[7]
Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]^b0[7]^b1[7]
Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]^b0[7]
Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]
Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]
【００２８】
ＩｎｖＭｉｘＣｏｌｕｍｎ変換式：
ブール式の縮約後、１バイトに関する式は、以下のようになる。
Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]^b0[4]^b0[5]^b1[4]^b2[4]^b2[5]^b3[4]
Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]^b0[7]^b0[3]^b0[4]^b1[7]^b1[3]^b2[7]^b2[3]^b2[4]^b3[3]^b3[7]
Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]^b1[7]^b1[2]^b2[3]^b3[2]^b0[3]^b0[2]^b0[6]^b1[6]^b2[6]^b2[2]^b3[7]^b3[6]
Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]^b0[5]^b0[1]^b1[5]^b2[5]^b2[1]^b2[7]^b3[5]^b0[2]^b1[6]^b1[1]^b2[2]^b3[6]^b3[1]
Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]^b0[5]^b1[5]^b2[5]^b2[1]^b2[7]^b3[5]^b0[0]^b0[6]^b3[0]^b3[7]^b2[6]^b2[0]^b1[0]
Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]^b1[7]^b0[0]^b0[6]^b3[6]^b3[7]^b2[0]^b2[6]^b1[6]
Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]^b1[5]^b3[6]^b3[5]^b0[5]^b2[5]^b2[7]^b1[6]
Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]^b1[6]^b2[5]^b3[5]^b0[5]^b0[6]^b2[6]
【００２９】
２つの変換式（ＭｉｘＣｏｌｕｍｎおよびＩｎｖＭｉｘＣｏｌｕｍｎ）を精査すると、各ビットに以下の共通論理が存在することが分かる。
Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]
Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]
Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]
Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]
Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]
Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]
Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]
Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]
【００３０】
したがって、本発明によれば、上記の共通論理が共用され、逆および正変換を１つの回路に組み合わせることによって、本質的に実装ゲート（ｉｎｓｔａｎｔｉａｔｉｏｎ）の数を半分に削減する。
【００３１】
ゲート・サイズおよび最大パス遅延について、比較のために、Ｓｙｎｏｐｓｙｓ社およびＰｈｉｌｉｐｓ社のＣＭＯＳ１８テクノロジ・ライブラリの合成ツールを使用する。
【００３２】
比較：両回路は、
（１）正および逆論理ＭｉｘＣｏｌｕｍｎアルゴリズムごとに別々の回路を使用する従来技術のＡＥＳ提案（ＮＩＳＴ）、および
（２）発明者らによってＭｉｘＣｏｌＡｌｌアルゴリズムと呼ばれる共用論理を用いて両方を実施する本発明による単一回路に従って設計された。
【００３３】
サイズおよび最大遅延の比較は、別々のＭｉｘＣｏｌｕｍｎ設計と、ＭｉｘＣｏｌＡｌｌ回路とで実行された。各設計は、最大パス分析を用いて合成され、時間を測定する。両実装の比較のため、ゲート数によるサイズおよびマイクロメートルによるサイズが提示される。
【００３４】
以下の表１は、別々の回路のＭｉｘＣｏｌｕｍｎおよびＩｎｖＭｉｘＣｏｌｕｍｎと、本発明の縮小論理構造との比較を示している。
【表１】
2006529031.tif 000007
【００３５】
別々の回路による手法の組み合わされたゲート・サイズは、１１２０＋３２１６＝４３３６である。組み合わされた回路のゲート・サイズは３０５３であり、１２８３個のゲートを節約している。別々の回路による最大遅延は、２．２５ｎｓの最長パスである。組み合わされた回路の最大遅延は、２．８４であり、５９０ｐｓ増加しているに過ぎない。使用される回路はＣＭＯＳであるが、その他のタイプの回路で代用することもできる。
【００３６】
図２は、本発明による装置がとり得る一態様を示したブロック図である。ＭｉｘＣｏｌＡｌｌサブモジュール２３０が、Ｒｉｊｎｄａｅｌアルゴリズムを処理可能な、またはＭｉｘＣｏｌｕｍｎおよびＩｎｖＭｉｘＣｏｌｕｍｎ機能がパイプライン処理および非パイプライン処理装置の両方で利用され得る、その他のタイプのアルゴリズムを処理可能な任意のハードウェア装置とともに使用され得ることを、当業者であれば理解されたい。この装置は、変換モジュール２１２を介して、暗号化／復号を行うことができる。変換モジュール２１２は、データ・ブロックをバイト・ユニットに変換し、このモジュール２１２は、鍵付加（ｋｅｙａｄｄ）２１５、置換（ｓｕｂｓｔｉｔｕｔｉｏｎａｌ）２２０、行シフト（ｓｈｉｆｔｒｏｗ）２２５、およびＭｉｘＣｏｌｕｍｎＡｌｌ２３０サブモジュールを含む。鍵スケジュール・モジュール２０１は、各ラウンドの暗号化／復号を行うため、鍵に基づく副鍵の鍵スケジュールを提供する。暗号化処理が行われているときは、副鍵値ラウンド鍵（ｓｕｂｋｅｙ  ｖａｌｕｅ  ｒｏｕｎｄ  ｋｅｙ）が、モジュール２３５に出力され、復号処理が行われているときは、副鍵の値が、逆関数からブロック・ラウンド・モジュール２３５に提供される。
【００３７】
入力／出力モジュール２１０は、暗号化される平文の入力を準備するか、または復号された符号化文の受信２１０を準備する。入力／出力モジュール２１１は、暗号文を受信するか、または復号されて平文として出力される暗号文が入力され得る点を除いて、モジュール２１０と類似している。
【００３８】
図３は、本発明によるコンピュータ・プログラム用の方法およびそのステップを示している。添付の付録は、本発明に従ってプログラムが実行され得る一方法を示したサンプル・ソース・コードを提供している。
【００３９】
ステップ３０５において、少なくとも１つのデータ・ブロックが、暗号化／復号のために受信される。次に、ステップ３１０において、ブロックが、共用論理ＭｉｘＣｏｌＡｌｌモジュールによって、バイト・ユニットに変換される。先に説明したように、ＭｉｘＣｏｌＡｌｌモジュールは、各ビット０〜７に関する共通論理（Bit7=b2[7]^b3[7]^b1[7]^b1[6]^b0[6]、Bit6=b3[6]^b2[6]^b1[5]^b1[6]^b0[5]、Bit5=b3[5]^b2[5]^b1[4]^b1[5]^b0[4]、Bit4=b3[4]^b2[4]^b1[3]^b1[4]^b0[3]^b1[7]、Bit3=b3[3]^b2[3]^b1[2]^b1[3]^b0[2]、Bit2=b3[2]^b2[2]^b1[1]^b1[2]^b0[1]、Bit1=b3[1]^b2[1]^b1[0]^b1[1]^b0[0]^b1[7]、Bit0=b3[0]^b2[0]^b1[0]^b0[7]^b1[7]）を使用する同じ回路を共用して、ＭｉｘＣｏｌｕｍｎ関数およびＩｎｖＭｉｘＣｏｌｕｍｎ関数の両方を実行する。
【００４０】
ステップ３１５において、副鍵の値が、実行される暗号化／復号の各ラウンド用に提供される。最後に、ステップ３２０において、暗号化／復号された文が、記憶装置、ディスプレイ、またはプリンタなどの出力装置に出力される。
【００４１】
本発明の主旨または添付の特許請求の範囲の範囲から逸脱せずに施され得る様々な修正が存在することを、当業者であれば理解されよう。例えば、使用される共通論理のビット数、装置のモジュールおよびサブモジュールのレイアウト、変換されるデータのブロック数、入力および出力モジュールなどはすべて、必要に応じて修正され得る。本発明は、セキュリティ・ネットワーキング・プロセッサ、セキュア・キーボード装置、磁気カード読取装置、スマートカード読取装置、および８０２．１１装置などの無線通信アプリケーションとともに使用可能であるので、データの受信または出力は、共通回路内に含まれることができ、またはＲＦ、光ファイバ、マイクロ波などを介して送信されることができる。そのような場合、送信および受信機能は、様々なタイプの送信からのプロトコル変換とともに含まれる。さらに、例では、８バイト（１２８ビット）のものを示したが、この数は、必要に応じて、および／またはＡＥＳプロトコルの変更に応じて、増やされることも、または減らされることもできる。「平文」および「暗号文」という用語は、専門用語であり、暗号化／復号は、図画、写真、イラスト、図表を対象とすることができ、音声、映像、および／またはマルチメディア・データを対象とすることができることにも留意されたい。
【００４２】
付録
【表２−１】
2006529031.tif 000008
【表２−２】
2006529031.tif 000009
【表２−３】
2006529031.tif 000010
【表２−４】
2006529031.tif 000011
【表２−５】
2006529031.tif 000012
【表２−６】
2006529031.tif 000013
【図面の簡単な説明】
【００４３】
【図１】ＳＴＡＴＥ配列ならびにその入力および出力バイトを示した図である。
【図２】本発明による装置が構成され得る一方法を示した図である。
【図３】本発明による方法の概略を示すフローチャートである。
【図１】
2006529031.tif 000014
【図２】
2006529031.tif 000015
【図３】
2006529031.tif 000016
【国際調査報告】
2006529031.tif 000017
2006529031.tif 000018
2006529031.tif 000019