JP2007500376A - 鍵拡大機能の低メモリハードウェア実施のための方法および装置 - Google Patents
鍵拡大機能の低メモリハードウェア実施のための方法および装置 Download PDFInfo
- Publication number
- JP2007500376A JP2007500376A JP2006530680A JP2006530680A JP2007500376A JP 2007500376 A JP2007500376 A JP 2007500376A JP 2006530680 A JP2006530680 A JP 2006530680A JP 2006530680 A JP2006530680 A JP 2006530680A JP 2007500376 A JP2007500376 A JP 2007500376A
- Authority
- JP
- Japan
- Prior art keywords
- key
- expanded
- keys
- memory
- round
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- 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/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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Communication Control (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
AES等のアルゴリズムにおける鍵拡大機能中に必要とされるメモリ空間を減らすための装置、方法、コンピュータプログラム。所定数のバイト単位を暗号文/平文に暗号化/復号化するためのブロックラウンドユニット(212)。鍵拡大モジュール(215)は、拡大鍵値を得るために通常(暗号化)機能および逆(復号化)機能の両方に関して鍵拡大を実行する。拡大鍵値の格納のために必要とされるメモリ(202)内のメモリ空間の数は、拡大鍵値の数の半分よりも多くなく、一般に、14個の鍵においては、鍵値およびメモリ空間の数が等しい場合に対してアクセス時間を増大させることなく、7個のメモリ空間を必要とする。鍵拡大はラウンド鍵処理と同期して行なわれ、それにより、各鍵拡大毎に、ラウンド鍵が対応する鍵拡大機能と並行して処理される。
Description
本発明は、暗号化を実行するための方法および装置に関する。特に、本発明は、高度暗号化規格(AES)において一組のラウンド鍵を生成するために鍵拡大アルゴリズムにより使用される暗号鍵に関する。
スマートカード等のアイテムの使用の増大およびインターネット上での商取引の増大に伴って、データを暗号化および復号化する必要性が、いまだかつて現在ほど重要になってきたことはない。実際に、米国政府は、特に国立標準技術研究所(NIST)を通じて、長年の間、DES(データ暗号化規格)等の暗号化規格を選択してきた。DESは、1976年に遡って米国規格として選択されたものであり、その後、3つのDESが規格となった。近年、NISTは、米国の公的な暗号化規格になるであろう新たな規格(AES)を選択するために、複数のAESアルゴリズムを評価してきている。Joan DaemenおよびVincent Rijmenは、NISTによって承認されてきた暗号化アルゴリズムを提示し、Federal Information Processing Standards Publication No.197(以下、FIPS’197と称する)と題して2001年11月26日に公表した。FIPS’197におけるこのアルゴリズムは、Rijndaelアルゴリズムと称される。
AESは、従来の56ビット暗号化を性能、自由度、効率に関して向上させ、それにより、具現化するための更に容易な方法を与えるべく、128,192,256ビットの3つのシステムを使用する。
AESアルゴリズムで処理するための基本的な単位はバイトである。内的には、AESアルゴリズムの演算は、STATEと呼ばれる2次元のバイト配列で実行される。STATEは一般にバイトから成る4つの横列を有しており、各横列はNbバイトを含んでいる。ここで、Nbはブロック長を32で割ったものである。
暗号化は、データを暗号文と呼ばれる難解な形式に変換する。暗号文の復号化は、「平文」と称されるデータをその元の最初の形式に変換し直す。共通の専門技術用語では、平文を暗号文に変換する一連の変換を「暗号」と称する。これに対し、暗号文を平文に変換する一連の変換は「逆暗号」と称される。暗号および逆暗号の両方において、拡大鍵ルーチンによって使用される秘密暗号鍵である暗号鍵は、暗号および逆暗号ルーチンにおいてSTATEに適用される一連の値(ラウンド鍵と呼ばれる)を生成する。
AESアルゴリズムにおける入力および出力はそれぞれ、連続する128ビット配列(0または1の値を持つ数字)から成る。これらの配列は、時として、ブロックと称され、また、それらが含んでいるビット数を長さと称する。
図1はSTATE配列入出力の一例を示している。暗号および逆暗号の開始時には、図1に示されるように、バイトの入力配列(in0〜in15)がSTATEにコピーされる。その後、このSTATE配列上で暗号演算または逆暗号演算が行なわれた後、その最終的な値が出力バイトの配列out0〜out15に対してコピーされる。図1に関しては、NISTによる「FIPS197」に開示されているように、暗号および逆暗号の開始時に、バイト配列in0〜in15である入力が図示のようにSTATE配列に対してコピーされる。その後、このSTATE配列に関して暗号演算または逆暗号演算が行なわれた後、その最終的な値が出力にコピーされる。これは、out0〜out15の範囲のバイト配列として示されている。2つの要素に関する多項式中の対応する指数における係数を「加える」ことにより、有限領域において2つの要素の加算が行なわれる。加算は、ブール排他的論理和(XOR)演算(「FIPS’197」,NIST,10頁)を用いて行なわれる。2バイトを加算するための2進法例が以下に示されている。
暗号鍵は、一組のラウンド鍵を生成するために鍵拡大アルゴリズムによって使用される秘密暗号鍵であり、4つの横列とNk個の縦列とを有するバイトの矩形配列として描くことができる(「FIPS’197」,NIST,6頁)。
ラウンド鍵は、鍵スケジュールによって暗号鍵から得られる値である。鍵スケジュールは、2つの構成要素、すなわち、鍵拡大およびラウンド鍵選択(「Rijndael暗号ブロック」,Daemen and Rijmen,14頁)を含んでいる。AESは、暗号鍵を利用するとともに鍵拡大ルーチンを実行することにより鍵スケジュールを生成するアルゴリズムを使用する。
ラウンド鍵は、暗号・逆暗号変換においてSTATEに対して適用される。ラウンド鍵の長さはSTATEのサイズに等しく、また、ラウンド鍵はXOR演算を使用してSTATEに加えられる。
ここで、我々は、鍵拡大をサポートするために必要なメモリのサイズ低減について考える。現在のティーチングは、3つの鍵長さ、すなわち、128,192,256ビットをサポートするために暗号鍵が拡大されるハードウェア実施を規定している。計算の数は、鍵ビットおよびブロックビットによって決まる。128長さの鍵の場合には、10個の計算が必要である。192長さの鍵の場合には、12個の計算が必要とされる。最も長い現在の鍵長さ(256)の場合には、14個の計算が必要である。つまり、必要な鍵の最大数は14個である。
当初のAESソフトウェア実施は、最大数の鍵(14)用の格納装置を使用している。ハードウェアにおいて、この格納装置は、14×128ビットの格納場所を必要とする。CMOS18におけるこの機能の実施は、約10000個のゲートを使用する。
したがって、ゲートサイズを減少させる方法を提供すると同時に、最大経路遅延をあまり大きく増大させず、それにより、高データ転送速度設計に関して従来周知のものよりも魅力的な小型回路を実現することが有益である。
本発明は、最大経路遅延に影響を与えることなく拡大鍵機能を処理するために必要なゲート量を減少させる方法を提供する。本発明の利点は、回路の量を減らすことによりサイズが低減し、それにより、回路が更に小型化されるとともに高データ転送速度設計において更に魅力的なものになるという点である。
本発明の一態様において、各鍵拡大は、暗号化および復号化の両方をサポートするために行なわれる。新たなアーキテクチャは、ラウンド鍵処理と同期される通常の鍵拡大および逆鍵拡大の両方を実施する回路を利用し、それにより、更に小さいメモリ領域を使用することができる。特定の実施形態において、メモリ空間は、アクセス時間を増大させることなく、従来の14個から、14個の拡大鍵に関してこれまで知られていなかった7個というメモリ空間数へと半減される。
本発明の前記特徴および他の特徴並びに利点は、添付図面と併せて以下の詳細な説明を参照することにより更に明らかとなる。
以下の説明では、限定を目的とするのではなく解説を目的として、本発明の十分な理解を与えるべく、例えば特定のアーキテクチャ、インタフェース、技術等の特定の内容が示されている。しかしながら、当業者であれば分かるように、本発明は、これらの特定の内容から逸脱する他の実施形態において実施されても良い。また、明確にするべく、周知の装置、回路、方法の詳細な説明については省略し、本発明の説明が不必要な内容によって不明確とならないようにしている。
図2は、本発明の装置を設けることができる1つの方法を示している。当業者であれば分かるように、図示の物理的なレイアウトは説明の目的で与えられており、例えば、鍵拡大モジュールと鍵スケジューラとを組み合わせることができ、また、メモリを任意のモジュールまたは別個の領域の一部とすることができる。
鍵スケジュールユニット201は、鍵拡大(キー拡張)モジュール215によって拡大(拡張)される鍵値を有している。これらの値はメモリ202に格納することができる。変換ユニット208は、特定の所定数のラウンドにおいて平文/暗号文のうちの一方を暗号化/復号化し、また、ブロックラウンドユニット212は、鍵拡大ユニットが鍵拡大を行なう間にラウンド鍵処理を実行する。鍵拡大機能およびラウンド鍵処理は、これらの演算が同時に(多かれ少なかれ並行して)実行されるように、対応するそれぞれの鍵毎に同期されることが好ましい。
本発明においては、僅かな数のメモリ空間を用いて鍵拡大アルゴリズムを実施することにより、鍵が使用されるタイミングが重要な因子になる。例えば、暗号化モード中においては、処理が始まる前に1つの鍵を計算しなければならない。データがラウンド鍵アルゴリズムによって処理される間、第2の鍵を同時に計算することができる。1つの暗号化モードだけが必要とされた場合には、1つのメモリ空間で十分である。
復号化におけるタスクはやや困難である。これは、鍵14が最初に使用されるからである。鍵14は、他の13個の鍵に基づいて計算しなければならない。ここでも、ラウンド鍵処理を用いて鍵を同時に計算するという同じ考え方を使用できる。鍵をメモリに書き込む順番が注意深く計画されれば、たった7個のメモリ空間と極僅かな更なる制御論理とを用いて暗号化および複合化の両方をサポートすることができる。
ラウンド鍵処理に関連して鍵が計算される速度も注意深く計画されなければならない。鍵計算およびラウンド鍵処理を同期化と同時に行なうことにより、本発明の利点が得られる。
256鍵長さ(キー長)は大部分のメモリを必要とするため、この長さは新たなメカニズムを示すために使用される。以下は、Rijndael(Rijndael−alg−ref.c version2.0, Barreto and Rijmen)に係るCコード表記において与えられる従来のアルゴリズムである。
Int rijndaelKeySched(word9k[4][MAXKC], int keyBits, int blockBit, word8
W[MAXROUNDS+1][4][MAXABC])}
/*Calculate the necessary round keys
*The number of calculations depends on keyBits and blockBits
*/
int KC, BC, ROUNDS;
int I, j, t, rconpointer=0;
Word8 tk[4][MAXKC]
switch (keyBits0{
case 128 : KC=4;break;
case 192 : KC=6;break;
case 256 : KC=8;break;
default : return(−1);
}
switch (blockBits){
case 128 : BC=4;break;
case 192 : BC=6;break;
case 256 : BC=8;break;
default : return(−2);
}
switch (KeyBits>=blockBits? keyBits : blockbits){
case 128 : ROUND=10;break;
case 192 : ROUND=12;break;
case 256 : ROUND=14;break;
default : return(−3);/*this cannot happen*/
}
for(j=0; j<KC; j++)
for(i=0; i<4; i++)
tk[i][j]=1[i][j];
t=0;
/*copy values into round key array*/
for(j=0;(j<KC)&&(t<(ROUNDS+1)*BC); j++, t++)
for(I=0; j<4; i++)W[t/BC][i][t%BC]=tk[i][j];
while(t<ROUNDS+1)*BC){/*while not enough round key material calculated*/
/*calculate new values*/
for(I=0; I<4; i++)
tk[i][0]^=S[tk(i+1)%4][KC−1];
tk[0][0]^=rcon [rconpointer++];
if(KC!=8)
for(j=1; j<KC; j++)
for(i=0; i<4; i++)tk[i][j]^=tk[i][j−1];
else{
for(j=1; j<KC/2; j++)
for(i=0; i<4; i++)tk[i][j]^=tk[i][j−1]
for(i=0; i<4; i++)tk[i][KC/2]^=S[tk [i] [KC/2−1]];
for(j=KC/2 +1; j<KC; j++)
for(i=0; i<4; i++)tk[i][j]^=tk[i][j−1];
}
/*copy values into round key array*/
for(j=0; (j<KC)&&(t<(ROUNDS+1)*BC); j++, t++)
for(i=0; I<4; i++)W[t/BC][i][t%BC]=tk[i][j];
}
return 0;
}
Int rijndaelKeySched(word9k[4][MAXKC], int keyBits, int blockBit, word8
W[MAXROUNDS+1][4][MAXABC])}
/*Calculate the necessary round keys
*The number of calculations depends on keyBits and blockBits
*/
int KC, BC, ROUNDS;
int I, j, t, rconpointer=0;
Word8 tk[4][MAXKC]
switch (keyBits0{
case 128 : KC=4;break;
case 192 : KC=6;break;
case 256 : KC=8;break;
default : return(−1);
}
switch (blockBits){
case 128 : BC=4;break;
case 192 : BC=6;break;
case 256 : BC=8;break;
default : return(−2);
}
switch (KeyBits>=blockBits? keyBits : blockbits){
case 128 : ROUND=10;break;
case 192 : ROUND=12;break;
case 256 : ROUND=14;break;
default : return(−3);/*this cannot happen*/
}
for(j=0; j<KC; j++)
for(i=0; i<4; i++)
tk[i][j]=1[i][j];
t=0;
/*copy values into round key array*/
for(j=0;(j<KC)&&(t<(ROUNDS+1)*BC); j++, t++)
for(I=0; j<4; i++)W[t/BC][i][t%BC]=tk[i][j];
while(t<ROUNDS+1)*BC){/*while not enough round key material calculated*/
/*calculate new values*/
for(I=0; I<4; i++)
tk[i][0]^=S[tk(i+1)%4][KC−1];
tk[0][0]^=rcon [rconpointer++];
if(KC!=8)
for(j=1; j<KC; j++)
for(i=0; i<4; i++)tk[i][j]^=tk[i][j−1];
else{
for(j=1; j<KC/2; j++)
for(i=0; i<4; i++)tk[i][j]^=tk[i][j−1]
for(i=0; i<4; i++)tk[i][KC/2]^=S[tk [i] [KC/2−1]];
for(j=KC/2 +1; j<KC; j++)
for(i=0; i<4; i++)tk[i][j]^=tk[i][j−1];
}
/*copy values into round key array*/
for(j=0; (j<KC)&&(t<(ROUNDS+1)*BC); j++, t++)
for(i=0; I<4; i++)W[t/BC][i][t%BC]=tk[i][j];
}
return 0;
}
ハードウェア実施においては、前記コード(case256; ROUNDS=14; break;)を実施するために、14個の鍵における最大量のメモリが割り当てられなければならない。
また、この従来の拡大アルゴリズムは、ラウンド鍵の処理が始まり且つ並行作業を許容しない前に行なわれる。
以上とは異なり、本発明は、ラウンド鍵処理と同期される、通常の鍵拡大および逆の鍵拡大の両方を実施する回路を使用する。
暗号化(通常)拡大を考えると、与えられた例は、それが大部分のメモリのロケーションを必要とするため、鍵長さ(キー長)256である。他の2つのケース(128および192の鍵長さ)も拡大された鍵が殆ど不要であることから機能するのが分かる。また、256を越える鍵長さがこれまでに使用されている場合には、必要なメモリを減らすのに本発明が有効であることも理論的に分かる。
本発明の一態様において、鍵の拡大とラウンド(丸めること)とを並行に行なうためのアルゴリズムは以下の通りである。
Expand−Key Number=14
For k=1 to Expand Key Number
{
If(k<8)n=k else n=k−7
Expand key k and store to location n
Read location n and do Round Key algorithm, expand key k and store to location n+1
}
Expand−Key Number=14
For k=1 to Expand Key Number
{
If(k<8)n=k else n=k−7
Expand key k and store to location n
Read location n and do Round Key algorithm, expand key k and store to location n+1
}
復号化(逆)拡大においては、14個の全ての鍵を最初に計算しなければならない。最初の7個の鍵における計算は、降順で行なわれた後、投げ捨てられる。次の7個の鍵は昇位置順で拡大される。最後の7個の鍵が降順で読み取られると、最初の7個が再び降順で拡大される。鍵8が位置1から読み取られると、鍵7が拡大されて位置1に置かれる。その後、鍵7〜1が昇位置順で読み取られる。アルゴリズムは以下の通りである。
Expand Key Number=14
For k=1 to Expand Key Number
{
If(k<8)n=8−k else n=k−7
Expand key k and store to location n
}
For k=Expand Key Number to 1
{
If(k<8)n=8−k else n=k−7
Read location n and do Round Key algorithm, expand key 8−n and store to location n
}
Expand Key Number=14
For k=1 to Expand Key Number
{
If(k<8)n=8−k else n=k−7
Expand key k and store to location n
}
For k=Expand Key Number to 1
{
If(k<8)n=8−k else n=k−7
Read location n and do Round Key algorithm, expand key 8−n and store to location n
}
最後に、図3は、本発明を実行できる1つの方法を説明する方法ステップを示している。ステップ305においては、暗号鍵のための鍵スケジュールユニット201が与えられる。前記鍵スケジュールユニット201は、所定数の拡大鍵値を与えるとともに、メモリ202を有している。
ステップ310は、変換モジュール208が鍵スケジュールユニット201と通信することを含んでいる。変換モジュールは、平文/暗号文のブロックを、最初の複数の縦列において所定数のバイト単位に変換する。
ステップ315は、所定数のバイト単位を暗号文/平文に暗号化/復号化するために、ブロックラウンドユニット212がラウンド鍵を処理することを含んでおり、また、
ステップ320は、拡大鍵値を得るために通常(暗号化)機能および逆(復号化)機能の両方に関して鍵拡大モジュール215が鍵拡大を実行することを含んでいる。
ステップ320は、拡大鍵値を得るために通常(暗号化)機能および逆(復号化)機能の両方に関して鍵拡大モジュール215が鍵拡大を実行することを含んでいる。
ステップ320において鍵値が拡大される速度は、ステップ315におけるブロックラウンドユニット235によるラウンド鍵処理と同期され、これにより、対応する鍵値のそれぞれが、処理される対応するラウンド鍵と並行して拡大される。
したがって、拡大鍵値の格納のために必要とされるメモリ202内のメモリ空間の数は、拡大鍵値の数の半分よりも多くない。
2つの方法で実施されたAES案(NIST,2001年11月26日)により提案されたデザイン;14個のメモリ空間を用いた128,192,256鍵長さ、および、メモリ空間の半分を用いた第2のデザインを検討することにより、また、ラウンド鍵処理に関して注意深い再計算を使用することにより、新たなアルゴリズムが必要な空間を1/2だけ減らすことが本発明により明らかになった。
当業者であれば分かるように、本発明の思想または添付の請求項の範囲から逸脱しない様々な変形例を形成することができる。例えば、使用される共通論理のビット数、装置のモジュールおよびサブモジュールのレイアウト、変換されるデータのブロックの数、入出力モジュールの全てを必要に応じて変更することができる。本発明は、セキュリティネットワーキングプロセッサ、安全なキーボード装置、磁気カードリーダ装置、スマートカードリーダ装置、802.11等の無線通信アプリケーション装置と共に使用することができるため、データの受信または出力を、共通の回路内に含ませることができ、あるいは、RF、光ファイバ、マイクロ波等にわたって送信することができる。そのような場合、様々なタイプの送信からのプロトコル変換と共に、送受信能力が含められる。また、実施例は8バイト(128ビット)を示しているが、この量は、必要に応じて増大または減少させることができ、および/または、AESプロトコルにおいては変化する。なお、「平文」および「暗号文」等の用語は専門用語であり、暗号化/復号化は、図面、写真、イラスト、略図を包含することができ、音声、ビデオ、および/または、マルチメディアデータを含むことができる。
例えば、鍵拡大モジュールは、図示するために、鍵スケジューラから分離される別個のユニットとして示されており、また、鍵スケジューラ内に示されるメモリが共通のメモリであっても良く或いは配列されても良く、および/または、全ての構成要素が共通の回路カード上に配置されても良い。128,192,256長さの鍵ブロックが一例として使用されたが、本発明の思想および添付の請求項の範囲から逸脱することなく、これらよりも長いまたは短い任意の長さの鍵ブロックを使用することができる。
201 鍵スケジュールユニット
202 メモリ
208 変換ユニット
212 ブロックラウンドユニット
215 鍵拡大(キー拡張)モジュール
202 メモリ
208 変換ユニット
212 ブロックラウンドユニット
215 鍵拡大(キー拡張)モジュール
Claims (21)
- 暗号化/復号化のための装置であって、
所定数の拡大鍵値を与えるとともに、メモリを有する、暗号鍵のための鍵スケジュールユニットと、
前記鍵スケジュールユニットと通信を行なうとともに、平文/暗号文のブロックを最初の複数の縦列において所定数のバイト単位に変換する変換モジュールと、
前記所定数のバイト単位を暗号文/平文に暗号化/復号化するためのブロックラウンドユニットと、
拡大鍵値を得るために通常(暗号化)機能および逆(復号化)機能の両方に関して鍵拡大を実行する鍵拡大モジュールと、
を備え、
拡大鍵値の格納のために必要とされるメモリ内のメモリ空間の数は、拡大鍵値の数の半分よりも大きくない装置。 - 等しい数の拡大鍵値およびメモリ空間の数に対してアクセス時間が増大することなく、拡大鍵値の前記所定数が14に等しく、メモリ空間の前記数が7に等しい、請求項1に記載の装置。
- 拡大鍵値の前記所定数が12に等しく、メモリ空間の前記数が6に等しい、請求項1に記載の装置。
- 拡大鍵値の前記所定数が10に等しく、メモリ空間の前記数が5に等しい、請求項1に記載の装置。
- 前記暗号鍵の鍵長さが256ビットである、請求項2に記載の装置。
- 前記暗号鍵の鍵長さが192ビットである、請求項3に記載の装置。
- 前記暗号鍵の鍵長さが128ビットである、請求項4に記載の装置。
- 前記暗号鍵の鍵長さが256ビットよりも長い、請求項1に記載の装置。
- 前記鍵値が拡大される速度は、前記ブロックラウンドユニットによるラウンド鍵処理と同期される、請求項1に記載の装置。
- 前記鍵拡大モジュールが14個の鍵を拡大するための手段を有し、これにより、鍵1〜7が暗号化中に連続的に拡大されるとともに、これらの各拡大鍵値は、他の鍵が連続的に拡大される前に並行してラウンド鍵アルゴリズムを処理するために使用される、請求項1に記載の装置。
- 前記鍵拡大モジュールが14個の鍵を拡大するための手段を有し、これにより、復号化中に鍵14〜8がメモリ空間内において降位置順で拡大された後、鍵1〜7が昇位置順で拡大され、その後、鍵14〜8が降位置順で再び拡大される、請求項1に記載の装置。
- 前記メモリは、前記鍵値を格納するための7個以下のメモリ空間を有し、鍵8が位置1から読み取られると、鍵7が拡大されて所定に位置に置かれ、また、鍵7〜1が昇位置順で読み取られ、ラウンド鍵アルゴリズムが各鍵拡大と並行に実行される、請求項11に記載の装置。
- 鍵拡大機能中にメモリ要件を減少させるための方法であって、
(a)所定数の拡大鍵値を与えるとともに、メモリを有する、暗号鍵のための鍵スケジュールユニットを設けるステップと、
(b)前記鍵スケジュールユニットと通信を行なうとともに、平文/暗号文のブロックを最初の複数の縦列において所定数のバイト単位に変換する変換モジュールを設けるステップと、
(c)ラウンド鍵を処理して、前記所定数のバイト単位を暗号文/平文に暗号化/復号化するためのブロックラウンドユニットを設けるステップと、
(d)拡大鍵値を得るために通常(暗号化)機能および逆(復号化)機能の両方に関して鍵拡大を実行するための鍵拡大モジュールを設けるステップと、
を含み、
ステップ(d)において鍵値が拡大される速度は、ステップ(c)におけるブロックラウンドユニットによるラウンド鍵処理と同期され、これにより、対応する鍵値のそれぞれが、処理される対応するラウンド鍵と並行して拡大され、
前記拡大鍵値の格納のために必要とされる前記メモリ内のメモリ空間の数は、前記拡大鍵値の数の半分よりも多くない方法。 - 等しい数の拡大鍵値およびメモリ空間に対してアクセス時間が増大することなく、前記メモリ内のメモリ空間の数が7に等しく、拡大鍵値の前記所定数が14に等しい請求項13に記載の方法。
- ステップ(d)で設けられた前記鍵拡大モジュールが14個の鍵を拡大し、これにより、鍵1〜7が暗号化中に連続的に拡大されるとともに、これらの各拡大鍵値は、他の鍵が連続的に拡大される前に並行してラウンド鍵アルゴリズムを処理するために使用される、請求項13に記載の方法。
- ステップ(d)で設けられた前記鍵拡大モジュールが14個の鍵を拡大し、これにより、復号化中に鍵14〜8がメモリ空間内において降位置順で拡大された後、鍵1〜7が昇位置順で拡大され、その後、鍵14〜8が降位置順で再び拡大される、請求項13に記載の方法。
- 前記メモリは、鍵値を格納するための7個以下のメモリ空間を有し、鍵8が位置1から読み取られると、鍵7が拡大されて所定に位置に置かれ、また、鍵7〜1が昇位置順で読み取られ、ラウンド鍵アルゴリズムが各鍵拡大と並行に実行される、請求項13に記載の方法。
- 鍵拡大機能中にメモリ要件を減少させるためのコンピュータプログラムプロダクトであって、
(a)暗号化/復号化のうちのいずれか一方の間に鍵拡大を実行するための実行可能命令と、
(b)ステップ(a)における鍵スケジュールユニットによる鍵拡大と並行にブロックラウンドユニットによりラウンド鍵を処理し、それにより、各拡大鍵毎に対応するラウンド鍵が同期して処理されるようにする実行可能命令と、
(c)メモリ内の所定数のメモリ空間が拡大鍵値の数の半分よりも多くならないように拡大鍵値を格納するための実行可能命令と、
を含む実行可能命令を有するコンピュータ読み取り可能媒体を備えているコンピュータプログラムプロダクト。 - 鍵拡大のためのステップ(a)における実行可能命令が14個の鍵を拡大し、これにより、鍵1〜7が暗号化中に連続的に拡大されるとともに、これらの各拡大鍵値は、他の鍵が連続的に拡大される前に並行してラウンド鍵アルゴリズムを処理するために使用される、請求項18に記載のコンピュータプログラムプロダクト。
- ステップ(a)で与えられた鍵拡大のための実行可能命令が14個の鍵を拡大するための命令を与え、これにより、復号化中に鍵14〜8がメモリ空間内において降位置順で拡大された後、鍵1〜7が昇位置順で拡大され、その後、鍵14〜8が降位置順で再び拡大される、請求項18に記載のコンピュータプログラムプロダクト。
- ステップ(a)および(b)における実行可能命令は、メモリ空間が鍵値を格納するための7個以下のメモリ空間を含み、鍵8が位置1から読み取られると、鍵7が拡大されて所定に位置に置かれ、また、鍵7〜1が昇位置順で読み取られ、ラウンド鍵アルゴリズムが各鍵拡大と並行に実行されることを含んでいる、請求項18に記載のコンピュータプログラムプロダクト。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US47320903P | 2003-05-23 | 2003-05-23 | |
PCT/IB2004/001690 WO2004105306A1 (en) | 2003-05-23 | 2004-05-19 | Method and apparatus for a low memory hardware implementation of the key expansion function |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007500376A true JP2007500376A (ja) | 2007-01-11 |
Family
ID=33476990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006530680A Withdrawn JP2007500376A (ja) | 2003-05-23 | 2004-05-19 | 鍵拡大機能の低メモリハードウェア実施のための方法および装置 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1629626B1 (ja) |
JP (1) | JP2007500376A (ja) |
KR (1) | KR20060014420A (ja) |
CN (1) | CN1795637B (ja) |
AT (1) | ATE387773T1 (ja) |
DE (1) | DE602004012096T2 (ja) |
WO (1) | WO2004105306A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242366A (ja) * | 2004-02-26 | 2005-09-08 | Samsung Electronics Co Ltd | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
JP2008294810A (ja) * | 2007-05-25 | 2008-12-04 | Renesas Technology Corp | 暗号/復号装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100949538B1 (ko) | 2008-09-09 | 2010-03-25 | 한국전자통신연구원 | Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법 |
CN101478392B (zh) * | 2009-01-19 | 2010-12-08 | 山东大学 | 利用vlsi实现128位密钥长度aes算法的装置 |
KR101315683B1 (ko) * | 2012-03-12 | 2013-12-13 | 이니텍(주) | 데이터 사이즈 및 형태 변경이 없는 암호화 인코딩 및 복호화 인코딩 방법 |
WO2020186125A1 (en) | 2019-03-13 | 2020-09-17 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947560B1 (en) * | 1999-04-26 | 2005-09-20 | Telefonaktiebolaget L M Ericsson (Publ) | Method and device for effective key length control |
KR100525389B1 (ko) * | 2001-01-17 | 2005-11-02 | 엘지전자 주식회사 | 실시간 입력 스트림의 암호화/복호화 장치 |
DE60202495D1 (de) * | 2001-03-27 | 2005-02-10 | Amphion Semiconductor Ltd | Vorrichtung zur wählbaren Ver- bzw. Entschlüsselung von Daten |
GB0121793D0 (en) * | 2001-09-08 | 2001-10-31 | Amphion Semiconductor Ltd | An apparatus for generating encryption/decryption keys |
-
2004
- 2004-05-19 CN CN2004800140637A patent/CN1795637B/zh not_active Expired - Fee Related
- 2004-05-19 DE DE602004012096T patent/DE602004012096T2/de not_active Expired - Lifetime
- 2004-05-19 EP EP04733860A patent/EP1629626B1/en not_active Expired - Lifetime
- 2004-05-19 KR KR1020057022337A patent/KR20060014420A/ko not_active Application Discontinuation
- 2004-05-19 JP JP2006530680A patent/JP2007500376A/ja not_active Withdrawn
- 2004-05-19 AT AT04733860T patent/ATE387773T1/de not_active IP Right Cessation
- 2004-05-19 WO PCT/IB2004/001690 patent/WO2004105306A1/en active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242366A (ja) * | 2004-02-26 | 2005-09-08 | Samsung Electronics Co Ltd | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
JP4740611B2 (ja) * | 2004-02-26 | 2011-08-03 | 三星電子株式会社 | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
JP2008294810A (ja) * | 2007-05-25 | 2008-12-04 | Renesas Technology Corp | 暗号/復号装置 |
Also Published As
Publication number | Publication date |
---|---|
DE602004012096D1 (de) | 2008-04-10 |
CN1795637B (zh) | 2011-06-01 |
WO2004105306A1 (en) | 2004-12-02 |
EP1629626B1 (en) | 2008-02-27 |
KR20060014420A (ko) | 2006-02-15 |
ATE387773T1 (de) | 2008-03-15 |
EP1629626A1 (en) | 2006-03-01 |
CN1795637A (zh) | 2006-06-28 |
DE602004012096T2 (de) | 2009-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
McLoone et al. | High performance single-chip FPGA Rijndael algorithm implementations | |
AU767323B2 (en) | Block encryption device using auxiliary conversion | |
US7295671B2 (en) | Advanced encryption standard (AES) hardware cryptographic engine | |
EP1246389B1 (en) | Apparatus for selectably encrypting or decrypting data | |
USRE44594E1 (en) | Method and circuit for data encryption/decryption | |
US8428251B2 (en) | System and method for stream/block cipher with internal random states | |
EP1257082A2 (en) | A computer useable product for generating data encryption/decryption apparatus | |
WO2009087972A1 (ja) | データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム | |
US20030059054A1 (en) | Apparatus for generating encryption or decryption keys | |
JP2005531023A (ja) | AES(Rijndael)ブロック暗号器に対するラウンドキーの生成 | |
KR20180081559A (ko) | 암호화 동작을 위한 키 시퀀스 생성 | |
JP2000066587A (ja) | データ処理装置及び通信システム並びに記録媒体 | |
KR20060012002A (ko) | 암호화/암호 해독 방법, 데이터 암호화/암호 해독 장치,변환 모듈 및 컴퓨터 프로그램 제품 | |
EP1629626B1 (en) | Method and apparatus for a low memory hardware implementation of the key expansion function | |
JP2004157535A (ja) | データ暗号化方法 | |
KR20050092698A (ko) | 라인달 블록 암호의 서브바이트 함수를 실행하는 장치 및방법과 데이터 암호화 및 해독 장치 | |
Buell | Modern symmetric ciphers—Des and Aes | |
KR102393958B1 (ko) | 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법 | |
Zigiotto et al. | A low-cost FPGA implementation of the Advanced Encryption Standard algorithm | |
JP2006502437A (ja) | 暗号化回路装置及び方法 | |
JP2005529365A (ja) | Aesミックスカラム変換 | |
Gujar | Image Encryption using AES Algorithm based on FPGA | |
ManjulaRani et al. | An Efficient FPGA Implementation of Advanced Encryption Standard Algorithm on Virtex-5 FPGA’s | |
Varma | Fast Pipelined Aes Algorithm Implemented on Xilinx Fpgas | |
Das et al. | SIMULATION OF IMAGE ENCRYPTION USING AES ALGORITHM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070517 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080703 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20091007 |