JP5510587B2 - Data conversion apparatus, data conversion method, and computer program - Google Patents

Data conversion apparatus, data conversion method, and computer program Download PDF

Info

Publication number
JP5510587B2
JP5510587B2 JP2013098955A JP2013098955A JP5510587B2 JP 5510587 B2 JP5510587 B2 JP 5510587B2 JP 2013098955 A JP2013098955 A JP 2013098955A JP 2013098955 A JP2013098955 A JP 2013098955A JP 5510587 B2 JP5510587 B2 JP 5510587B2
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.)
Active
Application number
JP2013098955A
Other languages
Japanese (ja)
Other versions
JP2013148933A (en
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
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2013098955A priority Critical patent/JP5510587B2/en
Publication of JP2013148933A publication Critical patent/JP2013148933A/en
Application granted granted Critical
Publication of JP5510587B2 publication Critical patent/JP5510587B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムに関する。さらに詳細には、効率的なデータ拡散や暗号処理を実現するデータ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムに関する。   The present invention relates to a data conversion device, a data conversion method, and a computer program. More specifically, the present invention relates to a data conversion apparatus, a data conversion method, and a computer program that realize efficient data diffusion and encryption processing.

入力データに対してブロック単位のデータ変換処理を実行して暗号化を行なうブロック暗号や、ハッシュ関数などにおいては、入力データに対する高いデータ攪拌性能が求められる。例えば、入力データをバイト単位などの固定サイズに分割して線形変換や非線形変換などの様々な演算を繰り返し実行して、バイト単位データを互いに影響させながらデータを攪拌させるといった処理を行なう。   In block ciphers that perform encryption by executing block-unit data conversion processing on input data, hash functions, and the like, high data agitation performance for input data is required. For example, the input data is divided into fixed sizes such as byte units, and various operations such as linear conversion and non-linear conversion are repeatedly executed to stir the data while affecting the byte unit data.

例えば米国標準暗号として知られているAES(Advanced Encryption Standard)アルゴリズムは、入力データをバイト単位に分割し、バイト単位データを正方形や長方形の配列として配置し、行単位の処理や列単位の処理、具体的には非線形変換処理や線形変換処理などの様々な処理を繰り返すことで、データの攪拌を行なうアルゴリズムである。   For example, AES (Advanced Encryption Standard) algorithm known as US standard encryption divides input data into byte units, arranges byte unit data as a square or rectangular array, processes in units of rows, processes in units of columns, Specifically, it is an algorithm that stirs data by repeating various processes such as a nonlinear conversion process and a linear conversion process.

具体例について図1を参照して説明する。変換処理の対象とするデータが8×16=128ビットデータである場合、図1(a)に示すように、a,a,a・・・a16の各々を8ビットの1バイトデータとしたバイト単位データからなる正方形配列を設定して、
行単位の演算、例えば(a,a,a,a)など各行に対する演算処理、あるいは、
列単位の演算、例えば(a,a,a,a13)など各列に対する演算、
このような様々なデータ単位に対する演算処理、具体的には、非線形変換処理や線形変換処理、シフト処理、鍵を適用した排他的論理和などの様々な処理を繰り返すことでデータ変換を行なう。
A specific example will be described with reference to FIG. When the data to be converted is 8 × 16 = 128 bit data, each of a 1 , a 2 , a 3 ... A 16 is 1 byte of 8 bits as shown in FIG. Set a square array consisting of byte unit data as data,
Arithmetic processing for each line such as (a 1 , a 2 , a 3 , a 4 )
Column-by-column operations, such as (a 1 , a 5 , a 9 , a 13 ) for each column,
Data conversion is performed by repeating various processing such as arithmetic processing for such various data units, specifically, non-linear conversion processing, linear conversion processing, shift processing, and exclusive OR using keys.

図1(a)に示すように、バイト単位データを正方形に配置して行単位あるいは列単位の処理を実行すると効率的な攪拌を実現することができることが知られている。しかし、1バイト単位データの正方形配列ができるのは、変換処理対象となる入力データが、図1(a)に示す8×16=128ビットデータのように特定ビット数のデータである場合に限られる。具体的には、
ビット数=8×(n)ビットである場合、(nは自然数)
バイト数として表現すると、
バイト数=(n)バイトである場合、(nは自然数)
このような場合に限られてしまう。
128ビットは、ビット数=8×(4)ビットであり、図1(a)に示すように4×4の16個のバイト単位データの正方形配列として設定できる。
As shown in FIG. 1A, it is known that efficient agitation can be realized by arranging byte-unit data in a square and executing processing in units of rows or columns. However, a square array of 1-byte unit data can be formed only when the input data to be converted is data of a specific number of bits such as 8 × 16 = 128-bit data shown in FIG. It is done. In particular,
Number of bits = 8 × (n) When 2 bits (n is a natural number)
Expressed as bytes,
Number of bytes = (n) When 2 bytes, (n is a natural number)
It will be limited to such a case.
128 bits is the number of bits = 8 × (4) 2 bits, and can be set as a square array of 16 × 4 byte unit data of 4 × 4 as shown in FIG.

しかし、変換対象となるデータが例えば256ビットである場合、
256=8×32
であり、
256=8×(n)ビット
として表現できないため、バイト単位の正方形配列は不可能となる。
このような場合、32個の8ビットのバイト単位データa,a,a・・・a32の各々を図1(b)に示すように、縦横比が1:2のような長方形に配置し、この長方形配列に対して、行単位の処理や列単位の処理を繰り返すことで攪拌を実行することになる。しかし、この図1(b)に示すような長方形配列に対しては、正方形の場合と同様な手順で攪拌を行っても演算の手間が増える割に攪拌性能が上がらないという問題がある。
However, if the data to be converted is, for example, 256 bits,
256 = 8 × 32
And
Since 256 = 8 × (n) 2 bits cannot be expressed, a square array in byte units is impossible.
In such a case, each of 32 pieces of 8-bit byte unit data a 1 , a 2 , a 3 ... A 32 is a rectangle whose aspect ratio is 1: 2, as shown in FIG. The agitation is executed by repeating the processing in units of rows and the processing in units of columns for this rectangular array. However, the rectangular array as shown in FIG. 1 (b) has a problem that the stirring performance does not increase even though stirring is performed in the same procedure as in the case of the square, although the calculation labor is increased.

図2以下を参照して、バイト単位の単位データを正方形配列とした場合(正方ステート)と、長方形配列とした場合(長方形ステート)の攪拌処理例について説明する。   With reference to FIG. 2 and subsequent figures, a description will be given of examples of agitation processing when the unit data in byte units is a square array (square state) and a rectangular array (rectangular state).

(A)正方形配列(正方ステート)に対する処理例 図2以下を参照して128ビットのデータに対するデータ変換処理における攪拌処理について説明する。128ビットのデータはバイト(8ビット)単位のデータに分割される。ここでは分割された1バイト単位の16個のデータをaからa16で表す。 (A) Processing Example for Square Array (Square State) With reference to FIG. 2 and subsequent figures, a stirring process in a data conversion process for 128-bit data will be described. 128-bit data is divided into data in units of bytes (8 bits). Here, 16 pieces of divided data in units of 1 byte are represented by a 1 to a 16 .

図2に示す正方形配列データ(正方ステート)11にあるように1バイト単位の16個のデータ[a〜a16]を4×4の配列上に格納する。この正方形の配列に格納された状態のデータを以下、正方ステートと呼ぶ。 As shown in the square array data (square state) 11 shown in FIG. 2, 16 pieces of data [a 1 to a 16 ] in units of 1 byte are stored in a 4 × 4 array. The data stored in this square array is hereinafter referred to as a square state.

AESブロック暗号アルゴリズムでは、正方ステートに対する演算が複数定義されており、定義された演算を繰り返し適用することで暗号化を実現している。AESで定義されている演算は、図2に示す以下の4種類である。
(1)非線形変換処理(SUB)、
各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図2(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a
i=1,2,・・・,16、
である。例えばAES暗号においてはS−boxを利用した非線形変換に対応する。
In the AES block encryption algorithm, a plurality of operations for the square state are defined, and encryption is realized by repeatedly applying the defined operations. The operations defined by AES are the following four types shown in FIG.
(1) Non-linear transformation process (SUB),
An operation for updating the value by applying a non-linear transformation S (x) in byte units to each byte data,
As shown in FIG. 2 (1), the relationship between the output b i in byte units after the conversion process and the input a i is
b i = S (a i )
i = 1, 2,..., 16,
It is. For example, AES encryption supports non-linear transformation using S-box.

(2)シフト処理(SHIFT)、
行ごとにローテーションシフト演算を施す処理。シフト量は行ごとに異なり、AESの場合は、図2(2)に示すように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
(2) Shift processing (SHIFT),
Processing that performs rotation shift operation for each row. The shift amount differs for each row. In the case of AES, as shown in FIG. 2 (2), there is no rotation shift for the first row, the second row is rotated by 1 byte to the right, the third row is for 2 bytes, The fourth line performs a 3 byte rotation shift.

(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、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。すなわち、上記式は、以下を意味する。
(3) Linear transformation process (MAT),
This is an operation in which four data for each column are regarded as vectors and an operation is performed using a 4 × 4 matrix [M] to update a value.
The relationship between the output b i in bytes and the input a i after the conversion process is
t (b i , b i + 4 , b i + 8 , b i + 12 ) = M t (a i , a i + 4 , a i + 8 , a i + 12 )
i = 1, 2, 3, 4,
It is. Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged. That is, the above formula means the following.

Figure 0005510587
Figure 0005510587

(4)鍵適用演算処理(KADD)、
鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k
i=1,2,・・・,16、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
(4) Key application calculation processing (KADD),
Round key outputted from the key scheduling unit [k i] is an operation for performing an exclusive OR on each byte data.
The relationship between the output b i in bytes and the input a i after the conversion process is
b i = a i (XOR) k i
i = 1, 2,..., 16,
It is. In the above formula, (XOR) indicates an exclusive OR operation.

上記の各演算(1)〜(4)を所定シーケンスで順次実行する演算の組み合わせによって、1つのラウンド演算が設定される。入力データに対して、ラウンド演算を繰り返し実行し出力データ、例えば暗号化データを生成して出力する。ラウンド演算は、図3に示すように、例えば、(1)非線形変換処理(SUB)→(2)シフト処理(SHIFT)→(3)線形変換処理(MAT)→(4)鍵適用演算処理(KADD)の順で実行する一連のデータ変換処理によって構成され、このラウンド演算を複数回繰り返して実行し、入力データを変換して出力データ、すなわち暗号化データを生成する。   One round operation is set by a combination of operations that sequentially execute each of the operations (1) to (4) in a predetermined sequence. A round operation is repeatedly executed on the input data to generate and output output data, for example, encrypted data. As shown in FIG. 3, for example, (1) nonlinear transformation processing (SUB) → (2) shift processing (SHIFT) → (3) linear transformation processing (MAT) → (4) key application computation processing ( This round calculation is repeated a plurality of times, and the input data is converted to generate output data, that is, encrypted data.

図4は、正方ステートに対して、(1)非線形変換処理(SUB)→(2)シフト処理(SHIFT)→(3)線形変換処理(MAT)→(4)鍵適用演算処理(KADD)の順で実行するラウンド演算を第1〜第3ラウンド(R1〜R3)実行した場合のデータ攪拌例について説明する図である。   FIG. 4 shows (1) nonlinear transformation processing (SUB) → (2) shift processing (SHIFT) → (3) linear transformation processing (MAT) → (4) key application calculation processing (KADD) for the square state. It is a figure explaining the data stirring example at the time of performing the round calculation performed in order 1st-3rd round (R1-R3).

図4では、初期状態の正方ステート21の左上端の1バイトのバイト単位データ31が、各ラウンド演算の(1)非線形変換処理(SUB)、(2)シフト処理(SHIFT)、(3)線形変換処理(MAT)、(4)鍵適用演算処理(KADD)によって、正方ステートに含まれるどのバイト単位データに影響を与えているかを示している。すなわち各演算の実行により正方ステート内の1バイトのデータ31の構成ビットの影響が他のバイト単位データに拡散していく様子を示している。   In FIG. 4, byte unit data 31 of 1 byte at the upper left corner of the square state 21 in the initial state is (1) non-linear transformation processing (SUB), (2) shift processing (SHIFT), and (3) linear in each round operation. It shows which byte unit data included in the square state is affected by the conversion process (MAT) and (4) key application calculation process (KADD). That is, it shows how the influence of the constituent bits of 1-byte data 31 in the square state is diffused to other byte-unit data by executing each operation.

入力データの初期状態の正方ステート21中の左上のバイト単位データ31に着目する(黒でマーク)。第1ラウンド(R1)目の非線形変換処理(SUB)、シフト処理(SHIFT)までは、バイト単位データ31は、正方ステート中の他のバイト単位データの演算結果に影響を与えることはない。   Attention is paid to the upper left byte unit data 31 in the square state 21 in the initial state of the input data (marked in black). Until the first round (R1) of the nonlinear conversion process (SUB) and the shift process (SHIFT), the byte unit data 31 does not affect the operation result of the other byte unit data in the square state.

しかし第1ラウンド目の線形変換処理(MAT)を通過すると正方ステート中の左端の列に含まれる4つのバイト単位データに影響する。この状態を左上のバイト単位データ31の構成ビットの影響が、正方ステート中の左端の列に含まれる4つのバイト単位データに拡散したと呼ぶ。   However, if the first round of linear conversion processing (MAT) is passed, the four byte unit data included in the leftmost column in the square state is affected. This state is called that the influence of the constituent bits of the upper left byte unit data 31 spreads to the four byte unit data included in the leftmost column in the square state.

その後、鍵適用演算(KADD)、第2ラウンドの非線形変換処理(SUB)まではそれ以上の影響が広がらないが、次のシフト処理(SHIFT)により縦に並んでいた4つのバイトが横方向に拡散され、各列に、バイト単位データ31の影響を受けたバイト単位データがひとつずつ存在する状態となる。   After that, until the key application operation (KADD) and the second round of non-linear transformation processing (SUB), the influence does not spread further, but the four bytes arranged vertically by the next shift processing (SHIFT) As a result of the diffusion, one column of byte unit data affected by the byte unit data 31 exists in each column.

さらにその直後の線形変換処理(MAT)により正方ステートを構成する16バイトすべてに影響が伝わることになる。   Furthermore, the influence is transmitted to all 16 bytes constituting the square state by the linear transformation process (MAT) immediately after that.

このケースではラウンド演算の2ラウンド分の処理によって、一つのバイト単位データが、正方ステートを構成するすべてのバイト単位データに影響を与える。なお図4では、一例として左上のバイト単位データ31の影響について説明したが、正方ステートの任意の位置のバイトデータも、同様の影響を他のバイト単位データに与え、2ラウンドで、各バイト単位データの影響が全ての他のバイト単位データに影響を与える、すなわち拡散する。高速で広範囲な拡散処理は、データ攪拌性能の高さを証明するものであり、暗号化データの秘匿性や効率評価の要素として利用される。   In this case, one byte unit data affects all the byte unit data constituting the square state by processing for two rounds of the round operation. In FIG. 4, the influence of the upper left byte unit data 31 is described as an example. However, byte data at an arbitrary position in the square state also gives the same influence to other byte unit data, and each byte unit in two rounds. The influence of the data affects all other byte data, i.e. spreads. High-speed and wide-ranging diffusion processing proves the high data mixing performance, and is used as an element for evaluating the confidentiality and efficiency of encrypted data.

図4に示す例では、一つのバイト単位データが、正方ステートを構成するすべてのバイト単位データに影響を与えるまでに2ラウンドを要している。すべてのバイトに影響を与えるまでにかかった演算コストを見積もる。全体に影響を与えるためには2ラウンドかかっているため2回ずつの非線形変換処理(SUB)、シフト処理(SHIFT)、線形変換処理(MAT)、鍵適用演算処理(KADD)が必要である。   In the example shown in FIG. 4, two rounds are required until one byte unit data affects all the byte unit data constituting the square state. Estimate the computational cost required to affect all bytes. Since it takes two rounds to influence the whole, two times of nonlinear transformation processing (SUB), shift processing (SHIFT), linear transformation processing (MAT), and key application calculation processing (KADD) are necessary.

一つの指標として演算に必要なハードウェアゲート規模がその演算の本質的な複雑度を表していると捉えるものとする。この場合シフト処理(SHIFT)演算は回路の接続のみで実現することができるのでゲートを通過する必要がなく演算コスト=0としてよい。   As an index, the hardware gate scale necessary for the calculation represents the essential complexity of the calculation. In this case, since the shift processing (SHIFT) calculation can be realized only by connecting the circuits, it is not necessary to pass through the gate, and the calculation cost = 0.

従って、図4に示す正方ステートにおいて、1つのバイト単位データが、正方ステートを構成するすべてのバイト単位データに影響を与えるまでの2ラウンド演算に必要とする演算コストは、
2SUB+2MAT+2KADD
と見積もることができる。
なお、これらの演算処理を実行するためには、論理回路や演算処理プログラムなどが利用され、その構成によって必要とする演算回路や処理速度も異なることになる。従って絶対的な効率の評価は難しいが、上記の演算に必要となる論理回路におけるゲート数を1つの評価指標とすることが可能である。
ある論理回路実装例として、各演算に必要とするゲート数は、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらのゲート数に相当する。
Therefore, in the square state shown in FIG. 4, the operation cost required for the two round operations until one byte unit data affects all the byte unit data constituting the square state is
2SUB + 2MAT + 2KADD
Can be estimated.
In order to execute these arithmetic processes, a logic circuit, an arithmetic processing program, or the like is used, and required arithmetic circuits and processing speeds differ depending on the configuration. Therefore, although it is difficult to evaluate absolute efficiency, the number of gates in the logic circuit necessary for the above calculation can be used as one evaluation index.
As a logic circuit implementation example, the number of gates required for each operation is
SUB calculation = about 3,200-4,800 gates,
MAT calculation = 800 to 1,200 gates,
KADD calculation = about 320 gates,
This corresponds to the number of gates.

従って、図4に示す例において、正方ステートを構成するすべてのバイト単位データに影響を与えるまでの2ラウンド演算に必要とする演算コストは、
2SUB+2MAT+2KADD=9,000〜13,000ゲート=9Kゲート〜13Kゲート
の計算コストであると算出できる。
この計算コストが小さいほど、暗号処理やハッシュ処理などを実行する装置に必要とする回路規模の小型化が可能であり、また高速処理も可能となる。
Therefore, in the example shown in FIG. 4, the calculation cost required for the two round calculation until it affects all the byte unit data constituting the square state is
2SUB + 2MAT + 2KADD = 9,000 to 13,000 gates = 9K gates to 13K gates.
The smaller the calculation cost, the smaller the circuit scale required for an apparatus that performs cryptographic processing, hash processing, etc., and high-speed processing is possible.

(B)長方形配列(長方形ステート)に対する処理例 次に、図5以下を参照して256ビットのデータに対するデータ変換処理における攪拌処理について説明する。以下、AESと同様の設計方針を持つアルゴリズム[Rijndael]における変換処理における攪拌例について説明する。   (B) Processing Example for Rectangular Array (Rectangular State) Next, a stirring process in a data conversion process for 256-bit data will be described with reference to FIG. Hereinafter, an example of stirring in the conversion process in the algorithm [Rijndael] having the same design policy as AES will be described.

256ビットのデータはバイト(8ビット)単位のデータに分割される。ここでは分割された1バイト単位の32個のデータをaからa32で表す。図5に示す長方形配列データ(長方形ステート)51にあるように1バイト単位の32個のデータ[a〜a32]を4×8の配列上に格納する。この長方形の配列に格納された状態のデータを以下、長方形ステートと呼ぶ。 256-bit data is divided into data in units of bytes (8 bits). Here, the divided 32 pieces of data in units of 1 byte are represented by a 1 to a 32 . As shown in the rectangular array data (rectangular state) 51 shown in FIG. 5, 32 pieces of data [a 1 to a 32 ] in units of 1 byte are stored in a 4 × 8 array. Hereinafter, the data stored in the rectangular array is referred to as a rectangular state.

[Rijndael]アルゴリズムでは、先に図2〜図4を参照して説明した正方ステートで利用された非線形変換処理(SUB)、シフト処理(SHIFT)、線形変換処理(MAT)、鍵適用演算処理(KADD)を、長方形ステートに適用させるために拡張された演算を以下のように定義する。   In the [Rijndael] algorithm, the nonlinear transformation process (SUB), shift process (SHIFT), linear transformation process (MAT), and key application calculation process (used in the square state described above with reference to FIGS. An operation extended to apply KADD) to a rectangular state is defined as follows.

[Rijndael]アルゴリズムで、定義されている演算は、図5に示す以下の4種類である。
(1)非線形変換処理(W−SUB)、
各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図5(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a
i=1,2,・・・,32、
である。
The operations defined in the [Rijndael] algorithm are the following four types shown in FIG.
(1) Non-linear transformation process (W-SUB),
An operation for updating the value by applying a non-linear transformation S (x) in byte units to each byte data,
As shown in FIG. 5 (1), the relationship between the output b i and the input a i in byte units after the conversion process is
b i = S (a i )
i = 1, 2,..., 32,
It is.

(2)シフト処理(W−SHIFT)、
行ごとにローテーションシフト演算を施す処理。シフト量は行ごとに異なり、Rijndaelの場合は、図5(2)に示すように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は3バイト分、四行目は4バイト分のローテーションシフトを行う。
(2) Shift processing (W-SHIFT),
Processing that performs rotation shift operation for each row. The shift amount is different for each row. In the case of Rijndael, as shown in FIG. 5 (2), there is no rotation shift for the first row, the second row is rotated by 1 byte to the right, the third row is for 3 bytes, The fourth line performs a 4-byte rotation shift.

(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、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
(3) Linear transformation process (W-MAT),
This is an operation in which four data for each column are regarded as vectors and an operation is performed using a 4 × 4 matrix [M] to update a value.
The relationship between the output b i in bytes and the input a i after the conversion process is
t (b i , b i + 8 , b i + 16 , b i + 24 ) = M t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 1, 2, 3, ... 8,
It is. Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

(4)鍵適用演算処理(W−KADD)、
鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k
i=1,2,・・・,32、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
(4) Key application calculation processing (W-KADD),
Round key outputted from the key scheduling unit [k i] is an operation for performing an exclusive OR on each byte data.
The relationship between the output b i in bytes and the input a i after the conversion process is
b i = a i (XOR) k i
i = 1, 2,..., 32,
It is. In the above formula, (XOR) indicates an exclusive OR operation.

上記の各演算(1)〜(4)を所定シーケンスで順次実行する演算の組み合わせによって、1つのラウンド演算が設定される。入力データに対して、ラウンド演算を繰り返し実行し出力データ、例えば暗号化データを生成して出力する。ラウンド演算は、図6に示すように、例えば、(1)非線形変換処理(W−SUB)→(2)シフト処理(W−SHIFT)→(3)線形変換処理(W−MAT)→(4)鍵適用演算処理(W−KADD)の順で実行する一連のデータ変換処理によって構成され、このラウンド演算を複数回繰り返して実行し、入力データを変換して出力データ、すなわち暗号化データを生成する。   One round operation is set by a combination of operations that sequentially execute each of the operations (1) to (4) in a predetermined sequence. A round operation is repeatedly executed on the input data to generate and output output data, for example, encrypted data. As shown in FIG. 6, for example, (1) non-linear conversion processing (W-SUB) → (2) shift processing (W-SHIFT) → (3) linear conversion processing (W-MAT) → (4 ) Consists of a series of data conversion processes executed in the order of the key application calculation process (W-KADD). This round calculation is repeatedly executed a plurality of times to convert the input data to generate output data, that is, encrypted data. To do.

図7は、長方形ステートに対して、(1)非線形変換処理(W−SUB)→(2)シフト処理(W−SHIFT)→(3)線形変換処理(W−MAT)→(4)鍵適用演算処理(W−KADD)の順で実行するラウンド演算を第1〜第3ラウンド(R1〜R3)実行した場合のデータ攪拌例について説明する図である。   FIG. 7 shows (1) nonlinear transformation processing (W-SUB) → (2) shift processing (W-SHIFT) → (3) linear transformation processing (W-MAT) → (4) key application for a rectangular state. It is a figure explaining the data stirring example at the time of performing the 1st-3rd round (R1-R3) round calculation performed in order of a calculation process (W-KADD).

入力データの初期状態の長方形ステート61中の左上のバイト単位データ71に着目する(黒でマーク)。前述の正方ステートのケースと同様に、2ラウンド後には16バイトのデータに影響をおよぼしていることがわかる。さらに3ラウンド目のシフト処理(W−SHIFT)により影響範囲が拡散され、直後の、3ラウンド目の線形変換処理(W−MAT)により32バイトすべてに影響を及ぼしていることがわかる。   Attention is paid to the upper left byte unit data 71 in the rectangular state 61 in the initial state of the input data (marked in black). As in the case of the square state described above, it can be seen that 16 bytes of data are affected after two rounds. Further, it can be seen that the influence range is diffused by the shift process (W-SHIFT) in the third round, and all the 32 bytes are affected by the linear conversion process (W-MAT) in the third round immediately after.

このケースではラウンド演算の3ラウンド分の処理によって、一つのバイト単位データが、長方形ステートを構成するすべてのバイト単位データに影響を与える。なお図7では、一例として左上のバイト単位データ71の影響について説明したが、この長方形ステートの任意の位置のバイトデータも、同様の影響を他のバイト単位データに与え、3ラウンドで、各バイト単位データの影響が全ての他のバイト単位データに影響を与える、すなわち拡散する。   In this case, one byte unit data affects all the byte unit data constituting the rectangular state by processing for three rounds of the round operation. In FIG. 7, the influence of the upper left byte unit data 71 has been described as an example. However, the byte data at an arbitrary position in the rectangular state also gives the same influence to other byte unit data, and each byte in three rounds. The influence of the unit data affects all other byte unit data, i.e. spreads.

次に、先の正方ステート(図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ゲートとなる。
Next, similarly to the example of the square state (FIG. 4), the calculation cost based on the number of gates is calculated. In the example shown in FIG. 7, the calculation costs required for the three round operations until all the byte unit data constituting the rectangular state are affected are W-SUB, W-SHIFT, W-MAT, W-KADD calculation is required. As described above, the shift processing (W-SHIFT) can be performed with calculation cost = 0, and therefore the calculation cost in this case is
It can be estimated as 3 (W-SUB) +3 (W-MAT) +3 (W-KADD).
W-SUB, W-MAT, and W-KADD correspond to twice the cost of SUB, MAT, and KADD, respectively. Therefore, in this rectangular state, the calculation cost required for the three round calculation until it affects all the byte unit data constituting the rectangular state is calculated based on the number of gates described in [0025] above. 26K gate to 38K gate.

上述したように、図2〜図4を参照して説明したように、データをバイト単位データとして正方形に配置してラウンド演算を行なう場合には、比較的低い計算コストでの攪拌が達成できるが、図5〜図7を参照して説明したような、正方形配列ができない256ビット等の入出力に対応するために設定される長方形配列を利用した処理では、演算コストが増大してしまうという問題がある。   As described above, as described with reference to FIGS. 2 to 4, when data is arranged in a square as byte unit data and round operation is performed, stirring at a relatively low calculation cost can be achieved. As described with reference to FIGS. 5 to 7, the processing using the rectangular array set to cope with input / output of 256 bits or the like that cannot be square array increases the calculation cost. There is.

本発明は、上記問題点に鑑みてなされたものであり、長方形配列によるデータ攪拌を実行する暗号処理やハッシュ処理、データ拡散処理などにおいて、演算コストを低下させ効率的な拡散を実現するデータ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムを提供することを目的とする。   The present invention has been made in view of the above-described problems, and data conversion that achieves efficient diffusion by reducing calculation cost in encryption processing, hash processing, data diffusion processing, etc. that performs data agitation by a rectangular array An object is to provide an apparatus, a data conversion method, and a computer program.

本発明の第1の側面は、
ウンド演算を繰り返すデータ変換処理を行うデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを適用した複数の演算処理を実行し、
前記複数の演算処理は、
いずれか一方の分割データに対する非線形変換処理と、線形変換処理と、鍵加算処理と、
少なくとも線形変換処理を実行した一方の分割データと、他方の分割データまたは当該他方の分割データのシフト演算結果との排他的論理和演算処理を含む、
データ変換装置にある。
The first aspect of the present invention is:
And a data conversion unit for performing data conversion processing of repeating the rounds operation,
The data converter is
In the round operation, a plurality of arithmetic processes are performed by applying two divided data obtained by dividing the rectangular array data in which data blocks of the same size are arrayed into two,
The plurality of arithmetic processes are:
Non-linear transformation processing, linear transformation processing, key addition processing for any one of the divided data,
Including exclusive OR operation processing of at least one divided data that has been subjected to linear transformation processing and the shift operation result of the other divided data or the other divided data,
In the data converter.

さらに、本発明のデータ変換装置の一実施態様において、前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成であることを特徴とする。   Furthermore, in an embodiment of the data conversion device of the present invention, the data block of the same size is a 1-byte unit data block, and the data conversion unit arranges the 1-byte unit data block in the round operation. The present invention is characterized in that the processing is performed on the divided data obtained by dividing the rectangular array data into two.

さらに、本発明のデータ変換装置の一実施態様において、前記鍵加算処理は、暗号鍵データとの排他的論理和演算であることを特徴とする。 Furthermore, in an embodiment of the data conversion apparatus of the present invention, the key addition process is an exclusive OR operation with encryption key data .

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記シフト処理の実行に際して、m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データが、m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行することを特徴とする。   Furthermore, in one embodiment of the data conversion apparatus of the present invention, the data conversion unit, when executing the shift process, includes m rows and n columns of divided data to be subjected to shift processing in m rows and 2n columns of rectangular array data. , When m ≦ n, the data blocks in the same column are shifted so as to become different columns after the shift process before the shift, and when m> n, the data blocks in the same column are shifted after the shift process. The shift process is executed so as to be included in an arbitrary column within a range of (m / n) -1 or more and (m / n) +1 or less.

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。   Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit performs a non-linear conversion process and a shift process on one of the divided data A of the divided data in the round operation, thereby dividing the divided data. A is updated, the linear conversion processing is further performed on the updated divided data A, the exclusive OR with the other divided data B is performed, and the result is set as the updated data of the divided data B. Further, after the swap process of the divided data AB, an exclusive OR process with the key data for the divided data A is executed.

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。   Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit performs a nonlinear conversion process and a shift process on one divided data A of the divided data in the round operation, and further linearly The conversion process is executed to update the divided data A, and the exclusive data OR of the updated divided data A and the other divided data B is executed, and the result is used as the update data of the divided data B. After the setting and the swap processing of the divided data AB, exclusive OR processing with the key data for the divided data A is executed.

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行することを特徴とする。   Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit performs a nonlinear conversion process and a linear conversion process on one divided data A of the divided data in the round operation, and performs the other The result is set as update data of the divided data B, and after the swap processing of the divided data AB, the shift processing for the divided data A and the exclusion of the key data are performed. A logical OR process is performed.

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算において、前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して更新分割データAを生成し、他方の分割データBに対してシフト処理を実行して更新分割データBを生成し、更新分割データAと更新分割データBとの排他的論理和を実行して、さらに更新分割データABのスワップ処理の後、更新分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする。
Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit performs a nonlinear conversion process, a shift process, and a linear conversion process on one divided data A of the divided data in the round operation. Further, exclusive OR with the other divided data B is executed, the result is set as update data of the divided data A, and after the swap processing of the divided data AB, the key data for the divided data A and The exclusive OR process is executed.
Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit performs a non-linear conversion process and a shift process on one of the divided data A of the divided data in the round operation, thereby dividing the divided data. A is updated, and the updated divided data A is further subjected to linear conversion processing to generate updated divided data A, and the other divided data B is shifted to generate updated divided data B. Execute exclusive OR of the update divided data A and the update divided data B, and further execute exclusive OR processing with the key data for the update divided data A after the swap processing of the update divided data AB. It is characterized by.

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、前記ラウンド演算における線形変換処理において、複数の異なる行列をラウンド単位で選択適用する構成であることを特徴とする。   Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit is configured to select and apply a plurality of different matrices in round units in the linear conversion process in the round operation.

さらに、本発明のデータ変換装置の一実施態様において、前記データ変換部は、複数の異なる行列の選択適用としてDSM(Diffusion Switching Mechanism)を利用した処理を行う構成であることを特徴とする。   Furthermore, in an embodiment of the data conversion apparatus of the present invention, the data conversion unit is configured to perform processing using DSM (Diffusion Switching Mechanism) as a selection application of a plurality of different matrices.

さらに、本発明の第2の側面は、
データ変換装置において実行するデータ変換方法であり、
データ変換部が、ラウンド演算を繰り返してデータ変換を行なうデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを適用した複数の演算処理を実行するステップであり、
前記複数の演算処理は、
いずれか一方の分割データに対する非線形変換処理と、線形変換処理と、鍵加算処理と、
少なくとも線形変換処理を実行した一方の分割データと、他方の分割データまたは当該他方の分割データのシフト演算結果との排他的論理和演算処理を含む、
データ変換方法にある。
Furthermore, the second aspect of the present invention provides
A data conversion method executed in the data conversion device,
The data conversion unit has a data conversion step of performing data conversion by repeating round operations,
The data conversion step includes
In the round operation,
A step of executing a plurality of arithmetic processings applying two divided data obtained by dividing rectangular array data in which data blocks of the same size are arranged into two;
The plurality of arithmetic processes are:
Non-linear transformation processing, linear transformation processing, key addition processing for any one of the divided data,
Including exclusive OR operation processing of at least one divided data that has been subjected to linear transformation processing and the shift operation result of the other divided data or the other divided data,
It is in the data conversion method.

さらに、本発明の第3の側面は、
データ変換装置においてデータ変換処理を実行させるコンピュータ・プログラムであり、
データ変換部に、ラウンド演算を繰り返してデータ変換を行なわせるデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを適用した複数の演算処理を実行させるステップであり、
前記複数の演算処理は、
いずれか一方の分割データに対する非線形変換処理と、線形変換処理と、鍵加算処理と、
少なくとも線形変換処理を実行した一方の分割データと、他方の分割データまたは当該他方の分割データのシフト演算結果との排他的論理和演算処理を含む、
コンピュータ・プログラムにある。
さらに、本発明の第4の側面は、
プログラムを実行するプロセッサと、
前記プログラムを保持するメモリと、
ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを適用した複数の演算処理を実行し、
前記複数の演算処理は、
いずれか一方の分割データに対する非線形変換処理と、線形変換処理と、鍵加算処理と、
少なくとも線形変換処理を実行した一方の分割データと、他方の分割データまたは当該他方の分割データのシフト演算結果との排他的論理和演算処理を含む、
情報処理装置にある。
Furthermore, the third aspect of the present invention provides
A computer program for executing data conversion processing in a data conversion device,
A data conversion step for causing the data conversion unit to perform data conversion by repeating a round operation;
The data conversion step includes
In the round operation,
A step of executing a plurality of arithmetic processes using two divided data obtained by dividing rectangular array data in which data blocks of the same size are arranged into two;
The plurality of arithmetic processes are:
Non-linear transformation processing, linear transformation processing, key addition processing for any one of the divided data,
Including exclusive OR operation processing of at least one divided data that has been subjected to linear transformation processing and the shift operation result of the other divided data or the other divided data,
It is in a computer program.
Furthermore, the fourth aspect of the present invention provides
A processor for executing the program;
A memory for holding the program;
A data conversion unit for performing a data conversion process that repeats a round operation;
The data converter is
In the round operation,
Executing a plurality of arithmetic processings using two divided data obtained by dividing rectangular array data in which data blocks of the same size are arranged into two;
The plurality of arithmetic processes are:
Non-linear transformation processing, linear transformation processing, key addition processing for any one of the divided data,
Including exclusive OR operation processing of at least one divided data that has been subjected to linear transformation processing and the shift operation result of the other divided data or the other divided data,
It is in the information processing device.

なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。   The program of the present invention is, for example, a program that can be provided by a storage medium or a communication medium provided in a computer-readable format to a general-purpose system capable of executing various program codes. By providing such a program in a computer-readable format, processing corresponding to the program is realized on the computer system.

本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。   Other objects, features, and advantages of the present invention will become apparent from a more detailed description based on embodiments of the present invention described later and the accompanying drawings. In this specification, the system is a logical set configuration of a plurality of devices, and is not limited to one in which the devices of each configuration are in the same casing.

本発明の一実施例によれば、例えば1バイト単位のデータブロックを配列した長方形配列データを2分割して設定した分割データに対する様々な処理を実行してデータ変換を行う構成において、分割データの一方に対する線形変換処理と、2つの分割データ相互の排他的論理和演算処理と、分割データの一方のデータに対するシフト処理と、2つの分割データのスワップ処理を実行することで、演算コストを低減した効率的なデータ攪拌を実現することができる。さらに、分割データに対する非線形変換や鍵適用演算を含めることでセキュリティレベルの高い暗号処理が実現される。   According to one embodiment of the present invention, for example, in a configuration in which data conversion is performed by executing various processes on divided data set by dividing rectangular array data in which data blocks of 1-byte units are arranged into two, Reduced calculation cost by executing linear transformation processing for one, exclusive OR operation processing of two divided data, shift processing for one data of divided data, and swap processing of two divided data Efficient data agitation can be achieved. Furthermore, encryption processing with a high security level is realized by including non-linear transformation and key application calculation for the divided data.

入力データをバイト単位に分割し、バイト単位データを正方形や長方形の配列として配置し、行単位の処理や列単位の処理を繰り返すデータ攪拌に適用する構成について説明する図である。It is a figure explaining the structure which divides | segments input data into a byte unit, arranges byte unit data as a square or a rectangular array, and applies it to the data stirring which repeats the process of a row unit, and the process of a column unit. AESブロック暗号アルゴリズムにおける正方ステートに対する演算例について説明する図である。It is a figure explaining the example of a calculation with respect to the square state in an AES block encryption algorithm. AESブロック暗号アルゴリズムにおけるラウンド演算について説明する図である。It is a figure explaining the round calculation in an AES block encryption algorithm. 正方ステートに対するラウンド演算によるデータ拡散例について説明する図である。It is a figure explaining the data diffusion example by the round calculation with respect to a square state. 長方形配列データ(長方形ステート)に対する演算例について説明する図である。It is a figure explaining the example of a calculation with respect to rectangular arrangement | sequence data (rectangular state). 長方形配列データ(長方形ステート)に対するラウンド演算例について説明する図である。It is a figure explaining the example of a round calculation with respect to rectangular arrangement | sequence data (rectangular state). 長方形ステートに対するラウンド演算によるデータ拡散例について説明する図である。It is a figure explaining the data diffusion example by the round calculation with respect to a rectangular state. 長方形ステートの半分の分割データに対する処理例について説明する図である。It is a figure explaining the example of a process with respect to the division data of the half of a rectangular state. 長方形ステートに対するラウンド演算処理例について説明する図である。It is a figure explaining the example of a round calculation process with respect to a rectangular state. 長方形ステートに対するラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process with respect to a rectangular state. 長方形ステートに対するラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process with respect to a rectangular state. 本発明の第1実施例におけるラウンド演算の構成例について説明する図である。It is a figure explaining the structural example of the round calculation in 1st Example of this invention. 本発明の第1実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。It is a figure explaining the example of the data processing performed in the round calculation in 1st Example of this invention. 本発明の第1実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the data diffusion example by the round calculation process of 1st Example of this invention. 本発明の第1実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the data diffusion example by the round calculation process of 1st Example of this invention. 本発明の第2実施例におけるラウンド演算の構成例について説明する図である。It is a figure explaining the structural example of the round calculation in 2nd Example of this invention. 本発明の第2実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。It is a figure explaining the example of the data processing performed in the round calculation in 2nd Example of this invention. 本発明の第2実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process of 2nd Example of this invention. 本発明の第2実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process of 2nd Example of this invention. 本発明の第3実施例におけるラウンド演算の構成例について説明する図である。It is a figure explaining the structural example of the round calculation in 3rd Example of this invention. 本発明の第3実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。It is a figure explaining the example of the data processing performed in the round calculation in 3rd Example of this invention. 本発明の第3実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process of 3rd Example of this invention. 本発明の第3実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process of 3rd Example of this invention. 本発明の第4実施例におけるラウンド演算の構成例について説明する図である。It is a figure explaining the structural example of the round calculation in 4th Example of this invention. 本発明の第4実施例におけるラウンド演算において実行するデータ処理の例について説明する図である。It is a figure explaining the example of the data processing performed in the round calculation in 4th Example of this invention. 本発明の第4実施例のラウンド演算処理によるデータ拡散例について説明する図である。It is a figure explaining the example of data diffusion by the round calculation process of 4th Example of this invention. 実施例1におけるシフト処理(H−SHIFT)を長方形ステートの左右半分の分割データの両者に適用する処理のアルゴリズムについて説明する図である。It is a figure explaining the algorithm of the process which applies the shift process (H-SHIFT) in Example 1 to both the divided data of the right-and-left half of a rectangular state. 全体で2mn個のバイト単位データを持つデータを、2n列、m行のa〜a2mnの2mn個のバイト単位データを有する長方形ステートとした一般形に対するデータ変換処理について説明する図である。Data total with 2mn pieces of byte data, is a diagram for describing data conversion processing for a General that the rectangular state with 2n columns, 2mn pieces of byte data of a 1 ~a 2mn m rows. 全体で2mn個のバイト単位データを持つデータを、2n列、m行のa〜a2mnの2mn個のバイト単位データを有する長方形ステートとした一般形に対するデータ変換処理について説明する図である。Data total with 2mn pieces of byte data, is a diagram for describing data conversion processing for a General that the rectangular state with 2n columns, 2mn pieces of byte data of a 1 ~a 2mn m rows. 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例1によるデータ拡散例を説明する図である。It is a figure explaining the example of data diffusion by Example 1 with respect to the generalized rectangular state in which the division | segmentation data of the half of a rectangular state do not become a square state. 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例2によるデータ拡散例を説明する図である。It is a figure explaining the example of a data diffusion by Example 2 with respect to the generalized rectangular state in which the division | segmentation data of the half of a rectangular state does not become a square state. 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例3によるデータ拡散例を説明する図である。It is a figure explaining the data diffusion example by Example 3 with respect to the generalized rectangular state in which the division | segmentation data of the half of a rectangular state does not become a square state. 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例4によるデータ拡散例を説明する図である。It is a figure explaining the data diffusion example by Example 4 with respect to the generalized rectangular state in which the division | segmentation data of the half of a rectangular state does not become a square state. 長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステートに対する実施例4によるデータ拡散例を説明する図である。It is a figure explaining the data diffusion example by Example 4 with respect to the generalized rectangular state in which the division | segmentation data of the half of a rectangular state does not become a square state. 本発明に係る処理を実行するデータ変換装置としてのICモジュールの構成例を示す図である。It is a figure which shows the structural example of IC module as a data converter which performs the process which concerns on this invention.

以下、図面を参照しながら本発明のデータ変換装置、およびデータ変換方法、並びにコンピュータ・プログラムの詳細について説明する。   Details of the data conversion apparatus, data conversion method, and computer program of the present invention will be described below with reference to the drawings.

本発明は、例えば入出力が256ビットなどのデータ、すなわち、8ビットのバイト単位データの配列を行なった場合、正方形の配列が出来ないビット数を持つデータ、すなわち、具体的には、
ビット数=8×(n)ビットである場合、(nは自然数)
バイト数として表現すると、
バイト数=(n)バイトである場合、(nは自然数)
このようなビット数(またはバイト数)とならないデータに対するデータ攪拌処理を効率的に実行する構成を提案するものである。
In the present invention, for example, when data is input / output is 256 bits, that is, when 8-bit byte-unit data is arranged, data having a number of bits that cannot be arranged in a square, that is, specifically,
Number of bits = 8 × (n) When 2 bits (n is a natural number)
Expressed as bytes,
Number of bytes = (n) When 2 bytes, (n is a natural number)
The present invention proposes a configuration that efficiently executes data mixing processing for data that does not have the number of bits (or the number of bytes).

先に図1〜図7を参照して説明したように、正方形の配列が出来ないビット数を持つデータについては図1(b)に示すような長方形配列を行なって処理を行なうことになる。本発明では、このような長方形ステートを適用した処理において、演算コストを低減させ、かつ十分な攪拌性能を実現させる手法を提案する。   As described above with reference to FIGS. 1 to 7, the data having the number of bits that cannot be arranged in a square is processed by performing a rectangular arrangement as shown in FIG. The present invention proposes a technique for reducing the calculation cost and realizing sufficient agitation performance in processing using such a rectangular state.

例えば1つの具体例は、同一サイズのデータブロック、例えばバイト単位データを配列した長方形配列データを2分割した分割データの一方の分割データのみに非線形変換、線形変換、鍵の加算などの演算を行い、さらに、演算コストの低い排他的論理和(XOR)演算や、スワップ(SWAP)演算などを行なう設定とする。この様な構成とすることで少ない処理量で十分な攪拌性能を実現する。本発明において提案する構成を適用することで、演算負荷を低減させて十分な拡散性能が得られ、暗号処理、ハッシュ処理、攪拌処理などを小さな回路規模で高速に行なうことが可能となる。   For example, one specific example performs operations such as non-linear transformation, linear transformation, key addition, etc. on only one divided data of data blocks of the same size, for example, divided data obtained by dividing rectangular array data in which byte unit data is arranged into two. Further, it is set to perform an exclusive OR (XOR) operation, a swap (SWAP) operation, etc. with a low operation cost. With such a configuration, sufficient stirring performance is realized with a small amount of processing. By applying the configuration proposed in the present invention, it is possible to reduce the calculation load and obtain a sufficient diffusion performance, and to perform cryptographic processing, hash processing, stirring processing, and the like at high speed with a small circuit scale.

先に説明したように、AESや、Rijndaelなどのアルゴリズムでは、複数の演算の組み合わせからなるラウンド演算を繰り返し実行する。ラウンド演算には、非線形変換処理(SUB,W−SUB)、シフト処理(SHIFT,W−SHIFT)、線形変換処理(MAT,W−MAT)、鍵適用演算処理(KADD,W−KADD)が含まれる。   As described above, in an algorithm such as AES or Rijndael, a round operation including a combination of a plurality of operations is repeatedly executed. The round calculation includes nonlinear conversion processing (SUB, W-SUB), shift processing (SHIFT, W-SHIFT), linear conversion processing (MAT, W-MAT), and key application calculation processing (KADD, W-KADD). It is.

これらの処理中、非線形変換処理(SUB,W−SUB)と、線形変換処理(MAT,W−MAT)は、比較的重い処理、すなわち演算コストの高い処理である。従って、これらのコストの高い処理を減少させることができれば、全体の演算コストの低減が可能となると考えられる。   Among these processes, the non-linear transformation process (SUB, W-SUB) and the linear transformation process (MAT, W-MAT) are relatively heavy processes, that is, processes with high calculation costs. Therefore, if these expensive processes can be reduced, it is considered that the overall calculation cost can be reduced.

先に説明したRijndaelアルゴリズムは、長方形ステートのすべてのデータに対して、非線形変換処理(W−SUB)や線形変換処理(W−MAT)などを行なうアルゴリズムであるが、本発明の1つの実施例では、長方形ステートのすべてのデータに対して、このような設定とせず、長方形ステートを2分割した分割データの一方の分割データのみに、非線形変換処理や線形変換処理や鍵適用演算処理を行い、シフト処理やスワップ演算など、比較的処理コストの低い演算により、その影響を残り野データに拡散させる構成として十分な拡散性を達成する。   The Rijndael algorithm described above is an algorithm that performs non-linear transformation processing (W-SUB), linear transformation processing (W-MAT), and the like on all data in a rectangular state, but one embodiment of the present invention. Then, for all the data in the rectangular state, such a setting is not performed, and the nonlinear transformation process, the linear transformation process, and the key application calculation process are performed only on one divided data of the divided data obtained by dividing the rectangular state into two parts. Sufficient diffusibility is achieved as a configuration in which the influence is diffused to the remaining field data by operations with relatively low processing costs such as shift processing and swap operations.

なお、本明細書では、バイト単位データによって構成される長方形配列データ(長方形ステート)のすべてのデータに対する処理と、長方形配列データ(長方形ステート)を2分割した分割データの一方の分割データに対する処理を以下のような表記によって区別して説明する。長方形ステートのすべてのデータに対する処理は、例えば、非線形変換処理(W−SUB)、線形変換処理(W−MAT)など、[W−]を設定した表記として示し、半分の分割データに対する処理は、非線形変換処理(H−SUB)、線形変換処理(H−MAT)など、[H−]を設定した表記として示す。   In this specification, processing for all data of rectangular array data (rectangular state) constituted by byte-unit data and processing for one divided data of divided data obtained by dividing rectangular array data (rectangular state) into two. The following notation is used for distinction. The processing for all the data in the rectangular state is shown as notation in which [W−] is set, for example, non-linear transformation processing (W-SUB), linear transformation processing (W-MAT), etc. It shows as notation which set [H-], such as a nonlinear transformation process (H-SUB) and a linear transformation process (H-MAT).

図8に、4×8=32のバイト単位データ(256ビット)によって構成される長方形ステートを2分割して設定した分割データに対する以下の処理、すなわち、
(1)非線形変換処理(H−SUB)
(2)線形変換処理(H−MAT)
(3)鍵適用演算(H−KADD)
の処理例を示す。なお、図8では、長方形ステートの左半分の分割データに対してのみ上記各演算を適用した例である。なお、演算の適用対象は左半分または右半分、いずれでも同様の演算削減効果が発揮される。
In FIG. 8, the following processing for divided data set by dividing a rectangular state composed of 4 × 8 = 32 byte-unit data (256 bits), that is,
(1) Non-linear transformation process (H-SUB)
(2) Linear transformation processing (H-MAT)
(3) Key application calculation (H-KADD)
An example of processing is shown. FIG. 8 shows an example in which each of the above operations is applied only to the divided data in the left half of the rectangular state. It should be noted that the same calculation reduction effect is exhibited regardless of whether the calculation target is the left half or the right half.

図8に示す各演算の詳細は以下の通りである。
(1)非線形変換処理(H−SUB)、
長方形ステートの左半分の分割データ各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算、
図8(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a),if=i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
The details of each calculation shown in FIG. 8 are as follows.
(1) Non-linear transformation process (H-SUB),
An operation for updating the value by applying a non-linear transformation S (x) in byte units to each byte data divided in the left half of the rectangular state,
As shown in FIG. 8 (1), the relationship between the output b i in byte units after the conversion process and the input a i is
b i = S (a i ), if = i = 1 to 4, 9 to 12, 17 to 20, 25 to 28,
b i = a i , else
As described above, the right half divided data is not changed.

(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]を適用した線形変換を実行し、右半分の分割データは変更しない。
なお、()は、行列における行と列を入れ替えた転置行列を示している。
(2) Linear transformation process (H-MAT),
For each piece of byte data in the left half of the rectangular state, this is an operation in which four data for each column are regarded as vectors and an operation is performed using a 4 × 4 matrix [M] to update the value.
The relationship between the output b i in bytes and the input a i after the conversion process is
t (b i , b i + 8 , b i + 16 , b i + 24 ) = M t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 1, 2, 3, 4,
t (b i , b i + 8 , b i + 16 , b i + 24 ) = t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 5, 6, 7, 8,
As described above, linear transformation applying the matrix [M] is performed on each byte data in the left half of the rectangular state, and the divided data in the right half is not changed.
Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

(3)鍵適用演算処理(H−KADD)、
長方形ステートの左半分の分割データ各バイトデータについて、鍵スケジュール部から出力されたラウンド鍵[k]を各バイトデータに排他的論理和を行う演算である。
変換処理後のバイト単位の出力bと入力aの関係は、
=a(XOR)k,if i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
である。なお、上記式において(XOR)は排他的論理和演算を示している。
(3) Key application calculation processing (H-KADD),
The divided data of each byte data of the left half of the rectangular state is a round key output from the key scheduling part [k i] an operation of performing an exclusive OR on each byte data.
The relationship between the output b i in bytes and the input a i after the conversion process is
b i = a i (XOR) k i , if i = 1 to 4, 9 to 12, 17 to 20, 25 to 28,
b i = a i , else
As described above, the right half divided data is not changed.
It is. In the above formula, (XOR) indicates an exclusive OR operation.

このように、長方形ステートの左半分の分割データ各バイトデータについて、非線形変換処理(H−SUB)、線形変換処理(H−MAT)、鍵適用演算(H−KADD)を実行し、それ以外のデータに対してはシフト、スワップなどの比較的処理コストの低い演算を組み合わせて十分な拡散性を達成して性能の高い置換関数を実現する。なお、通常の暗号アルゴリズムでは、鍵適用演算処理(H−KADD)は、非線形変換処理(H−SUB)の処理サイズにあわせて定義されるのが一般的である。   As described above, the non-linear transformation process (H-SUB), the linear transformation process (H-MAT), and the key application operation (H-KADD) are executed for each byte data of the divided data in the left half of the rectangular state. Combining operations with relatively low processing costs such as shift and swap for data achieves sufficient diffusivity to realize a replacement function with high performance. In a normal encryption algorithm, the key application calculation process (H-KADD) is generally defined in accordance with the processing size of the non-linear conversion process (H-SUB).

目標としては、例えば、図8に示すような4×8=32のバイト単位データ(256ビット)に対してラウンド演算を繰り返し実行するデータ変換や暗号処理において、長方形ステートの半分のバイト単位データに対する演算である非線形変換処理(H−SUB)や、線形変換処理(H−MAT)を各ラウンドで1回ずつ実行する構成とした場合、5ラウンド分のラウンド演算ですべての32バイトデータに影響を与える構成にできることが望ましい。   As a target, for example, in data conversion or encryption processing in which round operation is repeatedly performed on 4 × 8 = 32 byte unit data (256 bits) as shown in FIG. When a non-linear transformation process (H-SUB) or linear transformation process (H-MAT), which is an operation, is executed once in each round, the round operation for 5 rounds affects all 32-byte data. It is desirable to be able to provide the configuration given.

なぜなら、先に、図5〜図7を参照して説明した長方形ステートの全体に対して、非線形変換処理(W−SUB)や、線形変換処理(W−MAT)を実行する構成においては、3ラウンドのラウンド演算で、1つのバイト単位データが、長方形ステートのすべてのバイト単位データに影響をさせることができるため、半分のコストとみなせる非線形変換処理(H−SUB)や、線形変換処理(H−MAT)を適用して2倍の6ラウンドで影響させることができても効率的な優位性がなくなるためである。従って5ラウンド以内で、1つのバイト単位データが、長方形ステートのすべてのバイト単位データに影響をさせることができる構成が求められる。   This is because in the configuration in which nonlinear transformation processing (W-SUB) or linear transformation processing (W-MAT) is performed on the entire rectangular state described above with reference to FIGS. Since one byte unit data can affect all the byte unit data in the rectangular state by round operation of round, nonlinear conversion processing (H-SUB) or linear conversion processing (H This is because, even if it can be applied in 6 rounds twice by applying (MAT), efficient superiority is lost. Therefore, a configuration is required in which one byte unit data can affect all the byte unit data in the rectangular state within five rounds.

まず、上述した長方形ステートを2分割して設定した分割データに対する処理、すなわち、
(1)非線形変換処理(H−SUB)
(2)線形変換処理(H−MAT)
(3)鍵適用演算(H−KADD)
これらの処理と、長方形ステートの全体データに対するシフト処理(W−SHIFT)を組み合わせて、1ラウンドのラウンド演算を行なう設定とした場合のデータ拡散について考察する。
First, the processing for the divided data set by dividing the rectangular state described above into two, that is,
(1) Non-linear transformation process (H-SUB)
(2) Linear transformation processing (H-MAT)
(3) Key application calculation (H-KADD)
Considering data diffusion in the case where a setting for performing a round operation of one round is made by combining these processes and a shift process (W-SHIFT) for the entire data in the rectangular state.

すなわち、図9に示すように、長方形ステート(2n列×m行)のnm個のバイト単位データ(ただし2n≠m)からなる長方形ステートに対して、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)
(2)長方形ステートの全体データに対するシフト処理(W−SHIFT)
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データに対する鍵適用演算(H−KADD)
これらの(1)〜(4)の処理を1ラウンド分の演算として設定したラウンド演算を実行するものとする。
That is, as shown in FIG. 9, for a rectangular state consisting of nm byte unit data (2n ≠ m) of a rectangular state (2n columns × m rows),
(1) Non-linear transformation processing (H-SUB) for half-division data of rectangular state
(2) Shift processing for all rectangular state data (W-SHIFT)
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Key application operation (H-KADD) for half of the rectangular state divided data
It is assumed that a round operation in which these processes (1) to (4) are set as an operation for one round is executed.

なお、シフト処理(W−SHIFT)は、先に説明した[Rijndael]アルゴリズムのシフト処理(W−SHIFT)と同じ処理であり、行ごとにローテーションシフト演算を施す処理であり、図5(2)に示したように、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は3バイト分、四行目は4バイト分のローテーションシフトを行う処理とする。   Note that the shift process (W-SHIFT) is the same process as the shift process (W-SHIFT) of the [Rijndael] algorithm described above, and is a process for performing a rotation shift operation for each row. As shown in FIG. 5, the first line is not rotated, the second line is rotated by 1 byte to the right, the third line is rotated by 3 bytes, and the fourth line is rotated by 4 bytes.

このようなラウンド演算を実行した場合の、データ拡散例について図10を参照して説明する。入力データの初期状態の長方形ステート100中の左上のバイト単位データ101に着目する(黒でマーク)。図から理解されるように、ラウンド演算の2ラウンド実行後には、左半分の分割データの3/4のバイト単位データと、右半分の分割データの1つのバイト単位データに長方形ステート100中の左上のバイト単位データ101の構成ビットの影響が発生、すなわち拡散し、3ラウンド後には、左半分の分割データの全てのバイト単位データと、右半分の分割データの7つのバイト単位データに影響を与えている。   An example of data diffusion when such a round operation is performed will be described with reference to FIG. Attention is focused on the upper left byte unit data 101 in the initial rectangular state 100 of input data (marked in black). As can be seen from the figure, after two rounds of the round operation, the upper left in the rectangular state 100 is converted into 3/4 byte unit data of the left half divided data and one byte unit data of the right half divided data. The influence of the constituent bits of the byte unit data 101 occurs, that is, spreads, and after three rounds, all the byte unit data of the left half divided data and the seven byte unit data of the right half divided data are affected. ing.

しかし、この3ラウンドでは、入力データの初期状態の長方形ステート100中の左上のバイト単位データ101が長方形ステート100の全てのバイト単位データに対して影響を与えるまでには至っていない。   However, in the three rounds, the upper left byte unit data 101 in the rectangular state 100 in the initial state of the input data has not yet reached the influence on all the byte unit data of the rectangular state 100.

次に、同様の処理における長方形ステート100中の右半分の分割データの左上のバイト単位データ、すなわち、最上位の行の左から5番目のデータについての影響について図11に示す。   Next, FIG. 11 shows the influence on the upper left byte unit data of the right half divided data in the rectangular state 100 in the same processing, that is, the fifth data from the left of the top row.

入力データの初期状態の長方形ステート100中の最上位の行の左から5番目のバイト単位データ102に着目する(黒でマーク)。図から理解されるように、ラウンド演算の3ラウンド実行後まで、全く他のバイト単位データ102は、他のデータに影響を与えない。右半分の分割データに対して実行される処理はシフト処理(W−SHIFT)のみであるが、最上位の行にはシフトが施されないため、移動することがないためである。   Attention is focused on the fifth byte unit data 102 from the left of the uppermost row in the rectangular state 100 in the initial state of the input data (marked in black). As understood from the figure, the other byte unit data 102 does not affect the other data until after three rounds of the round operation are executed. This is because only the shift process (W-SHIFT) is performed on the right half of the divided data, but the uppermost row is not shifted and therefore does not move.

かつ右半分の分割データにデータが位置する限り、非線形変換処理(H−SUB)、線形変換処理(H−MAT)、鍵適用演算(H−KADD)、これらの演算対象として選択されないため影響範囲が広がることがない。従って、ラウンド処理を永遠に繰り返しても他のバイトに影響することがない。これは暗号処理に用いる関数としては望ましくない性質である。   As long as the data is located in the right half of the divided data, the non-linear transformation process (H-SUB), the linear transformation process (H-MAT), the key application calculation (H-KADD), and the influence range because these are not selected as calculation targets. Will not spread. Therefore, even if round processing is repeated forever, other bytes are not affected. This is an undesirable property as a function used for cryptographic processing.

このように、図9に示すような、
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)
(2)長方形ステートの全体データに対するシフト処理(W−SHIFT)
(3)長方形ステートの半分の分割データに対する線形変換処理(H−MAT)
(4)長方形ステートの半分の分割データに対する鍵適用演算(H−KADD)
これらの(1)〜(4)の処理を1ラウンド分の演算として設定したラウンド演算を実行する構成では、十分な拡散が実行されず、暗号処理やハッシュ処理、データ拡散処理などに適用するには好ましくない。
Thus, as shown in FIG.
(1) Non-linear transformation processing (H-SUB) for half-division data of rectangular state
(2) Shift processing for all rectangular state data (W-SHIFT)
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Key application operation (H-KADD) for half of the rectangular state divided data
In a configuration that executes round operations in which the processes of (1) to (4) are set as operations for one round, sufficient diffusion is not performed, and is applicable to encryption processing, hash processing, data diffusion processing, and the like. Is not preferred.

以下、このような問題点に鑑み、少ないラウンド数で十分な拡散性能を持つ本発明に従ったアルゴリズムについて説明する。   In view of such problems, an algorithm according to the present invention having sufficient spreading performance with a small number of rounds will be described below.

[実施例1]
本発明の第1実施例におけるラウンド演算の構成を図12に示す。実施例1のラウンド演算の処理シーケンスは、以下の通りである。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(5)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの(1)〜(5)の一連の処理をラウンド演算とする。
[Example 1]
The configuration of the round operation in the first embodiment of the present invention is shown in FIG. The processing sequence of the round operation according to the first embodiment is as follows.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Processing (MAT-XOR) for performing a linear conversion process on half of the rectangular state divided data and performing an exclusive OR operation (XOR) with the remaining half of the divided data
(4) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(5) with respect to a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (5) is a round operation.

この実施例1のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。   To summarize the round calculation process of the first embodiment, the data conversion unit of the data conversion apparatus executes the following round calculation. A non-linear conversion process and a shift process are performed on one divided data A of the divided data obtained by dividing the rectangular state into two, the divided data A is updated, and a linear conversion process is performed on the updated divided data A. The exclusive OR with the other divided data B is executed, the result is set as update data of the divided data B, and after the swap processing of the divided data AB, the exclusive data with the key data for the divided data A is exclusive. Perform logical sum processing. Such a round process is executed.

なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換処理(H−SUB)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。   In the embodiment, the left half half data of the rectangular state is selected and the main calculation process such as the nonlinear transformation process (H-SUB) is executed. However, the main calculation target is the right half. It is good also as composition to do. That is, in the processing described below, the same effect can be obtained by performing processing in which left and right data are exchanged.

各処理の詳細について説明する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
この処理は、先に図8を参照して説明した処理と同様の処理であり、長方形ステートの左半分の各バイトデータにバイト単位の非線形変換S(x)を施して値を更新する演算である。
図8(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a),if=i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
Details of each process will be described.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
This process is the same as the process described above with reference to FIG. 8 and is an operation for updating the value by applying a non-linear transformation S (x) in units of bytes to each byte data of the left half of the rectangular state. is there.
As shown in FIG. 8 (1), the relationship between the output b i in byte units after the conversion process and the input a i is
b i = S (a i ), if = i = 1 to 4, 9 to 12, 17 to 20, 25 to 28,
b i = a i , else
As described above, the right half divided data is not changed.

(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
このシフト処理(H−SHIFT)について、図13(A)を参照して説明する。長方形ステートの左半分の分割データに対してのみ、各行について異なるシフト量(0〜(n−1))のシフトを実行する。例えば、先に図2を参照して説明した正方ステートに対するシフト処理と同様、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
This shift process (H-SHIFT) will be described with reference to FIG. Only the divided data in the left half of the rectangular state is shifted by different shift amounts (0 to (n-1)) for each row. For example, similarly to the shift processing for the square state described above with reference to FIG. 2, the first line has no rotation shift, the second line is rotated right by 1 byte, the third line is 2 bytes, and the fourth line. Performs a rotation shift of 3 bytes.

(3)長方形ステートの半分の分割データに対する線形変換処理を行い、残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(MAT−XOR)
この線形変換および排他的論理和演算(MAT−XOR)について図13(B)を参照して説明する。
(3) Processing (MAT-XOR) for performing a linear conversion process on half of the rectangular state divided data and performing an exclusive OR operation (XOR) with the remaining half of the divided data
This linear transformation and exclusive OR operation (MAT-XOR) will be described with reference to FIG.

長方形ステートの左半分にある列ごとにデータをベクトルとみなして、予め設定した線形変換行列[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、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
For each column in the left half of the rectangular state, the data is regarded as a vector, and a 4 × 4 matrix operation is performed by applying a preset linear transformation matrix [M], and the result is assigned to the corresponding column in the right half. The data is subjected to exclusive OR (XOR), and the result is updated as divided data in the right half. The left half split data is not updated.
The relationship between the output b i in bytes and the input a i after the conversion process is
(3-1) Left half divided data
t (b i , b i + 8 , b i + 16 , b i + 24 ) = t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 1, 2, 3, 4,
(3-2) Right half of the divided data
t (b i + 4 , b i + 12 , b i + 20 , b i + 28 ) = [M t (a i , a i + 8 , a i + 16 , a i + 24 )] (XOR) t (a i + 4 , a i + 12 , a i + 20 , a i + 20 )
i = 1, 2, 3, 4,
It is. Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

すなわち、左半分の分割データの左から第1列データと予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行した結果を、右半分の左からの第1列データ(トータルでは左から5番目)として更新する。以下、同様に、左半分の分割データの左から第2列データと予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行した結果を、右半分の左からの第2列データ(トータルでは左から6番目)の更新データとする。以下同様の処理を行なう。   That is, 4 × 4 matrix operation is performed by applying the first column data and a preset linear transformation matrix [M] from the left of the left half of the divided data, and the result is obtained from the left of the right half of the divided data. The result of the exclusive OR (XOR) with the first column data (5th from the left in total) is updated as the first column data (5th from the left in the total) from the left of the right half. Hereinafter, similarly, the second column data and the preset linear transformation matrix [M] are applied from the left of the left half of the divided data, and a 4 × 4 matrix operation is performed. The result of the exclusive OR (XOR) with the second column data from the left (6th from the left in total) of the second column data from the left of the right half (6th from the left in total) Update data. Thereafter, the same processing is performed.

(4)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
このスワップ処理(SWAP)について図13(C)を参照して説明する。この処理は、図に示すように、長方形ステートにおける左半分と右半分を入れ替える処理である。
(4) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
This swap processing (SWAP) will be described with reference to FIG. This process is a process of switching the left half and the right half in the rectangular state as shown in the figure.

(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)は排他的論理和演算を示している。
(5) with respect to a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This process is the same as the process described above with reference to FIG. For each byte data of the left half of the rectangular state, it performs exclusive OR on each byte data round keys output from the key scheduling part [k i].
The relationship between the output b i in bytes and the input a i after the conversion process is
b i = a i (XOR) k i , if i = 1 to 4, 9 to 12, 17 to 20, 25 to 28,
b i = a i , else
As described above, the right half divided data is not changed.
It is. In the above formula, (XOR) indicates an exclusive OR operation.

本発明の第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つのラウンド演算処理として実行する。
The round operation in the first embodiment of the present invention is as shown in FIG.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Processing (MAT-XOR) for performing a linear conversion process on half of the rectangular state divided data and performing an exclusive OR operation (XOR) with the remaining half of the divided data
(4) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(5) with respect to a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This is constituted by a series of processes (1) to (5). That is, processing in the order of [H-SUB] → [H-SHIFT] → [MAT-XOR] → [SWAP] → [H-KADD] is executed as one round operation process.

このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例1におけるデータ拡散例について、図14を参照して説明する。   By repeatedly executing this round operation, input data is encrypted, hashed, and spread. An example of data diffusion in the first embodiment will be described with reference to FIG.

図14において、入力データの初期状態の長方形ステート200中の左上端のバイト単位データ201に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ201の構成ビットによって変化するバイト単位データを黒で示している。   In FIG. 14, attention is paid to the byte unit data 201 at the upper left end in the rectangular state 200 in the initial state of the input data (marked in black). In each round calculation process, the byte unit data that changes depending on the constituent bits of the byte unit data 201 is shown in black.

図から理解されるように、ラウンド演算の2ラウンド実行後には、左半分の分割データ全体のバイト単位データと、右半分の分割データの4つのバイト単位データの計20バイトのデータに対する影響が発生し、3ラウンドの終了時には長方形ステート200中、32バイトすべてのデータに影響が発生している。なお、図では、長方形ステート200中の左上端のバイト単位データ201の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As can be seen from the figure, after two rounds of round operation are performed, there is an effect on the total of 20 bytes of data including the byte unit data of the entire left half divided data and the four byte unit data of the right half divided data. At the end of the third round, all 32 bytes of data in the rectangular state 200 are affected. Although the drawing shows the spread of the influence of the upper left byte unit data 201 in the rectangular state 200, this spread of influence is the same for all byte data included in the left half.

次に、図15を参照して、同様の処理における長方形ステート200中の右半分の分割データの左上のバイト単位データ202、すなわち、最上位の行の左から5番目のデータについての影響について説明する。   Next, with reference to FIG. 15, the influence on the upper left byte unit data 202 of the right half divided data in the rectangular state 200 in the same process, that is, the fifth data from the left of the top row will be described. To do.

このアルゴリズムでは、第1ラウンド目の処理内にスワップ[SWAP]演算が必ず一度実行されるため、右側にあるデータは左側に移動する。いったん左側に移動すれば、先に図14を参照して説明した長方形ステートの左上端のバイト単位データ201に対する処理と同様の処理が行なわれることになる。従って、その後の3ラウンド後にはすべてのデータに影響が発生する。従ってこのバイト単位データ202についても、全体で4ラウンドあれば、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   In this algorithm, the swap [SWAP] operation is always executed once in the process of the first round, so the data on the right side moves to the left side. Once moved to the left side, the same processing as the processing for the byte unit data 201 at the upper left end of the rectangular state described above with reference to FIG. 14 is performed. Accordingly, all data are affected after the next three rounds. Therefore, if the byte unit data 202 has a total of four rounds, the influence affects all the byte unit data of the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

このように、本実施例では、
(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つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
Thus, in this embodiment,
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Processing (MAT-XOR) for performing a linear conversion process on half of the rectangular state divided data and performing an exclusive OR operation (XOR) with the remaining half of the divided data
(4) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(5) with respect to a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of processes (1) to (5), that is, [H-SUB] → [H-SHIFT] → [MAT-XOR] → [SWAP] → [H-KADD] Efficient stirring performance is achieved by executing it as a round calculation process.

本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図14、図15を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大4ラウンドを要する。   Consider the calculation cost in this embodiment. The calculation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is estimated. As described with reference to FIGS. 14 and 15, it takes up to four rounds for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state.

従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大4回ずつの非線形変換処理(H−SUB)、シフト処理(H−SHIFT)、線形変換および排他的論理和処理(MAT−XOR)、スワップ処理(SWAP)、鍵適用演算処理(H−KADD)が必要である。   Accordingly, until one byte unit data constituting the rectangular state affects all the bytes constituting the rectangular state, a maximum of four times of non-linear transformation processing (H-SUB) and shift processing (H-SHIFT). , Linear transformation and exclusive OR processing (MAT-XOR), swap processing (SWAP), and key application calculation processing (H-KADD) are required.

先に説明したように、演算処理を実行するためには、論理回路や演算処理プログラムなどが利用され、その構成によって必要とする演算回路や処理速度も異なることになる。従って絶対的な効率の評価は難しいが、上記の演算に必要となる論理回路におけるゲート数を1つの評価指標とすることが可能である。
例えば、先に説明したように、128ビットの正方ステートに対して設定される論理回路実装例として、各演算に必要とするゲート数は、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらのゲート数に相当する。
As described above, in order to execute the arithmetic processing, a logic circuit, an arithmetic processing program, or the like is used, and required arithmetic circuits and processing speeds differ depending on the configuration. Therefore, although it is difficult to evaluate absolute efficiency, the number of gates in the logic circuit necessary for the above calculation can be used as one evaluation index.
For example, as described above, as an example of logic circuit implementation set for a 128-bit square state, the number of gates required for each operation is
SUB calculation = about 3,200-4,800 gates,
MAT calculation = 800 to 1,200 gates,
KADD calculation = about 320 gates,
This corresponds to the number of gates.

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)と同等、
このように推定される。
The operation cost in processing for a 256-bit rectangular state can be converted as follows.
(1) The non-linear conversion process (H-SUB) for half of the rectangular state divided data is equivalent to the non-linear conversion process (SUB) for the 128-bit square state,
(2) Shift processing (H-SHIFT) for half of the rectangular state divided data does not need to pass through the gate, and the calculation cost = 0.
(3) A process (MAT-XOR) for performing a linear conversion process on half of the rectangular state divided data and performing an exclusive OR operation (XOR) with the remaining half of the divided data is a linear conversion for a 128-bit square state. Equivalent to processing (MAT) and key application calculation processing (KADD) combined,
(4) Swap processing (SWAP) for exchanging two half-divided data of the rectangular state does not need to pass through the gate, and the calculation cost = 0.
(5) with respect to a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD) are the key application operation for 128-bit square state of Equivalent to processing (KADD),
It is estimated in this way.

従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=4SUB+4MAT+8KADD
と見積もることができる。
上記ゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=4SUB+4MAT+8KADD
=19Kゲート〜27Kゲート
となる。
Therefore, in this embodiment, the operation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is:
Calculation cost = 4SUB + 4MAT + 8KADD
Can be estimated.
The number of gates, i.e.
SUB calculation = about 3,200-4,800 gates,
MAT calculation = 800 to 1,200 gates,
KADD calculation = about 320 gates,
When calculating the calculation cost based on the number of gates corresponding to these calculations,
Calculation cost = 4SUB + 4MAT + 8KADD
= 19K gate to 27K gate.

これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。   This is superior to the calculation cost (26K gate to 38K gate) required in the conversion processing in the algorithm [Rijndael] described as the rectangular state processing example, and the processing according to this embodiment is executed. By doing so, the diffusion for the rectangular state becomes more efficient. Specifically, it is possible to improve the processing speed and downsize the apparatus, and it is possible to increase the security level and confidentiality level of the encrypted data by improving the diffusion performance.

[実施例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)の一連の処理をラウンド演算とする。
[Example 2]
Next, FIG. 16 shows the configuration of the round operation in the second embodiment of the present invention. The processing sequence of the round operation of the second embodiment is as follows.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (6) is a round operation.

この実施例2のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。   To summarize the round operation processing of the second embodiment, the data conversion unit of the data conversion apparatus executes the following round operation. A non-linear transformation process and a shift process are performed on one piece of divided data A of the divided data obtained by dividing the rectangular state into two parts, and further, a linear transformation process is performed to update the divided data A. The exclusive OR of the data A and the other divided data B is executed, the result is set as update data of the divided data B, and after the swap processing of the divided data AB, the key data for the divided data A Execute exclusive OR processing. Such a round process is executed.

なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換処理(H−SUB)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。   In the embodiment, the left half half data of the rectangular state is selected and the main calculation process such as the nonlinear transformation process (H-SUB) is executed. However, the main calculation target is the right half. It is good also as composition to do. That is, in the processing described below, the same effect can be obtained by performing processing in which left and right data are exchanged.

各処理の詳細について説明する。
(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)、
(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
これらの処理は、実施例1において説明した処理と同様の処理である。
Details of each process will be described.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
These processes are the same as the processes described in the first embodiment.

(1)長方形ステートの半分の分割データに対する非線形変換処理(H−SUB)は、図8(1)に示すように、変換処理後のバイト単位の出力bと入力aの関係は、
=S(a),if=i=1〜4,9〜12,17〜20,25〜28,
=a,else
上記のように右半分の分割データは変更しない。
(1) Nonlinear conversion process on a half data segment of the rectangular state (H-SUB), as shown in FIG. 8 (1), the relationship between the output b i and the input a i of bytes after the conversion process,
b i = S (a i ), if = i = 1 to 4, 9 to 12, 17 to 20, 25 to 28,
b i = a i , else
As described above, the right half divided data is not changed.

(2)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)は、図13(A)を参照して説明したように、各行について異なるシフト量(0〜(n−1))のシフトを実行する。例えば、先に図2を参照して説明した正方ステートに対するシフト処理と同様、一行目ローテーションシフトなし、二行目は1バイト分右方向へローテーションシフト、三行目は2バイト分、四行目は3バイト分のローテーションシフトを行う。   (2) The shift process (H-SHIFT) for the half-divided data of the rectangular state is a shift of different shift amounts (0 to (n-1)) for each row as described with reference to FIG. Execute. For example, similarly to the shift processing for the square state described above with reference to FIG. 2, the first line has no rotation shift, the second line is rotated right by 1 byte, the third line is 2 bytes, and the fourth line. Performs a rotation shift of 3 bytes.

(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]を適用した線形変換を実行し、右半分の分割データは変更しない。
なお、()は、行列における行と列を入れ替えた転置行列を示している。
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
This process is the same as the process described above with reference to FIG. 8 (2). For each byte data of the left half of the rectangular state, 4 data for each column is regarded as a vector and 4 × 4 This is an operation for updating the value by performing an operation on the matrix [M].
The relationship between the output b i in bytes and the input a i after the conversion process is
t (b i , b i + 8 , b i + 16 , b i + 24 ) = M t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 1, 2, 3, 4,
t (b i , b i + 8 , b i + 16 , b i + 24 ) = t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 5, 6, 7, 8,
As described above, linear transformation applying the matrix [M] is performed on each byte data in the left half of the rectangular state, and the divided data in the right half is not changed.
Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

(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、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
(4) Processing (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data
This exclusive OR operation (XOR) processing will be described with reference to FIG. XOR is performed on one column data in the left half of the rectangular state and the corresponding data column in the right half, and the result is updated as divided data in the right half. The left half split data is not updated.
The relationship between the output b i in bytes and the input a i after the conversion process is
(3-1) Left half divided data
t (b i , b i + 8 , b i + 16 , b i + 24 ) = t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 1, 2, 3, 4,
(3-2) Right half of the divided data
t (b i + 4 , b i + 12 , b i + 20 , b i + 28 ) = t (a i , a i + 8 , a i + 16 , a i + 24 ) (XOR) t (a i + 4 , a i + 12 , a i + 20 , a i + 20 )
i = 1, 2, 3, 4,
It is. Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

すなわち、左半分の分割データの左から第1列データと、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行して、その結果を右半分の左からの第1列データ(トータルでは左から5番目)の更新データとする。以下、同様に、左半分の分割データの左から第2列データと、右半分の分割データの左からの第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行して、その結果を右半分の左から第2列データ(トータルでは左から6番目)の更新データとする。以下同様の処理を行なう。   That is, exclusive OR (XOR) of the first column data from the left of the left half of the divided data and the first column data from the left of the right half of the divided data (the fifth from the left in total) is executed. The result is the update data of the first column data from the left of the right half (the fifth from the left in total). Hereinafter, similarly, the exclusive OR (XOR) of the second column data from the left of the left half of the divided data and the second column data from the left of the right half of the divided data (sixth from the left in total) The result is updated data of the second column data from the left of the right half (6th from the left in total). Thereafter, the same processing is performed.

(5)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
このスワップ処理(SWAP)は、先に説明した実施例1の処理と同様の処理であり、図13(C)に示すように、長方形ステートにおける左半分と右半分を入れ替える処理である。
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
This swap process (SWAP) is a process similar to the process of the first embodiment described above, and is a process of exchanging the left half and the right half in the rectangular state as shown in FIG. 13C.

(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)は排他的論理和演算を示している。
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This process is earlier referring to the same processing as described with FIG. 8 (3), for each byte data of the left half of the rectangular state, the round key is output from the key scheduling part [k i] Perform exclusive OR on each byte data.
The relationship between the output b i in bytes and the input a i after the conversion process is
b i = a i (XOR) k i , if i = 1 to 4, 9 to 12, 17 to 20, 25 to 28,
b i = a i , else
As described above, the right half divided data is not changed.
It is. In the above formula, (XOR) indicates an exclusive OR operation.

本発明の第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つのラウンド演算処理として実行する。
The round operation in the second embodiment of the present invention is as shown in FIG.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This is constituted by a series of processes (1) to (6). That is, the processing in the order of [H-SUB] → [H-SHIFT] → [H-MAT] → [XOR] → [SWAP] → [H-KADD] is executed as one round operation process.

このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例2におけるデータ拡散例について、図18を参照して説明する。   By repeatedly executing this round operation, input data is encrypted, hashed, and spread. An example of data diffusion in the second embodiment will be described with reference to FIG.

図18において、入力データの初期状態の長方形ステート220中の左上端のバイト単位データ221に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ221の構成ビットによって変化するバイト単位データを黒で示している。   In FIG. 18, attention is paid to the byte unit data 221 at the upper left end in the rectangular state 220 in the initial state of the input data (marked in black). In each round calculation process, the byte unit data that changes depending on the constituent bits of the byte unit data 221 is shown in black.

図から理解されるように、ラウンド演算の2ラウンド終了時には、長方形ステートの全てのバイト単位データに影響が発生している。なお、図では、長方形ステート220中の左上端のバイト単位データ221の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As understood from the figure, at the end of the second round of the round operation, all the byte unit data in the rectangular state are affected. The drawing shows the spread of the influence of the byte unit data 221 at the upper left corner in the rectangular state 220. The spread of this influence is the same for all byte data included in the left half.

次に、図19を参照して、本実施例2の処理における長方形ステート220中の右半分の分割データの左上のバイト単位データ222、すなわち、最上位の行の左から5番目のデータについての影響について説明する。   Next, referring to FIG. 19, the upper left byte unit data 222 of the right half of the divided data in the rectangular state 220 in the processing of the second embodiment, that is, the fifth data from the left of the uppermost row. Explain the impact.

このアルゴリズムでは、先に説明した実施例1と同様、第1ラウンド目の処理内にスワップ[SWAP]演算が必ず一度実行されるため、右側にあるデータは左側に移動する。いったん左側に移動すれば、先に図18を参照して説明した長方形ステートの左上端のバイト単位データ221に対する処理と同様の処理が行なわれることになる。従って、その後の2ラウンド後にはすべてのデータに影響が発生する。従ってこのバイト単位データ222についても、全体で3ラウンドあれば、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。このように実施例2は、実施例1よりもさらに効率的な攪拌性能を達成している。   In this algorithm, as in the first embodiment described above, the swap [SWAP] operation is always executed once in the process of the first round, so the data on the right side moves to the left side. Once moved to the left side, the same processing as the processing for the byte unit data 221 at the upper left end of the rectangular state described above with reference to FIG. 18 is performed. Accordingly, all data are affected after the next two rounds. Accordingly, if there are three rounds in total for this byte unit data 222, the influence will affect all byte unit data of the rectangle. This is a property that can be similarly applied to all byte data included in the right half. Thus, Example 2 achieves more efficient stirring performance than Example 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つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
Thus, in this embodiment,
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (6), that is, [H-SUB] → [H-SHIFT] → [H-MAT] → [XOR] → [SWAP] → [H-KADD] The efficient agitation performance is achieved by executing the process as one round calculation process.

本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図18、図19を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大3ラウンドを要する。   Consider the calculation cost in this embodiment. The calculation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is estimated. As described with reference to FIGS. 18 and 19, it takes a maximum of three rounds for one byte unit data constituting the rectangular state to affect all bytes constituting the rectangular state.

従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大3回ずつの非線形変換処理(H−SUB)、シフト処理(H−SHIFT)、線形変換処理(H−MAT)、排他的論理和処理(XOR)、スワップ処理(SWAP)、鍵適用演算処理(H−KADD)が必要である。   Accordingly, until one byte unit data constituting the rectangular state affects all the bytes constituting the rectangular state, nonlinear conversion processing (H-SUB) and shift processing (H-SHIFT) are performed three times at maximum. , Linear transformation processing (H-MAT), exclusive OR processing (XOR), swap processing (SWAP), and key application calculation processing (H-KADD) are required.

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)と同等、
このように推定される。
The operation cost in processing for a 256-bit rectangular state can be converted as follows.
(1) The non-linear conversion process (H-SUB) for half of the rectangular state divided data is equivalent to the non-linear conversion process (SUB) for the 128-bit square state,
(2) Shift processing (H-SHIFT) for half of the rectangular state divided data does not need to pass through the gate, and the calculation cost = 0.
(3) The linear transformation process (H-MAT) for the half-divided data of the rectangular state is equivalent to the linear transformation process (MAT) for the 128-bit square state,
(4) A process (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data is equivalent to a key application operation process (KADD) for a 128-bit square state.
(5) Swap processing (SWAP) for exchanging the two half-divided data of the rectangular state does not need to pass through the gate, and the calculation cost = 0.
(6) to the half data segment of the rectangular state, and a round key [k i] performing exclusive OR (XOR) processing (H-KADD) is the key application operation for 128-bit square state of Equivalent to processing (KADD),
It is estimated in this way.

従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=3SUB+3MAT+6KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=3SUB+3MAT+6KADD
=14Kゲート〜20Kゲート
となる。
Therefore, in this embodiment, the operation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is:
Calculation cost = 3SUB + 3MAT + 6KADD
Can be estimated.
The number of gates explained earlier, ie
SUB calculation = about 3,200-4,800 gates,
MAT calculation = 800 to 1,200 gates,
KADD calculation = about 320 gates,
When calculating the calculation cost based on the number of gates corresponding to these calculations,
Calculation cost = 3SUB + 3MAT + 6KADD
= 14K gate to 20K gate.

これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。   This is superior to the calculation cost (26K gate to 38K gate) required in the conversion processing in the algorithm [Rijndael] described as the rectangular state processing example, and the processing according to this embodiment is executed. By doing so, the diffusion for the rectangular state becomes more efficient. Specifically, it is possible to improve the processing speed and downsize the apparatus, and it is possible to increase the security level and confidentiality level of the encrypted data by improving the diffusion performance.

[実施例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)の一連の処理をラウンド演算とする。
[Example 3]
Next, FIG. 20 shows the configuration of the round operation in the third embodiment of the present invention. The processing sequence of the round operation of the third embodiment is as follows.
(1) The result of performing nonlinear transformation (SUB) on data for each column of half-divided data in the rectangular state is regarded as a vector, and a linear transformation matrix [M] is applied to perform 4 × 4 matrix operation to perform linear transformation. Is executed, and the result is subjected to exclusive OR (XOR) with the data in the corresponding column in the right half, and the divided data in the right half is updated with the result. SUB-MAT-XOR),
(2) Swap process (SWAP) for exchanging the two half-divided data of the rectangular state
(3) Shift processing (H-SHIFT) for half divided data of the rectangular state,
(4) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (4) is a round operation.

この実施例3のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。   To summarize the round operation processing of the third embodiment, the data conversion unit of the data conversion device executes the following round operation. A non-linear transformation process and a linear transformation process are executed on one divided data A of the divided data obtained by dividing the rectangular state into two, and an exclusive OR with the other divided data B is executed. The data is set as update data for B, and after the swap process for the divided data AB, the shift process for the divided data A and the exclusive OR process of the key data are executed. Such a round process is executed.

なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。   In the embodiment, a description will be given of a configuration in which main data processing such as nonlinear transformation & linear transformation & exclusive OR processing (SUB-MAT-XOR) is performed by selecting the divided data of the left half of the rectangular state. The target for executing the main operation may be configured to be the right half. That is, in the processing described below, the same effect can be obtained by performing processing in which left and right data are exchanged.

上記処理中、
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)
これらの処理は、先に説明した実施例1,2の処理と同様であるので説明を省略する。
During the above process,
(2) Swap process (SWAP) for exchanging the two half-divided data of the rectangular state
(3) Shift processing (H-SHIFT) for half divided data of the rectangular state,
(4) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
Since these processes are the same as the processes of the first and second embodiments described above, description thereof will be omitted.

(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) Nonlinear transformation & linear transformation & exclusive OR processing (SUB-MAT-XOR) will be described with reference to FIG.
The result of performing non-linear transformation (SUB) on the data for each column of half-divided data in the rectangular state is regarded as a vector, and the linear transformation matrix [M] is applied to perform a 4 × 4 matrix operation to execute the linear transformation. Then, the result is subjected to exclusive OR (XOR) with the data in the corresponding column in the right half, and the divided data in the right half is updated with the result. The left half split data is not updated.
The relationship between the output b i in bytes and the input a i after the conversion process is
(1-1) Left half divided data
t (b i , b i + 8 , b i + 16 , b i + 24 ) = t (a i , a i + 8 , a i + 16 , a i + 24 )
i = 1, 2, 3, 4,
(1-2) Right half of the divided data
t (b i + 4 , b i + 12 , b i + 20 , b i + 28 ) = [M t (S (a i ), S (a i + 8 ), S (a i + 16 ), S (a i + 24 ))] (XOR) t (a i + 4 , ai + 12 , ai + 20 , ai + 28 )
i = 1, 2, 3, 4,
It is. Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

すなわち、左半分の分割データの左から第1列データに非線形変換(SUB)を施した後、予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行した結果を、右半分の左からの第1列データ(トータルでは左から5番目)として更新する。以下、同様に、左半分の分割データの左から第2列データに非線形変換(SUB)を施した後、予め設定した線形変換行列[M]を適用して4×4の行列演算を施して、その結果と、右半分の分割データの左からの第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行して、その結果を右半分の左からの第2列データ(トータルでは左から6番目)の更新データとする。以下同様の処理を行なう。   That is, after performing non-linear transformation (SUB) on the first column data from the left of the left half of the divided data, a 4 × 4 matrix operation is performed by applying a preset linear transformation matrix [M], and the result And the result of the exclusive OR (XOR) operation with the first column data from the left of the divided data in the right half (5th from the left in the total), the first column data from the left of the right half (total Then, it is updated as the fifth from the left). Similarly, after performing non-linear transformation (SUB) on the second column data from the left of the left half of the divided data, 4 × 4 matrix operation is performed by applying a preset linear transformation matrix [M]. The exclusive OR (XOR) of the result and the second column data from the left of the divided data of the right half (6th from the left in total) is executed, and the result is obtained from the left of the right half. It is assumed that the update data is two-column data (sixth from the left in total). Thereafter, the same processing is performed.

本発明の第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つのラウンド演算処理として実行する。
The round operation in the third embodiment of the present invention is as shown in FIG.
(1) The result of performing nonlinear transformation (SUB) on data for each column of half-divided data in the rectangular state is regarded as a vector, and a linear transformation matrix [M] is applied to perform 4 × 4 matrix operation to perform linear transformation. Is executed, and the result is subjected to exclusive OR (XOR) with the data in the corresponding column in the right half, and the divided data in the right half is updated with the result. SUB-MAT-XOR),
(2) Swap process (SWAP) for exchanging the two half-divided data of the rectangular state
(3) Shift processing (H-SHIFT) for half divided data of the rectangular state,
(4) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This is constituted by a series of processes (1) to (4). That is, processing in the order of [SUB-MAT-XOR] → [SWAP] → [H-SHIFT] → [H-KADD] is executed as one round operation process.

このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例3におけるデータ拡散例について、図22を参照して説明する。   By repeatedly executing this round operation, input data is encrypted, hashed, and spread. An example of data diffusion in the third embodiment will be described with reference to FIG.

図22において、入力データの初期状態の長方形ステート230中の左上端のバイト単位データ231に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ231の構成ビットによって変化するバイト単位データを黒で示している。   In FIG. 22, attention is paid to the byte unit data 231 at the upper left corner in the rectangular state 230 in the initial state of the input data (marked in black). In each round calculation process, the byte unit data that changes depending on the constituent bits of the byte unit data 231 is shown in black.

図から理解されるように、ラウンド演算の2ラウンドの処理終了後には長方形ステートの左半分の全てのバイト単位データと、右半分の4つのバイト単位データ、計20バイトのデータに影響が発生し、3ラウンドの終了時には長方形ステートの全てのバイト単位データに影響が発生している。なお、図では、長方形ステート230中の左上端のバイト単位データ231の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As can be seen from the figure, after the completion of the two rounds of the round operation, all the byte unit data in the left half of the rectangular state and the four byte unit data in the right half are affected. At the end of the third round, all byte-unit data in the rectangular state is affected. In the figure, the influence of the byte unit data 231 at the upper left corner in the rectangular state 230 is spread. The spread of the influence is the same for all byte data included in the left half.

次に、図23を参照して、本実施例3の処理における長方形ステート230中の右半分の分割データの左上のバイト単位データ232、すなわち、最上位の行の左から5番目のデータについての影響について説明する。   Next, with reference to FIG. 23, the upper left byte unit data 232 of the right half divided data in the rectangular state 230 in the processing of the third embodiment, that is, the fifth data from the left of the uppermost row. Explain the impact.

このアルゴリズムでは、先に説明した実施例1,2と同様、第1ラウンド目の処理内にスワップ[SWAP]演算が必ず一度実行されるため、右側にあるデータは左側に移動する。いったん左側に移動すれば、先に図22を参照して説明した長方形ステートの左上端のバイト単位データ231に対する処理と同様の処理が行なわれることになる。従って、その後の3ラウンド後にはすべてのデータに影響が発生する。従ってこのバイト単位データ232についても、全体で4ラウンドあれば、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   In this algorithm, as in the first and second embodiments described above, the swap [SWAP] operation is always executed once in the process of the first round, so the data on the right side moves to the left side. Once moved to the left side, the same processing as the processing for the byte unit data 231 at the upper left end of the rectangular state described above with reference to FIG. 22 is performed. Accordingly, all data are affected after the next three rounds. Therefore, if this byte unit data 232 also has a total of four rounds, the influence will affect all the byte unit data of the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

さらにこの実施例3の方式の場合、非線形変換処理(SUB)や行列[M]を適用した線形変換処理(MAT)のような個別の演算処理における入力情報が出力情報によって上書きする処理を伴わない。すなわち、図20に示すラウンド演算処理の(1)の非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)では、分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行するが、この結果データによる分割データAの更新は行われない。   Further, in the case of the method of the third embodiment, input information in individual calculation processing such as non-linear conversion processing (SUB) and linear conversion processing (MAT) applying matrix [M] is not accompanied by processing for overwriting output information. . That is, in (1) non-linear transformation & linear transformation & exclusive OR processing (SUB-MAT-XOR) of round operation processing shown in FIG. 20, non-linear transformation processing, shift processing and linear transformation are performed on the divided data A. Although the process is executed, the divided data A is not updated by the result data.

従って、例えば、図20に示すラウンド演算を繰り返して実行して暗号結果を生成し、その暗号結果を復号するアルゴリズムにおいて、非線形変換や行列演算の逆演算を用いることなくデータを復元することが可能となる。従って、データ置換処理全体の逆関数を実装する際にも非線形変換処理(SUB)や行列[M]を適用した線形変換処理(MAT)の逆関数を実装することが不要となり、実装上、装置の小型化やコスト安をもたらす効果がある。このように本実施例3は、先に説明した実施例1と同等の攪拌性能を保持するとともに優れた実装上の特徴を有している。   Therefore, for example, the round operation shown in FIG. 20 is repeatedly executed to generate a cipher result, and in the algorithm for decrypting the cipher result, data can be restored without using non-linear transformation or inverse operation of matrix operation It becomes. Therefore, it is not necessary to implement the inverse function of the nonlinear transformation process (SUB) or the linear transformation process (MAT) applying the matrix [M] even when the inverse function of the entire data replacement process is implemented. This has the effect of reducing the size and cost. As described above, the third embodiment has the same mounting performance as the first embodiment described above and has excellent mounting characteristics.

本実施例では、
(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つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
In this example,
(1) The result of performing nonlinear transformation (SUB) on data for each column of half-divided data in the rectangular state is regarded as a vector, and a linear transformation matrix [M] is applied to perform 4 × 4 matrix operation to perform linear transformation. Is executed, and the result is subjected to exclusive OR (XOR) with the data in the corresponding column in the right half, and the divided data in the right half is updated with the result. SUB-MAT-XOR),
(2) Swap process (SWAP) for exchanging the two half-divided data of the rectangular state
(3) Shift processing (H-SHIFT) for half divided data of the rectangular state,
(4) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of processes (1) to (4), that is, processes in the order of [SUB-MAT-XOR] → [SWAP] → [H-SHIFT] → [H-KADD] As a result, efficient stirring performance is achieved.

本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図22、図23を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大4ラウンドを要する。   Consider the calculation cost in this embodiment. The calculation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is estimated. As described with reference to FIGS. 22 and 23, it takes up to four rounds for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state.

従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大4回ずつの非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)、スワップ処理(SWAP)、シフト処理(H−SHIFT)、鍵適用演算処理(H−KADD)が必要である。   Accordingly, until one byte unit data constituting the rectangular state affects all bytes constituting the rectangular state, a maximum of four times of non-linear transformation & linear transformation & exclusive OR processing (SUB-MAT-). XOR), swap processing (SWAP), shift processing (H-SHIFT), and key application calculation processing (H-KADD) are required.

256ビットの長方形ステートに対する処理における演算のコストは以下のように換算できる。
(1)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)は、128ビットの正方ステートに対する非線形変換処理(SUB)と線形変換処理(MAT)と鍵適用演算処理(KADD)を全て行なう演算コストに相当する。
(2)長方形ステートの2つの半分の分割データを入れ替えるスワップ処理(SWAP)はゲートを通過する必要がなく演算コスト=0、
(3)長方形ステートの半分の分割データに対するシフト処理(H−SHIFT)はゲートを通過する必要がなく演算コスト=0、
(4)長方形ステートの半分の分割データに対して、ラウンド鍵[k]を適用して排他的論理和(XOR)を行う処理(H−KADD)は128ビットの正方ステートに対する鍵適用演算処理(KADD)と同等、
このように推定される。
The operation cost in processing for a 256-bit rectangular state can be converted as follows.
(1) Non-linear transformation & linear transformation & exclusive OR processing (SUB-MAT-XOR) is a non-linear transformation processing (SUB), linear transformation processing (MAT) and key application calculation processing (KADD) for a 128-bit square state. This corresponds to the calculation cost for performing all of the above.
(2) The swap process (SWAP) for exchanging the two half-divided data of the rectangular state does not need to pass through the gate, and the calculation cost = 0.
(3) The shift processing (H-SHIFT) for the half-divided data of the rectangular state does not need to pass through the gate, and the calculation cost = 0.
(4) relative to the rectangular state of a half data segment and a round key [k i] performing exclusive OR (XOR) processing (H-KADD) the key application operation process of 128 bits for square state Equivalent to (KADD),
It is estimated in this way.

従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=4SUB+4MAT+8KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=4SUB+4MAT+8KADD
=19Kゲート〜27Kゲート
となる。
Therefore, in this embodiment, the operation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is:
Calculation cost = 4SUB + 4MAT + 8KADD
Can be estimated.
The number of gates explained earlier, ie
SUB calculation = about 3,200-4,800 gates,
MAT calculation = 800 to 1,200 gates,
KADD calculation = about 320 gates,
When calculating the calculation cost based on the number of gates corresponding to these calculations,
Calculation cost = 4SUB + 4MAT + 8KADD
= 19K gate to 27K gate.

これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。   This is superior to the calculation cost (26K gate to 38K gate) required in the conversion processing in the algorithm [Rijndael] described as the rectangular state processing example, and the processing according to this embodiment is executed. By doing so, the diffusion for the rectangular state becomes more efficient. Specifically, it is possible to improve the processing speed and downsize the apparatus, and it is possible to increase the security level and confidentiality level of the encrypted data by improving the diffusion performance.

[実施例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)の一連の処理をラウンド演算とする。
[Example 4]
Next, FIG. 24 shows the configuration of the round operation in the fourth embodiment of the present invention. The processing sequence of the round operation of the fourth embodiment is as follows.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing for performing exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data (XOR2)
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (6) is a round operation.

この実施例4のラウンド演算処理を要約すると、データ変換装置のデータ変換部は以下のラウンド演算を実行することになる。長方形ステートを2分割した分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行する。このようなラウンド処理を実行する。   To summarize the round operation processing of the fourth embodiment, the data conversion unit of the data conversion device executes the following round operation. A non-linear transformation process, a shift process and a linear transformation process are executed on one divided data A of the divided data obtained by dividing the rectangular state into two, and an exclusive OR with the other divided data B is executed. The result is set as update data of the divided data A, and after the swap processing of the divided data AB, exclusive OR processing with the key data for the divided data A is executed. Such a round process is executed.

なお、実施例においては長方形ステートの左半分の分割データを選択して非線形変換処理(H−SUB)などの主要演算処理を実行する構成として説明するが、主要演算を実行する対象は右半分とする構成としてもよい。すなわち、以下で説明する処理において、左右のデータを入れ替えた処理を行なっても効果は同様である。   In the embodiment, the left half half data of the rectangular state is selected and the main calculation process such as the nonlinear transformation process (H-SUB) is executed. However, the main calculation target is the right half. It is good also as composition to do. That is, in the processing described below, the same effect can be obtained by performing processing in which left and right data are exchanged.

この実施例4のアルゴリズムは、先に図16を参照して説明した実施例2のアルゴリズムにおける(1)〜(6)の処理中、(1)非線形変換処理(H−SUB)、(2)シフト処理(H−SHIFT)、(3)線形変換処理(H−MAT)と、(5)スワップ処理(SWAP)、(6)鍵適用処理(H−KADD)の各処理は同じであり、(4)の処理のみが異なる。   The algorithm of the fourth embodiment includes (1) nonlinear conversion processing (H-SUB) and (2) during the processing of (1) to (6) in the algorithm of the second embodiment described above with reference to FIG. The shift process (H-SHIFT), (3) linear conversion process (H-MAT), (5) swap process (SWAP), (6) key application process (H-KADD) are the same, ( Only the processing of 4) is different.

実施例2における(4)排他的論理和演算(XOR)では、長方形ステートの右半分の分割データを更新し、左半分の分割データは更新しないという処理であったが、本実施例4では、長方形ステートの右半分の分割データは更新せず、左半分の分割データを更新する処理を実行する。   In (4) exclusive OR operation (XOR) in the second embodiment, the right half of the rectangular state is updated and the left half of the divided data is not updated. In the fourth embodiment, The process of updating the left half of the divided data is executed without updating the right half of the rectangular state.

本実施例における(4)長方形ステートの半分の分割データと残り半分の分割データとの排他的論理和演算(XOR)を行なう処理(XOR2)について、図25を参照して説明する。   (4) Processing (XOR2) for performing an exclusive OR operation (XOR2) of the divided data of the half of the rectangular state and the remaining half of the divided data in this embodiment will be described with reference to FIG.

長方形ステートの左半分の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、
である。なお、()は、行列における行と列を入れ替えた転置行列を示している。
An exclusive OR (XOR) is performed on one column data in the left half of the rectangular state and the corresponding data column in the right half, and the result is updated as divided data in the left half. The right half split data is not updated.
The relationship between the output b i in bytes and the input a i after the conversion process is
(3-1) Left half divided data
t (b i , b i + 8 , b i + 16 , b i + 24 ) = t (a i , a i + 8 , a i + 16 , a i + 24 ) (XOR) t (a i + 4 , a i + 12 , a i + 20 , a i + 28 )
i = 1, 2, 3, 4,
(3-2) Right half of the divided data
t (b i + 4 , b i + 12 , b i + 20 , b i + 28 ) = t (a i , a i + 12 , a i + 20 , a i + 28 )
i = 1, 2, 3, 4,
It is. Note that t () indicates a transposed matrix in which the rows and columns in the matrix are interchanged.

すなわち、左半分の分割データの左から第1列データと、右半分の分割データの左からの第1列データ(トータルでは左から5番目)との排他的論理和(XOR)を実行して、その結果を左半分の左から第1列データの更新データとする。以下、同様に、左半分の分割データの左から第2列データと、右半分の分割データの左から第2列データ(トータルでは左から6番目)との排他的論理和(XOR)を実行して、その結果を左半分の左からの第2列データの更新データとする。以下同様の処理を行なう。   That is, exclusive OR (XOR) of the first column data from the left of the left half of the divided data and the first column data from the left of the right half of the divided data (the fifth from the left in total) is executed. The result is the update data of the first column data from the left of the left half. Similarly, the exclusive OR (XOR) of the second column data from the left of the left half of the divided data and the second column data (the sixth from the left in total) of the right half of the divided data is executed. Then, the result is set as update data of the second column data from the left of the left half. Thereafter, the same processing is performed.

本発明の第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つのラウンド演算処理として実行する。
The round operation in the fourth embodiment of the present invention is as shown in FIG.
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing for performing exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data (XOR2)
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This is constituted by a series of processes (1) to (6). In other words, the processing in the order of [H-SUB] → [H-SHIFT] → [H-MAT] → [XOR2] → [SWAP] → [H-KADD] is executed as one round operation process.

このラウンド演算を繰り返し実行することで、入力データの暗号化やハッシュ処理や拡散処理を行なう。この実施例4におけるデータ拡散例について、図26を参照して説明する。   By repeatedly executing this round operation, input data is encrypted, hashed, and spread. An example of data diffusion in the fourth embodiment will be described with reference to FIG.

図26において、入力データの初期状態の長方形ステート240中の左上端のバイト単位データ241に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ241の構成ビットによって変化するバイト単位データを黒で示している。   In FIG. 26, attention is focused on the upper left byte unit data 241 in the rectangular state 240 of the initial state of input data (marked in black). In each round calculation process, the byte unit data that changes depending on the constituent bits of the byte unit data 241 is shown in black.

図から理解されるように、ラウンド演算の4ラウンド終了時には、長方形ステートの全てのバイト単位データに影響が発生している。なお、図では、長方形ステート240中の左上端のバイト単位データ24の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As understood from the figure, at the end of the fourth round of the round operation, all the byte unit data in the rectangular state are affected. In the figure, the spread of the influence of the byte unit data 24 at the upper left corner in the rectangular state 240 is shown. The spread of the influence is the same for all the byte data included in the left half.

また、右半分に含まれるデータの影響については、先に説明した実施例1〜3と同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図26に示すシーケンスで実行され、結果として、4+1=5ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   As for the influence of the data included in the right half, as in the first to third embodiments described above, the swap [SWAP] operation is always executed once in one round process, and the left half is divided. When the data and the right half of the divided data are exchanged and the right data is once moved to the left, the subsequent processing is executed in the sequence shown in FIG. 26. As a result, at the end of 4 + 1 = 5 rounds, there is an effect. Affects all byte data in the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

この実施例4の特徴としては、あるラウンドに入力される半分の分割データは、前のラウンドで更新されることがないため、適切にデータを保存しておけば、前のラウンドの処理が終わるのを待つことなく、次のラウンドの処理をスタートさせることが可能である点である。この処理によって高速な処理が可能となる。具体的には排他的論理和[XOR2]の直前までは並列して処理することが可能な構成である。   As a feature of the fourth embodiment, half of the divided data input in a certain round is not updated in the previous round. Therefore, if the data is properly stored, the processing of the previous round is completed. The process of the next round can be started without waiting for this. This processing enables high-speed processing. Specifically, the configuration is such that processing can be performed in parallel until just before the exclusive OR [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つのラウンド演算処理として実行することで効率的な攪拌性能を達成している。
Thus, in this embodiment,
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing for performing exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data (XOR2)
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (6), that is, [H-SUB] → [H-SHIFT] → [H-MAT] → [XOR2] → [SWAP] → [H-KADD] The efficient agitation performance is achieved by executing the process as one round calculation process.

本実施例における演算コストについて考察する。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかった演算コストを見積もる。図26を参照して説明したように、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに最大5ラウンドを要する。   Consider the calculation cost in this embodiment. The calculation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is estimated. As described with reference to FIG. 26, it takes up to 5 rounds for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state.

従って、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでに、最大5回ずつの非線形変換処理(H−SUB)、シフト処理(H−SHIFT)、線形変換処理(H−MAT)、排他的論理和処理(XOR2)、スワップ処理(SWAP)、鍵適用演算処理(H−KADD)が必要である。   Accordingly, until one byte unit data composing the rectangular state affects all the bytes composing the rectangular state, a maximum of five times of nonlinear conversion processing (H-SUB) and shift processing (H-SHIFT). , Linear conversion processing (H-MAT), exclusive OR processing (XOR2), swap processing (SWAP), and key application calculation processing (H-KADD) are required.

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)と同等、
このように推定される。
The operation cost in processing for a 256-bit rectangular state can be converted as follows.
(1) The non-linear conversion process (H-SUB) for half of the rectangular state divided data is equivalent to the non-linear conversion process (SUB) for the 128-bit square state,
(2) Shift processing (H-SHIFT) for half of the rectangular state divided data does not need to pass through the gate, and the calculation cost = 0.
(3) The linear transformation process (H-MAT) for the half-divided data of the rectangular state is equivalent to the linear transformation process (MAT) for the 128-bit square state,
(4) A process (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data is equivalent to a key application operation process (KADD) for a 128-bit square state.
(5) Swap processing (SWAP) for exchanging the two half-divided data of the rectangular state does not need to pass through the gate, and the calculation cost = 0.
(6) to the half data segment of the rectangular state, and a round key [k i] performing exclusive OR (XOR) processing (H-KADD) is the key application operation for 128-bit square state of Equivalent to processing (KADD),
It is estimated in this way.

従って、本実施例において、長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=5SUB+5MAT+10KADD
と見積もることができる。
先に説明したゲート数、すなわち、
SUB演算=3,200〜4,800ゲート程度、
MAT演算=800〜1,200ゲート程度、
KADD演算=320ゲート程度、
これらの演算対応ゲート数に基づいて、演算コストを算出すると、
演算コスト=5SUB+5MAT+10KADD
=23Kゲート〜33Kゲート
となる。
Therefore, in this embodiment, the operation cost required for one byte unit data constituting the rectangular state to affect all the bytes constituting the rectangular state is:
Calculation cost = 5SUB + 5MAT + 10KADD
Can be estimated.
The number of gates explained earlier, ie
SUB calculation = about 3,200-4,800 gates,
MAT calculation = 800 to 1,200 gates,
KADD calculation = about 320 gates,
When calculating the calculation cost based on the number of gates corresponding to these calculations,
Calculation cost = 5SUB + 5MAT + 10KADD
= 23K gate to 33K gate.

これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]における変換処理において必要としていた演算コスト(26Kゲート〜38Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化される。具体的には処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。   This is superior to the calculation cost (26K gate to 38K gate) required in the conversion processing in the algorithm [Rijndael] described as the rectangular state processing example, and the processing according to this embodiment is executed. By doing so, the diffusion for the rectangular state becomes more efficient. Specifically, it is possible to improve the processing speed and downsize the apparatus, and it is possible to increase the security level and confidentiality level of the encrypted data by improving the diffusion performance.

[シフト処理(SHIFT)の一般化構成について]
上述した実施例1〜4においては長方形ステートにおける左半分の分割データにのみシフト処理を適用する[H−SHIFT]を実行する構成例について説明した。すでに説明したように、シフト処理(SHIFT)は各行ごとに異なる値のローテーションシフトを適用するものであるが、本発明の実施例1〜4において実行するシフト処理(H−SHIFT)に必要な性質は以下の通りである。
[Generalized configuration of shift processing (SHIFT)]
In the above-described first to fourth embodiments, the configuration example in which [H-SHIFT] that applies the shift process only to the left half divided data in the rectangular state has been described. As already described, the shift process (SHIFT) applies a rotation shift having a different value for each row. Is as follows.

*同じ列に含まれるバイトデータはシフト演算後には必ず異なる列に含まれること
上記性質が満たされていれば、必ずしもローテーションに基づくシフトである必要はない。
* Byte data included in the same column must be included in a different column after the shift operation. If the above properties are satisfied, the shift need not necessarily be based on rotation.

さらに、各実施例において説明したシフト処理(H−SHIFT)は、長方形ステートの2つの半分の分割データの両者に対して実行する構成としても、上述した各実施例において説明した効果をもたらす。先に説明したようにシフト処理事態は演算コスト=0と解釈できるので、処理対象が増加しても演算ストを増加させることにはならない。   Further, the shift processing (H-SHIFT) described in each embodiment brings about the effect described in each embodiment described above even when the shift processing (H-SHIFT) is executed for both divided data of two halves of the rectangular state. As described above, since the shift processing situation can be interpreted as the calculation cost = 0, even if the number of objects to be processed increases, the calculation strike does not increase.

図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についても同様であり、シフト処理は各実施例において説明した側の半分の分割データ以外の半分の分割データに対して適用してもよい。なお、左右両方のシフト処理の態様は、左右同じものでも左右独立に選んでも良い。
FIG. 27 shows an algorithm of processing in which the shift processing (H-SHIFT) in the first embodiment described above is applied to both the left and right half divided data of the rectangular state. When one half of the rectangular state divided data is [SL] and the other half of the divided data is [SR], the round calculation algorithm is as follows.
(1) Non-linear transformation processing (H-SUB) for half-division data [SL] of a rectangular state,
(2) Shift processing (H-SHIFT) for half-division data [SL] and [SR] of the rectangular state;
(3) A process of performing a linear conversion process on half of the divided data [SL] of the rectangular state and performing an exclusive OR operation (XOR) with the remaining half of the divided data [SR] (MAT-XOR)
(4) Swap process (SWAP) for exchanging two half-division data [SL] and [SR] of the rectangular state
5 with respect to a rectangular half data segment of the State [SL], and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
Even with such a setting, the same effect as the diffusion effect of the first embodiment described above can be obtained. The same applies to the second, third, and fourth embodiments, and the shift process may be applied to half of the divided data other than the half of the divided data described in each embodiment. Note that the left and right shift processing modes may be the same for the left and right, or may be selected independently for the left and right.

[実施例1〜4の一般化構成について]
上述した実施例1,2,3,4では、32バイト(256ビット)データで構成される4行×8列、計32個のバイト単位データによって構成される長方形ステートに対する処理例として説明をした。
[Generalized configuration of Examples 1 to 4]
In the first, second, third, and fourth embodiments described above, the processing was described as an example of processing for a rectangular state composed of 4 rows × 8 columns composed of 32 bytes (256 bits) data and a total of 32 byte unit data. .

本発明は、この実施例に限らず様々な構成の長方形ステートに対して適用可能である。具体的には、左右に分割可能な偶数の列数(2n)を有し、任意の行数(m)を有する長方形ステート(2n≠m)とした長方形ステートに対して適用することが可能である。   The present invention is not limited to this embodiment and can be applied to rectangular states having various configurations. Specifically, the present invention can be applied to a rectangular state having an even number of columns (2n) that can be divided into left and right and a rectangular state (2n ≠ m) having an arbitrary number of rows (m). is there.

例えば図28に示すように全体で2mn個のバイト単位データを持つデータを、2n列、m行のa〜a2mnの2mn個のバイト単位データを有する長方形ステートに対して、上述した実施例1〜4において説明した非線形変換(H−SUB)など、各種の変換処理によって変換を行う。変換結果である長方形ステートに含まれるバイト単位データをb〜b2mnとした場合、各実施例において定義した各処理は図29に示すように以下の式によって一般形として示すことができる。 For example, as shown in FIG. 28, the embodiment described above is applied to data having 2mn byte unit data as a whole for a rectangular state having 2mn byte unit data of a 1 to a 2mn in 2n columns and m rows. The conversion is performed by various conversion processes such as the non-linear conversion (H-SUB) described in 1 to 4. If the byte data contained in a conversion results rectangular state was b 1 ~b 2mn, the processes defined in each example can be represented as a general form by the following equation as shown in FIG. 29.

(1)非線形変換処理(H−SUB)
=S(a) if 1≦i mod 2n≦n
=a else
ただしS()は非線形変換処理を示す。
(1) Non-linear transformation process (H-SUB)
b i = S (a i ) if 1 ≦ i mod 2n ≦ n
b i = a i else
However, S () indicates a non-linear conversion process.

(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)は排他的論理和演算である。
(2) Linear transformation and exclusive OR operation (MAT-XOR)
for i = 1 ... n
t (b i , b i + 2n ,..., b i + 2 (m−1) n ) = t (a i , a i + 2n ,..., a i + 2 (m−1) n )
t (b i + n , b i + 3n ,..., b i + (2m−1) n ) = [M t (a i , a i + 2n ,..., a i + 2 (m−1) n )] (XOR) t (a i + n , ai + 3n , ..., ai + (2m-1) n )
However,
t () denotes a transposed matrix,
[M] is a linear transformation matrix,
(XOR) is an exclusive OR operation.

(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]は線形変換行列である。
(3) Linear transformation process (H-MAT)
t (b i , b i + 2n ,..., b i + 2 (m−1) n ) = M t (a i , a i + 2n ,..., a i + 2 (m−1) n ) if i = 1. . n
t (b i , b i + 2n ,..., b i + 2 (m−1) n ) = t (a i , a i + 2n ,..., a i + 2 (m−1) n ) else
However,
t () denotes a transposed matrix,
[M] is a linear transformation matrix.

(4)鍵適用演算(H−KADD)
=a(XOR)k if 1≦i mod 2n≦n
=a else
ただし、
(XOR)は排他的論理和演算、
は鍵データである。
(4) Key application calculation (H-KADD)
b i = a i (XOR) k i if 1 ≦ i mod 2n ≦ n
b i = a i else
However,
(XOR) is an exclusive OR operation,
k i is key data.

(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)は排他的論理和演算である。
(5) Exclusive OR processing (XOR)
for i = 1. . n
t (b i , b i + 2n ,..., b i + 2 (m−1) n ) = t (a i , a i + 2n ,..., a i + 2 (m−1) n )
t (b i + n, b i + 3n, .., b i + (2m-1) n) = t (a i, a i + 2n, .., a i + 2 (m-1) n) (XOR) t (a i + n, a i + 3n , ..., ai + (2m-1) n )
However,
t () denotes a transposed matrix,
(XOR) is an exclusive OR operation.

(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)は排他的論理和演算である。
(6) Nonlinear transformation & linear transformation & exclusive OR processing (SUB-MAT-XOR)
for i = 1. . n
t (b i , b i + 2n ,..., b i + 2 (m−1) n ) = t (a i , a i + 2n ,..., a i + 2 (m−1) n )
t (b i + n, b i + 3n ,..., b i + (2m−1) n ) = [M t (S (a i ), S (a i + 2n ),..., S (a i + 2 (m−1) n )] (XOR) t ( ai + n , ai + 3n , ..., ai + (2m-1) n )
However,
t () denotes a transposed matrix,
[M] is a linear transformation matrix,
(XOR) is an exclusive OR operation.

このように、上記実施例において説明した各処理は、上述のように、2n列、m行のa〜a2mnの2mn個のバイト単位データからなる長方形ステートに対する演算における入力[a〜a2mn]と出力[b〜b2mn]の関係式として上記のように一般形として定義できる。 Thus, the processes described in the embodiment, as described above, 2n columns, input in operation on the rectangular state consisting of 2mn pieces of byte data of a 1 ~a 2mn of m rows [a 1 ~a It can be defined as a general form as described above as a relational expression of 2mn] and output [b 1 ~b 2mn].

なお、シフト処理(H−SHIFT)に関しては、上記実施例では、長方形ステートの半分の分割データが正方ステートとなる例として説明していたが、任意の形状を持つ長方形ステートとした場合、半分の分割データが正方形ステートになるとは限らない。従って、このような場合も含めて、シフト処理(H−SHIFT)の一般形の定義について説明する。   The shift processing (H-SHIFT) has been described in the above embodiment as an example in which the divided data of half of the rectangular state is a square state. However, when the rectangular state has an arbitrary shape, The divided data does not always become a square state. Accordingly, the definition of the general form of shift processing (H-SHIFT) will be described including such a case.

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個以下の範囲内で含まれていること
In the rectangular state of m rows and 2n columns, there are the following rules as processing rules required for the shift processing (H-SHIFT) for half of the divided data (m rows and n columns) to be shifted (H-SHIFT).
* In the case of m ≦ n: In the rectangular state of m rows and 2n columns, the byte data included in the same column in the half divided data (m rows and n columns) to be subjected to the shift processing (H-SHIFT) Be sure to set it to a different column.
* When m> n: Byte data included in the same column in half of the divided data (m rows and n columns) to be subjected to shift processing (H-SHIFT) is placed in an arbitrary column after the shift processing (m / n) -1 or more and (m / n) +1 or less

すなわち、シフト処理の実行に際して、m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データが、
m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、
m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行する。
That is, when the shift process is executed, the m rows and n columns of divided data to be shifted are included in the m rows and 2n columns of rectangular array data.
If m ≦ n, the data blocks in the same column before the shift are shifted so that they become different columns after the shift process,
When m> n, the data blocks in the same column before the shift are included in any column after the shift process within the range of (m / n) −1 or more and (m / n) +1 or less. The shift process is executed.

m行2n列の長方形ステートにおいて、シフト処理(H−SHIFT)対象となる半分の分割データ(m行n列)に対するシフト処理(H−SHIFT)は、上記のルールに従って行う。このルールに従った処理を行うことで、ある列のデータが複数の列に効率的に拡散することが保証される。   In the rectangular state of m rows and 2n columns, the shift processing (H-SHIFT) for half of the divided data (m rows and n columns) to be shifted (H-SHIFT) is performed according to the above rules. By performing processing according to this rule, it is guaranteed that data in a certain column is efficiently diffused to a plurality of columns.

[実施例1〜4の一般化]
先に説明した実施例1〜4では、長方形ステートの半分の分割データが正方ステートとなる例を説明したが、上述したように、本発明は、このような特殊な形状の長方形ステートのみならず、少なくとも2分割可能な偶数列を持つ任意の形状の長方形ステートに対して適用可能である。以下、長方形ステートの半分の分割データが正方ステートとならない場合に各実施例1〜4を適用した場合のデータ拡散例について説明する。
[Generalization of Examples 1 to 4]
In the first to fourth embodiments described above, the example in which the divided data of half of the rectangular state is a square state has been described. However, as described above, the present invention is not limited to such a specially-shaped rectangular state. The present invention is applicable to a rectangular state having an arbitrary shape having an even number of columns that can be divided into at least two. Hereinafter, an example of data diffusion in the case where the first to fourth embodiments are applied when divided data in half of the rectangular state does not become the square state will be described.

(実施例1の一般化例)
図30は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート310に対して、先に実施例1で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート310中の左上端のバイト単位データ311に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ311の構成ビットによって変化するバイト単位データを黒で示している。
(Example of generalization of Example 1)
FIG. 30 is a diagram illustrating an example of data diffusion when the round operation described in the first embodiment is performed on the generalized rectangular state 310 in which half the divided data of the rectangular state is not a square state. . Attention is paid to the byte unit data 311 at the upper left end in the 48-byte rectangular state 310 of 4 rows and 12 columns (marked in black). In each round calculation process, the byte unit data that changes depending on the constituent bits of the byte unit data 311 is shown in black.

実施例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つのラウンド演算処理として実行する処理である。
The round operation algorithm of Example 1 is
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Processing (MAT-XOR) for performing a linear conversion process on half of the rectangular state divided data and performing an exclusive OR operation (XOR) with the remaining half of the divided data
(4) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(5) with respect to a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of processes (1) to (5), that is, [H-SUB] → [H-SHIFT] → [MAT-XOR] → [SWAP] → [H-KADD] This process is executed as a round operation process.

図から理解されるように、ラウンド演算の4ラウンド終了時には長方形ステート310中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート310中の左上端のバイト単位データ311の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As can be seen from the figure, all 48 bytes of data are affected in the rectangular state 310 at the end of the fourth round of the round operation. In the figure, the spread of the influence of the byte unit data 311 at the upper left end in the rectangular state 310 is shown. The spread of the influence is the same for all byte data included in the left half.

また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図30に示すシーケンスで実行され、結果として、4+1=5ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   As for the influence of the data included in the right half, the swap [SWAP] operation is always executed once in one round process, as in the embodiment described above, and the left half is divided. When the data and the right half of the divided data are exchanged and the right data is once moved to the left, the subsequent processing is executed in the sequence shown in FIG. Affects all byte data in the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

結果として、最大5ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=7.5SUB+7.5MAT+15KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=7.5SUB+7.5MAT+15KADD
=35Kゲート〜50Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式では4ラウンドかかり、変換処理において必要とされる演算コストは12SUB+12MAT+12KADD(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
As a result, one byte unit data constituting a rectangular state in a maximum of five rounds can affect all bytes constituting the rectangular state. The operation cost required for one byte unit data constituting a rectangular state to affect all bytes constituting the rectangular state is as follows:
Calculation cost = 7.5SUB + 7.5MAT + 15KADD
When calculating the calculation cost in terms of the number of gates described above,
Calculation cost = 7.5SUB + 7.5MAT + 15KADD
= 35K gate to 50K gate. This is because the algorithm [Rijndael] described above as the rectangular state processing example has been expanded to 4 × 12 states, it takes 4 rounds, and the calculation cost required for the conversion processing is 12SUB + 12MAT + 12KADD (52K gate to 76K gate). By executing the processing according to this embodiment, the diffusion to the rectangular state is made more efficient, the processing speed can be improved, the device can be downsized, and the like. By improving the performance, it becomes possible to increase the security level and confidentiality level of the encrypted data.

(実施例2の一般化例)
図31は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート320に対して、先に実施例2で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート320中の左上端のバイト単位データ321に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ321の構成ビットによって変化するバイト単位データを黒で示している。
(Example of generalization of Example 2)
FIG. 31 is a diagram illustrating an example of data diffusion when the round operation described in the second embodiment is performed on the generalized rectangular state 320 in which the divided data of half of the rectangular state does not become the square state. . Attention is paid to the byte unit data 321 at the upper left end in the 48-byte rectangular state 320 of 4 rows and 12 columns (marked in black). In the processing of each round operation, the byte unit data that changes depending on the constituent bits of the byte unit data 321 is shown in black.

実施例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つのラウンド演算処理として実行する処理である。
The round operation algorithm of Example 2 is
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing (XOR) for performing an exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This is constituted by a series of processes (1) to (6). That is, the process is executed as a single round operation process in the order of [H-SUB] → [H-SHIFT] → [H-MAT] → [XOR] → [SWAP] → [H-KADD].

図31から理解されるように、ラウンド演算の3ラウンド終了時には長方形ステート320中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート320中の左上端のバイト単位データ321の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As understood from FIG. 31, at the end of the third round of the round operation, all 48 bytes of data are affected in the rectangular state 320. In the figure, the spread of the influence of the byte unit data 321 at the upper left corner in the rectangular state 320 is shown. The spread of the influence is the same for all byte data included in the left half.

また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図31に示すシーケンスで実行され、結果として、3+1=4ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   As for the influence of the data included in the right half, the swap [SWAP] operation is always executed once in one round process, as in the embodiment described above, and the left half is divided. When the data and the right half of the divided data are exchanged and the right data is once moved to the left, the subsequent processing is executed in the sequence shown in FIG. Affects all byte data in the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

結果として、最大4ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=6SUB+6MAT+12KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=6SUB+6MAT+12KADD
=28Kゲート〜40Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
As a result, one byte unit data constituting the rectangular state in a maximum of four rounds can affect all the bytes constituting the rectangular state. The operation cost required for one byte unit data constituting a rectangular state to affect all bytes constituting the rectangular state is as follows:
Calculation cost = 6SUB + 6MAT + 12KADD
When calculating the calculation cost in terms of the number of gates described above,
Calculation cost = 6SUB + 6MAT + 12KADD
= 28K gate to 40K gate. This is superior to the calculation cost (52K gate to 76K gate) required in the method in which the algorithm [Rijndael] described above as the processing example of the rectangular state is expanded to 4 × 12 states. By executing the processing according to the example, the diffusion to the rectangular state is made more efficient, the processing speed can be improved, the device can be downsized, etc. The level of confidentiality can be increased.

(実施例3の一般化例)
図32は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート330に対して、先に実施例3で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート330中の左上端のバイト単位データ331に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ331の構成ビットによって変化するバイト単位データを黒で示している。
(Example of generalization of Example 3)
FIG. 32 is a diagram illustrating an example of data diffusion when the round operation described in the third embodiment is performed on the generalized rectangular state 330 in which half the divided data of the rectangular state is not a square state. . Attention is paid to the byte unit data 331 at the upper left corner in the 48-byte rectangular state 330 of 4 rows and 12 columns (marked in black). In each round calculation process, the byte unit data that changes depending on the constituent bits of the byte unit data 331 is shown in black.

実施例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つのラウンド演算処理として実行する処理である。
The round operation algorithm of Example 3 is
(1) The result of performing nonlinear transformation (SUB) on data for each column of half-divided data in the rectangular state is regarded as a vector, and a linear transformation matrix [M] is applied to perform 4 × 4 matrix operation to perform linear transformation. Is executed, and the result is subjected to exclusive OR (XOR) with the data in the corresponding column in the right half, and the divided data in the right half is updated with the result. SUB-MAT-XOR),
(2) Swap process (SWAP) for exchanging the two half-divided data of the rectangular state
(3) Shift processing (H-SHIFT) for half divided data of the rectangular state,
(4) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
This is constituted by a series of processes (1) to (4). In other words, the processing in the order of [SUB-MAT-XOR] → [SWAP] → [H-SHIFT] → [H-KADD] is executed as one round operation process.

図32から理解されるように、ラウンド演算の4ラウンド終了時には長方形ステート330中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート330中の左上端のバイト単位データ331の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As understood from FIG. 32, at the end of the fourth round of the round operation, all 48 bytes of data are affected in the rectangular state 330. In the figure, the influence of the byte unit data 331 at the upper left end in the rectangular state 330 is shown. The influence of this influence is the same for all the byte data included in the left half.

また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図32に示すシーケンスで実行され、結果として、4+1=5ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   As for the influence of the data included in the right half, the swap [SWAP] operation is always executed once in one round process, as in the embodiment described above, and the left half is divided. When the data and the right half of the divided data are exchanged and the right data is once moved to the left, the subsequent processing is executed in the sequence shown in FIG. Affects all byte data in the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

結果として、最大5ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=7.5SUB+7.5MAT+15KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=7.5SUB+7.5MAT+15KADD
=35Kゲート〜50Kゲート
となる。これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
As a result, one byte unit data constituting a rectangular state in a maximum of five rounds can affect all bytes constituting the rectangular state. The operation cost required for one byte unit data constituting a rectangular state to affect all bytes constituting the rectangular state is as follows:
Calculation cost = 7.5SUB + 7.5MAT + 15KADD
When calculating the calculation cost in terms of the number of gates described above,
Calculation cost = 7.5SUB + 7.5MAT + 15KADD
= 35K gate to 50K gate. This is superior to the calculation cost (52K gate to 76K gate) required in the method in which the algorithm [Rijndael] described above as the processing example of the rectangular state is expanded to 4 × 12 states. By executing the processing according to the example, the diffusion to the rectangular state is made more efficient, the processing speed can be improved, the device can be downsized, etc. The level of confidentiality can be increased.

(実施例4の一般化例)
図33、図34は、長方形ステートの半分の分割データが正方ステートとならない一般化された長方形ステート340に対して、先に実施例4で説明したラウンド演算を実行した場合のデータ拡散例を示す図である。4行12列の48バイトの長方形ステート340中の左上端のバイト単位データ341に着目する(黒でマーク)。各ラウンド演算の処理において、このバイト単位データ341の構成ビットによって変化するバイト単位データを黒で示している。
(Generalized example of Example 4)
FIG. 33 and FIG. 34 show examples of data diffusion when the round operation described in the fourth embodiment is performed on the generalized rectangular state 340 in which half the divided data of the rectangular state is not a square state. FIG. Attention is paid to the byte unit data 341 at the upper left end in the 48-byte rectangular state 340 of 4 rows and 12 columns (marked in black). In the processing of each round operation, the byte unit data that changes depending on the constituent bits of the byte unit data 341 is shown in black.

実施例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つのラウンド演算処理として実行する処理である。
The round operation algorithm of Example 4 is
(1) Non-linear conversion processing (H-SUB) for half of the rectangular state divided data,
(2) Shift processing (H-SHIFT) for half divided data of rectangular state,
(3) Linear transformation processing (H-MAT) for half of the rectangular state divided data
(4) Processing for performing exclusive OR operation (XOR) of half of the rectangular state divided data and the remaining half of the divided data (XOR2)
(5) Swap process (SWAP) for exchanging two half-divided data of a rectangular state
(6) a half data segment of the rectangular state and a round key [k i] performing exclusive OR (XOR) processing (H-KADD)
A series of these processes (1) to (6), ie, [H-SUB] → [H-SHIFT] → [H-MAT] → [XOR2] → [SWAP] → [H-KADD] This processing is executed as one round calculation processing.

図33、図34から理解されるように、ラウンド演算の6ラウンド終了時には長方形ステート340中、48バイトすべてのデータに影響が発生している。なお、図では、長方形ステート340中の左上端のバイト単位データ341の影響の広がりを示しているが、この影響の広がりかたは左半分に含まれるすべてのバイトデータについて同様に言える性質である。   As can be understood from FIGS. 33 and 34, at the end of the sixth round of the round operation, all 48 bytes of data are affected in the rectangular state 340. The drawing shows the spread of the influence of the byte unit data 341 at the upper left end in the rectangular state 340. The spread of this influence is the same for all the byte data included in the left half.

また、右半分に含まれるデータの影響については、先に説明した実施例で説明したと同様、1つのラウンド処理内にスワップ[SWAP]演算が必ず一度実行されることになり、左半分の分割データと右半分の分割データの入れ替えが実行され、右側データが、いったん左側に移動すれば、後の処理は、図33、図34に示すシーケンスで実行され、結果として、6+1=7ラウンド終了時には、影響が長方形全てのバイト単位データに影響する。このことは、右半分に含まれるすべてのバイトデータについて同様に言える性質である。   As for the influence of the data included in the right half, the swap [SWAP] operation is always executed once in one round process, as in the embodiment described above, and the left half is divided. When the data and the right half of the divided data are exchanged and the right side data is once moved to the left side, the subsequent processing is executed in the sequence shown in FIGS. 33 and 34. As a result, at the end of 6 + 1 = 7 rounds , The effect will affect all byte data in the rectangle. This is a property that can be similarly applied to all byte data included in the right half.

結果として、最大7ラウンドで長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えることが可能となる。長方形ステートを構成する1つのバイト単位データが、長方形ステートを構成するすべてのバイトに影響を与えるまでにかかる演算コストは、
演算コスト=10.5SUB+10.5MAT+21KADD
と見積もることができ、先に説明したゲート数換算で、演算コストを算出すると、
演算コスト=10.5SUB+10・5MAT+21KADD
=50Kゲート〜70Kゲート
となる。
これは、先に、長方形ステートの処理例として説明したアルゴリズム[Rijndael]を4×12のステートに拡張した方式において必要としていた演算コスト(52Kゲート〜76Kゲート)に比べて優位であり、本実施例に従った処理を実行することで、長方形ステートに対する拡散がより効率化され、処理速度の向上や、装置の小型化などを実現することができ、拡散性能の向上により暗号データのセキュリティレベルや秘匿性のレベルも増大させることが可能となる。
As a result, one byte unit data constituting the rectangular state in a maximum of seven rounds can affect all bytes constituting the rectangular state. The operation cost required for one byte unit data constituting a rectangular state to affect all bytes constituting the rectangular state is as follows:
Calculation cost = 10.5 SUB + 10.5 MAT + 21 KADD
When calculating the calculation cost in terms of the number of gates described above,
Calculation cost = 10.5 SUB + 10.5 MAT + 21 KADD
= 50K gate to 70K gate.
This is superior to the calculation cost (52K gate to 76K gate) required in the method in which the algorithm [Rijndael] described above as the processing example of the rectangular state is expanded to 4 × 12 states. By executing the processing according to the example, the diffusion to the rectangular state is made more efficient, the processing speed can be improved, the device can be downsized, etc. The level of confidentiality can be increased.

[ラウンド演算における処理順序の入れ替えについて]
上述した各実施例では、ラウンド演算における処理シーケンスを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]
このシーケンスで各ラウンド演算が実行されるものとして説明した。しかし、必ずしもこのシーケンスに限定されることなく、ラウンド演算において実行する処理順は異なる順番としてもよい。例えば、ラウンド内の初めの処理を別の処理に設定して、ラウンドの切れ目を変えて別のラウンド構成として解釈することは容易である。
[Replacement of processing order in round operation]
In each embodiment described above, the processing sequence in the round calculation is described as one sequence. That is,
Example 1
[H-SUB] → [H-SHIFT] → [MAT-XOR] → [SWAP] → [H-KADD]
Example 2
[H-SUB] → [H-SHIFT] → [H-MAT] → [XOR] → [SWAP] → [H-KADD]
Example 3
[SUB-MAT-XOR] → [SWAP] → [H-SHIFT] → [H-KADD]
Example 4
[H-SUB] → [H-SHIFT] → [H-MAT] → [XOR2] → [SWAP] → [H-KADD]
It has been described that each round operation is executed in this sequence. However, it is not necessarily limited to this sequence, and the processing order executed in the round calculation may be different. For example, it is easy to set the first process in a round to another process, and change the round break and interpret it as another round configuration.

例えば実施例1や実施例2では、非線形変換[H−SUB]とシフト処理[H−SHIFT]は順序を入れ替えても拡散性能に影響はない、またいずれの実施例においても鍵適用演算[H−KADD]の位置がどの位置に挿入されようとも拡散性能には影響がない。従って、本方式で説明した拡散性能が変わらない範囲で処理順序を入れ替えることは可能であり、そのような構成も本発明に含まれる。   For example, in the first and second embodiments, the non-linear transformation [H-SUB] and the shift process [H-SHIFT] do not affect the spreading performance even if the order is changed. In any embodiment, the key application operation [H -KADD] has no influence on the diffusion performance regardless of where it is inserted. Therefore, it is possible to change the processing order within a range in which the diffusion performance described in the present system does not change, and such a configuration is also included in the present invention.

[DSMの適用]
上述した実施例において、線形変換処理[H−MAT]に適用する行列は各ラウンドにおいて共通の固定行列[M]を利用することが可能であるが、この行列[M]をラウンド間で切り換えて異なる行列を適用する構成としてもよい。いわゆるDSM(Diffusion Switching Mechanism)の適用構成とすることでさらにセキュリティレベルを向上させることができる。
[Application of DSM]
In the embodiment described above, the matrix applied to the linear transformation process [H-MAT] can use a common fixed matrix [M] in each round, but this matrix [M] is switched between rounds. A different matrix may be applied. A security level can be further improved by adopting a so-called DSM (Diffusion Switching Mechanism) application configuration.

実施例2においてDSMを適用する場合の例について説明する。実施例2のラウンド演算は、先に図16を参照して説明したように、
[H−SUB]→[H−SHIFT]→[H−MAT]→[XOR]→[SWAP]→[H−KADD]
これらの複数の処理によって構成されるラウンド演算を繰り返し実行する処理である。
An example in which DSM is applied in the second embodiment will be described. As described above with reference to FIG. 16, the round operation of the second embodiment is performed as follows.
[H-SUB] → [H-SHIFT] → [H-MAT] → [XOR] → [SWAP] → [H-KADD]
This is a process of repeatedly executing a round operation constituted by a plurality of processes.

あるラウンドにおいて線形変換処理[H−MAT]によって、長方形ステートの左半分の分割データに含まれる各列に対して、線形変換行列[M]による行列演算が施された結果がその列に格納される。この線形変換処理[H−MAT]によって更新された左半分の分割データは、その後のスワップ[SWAP]処理により右半分に移動する。   In a certain round, the result of the matrix operation using the linear transformation matrix [M] for each column included in the divided data of the left half of the rectangular state is stored in that column by the linear transformation process [H-MAT]. The The divided data in the left half updated by the linear conversion process [H-MAT] moves to the right half by the subsequent swap [SWAP] process.

次のラウンドの線形変換処理[H−MAT]では、その時点で左半分に含まれる各列に対して、さらに線形変換行列[M]による行列演算が施された結果が格納され、さらに直後の排他的論理和処理[XOR]により左半分の分割データが右半分の分割データに排他的論理和されるという構成を持つ。   In the next round of linear transformation processing [H-MAT], the result of further performing matrix operation with the linear transformation matrix [M] is stored for each column included in the left half at that time. By the exclusive OR process [XOR], the left half of the divided data is exclusively ORed with the right half of the divided data.

この排他的論理和処理[XOR]が終わった直後の右半分に含まれる各列のデータに着目すると、各列は2回分の行列演算の結果が足し込まれた形になっていることがわかる。長方形ステートを構成する1つの列のベクトルを(X,Y,Z,W)で表すと、以下の一般式で書くことができる。

Figure 0005510587
When attention is paid to the data of each column included in the right half immediately after the exclusive OR processing [XOR] is finished, it can be seen that each column is added with the result of two matrix operations. . When a vector of one column constituting the rectangular state is represented by t (X, Y, Z, W), it can be written by the following general formula.
Figure 0005510587

ここでは(a,b,c,d)を先行ラウンドの線形変換処理[H−MAT]で行列に入力された列ベクトルの要素とし、(e,f,g,h)を次のラウンドの線形変換処理[H−MAT]で行列に入力された列ベクトルの要素であるものとする。   Here, (a, b, c, d) is an element of the column vector input to the matrix by the linear transformation process [H-MAT] of the previous round, and (e, f, g, h) is the linearity of the next round. It is assumed that it is an element of the column vector input to the matrix by the conversion process [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となる状態が発生してしまう。   At this time, the number of non-zero elements included in (a, b, c, d, e, f, g, h) and the number of non-zero elements in (W, X, Y, Z) that is the result data Focus on relationships. For example, when a = e ≠ 0 and b = c = d = f = g = h = 0, it can be seen that W = X = Y = Z = 0. Despite the fact that the two elements a and e are not 0, there is no non-zero element in the calculation result, and a state occurs where the sum of the non-zero elements included in the input / output is 2. Resulting in.

置換関数中の中ではあるデータがなるべく多くのデータに影響すると同時に、入出力に含まれる非ゼロ要素の総和ができるだけ低い水準にならないことも求められている。これは差分攻撃や線形攻撃に対しての対策となる。   It is also required that some data in the replacement function affects as much data as possible, and at the same time the sum of the non-zero elements included in the input / output is not as low as possible. This is a countermeasure against differential attacks and linear attacks.

このような脆弱性に対する対策としては、全てのラウンドにおいて適用する線形変換行列[M]を1つの固定行列とするのではなく複数の異なる行列、例えば2つの行列[M1],[M2]を利用する、いわゆるDSM(Diffusion Switching Mechanism)を適用することが有効である。なお、DSMを適用した暗号アルゴリズムについては、例えば本出願人と同一の特許出願である特開2007−199156などに記載されている。   As a countermeasure against such a vulnerability, the linear transformation matrix [M] applied in all rounds is not a single fixed matrix, but a plurality of different matrices, for example, two matrices [M1] and [M2] are used. It is effective to apply a so-called DSM (Diffusion Switching Mechanism). An encryption algorithm to which DSM is applied is described in, for example, Japanese Patent Application Laid-Open No. 2007-199156, which is the same patent application as the present applicant.

2つの行列M1,M2を準備し、以下に示す関係式を常に満たすように2つの行列を配置する。

Figure 0005510587
Two matrices M1 and M2 are prepared, and the two matrices are arranged so as to always satisfy the following relational expression.
Figure 0005510587

または

Figure 0005510587
Or
Figure 0005510587

上記のいずれかの関係を常に満たすように2つの行列[M1],[M2]を配置する。   Two matrices [M1] and [M2] are arranged so as to always satisfy any of the above relationships.

これらの行列[M1]、[M2]を並べて得られる行列M1|M2の分岐数が3以上、またはそれぞれの逆行列を転置して得られる行列を並べて得られる行列M1−1M2−1の分岐数が3以上になるように設定する。両者を同時に満たす構成にしてもよい。このようにすることで非ゼロの要素が少ないまま上記の状態が回避され、差分攻撃や線形攻撃に対する耐性を向上させる効果がある。また、実施例4においても同様な関係式が導けるため、上記のDSM構成を適用すれば同様の効果が期待できる。 These matrices [M1], [M2] Sorting by resulting matrix M1 | number of branches M2 is three or more, or matrix t M1 -1 for each of the inverse matrix obtained by arranging a matrix obtained by transposing | t M2 - Set so that the number of branches of 1 is 3 or more. You may make it the structure which satisfy | fills both simultaneously. By doing so, the above-described state is avoided while there are few non-zero elements, and there is an effect of improving resistance to differential attacks and linear attacks. Further, since the same relational expression can be derived in the fourth embodiment, the same effect can be expected by applying the above DSM configuration.

[3.データ変換装置の構成例]
最後に、上述した実施例に従った処理を実行する装置としてのICモジュール700の構成例を図35に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能である。また、各処理は、論理回路を構成したハード回路やプログラム、あるいはその双方を適用して実行可能である。処理を実行する一例として例えば、図35に示すICモジュール700があり、このようなICモジュール700は様々な機器に搭載することが可能である。
[3. Configuration example of data converter]
Finally, FIG. 35 shows a configuration example of the IC module 700 as an apparatus for executing the processing according to the above-described embodiment. The above-described processing can be executed in various information processing apparatuses such as a PC, an IC card, a reader / writer, and the like. Each process can be executed by applying a hardware circuit and / or a program constituting a logic circuit. As an example of executing the processing, there is, for example, an IC module 700 shown in FIG. 35. Such an IC module 700 can be mounted on various devices.

図35に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。   A CPU (Central processing Unit) 701 shown in FIG. 35 is a processor that executes the start and end of cryptographic processing, control of data transmission / reception, data transfer control between components, and other various programs. The memory 702 includes a ROM (Read-Only-Memory) that stores programs executed by the CPU 701 or fixed data such as calculation parameters, a program executed in the processing of the CPU 701, and a parameter storage area that changes as appropriate in the program processing, It consists of RAM (Random Access Memory) used as a work area. The memory 702 can be used as a storage area for key data necessary for encryption processing, data to be applied to a conversion table (substitution table) or conversion matrix applied in the encryption processing, and the like. The data storage area is preferably configured as a memory having a tamper resistant structure.

データ変換部703は、例えば上述した各種の暗号処理、
(1)非線形変換処理(H−SUB)
(2)線形変換および排他的論理和演算(MAT−XOR)
(3)線形変換処理(H−MAT)
(4)鍵適用演算(H−KADD)
(5)排他的論理和処理(XOR)(XOR2)
(6)非線形変換&線形変換&排他的論理和処理(SUB−MAT−XOR)
これらの各処理を実行する処理部を有する。なお、これらの処理は、ハードウェア、またはソフトウェア、またはその組み合わせ構成によって実現される。
The data conversion unit 703 is, for example, the various cryptographic processes described above,
(1) Non-linear transformation process (H-SUB)
(2) Linear transformation and exclusive OR operation (MAT-XOR)
(3) Linear transformation process (H-MAT)
(4) Key application calculation (H-KADD)
(5) Exclusive OR processing (XOR) (XOR2)
(6) Nonlinear transformation & linear transformation & exclusive OR processing (SUB-MAT-XOR)
A processing unit that executes each of these processes is included. These processes are realized by hardware, software, or a combination thereof.

なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。   Here, an example is shown in which the cryptographic processing means is an individual module, but such an independent cryptographic processing module is not provided, for example, a cryptographic processing program is stored in the ROM, and the CPU 701 reads and executes the ROM stored program. You may comprise.

乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。   The random number generator 704 executes random number generation processing necessary for generating a key necessary for cryptographic processing.

送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。   The transmission / reception unit 705 is a data communication processing unit that performs data communication with the outside. For example, the data transmission / reception unit 705 performs data communication with an IC module such as a reader / writer, and outputs ciphertext generated in the IC module or an external reader. Data input from devices such as writers is executed.

以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。   The present invention has been described in detail above with reference to specific embodiments. However, it is obvious that those skilled in the art can make modifications and substitutions of the embodiments without departing from the gist of the present invention. In other words, the present invention has been disclosed in the form of exemplification, and should not be interpreted in a limited manner. In order to determine the gist of the present invention, the claims should be taken into consideration.

また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。   The series of processing described in the specification can be executed by hardware, software, or a combined configuration of both. When executing processing by software, the program recording the processing sequence is installed in a memory in a computer incorporated in dedicated hardware and executed, or the program is executed on a general-purpose computer capable of executing various processing. It can be installed and run. For example, the program can be recorded in advance on a recording medium. In addition to being installed on a computer from a recording medium, the program can be received via a network such as a LAN (Local Area Network) or the Internet and can be installed on a recording medium such as a built-in hard disk.

なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。   Note that the various processes described in the specification are not only executed in time series according to the description, but may be executed in parallel or individually according to the processing capability of the apparatus that executes the processes or as necessary. Further, in this specification, the system is a logical set configuration of a plurality of devices, and the devices of each configuration are not limited to being in the same casing.

上述したように、本発明の一実施例の構成によれば、例えば1バイト単位のデータブロックを配列した長方形配列データを2分割して設定した分割データに対する様々な処理を実行してデータ変換を行う構成において、分割データの一方に対する線形変換処理と、2つの分割データ相互の排他的論理和演算処理と、分割データの一方のデータに対するシフト処理と、2つの分割データのスワップ処理を実行することで、演算コストを低減した効率的なデータ攪拌を実現することができる。さらに、分割データに対する非線形変換や鍵適用演算を含めることでセキュリティレベルの高い暗号処理が実現される。   As described above, according to the configuration of the embodiment of the present invention, data conversion is performed by executing various processes on divided data set by dividing rectangular array data in which, for example, 1-byte unit data blocks are divided into two. In the configuration to be executed, a linear conversion process for one of the divided data, an exclusive OR operation process between the two divided data, a shift process for one of the divided data, and a swap process for the two divided data are executed. Thus, efficient data agitation with reduced calculation cost can be realized. Furthermore, encryption processing with a high security level is realized by including non-linear transformation and key application calculation for the divided data.

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 送受信部
11 Square array data (square state)
21 Square state 31 Byte unit data 51 Rectangular array data (rectangular state)
61 Rectangular array data (rectangular state)
71 Byte unit data 100 Rectangular state 101 Byte unit data 102 Byte unit data 200 Rectangular state 201 Byte unit data 202 Byte unit data 220 Rectangular state 221 Byte unit data 222 Byte unit data 230 Rectangular state 231 Byte unit data 232 Byte unit data 240 Rectangle State 241 Byte unit data 242 Byte unit data 310 Rectangular state 311 Byte unit data 320 Rectangular state 321 Byte unit data 330 Rectangular state 331 Byte unit data 340 Rectangular state 341 Byte unit data 700 IC module 701 CPU (Central processing Unit)
702 Memory 703 Data converter 704 Random number generator 705 Transmitter / receiver

Claims (14)

ラウンド演算を繰り返すデータ変換処理を行うデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする構成であり、
前記複数の演算処理は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
(b)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵加算処理、
(d)少なくとも線形変換処理を実行した一方の更新分割データと、他方の分割データまたは当該他方の分割データのシフト演算後の更新分割データとの排他的論理和演算処理
を含む演算処理であるデータ変換装置。
It has a data conversion unit that performs data conversion processing that repeats round operations,
The data converter is
In the round operation, two divided data obtained by dividing the rectangular array data in which data blocks of the same size are arranged into two parts are generated,
A configuration in which a plurality of operations are sequentially performed on the generated two pieces of divided data to sequentially generate update divided data that is a result of each calculation processing, and the final update divided data is used as a round calculation result.
The plurality of arithmetic processes are:
(A) Non-linear transformation processing with the divided data or the divided data in the updated divided data as a processing target;
(B) a linear transformation process that targets any one of the divided data or the updated divided data;
(C) a key addition process for processing any one of the divided data or the divided data in the updated divided data;
(D) exclusive OR operation processing of at least one updated divided data that has been subjected to linear transformation processing and the other divided data or updated divided data after a shift operation of the other divided data ;
The data converter which is the arithmetic processing containing .
前記同一サイズのデータブロックは1バイト単位のデータブロックであり、前記データ処理変換部は、前記ラウンド演算において、1バイト単位のデータブロックを配列した長方形配列データを2分割した分割データに対する処理を行う構成であることを特徴とする請求項1に記載のデータ変換装置。   The data blocks of the same size are data blocks in units of 1 byte, and the data processing conversion unit performs processing on the divided data obtained by dividing the rectangular array data in which the data blocks in units of 1 byte are arranged in the round operation. The data conversion apparatus according to claim 1, wherein the data conversion apparatus has a configuration. 前記鍵加算処理は、暗号鍵データとの排他的論理和演算であることを特徴とする請求項1に記載のデータ変換装置。   The data conversion apparatus according to claim 1, wherein the key addition process is an exclusive OR operation with encryption key data. 前記データ変換部は、
前記シフト処理の実行に際して、
m行2n列の長方形配列データ中、シフト処理対象となるm行n列の分割データが、m≦nである場合、シフト前に同じ列のデータブロックがシフト処理後に異なる列になるようにシフトし、m>nの場合には、シフト前に同じ列のデータブロックがシフト処理後の任意の列に(m/n)−1個以上、(m/n)+1個以下の範囲内で含まれるようにシフト処理を実行することを特徴とする請求項1に記載のデータ変換装置。
The data converter is
When executing the shift process,
If the divided data of m rows and n columns to be subjected to shift processing is m ≦ n in the rectangular array data of m rows and 2n columns, the data block of the same column is shifted so that it becomes a different column after the shift processing before the shift. If m> n, the data blocks in the same column before the shift are included in any column after the shift process within the range of (m / n) −1 or more and (m / n) +1 or less. The data conversion apparatus according to claim 1, wherein shift processing is executed as described above.
前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする請求項1に記載のデータ変換装置。
The data converter is
In the round operation,
Non-linear conversion processing and shift processing are performed on one divided data A of the divided data to update the divided data A, and further linear conversion processing is performed on the updated divided data A to obtain the other divided data. Execute exclusive OR with B, set the result as update data of divided data B, and execute exclusive OR with key data for divided data A after swap processing of divided data AB The data conversion apparatus according to claim 1, wherein:
前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行し、さらに線形変換処理を実行して分割データAの更新を行い、さらに、更新された分割データAと、他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする請求項1に記載のデータ変換装置。
The data converter is
In the round operation,
A non-linear transformation process and a shift process are performed on one divided data A of the divided data, a linear transformation process is further performed to update the divided data A, and the updated divided data A and the other Is executed as an update data of the divided data B, and after the swap processing of the divided data AB, the exclusive OR with the key data for the divided data A is executed. The data conversion apparatus according to claim 1, wherein the process is executed.
前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、線形変換処理を実行して他方の分割データBとの排他的論理和を実行して、その結果を分割データBの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対するシフト処理と鍵データとの排他的論理和処理を実行することを特徴とする請求項1に記載のデータ変換装置。
The data converter is
In the round operation,
A non-linear transformation process and a linear transformation process are performed on one divided data A of the divided data, an exclusive OR with the other divided data B is performed, and the result is used as update data of the divided data B 2. The data conversion apparatus according to claim 1, wherein after the setting and the swap processing of the divided data AB, the shift processing for the divided data A and the exclusive OR processing of the key data are executed.
前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理と線形変換処理を実行し、さらに、他方の分割データBとの排他的論理和を実行して、その結果を分割データAの更新データとして設定し、さらに分割データABのスワップ処理の後、分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする請求項1に記載のデータ変換装置。
The data converter is
In the round operation,
A non-linear transformation process, a shift process, and a linear transformation process are executed on one divided data A of the divided data, and an exclusive OR with the other divided data B is executed. 2. The data conversion apparatus according to claim 1, wherein the data conversion apparatus is set as update data for A, and after the swap process for the divided data AB, performs an exclusive OR process with the key data for the divided data A. 3.
前記データ変換部は、
前記ラウンド演算において、
前記分割データの一方の分割データAに対して非線形変換処理と、シフト処理を実行して分割データAの更新を行い、さらに更新された分割データAに対する線形変換処理を実行して更新分割データAを生成し、
他方の分割データBに対してシフト処理を実行して更新分割データBを生成し、
更新分割データAと更新分割データBとの排他的論理和を実行して、さらに更新分割データABのスワップ処理の後、更新分割データAに対する鍵データとの排他的論理和処理を実行することを特徴とする請求項1に記載のデータ変換装置。
The data converter is
In the round operation,
Non-linear conversion processing and shift processing are performed on one divided data A of the divided data to update the divided data A, and further linear conversion processing is performed on the updated divided data A to update the divided data A. Produces
A shift process is performed on the other divided data B to generate updated divided data B,
An exclusive OR of the update divided data A and the update divided data B is executed, and after the update divided data AB is swapped, an exclusive OR operation with the key data for the update divided data A is executed. The data conversion apparatus according to claim 1, wherein the data conversion apparatus is a data conversion apparatus.
前記データ変換部は、
前記ラウンド演算における線形変換処理において、複数の異なる行列をラウンド単位で選択適用する構成であることを特徴とする請求項1に記載のデータ変換装置。
The data converter is
The data conversion apparatus according to claim 1, wherein in the linear conversion processing in the round operation, a plurality of different matrices are selectively applied in round units.
前記データ変換部は、
複数の異なる行列の選択適用としてDSM(Diffusion Switching Mechanism)を利用した処理を行う構成であることを特徴とする請求項10に記載のデータ変換装置。
The data converter is
11. The data conversion apparatus according to claim 10 , wherein the data conversion apparatus is configured to perform processing using DSM (Diffusion Switching Mechanism) as a selection application of a plurality of different matrices.
データ変換装置において実行するデータ変換方法であり、
データ変換部が、ラウンド演算を繰り返してデータ変換を行なうデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とするステップであり、
前記複数の演算処理は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
(b)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵加算処理、
(d)少なくとも線形変換処理を実行した一方の更新分割データと、他方の分割データまたは当該他方の分割データのシフト演算後の更新分割データとの排他的論理和演算処理
を含む演算処理であるデータ変換方法。
A data conversion method executed in the data conversion device,
The data conversion unit has a data conversion step of performing data conversion by repeating round operations,
The data conversion step includes
In the round operation,
Generate two divided data by dividing the rectangular array data in which data blocks of the same size are arranged ,
A plurality of operations are sequentially performed on the generated two divided data to sequentially generate update divided data as a result of each calculation processing, and the final update divided data is set as a round calculation result .
The plurality of arithmetic processes are:
(A) Non-linear transformation processing with the divided data or the divided data in the updated divided data as a processing target;
(B) a linear transformation process that targets any one of the divided data or the updated divided data;
(C) a key addition process for processing any one of the divided data or the divided data in the updated divided data;
(D) exclusive OR operation processing of at least one updated divided data that has been subjected to linear transformation processing and the other divided data or updated divided data after a shift operation of the other divided data ;
A data conversion method, which is an arithmetic process including :
データ変換装置においてデータ変換処理を実行させるコンピュータ・プログラムであり、
データ変換部に、ラウンド演算を繰り返してデータ変換を行なわせるデータ変換ステップを有し、
前記データ変換ステップは、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とするステップであり、
前記複数の演算処理は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
(b)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵加算処理、
(d)少なくとも線形変換処理を実行した一方の更新分割データと、他方の分割データまたは当該他方の分割データのシフト演算後の更新分割データとの排他的論理和演算処理
を含む演算処理であるコンピュータ・プログラム。
A computer program for executing data conversion processing in a data conversion device,
A data conversion step for causing the data conversion unit to perform data conversion by repeating a round operation;
The data conversion step includes
In the round operation,
Generate two divided data by dividing the rectangular array data in which data blocks of the same size are arranged ,
A plurality of operations are sequentially performed on the generated two divided data to sequentially generate update divided data as a result of each calculation processing, and the final update divided data is set as a round calculation result .
The plurality of arithmetic processes are:
(A) Non-linear transformation processing with the divided data or the divided data in the updated divided data as a processing target;
(B) a linear transformation process that targets any one of the divided data or the updated divided data;
(C) a key addition process for processing any one of the divided data or the divided data in the updated divided data;
(D) exclusive OR operation processing of at least one updated divided data that has been subjected to linear transformation processing and the other divided data or updated divided data after a shift operation of the other divided data ;
A computer program that is an arithmetic process including
プログラムを実行するプロセッサと、
前記プログラムを保持するメモリと、
ラウンド演算を繰り返すデータ変換処理を行なうデータ変換部を有し、
前記データ変換部は、
前記ラウンド演算において、
同一サイズのデータブロックを配列した長方形配列データを2分割した2つの分割データを生成し、
生成した2つの分割データに対して複数の演算を、順次、実行して各演算処理結果である更新分割データを逐次生成し、最終更新分割データをラウンド演算結果とする構成であり
前記複数の演算処理は、
(a)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした非線形変換処理、
(b)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした線形変換処理、
(c)前記分割データ、または更新分割データ中のいずれかの分割データを処理対象とした鍵加算処理、
(d)少なくとも線形変換処理を実行した一方の更新分割データと、他方の分割データまたは当該他方の分割データのシフト演算後の更新分割データとの排他的論理和演算処理
を含む演算処理である情報処理装置。
A processor for executing the program;
A memory for holding the program;
A data conversion unit for performing a data conversion process for repeating a round operation;
The data converter is
In the round operation,
Generate two divided data by dividing the rectangular array data in which data blocks of the same size are arranged ,
A configuration in which a plurality of operations are sequentially performed on the generated two pieces of divided data to sequentially generate update divided data that is a result of each calculation processing, and the final update divided data is used as a round calculation result .
The plurality of arithmetic processes are:
(A) Non-linear transformation processing with the divided data or the divided data in the updated divided data as a processing target;
(B) a linear transformation process that targets any one of the divided data or the updated divided data;
(C) a key addition process for processing any one of the divided data or the divided data in the updated divided data;
(D) exclusive OR operation processing of at least one updated divided data that has been subjected to linear transformation processing and the other divided data or updated divided data after a shift operation of the other divided data ;
An information processing apparatus that is an arithmetic process including:
JP2013098955A 2013-05-09 2013-05-09 Data conversion apparatus, data conversion method, and computer program Active JP5510587B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013098955A JP5510587B2 (en) 2013-05-09 2013-05-09 Data conversion apparatus, data conversion method, and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013098955A JP5510587B2 (en) 2013-05-09 2013-05-09 Data conversion apparatus, data conversion method, and computer program

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008010548A Division JP5272417B2 (en) 2008-01-21 2008-01-21 Data conversion apparatus, data conversion method, and computer program

Publications (2)

Publication Number Publication Date
JP2013148933A JP2013148933A (en) 2013-08-01
JP5510587B2 true JP5510587B2 (en) 2014-06-04

Family

ID=49046404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013098955A Active JP5510587B2 (en) 2013-05-09 2013-05-09 Data conversion apparatus, data conversion method, and computer program

Country Status (1)

Country Link
JP (1) JP5510587B2 (en)

Also Published As

Publication number Publication date
JP2013148933A (en) 2013-08-01

Similar Documents

Publication Publication Date Title
JP5272417B2 (en) Data conversion apparatus, data conversion method, and computer program
JP5055993B2 (en) Cryptographic processing apparatus, cryptographic processing method, and computer program
KR101364192B1 (en) Encryption processing device, method for building encryption process algorithm, encryption processing method, and computer program
Feng et al. Cryptanalysis and improvement of the hyper-chaotic image encryption scheme based on DNA encoding and scrambling
Aboytes-González et al. Design of a strong S-box based on a matrix approach
DK1686722T3 (en) Block encryption device and block encryption method comprising rotation key programming
JP5023624B2 (en) Cryptographic processing apparatus, cryptographic processing method, and computer program
JP4905000B2 (en) Cryptographic processing apparatus, cryptographic processing method, and computer program
TWI394418B (en) A cryptographic processing device, a cryptographic processing method, and a non-temporary computer readable recording medium
RU2449482C2 (en) Encryption processing device, encryption processing method and computer programme
KR101770874B1 (en) Cryptographic processing device, cryptographic processing method, computer readable recording medium, and information processing device
JP6406350B2 (en) Cryptographic processing apparatus, cryptographic processing method, and program
JP2001324924A (en) Device and method for ciphering, device and method for deciphering, and arithmetic operation device
JP2007192893A (en) Encryption processing device, encryption processing method, and computer program
CN102713994B (en) Encryption device
JP2015191107A (en) Encryption processing device, encryption processing method, and program
US20050147244A1 (en) Method for cryptographic transformation of binary data blocks
JP5510587B2 (en) Data conversion apparatus, data conversion method, and computer program
JP6089668B2 (en) ENCRYPTION PROCESSING CIRCUIT, DECRYPTION PROCESSING CIRCUIT, METHOD THEREOF, AND PROGRAM THEREOF
KR100350207B1 (en) Method for cryptographic conversion of l-bit input blocks of digital data into l-bit output blocks
US11750369B2 (en) Circuit module of single round advanced encryption standard
WO2015059845A1 (en) Encryption process circuit, decryption process circuit and methods therefor
CN116743353A (en) Method and system for realizing novel FLM structure block cipher algorithm
Hashem et al. Quadrate Design of Linear System for Color Image Encryption
Kumar et al. Cryptompress: A Symmetric Cryptography algorithm to deny Bruteforce Attack

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130520

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140206

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: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140310

R151 Written notification of patent or utility model registration

Ref document number: 5510587

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