"データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、前記暗号処理部は、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する構成であり、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する暗号処理装置。前記ラウンド関数は、ラウンド鍵を適用した演算と、非線形変換処理と、線形変換処理を含むF関数、およびF関数の出力または入力に対する他ラインのデータとの排他的論理和演算を含む請求項1に記載の暗号処理装置。前記暗号処理部は、1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する、2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する、3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配する、上記1~3の分配条件を満たす処理によって前段のラウンド演算の演算結果を次段のラウンド演算の入力として設定する請求項2に記載の暗号処理装置。前記暗号処理部は、入力データの分割数dを4以上とした一般化Feistel構造を有する請求項1に記載の暗号処理装置。前記暗号処理部は、ラウンド演算の出力データを有するd個のライン各々のn/dビットデータをd/2個に再分割して、d×n/d個の再分割データを生成し、分割数dに応じたd本のラインの異なるラインから選択したd/2個の再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する請求項1に記載の暗号処理装置。前記暗号処理部は、全出力ビットが以下に示す2つの条件を満足する拡散diffusion状態、すなわち、出力ビットを入力ビットの関係式として記述した場合に、条件1全入力ビットが関係式に含まれる条件2全入力ビットが少なくとも1度は前記ラウンド関数を通過している上記2つの条件を満足する全拡散fulldiffusion状態を実現する構成である請求項1に記載の暗号処理装置。前記暗号処理部は、前記全拡散fulldiffusion状態を4ラウンドのラウンド演算によって実現する請求項6に記載の暗号処理装置。前記暗号処理部の前段のラウンド演算の出力データと次段のラウンド演算の再分割データの入出力関係を決定する接続構成は、ラウンド演算の出力データを有するラインのn/dビットデータの再分割処理によって生成されるd×n/d個の再分割データの組み合わせデータであるd/2個の2n/dビットのデータセットを単位とした接続構成から選択される接続構成である請求項1に記載の暗号処理装置。前記暗号処理部は、暗号化処理と復号処理の双方に適用可能なインボリーション性を有する請求項1に記載の暗号処理装置。前記暗号処理部の各ラウンド演算の再分割データの再構成処理は、前段のラウンド関数入力側系列の再分割データを、予め決定した規則に従って次段の排他的論理和側系列に分配し、前段の排他的論理和側系列の再分割データを、予め決定した規則に従って次段のラウンド関数入力側系列に分配する構成である請求項9に記載の暗号処理装置。前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する請求項1に記載の暗号処理装置。暗号処理装置において実行する暗号処理方法であり、暗号処理部が、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行し、前記暗号処理ステップは、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行し、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する暗号処理方法。暗号処理装置において暗号処理を実行させるプログラムであり、暗号処理部に、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行させ、前記暗号処理ステップにおいて、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行させ、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行させるプログラム。本開示は、例えば上述の状況に鑑みてなされたものであり、拡散diffusion特性を向上させた安全性の高い暗号処理装置、および暗号処理方法、並びにプログラムを提供することを目的とする。本開示の第1の側面は、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、前記暗号処理部は、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する構成であり、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する暗号処理装置にある。さらに、本開示の暗号処理装置の一実施態様において、前記ラウンド関数は、ラウンド鍵を適用した演算と、非線形変換処理と、線形変換処理を含むF関数、およびF関数の出力または入力に対する他ラインのデータとの排他的論理和演算を含む。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する、2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する、3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配する、上記1~3の分配条件を満たす処理によって前段のラウンド演算の演算結果を次段のラウンド演算の入力として設定する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、入力データの分割数dを4以上とした一般化Feistel構造を有する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、ラウンド演算の出力データを有するd個のライン各々のn/dビットデータをd/2個に再分割して、d×n/d個の再分割データを生成し、分割数dに応じたd本のラインの異なるラインから選択したd/2個の再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、全出力ビットが以下に示す2つの条件を満足する拡散diffusion状態、すなわち、出力ビットを入力ビットの関係式として記述した場合に、条件1全入力ビットが関係式に含まれる条件2全入力ビットが少なくとも1度は前記ラウンド関数を通過している上記2つの条件を満足する全拡散fulldiffusion状態を実現する構成である。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、前記全拡散fulldiffusion状態を4ラウンドのラウンド演算によって実現する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部の前段のラウンド演算の出力データと次段のラウンド演算の再分割データの入出力関係を決定する接続構成は、ラウンド演算の出力データを有するラインのn/dビットデータの再分割処理によって生成されるd×n/d個の再分割データの組み合わせデータであるd/2個の2n/dビットのデータセットを単位とした接続構成から選択される接続構成である。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、暗号化処理と復号処理の双方に適用可能なインボリーション性を有する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部の各ラウンド演算の再分割データの再構成処理は、前段のラウンド関数入力側系列の再分割データを、予め決定した規則に従って次段の排他的論理和側系列に分配し、前段の排他的論理和側系列の再分割データを、予め決定した規則に従って次段のラウンド関数入力側系列に分配する構成である。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する。さらに、本開示の第2の側面は、暗号処理装置において実行する暗号処理方法であり、暗号処理部が、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行し、前記暗号処理ステップは、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行し、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する暗号処理方法にある。さらに、本開示の第3の側面は、暗号処理装置において暗号処理を実行させるプログラムであり、暗号処理部に、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行させ、前記暗号処理ステップにおいて、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行させ、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行させるプログラムにある。なお、本開示のプログラムは、例えば、様々なプログラムコードを実行可能な情報処理装置やコンピュータシステムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータシステム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。本開示の一実施例によれば、拡散diffusion特性を向上させた安全性の高い暗号処理が実現される。具体的には、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、暗号処理部において、入力データであるnビットデータを分割数dで分割したn/dビットデータを各ラインに入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する。ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に分割し、該分割データを組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして処理を実行する。この構成によって、拡散diffusion特性を向上させた安全性の高い暗号処理が実現される。以下、図面を参照しながら本開示に係る暗号処理装置、および暗号処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。1.共通鍵ブロック暗号の概要2.拡散diffusion特性の概要について2-1拡散diffusion特性についての説明2-2拡散diffusion特性を考慮したこれまでの構成例について3.本開示に従った拡散diffusion特性を向上させた構成例について4.より効率的なデータ分配法を持つ構成例について5.インボリューションinvolution性を備えた構成例について6.暗号処理装置の構成例について7.本開示の構成のまとめ[1.共通鍵ブロック暗号の概要]まず、共通鍵ブロック暗号の概要について説明する。1-1.共通鍵ブロック暗号ここでは共通鍵ブロック暗号以下ではブロック暗号としては以下に定義するものを指すものとする。ブロック暗号は入力として平文Pと鍵Kを取り、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼びここではnで著す。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、あらかじめひとつに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。鍵のビット長をkで表す。鍵は任意の整数値を取りうる。共通鍵ブロック暗号アルゴリズムは1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムAはブロックサイズn=128であり、k=128またはk=192またはk=256の鍵サイズに対応するという構成もありうるものとする。平文P:nビット暗号文C:nビット鍵K:kビット図1にkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムEの図を示す。暗号化アルゴリズムEに対応する復号アルゴリズムDは暗号化アルゴリズムEの逆関数E-1と定義でき、入力として暗号文Cと鍵Kを受け取り,平文Pを出力する。図2に図1に示した暗号アルゴリズムEに対応する復号アルゴリズムDの図を示す。1-2.内部構成ブロック暗号は2つの部分に分けて考えることができる。ひとつは鍵Kを入力とし、ある定められたステップによりビット長を拡大してできた拡大鍵Kビット長kを出力する鍵スケジュール部と、もうひとつは平文Pと鍵スケジュール部から拡大された鍵Kを受け取ってデータの変換を行い暗号文Cを出力するデータ暗号化部である。2つの部分の関係は図3に示される。1-3.データ暗号化部以下の実施例において用いるデータ暗号化部はラウンド関数という処理単位に分割できるものとする。ラウンド関数は入力としての2つのデータを受け取り、内部で処理を施したのち、1つのデータを出力する。入力データの一方は暗号化途中のnビットデータであり、あるラウンドにおけるラウンド関数の出力が次のラウンドの入力として供給される構成となる。もう1つの入力データは鍵スケジュールから出力された拡大鍵の一部のデータが用いられ、この鍵データのことをラウンド鍵と呼ぶものとする。またラウンド関数の総数は総ラウンド数と呼ばれ、暗号アルゴリズムごとにあらかじめ定められている値である。ここでは総ラウンド数をRで表す。データ暗号化部の入力側から見て1ラウンド目の入力データをX1とし、i番目のラウンド関数に入力されるデータをXi、ラウンド鍵をRKiとすると、データ暗号化部全体は図4のように示される。1-4.ラウンド関数ブロック暗号アルゴリズムによってラウンド関数はさまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造structureによって分類できる。代表的な構造としてここではSPN構造、Feistel構造、拡張Feistel構造を例示する。アSPN構造ラウンド関数nビットの入力データすべてに対して、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理などが適用される構成。各演算の順番は特に決まっていない。図5にSPN構造のラウンド関数の例を示す。イFeistel構造nビットの入力データはn/2ビットの2つのデータに分割される。うち片方のデータとラウンド鍵を入力として持つ関数F関数が適用され、出力がもう片方のデータに排他的論理和される。そののちデータの左右を入れ替えたものを出力データとする。F関数の内部構成にもさまざまなタイプのものがあるが、基本的にはSPN構造同様にラウンド鍵データとの排他的論理和演算、非線形演算、線形変換の組み合わせで実現される。図6にFeistel構造のラウンド関数の一例を示す。ウ拡張Feistel構造拡張Feistel構造はFeistel構造ではデータ分割数が2であったものを,3以上に分割する形に拡張したものである。分割数をdとすると、dによってさまざまな拡張Feistel構造を定義することができる。F関数の入出力のサイズが相対的に小さくなるため、小型実装に向いているとされる。図7にd=4でかつ、ひとつのラウンド内に2つのF関数が並列に適用される場合の拡張Feistel構造の一例を示す。また,図8にd=8でかつ,ひとつのラウンド内に1つのF関数が適用される場合の拡張Feistel構造の一例を示す。1-5.非線形変換処理部非線形変換処理部は、入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために対象データを複数の単位に分割し、それぞれに対して非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとして、それらをsビットずつのm個のデータに分割して、それぞれに対してsビット入出力を持つ非線形変換を行う構成である。それらのsビット単位の非線形変換をS-boxと呼ぶものとする。図9に例を示す。1-6.線形変換処理部線形変換処理部はその性質上、行列として定義することが可能である。行列の要素はGF28の体の要素やGF2の要素など、一般的にはさまざまな表現ができる。図10にmsビット入出力をもち、GF2sの上で定義されるm×mの行列により定義される線形変換処理部の例を示す。[2.拡散diffusion特性の概要について]本開示の暗号処理の説明の前に拡散diffusion特性の概要について説明する。2-1拡散diffusion特性についての説明先に簡単に説明したように、ブロック暗号の安全性を評価する指標のひとつとしてdiffusion拡散特性と呼ばれるものがある。この特性は入力データの変化を出力データに波及させる拡散させる特性と考えることができ、安全なブロック暗号にはこのような入力データの変化の影響をできるだけ速く出力データに伝えることが求められる。以下に、diffusion状態,fulldiffusion状態,fulldiffusionラウンド数を定義する。ある出力ビットを入力ビットの関係式として記述して以下の条件を満たす場合,その出力ビットはdiffusion状態になっていると定義する。条件1全入力ビットが関係式に含まれる。条件2全入力ビットが少なくとも1度はラウンド関数F関数を通過している。さらに、全出力ビットが拡散diffusion状態になっていることを全拡散fulldiffusion状態と定義する。この全拡散fulldiffusion状態を満たすために最低限必要なラウンド数繰り返し数を全拡散fulldiffusionラウンド数と定義する。これらの定義について、具体的な例として図11,図12に記載のFeistel構造を持つブロック暗号を用いて詳しく説明を行う。図11はFeistel構造を持つブロック暗号のラウンド関数の構成例を表し、図12はそのラウンド関数を3ラウンド繰り返す構造を表している。図12より第i,i1,i2ラウンド出力の左側第i1,i2,i3入力の左側のn/2ビットデータXi11,Xi21,Xi31,および第i,i1,i2ラウンド出力の右側第i1,i2,i3入力の右側のn/2ビットデータXi12,Xi22,Xi32はそれぞれ第iラウンド入力Xi1,Xi2とラウンド鍵RKi1,RKi2,RKi3を用いて以下のように表現できる。Xi11=FRKi1,Xi1Xi2Xi21=FRKi11,Xi11Xi12=FRKi11,FRKi1,Xi1Xi2Xi1Xi31=FRKi21,Xi21Xi22=FRKi21,FRKi11,Xi11Xi12Xi22=FRKi21,FRKi11,FRKi1,Xi1Xi2Xi1FRKi1,Xi1Xi2Xi12=Xi1Xi22=Xi11=FRKi1,Xi1Xi2Xi32=Xi21=FRKi11,Xi11Xi12=FRKi11,FRKi1,Xi1Xi2Xi1なお、上記式において、FK,XはデータXをパラメータKを用いてF関数で変換したデータを表し、はビット毎の排他的論理和を表す。Xi11は入力データXi1,Xi2を用いて表現されているが,Xi2がF関数を通過していないため,拡散diffusion状態にはなっていない。Xi21は入力データXi1,Xi2を用いて表現され,かつそれら入力データがF関数の入力として与えられているので,拡散diffusion状態になっていると言える.同様にXi31も拡散diffusion状態になっていると言える。Xi12はXi1のみで表現されているため,また,Xi22はXi2がF関数を通過していないため拡散diffusion状態にはなっていない.Xi32は条件を満たすため拡散diffusion状態となっている.以上の結果から第i3ラウンド出力Xi31,Xi32はともに拡散diffusion状態になっているため,全拡散fulldiffusion状態であると言える。このように、図11、図12に示されるFeistel構造を持つブロック暗号の全拡散fulldiffusionラウンド数は3ラウンドであることが分かる。全拡散fulldiffusion状態になっていない場合、特定の出力ビットは特定の入力ビットと非線形関数F関数の影響を受けていないということになるため、各種攻撃に対して脆弱になることが予想される。特に拡散diffusion特性は不能差分攻撃、飽和攻撃といった攻撃に対する安全性を直接的に評価する指標としても用いられる。全拡散fulldiffusionラウンド数は少ない方が拡散diffusion特性は高いと言える。図13、図14に別の例を挙げる。これらの図は4-lineで1段に2つのF関数を使用する一般化Feistel構造を示している。図15に第iラウンド目のn-bit入力Xiをn/4-bitずつ4つに分割し、その4番目のn/4-bitデータXi4と表記の一部のみに変化を与えた場合のその影響の波及を示す。ただし、図中で太点線は入力の変化がF関数を通過しない状態で伝播しているデータを表し、太線は入力の変化が少なくとも1回F関数を通過した状態で伝播しているデータを表す。また、F関数の各出力ビットはF関数の全入力ビットの影響を受けると仮定する。このように、あらゆる入力ビットの変化を想定して,全出力ビットが影響を受けるまでのラウンド数を求めることでも全拡散fulldiffusionラウンド数は求めることができる。実際にd=4として,1段に2つのF関数を使用する一般化Feistel構造の全拡散fulldiffusionラウンド数は5ラウンドであることが知られている。2-2拡散diffusion特性を考慮したこれまでの構成例について次に、これまでに提案されている拡散diffusion特性を考慮した処理構成についての概要を説明する。一般的に1段にd/2個のF関数を用いたd-line一般化Feistel構造は拡散diffusion特性があまりよくなく、全拡散fulldiffusionラウンド数はd1ラウンドになることが知られている。このことは、例えば、非特許文献3T.Suzaki,K.Minematsu,ImprovingtheGeneralizedFeistel,FSE2010,LNCS6147,pp.19-39,2010.に記載がある。図16にd=6とした場合の通常の一般化Feistel構造、図17に同構成の全拡散fulldiffusion状態となるパスの一例を示す。非特許文献3ではこのような課題を解決するため,n/dビット毎d個に分割したデータそれぞれについてラウンド間の配線を変更することで分割数dが6以上の場合に、従来の構成より全拡散fulldiffusionラウンド数を少なくできる構成法を提案している。図18にd=6とした場合のこの構成法、また図19にその場合の全拡散fulldiffusion状態となるパスの一例を示す。この構成で達成している全拡散fulldiffusionラウンド数はd=6,8,10,12,14,16の場合にそれぞれ5,6,7,8,8,8ラウンドとなっており、通常の構成のd1ラウンドより良い拡散diffusion特性が得られていることが分かる。しかしながら、この構成ではd=4の場合には効果がなく、またこれ以上全拡散fulldiffusionラウンド数を削減することはできない。また、非特許文献4洲崎,角尾,久保,川幡,一般化Feistel構造に拡散層を組み合わせた構造の提案,SCIS2008,2008では、n/dビット毎d個に分割したデータそれぞれについて線形演算を施すことで従来より拡散diffusion特性が高くなる構成を提案している。しかしながら、この構成の場合、線形演算のための実装手段が必要なため,実装コストの増大を招いてしまう。[3.本開示に従った拡散diffusion特性を向上させた構成例について]以上のような問題を鑑み、本開示では、一般化Feistel構造において,実装コストを増大させずにより高い拡散diffusion特性を得られるような構成法を提案する。本構成では,まず通常の構成と同様にd-lineの一般化Feistel構造において、nビット入力データをn/dビット毎d個に分割しそれぞれF関数処理,排他的論理和処理を行う図20:ステップ1。このとき、F関数に入力されるデータ系列をF関数入力側データ系列,排他的論理和されるデータ系列を排他的論理和側データ系列、と呼ぶ。その後、各系列各ラインにおいて転送されるn/dビットデータ各々について、さらにd/2個に再分割するこの際の分割は等分割でなくても良い。各系列各ライン各々でd/2個に再分割されたデータを次のルールにしたがって分配する図20:ステップ2。1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配するこのように分配した後、各d/2個に分割されたデータをそれぞれ1つのデータに結合する図20:ステップ3。これを必要回数繰り返す。分割数dが、d=4の場合の構成例を図20に示す。このように構成した場合、データの分割数dによらず全拡散fulldiffusionラウンド数4を実現することが可能になる。本方式が分割数dに関わらず全拡散fulldiffusionを実現するラウンド数=4を満たす理由を以下に示す。1第iラウンドのあらゆる入力データの変化は第i1ラウンド目の少なくとも1つのF関数に影響を与える。2第i1ラウンド目の排他的論理和側データ系列のうち少なくとも1つはdiffusion状態となっている。3第i1ラウンド目の排他的論理和側データ系列で拡散diffusion状態となっているデータはさらにd/2個に分割され,第i2ラウンド目のd/2個の全F関数に影響を与える。そのため第i2ラウンド目の全ての排他的論理和側データ系列は拡散diffusion状態になる。4第i2ラウンド目の排他的論理和側データ系列は第i3ラウンド目のF関数入力側データ系列となるため、第i3ラウンド目のF関数入力側データ系列は全て拡散diffusion状態となる。また、これら拡散diffusion状態であるデータは第i3ラウンド目の全てのF関数に入力されるため,その出力と排他的論理和される排他的論理和側データ系列も全て拡散diffusion状態となる。以上の理由から、必ず第i3ラウンド後、つまり4ラウンドで全拡散fulldiffusion状態になることが分かる。図21,図22を用いて具体例を示す。図21はd=4とした場合の本方式の一例である。d=4なので,4つに分割された各n/4ビットデータをさらに2=d/2分割している。第iラウンド入力Xi1に対応する第iラウンド出力の2分割データをそれぞれYi1L,Yi1Rとし,同様にXi2,Xi3,Xi4についても対応する各分割データをYi2L,Yi2R,Yi3L,Yi3R,Yi4L,Yi4Rとする。これら分割データのサイズは等分割した際はn/8ビットとなる。しかし、各ラインのデータの再分割処理は、必ずしも等分割であることは必要でない。例えば入力ビット数=256ビットし、分割数d=4である場合、各ラインのビット数は、n/d=256/4=64ビットとなり、この再分割データは等分割すれば32ビットとなり、2つの32ビットデータが生成される。しかし、等分割することは必須ではなく、64ビットのデータから生成する再分割データを20ビットと44ビット等、任意の組み合わせに分割してもよい。ただし、次のラウンド演算部に入力する際には、異なるラインにおいて分割された20ビットと44ビットとの組み合わせによって分割数であるd=4個の64ビット単位のデータを再構成して各分割ラインに入力する。すなわち分割数dの構成において、d本の各ラインにおける再分割処理においては、等分割することは必須ではないが、d本の各ラインにおける再分割の態様分割比率は一致させる必要がある。このとき、第iラウンド入力データのどこかに変化を与えた場合、その影響は第i1ラウンド目の2つのF関数のうち少なくとも1つに必ず入力される。例えば、Xi4のLSB1ビットのみに変化を与えた場合、その影響はYi4Rのみに伝播し、次にその影響がXi11に伝播し、このXi11が第i1ラウンド目の左側F関数に入力されることになる図22。入力ビットの他の位置に変化を与えた場合にも同様に考えることができ、少なくとも1つのF関数に影響が伝播することが保証される。第i1ラウンド目のF関数の少なくとも1つのF関数には入力の変化が影響しているので、その出力と排他的論理和されるデータは拡散diffusion状態となる。つまり,Yi12L,Yi12R,Yi14L,Yi14Rのどちらかの組は拡散diffusion状態となることが保証される。図22ではYi12L,Yi12Rがdiffusion状態となっている例を示している。本方式のルール2,3より、第i1ラウンド目の出力であるYi12L,Yi12Rは第i2ラウンド目の2=d/2個の全F関数に入力される。同様にYi14L,Yi14Rについても第i2ラウンド目の全F関数に入力される。つまり、第i1ラウンド目においてYi12L,Yi12R,Yi14L,Yi14Rのどちらの組が拡散diffusion状態となっていたとしても、第i2ラウンド目の全F関数には拡散diffusion状態のデータが入力されることになる。よって、それらF関数の出力と排他的論理和されるデータYi22L,Yi22R,Yi24L,Yi24Rは全て拡散diffusion状態になり、これらはルール2,3よりXi31,Xi33に供給されるため、Xi31,Xi33も拡散diffusion状態となることが分かる。これら拡散diffusion状態にあるXi31,Xi33は第i3ラウンド目のそれぞれのF関数に入力されるため、その出力と排他的論理和された結果であるYi22L,Yi22R,Yi24L,Yi24R、つまり、Xi41,Xi43も拡散diffusion状態となる。以上の結果から、本方式では、全拡散fulldiffusionラウンド数4を満たすことが可能になる。図22はd=4の場合の本方式で全拡散fulldiffusion状態となるパスの一例を示す。この構成例では従来構成の全拡散fulldiffusionラウンド数である5ラウンドより少ない4ラウンドを実現できていることが分かる。図22にこの構成におけるd=4の場合のfulldiffusionを満たすパスの一例を示す。また、図23にd=6とした場合の構成例、図24にその場合の全拡散fulldiffusion状態となるパスの一例を示す図中のラウンド間置換の前後に記述されている数字は置換後にどの位置にデータが配置されているかを示すインデックスを表す。以上、説明した本開示に係る構成では、従来構成と比較して非常に高い拡散diffusion特性が得られていることが分かる。また、本開示の構成では、線形演算を含まないため、実装コストを増大させることもない。このように、本実施例は、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、この暗号処理部において以下のようなデータの再分割と再構成を伴うラウンド演算を繰り返し実行する。すなわち、暗号処理部は、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する。このラウンド演算の繰り返し処理に際して、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する。具体的には、以下の条件を満足する再分割と再構成処理を行う。1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配するこのような条件を満たす処理を行う。例えば、暗号処理部は、ラウンド演算の出力データを有するd個のライン各々のn/dビットデータをd/2個に再分割して、d×n/d個の再分割データを生成し、分割数dに応じたd本のラインの異なるラインから選択したd/2個の再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する。このような処理を行うことで、前述した全拡散fulldiffusion状態を満たすために最低限必要なラウンド数繰り返し数、すなわち、全拡散fulldiffusionラウンド数を4に設定することが可能となる。なお、前述したように、ある出力ビットを入力ビットの関係式として記述して以下の条件を満たす場合,その出力ビットはdiffusion状態になっていると定義する。条件1全入力ビットが関係式に含まれる。条件2全入力ビットが少なくとも1度はラウンド関数F関数を通過している。さらに、全出力ビットが拡散diffusion状態になっている場合が全拡散fulldiffusion状態である。本開示の実施例として説明した構成例では,入力nビットをd分割したデータを転送する各ライン、すなわちd/2本のF関数入力側データ系列ラインと、d/2本の排他的論理和側系列ライン各々で転送される各n/dビットデータをそれぞれd/2個に分割した例を説明した。これは、全拡散fulldiffusionを実現するための最小ラウンド数=4を実現するための設定である。図25に分割数d:d=6の場合に各ラインで転送されるn/dビットデータn/6ビットデータを2分割、すなわちd/12ビットに分割してラウンド間の転送を行う構成例を示す。しかし、ラウンド数を4に限定しなければ、全拡散fulldiffusionを実現するための分割数は、各ライン各々についてd/2個に限定されるものではない。入力nビットの分割数:dと、各ライン各々の分割数:pと、全拡散fulldiffusionを実現するためのラウント数、これらの対応関係を示す図を図26に示す。適切にデータ系列を分配すれば、全拡散fulldiffusionラウンド数は、以下の式で算出できる。ラウンド数=3[logpd/2]ただし、[x]はx以上の最小の整数とする。さらに拡張例としてF関数入力側データ系列と排他的論理和側データ系列とでそれぞれ異なる分割を行った構成を図27に示す。図27に示す構成は、分割数d:d=6の場合に、d/2=3本のF関数入力側データ系列ラインについては、2分割、d/2=3本の排他的論理和側系列ラインについては、3分割した例である。このような構成としても、適切にデータ系列を分配すれば、全拡散fulldiffusionラウンド数は4とすることが可能である。また、本方式は拡大鍵ラウンド鍵の挿入位置によらず効果が得られる。図21に記載の構成例で拡大鍵ラウンド鍵の挿入位置を変更した構成例を図28に示す。図21においては、拡大鍵ラウンド鍵を各F関数に挿入して適用している。これに対して、図28に示す構成では、拡大鍵ラウンド鍵をF関数出力と排他的論理和側データ系列との排他的論理和演算な部に挿入している。このような構成においても、前述の各ラウント間のデータの再分割処理による転送構成によって、全拡散fulldiffusionラウンド数の削減が実現される。[4.より効率的なデータ分配法を持つ構成例について]上記の項目[3.本開示に従った拡散diffusion特性を向上させた構成例について]では、一般化Feistel構造において,実装コストを増大させずにより高い拡散diffusion特性を得られるような構成法について説明した。すなわち、入力データであるnビットデータを分割数dで分割したn/dビットデータを各ラインに入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する構成において、ラウンド演算の出力データを有するライン各々のn/dビットデータをさらにd/2個に再分割し、この再分割データを組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして処理を実行する構成である。以下では、上述した実施例において説明したデータ分配法のより効率的な手法について説明する。まず、図29を参照して本実施例の基本的な構成例について説明する。本構成では、まず前述した上記項目[3]において説明した実施例と同様、d-lineの一般化Feistel構造において、nビット入力データを分割数dに従って、n/dビット毎のd個に分割し、それぞれ、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する。i段のラウンド演算後、d個の各ライン系列各々のn/dビット系列をさらにそれぞれd/2個に再分割する。i段目のラウンド演算後の、各ライン系列各々のd/2個に分割された出力データのデータ中、j番目のデータをYi[j]と表すただし、jは1以上d2/2以下の整数。同様にi1段目のラウンド演算部における分割数:dの各ライン単位のn/dビットをそれぞれd/2個に再分割したデータ中、j番目のデータをXi1[j]と表すただし、jは1以上d2/2以下の整数。また、YYi[t]をYi[j]のうち、j=d/2stを満たすものを順に連結したデータとする。ただしsは0以上d-1以下、tは1以上d/2以下の整数である。具体的には、例えば、YYi[1]=Yi[1]||Yi[1×d/21]||Yi[2×d/21]||...||Yi[d-1×d/21]、YYi[2]=Yi[2]||Yi[1×d/22]||Yi[2×d/22]||...||Yi[d-1×d/22]、...YYi[d/2]=Yi[d/2]||Yi[1×d/2d/2]||Yi[2×d/2d/2]||...||Yi[d-1×d/2d/2]となる。同様にXXi[t]をXi[j]のうち、j=d/2stを満たすものを順に連結したデータとする。ただし、Xi[j]は、i段目の入力データをn/dビット毎d個に分割したものをそれぞれd/2個に分割したデータのj番目のデータ、sは0以上d-1以下、tは1以上d/2以下の整数である。前記の項目[3]において説明した手法では、分配のパターンが多くなってしまい評価に時間がかかる。すなわち、前記の項目[3]において説明した手法では、以下の1~3の条件を満足する分配パターンであればよい。1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配するこの条件1~3を満足する分配パターンは、多数存在する。特に入力データの分割数dが大きいような場合は分配のパターンが非常に多くなるため容易に決定できない。また、分配法によっては実装時のコストが大きくなってしまうものもある。以下では、選択許容可能な分配パターンを予め限定し、さらに実装コストも低減できる分配法を提案する。本提案方式は前記の項目[3]で説明した分配方式をさらに改良した方式となる。まず、i1段目の入力データをn/dビット毎d個に分割したものをそれぞれd/2個に再分割したデータのj番目のデータXi1[j]のうち、j=d/2stを満たすものを順に連結したデータXXi1[t]のデータ系列を2t-1データ分だけ左に巡回シフトさせたデータ系列を、ZZi1[t]とする。具体的には、例えば、ZZi1[1]=XXi1[1]<<<1となるので、ZZi1[1]=XXi1[1]<<<1=Xi1[1]||Xi1[1×d/21]||Xi1[2×d/21]||||Xi1[d-1×d/21]<<<1=Xi1[1×d/21]||Xi1[2×d/21]||...||Xi1[d-1×d/21]||Xi1[1]となる。以上のように定義されたYYi[j]、およびZZi1[j]を用い、各YYi[j]より重複なくひとつずつZZi1[j]を選択し、接続することで第iラウンド目のデータから第i1ラウンド目のデータへのデータ置換を決めることができる。入力データの分割数d:d=6とした場合を図30に例示する。図30での各中間変数は以下のように定義される。なお、中間変数とは、以下の3種類のデータである。YYi[t]:i段目のd/2個に分割された出力データのうちj番目のデータYi[j]ただし、jは1以上d2/2以下の整数のうち、j=d/2stただし、sは0以上d-1以下、tは1以上d/2以下の整数を満たすものを順に連結したデータ。XXi1[t]:i1段目の入力データをn/dビット毎d個に分割したものをそれぞれd/2個に分割したデータのj番目のデータXi1[j]のうち、j=d/2stただし、sは0以上d-1以下、tは1以上d/2以下の整数を満たすものを順に連結したデータ。ZZi1[t]:XXi1[t]のデータ系列を2t-1データ分だけ左に巡回シフトさせたデータ系列。これらの中間変数である。図30に示すように、入力データの分割数d:d=6とした場合、tは1以上d/2以下の整数であり、t=1,2,3の各値が設定され、中間変数として、i段目出力データ対応の中間変数YYi[t]:YYi[1]、YYi[2]、YYi[3]、i1段目のシフト前入力データ対応の中間変数XXi1[t]:XXi1[1]、XXi1[2]、XXi1[3]i1段目のシフト後入力データ対応の中間変数ZZi1[t]:ZZi1[1]、ZZi1[2]、ZZi1[3]これらが以下のように算出される。i段目出力データ対応の中間変数YYi[t]:YYi[1]、YYi[2]、YYi[3]は、以下の設定となる。YYi[1]=Yi[1]||Yi[4]||Yi[7]||Yi[10]||Yi[13]||Yi[16]、YYi[2]=Yi[2]||Yi[5]||Yi[8]||Yi[11]||Yi[14]||Yi[17]、YYi[3]=Yi[3]||Yi[6]||Yi[9]||Yi[12]||Yi[15]||Yi[18]、i1段目のシフト前入力データ対応の中間変数XXi1[t]:XXi1[1]、XXi1[2]、XXi1[3]は、以下の設定となる。XXi1[1]=Xi1[1]||Xi1[4]||Xi1[7]||Xi1[10]||Xi1[13]||Xi1[16]、XXi1[2]=Xi1[2]||Xi1[5]||Xi1[8]||Xi1[11]||Xi1[14]||Xi1[17]、XXi1[3]=Xi1[3]||Xi1[6]||Xi1[9]||Xi1[12]||Xi1[15]||Xi1[18]、i1段目のシフト後入力データ対応の中間変数ZZi1[t]:ZZi1[1]、ZZi1[2]、ZZi1[3]は、以下の設定となる。ZZi1[1]=Xi1[4]||Xi1[7]||Xi1[10]||Xi1[13]||Xi1[16]||Xi1[1]、ZZi1[2]=Xi1[11]||Xi1[14]||Xi1[17]||Xi1[2]||Xi1[5]||Xi1[8]、ZZi1[3]=Xi1[18]||Xi1[3]||Xi1[6]||Xi1[9]||Xi1[12]||Xi1[15]。ここで、図30に示すように、例えばYYi[1]とZZi1[1]を、YYi[2]とZZi1[2]をYYi[3]とZZi1[3]を接続する。この場合、図31上部のaに示されるようなデータ分配法となる。また、例えばYYi[1]とZZi1[2]を、YYi[2]とZZi1[3]をYYi[3]とZZi1[1]を接続した場合は図31下部のbに示されるようなデータ分配法となる。このように、本実施例の暗号処理装置の暗号処理部の設定、すなわち、前段のラウンド演算の出力データと次段のラウンド演算の再分割データの入出力関係を決定する接続構成は、ラウンド演算の出力データを有するラインのn/dビットデータの再分割処理によって生成されるd×n/d個の再分割データの組み合わせデータであるd/2個の2n/dビットのデータセットを単位とした接続構成から選択される。以上のように決められたデータ分配法は、前述した項目[3]において説明した条件、すなわち、1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配するこの条件1~3を満足する。したがって、拡散diffusion特性の改善が可能となる。また、前述の項目[3]の方法では、d/2×d/2種類のデータ系列をd/2×d/2種類のデータ系列から1つずつ選んで分配する必要があったが実際にはこの処理をさらにもう1回繰り返す必要がある、本方式ではd/2種類のデータ系列をd/2種類のデータ系列から1つずつ選んで分配すればよいため、選択しなければならないパターンを大幅に削減できる。さらに、上記方法で選択された分配法は、データの分配について規則性があるため、実装コストを削減することが可能となる。[5.インボリューションinvolution性を備えた構成例について]通常のFeistel構造における暗号化関数は図32のように表現することができる。また、通常のFeistel構造における復号関数は図33のように表現することができる。これらの図32、図33の構成から理解されるように、F関数に挿入される拡大鍵ラウンド鍵の順序を適切に入れ替えるだけで暗号化関数と復号関数は全く同じ関数を使用することが可能である。このように、拡大鍵ラウンド鍵の挿入を除き、暗号化関数と復号関数を同一構成で実現可能とした性質をインボリューション性と呼ぶ。インボリューション性を持つ暗号処理構成においては、拡大鍵ラウンド鍵の順序を適切に入れ替えれば暗号化関数、復号関数を共有可能であり、復号関数を別途用意する必要はない。したがって、一般的にインボリューション性を持つ暗号は、インボリューション性を持たない暗号に比べて少ない実装コストで実装することが可能であると言える。また、暗号化関数と復号関数で同じ関数を用いられることは、検証コストが半減できる検証は暗号化関数、復号関数のどちらかで検証できればよい、コードサイズが半減できる、などのメリットもある。このように、図32、図33の分割数d=2の通常のFeistel構造では、F関数に挿入される拡大鍵ラウンド鍵の順序を適切に入れ替えるだけで暗号化関数と復号関数は全く同じ関数を使用することが可能であり、インボリューション性を持つ構造を容易に構成できる。しかし、分割数:dが2以外の構成を含む一般化Feistel構造GeneralizedFeistelNetworksでのインボリューション性は容易に構成可能とは言えない。1段にd/2個のF関数を用いたd-line一般化Feistel構造のインボリューション性について考えるただし、d>2。先に説明した図14に示すような4-line一般化Feistel構造では、処理ラウンド数が奇数であれば、インボリューション性を持つことが知られている。例えば3ラウンドで構成された4-line一般化Feistel構造はインボリューション性を持つ5ラウンド構成も同様。しかしながら処理ラウンド数が偶数の場合は、インボリューション性を持たない。一般的にd-line一般化Feistel構造においては、構成ラウンド数を、分割数:dで割ったときの剰余が、1、もしくは、d/21である場合のみインボリューション性を持つ。例えば、図14に示す4-line一般化Feistel構造では、構成ラウンド数を、分割数d=4で割ったときの剰余が、1、もしくは、d/21=4/21=3である場合のみインボリューション性を持つ。具体的には、構成ラウンド数=1,3,5,7,9、つまり構成ラウンド数が奇数である場合のみインボリューション性を持つ。また、例えば、分割数d=6とした6-line一般化Feistel構造では、構成ラウンド数を、分割数d=6で割ったときの剰余が、1、もしくは、d/21=6/21=4である場合のみインボリューション性を持つ。具体的には、構成ラウンド数=1,4,7,10,13、構成ラウンド数がこれらの数である場合のみインボリューション性を持つ。このように、一般的にd-line一般化Feistel構造においては構成ラウンド数に関わらずインボリューション性を持つということはない。図34は、前述の項目[3.本開示に従った拡散diffusion特性を向上させた構成例について]において説明したラウンド演算間のデータ再分割、再合成処理によって高い拡散diffusion特性を得られる4-line構造の一方式を示す図である。この方式では、構成ラウンド数が13nただしnは0以上の整数の場合のみインボリューション性を満たす。構成ラウンド数は安全性、実装性能に大きな関連がある。構成ラウンド数に関わらずインボリューション性を持つような構造であれば、より柔軟にラウンド数を設定でき、安全性、実装性能を柔軟に変更できる上、インボリューション性の特性により、小型な実装も可能となる。実装コストを増大させずにより高い拡散diffusion特性を得られ、さらに構成ラウンド数に関わらずインボリューション性を満たすようなラウンド間置換の構成法について説明する。以下において説明する方式は、前記の項目[3.本開示に従った拡散diffusion特性を向上させた構成例について]において説明した高い拡散diffusion特性を得られる構成に、さらにインボリューション性を持たせる方式となる。本方式の一例について、図35を参照して説明する。本方式は、図35に示すように、以下のステップ1~3の処理を繰り返し実行することになる。ステップ1まず通常の構成と同様に分割数dのd-lineの一般化Feistel構造において、nビット入力データを分割数dに応じて、n/dビット毎、d個に分割し、各n/dビットを各分割ラインに入力して、それぞれF関数処理、排他的論理和処理を行う。このとき、F関数に入力されるデータ系列をF関数入力側データ系列、排他的論理和されるデータ系列を排他的論理和側データ系列と呼ぶ。F関数入力側データ系列のうち最も左側にあるF関数入力側データ系列をL0とし、例えば左側から順にL1、...、Ld/2-1と表す。同様に排他的論理和側データ系列を例えば左側から順にR0、...、Rd/2-1と表す。ステップ2その後、各系列ラインの転送データであるn/dビットデータをさらにd/2個に再分割する。この再分割は、等分割でなくてもよい。この再分割されたデータを、F関数入力側データ系列、排他的論理和側データ系列各々について、それぞれLij、Rijと表現する。iは、各系列ラインの識別子番号、jは、1つの系列ラインの再分割データ各々識別子番号、である。例えば、最も左側のF関数入力データ系列をd/2個に再分割した最も左側のデータをL00とし、順にL01、...、L0d/2-1と表現する。そしてそれぞれの各系列ラインにおいてd/2個に再分割されたデータを次のルールにしたがって分配する。ル-ル2-1最も左側のF関数入力データ系列、すなわちi=0のL0のデータを分配する。L00を次のラウンド関数のR00に分配、L01を次のラウンド関数のR11に分配、同様にi=d/2-1までL0iをRiiに分配する。すなわち、L00=R00,L01=R11,L02=R22,となる。ル-ル2-2次にL1のデータを分配する。L10を次のラウンド関数のR10に分配、L11を次のラウンド関数のR21に分配、同様にi=d/2-1までL1iをRi1modd/2iに分配する。ル-ル2-3以下、Ld/2-1のデータまで、上記2と同様の処理を繰り返す。つまり、Lijを次のラウンドのRijmodd/2jに分配するただし、i、jはそれぞれ0以上d/2-1以下。ル-ル2-4排他的論理和側データ系列についても同様の処理を繰り返す。つまり、Rijを次のラウンド関数のLd/2i-jmodd/2jに分配する。ただし、i、jはそれぞれ0以上d/2-1以下である。ステップ3このように分配した後、各d/2個に分割されたデータをそれぞれ1つのデータに結合する。以上の処理を、ラウント演算の実行回数に応じて必要回数繰り返す。図36に4-lined=4の場合に上記処理を実行する構成の一構成例、図37に6-lined=6の場合に上記処理を実行する構成の一構成例を示す。これら、図36、図37に示す構成では、各系列ラインにおいてd/2個に再分割されたデータを上記ステップ2に示すルール2-1~2-4に従って月のラウンドに対して再分配する構成を有する。このデータの再分割と再分配構成によって、これらの方式は構成ラウンド数に関わらずインボリューション性を持つ。また、図38、図39は上記構成例とは異なる構成法であるが、構成ラウンド数に関わらずインボリューション性を持つ方式である。なお、先の項目[3]において説明した図21に示されている方式は、構成ラウンド数が奇数であればインボリューション性を持つ構成の一例である。このように、暗号処理部の各ラウンド演算の再分割データの再構成処理は、前段のラウンド関数入力側系列の再分割データを、上述した予め決定した規則に従って次段の排他的論理和側系列に分配し、前段の排他的論理和側系列の再分割データを、上述した予め決定した規則に従って次段のラウンド関数入力側系列に分配する構成としている。この構成によって、同一の構成で暗号化処理と復号処理双方に適用可能なインボリューション性を持つ構成を実現することができる。[6.暗号処理装置の構成例について]最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の実相例について説明する。上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康、医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な危機において利用可能である。本開示の暗号処理を実行する装置の一例としてのICモジュール700の構成例を図40に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図40に示すICモジュール700は、これら様々な機器に構成することが可能である。図40に示すCPUCentralprocessingUnit701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROMRead-Only-Memory、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAMRandomAccessMemory等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル置換表や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。暗号処理部703は、上記において説明した暗号処理構成、すなわち、例えば一般化Feistel構造や、Feistel構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。なお、上述した実施例において説明した暗号処理装置は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。[7.本開示の構成のまとめ]以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。なお、本明細書において開示した技術は、以下のような構成をとることができる。1データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、前記暗号処理部は、入力データであるnビットデータを分割数dで分割したn/dビットデータを前記各ラインに入力して、前記ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行する構成であり、ラウンド演算の出力データを有するラインのn/dビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する暗号処理装置。2前記ラウンド関数は、ラウンド鍵を適用した演算と、非線形変換処理と、線形変換処理を含むF関数、およびF関数の出力または入力に対する他ラインのデータとの排他的論理和演算を含む前記1に記載の暗号処理装置。3前記暗号処理部は、1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する、2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する、3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配する、上記1~3の分配条件を満たす処理によって前段のラウンド演算の演算結果を次段のラウンド演算の入力として設定する前記1または2に記載の暗号処理装置。4前記暗号処理部は、入力データの分割数dを4以上とした一般化Feistel構造を有する前記1~3いずれかに記載の暗号処理装置。5前記暗号処理部は、ラウンド演算の出力データを有するd個のライン各々のn/dビットデータをd/2個に再分割して、d×n/d個の再分割データを生成し、分割数dに応じたd本のラインの異なるラインから選択したd/2個の再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個のn/dビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する前記1~4いずれかに記載の暗号処理装置。6前記暗号処理部は、全出力ビットが以下に示す2つの条件を満足する拡散diffusion状態、すなわち、出力ビットを入力ビットの関係式として記述した場合に、条件1全入力ビットが関係式に含まれる条件2全入力ビットが少なくとも1度は前記ラウンド関数を通過している上記2つの条件を満足する全拡散fulldiffusion状態を実現する構成である前記1~5いずれかに記載の暗号処理装置。7前記暗号処理部は、前記全拡散fulldiffusion状態を4ラウンドのラウンド演算によって実現する前記1~6いずれかに記載の暗号処理装置。8前記暗号処理部の前段のラウンド演算の出力データと次段のラウンド演算の再分割データの入出力関係を決定する接続構成は、ラウンド演算の出力データを有するラインのn/dビットデータの再分割処理によって生成されるd×n/d個の再分割データの組み合わせデータであるd/2個の2n/dビットのデータセットを単位とした接続構成から選択される接続構成である前記1~7いずれかに記載の暗号処理装置。9前記暗号処理部は、暗号化処理と復号処理の双方に適用可能なインボリーション性を有する前記1~8いずれかに記載の暗号処理装置。10前記暗号処理部の各ラウンド演算の再分割データの再構成処理は、前段のラウンド関数入力側系列の再分割データを、予め決定した規則に従って次段の排他的論理和側系列に分配し、前段の排他的論理和側系列の再分割データを、予め決定した規則に従って次段のラウンド関数入力側系列に分配する構成である前記1~9いずれかに記載の暗号処理装置。11前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する前記1~10いずれかに記載の暗号処理装置。さらに、上記した装置およびシステムにおいて実行する処理の方法や、処理を実行させるプログラムも本開示の構成に含まれる。また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LANLocalAreaNetwork、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。"