JP2006529031A - Mixcolumn/invmixcolumn関数のハードウェア実装 - Google Patents
Mixcolumn/invmixcolumn関数のハードウェア実装 Download PDFInfo
- Publication number
- JP2006529031A JP2006529031A JP2006530630A JP2006530630A JP2006529031A JP 2006529031 A JP2006529031 A JP 2006529031A JP 2006530630 A JP2006530630 A JP 2006530630A JP 2006530630 A JP2006530630 A JP 2006530630A JP 2006529031 A JP2006529031 A JP 2006529031A
- Authority
- JP
- Japan
- Prior art keywords
- encryption
- rows
- block
- decryption
- data
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- 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/122—Hardware reduction or efficient architectures
-
- 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
-
- 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/80—Wireless
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
暗号化/復号ユニット、変換モジュール、方法、およびコンピュータ・プログラムは、暗号化変換および逆暗号化変換の両方のための共通論理を共用して、待機時間を僅かに増加させるだけで、必要とされるゲートの数を削減する。鍵スケジュール・ユニットが、少なくとも1つの鍵の値を提供する。変換モジュールは、鍵スケジュール・ユニットと通信可能であり、平文/暗号文のブロックを第1の複数の行内の所定数のバイト・ユニットに変換する。変換モジュールは、第1の複数の行から第2の複数の行を生成する暗号化関数および第2の複数の行から第1の複数の行を生成する逆暗号化関数の両方の変換用に共用回路を利用するMixColumnAllサブモジュールを含む。MixColumnAllサブモジュールは、AESで実行されるMixColumnおよびInvMixColumnの組み合わせを実行する。ブロック・ラウンド・ユニットは、所定数のバイト・ユニットを暗号文/平文に暗号化/復号する。
Description
本発明は、暗号化を実行する方法および装置に関する。より詳細には、本発明は、高度暗号化標準(AES:Advanced Encryption Standard)など、暗号化の様々な方法において機能する、Mix Column関数の改良に関する。
スマートカードなどのアイテムやインターネットを介した商取引の利用が拡大するのに伴い、データを暗号化および復号する必要性が、現在ほど不可欠となったことはない。実際、米国政府は、遡ること1976年に米国標準として選択されたDES(データ暗号化標準)や、続いて標準となったトリプルDESなどの暗号化標準を、特に米国標準技術局(NIST:National Institute of Standards and Technology)を通じ、多年にわたって選択してきた。近年、NISTは、公式の暗号化標準となるであろう、AESに基づく新しい標準を選択するため、複数のAESアルゴリズムを評価している。Joan DaemenおよびVincent Rijmenは、NISTによって承認される暗号化アルゴリズムを提出し、2001年11月26日に同アルゴリズムを公表した。このアルゴリズムは、Rijndaelアルゴリズムと呼ばれている。AESは、性能、柔軟性、効率性、および実施がより容易な方法に関して、従来技術の56ビット暗号化を改良するため、128、192、および256ビットの3つのシステムを使用する。
AESアルゴリズムにおける処理の基本単位はバイトである。内部的に、AESアルゴリズムの演算は、STATEと呼ばれる、バイトを要素とする2次元配列上で実行される。STATEは通常、バイトを要素とする4つの行をもち、各行はNbバイトを含むが、Nbはブロック長を32で割った値である。
暗号化は、データを暗号文と呼ばれる理解不能な形式に変換する。暗号文の復号は、「平文」と呼ばれるデータをその元の形式に変換し戻す。当技術分野における一般的な用語法では、平文を暗号文に変換する一連の変換を「暗号化(Cipher)」と呼び、暗号文を平文に変換する一連の変換を「逆暗号化(Inverse Cipher)」と呼ぶ。暗号化および逆暗号化の両方において、拡張鍵ルーチン(Expansion Key Routine)によって使用される秘密暗号鍵である暗号鍵(Cipher Key)が、暗号化および逆暗号化ルーチンでSTATEに適用される(ラウンド鍵(round key)と呼ばれる)一連の値を生成する。
AESアルゴリズムの入力および出力は各々、128個のビット(0または1の値をもつ数字)のシーケンスから成る。これらのシーケンスは、時にはブロックと呼ばれることがあり、ブロックが含むビットの数は、ブロックの長さと呼ばれる。
AESは、情報を復号(decrypt)(復号(decipher))および暗号化(encrypt)(暗号化(encipher))するため、MixColumn変換をその他の変換と共に使用する。暗号化におけるMixColumnは、STATEのすべての行(カラム)を取り込み、行のデータを(他の行とは独立に)混合して、新しい行を生成する。InvMixColumnは、MixColumnの逆である逆暗号化の変換である。
図1は、STATE配列の入力および出力の一例を示している。暗号化および逆暗号化の開始において、バイト(in0からin15)を要素とする入力配列が、図1に示すように、STATEにコピーされる。次に、暗号化または逆暗号化演算が、このSTATE配列上で行われ、その後、その最終的な値が、出力バイトout0からout15を要素とする配列にコピーされる。
従来技術においては、ハードウェア実装は、暗号化を実施する回路を逆暗号化でせいぜい部分的に再利用できるといったものである。単一回路で正および逆のMixColumnアルゴリズムを実行して、必要とされる総ゲート数を削減し、その結果、回路全体のサイズを縮小する方法および装置があれば望ましいであろう。
本発明は、MixColumn関数用およびInverse MixColumn関数用に使用される回路の大部分を共用し、その結果、ゲート数を削減する。高速ネットワーキング・プロセッサおよびスマートカード・アプリケーション向けには、より小さなゲート・サイズおよび高いデータ速度が実現される。ダイ・サイズが増えると、デバイスの費用および電力消費はさらに膨らむが、本発明は、非常に小さなゲート・サイズを実現するので、ダイ・サイズを大きく増やすことなく、並列処理が利用可能である。本発明においては、最大パス遅延は、従来技術のデバイスに比べて、それほど長くなることはないが、回路デザインは、著しく小さくすることができる。本発明は、発明者によって「MixColumnAll」と呼ばれる、これまで当技術分野で知られていなかった関数を実施し、その回路は、非常に僅かしか重複ロジックをもたずに、MixColumnおよびInvMixColumn変換の両方を実行する。
本発明はまた、MixColumnAll関数を実行するための方法、および暗号化/復号プロセスの一部としてMixColumnAll関数を実行するコンピュータ・プログラムを含む。
本発明の上記およびその他の特徴および利点は、以下に示す詳細な説明を添付の図面と併せて読むことによって、より明瞭となるであろう。
以下の説明においては、限定よりも説明を目的として、本発明の完全な理解を提供するために、特定の構成、インタフェース、技法などの具体的な詳細が説明される。しかし、本発明が、それらの具体的な詳細から逸脱する他の実施形態においても実施され得ることは、当業者には明らかであろう。さらに、明瞭さを目的として、よく知られたデバイス、回路、および方法についての詳細な説明は、本発明の説明を不要な詳細によって曖昧にしないために省略される。
図1に関して、NISTによる「FIPS 197」に開示されているように、暗号化および逆暗号化の開始において、バイトin0からin15を要素とする配列である入力が、図示するように、STATE配列にコピーされる。次に、暗号化または逆暗号化演算が、このSTATE配列上で行われ、その後、その最終的な値が、out0からout15までのバイトを要素とする配列として示されている出力にコピーされる。有限体における2つの要素の加算は、2つの要素用の多項式の同次項の係数どうしを「加算する」ことによって達成される。加算は、ブール演算の排他的論理和(XOR)演算によって実行される(「FIPS 197」、NIST、p.10)。2つのバイトの加算に関する2進表記例が、以下に示されている。
…式(1.0)
多項式表現においては、GF(28)での乗算は、次数8の既約多項式を法とする多項式の乗算に相当する。多項式は、その因数が1とそれ自身だけの場合、既約である。AESアルゴリズムでは、この既約多項式は、
M<x>=x8+x4+x3+x+1 …方程式(1.1)
である。
M<x>=x8+x4+x3+x+1 …方程式(1.1)
である。
AおよびBがn×n行列である場合、
AB=BA=In (1.3)
が成り立てば、互いに一方を他方の逆と呼ぶ。
AB=BA=In (1.3)
が成り立てば、互いに一方を他方の逆と呼ぶ。
MIXCOLUMN()変換は、Stateに1行ずつ作用し、各行を4項の多項式として取り扱う。行は、GF(28)上の多項式と見なされ、FIPS、NIST、17ページに、
A(x)={03}x3+{01}x2+{01}x+{02}
として開示されている定められた多項式a(x)を、x4+1を法として乗じられる。
A(x)={03}x3+{01}x2+{01}x+{02}
として開示されている定められた多項式a(x)を、x4+1を法として乗じられる。
MixColumnの逆は、正のMixColumnと類似している。すべての行は、
D(x)={0B}x3+{0D}x2+{09}x+{09} …式(1.6)
によって除算される、特定の乗算多項式d(x)を乗じることによって変換される。
D(x)={0B}x3+{0D}x2+{09}x+{09} …式(1.6)
によって除算される、特定の乗算多項式d(x)を乗じることによって変換される。
式1.6は、DaemenおよびRijmen、「The Rijndael Cipher Block」の13ページから引用したものである。
本発明は、正および逆変換の両方を実施する回路を使用して、MixColumn変換用の縮小された組み合わせ論理実装を実現する。この実装は、総ゲート数については、従来技術の別々のMixColumnおよびInvMixColumn変換より少なく、最大遅延パスについては、僅かに長くなる。
従来技術のMixColumnを実施する、以下に示すようなC言語コードが、DaemenおよびRijmenによって提供されている。
Void MixColumn (word8 a[4] [MAXBC], word8 BC){
/*線形手法で各行の4バイトをミックスする*/
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]
注:関数mulは、GF(28)上の乗算である。
/*線形手法で各行の4バイトをミックスする*/
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]
注:関数mulは、GF(28)上の乗算である。
さらに、従来技術のInvMixColumnを実施する、C言語コードが、以下に示すようにDaemenおよびRijmenによって提供されている。
void InvMixColumn (word8 a[4] [MAXABC], word8 BC) {
/*線形手法で各行の4バイトをミックスする*/
/*これは、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];
MixColumn変換が、ANDおよびXORゲートを用いて、DaemenおよびRijmenによって提案されたように実装される場合、回路方程式は、以下のようになるであろう。
/*線形手法で各行の4バイトをミックスする*/
/*これは、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];
MixColumn変換が、ANDおよびXORゲートを用いて、DaemenおよびRijmenによって提案されたように実装される場合、回路方程式は、以下のようになるであろう。
MixColumn変換式:
ブール式の縮約(Boolean reduction)後、1バイトに関する式は、以下のようになる。
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]
ブール式の縮約(Boolean reduction)後、1バイトに関する式は、以下のようになる。
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]
InvMixColumn変換式:
ブール式の縮約後、1バイトに関する式は、以下のようになる。
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]
ブール式の縮約後、1バイトに関する式は、以下のようになる。
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]
2つの変換式(MixColumnおよびInvMixColumn)を精査すると、各ビットに以下の共通論理が存在することが分かる。
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]
したがって、本発明によれば、上記の共通論理が共用され、逆および正変換を1つの回路に組み合わせることによって、本質的に実装ゲート(instantiation)の数を半分に削減する。
ゲート・サイズおよび最大パス遅延について、比較のために、Synopsys社およびPhilips社のCMOS18テクノロジ・ライブラリの合成ツールを使用する。
比較:両回路は、
(1)正および逆論理MixColumnアルゴリズムごとに別々の回路を使用する従来技術のAES提案(NIST)、および
(2)発明者らによってMixColAllアルゴリズムと呼ばれる共用論理を用いて両方を実施する本発明による単一回路に従って設計された。
(1)正および逆論理MixColumnアルゴリズムごとに別々の回路を使用する従来技術のAES提案(NIST)、および
(2)発明者らによってMixColAllアルゴリズムと呼ばれる共用論理を用いて両方を実施する本発明による単一回路に従って設計された。
サイズおよび最大遅延の比較は、別々のMixColumn設計と、MixColAll回路とで実行された。各設計は、最大パス分析を用いて合成され、時間を測定する。両実装の比較のため、ゲート数によるサイズおよびマイクロメートルによるサイズが提示される。
別々の回路による手法の組み合わされたゲート・サイズは、1120+3216=4336である。組み合わされた回路のゲート・サイズは3053であり、1283個のゲートを節約している。別々の回路による最大遅延は、2.25nsの最長パスである。組み合わされた回路の最大遅延は、2.84であり、590ps増加しているに過ぎない。使用される回路はCMOSであるが、その他のタイプの回路で代用することもできる。
図2は、本発明による装置がとり得る一態様を示したブロック図である。MixColAllサブモジュール230が、Rijndaelアルゴリズムを処理可能な、またはMixColumnおよびInvMixColumn機能がパイプライン処理および非パイプライン処理装置の両方で利用され得る、その他のタイプのアルゴリズムを処理可能な任意のハードウェア装置とともに使用され得ることを、当業者であれば理解されたい。この装置は、変換モジュール212を介して、暗号化/復号を行うことができる。変換モジュール212は、データ・ブロックをバイト・ユニットに変換し、このモジュール212は、鍵付加(keyadd)215、置換(substitutional)220、行シフト(shiftrow)225、およびMixColumnAll230サブモジュールを含む。鍵スケジュール・モジュール201は、各ラウンドの暗号化/復号を行うため、鍵に基づく副鍵の鍵スケジュールを提供する。暗号化処理が行われているときは、副鍵値ラウンド鍵(subkey value round key)が、モジュール235に出力され、復号処理が行われているときは、副鍵の値が、逆関数からブロック・ラウンド・モジュール235に提供される。
入力/出力モジュール210は、暗号化される平文の入力を準備するか、または復号された符号化文の受信210を準備する。入力/出力モジュール211は、暗号文を受信するか、または復号されて平文として出力される暗号文が入力され得る点を除いて、モジュール210と類似している。
図3は、本発明によるコンピュータ・プログラム用の方法およびそのステップを示している。添付の付録は、本発明に従ってプログラムが実行され得る一方法を示したサンプル・ソース・コードを提供している。
ステップ305において、少なくとも1つのデータ・ブロックが、暗号化/復号のために受信される。次に、ステップ310において、ブロックが、共用論理MixColAllモジュールによって、バイト・ユニットに変換される。先に説明したように、MixColAllモジュールは、各ビット0〜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])を使用する同じ回路を共用して、MixColumn関数およびInvMixColumn関数の両方を実行する。
ステップ315において、副鍵の値が、実行される暗号化/復号の各ラウンド用に提供される。最後に、ステップ320において、暗号化/復号された文が、記憶装置、ディスプレイ、またはプリンタなどの出力装置に出力される。
本発明の主旨または添付の特許請求の範囲の範囲から逸脱せずに施され得る様々な修正が存在することを、当業者であれば理解されよう。例えば、使用される共通論理のビット数、装置のモジュールおよびサブモジュールのレイアウト、変換されるデータのブロック数、入力および出力モジュールなどはすべて、必要に応じて修正され得る。本発明は、セキュリティ・ネットワーキング・プロセッサ、セキュア・キーボード装置、磁気カード読取装置、スマートカード読取装置、および802.11装置などの無線通信アプリケーションとともに使用可能であるので、データの受信または出力は、共通回路内に含まれることができ、またはRF、光ファイバ、マイクロ波などを介して送信されることができる。そのような場合、送信および受信機能は、様々なタイプの送信からのプロトコル変換とともに含まれる。さらに、例では、8バイト(128ビット)のものを示したが、この数は、必要に応じて、および/またはAESプロトコルの変更に応じて、増やされることも、または減らされることもできる。「平文」および「暗号文」という用語は、専門用語であり、暗号化/復号は、図画、写真、イラスト、図表を対象とすることができ、音声、映像、および/またはマルチメディア・データを対象とすることができることにも留意されたい。
Claims (24)
- 少なくとも1つの鍵の値を提供するための鍵スケジュール・ユニットと、
前記鍵スケジュール・ユニットと通信可能であり、平文/暗号文のブロックを第1の複数の行内の所定数のバイト・ユニットに変換する変換モジュールと、
前記所定数のバイト・ユニットを暗号文/平文に暗号化/復号するためのブロック・ラウンド・ユニットとを備え、
前記変換モジュールが、前記第1の複数の行から第2の複数の行を生成する暗号化関数および前記第2の複数の行から前記第1の複数の行を生成する逆暗号化関数の両方の変換用に共用回路を利用するMixColumnAllサブモジュールを含む、暗号化/復号ユニット。 - 前記暗号化関数が、高度暗号化標準(AES)によるMixColumn関数を含む、請求項1に記載の装置。
- 前記逆暗号化関数が、高度暗号化標準(AES)によるInvMixColumn関数を含む、請求項1に記載の装置。
- 前記所定数のバイト・ユニットが、8バイト(128ビット)に等しい、請求項1に記載の装置。
- 平文/暗号文のデータ・ブロックを入力するための入力モジュールと、暗号文/平文の出力を保存/表示するための出力モジュールとをさらに備える、請求項1に記載の装置。
- 前記MixColumnAllサブモジュールが、各ビットに関する以下の共通論理
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]
のための共用回路を含む、請求項1に記載の装置。 - 前記MixColumnAllサブモジュールの前記共用回路が、CMOSゲートを含む、請求項1に記載の装置。
- MixColumnAll関数を実行するために前記MixColumnAllサブモジュールによって使用されるゲートの総数が、別々の回路を利用するMixColumn関数およびInvMixColumn関数によって使用されるゲートの組み合わせ総数よりも少ない、請求項7に記載の装置。
- 暗号化/復号のために複数行のデータの暗号化および逆暗号化を実行する変換モジュールであって、
前記複数行のデータから新しい行のデータを生成する暗号化関数および前記新しい行のデータから前記複数行を生成する逆暗号化関数の両方の変換用に共用回路を利用するMixColumnAllサブモジュールを備える変換モジュール。 - 前記共用回路が、8ビット以上用に提供される、請求項9に記載の変換モジュール。
- 前記共用回路が、少なくとも8ビット用に提供され、各ビットに関する以下の共通ブール論理
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]
を有する、請求項9に記載の変換モジュール。 - 前記モジュールが、無線通信によって受信される平文/暗号文を変換する手段を備える、請求項11に記載の変換モジュール。
- 前記無線通信が、802.11形式を含む、請求項12に記載の変換モジュール。
- 前記複数行のデータが、合計で少なくとも128ビットになる、請求項9に記載の変換モジュール。
- データ暗号化/復号のための方法であって、
(a)暗号化/復号のために少なくとも1つのデータ・ブロックを受信するステップと、
(b)ステップ(a)からの前記少なくとも1つのブロックをバイト・ユニットに変換するステップと、
(c)各ラウンド用の暗号化/復号のための鍵の値をブロック・ラウンド・ユニットに提供するステップと、
(d)暗号化/復号されたブロックを出力装置に出力するステップとを含み、
少なくとも1つのブロックを変換する前記ステップが、暗号化変換および逆暗号化変換の両方で共通の論理を共用することによって実行される方法。 - 前記逆暗号化関数が、高度暗号化標準(AES)によるInvMixColumn関数を含む、請求項15に記載の方法。
- 前記暗号化関数が、高度暗号化標準(AES)によるMixColumn関数を含む、請求項15に記載の方法。
- ブロック当たりのバイト・ユニットの総数が、8バイトに等しい、請求項15に記載の方法。
- コンピュータ可読媒体に収められた、暗号化/復号の際に共通論理を共用するための実行可能命令を含む、暗号化/復号のためのコンピュータ・プログラムであって、
(a)暗号化/復号のために少なくとも1つのデータ・ブロックを受信するための実行可能命令と、
(b)ステップ(a)からの前記少なくとも1つのデータ・ブロックを所定数のバイト・ユニットに変換するための実行可能命令であって、少なくとも1つのブロックの前記変換が、暗号化変換および逆暗号化変換の両方で共通の論理を共用することによって実行される実行可能命令と、
(c)各ラウンド用の暗号化/復号のための鍵の値をブロック・ラウンド・ユニットに提供するための実行可能命令と、
(d)暗号化/復号されたデータ・ブロックを出力装置に出力するための実行可能命令とを含むコンピュータ・プログラム。 - ステップ(b)の実行可能命令が、各ビットに関する以下の共通論理
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]
のための共用回路用の命令をさらに含む、請求項19に記載のコンピュータ・プログラム。 - 前記出力装置が、ディスプレイを含む、請求項19に記載のコンピュータ・プログラム。
- 前記出力装置が、記憶装置を含む、請求項19に記載のコンピュータ・プログラム。
- 前記出力装置が、プリンタを含む、請求項19に記載のコンピュータ・プログラム。
- 前記出力装置が、無線通信を介して暗号化/復号されたデータを受信する、請求項19に記載のコンピュータ・プログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US47039103P | 2003-05-14 | 2003-05-14 | |
PCT/IB2004/001480 WO2004102870A2 (en) | 2003-05-14 | 2004-05-10 | A hardware implementation of the mixcolumn/ invmixcolumn functions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006529031A true JP2006529031A (ja) | 2006-12-28 |
Family
ID=33452395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006530630A Withdrawn JP2006529031A (ja) | 2003-05-14 | 2004-05-10 | Mixcolumn/invmixcolumn関数のハードウェア実装 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20060198524A1 (ja) |
EP (1) | EP1625693A2 (ja) |
JP (1) | JP2006529031A (ja) |
KR (1) | KR20060012002A (ja) |
CN (1) | CN1788450A (ja) |
WO (1) | WO2004102870A2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050087271A (ko) * | 2004-02-26 | 2005-08-31 | 삼성전자주식회사 | 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치 |
KR100594265B1 (ko) * | 2004-03-16 | 2006-06-30 | 삼성전자주식회사 | 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법. |
US7783037B1 (en) * | 2004-09-20 | 2010-08-24 | Globalfoundries Inc. | Multi-gigabit per second computing of the rijndael inverse cipher |
KR100788902B1 (ko) | 2006-12-06 | 2007-12-27 | 한국전자통신연구원 | 믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법 |
KR100840944B1 (ko) | 2006-12-06 | 2008-06-24 | 한국전자통신연구원 | 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법 |
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US9191197B2 (en) * | 2007-10-10 | 2015-11-17 | Canon Kabushiki Kaisha | AES encryption/decryption circuit |
US7506366B1 (en) * | 2008-02-27 | 2009-03-17 | International Business Machines Corporation | Integrating workstation computer with badging system |
CN101588234B (zh) * | 2008-05-19 | 2013-10-02 | 北京大学深圳研究生院 | 一种aes中列混合变换模块的加解密复用方法 |
US8316338B2 (en) | 2009-02-09 | 2012-11-20 | The United States Of America, As Represented By The Secretary Of Commerce, The National Institute Of Standards & Technology | Method of optimizing combinational circuits |
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 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW527783B (en) * | 2001-10-04 | 2003-04-11 | Ind Tech Res Inst | Encryption/deciphering device capable of supporting advanced encryption standard |
-
2004
- 2004-05-10 WO PCT/IB2004/001480 patent/WO2004102870A2/en not_active Application Discontinuation
- 2004-05-10 US US10/556,329 patent/US20060198524A1/en not_active Abandoned
- 2004-05-10 KR KR1020057021688A patent/KR20060012002A/ko not_active Application Discontinuation
- 2004-05-10 JP JP2006530630A patent/JP2006529031A/ja not_active Withdrawn
- 2004-05-10 CN CNA2004800128122A patent/CN1788450A/zh active Pending
- 2004-05-10 EP EP04731968A patent/EP1625693A2/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CN1788450A (zh) | 2006-06-14 |
WO2004102870A3 (en) | 2005-01-06 |
KR20060012002A (ko) | 2006-02-06 |
WO2004102870A8 (en) | 2005-02-17 |
WO2004102870A2 (en) | 2004-11-25 |
EP1625693A2 (en) | 2006-02-15 |
US20060198524A1 (en) | 2006-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
McLoone et al. | High performance single-chip FPGA Rijndael algorithm implementations | |
EP1246389B1 (en) | Apparatus for selectably encrypting or decrypting data | |
EP2096786B1 (en) | Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation | |
Borkar et al. | FPGA implementation of AES algorithm | |
Moh'd et al. | AES-512: 512-bit Advanced Encryption Standard algorithm design and evaluation | |
JP2006529031A (ja) | Mixcolumn/invmixcolumn関数のハードウェア実装 | |
Yewale Minal et al. | Implementation of AES on FPGA | |
Balamurugan et al. | High speed low cost implementation of advanced encryption standard on fpga | |
Manoj Kumar et al. | Implementation of a High-Speed and High-Throughput Advanced Encryption Standard. | |
KR20050092698A (ko) | 라인달 블록 암호의 서브바이트 함수를 실행하는 장치 및방법과 데이터 암호화 및 해독 장치 | |
EP1629626B1 (en) | Method and apparatus for a low memory hardware implementation of the key expansion function | |
Tamilselvi et al. | A novel based mix-column architecture for AES-128 bit algorithm | |
Bajaj et al. | AES algorithm for encryption | |
US20080181395A1 (en) | Cryptographic operation apparatus | |
Balamurugan et al. | Low power and high speed AES using mix column transformation | |
US20040071287A1 (en) | Encryption circuit arrangement and method therefor | |
Rady et al. | Design and implementation of area optimized AES algorithm on reconfigurable FPGA | |
Lanjewar et al. | Implementation of AES-256 Bit: A Review | |
SUNEEL et al. | DESIGN AND IMPLEMENTATION OF AREA-OPTIMIZED AES ALGORITHM USING PIPELINE TECHNOLOGY | |
Saidulu | Fast pipelined AES algorithm implemented on Xilinx FPGAs | |
Kaur et al. | IMPLEMENTATION OF AES ALGORITHM ON FPGA FOR LOW AREA CONSUMPTION. | |
Prasanthi et al. | Enhanced AES algorithm | |
Liu et al. | An optimized fpga implementation of an aes algorithm for embedded applications | |
Aruna et al. | An FPGA Based Area Optimization of AES | |
ManjulaRani et al. | An Efficient FPGA Implementation of Advanced Encryption Standard Algorithm on Virtex-5 FPGA’s |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070508 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070522 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070816 |