"データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理装置。前記鍵スケジュール部は、前記ラウンド演算実行部に対する前記複数のラウンド鍵の入力シーケンスを、前記ラウンド演算実行部における複数ラウンド単位で変更する請求項1に記載の暗号処理装置。前記暗号処理部は、前記複数のラインに分割されたデータを入力して非線形変換処理と、線形変換処理を含むF関数実行部と、前記F関数実行部の出力に対して、前記ラウンド鍵を適用した演算を実行する演算部を有する請求項1に記載の暗号処理装置。前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵と同一のビット数を持つ複数のラウンド鍵を生成する請求項1に記載の暗号処理装置。前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵より少ないビット数を持つ複数のラウンド鍵構成データを生成し、前記複数のラウンド鍵構成データを複数連結して前記ラウンド演算実行部に入力するラウンド鍵と同一ビット数のラウンド鍵を生成する請求項1に記載の暗号処理装置。前記鍵スケジュール部は、前記暗号処理部において順次実行するラウンド演算実行部に対して、ラウンド演算実行部において並列適用する複数のラウンド鍵を並列出力する請求項1に記載の暗号処理装置。前記鍵スケジュール部は、前記ラウンド演算実行部に対する鍵の選択供給処理を行う1以上のセレクタを有する請求項1に記載の暗号処理装置。前記鍵スケジュール部は、前記複数のラウンド鍵または前記ラウンド鍵構成データを区分した複数のグループを設定し、設定したグループ単位で、前記ラウンド演算実行部に対する鍵供給シーケンスの制御処理を行う請求項1に記載の暗号処理装置。前記鍵スケジュール部は、前記グループ単位のセレクタを有する請求項8に記載の暗号処理装置。前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する請求項1に記載の暗号処理装置。暗号処理装置において実行する暗号処理方法であり、暗号処理部が、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理ステップと、鍵スケジュール部が、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行し、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理方法。暗号処理装置において暗号処理を実行させるプログラムであり、暗号処理部に、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行させる暗号処理ステップと、鍵スケジュール部に、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行させ、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記鍵スケジュール部に、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力させるプログラム。本開示は、例えば上述の状況に鑑みてなされたものであり、関連鍵攻撃等の不正な暗号解読を困難化し、安全性の高い暗号処理装置、および暗号処理方法、並びにプログラムを提供することを目的とする。本開示の第1の側面は、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理装置にある。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ラウンド演算実行部に対する前記複数のラウンド鍵の入力シーケンスを、前記ラウンド演算実行部における複数ラウンド単位で変更する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、前記複数のラインに分割されたデータを入力して非線形変換処理と、線形変換処理を含むF関数実行部と、前記F関数実行部の出力に対して、前記ラウンド鍵を適用した演算を実行する演算部を有する。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵と同一のビット数を持つ複数のラウンド鍵を生成する。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵より少ないビット数を持つ複数のラウンド鍵構成データを生成し、前記複数のラウンド鍵構成データを複数連結して前記ラウンド演算実行部に入力するラウンド鍵と同一ビット数のラウンド鍵を生成する。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記暗号処理部において順次実行するラウンド演算実行部に対して、ラウンド演算実行部において並列適用する複数のラウンド鍵を並列出力する。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ラウンド演算実行部に対する鍵の選択供給処理を行う1以上のセレクタを有する。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記複数のラウンド鍵または前記ラウンド鍵構成データを区分した複数のグループを設定し、設定したグループ単位で、前記ラウンド演算実行部に対する鍵供給シーケンスの制御処理を行う。さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記グループ単位のセレクタを有する。さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する。さらに、本開示の第2の側面は、暗号処理装置において実行する暗号処理方法であり、暗号処理部が、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理ステップと、鍵スケジュール部が、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行し、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理方法にある。さらに、本開示の第3の側面は、暗号処理装置において暗号処理を実行させるプログラムであり、暗号処理部に、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行させる暗号処理ステップと、鍵スケジュール部に、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行させ、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記鍵スケジュール部に、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力させるプログラムにあるなお、本開示のプログラムは、例えば、様々なプログラムコードを実行可能な情報処理装置やコンピュータシステムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータシステム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。本開示の一実施例によれば、ラウンド鍵の供給制御により安全性の高い暗号処理装置が実現される。具体的には、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵を生成する置換型鍵スケジュール部であり、暗号処理部において順次実行するラウンド演算実行部に対して、生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する。本構成により、例えば関連鍵攻撃等に対する耐性の高い安全性の高い暗号処理構成が実現される。以下、図面を参照しながら本開示に係る暗号処理装置、および暗号処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。1.共通鍵ブロック暗号の概要2.鍵スケジュール部の構成と処理の概要について3.鍵スケジュール部に対する攻撃とこれまでの対策例について4.関連鍵攻撃に対し安全性を得られる置換型鍵スケジュール部について5.鍵置換型鍵スケジュール部の様々な構成例バリエーションについて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構造の一例を示す。エd系列一般化Feistel構造分割数dが偶数である拡張Feistel構造において、ひとつのラウンド内にd/2個のF関数が並列に適用される。また、ラウンド間の置換としてcyclicshiftを用いる。なお、図7、18、20は4系列一般化Feistel構造を示す。1-5.非線形変換処理部非線形変換処理部は、入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために対象データを複数の単位に分割し、それぞれに対して非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとして、それらをsビットずつのm個のデータに分割して、それぞれに対してsビット入出力を持つ非線形変換を行う構成である。それらのsビット単位の非線形変換をS-boxと呼ぶものとする。図9に例を示す。1-6.線形変換処理部線形変換処理部はその性質上、行列として定義することが可能である。行列の要素はGF28の体の要素やGF2の要素など、一般的にはさまざまな表現ができる。図10にmsビット入出力をもち、GF2sの上で定義されるm×mの行列により定義される線形変換処理部の例を示す。[2.鍵スケジュール部の構成と処理の概要について]本開示の暗号処理の説明の前に、前提となる構成である鍵スケジュール部の構成と処理の概要について説明する。鍵スケジュール部拡大鍵生成部は、図11に示すように、k-bitの秘密鍵Kを入力として、ある定められた変換によりk-bitの拡大鍵ラウンド鍵Kを生成する関数である。一般的にはk<kであり、データ暗号化部がラウンド関数と呼ばれる非線形演算の繰り返し処理を行う場合、各ラウンド関数に供給するラウンド鍵をm-bit、ラウンド関数の繰り返し回数をRとしたとき、k=m×Rとなる。図12に示すような設定である。例えば、通鍵ブロック暗号AESにおいては、k=128の場合、m=128,R=11であるため、k=1408である。k=192の場合、m=128,R=13であるため、k=1664である。鍵スケジュール部には安全性上以下のような特性特性1~3が求められる。特性1等価鍵が存在しないことなお、秘密鍵K0を入力したときの拡大鍵K0と,秘密鍵K1≠K0を入力したときの拡大鍵K1に対し、K0=K1が成り立つとき、K0とK1を等価鍵と呼ぶ。特性2関連鍵攻撃relatedkeyattackに対して十分な耐性を持つこと一般的な攻撃は、ある固定された秘密鍵上での平文や暗号文間のデータの偏り差分,線形性などを利用したものであるのに対し、関連鍵攻撃では複数の秘密鍵上での平文や暗号文間データの偏りを利用するものである。例えば、2つの秘密鍵の値は分からないが、秘密鍵の差分については既知であるという仮定のもとで行う攻撃である。また、秘密鍵の差分を攻撃者が自由に選べるという強力な仮定を置く攻撃も存在する。この仮定の下でも安全性を達成していることが望ましい。例えば、通常の差分攻撃関連鍵を考慮しない差分攻撃の場合、攻撃者は未知の秘密鍵Kによって暗号化された複数の平文P,暗号文C=EK,Pの組のみを利用して、その未知の秘密鍵Kを導出する。しかしながら、関連鍵差分攻撃の場合、攻撃者は未知の秘密鍵Kによって暗号化された複数の平文P,暗号文C=EK,Pの組に加えて、その未知の秘密鍵Kに対し、攻撃者が指定した任意の秘密鍵差分ΔKを加えたKΔKによって暗号化された複数の平文P,暗号文C=EKΔK,Pの組も用いて未知の秘密鍵Kを導出する。但し、は排他的論理和演算子を表す。よって、関連鍵差分攻撃は攻撃者が利用できる情報がより増えているため通常の差分攻撃よりさらに強力な攻撃となる。特性3スライド攻撃slideattackに対し十分な耐性を持つこと例えば、秘密鍵K0を入力したときのラウンド鍵をRK1,RK2,...,RKRとし、秘密鍵K1を入力したときのラウンド鍵がRK2,RK3,...,RKR1のように、スライドした値を取るとき、安全性が損なわれる可能性がある。さらに鍵スケジュール部には実装上以下のような特性特性4~9も要求される。特性4実装が容易であること特性5秘密鍵から拡大鍵を生成するセットアップ時間が短いこと特性6on-the-flyで拡大鍵が生成できること特性7暗号化鍵スケジュール部,復号鍵スケジュール部ができる限り共有可能であること特性8データ暗号化部,データ復号部とできる限り共有可能であること特性9秘密鍵長の変更に容易に対応できること鍵スケジュール部は安全性、および実装の観点からこれらの特性をバランスよく満たすことが望まれる。[3.鍵スケジュール部に対する攻撃とこれまでの対策例について]次に、鍵スケジュール部に対する攻撃とこれまでの対策例について説明する。鍵スケジュール部は各種の共通鍵ブロック暗号毎に、様々な設計がなされている。鍵スケジュール部の安全性、実装性能はデータ暗号化部と深い関連があるが、一般的にデータ暗号化部と同様に安全性と実装性能にはトレードオフがあると考えられている。例えば、鍵スケジュール部に複雑な非線形関数を導入している暗号としてCLEFIA非特許文献3:SonyCorporation,The128-bitBlockcipherCLEFIAAlgorithmSpecification,Revision1.0,2007.、Camellia非特許文献4:青木,市川,神田,松井,盛合,中嶋,時田,128ビットブロック暗号Camelliaアルゴリズム仕様書,第2.0版,2001などが挙げられる。これらは関連鍵攻撃など鍵スケジュール部に起因する攻撃法に対して高い安全性を持つが、実装コストが比較的高く、特にハードウェア実装の際に回路規模が増大してしまうという問題がある。また、実装性能を高めるために比較的シンプルな非線形関数を導入した鍵スケジュール部を持つ暗号としてAESが挙げられるが、AESは関連鍵攻撃に対して脆弱なことが知られている192/256-bit鍵の場合。さらに実装性能を高める手法として非線形関数を用いずに線形関数のみで構成する手法が挙げられる。その中でも秘密鍵データを複数個に分割し、それらを置換するだけの鍵スケジュール部は、特にハードウェア実装の際に回路がほとんど不要であり、高い実装性能を持つとされる。このような鍵スケジュール部を置換型鍵スケジュール部と呼ぶ。置換型鍵スケジュール部は高い実装性能を持つものの、安全性上の問題を抱える方式が多い。例えば、図13に示すように、ブロック暗号GOST非特許文献5:GOST28147-89:Encryption,Decryption,andMessageAuthenticationCodeMACAlgorithms,RFC5830.の鍵スケジュール部は、4n-bitの秘密鍵Kをn/2-bit毎、8つに等分割し、それぞれを順番にラウンド鍵とする構造になっているこれは、秘密鍵Kに対する一切の演算を行わず、ラウンド毎のセレクタのみで鍵スケジュール部を構成できるため、ハードウェア実装の際に必要な回路が非常に少ないという特長を持つ。しかしながら、図14に示すように、GOSTのデータ構造はFeistel構造を取っており、ラウンド鍵を各F関数の前に排他的論理和しているため、関連鍵攻撃に対して脆弱であることが知られており、実際に確率1で攻撃に成功してしまうことが知られている。GOSTへの確率1で成功する関連鍵攻撃秘密鍵K0から得られるラウンド鍵をRK01,RK02,...,RK0Rとし、秘密鍵K1から得られるラウンド鍵をRK11,RK12,...,RK1Rとする。このとき、秘密鍵K0と秘密鍵K1の差分を秘密鍵差分Δとし、各ラウンド鍵の差分をラウンド鍵差分Δ1,Δ2,...,ΔRとする。ここで、図15に示すように、任意の秘密鍵差分Δを与えることのできる攻撃者を想定する。このとき、鍵スケジュール部に複雑な非線形関数を導入しているCLEFIA,Camelliaなどにおいては、各ラウンド鍵差分Δiは一意には定まらず、データ暗号化部への攻撃が困難となる。しかし、図16に示すように、置換型鍵スケジュール部を持つものでは、各ラウンド鍵差分Δiは秘密鍵差分Δをm-bit毎に分割したものとなる。例えばGOSTにおいて,Δ=d,d,d,d,d,d,d,dとした場合Δは4n-bit,dはn/2-bitであり,GOSTの場合はn=64のため,それぞれ256-bit,32-bit,全てのラウンド鍵差分Δiはdと等しくなる。このとき、Feistel構造を取り、各ラウンドR1,R2,R3に提供するラウンド鍵を各F関数の前に排他的論理和している場合、図17に示すように、平文差分としてd,dを与えることでF関数への入力差分が0となる。入力差分が0であるF関数の出力差分はかならず0になるため,次のラウンド関数への入力差分はd,dとなる。同様に全てのラウンド関数において,d,dの差分が伝播していくため,暗号文差分が必ずd,dとなる。このため、GOSTに秘密鍵K,平文Pを入力したときに得られる暗号文をCとすると、秘密鍵Kd,d,d,d,d,d,d,d,平文Pd,d、を入力したときに得られる暗号文Cは確率1でC=Cd,dとなる。このような等式が成り立つ確率を、関連鍵攻撃を用いた識別攻撃の成功確率と呼ぶ。本来、関連鍵攻撃に対し強いとされるブロック暗号はこの確率が十分に小さいことを示す必要がある。また、例えば図18に示すようなtype-2一般化Feistel構造と呼ばれる構造においても,置換型鍵スケジュール部を用いて、F関数の前にラウンド鍵を排他的論理和する場合、同様に確率1で遷移する関連鍵攻撃を構成可能である。その他の置換型鍵スケジュール部を持つ暗号として、KASUMI非特許文献6:3rdGenerationPartnershipProject,TechnicalSpecificationGroupServicesandSystemAspects,3GSecurity,Specificationofthe3GPPConfidentialityandIntegrityAlgorithms;Document2:KASUMISpecification,V9.0.0,2009が挙げられる。しかしながら、KASUMIの鍵スケジュール部も高い実装性能を持つものの、関連鍵攻撃に対して脆弱であることが知られている。[4.関連鍵攻撃に対し安全性を得られる置換型鍵スケジュール部について]以上のような問題点を鑑み,以下では、実装コストを増大させずに,関連鍵攻撃に対し安全性を得られるような置換型鍵スケジュール部の構成法について説明する。本方式はまず秘密鍵Kを複数個に等分し、それぞれを以下の手法にしたがってデータ暗号化部に供給するものとする。手法1ラウンド鍵挿入位置の変更:ラウンド鍵を従来のF関数の前例えば図14,図18に示す位置ではなく、F関数の後で排他的論理和を取る例えば図19,図20に示す位置手法2ラウンド鍵生成置換の変更:データ暗号化部の構造にしたがって,関連鍵攻撃等に対して安全になるような置換法を用いてラウンド鍵を生成する。このように鍵スケジュール部を構成することで以下のような効果が得られる。効果1高い実装性能置換型鍵スケジュール部を用いることで従来型同様高い実装性能を持つことが期待される.特にハードウェア実装時の必要回路が少なくできるという利点がある。効果2ラウンド鍵の挿入位置の変更による安全性向上図19や図20に示す構成のように、ラウンド鍵をF関数の前でなく後に排他的論理和することで、置換型鍵スケジュール部を用いたとしても、従来法であるGOSTのような確率1で成功する関連鍵攻撃を防ぐことが可能となる。また、実装手法によっては、データ暗号化部の実装性能をさらに向上させることにもつなげられる。効果3ラウンド鍵の置換法の変更による安全性向上従来方式と異なり、分割した秘密鍵を順番に供給するのではなく、関連鍵攻撃耐性を持つように適切に順序を入れ替えて供給する。この順序は秘密鍵Kのbit長と分割数、及び、データ暗号化部の構造に関連があり、データ暗号化部の構造毎に鍵スケジュール部を設計する必要がある。図19に示す1ラウンドに1つのF関数を実行するFeistel構造においては、1つのラウンド鍵の長さはn/2-bitであり、秘密鍵Kが2n-bitの場合にはn/2-bit毎に4等分し、4ラウンド毎に入れ替えながら供給する。図21に示す設定である。図21に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、2n-bitの鍵データである。この2n-bit秘密鍵Kを4等分して4つのラウンド鍵K1,K2,K3,K4を生成する。4つのラウンド鍵K1,K2,K3,K4は、n/2-bitの鍵データである。この4つのラウンド鍵K1,K2,K3,K4を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。図21に示すように、最初の4ラウンド:R1~R4では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR1:ラウンド鍵K1ラウンドR2:ラウンド鍵K2ラウンドR3:ラウンド鍵K3ラウンドR4:ラウンド鍵K4次の4ラウンド:R5~R8では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR5:ラウンド鍵K3ラウンドR6:ラウンド鍵K1ラウンドR7:ラウンド鍵K4ラウンドR8:ラウンド鍵K2次の4ラウンド:R9~R12では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR9:ラウンド鍵K4ラウンドR10:ラウンド鍵K3ラウンドR11:ラウンド鍵K2ラウンドR12:ラウンド鍵K1このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。また、ラウンド鍵の長さよりも小さい単位で分割することも可能であり、2n-bitの秘密鍵Kをn/4-bit毎に8等分し、それらを4ラウンド毎に入れ替えながら、n/4-bitのものを2つずつ供給していくことも可能である。例えば、図22に示す構成である。図22に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、2n-bitの鍵データである。この2n-bit秘密鍵Kを8等分して8つの鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。8つの鍵K1~K8は、n/4-bitの鍵データである。この8つの鍵K1~K8から選択した2つの鍵の連結データからなるn/2-bitラウンド鍵:KxKyを、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。図22に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで鍵データK1~K8を連結したラウンド鍵KxKyを入力して適用する。ラウンドR1:ラウンド鍵K1K2ラウンドR2:ラウンド鍵K3K4ラウンドR3:ラウンド鍵K5K6ラウンドR4:ラウンド鍵K7K8次の4ラウンド:R5~R8では以下のシーケンスで鍵データK1~K8を連結したラウンド鍵KxKyを入力して適用する。ラウンドR5:ラウンド鍵K3K4ラウンドR6:ラウンド鍵K2K7ラウンドR7:ラウンド鍵K1K6ラウンドR8:ラウンド鍵K5K8次の4ラウンド:R9~R12では以下のシーケンスで鍵データK1~K8を連結したラウンド鍵KxKyを入力して適用する。ラウンドR9:ラウンド鍵K2K7ラウンドR10:ラウンド鍵K4K5ラウンドR11:ラウンド鍵K3K6ラウンドR12:ラウンド鍵K1K8このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。また、秘密鍵Kの長さが4n-bitの場合にはn/2-bit毎に8等分し、8ラウンド毎に入れ替えながら供給していく。例えば図23に示す構成である。図23に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、4n-bitの鍵データである。この4n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。8つのラウンド鍵K1~K8は、n/2-bitの鍵データである。この8つのラウンド鍵K1~K8を、8ラウンドを1単位として、各単位で異なるシーケンスで利用する。図23に示すように、最初の8ラウンド:R1~R8では以下のシーケンスでラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1ラウンドR2:ラウンド鍵K2ラウンドR3:ラウンド鍵K3ラウンドR4:ラウンド鍵K4ラウンドR5:ラウンド鍵K5ラウンドR6:ラウンド鍵K6ラウンドR7:ラウンド鍵K7ラウンドR8:ラウンド鍵K8次の8ラウンド:R9~R16では以下のシーケンスでラウンド鍵を入力して適用する。ラウンドR9:ラウンド鍵K2ラウンドR10:ラウンド鍵K5ラウンドR11:ラウンド鍵K1ラウンドR12:ラウンド鍵K4ラウンドR13:ラウンド鍵K8ラウンドR14:ラウンド鍵K6ラウンドR15:ラウンド鍵K3ラウンドR16:ラウンド鍵K7このように、8ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。また、図20に示すような、1ラウンドに2つのF関数を同時実行する4系列一般化Feistel構造において、ラウンド鍵はn/4-bitのものが2つとなる。秘密鍵Kが2n-bitの場合にはn/4-bit毎に8等分し、4ラウンド毎に入れ替えながらn/4-bitのものを2つずつ供給していく。例えば図24に示す構成である。図24に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、2n-bitの鍵データである。この2n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。8つのラウンド鍵K1~K8は、n/4-bitの鍵データである。この8つのラウンド鍵K1~K8から選択した2つのラウンド鍵を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。図24に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR5:ラウンド鍵K5と、ラウンド鍵K1ラウンドR6:ラウンド鍵K2と、ラウンド鍵K6ラウンドR7:ラウンド鍵K7と、ラウンド鍵K3ラウンドR8:ラウンド鍵K4と、ラウンド鍵K8次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR9:ラウンド鍵K7と、ラウンド鍵K5ラウンドR10:ラウンド鍵K1と、ラウンド鍵K3ラウンドR11:ラウンド鍵K4と、ラウンド鍵K2ラウンドR12:ラウンド鍵K6と、ラウンド鍵K8このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。また、実装効率をさらに高めた手法として、n/4-bit毎8等分した中で、4つを左側のF関数へのラウンド鍵RKr,0に用いるものとし、残りの4つを右側のF関数へのラウンド鍵RKr,1に用いるものとする。例えば図25に示す構成である。図25に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、2n-bitの鍵データである。この2n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。8つのラウンド鍵K1~K8は、n/4-bitの鍵データである。この8つのラウンド鍵K1~K8から選択した2つのラウンド鍵を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。この例では、K1~K4のラウンド鍵を4系列Feistel構造における各ラウンドの左側のF関数に適用し、K5~K8のラウンド鍵を4系列Feistel構造における各ラウンドの右側のF関数に適用する。図25に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K5ラウンドR2:ラウンド鍵K2と、ラウンド鍵K6ラウンドR3:ラウンド鍵K3と、ラウンド鍵K7ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR5:ラウンド鍵K2と、ラウンド鍵K5ラウンドR6:ラウンド鍵K4と、ラウンド鍵K8ラウンドR7:ラウンド鍵K1と、ラウンド鍵K6ラウンドR8:ラウンド鍵K3と、ラウンド鍵K7次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR9:ラウンド鍵K4と、ラウンド鍵K5ラウンドR10:ラウンド鍵K3と、ラウンド鍵K7ラウンドR11:ラウンド鍵K2と、ラウンド鍵K8ラウンドR12:ラウンド鍵K1と、ラウンド鍵K6このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。この図25に示す構成では、ラウンド鍵K1~K8の8つの鍵の入力順を4ラウンド単位で全て入れ替えるのではなく、4つ毎、すなわち、ラウンド鍵:K1~K4、ラウンド鍵:K5~K8、これらの4つのラウンド鍵単位で入力順の入れ替えを行う。この構成によって、置換型鍵スケジュール部に必要となるセレクタのコストをさらに削減することが可能になる。また、例えば、図26に示すような4系列一般化Feistel構造におけるcyclicshiftをroundpermutationに変更したモデル4系列一般化Feistelとするに対しても,本方式による鍵スケジュール部が有効である。図26に示すような4系列一般化Feistel構造におけるcyclicshiftをroundpermutationに変更したモデル4系列一般化Feistelについ説明する。図26に示す構成は、d-lineの一般化Feistel構造において、nビット入力データをn/dビット毎d個に分割しそれぞれF関数処理,排他的論理和処理を行う構成を基本構成とし、ラウンド鍵との演算は、F関数の出力に対して実行する構成である。このとき、F関数に入力されるデータ系列をF関数入力側データ系列,排他的論理和されるデータ系列を排他的論理和側データ系列、とする。各系列各ラインにおいて転送されるn/dビットデータ各々について、さらにd/2個に再分割するこの際の分割は等分割でなくても良い。各系列各ライン各々でd/2個に再分割されたデータを次のルールにしたがって分配する。1F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する2排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する3各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配するこのように分配した後、各d/2個に分割されたデータをそれぞれ1つのデータに結合する。これを必要回数繰り返す。このcyclicshiftをroundpermutationに変更したモデル4系列一般化Feistelに対しても,本方式による鍵スケジュール部が有効である。具体的には、例えば、図25と同様の入れ替え手法である図27に示す構造が適している。すなわち、秘密鍵をn/4-bit毎8等分した中で、4つを左側のF関数へのラウンド鍵RKr,0に用いるものとし、残りの4つを右側のF関数へのラウンド鍵RKr,1に用いる構成である。図27に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、2n-bitの鍵データである。この2n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。8つのラウンド鍵K1~K8は、n/4-bitの鍵データである。この8つのラウンド鍵K1~K8から選択した2つのラウンド鍵を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。この例では、K1~K8のラウンド鍵から選択した2つのラウンド鍵を、cyclicshiftをroundpermutationに変更した4系列一般化Feistel構造における各ラウンドの2つのF関数に適用する。図27に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K5ラウンドR2:ラウンド鍵K2と、ラウンド鍵K6ラウンドR3:ラウンド鍵K3と、ラウンド鍵K7ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR5:ラウンド鍵K2と、ラウンド鍵K5ラウンドR6:ラウンド鍵K4と、ラウンド鍵K8ラウンドR7:ラウンド鍵K1と、ラウンド鍵K6ラウンドR8:ラウンド鍵K3と、ラウンド鍵K7次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR9:ラウンド鍵K4と、ラウンド鍵K5ラウンドR10:ラウンド鍵K3と、ラウンド鍵K7ラウンドR11:ラウンド鍵K2と、ラウンド鍵K8ラウンドR12:ラウンド鍵K1と、ラウンド鍵K6このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。次に、秘密鍵のbit長が1ラウンドに必要なラウンド鍵のbit長の整数倍でない場合の置換型鍵スケジュール部の構成例を示す。例えば、秘密鍵が5n/4-bitであり、1ラウンドに必要なラウンド鍵がn/2-bitのときの鍵スケジュール部の構成法を図28に示す。この構成では、初めに1ラウンドに必要なラウンド鍵のbit長の整数倍になるように置換と拡張を行う。その後は順番に供給していく構造を取る。図28に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、5/4n-bitの鍵データである。まず、置換型鍵スケジュール部は、この5/4n-bitの鍵データに基づいて、ラウンド鍵のbit長に相当する5つのラウンド鍵K1,K2,K3,K4,K5を生成する。このラウンド鍵K1~K5から選択した2つのラウンド鍵を各ラウンドに適用するラウンド鍵として入力して2つのF関数に適用する。図28に示すように、最初の5ラウンド:R1~R5では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K3と、ラウンド鍵K4ラウンドR2:ラウンド鍵K1と、ラウンド鍵K2ラウンドR3:ラウンド鍵K3と、ラウンド鍵K4ラウンドR4:ラウンド鍵K5と、ラウンド鍵K5ラウンドR5:ラウンド鍵K1と、ラウンド鍵K2次の5ラウンド:R6~R10、その後の5ラウンド:R11~R15でも同様のシーケンスで2つのラウンド鍵を入力して適用する。上述の効果3ラウンド鍵の置換法の変更による安全性向上の効果について詳細に説明を行う。まず、差分確率,activeF関数、最小activeF関数数の定義を行う。差分攻撃は、ある入力差分からある出力差分に高い確率で伝播するようなものを利用して攻撃する。つまり、安全性を考える際にはどのような入力差分、出力差分の組を考えても、高い確率で伝播するようなものが存在しないことを示す必要がある。関連鍵差分攻撃も同様に、ある入力差分とある秘密鍵差分から、ある出力差分に高い確率で伝播するようなものを利用して攻撃する。つまり、安全性を考える際にはどのような入力差分、秘密鍵差分、出力差分の組を考えても高い確率で伝播するようなものが存在しないことを示す必要がある。このような、ある入力差分がある出力差分に伝播する確率、及び、ある入力差分とある秘密鍵差分がある出力差分に伝播する確率を差分確率と定義する。前述した通り、GOSTではこの差分確率が1となるものが存在する。このような差分確率は、非ゼロの入力差分が与えられた非線形関数F関数でのみ低下することが知られている。この非ゼロの入力差分が与えられた非線形関数F関数をactiveF関数と定義する。activeF関数の個数は差分攻撃に対する安全性と密接に関係しており、ある入力差分に対して、多くのactiveF関数が得られるのであれば、十分に安全だと考えることができる。activeF関数の数は、入力差分を一つ定めれば決めることができる。以上より、差分攻撃に対する安全性を考える際にはどのような入力差分を与えたとしても十分に多くのactiveF関数が得られるということを示せばよいということが分かる。このような各入力差分に対するactiveF関数の個数の最小値を最小activeF関数数と定義する。例えば図20に示すような、ラウンド鍵をF関数の出力側に排他的論理和を取る4系列一般化Feistel構造において、図29に示すようにラウンド鍵を単純に順番に入れる従来法を採用した際の、関連鍵差分を考慮したラウンド数と最小activeF関数数の対応を以下の表1に示す。この方式の場合、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactiveF関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になることが分かる。例えば図20に示すような4系列一般化Feistel構造に、図24に示すような本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成に対して、関連鍵差分を考慮したラウンド数と最小activeF関数数の対応を表2に示す。上記の表2では、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactiveF関数の個数が7個であるような暗号では、少なくとも15ラウンドが必要になることが分かる。先の表1では、関連鍵差分攻撃に対する安全性を保証するために必要なactiveF関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になる。本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、従来法と比べて13ラウンド減らせることが分かる。このように、本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、このような鍵入れ替えを実行しない従来法より多くのactiveF関数の個数を保証できることが分かる。同様に、図26に示すような、4系列一般化Feistel構造におけるcyclicshiftをroundpermutationに変更したモデル4系列一般化Feistel構造について考察する。この構造に対して、ラウンド鍵を単純に順番に入れる従来法図30を採用した際の、関連鍵差分を考慮したラウンド数と最小activeF関数数の対応は、前記の表1と同じ値を取る。この方式の場合、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactiveF関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になることが分かる。また、図26に示すような、4系列一般化Feistel構造に対して、図24に示すような本発明による鍵スケジュール部の構成とした場合において、関連鍵差分を考慮した際のラウンド数と最小activeF関数数の対応を、以下の表3に示す。上記の表3では、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactiveF関数の個数が7個であるような暗号では、少なくとも15ラウンドが必要になることが分かる。先の表1では、関連鍵差分攻撃に対する安全性を保証するために必要なactiveF関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になる。本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、従来法と比べて13ラウンド減らせることが分かる。このように、本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、このような鍵入れ替えを実行しない従来法より多くのactiveF関数の個数を保証でき、安全性の高い暗号処理構成を少ないラウンド数で実現することが可能となる。[5.鍵置換型鍵スケジュール部の様々な構成例バリエーションについて]次に、鍵置換型鍵スケジュール部の様々な構成例バリエーションについて説明する。分割数dとしたd系列一般化Feistel構造をもつn-bitブロック暗号においては、図31に示すように、一般に、1ラウンド辺り、n/d-bitのラウンド鍵をd/2個、利用する。従って、1ラウンド辺り、合計で、n/d×d/2=n/2-bitのラウンド鍵データが必要となる。例えば、先に説明した図18に示すような4系列一般化Feistel構造d=4を適用する場合、ラウンド鍵の入力処理としては、各ラウンド単位で、n/4-bitのラウンド鍵を2つずつ入力する必要がある。ラウンド鍵の生成元となる秘密鍵の長さに応じて以下のようなラウンド鍵の生成、入力が実行される。秘密鍵がn-bitの場合には、例えば図32に示すように、n-bit秘密鍵を4等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する。秘密鍵が5/4n-bitの場合には、例えば図33、図34に示すように、n-bit秘密鍵を5等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する。例えば、図32に示すように秘密鍵n-bitを4等分した4つのラウンド鍵K1,K2,K3,K4を利用する構成では、2ラウンド毎に鍵置換を行う、すなわち、2ラウンド毎に鍵供給シーケンスを変更する。図32に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、n-bitの鍵データである。このn-bit秘密鍵Kを4等分して4つのラウンド鍵K1,K2,K3,K4を生成する。4つのラウンド鍵K1,K2,K3,K4は、n/4-bitの鍵データである。この4つのラウンド鍵K1,K2,K3,K4を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。図21に示すように、最初の2ラウンド:R1~R2では以下のシーケンスで2つのラウンド鍵K1~K4を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4次の2ラウンド:R3~R4では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR3:ラウンド鍵K3と、ラウンド鍵K1ラウンドR4:ラウンド鍵K4と、ラウンド鍵K2次の2ラウンド:R5~R6では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR5:ラウンド鍵K4と、ラウンド鍵K3ラウンドR6:ラウンド鍵K2と、ラウンド鍵K1次の2ラウンド:R7~R8では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR7:ラウンド鍵K2と、ラウンド鍵K4ラウンドR8:ラウンド鍵K1と、ラウンド鍵K3次の2ラウンド:R9~R10では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。ラウンドR9:ラウンド鍵K1と、ラウンド鍵K2ラウンドR10:ラウンド鍵K3と、ラウンド鍵K4また、図33に示すように秘密鍵5/4n-bitを5等分した5つのラウンド鍵K1,K2,K3,K4,K5を利用する構成では、これらの5つの鍵K1~K5の、5つの鍵選択後に鍵置換を行うため、5ラウンドに2回の鍵置換を行う。すなわち、5ラウンド毎に2回、鍵供給シーケンスを変更する。図33に示すラウンド鍵の供給処理について説明する。秘密鍵Kは、5/4n-bitの鍵データである。まず、置換型鍵スケジュール部は、この5/4n-bitの鍵データに基づいて、ラウンド鍵のbit長に相当する5つのラウンド鍵K1,K2,K3,K4,K5を生成する。このラウンド鍵K1~K5から選択した2つのラウンド鍵を各ラウンドに適用するラウンド鍵として入力して2つのF関数に適用する。図33に示すように、最初の5ラウンド:R1~R5では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4ラウンドR3:ラウンド鍵K5と、ラウンド鍵K5ラウンドR4:ラウンド鍵K2と、ラウンド鍵K3ラウンドR5:ラウンド鍵K3と、ラウンド鍵K4次の5ラウンド:R6~R10でも同様のシーケンスで2つのラウンド鍵を入力して適用する。なお、この図33に示す鍵供給処理構成における鍵の供給シーケンスは、結果として、先に説明した図28と同様となる。すなわち、いずれも、K1,K2,K3,K4,K5,K5,K5,K1,K2,K3この順番で鍵の供給が行われる。このように、置換型鍵スケジュール部の鍵供給処理において、例えばmラウンドにm>1回の鍵置換が必要な設定では、2回目以降の鍵置換を行わず、鍵の選択順序を変更する処理を行う構成としてもよい。例えば、図33に示す鍵供給処理シーケンスと、図34に示す鍵供給処理シーケンスは、全く同じとなる。すなわち、最初の5ラウンド:R1~R5では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4ラウンドR3:ラウンド鍵K5と、ラウンド鍵K5ラウンドR4:ラウンド鍵K2と、ラウンド鍵K3ラウンドR5:ラウンド鍵K3と、ラウンド鍵K4次の5ラウンド:R6~R10でも同様のシーケンスで2つのラウンド鍵を入力して適用する。また、鍵置換処理として、分割した鍵の供給順番を並び替えて、順にラウンド関数に入力していくのではなく、複数ラウンド単位で鍵の選択順序を変更することでも全く同様の効果が得られる。例えば、先に図24を参照して説明したラウンド鍵供給構成と、図35に示す鍵供給処理シーケンスは、全く同じとなる。すなわち、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR5:ラウンド鍵K5と、ラウンド鍵K1ラウンドR6:ラウンド鍵K2と、ラウンド鍵K6ラウンドR7:ラウンド鍵K7と、ラウンド鍵K3ラウンドR8:ラウンド鍵K4と、ラウンド鍵K8次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR9:ラウンド鍵K7と、ラウンド鍵K5ラウンドR10:ラウンド鍵K1と、ラウンド鍵K3ラウンドR11:ラウンド鍵K4と、ラウンド鍵K2ラウンドR12:ラウンド鍵K6と、ラウンド鍵K8このように、図24を参照して説明したラウンド鍵供給構成と、図35に示す鍵供給処理シーケンスは、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用した構成となる。複数種類の鍵置換先に図24を参照して説明した構成では、鍵の長さが2n-bitで8等分する場合、4ラウンド毎に同じ態様の鍵置換を行っている。これに対して、例えば、図36に示すように、4ラウンド単位で実行する置換処理を毎回異なる態様に設定してもよい。図36に示す構成による鍵供給シーケンスは以下の通りである。最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR5:ラウンド鍵K5と、ラウンド鍵K1ラウンドR6:ラウンド鍵K2と、ラウンド鍵K6ラウンドR7:ラウンド鍵K7と、ラウンド鍵K3ラウンドR8:ラウンド鍵K4と、ラウンド鍵K8次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR9:ラウンド鍵K8と、ラウンド鍵K5ラウンドR10:ラウンド鍵K7と、ラウンド鍵K3ラウンドR11:ラウンド鍵K1と、ラウンド鍵K2ラウンドR12:ラウンド鍵K4と、ラウンド鍵K6この図36に示す鍵供給シーケンスは、ラウンド1~4,5~8までは、図24に示す鍵供給シーケンスと同じであるが、ラウンド9以降は異なるシーケンスである。図24に示す設定では置換型鍵スケジュール部の実行する鍵置換、すなわち鍵入れ替え処理を4ラウンド単位で同じ設定で実行する構成であるが、図36に示す構成では、置換型鍵スケジュール部の実行する鍵置換、すなわち鍵入れ替え処理を4ラウンド単位で異なる設定で実行しているからである。また、分割した鍵の順番を並び替えて、順にラウンド関数に入力していくのではなく、鍵の選択順序を変更することでも全く同様の効果が得られる。例えば、先に図36を参照して説明したラウンド鍵供給構成と、図37に示す鍵供給処理シーケンスは、全く同じとなる。鍵の部分選択上記のように、図24や、図36に示す構成では、4ラウンドに8等分した8個の鍵を1つずつ入力している。図38に示すように、3ラウンド毎に置換を行い3ラウンドに6個のみを利用する構成も可能である。図38に示す構成による鍵供給シーケンスは以下の通りである。最初の3ラウンド:R1~R3では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6次の3ラウンド:R4~R6では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR4:ラウンド鍵K7と、ラウンド鍵K3ラウンドR5:ラウンド鍵K8と、ラウンド鍵K1ラウンドR6:ラウンド鍵K2と、ラウンド鍵K4次の3ラウンド:R7~R9では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR7:ラウンド鍵K6と、ラウンド鍵K8ラウンドR8:ラウンド鍵K5と、ラウンド鍵K7ラウンドR9:ラウンド鍵K3と、ラウンド鍵K1次の3ラウンド:R10~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。ラウンドR10:ラウンド鍵K4と、ラウンド鍵K5ラウンドR11:ラウンド鍵K2と、ラウンド鍵K6ラウンドR12:ラウンド鍵K8と、ラウンド鍵K7この例では、3ラウンド単位で、同一パターンの鍵置換を繰り返す構成としている。また、鍵の順番を並び替えて、順にラウンド関数に入力していくのではなく、鍵の選択順序を変更することでも全く同様の効果が得られる。例えば、図38を参照して説明したラウンド鍵供給構成と、図39に示す鍵供給処理シーケンスは、全く同じとなる。実装効率本開示のラウンド鍵の供給方式は従来方式と同様、置換型鍵スケジュール部による処理として実行するものであるため、実装効率が高い。例えば、図40に示すように、ラウンド鍵の生成元となる秘密鍵Kの長さが2n-bitのとき、ラウンド毎に鍵を8等分した鍵K1~K8のうちの2つのラウンド鍵を選択する。ここで、先に説明した図27のように鍵K1~K8を2つに区分して、K1,K2,K3,K4K5,K6,K7,K8これらの4つのラウンド鍵のグループを2つ設定し、これらの各グループ単位で、所定ラウンド数単位の鍵置換、すなわち鍵供給シーケンスの変更を行う構成とすることで、ある実装形態において実装効率をさらに高めることができる。具体的には、図41に示すように、置換型鍵スケジュール部を2つのセレクタを有する構成にして、各セレクタにおいて、上記の4つのラウンド鍵のグループ、すなわち、K1,K2,K3,K4K5,K6,K7,K8これらの各ラウンド鍵のグループからの出力鍵の選択を実行する構成とする。先に説明した図24のような鍵スケジュール部を設計すると図40のように8つから1つを選択するセレクタが2つ必要となるが、例えば、図27のように置換型鍵スケジュール部を構成することで図41のように4つから1つを選択する小型のセレクタが2つとなる。同様に、5/4n-bit鍵を5等分したものを5つ全て置換するのではなく、入力数が3のセレクタを利用できるように置換を設計することで実装効率が上がる。具体的には、図42に示すように、5/4nビットの秘密鍵Kから、n/4ビットのラウンド鍵K1,K2,K,K4,K5を生成し、第1のセレクタが、K1,K2,K3を対象とした鍵選択を実行し、第2のセレクタが、K3,K4,K5を対象とした鍵選択を実行する構成である。[6.暗号処理装置の構成例について]最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の実相例について説明する。上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康、医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な危機において利用可能である。本開示の暗号処理を実行する装置の一例としてのICモジュール700の構成例を図43に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図43に示すICモジュール700は、これら様々な機器に構成することが可能である。図43に示すCPUCentralprocessingUnit701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROMRead-Only-Memory、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAMRandomAccessMemory等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル置換表や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。暗号処理部703は、上記において説明した暗号処理構成、すなわち、例えば一般化Feistel構造や、Feistel構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。なお、上述した実施例において説明した暗号処理装置は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。[7.本開示の構成のまとめ]以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。なお、本明細書において開示した技術は、以下のような構成をとることができる。1データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理装置。2前記鍵スケジュール部は、前記ラウンド演算実行部に対する前記複数のラウンド鍵の入力シーケンスを、前記ラウンド演算実行部における複数ラウンド単位で変更する前記1に記載の暗号処理装置。3前記暗号処理部は、前記複数のラインに分割されたデータを入力して非線形変換処理と、線形変換処理を含むF関数実行部と、前記F関数実行部の出力に対して、前記ラウンド鍵を適用した演算を実行する演算部を有する前記1または2に記載の暗号処理装置。4前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵と同一のビット数を持つ複数のラウンド鍵を生成する前記1~3いずれかに記載の暗号処理装置。5前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵より少ないビット数を持つ複数のラウンド鍵構成データを生成し、前記複数のラウンド鍵構成データを複数連結して前記ラウンド演算実行部に入力するラウンド鍵と同一ビット数のラウンド鍵を生成する前記1~4いずれかに記載の暗号処理装置。6前記鍵スケジュール部は、前記暗号処理部において順次実行するラウンド演算実行部に対して、ラウンド演算実行部において並列適用する複数のラウンド鍵を並列出力する記1~5いずれかに記載の暗号処理装置。7前記鍵スケジュール部は、前記ラウンド演算実行部に対する鍵の選択供給処理を行う1以上のセレクタを有する記1~6いずれかに記載の暗号処理装置。8前記鍵スケジュール部は、前記複数のラウンド鍵または前記ラウンド鍵構成データを区分した複数のグループを設定し、設定したグループ単位で、前記ラウンド演算実行部に対する鍵供給シーケンスの制御処理を行う記1~7いずれかに記載の暗号処理装置。9前記鍵スケジュール部は、前記グループ単位のセレクタを有する記1~8いずれかに記載の暗号処理装置。10前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する記1~9いずれかに記載の暗号処理装置。さらに、上記した装置およびシステムにおいて実行する処理の方法や、処理を実行させるプログラムも本開示の構成に含まれる。また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LANLocalAreaNetwork、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。"