JP5272417B2 - データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム - Google Patents
データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム Download PDFInfo
- Publication number
- JP5272417B2 JP5272417B2 JP2008010548A JP2008010548A JP5272417B2 JP 5272417 B2 JP5272417 B2 JP 5272417B2 JP 2008010548 A JP2008010548 A JP 2008010548A JP 2008010548 A JP2008010548 A JP 2008010548A JP 5272417 B2 JP5272417 B2 JP 5272417B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- divided data
- processing
- divided
- shift
- 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.)
- Expired - Fee Related
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
- 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Description
行単位の演算、例えば(a1,a2,a3,a4)など各行に対する演算処理、あるいは、
列単位の演算、例えば(a1,a5,a9,a13)など各列に対する演算、
このような様々なデータ単位に対する演算処理、具体的には、非線形変換処理や線形変換処理、シフト処理、鍵を適用した排他的論理和などの様々な処理を繰り返すことでデータ変換を行なう。
ビット数=8×(n)2ビットである場合、(nは自然数)
バイト数として表現すると、
バイト数=(n)2バイトである場合、(nは自然数)
このような場合に限られてしまう。
128ビットは、ビット数=8×(4)2ビットであり、図1(a)に示すように4×4の16個のバイト単位データの正方形配列として設定できる。
256=8×32
であり、
256=8×(n)2ビット
として表現できないため、バイト単位の正方形配列は不可能となる。
このような場合、32個の8ビットのバイト単位データa1,a2,a3・・・a32の各々を図1(b)に示すように、縦横比が1:2のような長方形に配置し、この長方形配列に対して、行単位の処理や列単位の処理を繰り返すことで攪拌を実行することになる。しかし、この図1(b)に示すような長方形配列に対しては、正方形の場合と同様な手順で攪拌を行っても演算の手間が増える割に攪拌性能が上がらないという問題がある。
図2以下を参照して128ビットのデータに対するデータ変換処理における攪拌処理について説明する。128ビットのデータはバイト(8ビット)単位のデータに分割される。ここでは分割された1バイト単位の16個のデータをa1からa16で表す。
(1)非線形変換処理(SUB)、
各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図2(1)に示すように、変換処理後のバイト単位の出力biと入力aiの関係は、
bi=S(ai)
i=1,2,・・・,16、
である。例えばAES暗号においてはS−boxを利用した非線形変換に対応する。
行ごとにローテーションシフト演算を施す処理。シフト量は行ごとに異なり、AESの場合は、図2(2)に示すように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
t(bi,bi+4,bi+8,bi+12)=Mt(ai,ai+4,ai+8,ai+12)
i=1,2,3,4、
である。なお、t()は、行列における行と列を入れ替えた転置行列を示している。すなわち、上記式は、以下を意味する。
鍵スケジュール部から出力されたラウンド鍵[ki]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
bi=ai(XOR)ki
i=1,2,・・・,16、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
2SUB+2MAT+2KADD
と見積もることができる。
なお、これらの演算処理を実行するためには、論理回路や演算処理プログラムなどが利用され、その構成によって必要とする演算回路や処理速度も異なることになる。従って絶対的な効率の評価は難しいが、上記の演算に必要となる論理回路におけるゲート数を1つの評価指標とすることが可能である。
ある論理回路実装例として、各演算に必要とするゲート数は、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらのゲート数に相当する。
2SUB+2MAT+2KADD=9,000〜13,000ゲート=9Kゲート〜13Kゲート
の計算コストであると算出できる。
この計算コストが小さいほど、暗号処理やハッシュ処理などを実行する装置に必要とする回路規模の小型化が可能であり、また高速処理も可能となる。
次に、図5以下を参照して256ビットのデータに対するデータ変換処理における攪拌処理について説明する。以下、AESと同様の設計方針を持つアルゴリズム[Rijndael]における変換処理における攪拌例について説明する。
(1)非線形変換処理(W−SUB)、
各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図5(1)に示すように、変換処理後のバイト単位の出力biと入力aiの関係は、
bi=S(ai)
i=1,2,・・・,32、
である。
行ごとにローテーションシフト演算を施す処理。シフト量は行ごとに異なり、Rijndaelの場合は、図5(2)に示すように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は3バイト分、四行目は4バイト分のローテーションシフトを行う。
列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
t(bi,bi+8,bi+16,bi+24)=Mt(ai,ai+8,ai+16,ai+24)
i=1,2,3,・・・8、
である。なお、t()は、行列における行と列を入れ替えた転置行列を示している。
鍵スケジュール部から出力されたラウンド鍵[ki]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
bi=ai(XOR)ki
i=1,2,・・・,32、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
3(W−SUB)+3(W−MAT)+3(W−KADD)と見積もることができる。
W−SUB,W−MAT,W−KADDは、それぞれSUB,MAT,KADDの2倍のコストに相当する。従って、この長方形ステートにおいて、長方形ステートを構成するすべてのバイト単位データに影響を与えるまでの3ラウンド演算に必要とする演算コストは、先の[0025]において説明したゲート数に基づいて算出すると、26Kゲート〜38Kゲートとなる。
データ変換装置であり、
ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した分割データの一方に対する線形変換処理と、
2つの分割データ相互の排他的論理和演算処理と、
分割データの一方のデータに対するシフト処理と、
2つの分割データのスワップ処理を実行する構成であることを特徴とするデータ変換装置にある。
データ変換装置において実行するデータ変換方法であり、
データ変換部が、ラウンド演算を繰り返してデータ変換を行なうデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した分割データの一方に対する線形変換処理と、
2つの分割データ相互の排他的論理和演算処理と、
分割データの一方のデータに対するシフト処理と、
2つの分割データのスワップ処理を実行することを特徴とするデータ変換方法にある。
データ変換装置においてデータ変換処理を実行させるコンピュータ・プログラムであり、
データ変換部に、ラウンド演算を繰り返してデータ変換を行なわせるデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した分割データの一方に対する線形変換処理と、
2つの分割データ相互の排他的論理和演算処理と、
分割データの一方のデータに対するシフト処理と、
2つの分割データのスワップ処理を実行するステップであることを特徴とするコンピュータ・プログラムにある。
ビット数=8×(n)2ビットである場合、(nは自然数)
バイト数として表現すると、
バイト数=(n)2バイトである場合、(nは自然数)
このようなビット数(またはバイト数)とならないデータに対するデータ攪拌処理を効率的に実行する構成を提案するものである。
(1)非線形変換処理(H−SUB)
(2)線形変換処理(H−MAT)
(3)鍵適用演算(H−KADD)
の処理例を示す。なお、図8では、長方形ステートの左半分の分割データに対してのみ上記各演算を適用した例である。なお、演算の適用対象は左半分または右半分、いずれでも同様の演算削減効果が発揮される。
(1)非線形変換処理(H−SUB)、
長方形ステートの左半分の分割データ各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図8(1)に示すように、変換処理後のバイト単位の出力biと入力aiの関係は、
bi=S(ai),if=i=1〜4,9〜12,17〜20,25〜28,
bi=ai,else
上記のように右半分の分割データは変更しない。
長方形ステートの左半分の分割データ各バイトデータについて、列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
t(bi,bi+8,bi+16,bi+24)=Mt(ai,ai+8,ai+16,ai+24)
i=1,2,3,4、
t(bi,bi+8,bi+16,bi+24)=t(ai,ai+8,ai+16,ai+24)
i=5,6,7,8、
上記のように、長方形ステートの左半分の各バイトデータについて行列[M]を適用した線形変換を実行し、右半分の分割データは変更しない。
なお、t()は、行列における行と列を入れ替えた転置行列を示している。
長方形ステートの左半分の分割データ各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[ki]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
bi=ai(XOR)ki,if i=1〜4,9〜12,17〜20,25〜28,
bi=ai,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
(1)非線形変換処理(H−SUB)
(2)線形変換処理(H−MAT)
(3)鍵適用演算(H−KADD)
これらの処理と、長方形ステートの全体データに対するシフト処理(W−SHIFT)を組み合わせて、1ラウンドのラウンド演算を行なう設定とした場合のデータ拡散について考察する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)
(2)長方形ステートの全体データに対するシフト処理(W−SHIFT)
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データに対する鍵適用演算(H−KADD)
これらの(1)〜(4)の処理を1ラウンド分の演算として設定したラウンド演算を実行するものとする。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)
(2)長方形ステートの全体データに対するシフト処理(W−SHIFT)
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データに対する鍵適用演算(H−KADD)
これらの(1)〜(4)の処理を1ラウンド分の演算として設定したラウンド演算を実行する構成では、十分な拡散が実行されず、暗号処理やハッシュ処理、データ拡散処理などに適用するには好ましくない。
本発明の第1実施例におけるラウンド演算の構成を図12に示す。実施例1のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理をラウンド演算とする。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
この処理は、先に図8を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算である。
図8(1)に示すように、変換処理後のバイト単位の出力biと入力aiの関係は、
bi=S(ai),if=i=1〜4,9〜12,17〜20,25〜28,
bi=ai,else
上記のように右半分の分割データは変更しない。
このシフト処理(H−SHIFT)について、図13(A)を参照して説明する。長方形ステートの左半分の分割データに対してのみ、各行について異なるシフト量(0〜(n−1))のシフトを実行する。例えば、先に図2を参照して説明した正方ステートに対するシフト処理と同様、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
この線形変換および排他的論理和演算(MAT−XOR)について図13(B)を参照して説明する。
変換処理後のバイト単位の出力biと入力aiの関係は、
(3−1)左半分の分割データ
t(bi,bi+8,bi+16,bi+24)=t(ai,ai+8,ai+16,ai+24)
i=1,2,3,4、
(3−2)右半分の分割データ
t(bi+4,bi+12,bi+20,bi+28)=[Mt(ai,ai+8,ai+16,ai+24)](XOR)t(ai+4,ai+12,ai+20,ai+28)
i=1,2,3,4、
である。なお、t()は、行列における行と列を入れ替えた転置行列を示している。
このスワップ処理(SWAP)について図13(C)を参照して説明する。この処理は、図に示すように、長方形ステートにおける左半分と右半分を入れ替える処理である。
この処理は、先に図8(3)を参照して説明した処理と同様の処理である。長方形ステートの左半分の各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[ki]を各バイトデータに排他的論理和を行う。
変換処理後のバイト単位の出力biと入力aiの関係は、
bi=ai(XOR)ki,if i=1〜4,9〜12,17〜20,25〜28,
bi=ai,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
例えば、先に説明したように、128ビットの正方ステートに対して設定される論理回路実装例として、各演算に必要とするゲート数は、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらのゲート数に相当する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、上記128ビットの正方ステートに対する非線形変換処理(SUB)と同等、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)は、128ビットの正方ステートに対する線形変換処理(MAT)と鍵適用演算処理(KADD)を併せた処理と同等、
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)は、128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
演算コスト=4SUB+4MAT+8KADD
と見積もることができる。
上記ゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=4SUB+4MAT+8KADD
=19Kゲート〜27Kゲート
となる。
次に、本発明の第2実施例におけるラウンド演算の構成を図16に示す。実施例2のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理をラウンド演算とする。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
これらの処理は、実施例1において説明した処理と同様の処理である。
bi=S(ai),if=i=1〜4,9〜12,17〜20,25〜28,
bi=ai,else
上記のように右半分の分割データは変更しない。
この処理は、先に図8(2)を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータについて、列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力biと入力aiの関係は、
t(bi,bi+8,bi+16,bi+24)=Mt(ai,ai+8,ai+16,ai+24)
i=1,2,3,4、
t(bi,bi+8,bi+16,bi+24)=t(ai,ai+8,ai+16,ai+24)
i=5,6,7,8、
上記のように、長方形ステートの左半分の各バイトデータについて行列[M]を適用した線形変換を実行し、右半分の分割データは変更しない。
なお、t()は、行列における行と列を入れ替えた転置行列を示している。
この排他的論理和演算(XOR)処理について、図17を参照して説明する。長方形ステートの左半分の1つの列データと、右半分の対応するデータ列と排他的論理和(XOR)を行い、その結果を右半分の分割データとして更新する。左半分の分割データは更新しない。
変換処理後のバイト単位の出力biと入力aiの関係は、
(3−1)左半分の分割データ
t(bi,bi+8,bi+16,bi+24)=t(ai,ai+8,ai+16,ai+24)
i=1,2,3,4、
(3−2)右半分の分割データ
t(bi+4,bi+12,bi+20,bi+28)=t(ai,ai+8,ai+16,ai+24)(XOR)t(ai+4,ai+12,ai+20,ai+28)
i=1,2,3,4、
である。なお、t()は、行列における行と列を入れ替えた転置行列を示している。
このスワップ処理(SWAP)は、先に説明した実施例1の処理と同様の処理であり、図13(C)に示すように、長方形ステートにおける左半分と右半分を入れ替える処理である。
この処理は、先に図8(3)を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[ki]を各バイトデータに排他的論理和を行う。
変換処理後のバイト単位の出力biと入力aiの関係は、
bi=ai(XOR)ki,if i=1〜4,9〜12,17〜20,25〜28,
bi=ai,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、上記128ビットの正方ステートに対する非線形変換処理(SUB)と同等、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)は、128ビットの正方ステートに対する線形変換処理(MAT)と同等、
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)は、128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
演算コスト=3SUB+3MAT+6KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=3SUB+3MAT+6KADD
=14Kゲート〜20Kゲート
となる。
次に、本発明の第3実施例におけるラウンド演算の構成を図20に示す。実施例3のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理をラウンド演算とする。
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの処理は、先に説明した実施例1,2の処理と同様であるので説明を省略する。
長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する。左半分の分割データは更新しない。
変換処理後のバイト単位の出力biと入力aiの関係は、
(1−1)左半分の分割データ
t(bi,bi+8,bi+16,bi+24)=t(ai,ai+8,ai+16,ai+24)
i=1,2,3,4、
(1−2)右半分の分割データ
t(bi+4,bi+12,bi+20,bi+28)=[Mt(S(ai),S(ai+8),S(ai+16),S(ai+24))](XOR)t(ai+4,ai+12,ai+20,ai+28)
i=1,2,3,4、
である。なお、t()は、行列における行と列を入れ替えた転置行列を示している。
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理によって構成される。すなわち、[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理、すなわち、[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
(1)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)は、128ビットの正方ステートに対する非線形変換処理(SUB)と線形変換処理(MAT)と鍵適用演算処理(KADD)を全て行なう演算コストに相当する。
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
演算コスト=4SUB+4MAT+8KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=4SUB+4MAT+8KADD
=19Kゲート〜27Kゲート
となる。
次に、本発明の第4実施例におけるラウンド演算の構成を図24に示す。実施例4のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理をラウンド演算とする。
変換処理後のバイト単位の出力biと入力aiの関係は、
(3−1)左半分の分割データ
t(bi,bi+8,bi+16,bi+24)=t(ai,ai+8,ai+16,ai+24)(XOR)t(ai+4,ai+12,ai+20,ai+28)
i=1,2,3,4、
(3−2)右半分の分割データ
t(bi+4,bi+12,bi+20,bi+28)=t(ai,ai+12,ai+20,ai+28)
i=1,2,3,4、
である。なお、t()は、行列における行と列を入れ替えた転置行列を示している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、上記128ビットの正方ステートに対する非線形変換処理(SUB)と同等、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)は、128ビットの正方ステートに対する線形変換処理(MAT)と同等、
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)は、128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
演算コスト=5SUB+5MAT+10KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=5SUB+5MAT+10KADD
=23Kゲート〜33Kゲート
となる。
上述した実施例1〜4においては長方形ステートにおける左半分の分割データにのみシフト処理を適用する[H−SHIFT]を実行する構成例について説明した。すでに説明したように、シフト処理(SHIFT)は各行ごとに異なる値のローテーションシフトを適用するものであるが、本発明の実施例1〜4において実行するシフト処理(H−SHIFT)に必要な性質は以下の通りである。
上記性質が満たされていれば、必ずしもローテーションに基づくシフトである必要はない。
(1)長方形ステートの半分の分割データ[SL]に対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データ[SL]と[SR]に対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データ[SL]に対する線形変換処理を行い、残り半分の分割データ[SR]との排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データ[SL],[SR]を入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データ[SL]に対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
このような設定としても、先に説明した実施例1の拡散効果と同様の効果が得られる。他の実施例2,3,4についても同様であり、シフト処理は各実施例において説明した側の半分の分割データ以外の半分の分割データに対して適用してもよい。なお、左右両方のシフト処理の態様は、左右同じものでも左右独立に選んでも良い。
上述した実施例1,2,3,4では、32バイト(256ビット)データで構成される4行×8列、計32個のバイト単位データによって構成される長方形ステートに対する処理例として説明をした。
bi=S(ai) if 1≦i mod 2n≦n
bi=ai else
ただしS()は非線形変換処理を示す。
for i=1...n
t(bi,bi+2n,..,bi+2(m−1)n)=t(ai,ai+2n,..,ai+2(m−1)n)
t(bi+n,bi+3n,..,bi+(2m−1)n)=[Mt(ai,ai+2n,..,ai+2(m−1)n)](XOR)t(ai+n,ai+3n,..,ai+(2m−1)n)
ただし、
t()は転置行列を示し、
[M]は線形変換行列、
(XOR)は排他的論理和演算である。
t(bi,bi+2n,..,bi+2(m−1)n)=Mt(ai,ai+2n,..,ai+2(m−1)n) if i=1..n
t(bi,bi+2n,..,bi+2(m−1)n)=t(ai,ai+2n,..,ai+2(m−1)n) else
ただし、
t()は転置行列を示し、
[M]は線形変換行列である。
bi=ai(XOR)ki if 1≦i mod 2n≦n
bi=ai else
ただし、
(XOR)は排他的論理和演算、
kiは鍵データである。
for i=1..n
t(bi,bi+2n,..,bi+2(m−1)n)=t(ai,ai+2n,..,ai+2(m−1)n)
t(bi+n,bi+3n,..,bi+(2m−1)n)=t(ai,ai+2n,..,ai+2(m−1)n)(XOR)t(ai+n,ai+3n,..,ai+(2m−1)n)
ただし、
t()は転置行列を示し、
(XOR)は排他的論理和演算である。
for i=1..n
t(bi,bi+2n,..,bi+2(m−1)n)=t(ai,ai+2n,..,ai+2(m−1)n)
t(bi+n,bi+3n,..,bi+(2m−1)n)=[Mt(S(ai),S(ai+2n),..,S(ai+2(m−1)n)](XOR)t(ai+n,ai+3n,..,ai+(2m−1)n)
ただし、
t()は転置行列を示し、
[M]は線形変換行列、
(XOR)は排他的論理和演算である。
*m≦nの場合:m行2n列の長方形ステートにおいて、シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)中の同じ列に含まれるバイトデータはシフト処理後には必ず異なる列に設定する。
*m>nの場合:シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)中の同じ列に含まれるバイトデータはシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれていること
m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、
m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行する。
先に説明した実施例1〜4では、長方形ステートの半分の分割データが正方ステートとなる例を説明したが、上述したように、本発明は、このような特殊な形状の長方形ステートのみならず、少なくとも2分割可能な偶数列を持つ任意の形状の長方形ステートに対して適用可能である。以下、長方形ステートの半分の分割データが正方ステートとならない場合に各実施例1〜4を適用した場合のデータ拡散例について説明する。
図30は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート310に対して、先に実施例1で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート310中の左上端のバイト単位データ311に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ311の構成ビットによって変化するバイト単位データを黒で示している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する処理である。
演算コスト=7.5SUB+7.5MAT+15KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=7.5SUB+7.5MAT+15KADD
=35Kゲート〜50Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式では4ラウンドかかり、変換処理において必要とされる演算コストは12SUB+12MAT+12KADD(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
図31は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート320に対して、先に実施例2で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート320中の左上端のバイト単位データ321に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ321の構成ビットによって変化するバイト単位データを黒で示している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する処理である。
演算コスト=6SUB+6MAT+12KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=6SUB+6MAT+12KADD
=28Kゲート〜40Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
図32は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート330に対して、先に実施例3で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート330中の左上端のバイト単位データ331に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ331の構成ビットによって変化するバイト単位データを黒で示している。
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理によって構成される。すなわち、[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する処理である。
演算コスト=7.5SUB+7.5MAT+15KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=7.5SUB+7.5MAT+15KADD
=35Kゲート〜50Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
図33、図34は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート340に対して、先に実施例4で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート340中の左上端のバイト単位データ341に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ341の構成ビットによって変化するバイト単位データを黒で示している。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[ki]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行する処理である。
演算コスト=10.5SUB+10.5MAT+21KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=10.5SUB+10・5MAT+21KADD
=50Kゲート〜70Kゲート
となる。
これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
上述した各実施例では、ラウンド演算における処理シーケンスを1つのシーケンスとして説明している。すなわち、
実施例1は、
[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]
実施例2は、
[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]
実施例3は、
[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]
実施例4は、
[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]
このシーケンスで各ラウンド演算が実行されるものとして説明した。しかし、必ずしもこのシーケンスに限定されることなく、ラウンド演算において実行する処理順は異なる順番としてもよい。例えば、ラウンド内の初めの処理を別の処理に設定して、ラウンドの切れ目を変えて別のラウンド構成として解釈することは容易である。
上述した実施例において、線形変換処理[H−MAT]に適用する行列は各ラウンドにおいて共通の固定行列[M]を利用することが可能であるが、この行列[M]をラウンド間で切り換えて異なる行列を適用する構成としてもよい。いわゆるDSM(Diffusion Switching Mechanism)の適用構成とすることでさらにセキュリティレベルを向上させることができる。
[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]
これらの複数の処理によって構成されるラウンド演算を繰り返し実行する処理である。
最後に、上述した実施例に従った処理を実行する装置としてのICモジュール700の構成例を図35に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能である。また、各処理は、論理回路を構成したハード回路やプログラム、あるいはその双方を適用して実行可能である。処理を実行する一例として例えば、図35に示すICモジュール700があり、このようなICモジュール700は様々な機器に搭載することが可能である。
(1)非線形変換処理(H−SUB)
(2)線形変換および排他的論理和演算(MAT−XOR)
(3)線形変換処理(H−MAT)
(4)鍵適用演算(H−KADD)
(5)排他的論理和処理(XOR)(XOR2)
(6)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)
これらの各処理を実行する処理部を有する。なお、これらの処理は、ハードウェア、またはソフトウェア、またはその組み合わせ構成によって実現される。
21 正方ステート
31 バイト単位データ
51 長方形配列データ(長方形ステート)
61 長方形配列データ(長方形ステート)
71 バイト単位データ
100 長方形ステート
101 バイト単位データ
102 バイト単位データ
200 長方形ステート
201 バイト単位データ
202 バイト単位データ
220 長方形ステート
221 バイト単位データ
222 バイト単位データ
230 長方形ステート
231 バイト単位データ
232 バイト単位データ
240 長方形ステート
241 バイト単位データ
242 バイト単位データ
310 長方形ステート
311 バイト単位データ
320 長方形ステート
321 バイト単位データ
330 長方形ステート
331 バイト単位データ
340 長方形ステート
341 バイト単位データ
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 データ変換部
704 乱数発生器
705 送受信部
Claims (20)
- データ変換装置であり、
ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする構成であり、
前記複数の演算は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
(d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
上記(a)〜(d)の各処理を含む演算であるデータ変換装置。 - 前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成である請求項1に記載のデータ変換装置。
- 前記データ変換部は、
前記ラウンド演算において、さらに、
(e)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
(f)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵適用演算処理を実行する構成である請求項1に記載のデータ変換装置。 - 前記鍵適用演算は、前記分割データ、または更新分割データ中のいずれかの分割データの構成データと暗号鍵データとの排他的論理和演算である請求項3に記載のデータ変換装置。
- 前記データ変換部は、
前記排他的論理和演算の結果を前記分割データ、または更新分割データの新たな更新データとして設定する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記シフト処理の実行に際して、
m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データ、または更新分割データが、m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記シフト処理を2分割した分割データ、または更新分割データの双方に対して実行する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。 - 前記データ変換部は、
前記ラウンド演算における線形変換処理において、複数の異なる行列をラウンド単位で選択適用する構成である請求項1に記載のデータ変換装置。 - 前記データ変換部は、
複数の異なる行列の選択適用としてDSM(Diffusion Switching Mechanism)を利用した処理を行う構成である請求項12に記載のデータ変換装置。 - データ変換装置において実行するデータ変換方法であり、
データ変換部が、ラウンド演算を繰り返してデータ変換を行なうデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする処理を実行し、
前記複数の演算は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
(d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
上記(a)〜(d)の各処理を含む演算であるデータ変換方法。 - 前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成である請求項14に記載のデータ変換方法。
- 前記データ変換ステップは、
前記ラウンド演算において、さらに、
(e)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
(f)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵適用演算処理を実行する構成である請求項14に記載のデータ変換方法。 - 前記鍵適用演算は、前記分割データ、または更新分割データ中のいずれかの分割データの構成データと暗号鍵データとの排他的論理和演算である請求項16に記載のデータ変換方法。
- 前記データ変換ステップは、
前記排他的論理和演算の結果を前記分割データ、または更新分割データの新たな更新データとして設定する請求項14に記載のデータ変換方法。 - データ変換装置においてデータ変換処理を実行させるコンピュータ・プログラムであり、
データ変換部に、ラウンド演算を繰り返してデータ変換を行なわせるデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする処理を実行し、
前記複数の演算は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
(d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
上記(a)〜(d)の各処理を含む演算であるコンピュータ・プログラム。 - プログラムを実行するプロセッサと、
前記プログラムを保持するメモリと、
ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする処理を実行し、
前記複数の演算は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
(d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
上記(a)〜(d)の各処理を含む演算である情報処理装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008010548A JP5272417B2 (ja) | 2008-01-21 | 2008-01-21 | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム |
US12/812,903 US8379843B2 (en) | 2008-01-21 | 2009-01-21 | Data converter, data conversion method, and computer program |
CN200980105793.0A CN101952870B (zh) | 2008-01-21 | 2009-01-21 | 数据转换器和数据转换方法 |
PCT/JP2009/050855 WO2009093601A1 (ja) | 2008-01-21 | 2009-01-21 | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム |
EP09704169.3A EP2234090A4 (en) | 2008-01-21 | 2009-01-21 | Data converter, data conversion method, and computer program |
US13/685,821 US8824671B2 (en) | 2008-01-21 | 2012-11-27 | Data converter, data conversion method, and computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008010548A JP5272417B2 (ja) | 2008-01-21 | 2008-01-21 | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013098955A Division JP5510587B2 (ja) | 2013-05-09 | 2013-05-09 | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2009175167A JP2009175167A (ja) | 2009-08-06 |
JP2009175167A5 JP2009175167A5 (ja) | 2011-02-17 |
JP5272417B2 true JP5272417B2 (ja) | 2013-08-28 |
Family
ID=40901109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008010548A Expired - Fee Related JP5272417B2 (ja) | 2008-01-21 | 2008-01-21 | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム |
Country Status (5)
Country | Link |
---|---|
US (2) | US8379843B2 (ja) |
EP (1) | EP2234090A4 (ja) |
JP (1) | JP5272417B2 (ja) |
CN (1) | CN101952870B (ja) |
WO (1) | WO2009093601A1 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8369515B2 (en) * | 2010-03-18 | 2013-02-05 | Chiou-Haun Lee | Cryptographic method of multilayer diffusion in multidimension |
CN101848078A (zh) * | 2010-04-30 | 2010-09-29 | 中国科学院软件研究所 | 一种密钥流序列扰动方法及加密方法 |
JP5449063B2 (ja) * | 2010-07-06 | 2014-03-19 | 日本電信電話株式会社 | Rijndael型192bitブロック暗号化装置、方法、及びそのプログラム |
JP5755970B2 (ja) * | 2011-08-26 | 2015-07-29 | 株式会社東芝 | 演算装置 |
US10795766B2 (en) | 2012-04-25 | 2020-10-06 | Pure Storage, Inc. | Mapping slice groupings in a dispersed storage network |
US10621044B2 (en) | 2012-04-25 | 2020-04-14 | Pure Storage, Inc. | Mapping slice groupings in a dispersed storage network |
US9380032B2 (en) | 2012-04-25 | 2016-06-28 | International Business Machines Corporation | Encrypting data for storage in a dispersed storage network |
CN102857412A (zh) * | 2012-10-12 | 2013-01-02 | 南京恩瑞特实业有限公司 | 一种新型的数据快速转换算法 |
US9460171B2 (en) | 2013-11-08 | 2016-10-04 | International Business Machines Corporation | Processing data in data migration |
CN104618092A (zh) * | 2015-01-05 | 2015-05-13 | 浪潮(北京)电子信息产业有限公司 | 一种信息加密方法及*** |
JP6187624B1 (ja) * | 2016-03-17 | 2017-08-30 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
CN108270599B (zh) * | 2016-12-30 | 2021-05-11 | 北京亿阳信通科技有限公司 | 一种基于snmp协议的数据解析处理方法及*** |
CN107196638A (zh) * | 2017-05-19 | 2017-09-22 | 郑州云海信息技术有限公司 | 监控电平转换器两端数据的方法、***及电平转换器 |
US11095428B2 (en) * | 2018-07-24 | 2021-08-17 | Duality Technologies, Inc. | Hybrid system and method for secure collaboration using homomorphic encryption and trusted hardware |
US20220129592A1 (en) * | 2020-10-22 | 2022-04-28 | Seagate Technology Llc | Cartridge data storage with information-theoretic security |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997009705A1 (fr) * | 1995-09-05 | 1997-03-13 | Mitsubishi Denki Kabushiki Kaisha | Appareil de conversion de donnees et procede de conversion de donnees |
WO1999038143A1 (fr) * | 1998-01-27 | 1999-07-29 | Nippon Telegraph And Telephone Corporation | Convertisseur de donnees et support d'enregistrement sur lequel est enregistre un programme d'execution de conversion de donnees |
US6578061B1 (en) * | 1999-01-19 | 2003-06-10 | Nippon Telegraph And Telephone Corporation | Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon |
DE60139280D1 (de) * | 2000-03-09 | 2009-08-27 | Nippon Telegraph & Telephone | Blockverschlüsselungseinrichtung unter Verwendung von Hilfsumwandlungen |
US20020021801A1 (en) * | 2000-07-13 | 2002-02-21 | Takeshi Shimoyama | Computing apparatus using an SPN structure in an F function and a computation method thereof |
JP4128395B2 (ja) * | 2002-05-23 | 2008-07-30 | 三菱電機株式会社 | データ変換装置 |
JP4622222B2 (ja) * | 2003-09-30 | 2011-02-02 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4622807B2 (ja) * | 2005-03-25 | 2011-02-02 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP2007199156A (ja) | 2006-01-24 | 2007-08-09 | Sony Corp | 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム |
JP4453697B2 (ja) * | 2006-12-15 | 2010-04-21 | ソニー株式会社 | 演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラム |
-
2008
- 2008-01-21 JP JP2008010548A patent/JP5272417B2/ja not_active Expired - Fee Related
-
2009
- 2009-01-21 CN CN200980105793.0A patent/CN101952870B/zh not_active Expired - Fee Related
- 2009-01-21 WO PCT/JP2009/050855 patent/WO2009093601A1/ja active Application Filing
- 2009-01-21 EP EP09704169.3A patent/EP2234090A4/en not_active Withdrawn
- 2009-01-21 US US12/812,903 patent/US8379843B2/en not_active Expired - Fee Related
-
2012
- 2012-11-27 US US13/685,821 patent/US8824671B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20130083920A1 (en) | 2013-04-04 |
CN101952870B (zh) | 2014-01-22 |
US8379843B2 (en) | 2013-02-19 |
EP2234090A4 (en) | 2017-07-12 |
JP2009175167A (ja) | 2009-08-06 |
CN101952870A (zh) | 2011-01-19 |
US20110243319A1 (en) | 2011-10-06 |
WO2009093601A1 (ja) | 2009-07-30 |
US8824671B2 (en) | 2014-09-02 |
EP2234090A1 (en) | 2010-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5272417B2 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
JP5055993B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP5023624B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
KR101364192B1 (ko) | 암호처리장치, 암호처리 알고리즘 구축방법 및 암호처리방법과 컴퓨터·프로그램 | |
DK1686722T3 (en) | Block encryption device and block encryption method comprising rotation key programming | |
US8275127B2 (en) | Cryptographic processing apparatus, cryptographic processing method, and computer program therefor | |
JP4905000B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
Aboytes-González et al. | Design of a strong S-box based on a matrix approach | |
TWI394418B (zh) | A cryptographic processing device, a cryptographic processing method, and a non-temporary computer readable recording medium | |
JP5050454B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
KR101770874B1 (ko) | 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치 | |
WO2009087972A1 (ja) | データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム | |
JP2001324924A (ja) | 暗号化装置及び暗号化方法、復号装置及び復号方法並びに演算装置 | |
JP2007192893A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
CN102713994B (zh) | 加密装置 | |
US20050147244A1 (en) | Method for cryptographic transformation of binary data blocks | |
JP5510587B2 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
JP6089668B2 (ja) | 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム | |
KR100350207B1 (ko) | 디지털 데이터의 엘-비트 입력 블록들을 엘-비트 출력비트들로 암호 변환하는 방법 | |
US11750369B2 (en) | Circuit module of single round advanced encryption standard | |
JP3017726B2 (ja) | データ変換装置 | |
CN116743353A (zh) | 一种新型flm结构的分组密码算法实现方法及*** | |
JP5223245B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
Hashem et al. | Quadrate Design of Linear System for Color Image Encryption |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20101108 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20101108 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101227 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121218 |
|
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: 20130416 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130429 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5272417 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |