JP5272417B2 - データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム - Google Patents

データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム Download PDF

Info

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
Application number
JP2008010548A
Other languages
English (en)
Other versions
JP2009175167A5 (ja
JP2009175167A (ja
Inventor
太三 白井
香士 渋谷
志帆 盛合
徹 秋下
哲 岩田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to JP2008010548A priority Critical patent/JP5272417B2/ja
Application filed by Sony Corp filed Critical Sony Corp
Priority to EP09704169.3A priority patent/EP2234090A4/en
Priority to US12/812,903 priority patent/US8379843B2/en
Priority to CN200980105793.0A priority patent/CN101952870B/zh
Priority to PCT/JP2009/050855 priority patent/WO2009093601A1/ja
Publication of JP2009175167A publication Critical patent/JP2009175167A/ja
Publication of JP2009175167A5 publication Critical patent/JP2009175167A5/ja
Priority to US13/685,821 priority patent/US8824671B2/en
Application granted granted Critical
Publication of JP5272417B2 publication Critical patent/JP5272417B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware 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

本発明は、データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムに関する。さらに詳細には、効率的なデータ拡散や暗号処理を実現するデータ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムに関する。
入力データに対してブロック単位のデータ変換処理を実行して暗号化を行なうブロック暗号や、ハッシュ関数などにおいては、入力データに対する高いデータ攪拌性能が求められる。例えば、入力データをバイト単位などの固定サイズに分割して線形変換や非線形変換などの様々な演算を繰り返し実行して、バイト単位データを互いに影響させながらデータを攪拌させるといった処理を行なう。
例えば米国標準暗号として知られているAES(Advanced Encryption Standard)アルゴリズムは、入力データをバイト単位に分割し、バイト単位データを正方形や長方形の配列として配置し、行単位の処理や列単位の処理、具体的には非線形変換処理や線形変換処理などの様々な処理を繰り返すことで、データの攪拌を行なうアルゴリズムである。
具体例について図1を参照して説明する。変換処理の対象とするデータが8×16=128ビットデータである場合、図1(a)に示すように、a,a,a・・・a16の各々を8ビットの1バイトデータとしたバイト単位データからなる正方形配列を設定して、
行単位の演算、例えば(a,a,a,a)など各行に対する演算処理、あるいは、
列単位の演算、例えば(a,a,a,a13)など各列に対する演算、
このような様々なデータ単位に対する演算処理、具体的には、非線形変換処理や線形変換処理、シフト処理、鍵を適用した排他的論理和などの様々な処理を繰り返すことでデータ変換を行なう。
図1(a)に示すように、バイト単位データを正方形に配置して行単位あるいは列単位の処理を実行すると効率的な攪拌を実現することができることが知られている。しかし、1バイト単位データの正方形配列ができるのは、変換処理対象となる入力データが、図1(a)に示す8×16=128ビットデータのように特定ビット数のデータである場合に限られる。具体的には、
ビット数=8×(n)ビットである場合、(nは自然数)
バイト数として表現すると、
バイト数=(n)バイトである場合、(nは自然数)
このような場合に限られてしまう。
128ビットは、ビット数=8×(4)ビットであり、図1(a)に示すように4×4の16個のバイト単位データの正方形配列として設定できる。
しかし、変換対象となるデータが例えば256ビットである場合、
256=8×32
であり、
256=8×(n)ビット
として表現できないため、バイト単位の正方形配列は不可能となる。
このような場合、32個の8ビットのバイト単位データa,a,a・・・a32の各々を図1(b)に示すように、縦横比が1:2のような長方形に配置し、この長方形配列に対して、行単位の処理や列単位の処理を繰り返すことで攪拌を実行することになる。しかし、この図1(b)に示すような長方形配列に対しては、正方形の場合と同様な手順で攪拌を行っても演算の手間が増える割に攪拌性能が上がらないという問題がある。
図2以下を参照して、バイト単位の単位データを正方形配列とした場合(正方ステート)と、長方形配列とした場合(長方形ステート)の攪拌処理例について説明する。
(A)正方形配列(正方ステート)に対する処理例
図2以下を参照して128ビットのデータに対するデータ変換処理における攪拌処理について説明する。128ビットのデータはバイト(8ビット)単位のデータに分割される。ここでは分割された1バイト単位の16個のデータをaからa16で表す。
図2に示す正方形配列データ(正方ステート)11にあるように1バイト単位の16個のデータ[a〜a16]を4×4の配列上に格納する。この正方形の配列に格納された状態のデータを以下、正方ステートと呼ぶ。
AESブロック暗号アルゴリズムでは、正方ステートに対する演算が複数定義されており、定義された演算を繰り返し適用することで暗号化を実現している。AESで定義されている演算は、図2に示す以下の4種類である。
(1)非線形変換処理(SUB)、
各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図2(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a
i=1,2,・・・,16、
である。例えばAES暗号においてはS−boxを利用した非線形変換に対応する。
(2)シフト処理(SHIFT)、
行ごとにローテーションシフト演算を施す処理。シフト量は行ごとに異なり、AESの場合は、図2(2)に示すように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
(3)線形変換処理(MAT)、
列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
(b,bi+4,bi+8,bi+12)=M(a,ai+4,ai+8,ai+12
i=1,2,3,4、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。すなわち、上記式は、以下を意味する。
Figure 0005272417
(4)鍵適用演算処理(KADD)、
鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k
i=1,2,・・・,16、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
上記の各演算(1)〜(4)を所定シーケンスで順次実行する演算の組み合わせによって、1つのラウンド演算が設定される。入力データに対して、ラウンド演算を繰り返し実行し出力データ、例えば暗号化データを生成して出力する。ラウンド演算は、図3に示すように、例えば、(1)非線形変換処理(SUB)→(2)シフト処理(SHIFT)→(3)線形変換処理(MAT)→(4)鍵適用演算処理(KADD)の順で実行する一連のデータ変換処理によって構成され、このラウンド演算を複数回繰り返して実行し、入力データを変換して出力データ、すなわち暗号化データを生成する。
図4は、正方ステートに対して、(1)非線形変換処理(SUB)→(2)シフト処理(SHIFT)→(3)線形変換処理(MAT)→(4)鍵適用演算処理(KADD)の順で実行するラウンド演算を第1〜第3ラウンド(R1〜R3)実行した場合のデータ攪拌例について説明する図である。
図4では、初期状態の正方ステート21の左上端の1バイトのバイト単位データ31が、各ラウンド演算の(1)非線形変換処理(SUB)、(2)シフト処理(SHIFT)、(3)線形変換処理(MAT)、(4)鍵適用演算処理(KADD)によって、正方ステートに含まれるどのバイト単位データに影響を与えているかを示している。すなわち各演算の実行により正方ステート内の1バイトのデータ31の構成ビットの影響が他のバイト単位データに拡散していく様子を示している。
入力データの初期状態の正方ステート21中の左上のバイト単位データ31に着目する(黒でマーク)。第1ラウンド(R1)目の非線形変換処理(SUB)、シフト処理(SHIFT)までは、バイト単位データ31は、正方ステート中の他のバイト単位データの演算結果に影響を与えることはない。
しかし第1ラウンド目の線形変換処理(MAT)を通過すると正方ステート中の左端の列に含まれる4つのバイト単位データに影響する。この状態を左上のバイト単位データ31の構成ビットの影響が、正方ステート中の左端の列に含まれる4つのバイト単位データに拡散したと呼ぶ。
その後、鍵適用演算(KADD)、第2ラウンドの非線形変換処理(SUB)まではそれ以上の影響が広がらないが、次のシフト処理(SHIFT)により縦に並んでいた4つのバイトが横方向に拡散され、各列に、バイト単位データ31の影響を受けたバイト単位データがひとつずつ存在する状態となる。
さらにその直後の線形変換処理(MAT)により正方ステートを構成する16バイトすべてに影響が伝わることになる。
このケースではラウンド演算の2ラウンド分の処理によって、一つのバイト単位データが、正方ステートを構成するすべてのバイト単位データに影響を与える。なお図4では、一例として左上のバイト単位データ31の影響について説明したが、正方ステートの任意の位置のバイトデータも、同様の影響を他のバイト単位データに与え、2ラウンドで、各バイト単位データの影響が全ての他のバイト単位データに影響を与える、すなわち拡散する。高速で広範囲な拡散処理は、データ攪拌性能の高さを証明するものであり、暗号化データの秘匿性や効率評価の要素として利用される。
図4に示す例では、一つのバイト単位データが、正方ステートを構成するすべてのバイト単位データに影響を与えるまでに2ラウンドを要している。すべてのバイトに影響を与えるまでにかかった演算コストを見積もる。全体に影響を与えるためには2ラウンドかかっているため2回ずつの非線形変換処理(SUB)、シフト処理(SHIFT)、線形変換処理(MAT)、鍵適用演算処理(KADD)が必要である。
一つの指標として演算に必要なハードウェアゲート規模がその演算の本質的な複雑度を表していると捉えるものとする。この場合シフト処理(SHIFT)演算は回路の接続のみで実現することができるのでゲートを通過する必要がなく演算コスト=0としてよい。
従って、図4に示す正方ステートにおいて、1つのバイト単位データが、正方ステートを構成するすべてのバイト単位データに影響を与えるまでの2ラウンド演算に必要とする演算コストは、
2SUB+2MAT+2KADD
と見積もることができる。
なお、これらの演算処理を実行するためには、論理回路や演算処理プログラムなどが利用され、その構成によって必要とする演算回路や処理速度も異なることになる。従って絶対的な効率の評価は難しいが、上記の演算に必要となる論理回路におけるゲート数を1つの評価指標とすることが可能である。
ある論理回路実装例として、各演算に必要とするゲート数は、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらのゲート数に相当する。
従って、図4に示す例において、正方ステートを構成するすべてのバイト単位データに影響を与えるまでの2ラウンド演算に必要とする演算コストは、
2SUB+2MAT+2KADD=9,000〜13,000ゲート=9Kゲート〜13Kゲート
の計算コストであると算出できる。
この計算コストが小さいほど、暗号処理やハッシュ処理などを実行する装置に必要とする回路規模の小型化が可能であり、また高速処理も可能となる。
(B)長方形配列(長方形ステート)に対する処理例
次に、図5以下を参照して256ビットのデータに対するデータ変換処理における攪拌処理について説明する。以下、AESと同様の設計方針を持つアルゴリズム[Rijndael]における変換処理における攪拌例について説明する。
256ビットのデータはバイト(8ビット)単位のデータに分割される。ここでは分割された1バイト単位の32個のデータをaからa32で表す。図5に示す長方形配列データ(長方形ステート)51にあるように1バイト単位の32個のデータ[a〜a32]を4×8の配列上に格納する。この長方形の配列に格納された状態のデータを以下、長方形ステートと呼ぶ。
[Rijndael]アルゴリズムでは、先に図2〜図4を参照して説明した正方ステートで利用された非線形変換処理(SUB)、シフト処理(SHIFT)、線形変換処理(MAT)、鍵適用演算処理(KADD)を、長方形ステートに適用させるために拡張された演算を以下のように定義する。
[Rijndael]アルゴリズムで、定義されている演算は、図5に示す以下の4種類である。
(1)非線形変換処理(W−SUB)、
各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図5(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a
i=1,2,・・・,32、
である。
(2)シフト処理(W−SHIFT)、
行ごとにローテーションシフト演算を施す処理。シフト量は行ごとに異なり、Rijndaelの場合は、図5(2)に示すように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は3バイト分、四行目は4バイト分のローテーションシフトを行う。
(3)線形変換処理(W−MAT)、
列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
(b,bi+8,bi+16,bi+24)=M(a,ai+8,ai+16,ai+24
i=1,2,3,・・・8、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
(4)鍵適用演算処理(W−KADD)、
鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k
i=1,2,・・・,32、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
上記の各演算(1)〜(4)を所定シーケンスで順次実行する演算の組み合わせによって、1つのラウンド演算が設定される。入力データに対して、ラウンド演算を繰り返し実行し出力データ、例えば暗号化データを生成して出力する。ラウンド演算は、図6に示すように、例えば、(1)非線形変換処理(W−SUB)→(2)シフト処理(W−SHIFT)→(3)線形変換処理(W−MAT)→(4)鍵適用演算処理(W−KADD)の順で実行する一連のデータ変換処理によって構成され、このラウンド演算を複数回繰り返して実行し、入力データを変換して出力データ、すなわち暗号化データを生成する。
図7は、長方形ステートに対して、(1)非線形変換処理(W−SUB)→(2)シフト処理(W−SHIFT)→(3)線形変換処理(W−MAT)→(4)鍵適用演算処理(W−KADD)の順で実行するラウンド演算を第1〜第3ラウンド(R1〜R3)実行した場合のデータ攪拌例について説明する図である。
入力データの初期状態の長方形ステート61中の左上のバイト単位データ71に着目する(黒でマーク)。前述の正方ステートのケースと同様に、2ラウンド後には16バイトのデータに影響をおよぼしていることがわかる。さらに3ラウンド目のシフト処理(W−SHIFT)により影響範囲が拡散され、直後の、3ラウンド目の線形変換処理(W−MAT)により32バイトすべてに影響を及ぼしていることがわかる。
このケースではラウンド演算の3ラウンド分の処理によって、一つのバイト単位データが、長方形ステートを構成するすべてのバイト単位データに影響を与える。なお図7では、一例として左上のバイト単位データ71の影響について説明したが、この長方形ステートの任意の位置のバイトデータも、同様の影響を他のバイト単位データに与え、3ラウンドで、各バイト単位データの影響が全ての他のバイト単位データに影響を与える、すなわち拡散する。
次に、先の正方ステート(図4)の例と同様、ゲート数による演算コストを算出する。図7に示す例において、長方形ステートを構成するすべてのバイト単位データに影響を与えるまでの3ラウンド演算に必要とする演算コストは、3回ずつのW−SUB,W−SHIFT,W−MAT,W−KADD演算が必要である。なお前述したようにシフト処理(W−SHIFT)は演算コスト=0とすることが可能であり、従ってこの場合の演算コストは、
3(W−SUB)+3(W−MAT)+3(W−KADD)と見積もることができる。
W−SUB,W−MAT,W−KADDは、それぞれSUB,MAT,KADDの2倍のコストに相当する。従って、この長方形ステートにおいて、長方形ステートを構成するすべてのバイト単位データに影響を与えるまでの3ラウンド演算に必要とする演算コストは、先の[0025]において説明したゲート数に基づいて算出すると、26Kゲート〜38Kゲートとなる。
上述したように、図2〜図4を参照して説明したように、データをバイト単位データとして正方形に配置してラウンド演算を行なう場合には、比較的低い計算コストでの攪拌が達成できるが、図5〜図7を参照して説明したような、正方形配列ができない256ビット等の入出力に対応するために設定される長方形配列を利用した処理では、演算コストが増大してしまうという問題がある。
本発明は、上記問題点に鑑みてなされたものであり、長方形配列によるデータ攪拌を実行する暗号処理やハッシュ処理、データ拡散処理などにおいて、演算コストを低下させ効率的な拡散を実現するデータ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
データ変換装置であり、
ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した分割データの一方に対する線形変換処理と、
2つの分割データ相互の排他的論理和演算処理と、
分割データの一方のデータに対するシフト処理と、
2つの分割データのスワップ処理を実行する構成であることを特徴とするデータ変換装置にある。
さらに、本発明のデータ変換装置の一実施態様において、前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成であることを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、さらに、前記分割データの一方に対する非線形変換処理と、前記分割データの一方に対する鍵適用演算処理を実行する構成であることを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記鍵適用演算は、前記分割データの一方の構成データと暗号鍵データとの排他的論理和演算であることを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記排他的論理和演算の結果を前記分割データの一方の更新データとして設定することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記シフト処理の実行に際して、m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データが、m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記シフト処理を2分割した分割データの双方に対して実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算における線形変換処理において、複数の異なる行列をラウンド単位で選択適用する構成であることを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、複数の異なる行列の選択適用としてDSM(Diffusion Switching Mechanism)を利用した処理を行う構成であることを特徴とする。
さらに、本発明の第2の側面は、
データ変換装置において実行するデータ変換方法であり、
データ変換部が、ラウンド演算を繰り返してデータ変換を行なうデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した分割データの一方に対する線形変換処理と、
2つの分割データ相互の排他的論理和演算処理と、
分割データの一方のデータに対するシフト処理と、
2つの分割データのスワップ処理を実行することを特徴とするデータ変換方法にある。
さらに、本発明のデータ変換方法の一実施態様において、前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成であることを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記ラウンド演算において、さらに、前記分割データの一方に対する非線形変換処理と、前記分割データの一方に対する鍵適用演算処理を実行する構成であることを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記鍵適用演算は、前記分割データの一方の構成データと暗号鍵データとの排他的論理和演算であることを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記排他的論理和演算の結果を前記分割データの一方の更新データとして設定することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記シフト処理の実行に際して、m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データが、m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記シフト処理を2分割した分割データの双方に対して実行することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、前記ラウンド演算における線形変換処理において、複数の異なる行列をラウンド単位で選択適用する構成であることを特徴とする。
さらに、本発明のデータ変換方法の一実施態様において、前記データ変換ステップは、複数の異なる行列の選択適用としてDSM(Diffusion Switching Mechanism)を利用した処理を行う構成であることを特徴とする。
さらに、本発明の第3の側面は、
データ変換装置においてデータ変換処理を実行させるコンピュータ・プログラムであり、
データ変換部に、ラウンド演算を繰り返してデータ変換を行なわせるデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した分割データの一方に対する線形変換処理と、
2つの分割データ相互の排他的論理和演算処理と、
分割データの一方のデータに対するシフト処理と、
2つの分割データのスワップ処理を実行するステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例によれば、例えば1バイト単位のデータブロックを配列した長方形配列データを2分割して設定した分割データに対する様々な処理を実行してデータ変換を行う構成において、分割データの一方に対する線形変換処理と、2つの分割データ相互の排他的論理和演算処理と、分割データの一方のデータに対するシフト処理と、2つの分割データのスワップ処理を実行することで、演算コストを低減した効率的なデータ攪拌を実現することができる。さらに、分割データに対する非線形変換や鍵適用演算を含めることでセキュリティレベルの高い暗号処理が実現される。
以下、図面を参照しながら本発明のデータ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムの詳細について説明する。
本発明は、例えば入出力が256ビットなどのデータ、すなわち、8ビットのバイト単位データの配列を行なった場合、正方形の配列が出来ないビット数を持つデータ、すなわち、具体的には、
ビット数=8×(n)ビットである場合、(nは自然数)
バイト数として表現すると、
バイト数=(n)バイトである場合、(nは自然数)
このようなビット数(またはバイト数)とならないデータに対するデータ攪拌処理を効率的に実行する構成を提案するものである。
先に図1〜図7を参照して説明したように、正方形の配列が出来ないビット数を持つデータについては図1(b)に示すような長方形配列を行なって処理を行なうことになる。本発明では、このような長方形ステートを適用した処理において、演算コストを低減させ、かつ十分な攪拌性能を実現させる手法を提案する。
例えば1つの具体例は、同一サイズのデータブロック、例えばバイト単位データを配列した長方形配列データを2分割した分割データの一方の分割データのみに非線形変換、線形変換、鍵の加算などの演算を行い、さらに、演算コストの低い排他的論理和(XOR)演算や、スワップ(SWAP)演算などを行なう設定とする。この様な構成とすることで少ない処理量で十分な攪拌性能を実現する。本発明において提案する構成を適用することで、演算負荷を低減させて十分な拡散性能が得られ、暗号処理、ハッシュ処理、攪拌処理などを小さな回路規模で高速に行なうことが可能となる。
先に説明したように、AESや、Rijndaelなどのアルゴリズムでは、複数の演算の組み合わせからなるラウンド演算を繰り返し実行する。ラウンド演算には、非線形変換処理(SUB,W−SUB)、シフト処理(SHIFT,W−SHIFT)、線形変換処理(MAT,W−MAT)、鍵適用演算処理(KADD,W−KADD)が含まれる。
これらの処理中、非線形変換処理(SUB,W−SUB)と、線形変換処理(MAT,W−MAT)は、比較的重い処理、すなわち演算コストの高い処理である。従って、これらのコストの高い処理を減少させることができれば、全体の演算コストの低減が可能となると考えられる。
先に説明したRijndaelアルゴリズムは、長方形ステートのすべてのデータに対して、非線形変換処理(W−SUB)や線形変換処理(W−MAT)などを行なうアルゴリズムであるが、本発明の1つの実施例では、長方形ステートのすべてのデータに対して、このような設定とせず、長方形ステートを2分割した分割データの一方の分割データのみに、非線形変換処理や線形変換処理や鍵適用演算処理を行い、シフト処理やスワップ演算など、比較的処理コストの低い演算により、その影響を残り野データに拡散させる構成として十分な拡散性を達成する。
なお、本明細書では、バイト単位データによって構成される長方形配列データ(長方形ステート)のすべてのデータに対する処理と、長方形配列データ(長方形ステート)を2分割した分割データの一方の分割データに対する処理を以下のような表記によって区別して説明する。長方形ステートのすべてのデータに対する処理は、例えば、非線形変換処理(W−SUB)、線形変換処理(W−MAT)など、[W−]を設定した表記として示し、半分の分割データに対する処理は、非線形変換処理(H−SUB)、線形変換処理(H−MAT)など、[H−]を設定した表記として示す。
図8に、4×8=32のバイト単位データ(256ビット)によって構成される長方形ステートを2分割して設定した分割データに対する以下の処理、すなわち、
(1)非線形変換処理(H−SUB)
(2)線形変換処理(H−MAT)
(3)鍵適用演算(H−KADD)
の処理例を示す。なお、図8では、長方形ステートの左半分の分割データに対してのみ上記各演算を適用した例である。なお、演算の適用対象は左半分または右半分、いずれでも同様の演算削減効果が発揮される。
図8に示す各演算の詳細は以下の通りである。
(1)非線形変換処理(H−SUB)、
長方形ステートの左半分の分割データ各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図8(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a),if=i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
(2)線形変換処理(H−MAT)、
長方形ステートの左半分の分割データ各バイトデータについて、列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
(b,bi+8,bi+16,bi+24)=M(a,ai+8,ai+16,ai+24
i=1,2,3,4、
(b,bi+8,bi+16,bi+24)=(a,ai+8,ai+16,ai+24
i=5,6,7,8、
上記のように、長方形ステートの左半分の各バイトデータについて行列[M]を適用した線形変換を実行し、右半分の分割データは変更しない。
なお、()は、行列における行と列を入れ替えた転置行列を示している。
(3)鍵適用演算処理(H−KADD)、
長方形ステートの左半分の分割データ各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k,if i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
このように、長方形ステートの左半分の分割データ各バイトデータについて、非線形変換処理(H−SUB)、線形変換処理(H−MAT)、鍵適用演算(H−KADD)を実行し、それ以外のデータに対してはシフト、スワップなどの比較的処理コストの低い演算を組み合わせて十分な拡散性を達成して性能の高い置換関数を実現する。なお、通常の暗号アルゴリズムでは、鍵適用演算処理(H−KADD)は、非線形変換処理(H−SUB)の処理サイズにあわせて定義されるのが一般的である。
目標としては、例えば、図8に示すような4×8=32のバイト単位データ(256ビット)に対してラウンド演算を繰り返し実行するデータ変換や暗号処理において、長方形ステートの半分のバイト単位データに対する演算である非線形変換処理(H−SUB)や、線形変換処理(H−MAT)を各ラウンドで1回ずつ実行する構成とした場合、5ラウンド分のラウンド演算ですべての32バイトデータに影響を与える構成にできることが望ましい。
なぜなら、先に、図5〜図7を参照して説明した長方形ステートの全体に対して、非線形変換処理(W−SUB)や、線形変換処理(W−MAT)を実行する構成においては、3ラウンドのラウンド演算で、1つのバイト単位データが、長方形ステートのすべてのバイト単位データに影響をさせることができるため、半分のコストとみなせる非線形変換処理(H−SUB)や、線形変換処理(H−MAT)を適用して2倍の6ラウンドで影響させることができても効率的な優位性がなくなるためである。従って5ラウンド以内で、1つのバイト単位データが、長方形ステートのすべてのバイト単位データに影響をさせることができる構成が求められる。
まず、上述した長方形ステートを2分割して設定した分割データに対する処理、すなわち、
(1)非線形変換処理(H−SUB)
(2)線形変換処理(H−MAT)
(3)鍵適用演算(H−KADD)
これらの処理と、長方形ステートの全体データに対するシフト処理(W−SHIFT)を組み合わせて、1ラウンドのラウンド演算を行なう設定とした場合のデータ拡散について考察する。
すなわち、図9に示すように、長方形ステート(2n列×m行)のnm個のバイト単位データ(ただし2n≠m)からなる長方形ステートに対して、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)
(2)長方形ステートの全体データに対するシフト処理(W−SHIFT)
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データに対する鍵適用演算(H−KADD)
これらの(1)〜(4)の処理を1ラウンド分の演算として設定したラウンド演算を実行するものとする。
なお、シフト処理(W−SHIFT)は、先に説明した[Rijndael]アルゴリズムのシフト処理(W−SHIFT)と同じ処理であり、行ごとにローテーションシフト演算を施す処理であり、図5(2)に示したように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は3バイト分、四行目は4バイト分のローテーションシフトを行う処理とする。
このようなラウンド演算を実行した場合の、データ拡散例について図10を参照して説明する。入力データの初期状態の長方形ステート100中の左上のバイト単位データ101に着目する(黒でマーク)。図から理解されるように、ラウンド演算の2ラウンド実行後には、左半分の分割データの3/4のバイト単位データと、右半分の分割データの1つのバイト単位データに長方形ステート100中の左上のバイト単位データ101の構成ビットの影響が発生、すなわち拡散し、3ラウンド後には、左半分の分割データの全てのバイト単位データと、右半分の分割データの7つのバイト単位データに影響を与えている。
しかし、この3ラウンドでは、入力データの初期状態の長方形ステート100中の左上のバイト単位データ101が長方形ステート100の全てのバイト単位データに対して影響を与えるまでには至っていない。
次に、同様の処理における長方形ステート100中の右半分の分割データの左上のバイト単位データ、すなわち、最上位の行の左から5番目のデータについての影響について図11に示す。
入力データの初期状態の長方形ステート100中の最上位の行の左から5番目のバイト単位データ102に着目する(黒でマーク)。図から理解されるように、ラウンド演算の3ラウンド実行後まで、全く他のバイト単位データ102は、他のデータに影響を与えない。右半分の分割データに対して実行される処理はシフト処理(W−SHIFT)のみであるが、最上位の行にはシフトが施されないため、移動することがないためである。
かつ右半分の分割データにデータが位置する限り、非線形変換処理(H−SUB)、線形変換処理(H−MAT)、鍵適用演算(H−KADD)、これらの演算対象として選択されないため影響範囲が広がることがない。従って、ラウンド処理を永遠に繰り返しても他のバイトに影響することがない。これは暗号処理に用いる関数としては望ましくない性質である。
このように、図9に示すような、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)
(2)長方形ステートの全体データに対するシフト処理(W−SHIFT)
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データに対する鍵適用演算(H−KADD)
これらの(1)〜(4)の処理を1ラウンド分の演算として設定したラウンド演算を実行する構成では、十分な拡散が実行されず、暗号処理やハッシュ処理、データ拡散処理などに適用するには好ましくない。
以下、このような問題点に鑑み、少ないラウンド数で十分な拡散性能を持つ本発明に従ったアルゴリズムについて説明する。
[実施例1]
本発明の第1実施例におけるラウンド演算の構成を図12に示す。実施例1のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理をラウンド演算とする。
この実施例1のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。
なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換処理(H−SUB)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。
各処理の詳細について説明する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
この処理は、先に図8を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算である。
図8(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a),if=i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
このシフト処理(H−SHIFT)について、図13(A)を参照して説明する。長方形ステートの左半分の分割データに対してのみ、各行について異なるシフト量(0〜(n−1))のシフトを実行する。例えば、先に図2を参照して説明した正方ステートに対するシフト処理と同様、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
この線形変換および排他的論理和演算(MAT−XOR)について図13(B)を参照して説明する。
長方形ステートの左半分にある列ごとにデータをベクトルとみなして、予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果を右半分の分割データとして更新する。左半分の分割データは更新しない。
変換処理後のバイト単位の出力bと入力aの関係は、
(3−1)左半分の分割データ
(b,bi+8,bi+16,bi+24)=(a,ai+8,ai+16,ai+24
i=1,2,3,4、
(3−2)右半分の分割データ
(bi+4,bi+12,bi+20,bi+28)=[M(a,ai+8,ai+16,ai+24)](XOR)(ai+4,ai+12,ai+20,ai+28
i=1,2,3,4、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
すなわち、左半分の分割データの左から第1列データと予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行した結果を、右半分の左からの第1列データ(トータルでは左から5番目)として更新する。以下、同様に、左半分の分割データの左から第2列データと予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行した結果を、右半分の左からの第2列データ(トータルでは左から6番目)の更新データとする。以下同様の処理を行なう。
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
このスワップ処理(SWAP)について図13(C)を参照して説明する。この処理は、図に示すように、長方形ステートにおける左半分と右半分を入れ替える処理である。
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
この処理は、先に図8(3)を参照して説明した処理と同様の処理である。長方形ステートの左半分の各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k,if i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
本発明の第1実施例におけるラウンド演算は、図12に示すように、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例1におけるデータ拡散例について、図14を参照して説明する。
図14において、入力データの初期状態の長方形ステート200中の左上端のバイト単位データ201に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ201の構成ビットによって変化するバイト単位データを黒で示している。
図から理解されるように、ラウンド演算の2ラウンド実行後には、左半分の分割データ全体のバイト単位データと、右半分の分割データの4つのバイト単位データの計20バイトのデータに対する影響が発生し、3ラウンドの終了時には長方形ステート200中、32バイトすべてのデータに影響が発生している。なお、図では、長方形ステート200中の左上端のバイト単位データ201の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
次に、図15を参照して、同様の処理における長方形ステート200中の右半分の分割データの左上のバイト単位データ202、すなわち、最上位の行の左から5番目のデータについての影響について説明する。
このアルゴリズムでは、第1ラウンド目の処理内にスワップ[SWAP]演算が必ず一度実行されるため、右側にあるデータは左側に移動する。いったん左側に移動すれば、先に図14を参照して説明した長方形ステートの左上端のバイト単位データ201に対する処理と同様の処理が行なわれることになる。従って、その後の3ラウンド後にはすべてのデータに影響が発生する。従ってこのバイト単位データ202についても、全体で4ラウンドあれば、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
このように、本実施例では、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図14、図15を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大4ラウンドを要する。
従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大4回ずつの非線形変換処理(H−SUB)、シフト処理(H−SHIFT)、線形変換および排他的論理和処理(MAT−XOR)、スワップ処理(SWAP)、鍵適用演算処理(H−KADD)が必要である。
先に説明したように、演算処理を実行するためには、論理回路や演算処理プログラムなどが利用され、その構成によって必要とする演算回路や処理速度も異なることになる。従って絶対的な効率の評価は難しいが、上記の演算に必要となる論理回路におけるゲート数を1つの評価指標とすることが可能である。
例えば、先に説明したように、128ビットの正方ステートに対して設定される論理回路実装例として、各演算に必要とするゲート数は、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらのゲート数に相当する。
256ビットの長方形ステートに対する処理における演算のコストは以下のように換算することができる。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、上記128ビットの正方ステートに対する非線形変換処理(SUB)と同等、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)は、128ビットの正方ステートに対する線形変換処理(MAT)と鍵適用演算処理(KADD)を併せた処理と同等、
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)は、128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=4SUB+4MAT+8KADD
と見積もることができる。
上記ゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=4SUB+4MAT+8KADD
=19Kゲート〜27Kゲート
となる。
これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
[実施例2]
次に、本発明の第2実施例におけるラウンド演算の構成を図16に示す。実施例2のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理をラウンド演算とする。
この実施例2のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。
なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換処理(H−SUB)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。
各処理の詳細について説明する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
これらの処理は、実施例1において説明した処理と同様の処理である。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、図8(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a),if=i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)は、図13(A)を参照して説明したように、各行について異なるシフト量(0〜(n−1))のシフトを実行する。例えば、先に図2を参照して説明した正方ステートに対するシフト処理と同様、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
この処理は、先に図8(2)を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータについて、列ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
(b,bi+8,bi+16,bi+24)=M(a,ai+8,ai+16,ai+24
i=1,2,3,4、
(b,bi+8,bi+16,bi+24)=(a,ai+8,ai+16,ai+24
i=5,6,7,8、
上記のように、長方形ステートの左半分の各バイトデータについて行列[M]を適用した線形変換を実行し、右半分の分割データは変更しない。
なお、()は、行列における行と列を入れ替えた転置行列を示している。
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
この排他的論理和演算(XOR)処理について、図17を参照して説明する。長方形ステートの左半分の1つの列データと、右半分の対応するデータ列と排他的論理和(XOR)を行い、その結果を右半分の分割データとして更新する。左半分の分割データは更新しない。
変換処理後のバイト単位の出力bと入力aの関係は、
(3−1)左半分の分割データ
(b,bi+8,bi+16,bi+24)=(a,ai+8,ai+16,ai+24
i=1,2,3,4、
(3−2)右半分の分割データ
(bi+4,bi+12,bi+20,bi+28)=(a,ai+8,ai+16,ai+24)(XOR)(ai+4,ai+12,ai+20,ai+28
i=1,2,3,4、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
すなわち、左半分の分割データの左から第1列データと、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行して、その結果を右半分の左からの第1列データ(トータルでは左から5番目)の更新データとする。以下、同様に、左半分の分割データの左から第2列データと、右半分の分割データの左からの第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行して、その結果を右半分の左から第2列データ(トータルでは左から6番目)の更新データとする。以下同様の処理を行なう。
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
このスワップ処理(SWAP)は、先に説明した実施例1の処理と同様の処理であり、図13(C)に示すように、長方形ステートにおける左半分と右半分を入れ替える処理である。
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
この処理は、先に図8(3)を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k,if i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
本発明の第2実施例におけるラウンド演算は、図16に示すように、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例2におけるデータ拡散例について、図18を参照して説明する。
図18において、入力データの初期状態の長方形ステート220中の左上端のバイト単位データ221に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ221の構成ビットによって変化するバイト単位データを黒で示している。
図から理解されるように、ラウンド演算の2ラウンド終了時には、長方形ステートの全てのバイト単位データに影響が発生している。なお、図では、長方形ステート220中の左上端のバイト単位データ221の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
次に、図19を参照して、本実施例2の処理における長方形ステート220中の右半分の分割データの左上のバイト単位データ222、すなわち、最上位の行の左から5番目のデータについての影響について説明する。
このアルゴリズムでは、先に説明した実施例1と同様、第1ラウンド目の処理内にスワップ[SWAP]演算が必ず一度実行されるため、右側にあるデータは左側に移動する。いったん左側に移動すれば、先に図18を参照して説明した長方形ステートの左上端のバイト単位データ221に対する処理と同様の処理が行なわれることになる。従って、その後の2ラウンド後にはすべてのデータに影響が発生する。従ってこのバイト単位データ222についても、全体で3ラウンドあれば、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。このように実施例2は、実施例1よりもさらに効率的な攪拌性能を達成している。
このように、本実施例では、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図18、図19を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大3ラウンドを要する。
従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大3回ずつの非線形変換処理(H−SUB)、シフト処理(H−SHIFT)、線形変換処理(H−MAT)、排他的論理和処理(XOR)、スワップ処理(SWAP)、鍵適用演算処理(H−KADD)が必要である。
256ビットの長方形ステートに対する処理における演算のコストは以下のように換算できる。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、上記128ビットの正方ステートに対する非線形変換処理(SUB)と同等、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)は、128ビットの正方ステートに対する線形変換処理(MAT)と同等、
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)は、128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=3SUB+3MAT+6KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=3SUB+3MAT+6KADD
=14Kゲート〜20Kゲート
となる。
これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
[実施例3]
次に、本発明の第3実施例におけるラウンド演算の構成を図20に示す。実施例3のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理をラウンド演算とする。
この実施例3のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。
なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。
上記処理中、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの処理は、先に説明した実施例1,2の処理と同様であるので説明を省略する。
(1)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)について、図21を参照して説明する。
長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する。左半分の分割データは更新しない。
変換処理後のバイト単位の出力bと入力aの関係は、
(1−1)左半分の分割データ
(b,bi+8,bi+16,bi+24)=(a,ai+8,ai+16,ai+24
i=1,2,3,4、
(1−2)右半分の分割データ
(bi+4,bi+12,bi+20,bi+28)=[M(S(a),S(ai+8),S(ai+16),S(ai+24))](XOR)(ai+4,ai+12,ai+20,ai+28
i=1,2,3,4、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
すなわち、左半分の分割データの左から第1列データに非線形変換(SUB)を施した後、予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行した結果を、右半分の左からの第1列データ(トータルでは左から5番目)として更新する。以下、同様に、左半分の分割データの左から第2列データに非線形変換(SUB)を施した後、予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行して、その結果を右半分の左からの第2列データ(トータルでは左から6番目)の更新データとする。以下同様の処理を行なう。
本発明の第3実施例におけるラウンド演算は、図20に示すように、
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理によって構成される。すなわち、[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例3におけるデータ拡散例について、図22を参照して説明する。
図22において、入力データの初期状態の長方形ステート230中の左上端のバイト単位データ231に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ231の構成ビットによって変化するバイト単位データを黒で示している。
図から理解されるように、ラウンド演算の2ラウンドの処理終了後には長方形ステートの左半分の全てのバイト単位データと、右半分の4つのバイト単位データ、計20バイトのデータに影響が発生し、3ラウンドの終了時には長方形ステートの全てのバイト単位データに影響が発生している。なお、図では、長方形ステート230中の左上端のバイト単位データ231の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
次に、図23を参照して、本実施例3の処理における長方形ステート230中の右半分の分割データの左上のバイト単位データ232、すなわち、最上位の行の左から5番目のデータについての影響について説明する。
このアルゴリズムでは、先に説明した実施例1,2と同様、第1ラウンド目の処理内にスワップ[SWAP]演算が必ず一度実行されるため、右側にあるデータは左側に移動する。いったん左側に移動すれば、先に図22を参照して説明した長方形ステートの左上端のバイト単位データ231に対する処理と同様の処理が行なわれることになる。従って、その後の3ラウンド後にはすべてのデータに影響が発生する。従ってこのバイト単位データ232についても、全体で4ラウンドあれば、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
さらにこの実施例3の方式の場合、非線形変換処理(SUB)や行列[M]を適用した線形変換処理(MAT)のような個別の演算処理における入力情報が出力情報によって上書きする処理を伴わない。すなわち、図20に示すラウンド演算処理の(1)の非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)では、分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行するが、この結果データによる分割データAの更新は行われない。
従って、例えば、図20に示すラウンド演算を繰り返して実行して暗号結果を生成し、その暗号結果を復号するアルゴリズムにおいて、非線形変換や行列演算の逆演算を用いることなくデータを復元することが可能となる。従って、データ置換処理全体の逆関数を実装する際にも非線形変換処理(SUB)や行列[M]を適用した線形変換処理(MAT)の逆関数を実装することが不要となり、実装上、装置の小型化やコスト安をもたらす効果がある。このように本実施例3は、先に説明した実施例1と同等の攪拌性能を保持するとともに優れた実装上の特徴を有している。
本実施例では、
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理、すなわち、[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図22、図23を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大4ラウンドを要する。
従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大4回ずつの非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、スワップ処理(SWAP)、シフト処理(H−SHIFT)、鍵適用演算処理(H−KADD)が必要である。
256ビットの長方形ステートに対する処理における演算のコストは以下のように換算できる。
(1)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)は、128ビットの正方ステートに対する非線形変換処理(SUB)と線形変換処理(MAT)と鍵適用演算処理(KADD)を全て行なう演算コストに相当する。
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=4SUB+4MAT+8KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=4SUB+4MAT+8KADD
=19Kゲート〜27Kゲート
となる。
これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
[実施例4]
次に、本発明の第4実施例におけるラウンド演算の構成を図24に示す。実施例4のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理をラウンド演算とする。
この実施例4のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。
なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換処理(H−SUB)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。
この実施例4のアルゴリズムは、先に図16を参照して説明した実施例2のアルゴリズムにおける(1)〜(6)の処理中、(1)非線形変換処理(H−SUB)、(2)シフト処理(H−SHIFT)、(3)線形変換処理(H−MAT)と、(5)スワップ処理(SWAP)、(6)鍵適用処理(H−KADD)の各処理は同じであり、(4)の処理のみが異なる。
実施例2における(4)排他的論理和演算(XOR)では、長方形ステートの右半分の分割データを更新し、左半分の分割データは更新しないという処理であったが、本実施例4では、長方形ステートの右半分の分割データは更新せず、左半分の分割データを更新する処理を実行する。
本実施例における(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)について、図25を参照して説明する。
長方形ステートの左半分の1つの列データと、右半分の対応するデータ列と排他的論理和(XOR)を行い、その結果を左半分の分割データとして更新する。右半分の分割データは更新しない。
変換処理後のバイト単位の出力bと入力aの関係は、
(3−1)左半分の分割データ
(b,bi+8,bi+16,bi+24)=(a,ai+8,ai+16,ai+24)(XOR)(ai+4,ai+12,ai+20,ai+28
i=1,2,3,4、
(3−2)右半分の分割データ
(bi+4,bi+12,bi+20,bi+28)=(a,ai+12,ai+20,ai+28
i=1,2,3,4、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
すなわち、左半分の分割データの左から第1列データと、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行して、その結果を左半分の左から第1列データの更新データとする。以下、同様に、左半分の分割データの左から第2列データと、右半分の分割データの左から第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行して、その結果を左半分の左からの第2列データの更新データとする。以下同様の処理を行なう。
本発明の第4実施例におけるラウンド演算は、図24に示すように、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する。
このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例4におけるデータ拡散例について、図26を参照して説明する。
図26において、入力データの初期状態の長方形ステート240中の左上端のバイト単位データ241に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ241の構成ビットによって変化するバイト単位データを黒で示している。
図から理解されるように、ラウンド演算の4ラウンド終了時には、長方形ステートの全てのバイト単位データに影響が発生している。なお、図では、長方形ステート240中の左上端のバイト単位データ24の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
また、右半分に含まれるデータの影響については、先に説明した実施例1〜3と同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図26に示すシーケンスで実行され、結果として、4+1=5ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
この実施例4の特徴としては、あるラウンドに入力される半分の分割データは、前のラウンドで更新されることがないため、適切にデータを保存しておけば、前のラウンドの処理が終わるのを待つことなく、次のラウンドの処理をスタートさせることが可能である点である。この処理によって高速な処理が可能となる。具体的には排他的論理和[XOR2]の直前までは並列して処理することが可能な構成である。
このように、本実施例では、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図26を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大5ラウンドを要する。
従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大5回ずつの非線形変換処理(H−SUB)、シフト処理(H−SHIFT)、線形変換処理(H−MAT)、排他的論理和処理(XOR2)、スワップ処理(SWAP)、鍵適用演算処理(H−KADD)が必要である。
256ビットの長方形ステートに対する処理における演算のコストは以下のように換算できる。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、上記128ビットの正方ステートに対する非線形変換処理(SUB)と同等、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)は、128ビットの正方ステートに対する線形変換処理(MAT)と同等、
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)は、128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=5SUB+5MAT+10KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=5SUB+5MAT+10KADD
=23Kゲート〜33Kゲート
となる。
これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
[シフト処理(SHIFT)の一般化構成について]
上述した実施例1〜4においては長方形ステートにおける左半分の分割データにのみシフト処理を適用する[H−SHIFT]を実行する構成例について説明した。すでに説明したように、シフト処理(SHIFT)は各行ごとに異なる値のローテーションシフトを適用するものであるが、本発明の実施例1〜4において実行するシフト処理(H−SHIFT)に必要な性質は以下の通りである。
*同じ列に含まれるバイトデータはシフト演算後には必ず異なる列に含まれること
上記性質が満たされていれば、必ずしもローテーションに基づくシフトである必要はない。
さらに、各実施例において説明したシフト処理(H−SHIFT)は、長方形ステートの2つの半分の分割データの両者に対して実行する構成としても、上述した各実施例において説明した効果をもたらす。先に説明したようにシフト処理事態は演算コスト=0と解釈できるので、処理対象が増加しても演算ストを増加させることにはならない。
図27は、先に説明した実施例1におけるシフト処理(H−SHIFT)を長方形ステートの左右半分の分割データの両者に適用する処理のアルゴリズムである。長方形ステートの一方の半分の分割データを[SL]として、他方の半分の分割データを[SR]とした場合、ラウンド演算のアルゴリズムは、以下のようになる。
(1)長方形ステートの半分の分割データ[SL]に対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データ[SL]と[SR]に対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データ[SL]に対する線形変換処理を行い、残り半分の分割データ[SR]との排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データ[SL],[SR]を入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データ[SL]に対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
このような設定としても、先に説明した実施例1の拡散効果と同様の効果が得られる。他の実施例2,3,4についても同様であり、シフト処理は各実施例において説明した側の半分の分割データ以外の半分の分割データに対して適用してもよい。なお、左右両方のシフト処理の態様は、左右同じものでも左右独立に選んでも良い。
[実施例1〜4の一般化構成について]
上述した実施例1,2,3,4では、32バイト(256ビット)データで構成される4行×8列、計32個のバイト単位データによって構成される長方形ステートに対する処理例として説明をした。
本発明は、この実施例に限らず様々な構成の長方形ステートに対して適用可能である。具体的には、左右に分割可能な偶数の列数(2n)を有し、任意の行数(m)を有する長方形ステート(2n≠m)とした長方形ステートに対して適用することが可能である。
例えば図28に示すように全体で2mn個のバイト単位データを持つデータを、2n列、m行のa〜a2mnの2mn個のバイト単位データを有する長方形ステートに対して、上述した実施例1〜4において説明した非線形変換(H−SUB)など、各種の変換処理によって変換を行う。変換結果である長方形ステートに含まれるバイト単位データをb〜b2mnとした場合、各実施例において定義した各処理は図29に示すように以下の式によって一般形として示すことができる。
(1)非線形変換処理(H−SUB)
=S(a) if 1≦i mod 2n≦n
=a else
ただしS()は非線形変換処理を示す。
(2)線形変換および排他的論理和演算(MAT−XOR)
for i=1...n
(b,bi+2n,..,bi+2(m−1)n)=(a,ai+2n,..,ai+2(m−1)n
(bi+n,bi+3n,..,bi+(2m−1)n)=[M(a,ai+2n,..,ai+2(m−1)n)](XOR)(ai+n,ai+3n,..,ai+(2m−1)n
ただし、
()は転置行列を示し、
[M]は線形変換行列、
(XOR)は排他的論理和演算である。
(3)線形変換処理(H−MAT)
(b,bi+2n,..,bi+2(m−1)n)=M(a,ai+2n,..,ai+2(m−1)n) if i=1..n
(b,bi+2n,..,bi+2(m−1)n)=(a,ai+2n,..,ai+2(m−1)n) else
ただし、
()は転置行列を示し、
[M]は線形変換行列である。
(4)鍵適用演算(H−KADD)
=a(XOR)k if 1≦i mod 2n≦n
=a else
ただし、
(XOR)は排他的論理和演算、
は鍵データである。
(5)排他的論理和処理(XOR)
for i=1..n
(b,bi+2n,..,bi+2(m−1)n)=(a,ai+2n,..,ai+2(m−1)n
(bi+n,bi+3n,..,bi+(2m−1)n)=(a,ai+2n,..,ai+2(m−1)n)(XOR)(ai+n,ai+3n,..,ai+(2m−1)n
ただし、
()は転置行列を示し、
(XOR)は排他的論理和演算である。
(6)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)
for i=1..n
(b,bi+2n,..,bi+2(m−1)n)=(a,ai+2n,..,ai+2(m−1)n
(b+n,bi+3n,..,bi+(2m−1)n)=[M(S(ai),S(ai+2n),..,S(ai+2(m−1)n)](XOR)(ai+n,ai+3n,..,ai+(2m−1)n
ただし、
()は転置行列を示し、
[M]は線形変換行列、
(XOR)は排他的論理和演算である。
このように、上記実施例において説明した各処理は、上述のように、2n列、m行のa〜a2mnの2mn個のバイト単位データからなる長方形ステートに対する演算における入力[a〜a2mn]と出力[b〜b2mn]の関係式として上記のように一般形として定義できる。
なお、シフト処理(H−SHIFT)に関しては、上記実施例では、長方形ステートの半分の分割データが正方ステートとなる例として説明していたが、任意の形状を持つ長方形ステートとした場合、半分の分割データが正方形ステートになるとは限らない。従って、このような場合も含めて、シフト処理(H−SHIFT)の一般形の定義について説明する。
m行2n列の長方形ステートにおいて、シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)に対するシフト処理(H−SHIFT)に求められる処理ルールとして、以下のルールがある。
*m≦nの場合:m行2n列の長方形ステートにおいて、シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)中の同じ列に含まれるバイトデータはシフト処理後には必ず異なる列に設定する。
*m>nの場合:シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)中の同じ列に含まれるバイトデータはシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれていること
すなわち、シフト処理の実行に際して、m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データが、
m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、
m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行する。
m行2n列の長方形ステートにおいて、シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)に対するシフト処理(H−SHIFT)は、上記のルールに従って行う。このルールに従った処理を行うことで、ある列のデータが複数の列に効率的に拡散することが保証される。
[実施例1〜4の一般化]
先に説明した実施例1〜4では、長方形ステートの半分の分割データが正方ステートとなる例を説明したが、上述したように、本発明は、このような特殊な形状の長方形ステートのみならず、少なくとも2分割可能な偶数列を持つ任意の形状の長方形ステートに対して適用可能である。以下、長方形ステートの半分の分割データが正方ステートとならない場合に各実施例1〜4を適用した場合のデータ拡散例について説明する。
(実施例1の一般化例)
図30は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート310に対して、先に実施例1で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート310中の左上端のバイト単位データ311に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ311の構成ビットによって変化するバイト単位データを黒で示している。
実施例1のラウンド演算アルゴリズムは、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[MAT−XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する処理である。
図から理解されるように、ラウンド演算の4ラウンド終了時には長方形ステート310中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート310中の左上端のバイト単位データ311の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図30に示すシーケンスで実行され、結果として、4+1=5ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
結果として、最大5ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=7.5SUB+7.5MAT+15KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=7.5SUB+7.5MAT+15KADD
=35Kゲート〜50Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式では4ラウンドかかり、変換処理において必要とされる演算コストは12SUB+12MAT+12KADD(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
(実施例2の一般化例)
図31は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート320に対して、先に実施例2で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート320中の左上端のバイト単位データ321に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ321の構成ビットによって変化するバイト単位データを黒で示している。
実施例2のラウンド演算アルゴリズムは、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理によって構成される。すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する処理である。
図31から理解されるように、ラウンド演算の3ラウンド終了時には長方形ステート320中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート320中の左上端のバイト単位データ321の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図31に示すシーケンスで実行され、結果として、3+1=4ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
結果として、最大4ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=6SUB+6MAT+12KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=6SUB+6MAT+12KADD
=28Kゲート〜40Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
(実施例3の一般化例)
図32は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート330に対して、先に実施例3で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート330中の左上端のバイト単位データ331に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ331の構成ビットによって変化するバイト単位データを黒で示している。
実施例3のラウンド演算アルゴリズムは、
(1)長方形ステートの半分の分割データの列ごとのデータに非線形変換(SUB)を施した結果をベクトルとみなし線形変換行列[M]を適用して4×4の行列演算を施して線形変換を実行して、その結果を右半分の対応する列のデータと排他的論理和(XOR)を行い、その結果で右半分の分割データを更新する非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(4)の一連の処理によって構成される。すなわち、[SUB−MAT−XOR]→[SWAP]→[H−SHIFT]→[H−KADD]の順の処理を1つのラウンド演算処理として実行する処理である。
図32から理解されるように、ラウンド演算の4ラウンド終了時には長方形ステート330中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート330中の左上端のバイト単位データ331の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図32に示すシーケンスで実行され、結果として、4+1=5ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
結果として、最大5ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=7.5SUB+7.5MAT+15KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=7.5SUB+7.5MAT+15KADD
=35Kゲート〜50Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
(実施例4の一般化例)
図33、図34は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート340に対して、先に実施例4で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート340中の左上端のバイト単位データ341に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ341の構成ビットによって変化するバイト単位データを黒で示している。
実施例4のラウンド演算アルゴリズムは、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)
(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(6)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(6)の一連の処理、すなわち、[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR2]→[SWAP]→[H−KADD]の順に従った処理を1つのラウンド演算処理として実行する処理である。
図33、図34から理解されるように、ラウンド演算の6ラウンド終了時には長方形ステート340中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート340中の左上端のバイト単位データ341の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。
また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図33、図34に示すシーケンスで実行され、結果として、6+1=7ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。
結果として、最大7ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する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]
このシーケンスで各ラウンド演算が実行されるものとして説明した。しかし、必ずしもこのシーケンスに限定されることなく、ラウンド演算において実行する処理順は異なる順番としてもよい。例えば、ラウンド内の初めの処理を別の処理に設定して、ラウンドの切れ目を変えて別のラウンド構成として解釈することは容易である。
例えば実施例1や実施例2では、非線形変換[H−SUB]とシフト処理[H−SHIFT]は順序を入れ替えても拡散性能に影響はない、またいずれの実施例においても鍵適用演算[H−KADD]の位置がどの位置に挿入されようとも拡散性能には影響がない。従って、本方式で説明した拡散性能が変わらない範囲で処理順序を入れ替えることは可能であり、そのような構成も本発明に含まれる。
[DSMの適用]
上述した実施例において、線形変換処理[H−MAT]に適用する行列は各ラウンドにおいて共通の固定行列[M]を利用することが可能であるが、この行列[M]をラウンド間で切り換えて異なる行列を適用する構成としてもよい。いわゆるDSM(Diffusion Switching Mechanism)の適用構成とすることでさらにセキュリティレベルを向上させることができる。
実施例2においてDSMを適用する場合の例について説明する。実施例2のラウンド演算は、先に図16を参照して説明したように、
[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]
これらの複数の処理によって構成されるラウンド演算を繰り返し実行する処理である。
あるラウンドにおいて線形変換処理[H−MAT]によって、長方形ステートの左半分の分割データに含まれる各列に対して、線形変換行列[M]による行列演算が施された結果がその列に格納される。この線形変換処理[H−MAT]によって更新された左半分の分割データは、その後のスワップ[SWAP]処理により右半分に移動する。
次のラウンドの線形変換処理[H−MAT]では、その時点で左半分に含まれる各列に対して、さらに線形変換行列[M]による行列演算が施された結果が格納され、さらに直後の排他的論理和処理[XOR]により左半分の分割データが右半分の分割データに排他的論理和されるという構成を持つ。
この排他的論理和処理[XOR]が終わった直後の右半分に含まれる各列のデータに着目すると、各列は2回分の行列演算の結果が足し込まれた形になっていることがわかる。長方形ステートを構成する1つの列のベクトルを(X,Y,Z,W)で表すと、以下の一般式で書くことができる。
Figure 0005272417
ここでは(a,b,c,d)を先行ラウンドの線形変換処理[H−MAT]で行列に入力された列ベクトルの要素とし、(e,f,g,h)を次のラウンドの線形変換処理[H−MAT]で行列に入力された列ベクトルの要素であるものとする。
このとき、(a,b,c,d,e,f,g,h)に含まれる非ゼロの要素数と、結果データである(W,X,Y,Z)の非ゼロの要素数の関係に着目する。たとえばa=e≠0,b=c=d=f=g=h=0である場合に、W=X=Y=Z=0となることがわかる。2つの要素aとeが0ではないのにも関わらず、演算結果に非ゼロの要素が一つもないことになっており、入出力に含まれる非ゼロ要素の総和が2となる状態が発生してしまう。
置換関数中の中ではあるデータがなるべく多くのデータに影響すると同時に、入出力に含まれる非ゼロ要素の総和ができるだけ低い水準にならないことも求められている。これは差分攻撃や線形攻撃に対しての対策となる。
このような脆弱性に対する対策としては、全てのラウンドにおいて適用する線形変換行列[M]を1つの固定行列とするのではなく複数の異なる行列、例えば2つの行列[M1],[M2]を利用する、いわゆるDSM(Diffusion Switching Mechanism)を適用することが有効である。なお、DSMを適用した暗号アルゴリズムについては、例えば本出願人と同一の特許出願である特開2007−199156などに記載されている。
2つの行列M1,M2を準備し、以下に示す関係式を常に満たすように2つの行列を配置する。
Figure 0005272417
または
Figure 0005272417
上記のいずれかの関係を常に満たすように2つの行列[M1],[M2]を配置する。
これらの行列[M1]、[M2]を並べて得られる行列M1|M2の分岐数が3以上、またはそれぞれの逆行列を転置して得られる行列を並べて得られる行列M1−1M2−1の分岐数が3以上になるように設定する。両者を同時に満たす構成にしてもよい。このようにすることで非ゼロの要素が少ないまま上記の状態が回避され、差分攻撃や線形攻撃に対する耐性を向上させる効果がある。また、実施例4においても同様な関係式が導けるため、上記のDSM構成を適用すれば同様の効果が期待できる。
[3.データ変換装置の構成例]
最後に、上述した実施例に従った処理を実行する装置としてのICモジュール700の構成例を図35に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能である。また、各処理は、論理回路を構成したハード回路やプログラム、あるいはその双方を適用して実行可能である。処理を実行する一例として例えば、図35に示すICモジュール700があり、このようなICモジュール700は様々な機器に搭載することが可能である。
図35に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
データ変換部703は、例えば上述した各種の暗号処理、
(1)非線形変換処理(H−SUB)
(2)線形変換および排他的論理和演算(MAT−XOR)
(3)線形変換処理(H−MAT)
(4)鍵適用演算(H−KADD)
(5)排他的論理和処理(XOR)(XOR2)
(6)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)
これらの各処理を実行する処理部を有する。なお、これらの処理は、ハードウェア、またはソフトウェア、またはその組み合わせ構成によって実現される。
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の一実施例の構成によれば、例えば1バイト単位のデータブロックを配列した長方形配列データを2分割して設定した分割データに対する様々な処理を実行してデータ変換を行う構成において、分割データの一方に対する線形変換処理と、2つの分割データ相互の排他的論理和演算処理と、分割データの一方のデータに対するシフト処理と、2つの分割データのスワップ処理を実行することで、演算コストを低減した効率的なデータ攪拌を実現することができる。さらに、分割データに対する非線形変換や鍵適用演算を含めることでセキュリティレベルの高い暗号処理が実現される。
入力データをバイト単位に分割し、バイト単位データを正方形や長方形の配列として配置し、行単位の処理や列単位の処理を繰り返すデータ攪拌に適用する構成について説明する図である。 AESブロック暗号アルゴリズムにおける正方ステートに対する演算例について説明する図である。 AESブロック暗号アルゴリズムにおけるラウンド演算について説明する図である。 正方ステートに対するラウンド演算によるデータ拡散例について説明する図である。 長方形配列データ(長方形ステート)に対する演算例について説明する図である。 長方形配列データ(長方形ステート)に対するラウンド演算例について説明する図である。 長方形ステートに対するラウンド演算によるデータ拡散例について説明する図である。 長方形ステートの半分の分割データに対する処理例について説明する図である。 長方形ステートに対するラウンド演算処理例について説明する図である。 長方形ステートに対するラウンド演算処理によるデータ拡散例について説明する図である。 長方形ステートに対するラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第1実施例におけるラウンド演算の構成例について説明する図である。 本発明の第1実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。 本発明の第1実施例のラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第1実施例のラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第2実施例におけるラウンド演算の構成例について説明する図である。 本発明の第2実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。 本発明の第2実施例のラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第2実施例のラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第3実施例におけるラウンド演算の構成例について説明する図である。 本発明の第3実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。 本発明の第3実施例のラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第3実施例のラウンド演算処理によるデータ拡散例について説明する図である。 本発明の第4実施例におけるラウンド演算の構成例について説明する図である。 本発明の第4実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。 本発明の第4実施例のラウンド演算処理によるデータ拡散例について説明する図である。 実施例1におけるシフト処理(H−SHIFT)を長方形ステートの左右半分の分割データの両者に適用する処理のアルゴリズムについて説明する図である。 全体で2mn個のバイト単位データを持つデータを、2n列、m行のa〜a2mnの2mn個のバイト単位データを有する長方形ステートとした一般形に対するデータ変換処理について説明する図である。 全体で2mn個のバイト単位データを持つデータを、2n列、m行のa〜a2mnの2mn個のバイト単位データを有する長方形ステートとした一般形に対するデータ変換処理について説明する図である。 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例1によるデータ拡散例を説明する図である。 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例2によるデータ拡散例を説明する図である。 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例3によるデータ拡散例を説明する図である。 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例4によるデータ拡散例を説明する図である。 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例4によるデータ拡散例を説明する図である。 本発明に係る処理を実行するデータ変換装置としてのICモジュールの構成例を示す図である。
符号の説明
11 正方形配列データ(正方ステート)
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)

  1. データ変換装置であり、
    ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
    前記データ変換部は、
    前記ラウンド演算において、
    同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
    生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする構成であり、
    前記複数の演算は、
    (a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
    (b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
    (c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
    (d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
    上記(a)〜(d)の各処理を含む演算であるデータ変換装置。
  2. 前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成である請求項1に記載のデータ変換装置。
  3. 前記データ変換部は、
    前記ラウンド演算において、さらに、
    (e)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
    (f)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵適用演算処理を実行する構成である請求項1に記載のデータ変換装置。
  4. 前記鍵適用演算は、前記分割データ、または更新分割データ中のいずれかの分割データの構成データと暗号鍵データとの排他的論理和演算である請求項3に記載のデータ変換装置。
  5. 前記データ変換部は、
    前記排他的論理和演算の結果を前記分割データ、または更新分割データの新たな更新データとして設定する請求項1に記載のデータ変換装置。
  6. 前記データ変換部は、
    前記シフト処理の実行に際して、
    m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データ、または更新分割データが、m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行する請求項1に記載のデータ変換装置。
  7. 前記データ変換部は、
    前記シフト処理を2分割した分割データ、または更新分割データの双方に対して実行する請求項1に記載のデータ変換装置。
  8. 前記データ変換部は、
    前記ラウンド演算において、
    前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。
  9. 前記データ変換部は、
    前記ラウンド演算において、
    前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。
  10. 前記データ変換部は、
    前記ラウンド演算において、
    前記分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。
  11. 前記データ変換部は、
    前記ラウンド演算において、
    前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する請求項1に記載のデータ変換装置。
  12. 前記データ変換部は、
    前記ラウンド演算における線形変換処理において、複数の異なる行列をラウンド単位で選択適用する構成である請求項1に記載のデータ変換装置。
  13. 前記データ変換部は、
    複数の異なる行列の選択適用としてDSM(Diffusion Switching Mechanism)を利用した処理を行う構成である請求項12に記載のデータ変換装置。
  14. データ変換装置において実行するデータ変換方法であり、
    データ変換部が、ラウンド演算を繰り返してデータ変換を行なうデータ変換ステップを有し、
    前記データ変換ステップは、
    前記ラウンド演算において、
    同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
    生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする処理を実行し、
    前記複数の演算は、
    (a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
    (b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
    (c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
    (d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
    上記(a)〜(d)の各処理を含む演算であるデータ変換方法。
  15. 前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成である請求項14に記載のデータ変換方法。
  16. 前記データ変換ステップは、
    前記ラウンド演算において、さらに、
    (e)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
    (f)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵適用演算処理を実行する構成である請求項14に記載のデータ変換方法。
  17. 前記鍵適用演算は、前記分割データ、または更新分割データ中のいずれかの分割データの構成データと暗号鍵データとの排他的論理和演算である請求項16に記載のデータ変換方法。
  18. 前記データ変換ステップは、
    前記排他的論理和演算の結果を前記分割データ、または更新分割データの新たな更新データとして設定する請求項14に記載のデータ変換方法。
  19. データ変換装置においてデータ変換処理を実行させるコンピュータ・プログラムであり、
    データ変換部に、ラウンド演算を繰り返してデータ変換を行なわせるデータ変換ステップを有し、
    前記データ変換ステップは、
    前記ラウンド演算において、
    同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
    生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする処理を実行し、
    前記複数の演算は、
    (a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
    (b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
    (c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
    (d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
    上記(a)〜(d)の各処理を含む演算であるコンピュータ・プログラム。
  20. プログラムを実行するプロセッサと、
    前記プログラムを保持するメモリと、
    ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
    前記データ変換部は、
    前記ラウンド演算において、
    同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
    生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする処理を実行し、
    前記複数の演算は、
    (a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
    (b)前記分割データと、更新分割データとの排他的論理和演算、または、更新分割データ間の排他的論理和演算、
    (c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象としたシフト処理、
    (d)前記分割データと、更新分割データとのスワップ処理、または、更新分割データ間のスワップ処理、
    上記(a)〜(d)の各処理を含む演算である情報処理装置。
JP2008010548A 2008-01-21 2008-01-21 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム Expired - Fee Related JP5272417B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 ソニー株式会社 演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラム

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