(57)【特許請求の範囲】
【請求項１】
鍵を生成する鍵生成部と、上記鍵生成部により生成された鍵とデータとを入力して、入力した鍵を使用して入力したデータの暗号化とデータの復号の少なくともいずれかのデータ変換を行うデータ攪拌部とを備えたデータ変換装置において、
上記データ攪拌部は、
上記鍵生成部が生成した鍵を入力して、入力した鍵を使用して入力したデータを非線形データ変換する主変換部と、
上記鍵生成部から入力する鍵を線形変換することなく転送することと、上記主変換部から入力する変換後のデータを線形変換することなく転送することとのいずれかを行うことを制御する転送信号を出力する制御部と、
上記鍵生成部が生成した鍵と上記主変換部が非線形データ変換した変換後のデータとを入力し、上記制御部が上記鍵を線形変換することなく転送する転送信号を出力した場合、入力した鍵を線形変換することなく転送し、上記制御部が上記変換後のデータを線形変換することなく転送する転送信号を出力した場合、入力した変換後のデータを線形変換することなく転送し、上記制御部が転送信号を出力しない場合、入力した鍵を使用して入力した変換後のデータを線形変換する副変換部とを備え、
上記主変換部は、上記副変換部が転送した鍵と上記副変換部が線形変換した変換後のデータとのいずれかを入力して非線形データ変換する
ことを特徴とするデータ変換装置。
【請求項２】
上記鍵生成部は、さらに、
秘密鍵を入力し、入力した秘密鍵から中間鍵を生成する中間鍵生成部を備え、
上記副変換部は、
上記鍵生成部が生成した鍵として上記中間鍵生成部が生成した中間鍵を入力し、
上記制御部が上記鍵を線形変換することなく転送する転送信号を出力した場合、入力した中間鍵を線形変換することなく転送し、
上記制御部が上記変換後のデータを線形変換することなく転送する転送信号を出力した場合、入力した変換後のデータを線形変換することなく出力鍵として転送し、
上記制御部が転送信号を出力しない場合、入力した中間鍵を使用して入力した変換後のデータを線形変換し、
上記データ攪拌部は、上記副変換部が転送した出力鍵を上記中間鍵生成部に出力し、
上記中間鍵生成部は、上記データ攪拌部によって出力された出力鍵を入力して、上記中間鍵と入力した出力鍵とからなる拡大鍵を生成する
ことを特徴とする請求項１に記載されたデータ変換装置。
【請求項３】
上記中間鍵生成部は、６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択する６−１ＫＬセレクタと、上記６−１ＫＬセレクタによって選択された１つの鍵を上記中間鍵として保持する鍵ＫＬレジスタとを有し、
上記６−１ＫＬセレクタは、上記秘密鍵を入力し、入力した秘密鍵と、上記鍵ＫＬレジスタによって保持された中間鍵と、上記鍵ＫＬレジスタによって保持された中間鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵からなる６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記６−１ＫＬセレクタによって選択された鍵を保持し、
上記副変換部は、上記鍵ＫＬレジスタに保持された鍵を上記中間鍵として入力し、上記制御部が上記鍵を線形変換することなく転送する転送信号を出力した場合、入力した中間鍵を転送する
ことを特徴とする請求項２に記載されたデータ変換装置。
【請求項４】
上記中間鍵生成部は、４つの鍵を入力し、入力した４つの鍵から１つの鍵を選択する４−１セレクタと、３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択する３−１ＫＬセレクタと、上記３−１ＫＬセレクタによって選択された１つの鍵を上記中間鍵として保持する鍵ＫＬレジスタとを有し、
上記４−１セレクタは、上記鍵ＫＬレジスタによって保持された中間鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵を入力し、入力した４つの鍵から１つの鍵を選択し、
上記３−１ＫＬセレクタは、上記秘密鍵を入力し、入力した秘密鍵と上記４−１セレクタによって選択された１つの鍵と上記鍵ＫＬレジスタに保持された中間鍵とからなる３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記３−１ＫＬセレクタによって選択された鍵を保持し、
上記副変換部は、上記鍵ＫＬレジスタに保持された鍵を上記中間鍵として入力し、上記制御部が上記鍵を線形変換することなく転送する転送信号を出力した場合、入力した中間鍵を転送する
ことを特徴とする請求項２に記載されたデータ変換装置。
【請求項５】
上記鍵生成部は、さらに、
上記中間鍵生成部によって生成された拡大鍵と所定の定数とを入力し、所定の条件に従って、入力した拡大鍵と所定の定数とのいずれかを、上記主変換部と上記副変換部との少なくともいずれかへ出力することをスケジュールする鍵スケジュール部を備えることを特徴とする請求項２に記載されたデータ変換装置。
【請求項６】
上記副変換部は、データを線形変換するデータ正変換部（ＦＬ）と、上記データ正変換部（ＦＬ）と逆の線形変換を行うデータ逆変換部（ＦＬ-1）との少なくともいずれかを有し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかは、上記鍵生成部が生成した鍵と上記主変換部が非線形データ変換した変換後のデータとを入力し、上記制御部が上記鍵を線形変換することなく転送する転送信号を出力した場合、入力した鍵を線形変換することなく転送し、上記制御部が上記変換後のデータを線形変換することなく転送する転送信号を出力した場合、入力した変換後のデータを線形変換することなく転送し、上記制御部が転送信号を出力しない場合、入力した鍵を使用して入力した変換後のデータを線形変換する
ことを特徴とする請求項１に記載されたデータ変換装置。
【請求項７】
上記制御部は、上記鍵生成部から入力する鍵を線形変換することなく転送する転送信号として鍵転送信号である鍵トランスファ信号とマスク信号とを出力し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかは、上記制御部が上記鍵トランスファ信号とマスク信号とを出力した場合には、上記鍵トランスファ信号によって上記入力した変換後のデータを無効とするとともに、上記マスク信号によって上記入力した鍵を通過させて転送する
ことを特徴とする請求項６に記載されたデータ変換装置。
【請求項８】
上記制御部は、上記主変換部から入力する変換後のデータを線形変換することなく転送する転送信号としてデータ転送信号であるデータトランスファ信号を出力し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかは、上記制御部が上記データトランスファ信号を出力した場合には、上記データトランスファ信号によって上記入力した鍵を無効にして、上記入力した変換後のデータを通過させて転送する
ことを特徴とする請求項６に記載されたデータ変換装置。
【請求項９】
鍵を生成する鍵生成部と、上記鍵生成部により生成された鍵とデータとを入力して、入力した鍵を使用して入力したデータの暗号化とデータの復号の少なくともいずれかのデータ変換を行うデータ攪拌部とを備えたデータ変換装置において、
上記データ攪拌部は、
上記鍵生成部が生成した鍵と第１のデータとを入力して、入力した鍵を使用して入力した第１のデータを非線形データ変換する主変換部と、
上記鍵生成部が生成した鍵と第２のデータとを入力して、入力した鍵を使用して入力した第２のデータを排他的論理演算することと、入力した鍵を使用して入力した第２のデータを線形データ変換することとのいずれかを行う副変換部とを備え、
上記副変換部は、
上記第２のデータとして上記データ攪拌部が入力したデータと、上記主変換部が非線形データ変換した変換後のデータとのいずれかを選択的に入力し、
上記第２のデータとして上記データ攪拌部が入力したデータを入力した場合、入力した鍵を使用して入力したデータを排他的論理演算し、
上記第２のデータとして上記非線形データ変換した変換後のデータを入力した場合、入力した鍵を使用して入力した非線形データ変換した変換後のデータを排他的論理演算することと、線形データ変換することとのいずれかを選択的に行い、
上記主変換部は、上記第１のデータとして上記副変換部が排他的論理演算した演算後のデータと、上記副変換部が線形データ変換した変換後のデータとのいずれかを選択的に入力し、入力した演算後のデータと、線形データ変換した変換後のデータとのいずれかを非線形データ変換し、
上記副変換部と上記主変換部とは、上記副変換部と上記主変換部との順に処理を繰り返す
ことを特徴とするデータ変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの暗号化またはデータの復号を行うデータ変換装置及びその方法に関するものである。
【０００２】
【従来の技術】
関連する技術について説明する。
図５６は、関連するデータ変換装置の構成及び動作図である。
図５６に示すように、ブロック暗号処理を行うデータ変換装置は、鍵生成部２０とデータ攪拌部３０とから構成される。
鍵生成部２０は、データの暗号化／復号を行うための鍵を生成する鍵生成部である。
データ攪拌部３０は、入力されたデータを暗号化または復号する部である。
鍵生成部２０は、中間鍵生成部４０と鍵スケジュール部２１０とから構成される。中間鍵生成部４０は、秘密鍵を入力し、入力した秘密鍵から中間鍵（鍵ＫＬ）と出力鍵（鍵ＫＡ）とを生成する部である。鍵スケジュール部２１０は、中間鍵生成部４０によって生成された中間鍵（鍵ＫＬ）と出力鍵（鍵ＫＡ）とを入力し（鍵ＫＬＬ、鍵ＫＬＨ、鍵ＫＡＬ、鍵ＫＡＨ）、入力した各々の鍵からデータ攪拌部３０へ供給すべき鍵をスケジュールする。このように、鍵生成部２０では、中間鍵生成部４０と鍵スケジュール部２１０とにより鍵の生成と鍵のスケジュールを行っている。
データ攪拌部３０では、Ｐ（平文）を入力した場合には、データを暗号化するデータ変換を行い、変換されたデータをＣ（暗号文）として出力する。また、データ攪拌部３０は、Ｐ（暗号文）を入力した場合には、データ復号するデータ変換を行い、変換されたデータをＣ（復号文）として出力する。このように、データ攪拌部３０は、データの暗号化処理と復号処理とを行う。
データ攪拌部３０では、主変換部３２０と副変換部３３０とが、シリアルに接続されている。
主変換部３２０は、データの非線形変換を行う部である。即ち、主変換部３２０は、データの非線形変換を行うＦ関数を１段又は複数段有するか、又は、Ｆ関数の一部を有し、Ｆ関数又はＦ関数の一部を用いてデータの非線形変換を行う。図５７では、主変換部３２０は、Ｆ関数を１段以上有している。
副変換部３３０は、データの線形による変換を行うデータ正変換部（ＦＬ）とデータ正変換部（ＦＬ）とは逆の変換を行うデータ逆変換部（ＦＬ-1）との少なくともいずれかを有し、データ正変換部（ＦＬ）又はデータ逆変換部（ＦＬ-1）を用いて入力されたデータを入力された鍵によって線形変換する部である。
セレクタ３１０は、主変換部３２０と副変換部３３０とＰ（平文又は暗号文）と鍵とを入力信号として入力信号から一つの信号を選択する選択器である。図５６に示すセレクタ３１０は、４つの入力信号から１つの出力信号を選択するセレクタを２つの入力信号から１つの出力信号を出力する２−１セレクタ換算で３個持っている。
演算レジスタ３５０は、主変換部３２０及び副変換部３３０及びＣ（暗号文又は復号文）として出力するデータを所定期間保持するメモリである。
このように、データ攪拌部３０では、入力データであるＰ（平文又は暗号文）を主変換部３２０によって非線形変換し、副変換部３３０によって線形変換することを複数回交互に繰り返すことによりデータの暗号化／復号処理し、Ｃ（暗号文又は復号文）として出力する。
【０００３】
主変換部３２０の内部構成について説明する。
図５７は、主変換部３２０の内部構成の一例である。図５７では、主変換部３２０は、６個のＦ関数部から構成されている。ここでは、Ｆ関数部が一段のＦ関数処理を行う回路から構成されていると仮定すると、図５７に示す主変換部３２０では６段のＦ関数による非線形データ変換処理を行うこととなる。
６段のＦ関数処理回路について、主変換部３２０は、６個のＦ関数処理回路を持っていてもよいし、１つのＦ関数処理回路を持ち、６回Ｆ関数による処理を繰り返すことによって、６段のＦ関数によるデータ処理を行ってもよい。
主変換部３２０では、まず、入力データのうち分割された上位データがＦ関数部３２１ａに入力される。また、鍵スケジュール部２１０によってスケジュールされた鍵１も入力される。Ｆ関数部３２１ａでは、前述したとおり、鍵を用いて上位入力データを非線形変換する。ＥＸＯＲ回路３２２ａでは、非線形変換されたデータと下位入力データとの排他的論理和がとられる。ＥＸＯＲ回路３２２ａから出力されたデータは、Ｆ関数部３２１ｂの入力データとなる。Ｆ関数部３２１ｂは、Ｆ関数部３２１ａと同様に、非線形変換処理を行い、ＥＸＯＲ回路３２２ｂによって変換されたデータと上位入力データとの排他的論理和がとられる。ＥＸＯＲ回路３２２ｂから出力されたデータは、Ｆ関数部３２１ｃの入力データとなる。このように、Ｆ関数部３２１ａ、ＥＸＯＲ回路３２２ａによる処理と同様の処理が、Ｆ関数部３２１ｂとＥＸＯＲ回路３２２ｂ、Ｆ関数部３２１ｃとＥＸＯＲ回路３２２ｃ、Ｆ関数部３２１ｄとＥＸＯＲ回路３２２ｄ、Ｆ関数部３２１ｅとＥＸＯＲ回路３２２ｅ、Ｆ関数部３２１ｆとＥＸＯＲ回路３２２ｆにより行われる。このようにして、Ｆ関数部によるデータの非線形変換を６段（又は６回繰り返し）行った後、変換されたデータを出力する。
【０００４】
このように、上位データと下位データとに分割されたデータのいずれか一方を入力し、入力したデータを非線形によりデータ変換し、データ変換した上位データと下位データのいずれか一方を出力し、出力した上位データと下位データのいずれか一方と上位データと下位データのいずれか他方とを排他的論理和演算し、排他的論理和演算したデータと、上記Ｆ関数部に入力されなかった上位データと下位データとのいずれか他方とを入れ替えて出力することにより上位データと下位データとを入れ替えて出力することを特徴とする非線形変換処理構造をＦＥＩＳＴＥＬ構造と呼ぶ。
データをランダム化する代表的な構造としては、上記ＦＥＩＳＴＥＬ構造とＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ）構造とが存在する。ＳＰＮ構造をもつ主変換部３２０は、並列処理に優れているといわれている。一方、ＦＥＩＳＴＥＬ構造をもつ主変換部３２０は、ハードウエアの規模を小型化することに優れているといわれている。
なお、ＳＰＮ構造は、ＦＥＩＳＴＥＬ構造のように、入力データを分割することはせず、Ｓ層（非線形層）とＰ層（線形層）で構成されるＦ関数を繰り返す構造を持つ。
【０００５】
副変換部３３０の内部構成について説明する。
図５８は、副変換部３３０を構成する回路を示す図である。
図５８の副変換部３３０は、データ正変換部５０とデータ逆変換部７０とを有している。
データ正変換部５０では、ＡＮＤ回路５４によって入力された６４ビットデータのうち上位３２ビットデータと鍵１との論理積がとられ、１ビット左に巡回シフトされ、ＥＸＯＲ回路５５によって入力データの下位３２ビットとの排他的論理和がとられ、その結果が下位３２ビットの出力信号として出力されるとともに、ＯＲ回路５７に入力される。ＯＲ回路５７では鍵２との論理和がとられ、ＥＸＯＲ回路５６によって入力データの上位３２ビットデータとの排他的論理和がとられ、その結果が上位３２ビットの出力信号として出力される。このようにして、６４ビットの入力データが線形変換され、６４ビットの出力信号として出力される。
データ逆変換部７０では、ＯＲ回路７４によって入力された６４ビットデータのうち下位３２ビットデータと鍵３との論理和がとられ、ＥＸＯＲ回路７５によって入力データの上位３２ビットとの排他的論理和がとられ、その結果が上位３２ビットの出力信号として出力されるとともに、ＡＮＤ回路７７に入力される。ＡＮＤ回路７７では鍵４との論理積がとられ、１ビット左に巡回シフトされ、ＥＸＯＲ回路７６によって入力データの下位３２ビットデータとの排他的論理和がとられ、その結果が下位３２ビットの出力信号として出力される。このようにして、６４ビットの入力データがデータ正変換部５０とデータ逆変換部７０とにより線形変換され、６４ビットの出力信号として出力される。なお、鍵１〜鍵４は鍵スケジュール部２１０から供給される。
【０００６】
図５９は、副変換部３３０の他の一例として、データ正変換部５０とデータ逆変換部７０とを共用した回路を示す図である。
図５９では、データ正変換部５０とデータ逆変換部７０とを切り換える切換信号を入力することにより、データ正変換部５０とデータ逆変換部７０とが切り換わる。即ち、図５９に示す共用回路では、切換信号を入力することにより２−１セレクタ９９ａが入力信号Ａと入力信号Ｅとを切り換え、２−１セレクタ９９ｂが入力信号Ｃと入力信号Ｆとを切り換える。
まず、共用回路がデータ正変換部５０として動作する場合を説明する。
２−１セレクタ９９ａが入力信号Ｅと入力信号Ａとから入力信号Ａを選択し、出力信号Ｂとして出力し、ＡＮＤ回路１０１によって鍵１との論理積をとり、１ビット左に巡回シフトした後、ＥＸＯＲ回路９１によって入力データの下位３２ビットとの排他的論理和がとられ、下位３２ビットの出力信号として出力されるとともに、入力信号Ｃとして２−１セレクタ９９ｂに入力される。２−１セレクタ９９ｂでは、入力信号Ｃと入力信号Ｆとから入力信号Ｃを選択し、出力信号Ｄとして出力する。ＯＲ回路９２では、出力信号Ｄと鍵２との論理和がとられ、ＥＸＯＲ回路９３によって入力データの上位３２ビットデータとの排他的論理和がとられ、上位３２ビットの出力信号として出力される。
【０００７】
次に、共用回路がデータ逆変換部７０として動作する場合を説明する。
２−１セレクタ９９ｂでは入力信号Ｃと入力信号Ｆとから入力信号Ｆを選択し、出力信号Ｄとして出力し、ＯＲ回路９２によって鍵２との論理和がとられ、ＥＸＯＲ回路９３によって入力データの上位３２ビットとの排他的論理和がとられ、上位３２ビットの出力信号として出力されるとともに、入力信号Ｅとして２−１セレクタ９９ａに入力される。２−１セレクタ９９ａでは、入力信号Ａと入力信号Ｅとから入力信号Ｅを選択し、出力信号Ｂとして出力する。ＡＮＤ回路１０１では、出力信号Ｂと鍵１との論理和がとられ、１ビット左に巡回シフトした後、ＥＸＯＲ回路９１によって入力データの下位３２ビットとの排他的論理和がとられ、下位３２ビットの出力信号として出力される。
【０００８】
図６０は、図５６が示すデータ変換装置に対し、主変換部３２０が１段未満のＦ関数を処理する１／２x （ｘ≧１）Ｆ関数を有している場合のデータ変換装置を示す図である。
主変換部３２０は、例えば、１／２Ｆ関数を有している場合、主変換部３２０から副変換部３３０とセレクタ３１０と演算レジスタ３５０とを経て主変換部３２０に至るパスによって２サイクルの処理を行うことにより、データをＦ関数によって非線形変換する処理が１回可能となる。このような処理を行うために、図６０に示すデータ変換装置では、図５６に示すデータ変換装置と比較し、演算レジスタ３５０からセレクタ３１０へのパスが付加されている。
【０００９】
演算レジスタ３５０からセレクタ３１０へのパスを利用した主変換部３２０の動作について説明する。
図６１は、主変換部３２０の内部構成について説明する。
図６１に示すように、主変換部３２０は１段未満のＦ関数を処理する一例として１／２のＦ関数処理を行う１２段のＦ関数部（１／２Ｆ関数）から構成されている。図６１の主変換部３２０では、図５７の主変換部３２０のＦ関数部３２１ａとＥＸＯＲ回路３２２ａとを用いたデータ変換をＦ関数部１３２１ａとＦ関数部１３２１ｂとＥＸＯＲ回路１３２２ａとＥＸＯＲ回路１３２２ｂとを用いて行う。
図６１の主変換部３２０では、まず、１段目の処理を説明する。上位入力データのうち分割された上位データは、Ｆ関数部１３２１ａに入力される。また、鍵スケジュール部２１０によってスケジュールされた鍵１の上位ビットからなる鍵１Ｈも入力される。Ｆ関数部１３２１ａは、鍵１Ｈを用いた上記上位データの非線形変換を行う。変換されたデータは、ＥＸＯＲ回路１３２２ａに入力され、下位入力データのうち分割された上位データとの排他的論理和がとられる。
ＥＸＯＲ回路１３２２ａから出力されたデータは、ＥＸＯＲ回路１３２２ｂでのデータ処理がなされるまで、演算レジスタ３５０に中間データとして保持しておく。
次に、２段目の処理を説明する。上位入力データのうち分割された下位データがＦ関数部１３２１ｂに入力される。また、鍵スケジュール部２１０によってスケジュールされた鍵１の下位ビットからなる鍵１Ｌも入力される。Ｆ関数部１３２１ｂは、鍵１Ｌを用いた上記下位データの非線形変換を行う。変換されたデータは、ＥＸＯＲ回路１３２２ｂに入力される。
ここで、先程演算レジスタ３５０に保持したＥＸＯＲ回路１３２２ａからの出力データである中間データをＥＸＯＲ回路１３２２ｂに入力する必要が生じる。そこで、演算レジスタ３５０からセレクタ３１０へのパスが必要になる。即ち、演算レジスタ３５０からセレクタ３１０へのパスを用いることによって演算レジスタ３５０に保持された中間データをセレクタ３１０に入力することが可能となる。セレクタ３１０は、入力された中間データを選択する。中間データは、演算レジスタ３５０を経て主変換部３２０に入力され、ＥＸＯＲ回路１３２２ｂによって、Ｆ関数部１３２１ｂの出力データとの排他的論理和がとられる。ＥＸＯＲ回路１３２２ｂから出力されたデータは、Ｆ関数部１３２１ｃの入力データとなる。
このように、Ｆ関数部１３２１ａ、ＥＸＯＲ回路１３２２ａ、Ｆ関数部１３２１ｂ、ＥＸＯＲ回路１３２２ｂによる処理と同様の処理が、Ｆ関数部１３２１ｃ、ＥＸＯＲ回路１３２２ｃ、Ｆ関数部１３２１ｄ、ＥＸＯＲ回路１３２２ｄによる処理、Ｆ関数部１３２１ｅ、ＥＸＯＲ回路１３２２ｅ、Ｆ関数部１３２１ｆ、ＥＸＯＲ回路１３２２ｆによる処理、Ｆ関数部１３２１ｇ、ＥＸＯＲ回路１３２２ｇ、Ｆ関数部１３２１ｈ、ＥＸＯＲ回路１３２２ｈによる処理、Ｆ関数部１３２１ｉ、ＥＸＯＲ回路１３２２ｉ、Ｆ関数部１３２１ｊ、ＥＸＯＲ回路１３２２ｊによる処理、Ｆ関数部１３２１ｋ、ＥＸＯＲ回路１３２２ｋ、Ｆ関数部１３２１ｌ、ＥＸＯＲ回路１３２２ｌによる処理として行われる。このようにして、Ｆ関数部によるデータの非線形変換を１２段（又は１２回繰り返し）行った後、変換されたデータを出力する。
【００１０】
【発明が解決しようとする課題】
課題１．
図５６及び図６０に示すデータ変換装置では、鍵生成部２０がデータの暗号化／復号に使用する鍵を生成するために主変換部３２０の一部と副変換部３３０の一部を使用する。鍵生成に主変換部３２０の一部と副変換部３３０の一部を使用するのは、データ変換装置全体の小型化を図るためである。
この鍵生成動作の詳細は後述するが、このように主変換部３２０の一部と副変換部３３０の一部を使って鍵を生成するために、図５６に示すように鍵ＫＬレジスタ２４０から出力した中間鍵（鍵ＫＬ）をセレクタ３１０に入力させるパスが必要となる。従って、鍵ＫＬレジスタ２４０からセレクタ３１０へのパスが増えることにより、データ変換装置の小型化が阻害されていた。
また、鍵ＫＬレジスタ２４０からセレクタ３１０へのパスを用いたセレクタ３１０への入力信号数が増え、セレクタ３１０を構成するセレクタ数を増加させる要因となっていた。このため、その点においてもデータ変換装置の小型化を阻害していた。
【００１１】
また、上述したように複数サイクルでＦ関数による１回のデータ変換を行う場合には、一定期間保持した中間データを主変換部３２０に入力する必要がある。従って、中間データを演算レジスタ３５０からセレクタ３１０へ送るパスが増えることによりデータ変換装置の小型化が阻害されていた。
また、演算レジスタ３５０からセレクタ３１０へのパスを用いたセレクタ３１０への入力信号数が増えるため、セレクタ３１０を構成するセレクタ数を増加させる要因となっていた。従って、その点においてもデータ変換装置の小型化を阻害していた。
【００１２】
課題２．
図５６と図６０に示すデータ変換装置のデータ攪拌部３０では、主変換部３２０と副変換部３３０とがシリアルに接続されていた。従って、主変換部３２０から副変換部３３０を経た後にセレクタ３１０を経て演算レジスタ３５０を通り主変換部３２０へ戻るパスによって、動作周波数が一義的に決定され、動作周波数の向上を阻害していた。そのため、データ攪拌部３０中でのデータ処理のための最大パスを短くすることにより動作周波数を上げ、処理スピードを飛躍的に向上させることが望まれていた。
また、主変換部３２０を通過せずにセレクタ３１０及び演算レジスタ３５０から出力したデータを副変換部３３０に入力させるパスが存在しないため、データ変換装置の内部構成変更に柔軟に対応できず、全体が行える動作に柔軟さが欠如する結果となっていた。
また、上述したように複数サイクルでＦ関数による１回のデータ変換を行う場合には、１サイクルで変換対象となるデータは、入力データの一部である（１／２Ｆ関数では、入力データの１／２）。このため、入力データの一部の変換データを演算レジスタ３５０に保持し、一定期間後に副変換部３３０に送るためのパスをデータ攪拌部３０中に設けるか、または、一定期間後に主変換部３２０を転送して副変換部３３０に送るための転送パスを主変換部３２０中に設ける必要があった。
さらに、図５９に示すデータ正変換部５０とデータ逆変換部７０との共用回路を用いた場合には、Ａ→Ｂ→Ｃ→Ｄ→Ｅ→Ｂ→Ｃ・・・のパスがループ回路に相当する。このため、実際の回路にするときに、切換信号の伝搬遅延の差による信号のレーシング、ノイズなどの影響により、発信回路にならないような工夫が必要となる。また、このような上記ループ回路（ＦＥＥＤＢＡＣＫ−ＬＯＯＰ回路）を持った回路には、論理合成ツールが対応できず、効率よく論理合成が行われない、という問題が生じていた。
【００１３】
本発明は、データ変換装置の小型化を目的とする。
【００１４】
また、本発明は、データ変換装置の動作周波数の向上を目的とする。
【００１５】
【課題を解決するための手段】
この発明に係るデータ変換装置は、鍵とデータとを入力し、入力した鍵を使用して入力したデータの暗号化とデータの復号の少なくともいずれかのデータ変換を行うデータ変換装置であって、
上記データ変換装置は、データを変換するデータ攪拌部と入力した鍵と入力したデータとのいずれかを転送することを指示している転送信号を制御する制御部を備え、
上記制御部は、鍵とデータとのいずれかを転送する場合に、転送信号を出力し、
上記データ攪拌部は、入力した鍵を使用してデータを変換することにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行うとともに、上記制御部によって出力された転送信号を入力した場合には入力した鍵と入力したデータの少なくともいずれかをデータ変換せずに転送する副変換部を備えることを特徴とする。
【００１６】
上記データ攪拌部は、さらに、
データを入力し、入力したデータを非線形にデータ変換する主変換部を備え、上記制御部は、データを転送する場合には転送信号としてデータ転送信号を出力し、
上記副変換部は、上記制御部によって出力されたデータ転送信号と上記主変換部によってデータ変換されたデータとを入力し、入力したデータ転送信号に従って入力したデータを転送することを特徴とする。
【００１７】
上記データ変換装置は、さらに、
鍵を生成する鍵生成部を備え、
上記制御部は、鍵を転送する場合には転送信号として鍵転送信号を出力し、
上記副変換部は、上記制御部によって出力された鍵転送信号と上記鍵生成部によって生成された鍵とを入力し、入力した鍵転送信号に従って入力した鍵を転送することを特徴とする。
【００１８】
上記鍵生成部は、さらに、
秘密鍵を入力し、入力した秘密鍵から中間鍵を生成する中間鍵生成部を備え、
上記副変換部は、上記制御部によって出力された鍵転送信号を入力した場合には、入力した鍵転送信号に従って上記中間鍵生成部が生成した中間鍵を上記主変換部に転送し、
上記主変換部は、上記副変換部によって転送された中間鍵を変換して出力することを１以上繰り返し、
上記副変換部は、上記主変換部によって出力された中間鍵を変換して出力することを１以上繰り返し、
上記主変換部と上記副変換部との少なくともいずれかは、上記中間鍵を変換して出力することを１以上繰り返し、
上記主変換部は、上記主変換部と上記副変換部との少なくともいずれかによって出力された中間鍵を出力鍵として出力し、
上記中間鍵生成部は、上記主変換部によって出力された出力鍵を入力することにより、中間鍵と出力鍵とからなる拡大鍵を生成することを特徴とする。
【００１９】
上記中間鍵生成部は、入力された６つの鍵から１つの鍵を選択する６−１ＫＬセレクタと６−１ＫＬセレクタから選択された１つの鍵を中間鍵として保持する鍵ＫＬレジスタとを有し、
上記６−１ＫＬセレクタは、秘密鍵を入力し、入力された秘密鍵と、上記鍵ＫＬレジスタによって保持された中間鍵と、上記鍵ＫＬレジスタによって保持された中間鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵からなる６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記６−１ＫＬセレクタによって選択された鍵を保持し、
上記副変換部は、上記制御部から出力された鍵転送信号を入力した場合には上記鍵ＫＬレジスタに保持された鍵を中間鍵として入力し、入力した中間鍵を転送することを特徴とする。
【００２０】
上記中間鍵生成部は、入力された４つの鍵から１つの鍵を選択する４−１セレクタと入力された３つの鍵から１つの鍵を選択する３−１ＫＬセレクタと３−１ＫＬセレクタから選択された１つの鍵を中間鍵として保持する鍵ＫＬレジスタとを有し、
上記４−１セレクタは、上記鍵ＫＬレジスタによって保持された中間鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵を入力し、入力した４つの鍵から１つの鍵を選択し、
上記３−１ＫＬセレクタは、秘密鍵を入力し、入力した秘密鍵と上記４−１セレクタによって選択された１つの鍵と上記鍵ＫＬレジスタに保持された中間鍵とからなる３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記３−１ＫＬセレクタによって選択された鍵を保持し、
上記副変換部は、上記制御部から出力された鍵転送信号を入力した場合には、上記鍵ＫＬレジスタに保持された鍵を中間鍵として入力し、入力した中間鍵を転送することを特徴とする。
【００２１】
上記鍵生成部は、さらに、
上記中間鍵生成部によって生成された拡大鍵と所定の定数とを入力し、所定の条件に従って入力した拡大鍵と所定の定数とのいずれかを上記主変換部と上記副変換部の少なくともいずれかへ出力する鍵をスケジュールする鍵スケジュール部を備えることを特徴とする。
【００２２】
上記副変換部は、データの線形によるデータ変換を行うデータ正変換部（ＦＬ）と上記データ正変換部（ＦＬ）と逆のデータ変換を行うデータ逆変換部（ＦＬ-1）との少なくともいずれかを有し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかは、データ変換を行うとともに、上記制御部が転送信号を出力した場合には、上記制御部が出力した転送信号を入力し、入力した転送信号にしたがってデータと鍵との少なくともいずれかをデータ変換せずに転送することを特徴とする。
【００２３】
上記制御部は、入力された鍵を転送する転送信号として鍵転送信号である鍵トランスファ信号とマスク信号とを出力し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかは、上記制御部によって出力された鍵トランスファ信号とマスク信号とを入力した場合には、入力した鍵トランスファ信号によって入力されたデータを無効とするとともに、入力されたマスク信号によって入力された鍵を通過させることで鍵を転送することを特徴とする。
【００２４】
上記制御部は、入力されたデータを転送する転送信号としてデータ転送信号であるデータトランスファ信号を出力し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかは、上記制御部によって出力されたデータトランスファ信号を入力した場合には、入力したデータトランスファ信号によって入力された鍵を無効とするとともに、入力されたデータを通過させることでデータを転送することを特徴とする。
【００２５】
上記副変換部は、データの線形によるデータ変換を行うデータ正変換と上記データ正変換とは逆のデータ変換を行うデータ逆変換とを同一の回路を共用して行う１／２副変換部を有し、１／２副変換部によってデータをデータ変換するとともに、上記制御部が転送信号を出力した場合には、上記制御部が出力した転送信号を入力し、入力した転送信号にしたがって鍵とデータの少なくともいずれかを転送することを特徴とする。
【００２６】
上記副変換部は、データの線形によるデータ変換を行うデータ正変換部（ＦＬ）と上記データ正変換部（ＦＬ）と逆のデータ変換を行うデータ逆変換部（ＦＬ-1）とを有し、上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）とを直列に配置し、
上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）とのいずれか一方は、上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）とのいずれか他方によってデータ変換されたデータか、転送された鍵か、転送されたデータか、のいずれかを入力し、入力したデータ変換されたデータか、転送された鍵か、転送されたデータか、のいずれかを使用してデータ変換か鍵の転送かデータの転送のいずれかを行うことを特徴とする。
【００２７】
上記データ変換装置は、１２８ビットか１９２ビットか２５６ビットのいずれかの鍵を入力し、入力した鍵を使用して入力したデータをデータ変換することを特徴とする。
【００２８】
この発明に係るデータ変換方法は、鍵とデータとを入力し、入力した鍵を使用して少なくとも入力したデータの暗号化とデータの復号のいずれかのデータ変換を行うデータ変換方法であって、
上記データ変換方法は、鍵とデータとのいずれかを転送する場合に、入力した鍵と入力したデータとのいずれかを転送することを指示している転送信号を出力し、
入力した鍵を使用してデータを変換することにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行うとともに、上記出力された転送信号を入力した場合には入力した鍵と入力したデータの少なくともいずれかをデータ変換せずに転送することを特徴とする。
【００２９】
この発明に係るデータ変換プログラムは、鍵とデータとを入力し、入力した鍵を使用して入力したデータの暗号化とデータの復号の少なくともいずれかのデータ変換を行うデータ変換プログラムであって、
上記データ変換プログラムは、鍵とデータとのいずれかを転送する場合に、入力した鍵と入力したデータとのいずれかを転送することを指示している転送信号を出力する処理と、
入力した鍵を使用してデータを変換することにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行うとともに、上記出力された転送信号を入力した場合には入力した鍵と入力したデータの少なくともいずれかをデータ変換せずに転送する処理とをコンピュータに実行させることを特徴とする。
【００３０】
この発明に係るデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体は、鍵とデータとを入力し、入力した鍵を使用して入力したデータの暗号化とデータの復号の少なくともいずれかのデータ変換を行うデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
上記データ変換プログラムを記録したコンピュータ読み取り可能な記録媒体は、鍵とデータとのいずれかを転送する場合に、入力した鍵と入力したデータとのいずれかを転送することを指示している転送信号を出力する処理と、
入力した鍵を使用してデータを変換することにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行うとともに、上記出力された転送信号を入力した場合には入力した鍵と入力したデータの少なくともいずれかをデータ変換せずに転送する処理をコンピュータに実行させるためのデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【００３１】
上記データ変換装置は、さらに、
鍵を生成する鍵生成部を備え、
上記鍵生成部は、さらに、
秘密鍵を入力し、入力した秘密鍵から中間鍵を生成し、生成した中間鍵から上記主変換部と上記副変換部とを用いて出力鍵を生成する中間鍵生成部を備えることを特徴とする請求項１に記載されたデータ変換装置。
【００３２】
上記中間鍵生成部は、６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択する６−１ＫＬセレクタと、前記６−１ＫＬセレクタから選択された１つの鍵を中間鍵として保持する鍵ＫＬレジスタと、６つの鍵から１つの鍵を選択する６−１ＫＡセレクタと、６−１ＫＡセレクタから選択された１つの鍵を出力鍵として保持する鍵ＫＡレジスタと、を有し、
上記６−１ＫＬセレクタは、秘密鍵を入力し、入力された秘密鍵と、上記鍵ＫＬレジスタに保持された中間鍵と、上記鍵ＫＬレジスタに保持された中間鍵とから４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵とからなる６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記６−１ＫＬセレクタによって選択された鍵を中間鍵として保持し、
上記６−１ＫＡセレクタは、上記主変換部と上記副変換部とを用いて生成された出力鍵を入力し、入力した出力鍵と、上記鍵ＫＡレジスタに保持された出力鍵と、上記鍵ＫＡレジスタに保持された出力鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵と、からなる６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択し、
上記鍵ＫＡレジスタは、上記６−１ＫＡセレクタによって選択された鍵を出力鍵として保持することを特徴とする。
【００３３】
上記中間鍵生成部は、２つの鍵から１つの鍵を選択する２−１セレクタと、４つの鍵から１つの鍵を選択する４−１セレクタと、３つの鍵から１つの鍵を選択する３−１ＫＬセレクタと、３−１ＫＬセレクタから選択された鍵を中間鍵として保持する鍵ＫＬレジスタと、３つの鍵から１つの鍵を選択する３−１ＫＡセレクタと、３−１ＫＡセレクタから選択された鍵を出力鍵として保持する鍵ＫＡレジスタとを有し、
上記２−１セレクタは、上記鍵ＫＬレジスタに保持された中間鍵と、上記鍵ＫＡレジスタに保持された出力鍵とから１つの鍵を選択し、
上記４−１セレクタは、上記２−１セレクタによって選択された鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵を入力し、入力した４つの鍵から１つの鍵を選択し、
上記３−１ＫＬセレクタは、秘密鍵を入力し、入力された秘密鍵と、上記４−１セレクタによって選択された鍵と、上記鍵ＫＬレジスタに保持された中間鍵とからなる３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記３−１ＫＬセレクタによって選択された鍵を中間鍵として保持し、
上記３−１ＫＡセレクタは、上記主変換部と上記副変換部とを用いて生成された出力鍵を入力し、入力した出力鍵と、上記４−１セレクタによって選択された鍵と、上記鍵ＫＡレジスタに保持された出力鍵とからなる３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択し、
上記鍵ＫＡレジスタは、上記３−１ＫＡセレクタによって選択された鍵を出力鍵として保持することを特徴とする。
【００３４】
上記中間鍵生成部は、２つの鍵から１つの鍵を選択する２−１ＫＬセレクタと、２−１ＫＬセレクタから選択された鍵を保持する鍵ＫＬレジスタと、２つの鍵から１つの鍵を選択する２−１ＫＡセレクタと、２−１ＫＡセレクタから選択された鍵を保持する鍵ＫＡレジスタと、２つの鍵から１つの鍵を選択する２−１セレクタと、８つの鍵から１つの鍵を選択する８−１セレクタとを有し、
上記２−１ＫＬセレクタは、秘密鍵を入力し、入力した秘密鍵と上記鍵ＫＬレジスタに保持された鍵とから１つの鍵を選択し、
上記２−１ＫＡセレクタは、上記主変換部と上記副変換部とを用いて生成された出力鍵を入力し、入力した出力鍵と上記鍵ＫＡレジスタに保持された鍵とから１つの鍵を選択し、
上記２−１セレクタは、上記２−１ＫＬセレクタと上記２−１ＫＡセレクタとによって選択された２つの鍵から１つの鍵を選択し、
上記８−１セレクタは、上記２−１セレクタによって選択された鍵から８つの異なるシフト数で各々巡回ビットシフトさせた８つの鍵を入力し、入力した８つ鍵から１つ鍵を選択することを特徴とする。
【００３５】
この発明に係るデータ変換装置は、データをデータ変換するデータ攪拌部を備えるデータ変換装置であって、
上記データ攪拌部は、データを入力し、入力したデータを非線形にデータ変換する主変換部と入力したデータを線形にデータ変換する副変換部とを並列に備え、
上記主変換部は、鍵とデータとを入力し、入力した鍵を使用して非線形にデータ変換を行うための関数であるＦ関数に基づいて入力したデータを非線形にデータ変換し、非線形変換したデータを出力し、
上記副変換部は、鍵とデータとを入力し、入力した鍵を使用して入力したデータを線形変換し、線形変換したデータを出力し、
上記主変換部と上記副変換部とは、上記主変換部によるデータ変換と上記副変換部によるデータ変換とを繰り返し行うことにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行うことを特徴とする。
【００３６】
上記主変換部は、入力した鍵を使用して入力したデータをＦ関数に基づいて非線形にデータ変換し、データ変換したデータを出力することを複数回繰り返すＦ関数部を備えることを特徴とする。
【００３７】
上記Ｆ関数部は、入力した鍵を使用して入力したデータを１／２XＦ関数（Ｘ≧０）に基づいて非線形にデータ変換し、データ変換したデータを出力することを２X回繰り返すことによりＦ関数に基づいた非線形データ変換を１回分完了し、完了したデータを出力することを複数回繰り返すことによりＦ関数に基づいた非線形データ変換を複数回行うことを特徴とする。
【００３８】
上記Ｆ関数部は、上位データと下位データとに分割されたデータのいずれか一方を入力し、入力したデータを非線形にデータ変換し、データ変換した上位データと下位データのいずれか一方を出力し、出力した上位データと下位データのいずれか一方と上位データと下位データのいずれか他方とを排他的論理和演算し、排他的論理和演算したデータと、上記Ｆ関数部に入力されなかった上位データと下位データとのいずれか他方とを入れ替えて出力することを特徴とする。
【００３９】
上記データ変換装置は、さらに、
鍵を生成する鍵生成部を備え、
上記鍵生成部は、さらに、
秘密鍵を入力し、入力した秘密鍵から中間鍵を生成し、生成した中間鍵から上記主変換部と上記副変換部とを用いて出力鍵を生成する中間鍵生成部を備えることを特徴とする。
【００４０】
上記鍵生成部は、さらに、
上記中間鍵生成部によって生成された中間鍵と出力鍵と所定の定数とを入力し、入力した中間鍵と出力鍵と所定の定数とから所定の条件に従って上記主変換部と上記副変換部とが行うデータ変換に用いる鍵をスケジュールする鍵スケジュール部を備え、
上記副変換部と上記主変換部とは、上記鍵スケジュール部によってスケジュールされた鍵を各々入力し、各々入力した鍵に基づいて各々に入力されたデータのデータ変換を行うことを特徴とする。
【００４１】
上記中間鍵生成部は、６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択する６−１ＫＬセレクタと、前記６−１ＫＬセレクタから選択された１つの鍵を中間鍵として保持する鍵ＫＬレジスタと、６つの鍵から１つの鍵を選択する６−１ＫＡセレクタと、６−１ＫＡセレクタから選択された１つの鍵を出力鍵として保持する鍵ＫＡレジスタと、を有し、
上記６−１ＫＬセレクタは、秘密鍵を入力し、入力された秘密鍵と、上記鍵ＫＬレジスタに保持された中間鍵と、上記鍵ＫＬレジスタに保持された中間鍵とから４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵とからなる６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記６−１ＫＬセレクタによって選択された鍵を中間鍵として保持し、
上記６−１ＫＡセレクタは、上記主変換部と上記副変換部とを用いて生成された出力鍵を入力し、入力した出力鍵と、上記鍵ＫＡレジスタに保持された出力鍵と、上記鍵ＫＡレジスタに保持された出力鍵から４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵と、からなる６つの鍵を入力し、入力した６つの鍵から１つの鍵を選択し、
上記鍵ＫＡレジスタは、上記６−１ＫＡセレクタによって選択された鍵を出力鍵として保持することを特徴とする。
【００４２】
上記中間鍵生成部は、２つの鍵から１つの鍵を選択する２−１セレクタと、４つの鍵から１つの鍵を選択する４−１セレクタと、３つの鍵から１つの鍵を選択する３−１ＫＬセレクタと、３−１ＫＬセレクタから選択された鍵を中間鍵として保持する鍵ＫＬレジスタと、３つの鍵から１つの鍵を選択する３−１ＫＡセレクタと、３−１ＫＡセレクタから選択された鍵を出力鍵として保持する鍵ＫＡレジスタとを有し、
上記２−１セレクタは、上記鍵ＫＬレジスタに保持された中間鍵と、上記鍵ＫＡレジスタに保持された出力鍵とから１つの鍵を選択し、
上記４−１セレクタは、上記２−１セレクタによって選択された鍵からから４つの異なるシフト数で各々巡回ビットシフトさせた４つの鍵を入力し、入力した４つの鍵から１つの鍵を選択し、
上記３−１ＫＬセレクタは、秘密鍵を入力し、入力された秘密鍵と、上記４−１セレクタによって選択された鍵と、上記鍵ＫＬレジスタに保持された中間鍵とからなる３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択し、
上記鍵ＫＬレジスタは、上記３−１ＫＬセレクタによって選択された鍵を中間鍵として保持し、
上記３−１ＫＡセレクタは、上記主変換部と上記副変換部とを用いて生成された出力鍵を入力し、入力した出力鍵と、上記４−１セレクタによって選択された鍵と、上記鍵ＫＡレジスタに保持された出力鍵とからなる３つの鍵を入力し、入力した３つの鍵から１つの鍵を選択し、
上記鍵ＫＡレジスタは、上記３−１ＫＡセレクタによって選択された鍵を出力鍵として保持することを特徴とする。
【００４３】
上記中間鍵生成部は、２つの鍵から１つの鍵を選択する２−１ＫＬセレクタと、２−１ＫＬセレクタから選択された鍵を保持する鍵ＫＬレジスタと、２つの鍵から１つの鍵を選択する２−１ＫＡセレクタと、２−１ＫＡセレクタから選択された鍵を保持する鍵ＫＡレジスタと、２つの鍵から１つの鍵を選択する２−１セレクタと、８つの鍵から１つの鍵を選択する８−１セレクタとを有し、
上記２−１ＫＬセレクタは、秘密鍵を入力し、入力した秘密鍵と上記鍵ＫＬレジスタに保持された鍵とから１つの鍵を選択し、
上記２−１ＫＡセレクタは、上記主変換部と上記副変換部とを用いて生成された出力鍵を入力し、入力した出力鍵と上記鍵ＫＡレジスタに保持された鍵とから１つの鍵を選択し、
上記２−１セレクタは、上記２−１ＫＬセレクタと上記２−１ＫＡセレクタとによって選択された２つの鍵から１つの鍵を選択し、
上記８−１セレクタは、上記２−１セレクタによって選択された鍵からから８つの異なるシフト数で各々巡回ビットシフトさせた８つの鍵を入力し、入力した８つ鍵から１つ鍵を選択することを特徴とする。
【００４４】
上記副変換部は、データを線形変換するデータ正変換部（ＦＬ）と上記データ正変換部（ＦＬ）の変換とは逆の変換をするデータ逆変換部（ＦＬ−１）との少なくともいずれかを有し、上記データ正変換部（ＦＬ）と上記データ逆変換部（ＦＬ-1）との少なくともいずれかによってデータをデータ変換することを特徴とする。
【００４５】
上記副変換部は、データを線形変換するデータ正変換と上記データ正変換とは逆の変換をするデータ逆変換とを同一の回路を共用して行う１／２副変換部を有し、１／２副変換部によってデータをデータ変換することを特徴とする。
【００４６】
上記データ変換装置は、１２８ビットか１９２ビットか２５６ビットのいずれかの鍵を入力し、入力した鍵を使用して入力したデータの暗号化とデータの復号のいずれかのデータ変換することを特徴とする。
【００４７】
この発明に係るデータ変換方法は、データを線形変換にデータ変換する副変換部に並列に配置され、鍵とデータとを入力し、入力した鍵を使用して非線形にデータ変換を行うための関数であるＦ関数に基づき、非線形データ変換する主変換部によって、入力したデータを非線形にデータ変換し、非線形変換したデータを出力することと、
鍵とデータとを入力し、入力した鍵を使用して入力したデータを上記主変換部に並列に配置された上記副変換部によって線形変換し、線形変換したデータを出力することを、繰り返し行うことにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行うことを特徴とする。
【００４８】
この発明に係るデータ変換プログラムは、データを線形変換にデータ変換する副変換部に並列に配置され、鍵とデータとを入力し、入力した鍵を使用して非線形にデータ変換を行うための関数であるＦ関数に基づき、非線形変換にデータ変換する主変換部によって、入力したデータを非線形にデータ変換し、非線形変換したデータを出力する処理と、
鍵とデータとを入力し、入力した鍵を使用して入力したデータを上記主変換部に並列に配置された上記副変換部によって線形変換し、線形変換したデータを出力する処理とを、繰り返し行うことにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行う処理をコンピュータに実行させることを特徴とする。
【００４９】
この発明に係るデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体は、データを線形変換にデータ変換する副変換部に並列に配置され、鍵とデータとを入力し、入力した鍵を使用して非線形にデータ変換を行うための関数であるＦ関数に基づき、非線形にデータ変換する主変換部によって、入力したデータを非線形にデータ変換し、非線形変換したデータを出力する処理と、
鍵とデータとを入力し、入力した鍵を使用して入力したデータを上記主変換部に並列に配置された上記副変換部によって線形変換し、線形変換したデータを出力する処理とを、繰り返し行うことにより少なくともデータの暗号化とデータの復号のいずれかのデータ変換を行う処理をコンピュータに実行させるためのデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【００５０】
【発明の実施の形態】
実施の形態１．
本実施の形態に記載するデータ変換装置ついて説明する。
【００５１】
データ変換装置．
図１は、本実施の形態のデータ変換装置の構成及び動作図である。
本実施の形態では、図５６及び図６０で示した「鍵ＫＬレジスタ２４０から出力した中間鍵（鍵ＫＬ）をセレクタ３１０に入力させるパス」「主変換部３２０から出力したデータをセレクタ３１０に入力させるパス」が存在しない。本実施の形態の副変換部３３０には、本来有するデータ変換機能に加え、鍵及びデータを転送する機能が追加されているためである。
以下、副変換部３３０が有する鍵及びデータを転送する機能を用いた鍵生成及びデータの暗号化／復号について説明する。他の構成及び動作は、図５６及び図６０を用いて説明したものと同様であるので、説明を省略する。
本実施の形態では、鍵ＫＬレジスタ２４０から出力された中間鍵（鍵ＫＬ）は、直接セレクタ３１０に入力されず、鍵ＫＬレジスタ２４０から鍵スケジュール部２１０への従来のパスを利用して、鍵スケジュール部２１０を経由して副変換部３３０に入力される。副変換部３３０は、「データを変換するモード」と「鍵またはデータを転送するモード」を持っているので、鍵を入力すると「鍵またはデータを転送するモード」にモードを切り換え、入力された鍵をセレクタ３１０に転送する。
また、本実施の形態では、主変換部３２０によって非線形変換されたデータは、直接セレクタ３１０に入力されず、副変換部３３０に入力される。副変換部３３０は、主変換部３２０によって非線形変換されたデータを入力すると「鍵またはデータを転送するモード」にモードを切り換え、入力されたデータをセレクタ３１０に転送する。
このような転送動作を副変換部３３０にさせることにより、図５６及び図６０に示した上記２つのパスを不要とすることができる。
なお、前述したように、主変換部３２０が複数サイクルでＦ関数による１回のデータ変換を行う場合には、一定期間保持した中間データを主変換部３２０に入力する必要があるため、図１では点線で示す「中間データを演算レジスタ３５０からセレクタ３１０へ送るパス」が存在するが、主変換部３２０が１サイクルでＦ関数による１回のデータ変換を行う場合には、点線で示した「演算レジスタ３５０からセレクタ３１０へのパス」は必要ない。後述する図６の点線で示したパスについても同様である。
【００５２】
鍵生成方法．
次に、中間鍵生成部４０によって行われる中間鍵及び出力鍵の生成方法について説明する。
図２に、中間鍵生成部４０が中間鍵から出力鍵を生成する動作を示す。
まず、中間鍵生成部４０に秘密鍵が入力され、６−１ＫＬセレクタ２２０を経て鍵ＫＬレジスタ２４０に中間鍵（鍵ＫＬ）として保持される。鍵ＫＬレジスタ２４０に保持された秘密鍵は中間鍵（鍵ＫＬ）として、鍵スケジュール部２１０を経由して主変換部３２０に入力される。主変換部３２０の１段目のＦ関数部３２１ａでは、入力された中間鍵（鍵ＫＬ）の上位ビットが、鍵スケジュール部２１０から出力された定数Σ１を用いて非線形変換され、ＥＸＯＲ回路３２２ａによって中間鍵（鍵ＫＬ）の下位ビットとの排他的論理和がとられ、Ｆ関数部３２１ｂに入力される。Ｆ関数部３２１ｂでも同様に、ＥＸＯＲ回路３２２ａから出力された鍵が、鍵スケジュール部２１０から出力された定数Σ２を用いて非線形変換され、ＥＸＯＲ回路３２２ｂによって中間鍵（鍵ＫＬ）の下位ビットとの排他的論理和がとられる。その結果、出力された鍵を鍵の上位ビットとし、ＥＸＯＲ回路３２２ａから出力された鍵を鍵の下位ビットとして副変換部３３０へ出力する。
副変換部３３０は、これらのデータを入力し、副変換部３３０のデータ正変換部５０に含まれる２つの排他的論理和演算器（ＥＸＯＲ）と副変換部３３０のデータ逆変換部７０に含まれる２つの排他的論理和演算器（ＥＸＯＲ）を用いて鍵の上位ビットと鍵の下位ビットとを各々排他的論理和演算をとり、その結果、出力されたデータを再び主変換部３２０に入力する。
主変換部３２０は、前述した主変換部３２０の一部を使用した処理と同様に、主変換部３２０の有するＦ関数部３２１ａとＥＸＯＲ回路３２２ａ、Ｆ関数部３２１ｂをＥＸＯＲ回路３２２ｂとを含んだ２段の変換処理を行い、変換された鍵の上位ビットと下位ビットを入れ替えて出力する。
出力されたデータは、中間鍵生成部４０の６−１ＫＡセレクタ２３０に入力され、鍵ＫＡレジスタ２５０に出力鍵（鍵ＫＡ）として保持される。このようにして、中間鍵生成部４０は、データの暗号化／復号処理を行う構成部分である主変換部３２０の一部と副変換部３３０の一部を用いて中間鍵（鍵ＫＬ）から出力鍵（鍵ＫＡ）を生成する。生成された中間鍵（鍵ＫＬ）の上位ビットからなる鍵ＫＬＨと下位ビットからなる鍵ＫＬＬと、出力鍵（鍵ＫＡ）の上位ビットからなる鍵ＫＡＨと下位ビットからなる鍵ＫＡＬとの４つの鍵は鍵スケジュール部２１０に入力され、データの暗号化及び復号のための鍵（拡大鍵という）として使用される。また、このようにして生成されたと出力鍵（鍵ＫＡ）と中間鍵（鍵ＫＬ）とを用いて同様の処理により、所定期間毎に新たな中間鍵及び出力鍵が生成される。
【００５３】
鍵スケジュール．
鍵スケジュール部２１０の内部構成とその動作について説明する。
図３は、鍵スケジュール部２１０の内部構成及び動作を示した図である。
中間鍵生成部４０から出力された中間鍵（鍵ＫＬ）は、上位ビットの鍵ＫＬＨと下位ビットの鍵ＫＬＬに分割され、４−１セレクタ２１６と４−１セレクタ２１７に入力される。中間鍵生成部４０から出力された出力鍵（鍵ＫＡ）も同様に、鍵ＫＡＨと鍵ＫＡＬに分割され、４−１セレクタ２１６と４−１セレクタ２１７に入力される。４−１セレクタ２１６と４−１セレクタ２１７は、これら４つの鍵から１つの鍵を選択する。４−１セレクタ２１６と４−１セレクタ２１７により選択された信号と選択された信号を１ビット右に巡回シフトさせた信号とを２−１セレクタ２１４と２−１セレクタ２１５に入力する。信号を１ビット右に巡回シフトさせるのは、中間鍵生成部４０による出力鍵（鍵ＫＡ）生成時、副変換部３３０を使用することは前述したが、この時、副変換部３３０に含まれる巡回シフト器によって信号が１ビット左に巡回シフトされるので、予め１ビット左に巡回シフトされることを予想して、結果に巡回シフトの影響が及ばないように１ビット右に巡回シフトさせたものである。従って、鍵スケジュール部２１０は必ず１ビット右に巡回シフトする処理を施すのではなく、副変換部３３０の巡回シフト器が信号を巡回シフトする数と方向と考慮し、その方向と逆の方向に副変換部３３０の巡回シフト器が巡回シフトする数だけ予め入力鍵を巡回シフトさせておけばよい。よって、２−１セレクタ２１４と２−１セレクタ２１５は、これらの２つの信号から１つの鍵に関する信号を選択するが、出力鍵（鍵ＫＡ）生成時に副変換部３３０へ鍵を出力する場合には、必ず予め定められたビットを巡回シフトさせた鍵を選択して、副変換部３３０に出力する。
２−１セレクタ２１４と２−１セレクタ２１５から出力された鍵は、出力鍵（鍵ＫＡ）生成時に副変換部３３０を用いる場合に副変換部３３０へ入力されるとともに、出力鍵（鍵ＫＡ）生成時に主変換部３２０を用いる場合とデータの暗号化／復号処理時に２−１セレクタ２１２に入力され、また、１バイト右又は左に巡回シフトさせた鍵を２−１セレクタ２１２に入力する。１バイト右又は左に巡回シフトさせた鍵を２−１セレクタ２１２に入力するのは、データの暗号化／復号処理時にＦ関数部が１／２や１／４や１／８等、１未満のＦ関数を処理する部分から構成されている場合に、必要になるためであるが、詳細は後述する。
２１２は、これらの２つの鍵から１つの鍵を選択し、選択した鍵を２−１セレクタ２１１に入力する。８−１セレクタ２１３は、定数であるΣ１からΣ４を上位データと下位データに分割したものを入力し、これら８つの入力信号から１つの信号を選択し、２−１セレクタ２１１へ入力する。２−１セレクタ２１１は、入力された２つの信号から１つの信号を選択し、選択した信号を鍵として主変換部３２０へ出力する。
【００５４】
データの暗号化処理／復号処理．
次に、データ攪拌部３０によって行われるデータの暗号化／復号処理について説明する。
図４は、データ攪拌部３０の暗号化／復号処理の動作を示す図である。
まず、Ｐ（平文又は暗号文）が入力される。ここでは、Ｐ（平文又は暗号文）を１２８ビット長と仮定する。入力データＰはＥＸＯＲ回路３１ａに入力され、鍵生成部２０に入力され、中間鍵生成部４０と鍵スケジュール部２１０とを経由して出力された秘密鍵（１２８ビット長）と排他的論理和がとられる。なお、秘密鍵は、中間鍵生成部４０にまず入力され、６−１ＫＬセレクタ２２０によって選択され、鍵ＫＬレジスタ２４０に中間鍵（鍵ＫＬ）として保持された後に、中間鍵（鍵ＫＬ）として鍵スケジュール部２１０に入力される。
共通鍵ブロック暗号処理を行うＣＡＭＥＬＬＩＡ（カメリア）では、ＥＸＯＲ回路３１ａとＥＸＯＲ回路３１ｂとは、副変換部３３０の有する排他的論理演算器を用いている。即ち、図５８に示すように、入力データを上位ビットの上位データと下位ビットの下位データとに分割し、分割された各々のデータと入力された鍵とをデータ正変換部５０のＥＸＯＲ回路５５及びＥＸＯＲ回路５６又はデータ逆変換部７０のＥＸＯＲ回路７５及びＥＸＯＲ回路７６によって排他的論理和をとり、出力する。
出力されたデータは、鍵スケジュール部２１０から出力された拡大鍵のいずれかを用いて主変換部３２０と副変換部３３０とによりデータ変換される。図４では、主変換部３２０ａ、副変換部３３０ａ、主変換部３２０ｂ、副変換部３３０ｂ、主変換部３２０ｃというように交互にデータ変換されている。
このようにして変換されたデータは、副変換部３３０のＥＸＯＲ回路３１ｂによって鍵スケジュール部２１０から出力された鍵との排他的論理和をとり、Ｃ（暗号文又は復号文）として出力する。
【００５５】
ＣＡＭＥＬＬＩＡにおけるデータ攪拌部３０で行われる、主変換部３２０と副変換部３３０によるデータ変換処理の動作の詳細について図１と図４を用いて説明する。
ＥＸＯＲ回路３１ａから出力されたデータは上位データと下位データに分割され、各々主変換部３２０ａに入力される。主変換部３２０ａでは、入力された各々のデータを非線形変換し、変換後の下位データを上位データとして、また、変換後の上位データを下位データとして、即ち、図４に示すように上位データと下位データを入れ替えてから副変換部３３０ａに入力する。
副変換部３３０ａでは、入力データを線形変換する。変換したデータは、図１に示すようにセレクタ３１０に入力され、演算レジスタ３５０に保持され、主変換部３２０（図４では主変換部３２０ｂで表されている）に入力される。
主変換部３２０ｂと副変換部３３０ｂでは、主変換部３２０ａ、副変換部３３０ａの処理を繰り返し、主変換部３２０ｃで再度主変換部３２０ａと同じ処理を繰り返す。主変換部３２０ｃからの出力データは、ＥＸＯＲ回路３１ｂによって繰り返した後の出力データと鍵スケジュール部２１０から出力された鍵データとの排他的論理和をとり、Ｃとして出力する。ＣＡＭＥＬＬＩＡでは、３１ｂはＥＸＯＲ回路３１ａと同様に、副変換部３３０に含まれる排他的論理演算器を使用する。また、ＣＡＭＥＬＬＩＡでは、主変換部３２０ａ、主変換部３２０ｂ、３２０ｃは、同一の主変換部３２０を用いて処理を繰り返すことによってデータ変換を行う。ただし、同一の内部構成を持つ主変換部３２０ａと主変換部３２０ｂと主変換部３２０ｃとを別々に持つ構成とすることもできる。副変換部３３０ａと副変換部３３０ｂも同様である。
【００５６】
ここで、主変換部３２０が１段のＦ関数処理部分を有する場合であって、図５７に示すように６段のＦ関数によるデータ変換処理を行う場合、主変換部３２０による処理を６回繰り返すことで６段のＦ関数によるデータ変換処理を完了することができる。これは、図１では、主変換部３２０からセレクタ３１０と演算レジスタ３５０を通過して主変換部３２０に戻るパスを６回繰り返し利用して主変換部３２０が６段のＦ関数によるデータ変換処理を完了することを意味する。従って、図５６や図６０に示す関連技術では、「主変換部３２０からの出力データをセレクタ３１０へ入力させるためのパス」が必要であった。
しかし、本実施の形態では、副変換部３３０が後述するような転送機能を有するため、主変換部３２０からの出力データは、副変換部３３０を転送させてセレクタ３１０へ入力させることが可能となる。よって、本実施の形態のデータ変換装置では、「主変換部３２０からの出力データを副変換部３３０によって転送させてセレクタ３１０へ入力させるパス」を用いることにより、「主変換部３２０からの出力データをセレクタ３１０へ入力させるためのパス」が不要となる。
【００５７】
主変換処理−主変換部３２０．
主変換部３２０の内部構成及び動作については、図５７、図６１を用いて前述した。
前述したように、主変換部３２０が持つ構造、すなわち、入力データを上位ビットの上位データと下位ビットの下位データとに分割し、分割した上位データと下位データのいずれか一方をＦ関数によって非線形変換し、非線形変換した上位データと下位データのいずれか一方と、上位データと下位データのいずれか他方とからＦ関数に入力するデータを生成し、生成したデータを上記入力データとして上位データと下位データに分割し、Ｆ関数を用いて再度変換することを繰り返すことを特徴とする非線形変換処理構造をＦＥＩＳＴＥＬ構造と呼んでいる。
【００５８】
主変換処理−主変換部３２０−Ｆ関数部３２１．
次に、主変換部３２０に含まれるＦ関数部３２１の内部構成及び動作について説明する。
図５は、Ｆ関数部３２１の内部構成及び動作を示した図である。
まず、入力データは、ＥＸＯＲ回路３２３によって拡大鍵との排他的論理和がとられ、８分割されて、Ｓ関数３２４に入力される。拡大鍵とは、秘密鍵から中間鍵生成部４０によって生成される出力鍵（鍵ＫＡ）と中間鍵（鍵ＫＬ）とを合わせた鍵をいう。秘密鍵が１２８ビット長のＣＡＭＥＬＬＩＡの場合には拡大鍵は２５６ビットになる。中間鍵（鍵ＫＬ）を上位ビットの鍵ＫＬＨと下位ビットの鍵ＫＬＬに分割し、同様に、出力鍵（鍵ＫＡ）を上位ビットの鍵ＫＡＨと下位ビットの鍵ＫＡＬに分割し、それら４つの鍵から鍵スケジュール部２１０によってスケジュールされた１つの鍵がＥＸＯＲ回路３２３に入力される。Ｓ関数３２４は、ＧＦ（２8 ）の逆元演算とアフィン変換を合成した関数（Ｓ１からＳ４）であり、バイト単位の非線形変換が行われる。変換され出力されたデータはＰ関数３２５に入力され、線形変換を行うＰ関数３２５によってデータの攪拌が行われた後に出力される。
【００５９】
次に、Ｆ関数部がＦ関数の１／２を処理する部分（１／２Ｆ関数）から構成されている場合についてその動作を説明する。
Ｆ関数部がＦ関数の１／２を処理する部分は、ＥＸＯＲ回路３２３とＳ4 ３２４ｅからＳ1 ３２４ｈの４つのＳボックスと図５の約半分のＰ関数部から構成される。これらの構成から、まず、上記Ｆ関数１段分のデータ変換処理の１／２の処理を行う。次に、もう一度同じ処理を行って、Ｆ関数１段分の処理を完了する。１度目の処理では、鍵スケジュール部２１０で前述したように、１バイト右又は左に巡回シフトさせた鍵とデータとを用いる。鍵とデータとを１バイト右又は左に巡回シフトさせることで、Ｓ１からＳ４に配置されたＳボックスの配置を変更せずにＳボックスを１バイト分ずらすのと同様の効果を奏することができる。即ち、図５に示すように、Ｓ4 ３２４ｅからＳ1 ３２４ｈで示すＳ1、Ｓ２、Ｓ３、Ｓ４に配置されたＳボックスの配置を変えずに、１バイト巡回シフトさせておいた鍵とデータとを入力することで、Ｓ1 ３２４ａからＳ4 ３２４ｄで示すＳ２、Ｓ３、Ｓ４、Ｓ１にＳボックスを配置したのと同様の処理が可能となる。
このような操作により、２サイクルでＦ関数１段分の処理が完了する。
【００６０】
主変換部３２０と副変換部３３０を逆に配置したデータ変換装置．
図６は、図１の主変換部３２０と副変換部３３０を逆に配置したデータ変換装置の構成および動作図である。
主変換部３２０と副変換部３３０を逆に配置したデータ変換装置の場合も図１に示すデータ変換装置の場合と同様に、副変換部３３０は、転送機能を用いてデータを転送することによって主変換部３２０に出力する。このようなパスを利用して主変換部３２０は６段のＦ関数によるデータ変換処理を完了することが可能となる。従って、図５６や図６０に示す「副変換部３３０からの出力データをセレクタ３１０へ入力させるためのパス」が不要となる。
また、鍵ＫＬレジスタ２４０から出力された中間鍵（鍵ＫＬ）は、直接セレクタ３１０に入力されず、鍵ＫＬレジスタ２４０から鍵スケジュール部２１０へのパスを利用して、鍵スケジュール部２１０を経由して副変換部３３０に入力される。副変換部３３０は、鍵を入力すると転送機能を用いて入力された鍵を主変換部３２０へ転送する。
【００６１】
このような転送動作を副変換部３３０にさせることにより、図５６及び図６０に示した「鍵ＫＬレジスタ２４０から出力した中間鍵（鍵ＫＬ）をセレクタ３１０に入力させるパス」と、「主変換部３２０から出力したデータをセレクタ３１０に入力させるパス」または「副変換部３３０から出力したデータをセレクタ３１０に入力させるパス」、の２つのパスを不要とすることができる。
【００６２】
主変換部３２０と副変換部３３０を並列に配置したデータ変換装置．
図７は、図１、図６と比較すると主変換部３２０と副変換部３３０が並列に配置されている点と２つの入力信号から１つの出力信号を選択するセレクタ３４０が存在する点で異なるデータ変換装置を示す図である。
その他の構成は、図１、図６と同様である。
このような構成をとるデータ変換装置では、主変換部３２０と副変換部３３０が並列に配置されているので、主変換部３２０と副変換部３３０とから出力された信号のいずれかを選択するセレクタ３４０が必要になる。そして、セレクタ３４０が選択し、演算レジスタ３５０を経由した信号とＰ（平文又は暗号文）とからセレクタ３１０が選択した信号が、主変換部３２０と副変換部３３０とへ入力される。
しかし、出力鍵（鍵ＫＡ）生成時、鍵ＫＬレジスタ２４０から出力された中間鍵（鍵ＫＬ）は、直接セレクタ３１０に入力されず、鍵ＫＬレジスタ２４０から鍵スケジュール部２１０へのパスを利用して、鍵スケジュール部２１０を経由して副変換部３３０に入力される。副変換部３３０は、鍵を入力すると転送機能を用いて入力された鍵を主変換部３２０へ転送する。このため、図５６及び図６０に示した「鍵ＫＬレジスタ２４０から出力した中間鍵（鍵ＫＬ）をセレクタ３１０に入力させるパス」を不要とすることができる。
また、「主変換部３２０から出力したデータをセレクタ３１０に入力させるパス」または「副変換部３３０から出力したデータをセレクタ３１０に入力させるパス」、の２つのパスを不要とすることができる。
【００６３】
中間鍵生成部４０の内部構成．
次に、中間鍵生成部４０の６−１ＫＬセレクタ２２０及び６−１ＫＡセレクタ２３０の内部構成について説明する。
図８は、中間鍵生成部４０の６−１ＫＬセレクタ２２０及び６−１ＫＡセレクタ２３０の内部構成を示した図である。
中間鍵生成部４０において鍵ＫＬレジスタ２４０に保持された中間鍵（鍵ＫＬ）は、鍵スケジュール部２１０に出力されるとともに、再び６−１ＫＬセレクタ２２０に入力される。６−１ＫＬセレクタ２２０は、内部に６−１セレクタ２２１を持っている。
６−１ＫＬセレクタ２２０では、入力された中間鍵（鍵ＫＬ）を６−１セレクタ２２１に入力するとともに、中間鍵（鍵ＫＬ）を任意の異なる４つのシフト数で巡回シフトさせた４つの信号を６−１セレクタ２２１に入力する。例えば、図示していないが、中間鍵を左に１７ビット、左に１５ビット、右に１７ビット、右に１５ビット、各々巡回シフトさせた４つの信号を入力する場合が考えられる。これら中間鍵（鍵ＫＬ）と巡回シフトさせた４つの信号と秘密鍵とを６つの入力信号として、６−１セレクタ２２１は、６つの入力信号から１つの出力信号を選択し、選択した出力信号を鍵ＫＬレジスタ２４０に新たな中間鍵（鍵ＫＬ）として保持させる。
出力鍵（鍵ＫＡ）から新たな出力鍵（鍵ＫＡ）を生成する方法も、中間鍵（鍵ＫＬ）から新たな中間鍵（鍵ＫＬ）を生成する方法と全く同様である。
【００６４】
図９は、中間鍵生成部４０の他の構成例を示す図である。
図９では、図８と比べ、４−１セレクタ２２３で示すセレクタの共有化が図られている。即ち、鍵ＫＬレジスタ２４０から出力された中間鍵（鍵ＫＬ）と鍵ＫＡレジスタ２５０から出力された出力鍵（鍵ＫＡ）とを２−１セレクタ２２４に入力し、２−１セレクタ２２４がこの２つの鍵から１つの鍵を選択し、選択された１つの鍵を４つの異なるシフト数で巡回シフトさせて４つの信号を生成し、それら４つの信号を４−１セレクタ２２３に入力する。４−１セレクタ２２３は、４つの信号から１つの信号を選択して、３−１ＫＬセレクタ２２２又は３−１ＫＡセレクタ２３２に出力する。
３−１ＫＬセレクタ２２２は、４−１セレクタ２２３によって選択された鍵と秘密鍵と鍵ＫＬレジスタ２４０に保持された中間鍵（鍵ＫＬ）とから１つの鍵を選択し、新たな中間鍵として鍵ＫＬレジスタ２４０に保持する。
３−１ＫＡセレクタ２３２も同様に、４−１セレクタ２２３によって選択された鍵と生成された出力鍵（鍵ＫＡ）と鍵ＫＡレジスタ２５０に保持された出力鍵（鍵ＫＡ）とから１つの鍵を選択し、新たな出力鍵（鍵ＫＡ）として鍵ＫＬレジスタ２４０に保持する。
図８に示す構成では２−１セレクタに換算すると１０個必要であったのに対し、図９に示す構成では、２−１セレクタが８個のみ必要なため、図８に示す構成の中間鍵生成部４０に比べ、２−１セレクタを２個削減することができる。このようにして、回路規模の削減を図ることが可能である。
なお、図８に示す中間鍵生成部４０の構成は、全ての実施の形態のデータ変換装置に適用することができる。また、図９に示す中間鍵生成部４０の構成も全ての実施の形態のデータ変換装置に適用することが可能である。
更に、後述する図５１に示す中間鍵生成部４０の構成も全ての実施の形態のデータ変換装置に適用することが可能である。
【００６５】
副変換処理−副変換部３３０．
次に、副変換部３３０の内部構成及び動作について説明する。
本実施の形態では、データ正変換部５０又はデータ逆変換部７０の少なくともいずれかが鍵転送機能を有する場合を説明する。
【００６６】
副変換処理−副変換部３３０−データ正変換部５０が鍵転送機能を有する場合．
図１０は、副変換部３３０の内部構成及び動作を示した図である。
本実施の形態では、図５８を用いて説明した関連技術に関するデータ正変換部５０とデータ逆変換部７０の構成図に比べ、鍵又はデータを転送する転送信号とこれらの転送信号に伴う回路が付加されている。
図１０では、データ正変換部５０が入力鍵を転送させる機能を有している。
即ち、データ正変換部５０に鍵を転送させる転送信号を入力し、転送信号を入力されたデータ正変換部５０は、転送信号に従って入力された鍵を転送する。
具体的には、制御部５によって転送信号が制御され、鍵を転送させる場合には、ＦＬ鍵トランスファ信号とＦＬマスク信号とを出力する。データ正変換部５０は、制御部５によって出力されたＦＬ鍵トランスファ信号とＦＬマスク信号とを入力する。
【００６７】
これらの転送信号を用いたデータ正変換部５０による鍵の転送処理について、具体的に説明する。
鍵を転送する場合、ＦＬ鍵トランスファ信号は０にセットされ、ＡＮＤ回路５１に入力される。ＡＮＤ回路５１には、暗号化／復号の対象となるデータも入力される。
ＦＬ鍵トランスファ信号が０であるため、入力されたデータは、ＡＮＤ回路５１のＡＮＤ回路により抑止され、無効となる。即ち、入力されたデータがどんな値をとっていても、ＡＮＤ回路５１の出力データは０となる。
０の値を持つＡＮＤ回路５１の出力データの上位ビットはＯＲ回路５３に、下位ビットはＥＸＯＲ回路５５に入力される。
一方、ＦＬマスク信号は、ＮＯＴ回路５２に入力される。鍵を転送させる場合、制御部５は、ＦＬマスク信号を０にセットするため、ＮＯＴ回路５２の出力信号は１となり、ＯＲ回路５３の出力信号は入力信号を０と１とするため、１を出力する。
ＡＮＤ回路５４は、ＯＲ回路５３によって出力された値である１と鍵１の情報を入力するため、ＡＮＤ回路５４の出力データは、必ず鍵１そのものになる。
ＡＮＤ回路５４によって出力された鍵１は、左に１ビット巡回シフトされ、ＥＸＯＲ回路５５に入力される。鍵１自身は、図３で示す鍵スケジュール部２１０において予め１ビット右に巡回シフトされているため、ＡＮＤ回路５４によって出力された鍵１が左に１ビット巡回シフトされることで転送すべき本来の鍵１の値となる。
ＥＸＯＲ回路５５には、ＡＮＤ回路５１から出力された０の値を持つ下位ビットが入力されるため、ＥＸＯＲ回路５５の演算によって出力されるのは、鍵１そのものである。これが出力信号の下位ビットなる。
よって、データ正変換部５０は、ＦＬ鍵トランスファ信号とＦＬマスク信号とにより、鍵１をそのまま出力信号として出力することができる。
【００６８】
鍵２についても同様に、ＦＬ鍵トランスファ信号とＦＬマスク信号とによって、そのまま出力信号として転送される。この動作について、次に説明する。
ＦＬマスク信号は、前述したとおり０である。よって、ＡＮＤ回路５８には０とＥＸＯＲ回路５５によって出力された鍵１が入力され、必ず０が出力される。
ＯＲ回路５７は、鍵２と０を入力するため、その出力値は必ず鍵２となる。
鍵２は、ＥＸＯＲ回路５６に入力され、ＡＮＤ回路５１が出力した上位データである０との排他的論理和がとられるため、出力は必ず鍵２となる。これが、これが出力信号の上位ビットなる。
【００６９】
以上のようにして、ＦＬ鍵トランスファ信号とＦＬマスク信号を入力し、鍵１と鍵２とをそのまま転送することが可能となる。転送信号であるＦＬ鍵トランスファ信号とＦＬ鍵マスク信号を制御する制御部５は、図１１、図１２、図１４〜図３３には図示されていないが、図１０と同様に、制御部５によって制御されているものである。
【００７０】
副変換処理−副変換部３３０−データ逆変換部７０が鍵転送機能を有する場合．次に、データ逆変換部７０が入力鍵を転送する機能を持っている場合を説明する。
図１１は、データ逆変換部７０が鍵転送機能を有している場合を示した図である。
ＡＮＤ回路７１には、ＦＬ-1鍵トランスファ信号とデータが入力される。
前述したＦＬ鍵トランスファ信号と同様に、ＦＬ-1鍵トランスファ信号は０を保持しているため、ＡＮＤ回路７１に入力されるデータは抑止されて無効となり、ＡＮＤ回路７１の出力データは０に固定される。
前述したＦＬマスク信号と同様に、ＦＬ-1マスク信号は０であるため、ＡＮＤ回路７３に入力される信号は両方とも０になり、ＡＮＤ回路７３の出力データは０に固定される。
ＯＲ回路７４は、ＡＮＤ回路７３の出力データである０と鍵３とを入力信号とするため、鍵３を出力する。
ＥＸＯＲ回路７５は、ＡＮＤ回路７１からの出力データ０の上位ビット０と鍵３とを入力するため、鍵３を出力する。これが出力信号の上位ビットなる。
また、ＯＲ回路７８では、ＮＯＴ回路７２によってＦＬ-1マスク信号０が反転された値１と鍵３とが入力されるため、ＯＲ回路７８は１を出力する。ＡＮＤ回路７７は、ＯＲ回路７８からの出力データ１と鍵４を入力するため、ＡＮＤ回路７７の出力は鍵４となる。鍵４は、１ビット左へ巡回シフトされ、ＥＸＯＲ回路７６に入力される。ここでも、鍵４は鍵スケジュール部２１０によって予め１ビット右へ巡回シフトされてデータ逆変換部７０に入力されるため、ここで１ビット左へ巡回シフトすることにより本来の鍵４の値となる。
ＥＸＯＲ回路７６には、ＡＮＤ回路７１の出力データの下位ビットである０と鍵４とが入力されるため、ＥＸＯＲ回路７６は鍵４を出力する。これが出力信号の下位ビットなる。
【００７１】
このようにして、データ逆変換部７０は、ＦＬ-1鍵トランスファ信号とＦＬ-1マスク信号を転送信号として、転送信号を入力した場合には、入力した鍵（鍵３、鍵４）をそのまま出力することが可能となる。
【００７２】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０とが鍵転送機能を有する場合．
次に、データ正変換部５０とデータ逆変換部７０とが入力鍵を転送する機能を持っている場合を説明する。
図１２は、データ正変換部５０とデータ逆変換部７０とが鍵を転送する機能を有する場合の副変換部３３０の内部構成図である。
データ正変換部５０は図１０のデータ正変換部５０と、また、データ逆変換部７０は図１１のデータ逆変換部７０と同一構成及び同一動作であるため、内部の構成及び動作については省略する。
このように、データ正変換部５０及びデータ逆変換部７０の少なくともいずれかに鍵を転送させる機能を備えることにより、図５６及び図６０で示した鍵ＫＬレジスタ２４０からセレクタ３１０への鍵のパスを不要とし、鍵ＫＬレジスタ２４０から鍵スケジュール部２１０を経て鍵を副変換部３３０に入力するとともに、鍵を転送させる転送信号を副変換部３３０へ入力して、副変換部３３０により鍵をセレクタ３１０へ転送させることが可能となる。
このようなパスによる鍵の転送を可能とすることで、データ変換装置は、全体として、セレクタの数を削減することができる。即ち、本実施の形態のデータ変換装置は、小型化を実現するために、中間鍵生成部４０によって拡大鍵を生成するための関数と主変換部３２０及び副変換部３３０によるデータ変換を行う関数とを図２に示すように共用しているが、このとき、図５６及び図６０に示す、「鍵ＫＬレジスタ２４０からセレクタ３１０へ入力され、演算レジスタ３５０を経て主変換部３２０に入力される中間鍵（鍵ＫＬ）のパス」を、本実施の形態では、「鍵ＫＬレジスタ２４０から鍵スケジュール部２１０を経て副変換部３３０によってセレクタ３１０に転送し、演算レジスタ３５０を経て主変換部３２０に入力される中間鍵（鍵ＫＬ）のパス」を利用することにより、セレクタの増加を抑止することができる。
【００７３】
このようにして、ブロック暗号処理を行うデータ変換装置のデータ攪拌部が有するセレクタの増加を抑止し、回路全体のゲート数を減少させることにより、回路チップ全体の小型化及び消費電力の低減を図ることができる。このため、小型化と低消費電力が強く望まれる携帯電話などのモバイル機器にも本実施の形態によるブロック暗号処理を行うデータ変換装置を有効に実装することが可能となる。
【００７４】
なお、図１０から図３３で入力される入力鍵は、それぞれ異なる鍵でも、同一鍵でもよい。また、ＦＬ鍵トランスファ信号とＦＬ-1鍵トランスファ信号は、同一信号でもよい。また、ＦＬマスク信号とＦＬ-1マスク信号は同一信号でもよい。
【００７５】
実施の形態２．
本実施の形態では、データ正変換部５０又はデータ逆変換部７０の少なくともいずれかがデータ転送機能を有する場合を説明する。
【００７６】
副変換処理−副変換部３３０−データ正変換部５０がデータ転送機能を有する場合．
本実施の形態では、副変換部３３０がデータを転送する機能を備えた場合のデータ変換装置について説明する。
図１３は、データ正変換部５０がデータを転送する機能を有する場合の副変換部３３０の内部構成図である。
制御部５は、データを転送する信号としてＦＬデータトランスファ信号をデータ正変換部５０に入力する。データ正変換部５０に入力されるＦＬデータトランスファ信号は、０の値を持っている。この信号は、ＡＮＤ回路５９とＡＮＤ回路６０に入力される。
ＡＮＤ回路５４では、入力データの上位ビットと鍵１とがＡＮＤ回路５４に入力される。ＡＮＤ回路５４の出力データは、入力データの値によって不特定であるが、出力データを左に１ビット巡回させたデータをＡＮＤ回路６０へ入力しても、もう一方の信号であるＦＬデータトランスファ信号は、０の値を持っているため、ＡＮＤ回路６０の出力信号はＡＮＤ回路５４の出力信号の値に関わらず０となる。ＡＮＤ回路６０の出力データ０はＥＸＯＲ回路５５へ入力され、入力データと下位ビットとの排他的論理和がとられる。ＡＮＤ回路６０の出力が０であるため、ＥＸＯＲ回路５５では入力されたデータの下位ビットが出力され、出力信号の下位データとして出力される。
一方、ＥＸＯＲ回路５５の出力データは、鍵とともにＯＲ回路５７の入力信号となる。ここで、ＯＲ回路５７の出力信号は不特定だが、ＦＬデータトランスファ信号が０に固定されているため、ＡＮＤ回路５９の出力データは０となり、ＥＸＯＲ回路５６では入力されたデータの上位ビットとＡＮＤ回路５９の出力データである０との排他的論理和がとられるため、入力されたデータの上位ビットが出力され、出力信号の上位データとして出力される。
このように、データ正変換部５０は、ＦＬデータトランスファ信号を転送信号として入力することにより、入力されたデータを鍵の入力によらず、そのまま出力することが可能となる。
なお、図１３のデータ逆変換部７０は、図５７で示すデータ逆変換部７０と同一構成を持っているため、説明を省略する。
【００７７】
副変換処理−副変換部３３０−データ逆変換部７０がデータ転送機能を有する場合．
図１４は、データ逆変換部７０がデータ転送機能を有する場合の副変換部３３０の内部構成図を示す。
データ逆変換部７０は、データを転送するＦＬ-1データトランスファ信号を入力する。データを転送する場合、ＦＬ-1データトランスファ信号は０を有するため、ＯＲ回路７４の出力信号の値に関わらず、ＡＮＤ回路７９は０を出力する。このため、ＥＸＯＲ回路７５では、入力されたデータの上位ビットがそのまま出力され、出力信号の上位データとなる。
また、ＦＬ-1データトランスファ信号はＡＮＤ回路８０に入力されるため、ＡＮＤ回路７７の出力信号はいかなる値をとっても、ＡＮＤ回路８０の出力信号は０となる。このため、入力されたデータの下位ビットはＥＸＯＲ回路７６でそのまま出力され、出力信号の下位データとなる。
このようにして、データ逆変換部７０は、データをそのまま出力信号として転送することができる。
【００７８】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０がデータ転送機能を有する場合．
図１５は、データ正変換部５０とデータ逆変換部７０とがデータ転送機能を有する場合の副変換部３３０の内部構成図である。
データ正変換部５０の構成は、図１３のデータ正変換部５０と同一構成であり、データ逆変換部７０の構成は、図１４のデータ逆変換部７０と同一構成である。従って、図１５に示すデータ正変換部５０とデータ逆変換部７０とは、各々に入力されるデータを各々そのまま出力することが可能である。
このように、副変換部３３０が入力データをそのまま転送してセレクタ３１０へ入力させる機能を有することにより、図５６に示す主変換部３２０の出力データをセレクタ３１０へ転送するパスが不要となる。
また、図６０に示すとおり、主変換部３２０が１段分以下のＦ関数を有する場合のデータ暗号化／復号処理では、主変換部３２０によって１段分のＦ関数の非線形変換を行うために、演算レジスタ３５０が、一定期間中間データを保持する必要があることは前述した。これは、主変換部３２０が自分自身のループパスを必要とすることを意味する。図６０では、主変換部３２０から出力された中間データがセレクタ３１０を経て演算レジスタ３５０へ出力されるループパスがこれに当たる。
しかし、本実施の形態のように、副変換部３３０のデータを転送させる機能を用いれば、上記ループパスが不要となる。即ち、主変換部３２０から出力された中間データは、副変換部３３０によって転送され、セレクタ３１０に入力されて、セレクタ３１０が入力された中間データを選択することによって、主変換部３２０に送られる。
このデータパスを用いることによって、図５６や図６０に示すセレクタ３１０への入力信号数と比べ、セレクタ３１０への入力信号数を減少させることができるため、セレクタの増加を抑止、減少させることが可能となる。
図６、図７に示すデータ変換装置でも同様に、主変換部３２０からセレクタ３１０へのパスが不要となり、装置の小型化が図れ、また、セレクタ数の減少による低消費電力化を図ることが可能となる。
なお、ＦＬデータトランスファ信号とＦＬ-1データトランスファ信号は、同一信号でもよい。
【００７９】
実施の形態３．
本実施の形態では、データ正変換部５０又はデータ逆変換部７０の少なくともいずれかが鍵転送機能及びデータ転送機能を有する場合を説明する。
【００８０】
副変換処理−副変換部３３０−データ正変換部５０が鍵転送機能及びデータ転送機能を有し、データ逆変換部７０が鍵転送機能を有する場合．
図１６は、データ正変換部５０が鍵転送機能とデータ転送機能とを備え、データ逆変換部７０が鍵転送機能を備えた場合の副変換部３３０の内部構成図である。
データ逆変換部７０の構成及び動作は、図１１で示した鍵転送機能を備えたデータ逆変換部７０と同様であるため、ここでは説明を省略する。
データ正変換部５０の構成及び動作は、図１０で示した鍵転送機能を備えたデータ正変換部５０と、図１３で示したデータ転送機能を備えたデータ正変換部５０とを組み合わせた構成である。
データ正変換部５０では、ＦＬ鍵トランスファ信号は、入力されたデータを抑止し、無効とする機能を有し、ＦＬマスク信号は、入力鍵を通過させる機能を有する。
また、ＦＬデータトランスファ信号は、入力鍵を無効にし、データを通過させる機能を有する。
従って、ＦＬ鍵トランスファ信号とＦＬマスク信号とが鍵を転送させる転送信号として０を保持している場合には、データの転送を行うことはできないので、ＦＬデータトランスファ信号はデータを転送させる転送信号として０を保持することはできない。同様に、ＦＬデータトランスファ信号がデータを転送させる転送信号として０を保持している場合には、鍵の転送を行うことはできないので、ＦＬ鍵トランスファ信号とＦＬマスク信号は鍵を転送させる転送信号として０を保持することはできない。
また、ＦＬ鍵トランスファ信号とＦＬマスク信号とＦＬデータトランスファ信号とＦＬ-1鍵トランスファ信号とＦＬ-1マスク信号とがすべて転送信号として０を保持しない場合には、データ正変換部５０とデータ逆変換部７０とは、本来的に行うべき入力データの線形変換処理を行う。
【００８１】
まず、データ正変換部５０が鍵を転送する動作について説明する。
データ正変換部５０は、ＦＬ鍵トランスファ信号として０、ＦＬマスク信号として０を入力する。データは転送しないので、ＦＬデータトランスファ信号は１のままである。
まず、ＡＮＤ回路５１は、ＦＬ鍵トランスファ信号によりデータを抑止し、無効とする。鍵１は、ＡＮＤ回路５４をそのまま通過し、１ビット左へ巡回シフトされた後、ＡＮＤ回路６０に入力される。ＦＬデータトランスファ信号は１であるため、鍵１はＡＮＤ回路６０をそのまま通過し、ＥＸＯＲ回路５５では、鍵１とＡＮＤ回路５１から出力された出力データ０の下位ビットとの排他的論理和をとるため、鍵１が出力信号の下位データとして出力される。
鍵２は、ＡＮＤ回路５８から出力された０によりＯＲ回路５７を通過し、ＦＬデータトランスファ信号によりＡＮＤ回路５９を通過し、ＥＸＯＲ回路５６でＡＮＤ回路５１から出力された出力データ０の上位ビットとの排他的論理和をとられるため、ＥＸＯＲ回路５６も通過して、出力信号の上位データとなる。このようにして、データ正変換部５０は、鍵（鍵１、鍵２）をそのまま転送させることができる。
【００８２】
次に、データ正変換部５０がデータを転送する場合の動作を説明する。
ＦＬデータトランスファ信号は、入力信号を０とする。ＦＬ鍵トランスファ信号とＦＬマスク信号とは、１を保持したままである。
ＡＮＤ回路５１は、データを通過させ、通過したデータの下位ビットはＥＸＯＲ回路５５に入力される。ＡＮＤ回路６０では、入力されるＦＬデータトランスファ信号が０であるため、ＡＮＤ回路６０の出力は０となり、ＥＸＯＲ回路５５に入力されたデータの下位ビットはＥＸＯＲ回路５５を通過して、出力信号の下位データとして出力される。
同様に、ＡＮＤ回路５９の出力はＦＬデータトランスファ信号が０であるため０となり、ＥＸＯＲ回路５６に入力されたデータの上位ビットはＥＸＯＲ回路５６を通過して出力信号の上位データとして出力される。
このようにして、データ正変換部５０は、データをそのまま転送させることができる。
【００８３】
このように、ＦＬ鍵トランスファ信号やＦＬ-1鍵トランスファ信号である鍵トランスファ信号と、ＦＬマスク信号とＦＬ-1マスク信号とからなるマスク信号は、鍵を転送し、ＦＬデータトランスファ信号は、データを転送する。
【００８４】
副変換処理−副変換部３３０−データ正変換部５０が鍵転送機能を有し、データ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図１７は、データ正変換部５０が鍵転送機能を備え、データ逆変換部７０が鍵転送機能とデータ転送機能とを備えた場合の副変換部３３０の内部構成図である。
データ正変換部５０の構成及び動作は、図１０で示した鍵転送機能を備えたデータ正変換部５０と同様であるため、ここでは説明を省略する。
データ逆変換部７０の動作は、図１６で示したデータ正変換部５０と同様の動作をするため、動作の詳細については既に述べたので省略する。
【００８５】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図１８は、データ正変換部５０とデータ逆変換部７０とが各々鍵転送機能とデータ転送機能を有する場合の副変換部３３０の構成図である。
データ正変換部５０とデータ逆変換部７０とが行う転送の動作については、既に説明したので省略する。ここでは、鍵転送機能とデータ転送機能をデータ正変換部５０とデータ逆変換部７０とがいずれも有するので、データ変換装置は、高度な鍵及びデータ転送処理を行うことができる。
【００８６】
副変換処理−副変換部３３０−データ正変換部５０が鍵転送機能及びデータ転送機能を有する場合．
図１９では、データ正変換部５０が鍵転送機能とデータ転送機能とを備え、データ逆変換部７０はこれらの転送機能のいずれも備えていない場合の副変換部３３０の構成図である。
データ正変換部５０及びデータ逆変換部７０の動作については、前述したので省略する。
【００８７】
副変換処理−副変換部３３０−データ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図２０では、データ逆変換部７０が鍵転送機能とデータ転送機能とを備え、データ正変換部５０がこれらの転送機能のいずれも備えていない場合の副変換部３３０の構成図である。
データ正変換部５０とデータ逆変換部７０の具体的動作については、前述したので省略する。
【００８８】
副変換処理−副変換部３３０−データ正変換部５０が鍵転送機能及びデータ転送機能を有し、データ逆変換部７０がデータ転送機能を有する場合．
図２１では、データ正変換部５０は、鍵転送機能とデータ転送機能のいずれをも有し、データ逆変換部７０がデータ転送機能のみを有する場合の副変換部３３０の構成図である。
データ正変換部５０とデータ逆変換部７０の各々の動作については、前述したので省略する。
【００８９】
副変換処理−副変換部３３０−データ逆変換部７０が鍵転送機能及びデータ転送機能を有し、データ正変換部５０がデータ転送機能を有する場合．
図２２は、データ正変換部５０がデータ転送機能を備え、データ逆変換部７０が鍵転送機能とデータ転送機能とを備える場合の副変換部３３０の構成図である。
データ正変換部５０とデータ逆変換部７０の各々の動作については、前述したので省略する。
【００９０】
副変換処理−副変換部３３０−データ正変換部５０がデータ転送機能を有し、データ逆変換部７０が鍵転送機能を有する場合．
図２３は、データ正変換部５０がデータ転送機能を備え、データ逆変換部７０が鍵転送機能を備えた場合の副変換部３３０の構成図である。
各動作については、前述したので省略する。
【００９１】
副変換処理−副変換部３３０−データ正変換部５０が鍵転送機能を有し、データ逆変換部７０がデータ転送機能を有する場合．
図２４は、データ正変換部５０が鍵転送機能を備え、データ逆変換部７０がデータ転送機能を備えた場合の副変換部３３０の構成図である。
各動作については、前述したので省略する。
【００９２】
副変換処理−副変換部３３０−データ逆変換部７０とデータ正変換部５０とをシリアルに接続−データ正変換部５０とデータ逆変換部７０がデータ転送機能を有する場合．
図２５は、データ逆変換部７０とデータ正変換部５０とをシリアルに接続し、データ逆変換部７０がデータ転送機能を備え、データ正変換部５０もデータ転送機能を備えた場合の構成図である。
それぞれの内部動作は、前述したので省略する。
図２５に示す構成では、データ逆変換部７０によって転送されたデータがデータ正変換部５０に入力され、データ正変換部５０によって更に転送される出力信号として出力される。
このように、データ逆変換部７０とデータ正変換部５０とをシリアルに配置し、接続することによって、データ正変換部５０とデータ逆変換部７０とによるデータの線型変換だけでなく、データ逆変換部７０のみ又はデータ正変換部５０のみによるデータの線型変換が可能である。即ち、データ逆変換部７０によってデータの線型変換したデータをデータ正変換部５０に入力し、データ正変換部５０では、入力したデータを線形変換することなく転送することが可能である。また、データ逆変換部７０で、入力したデータをデータ正変換部５０に転送し、データ正変換部５０でのみデータを線型変換することが可能である。
従って、データ正変換部５０のみ又はデータ逆変換部７０のみでデータの変換をしたい場合に有効な構成である。このような効果は、後述する図２６〜図３０で示す副変換部３３０でも同様に奏することができる。
【００９３】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０とをシリアルに接続−データ正変換部５０とデータ逆変換部７０がデータ転送機能を有する場合．
図２６は、図２５のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成を示す。
動作及び効果は、図２５に示す副変換部３３０と同様であるので省略する。
【００９４】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０とをシリアルに接続−データ正変換部５０が鍵転送機能及びデータ転送機能を有し、データ逆変換部７０がデータ転送機能を有する場合．
図２７は、図２６のデータ正変換部５０に更に鍵転送機能を付加した副変換部３３０の構成図である。
データ正変換部５０とデータ逆変換部７０の内部構成及び動作は、前述したので省略する。
【００９５】
副変換処理−副変換部３３０−データ逆変換部７０とデータ正変換部５０とをシリアルに接続−データ正変換部５０が鍵転送機能及びデータ転送機能を有し、データ逆変換部７０がデータ転送機能を有する場合．
図２８は、図２７のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成を示す。
データ正変換部５０とデータ逆変換部７０の内部構成及び動作は、前述したので省略する。
【００９６】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０とをシリアルに接続−データ正変換部５０がデータ転送機能を有し、データ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図２９は、図２６に示す構成にデータ逆変換部７０の鍵転送機能を追加した構成図である。
データ正変換部５０とデータ逆変換部７０の構成及び動作は、前述したので省略する。
【００９７】
副変換処理−副変換部３３０−データ逆変換部７０とデータ正変換部５０とをシリアルに接続−データ正変換部５０がデータ転送機能を有し、データ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図３０は、図２９のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成を示す。
内部構成及び動作は、前述したので省略する。
【００９８】
このように、ＦＬ鍵トランスファ信号及びＦＬ-1鍵トランスファ信号は、入力されたデータを抑止し、無効とする機能を有し、ＦＬマスク信号及びＦＬ-1マスク信号は、入力鍵を通過させる機能を有する。
また、ＦＬデータトランスファ信号とＦＬ-1データトランスファ信号とは、入力鍵を無効にし、データを通過させる機能を有する。
以上の６つの信号は全て転送信号であり、これらの転送信号が入力されない場合には、関連技術に示すとおり、データ正変換部５０とデータ逆変換部７０とは、本来的に行うデータの線形変換を行う。
【００９９】
副変換処理−副変換部３３０−データ正変換部５０とデータ逆変換部７０とをシリアルに接続−データ正変換部５０とデータ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図６２は、図２７に示すデータ正変換部５０の構成と、図２９に示すデータ逆変換部７０の構成からなる。即ち、シリアルに接続されたデータ正変換部５０とデータ逆変換部７０とは、両方とも、鍵転送機能及びデータ転送機能を有している。
データ正変換部５０とデータ逆変換部７０の構成及び動作は、前述したので省略する。
【０１００】
副変換処理−副変換部３３０−データ逆変換部７０とデータ正変換部５０とをシリアルに接続−データ正変換部５０と、データ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合．
図６３は、図６２のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成を示す。
内部構成及び動作は、前述したので省略する。
【０１０１】
実施の形態４．
本実施の形態では、データ正変換部５０とデータ逆変換部７０とを共用の回路とした１／２副変換部９０に鍵及びデータの転送機能を付加した構成及びその動作について説明する。
【０１０２】
副変換処理−副変換部３３０−１／２副変換部９０が鍵転送機能及びデータ転送機能を有する場合．
図３１は、１／２副変換部９０に鍵転送機能及びデータ転送機能を付加した場合の副変換部３３０の構成図である。
関連技術で示した図５９に対し、鍵トランスファ信号、マスク信号、データトランスファ信号が付加されている。また、これらの転送信号の入力に伴い、鍵とデータとを転送するための回路が付加されている。
まず、切換信号は、データ正変換部５０とデータ逆変換部７０とを切り換える信号である。２−１セレクタ９９ａに入力されたＡ信号とＥ信号から切換信号によってＡ信号が選択され、出力信号Ｂとして出力され、２−１セレクタ９９ｂに入力されたＣ信号とＦ信号から切換信号によってＣ信号が選択され、出力信号Ｄとして出力された場合には、１／２副変換部９０は、データ正変換部５０と同様のデータ変換を行う。
一方、２−１セレクタ９９ａが切換信号により出力信号ＢとしてＥ信号を選択し、２−１セレクタ９９ｂが出力信号Ｂとして切換信号によりＦ信号を選択した場合には、１／２副変換部９０は、データ逆変換部７０と同一のデータ変換を行う。
【０１０３】
切換信号によって１／２副変換部９０がデータ正変換部５０として機能する場合、図３１に示された動作は、図１８に示されたデータ正変換部５０の動作と同様となる。即ち、鍵トランスファ信号は、図１８のＦＬ鍵トランスファ信号に対応し、マスク信号は、図１８のＦＬマスク信号に対応し、データトランスファ信号は、図１８のＦＬデータトランスファ信号に対応する。
また、各回路の対応としては、９８はＡＮＤ回路５１（図１８）に対応し、９１はＥＸＯＲ回路５５（図１８）、９５はＡＮＤ回路６０（図１８）、１０１はＡＮＤ回路５４（図１８）、９４はＯＲ回路５３（図１８）、１００はＮＯＴ回路５２（図１８）、９６はＡＮＤ回路５８（図１８）、９２はＯＲ回路５７（図１８）、９７はＡＮＤ回路５９（図１８）、９３はＥＸＯＲ回路５６（図１８）に対応する。
このように対応することで、１／２副変換部９０は、図１８のデータ正変換部５０の機能を発揮することができる。即ち、データの正変換を行うとともに、鍵転送信号を入力した場合には、入力した鍵を出力信号とすることによって、鍵（鍵１、鍵２）を転送することが可能となる。なお、これらの動作については、図１８のデータ正変換部５０と同様であるので説明を省略する。
【０１０４】
１／２副変換部９０が切換信号によってデータ逆変換部７０として機能する場合には、図３１に示された動作は、図１８に示されたデータ逆変換部７０の動作と同様となる。即ち、鍵トランスファ信号は図１８のＦＬ-1鍵トランスファ信号に対応し、マスク信号は図１８のＦＬ-1マスク信号、データトランスファ信号は図１８のＦＬ-1データトランスファ信号に対応する。
また、各回路の対応としては、９８はＡＮＤ回路７１（図１８）に対応し、９１はＥＸＯＲ回路７６（図１８）、９５はＡＮＤ回路８０（図１８）、１０１はＡＮＤ回路７７（図１８）、９４はＯＲ回路７８（図１８）、９６はＡＮＤ回路７３（図１８）、９２はＯＲ回路７４（図１８）、９７はＡＮＤ回路７９（図１８）、９３はＥＸＯＲ回路７５（図１８）に対応する。
このように対応することによって、１／２副変換部９０は、図１８のデータ逆変換部７０の機能を発揮することができる。即ち、データの逆変換を行うとともに、鍵転送信号を入力した場合には、入力した鍵を出力信号とすることによって、鍵（鍵３、鍵４）を転送することが可能となる。なお、これらの動作については、図１８のデータ逆変換部７０と同様であるので説明を省略する。
【０１０５】
副変換処理−副変換部３３０−１／２副変換部９０がデータ転送機能を有する場合．
図３２は、１／２副変換部９０にデータ転送機能を付加した場合の副変換部３３０の構成図である。
図３１と同様に、２−１セレクタ９９ａによってＡ信号が選択され、２−１セレクタ９９ｂによってＣ信号が選択された場合には、１／２副変換部９０は、図１３のデータ正変換部５０と同様の機能を有する。この場合、データトランスファ信号は、ＦＬデータトランスファ信号に対応する。
また、切換信号によって２−１セレクタ９９ａではＥ信号が選択され、２−１セレクタ９９ｂではＦ信号が選択された場合には、１／２副変換部９０は、図１４のデータ逆変換部７０と同様の機能を有する。この場合、データトランスファ信号は、ＦＬ-1データトランスファ信号に対応する。
このような１／２副変換部９０の構成により、１／２副変換部９０は、データを変換するとともに、データを転送する転送信号を入力した場合には、データを変換せずに出力することによって、転送処理を行うことが可能となる。
なお、これらの動作については、前述したので説明を省略する。
【０１０６】
副変換処理−副変換部３３０−１／２副変換部９０が鍵転送機能を有する場合．図３３は、１／２副変換部９０に鍵転送機能を付加した場合の副変換部３３０の構成図である。
図３１と同様に、２−１セレクタ９９ａによってＡ信号が選択され、２−１セレクタ９９ｂによってＣ信号が選択された場合には、１／２副変換部９０は、図１０のデータ正変換部５０と同様の機能を有する。この場合、鍵トランスファ信号及びマスク信号は、ＦＬ鍵トランスファ信号及びＦＬマスク信号に対応する。
また、切換信号によって２−１セレクタ９９ａではＥ信号が選択され、２−１セレクタ９９ｂではＦ信号が選択された場合には、１／２副変換部９０は、図１１のデータ逆変換部７０と同様の機能を有する。この場合、鍵トランスファ信号及びマスク信号は、ＦＬ-1鍵トランスファ信号及びＦＬ-1マスク信号に対応する。
このような１／２副変換部９０の構成により、１／２副変換部９０は、データを変換するとともに、鍵を転送する転送信号を入力した場合には、鍵を変換せずに出力することによって、転送処理を行うことが可能となる。
なお、これらの動作については、前述したので説明を省略する。
【０１０７】
本実施の形態で示すように、データ正変換部５０とデータ逆変換部７０とを共用の回路として構成する１／２副変換部９０が鍵を転送する機能とデータを転送する機能とを備えることにより、副変換部３３０の小型化と前述したような鍵のパス及びデータパスを不要とすることによるセレクタの増加防止により、データ変換装置全体を小型化することができる。
【０１０８】
以上、実施の形態１から実施の形態４に開示したブロック暗号を行うデータ変換装置は、ＣＡＭＥＬＬＩＡの構成を中心に説明した。しかし、上記で説明した転送機能をもつ副変換部３３０は、ＣＡＭＥＬＬＩＡやＭＩＳＴＹ（ミスティ）やＫＡＳＵＭＩ（カスミ）など、ブロック暗号を行うデータ変換装置に適用することができる。
【０１０９】
以上に説明した図１または図６または図７に示すデータ変換装置では、セレクタ３１０を構成する２−１セレクタを１つ又は２つとすることが可能である。
これと比較して、前述した関連技術を示すデータ変換装置では、図５６に示すように、４つの信号から１つの出力信号を選択するために、２−１セレクタが３つ必要となる。
さらに、図６０によって示される１／２Ｆ関数を用いたデータ変換装置では、３１０は、５つの入力信号から１つの出力信号を選択するために、４つの２−１セレクタが必要となる。
従って、図１または図６または図７に示すデータ変換装置によれば、関連する技術によるデータ変換装置に比べ、データ攪拌部３０を構成するセレクタの数を減少させることが可能となる。
【０１１０】
さらに、図７に示すデータ変換装置では、主変換部３２０と副変換部３３０とを並列に配置したために、セレクタ３４０が１つ必要となっている。セレクタ３４０は、主変換部３２０と副変換部３３０から出力された２つの出力信号を入力信号として入力し、２つの入力信号から１つの入力信号を選択する２−１セレクタ１つから構成されている。よって、図７では、セレクタ３１０とセレクタ３４０とに必要な２−１セレクタは２つとなる。
従って、図７に示すデータ変換装置においても、関連する技術によるデータ変換装置に比べ、データ攪拌部３０を構成するセレクタの数を減少させることが可能となる。
【０１１１】
実施の形態５．
本実施の形態では、ブロック暗号処理を行うＣＡＭＥＬＬＩＡにおいて、主変換部３２０と副変換部３３０とを並列に実装したＣＡＭＥＬＬＩＡについて説明する。
【０１１２】
ＣＡＭＥＬＬＩＡは、ブロック長が１２８ビットであり、鍵長は１２８ビット，１９２ビット，２５６ビットが利用できる。
【０１１３】
アルゴリズムの構成は、上述した特徴を持つＦＥＩＳＴＥＬ構造であり、基本的に暗号化及び復号処理は、同一のハードウエアまたはソフトウエアで実現可能である。
Ｆ関数は、鍵長に依存し、１２８ビット鍵の場合は１８段（図３４の主変換部３２０の６段×３）、１９２ビット及び２５６ビットの場合は、図５４及び図５５に示すように２４段となる。図５４及び図５５については後述する。
図３４は、１２８ビット鍵のＣＡＭＥＬＬＩＡの場合の暗号化処理を示す図である。即ち、図３４では、Ｐ（平文）に対して主変換部３２０と副変換部３３０とによるデータ変換（データの暗号化）を行いＣ（暗号文）を出力する。図３４では、Ｆ関数６段ごとにＦＬ（データ正変換関数）とＦＬ-1（データ逆変換関数）とが挿入される。
図３４の左側は図４のデータ攪拌部３０による動作として記載されているものと同様である。即ち、図４のＥＸＯＲ回路３１ａおよびＥＸＯＲ回路３１ｂは、図３４のＥＸＯＲ回路６００とＥＸＯＲ回路６０１に対応し、実際には、副変換部３３０に含まれるＥＸＯＲによって処理される。また、図３４に示されるすべての鍵は、図４で示すように、鍵スケジュール部２１０によってスケジュールされ、出力された鍵を入力するものである。
また、図３４の右側は図５７で示す図と同様である。
【０１１４】
図３５は、１２８ビット鍵のＣＡＭＥＬＬＩＡの場合の復号処理を示す図である。
図３５では、Ｃ（暗号文）に対し主変換部３２０と副変換部３３０とによるデータ変換（データの復号）を行い、Ｐ（復号文）を出力する。
なお、図３４と図３５に示す動作は、前述したので省略する。
【０１１５】
ＣＡＭＥＬＬＩＡのＦ関数の内部について詳細を説明する。
図３６は、ＣＡＭＥＬＬＩＡのＦ関数の内部構成図である。
ＣＡＭＥＬＬＩＡのＦ関数の内部は、ＳＰＮ構造になっており、そのデータ処理は基本的に入力データ（１）から入力データ（８）の８ビット単位で行われ、ＳボックスからなるＳ関数３２４とＰ関数３２５と呼ばれる排他的論理和（ＥＸＯＲ）による線形変換により構成される。
Ｆ関数部３２１では、まず、８ビットずつの入力データ（１）〜入力データ（８）を入力し、入力した６４ビットの入力データに鍵（１）から鍵（８）まで８ビットずつの合計６４ビットの鍵との排他的論理を各々とり出力される。出力されたデータは、Ｓ関数３２４に入力され、ＧＦ（２8 ）の逆元演算とアフィン変換を合成したＳ関数３２４によりバイト単位に非線形変換される。
次に、Ｐ関数３２５によってデータを排他的論理和による線形変換し、このような動作を通じてデータを攪拌した後、出力データ（１）〜出力データ（８）として出力する。
【０１１６】
ＣＡＭＥＬＬＩＡのＦ関数のデータ幅は、６４ビットである。図３６では、Ｓ関数３２４にＳ１〜Ｓ４のＳボックスを二組（図３６の下からＳ１、Ｓ２、Ｓ３、Ｓ４の一組とその上の、Ｓ２、Ｓ３、Ｓ４、Ｓ１の一組）用意している。
従って、図３６に示すように、まず、入力データ（１）から入力データ（４）についてのデータ変換を行い、次に、残りの入力データである入力データ（５）から入力データ（８）のデータ変換を行うことで処理することも可能である。この場合、前述したように、２回目のデータ変換では、Ｓ１からＳ４に順に配置されたＳボックスを構成する回路をそのまま活用するために、データを１バイト予め巡回シフトさせておき、巡回シフトさせた入力データ（５）から入力データ（８）を入力することにより、Ｓ関数３２４の構成を変えずに、データとＳ１からＳ４のＳボックスを対応させることができる。
このように、Ｆ関数は、鍵と入力データとのＥＸＯＲ（排他的論理和）、４種類のＳ関数（Ｓ１からＳ４）の２回、及び、Ｐ関数３２５による演算によってデータの非線形変換を実現している。
ＣＡＭＥＬＬＩＡの代表的な演算は、ＳＢＯＸ（ＧＦ（２8 ）上の逆元回路＋アフィン変換）Ｓ１からＳ４のＳ関数３２４と、Ｐ関数３２５及びデータ正変換（ＦＬ）及びデータ逆変換（ＦＬ−１）関数であるため、簡単なブール代数の組み合わせで実現できる。
【０１１７】
次に、ＣＡＭＥＬＬＩＡの全体構成及び動作を詳しく説明する。
図３７は、ＣＡＭＥＬＬＩＡの全体構成及び動作を示した図である。
ＣＡＭＥＬＬＩＡは、入力される秘密鍵が１２８ビット鍵の場合は、内部で２５６ビットに拡大し、拡大された拡大鍵を用いてデータの暗号化／復号処理を行う。
入力される秘密鍵が１９２ビット及び２５６ビット鍵の場合は、内部で５１２ビットに拡大して、データの暗号化／復号に用いるが、１９２ビット及び２５６ビット鍵の場合については後述する。
【０１１８】
まず、ＣＡＭＥＬＬＩＡの構造的な特徴を述べる。
ＣＡＭＥＬＬＩＡのアルゴリズム全体は、主変換部３２０によって同様のＦ関数を繰り返し演算することで実現している。また、Ｆ関数は、図３６に示す構成をとる。
また、データ攪拌部３０では、図４のＥＸＯＲ回路３１ａとＥＸＯＲ回路３１ｂに示すように、入力データ及び出力データと鍵との排他的論理和演算（ＥＸＯＲ）を行う。これをｗｈｉｔｅｎｉｎｇと呼ぶ。
また、データ攪拌部３０では、Ｆ関数６段を有する主変換部３２０ごとにデータ正変換（ＦＬ）とデータ逆変換（ＦＬ-1）を有する副変換部３３０が挿入されている。これは、図３４及び図３５に示されている。
また、前述したとおり、拡大鍵（中間鍵＋出力鍵）は、図２に示すように、生成される。
以上のことから、データ正変換（ＦＬ）とデータ逆変換（ＦＬ-1）を有する副変換部３３０、Ｐ関数３２５、４種類のＳボックスからＣＡＭＥＬＬＩＡのアルゴリズムを実現するデータ変換装置を構築できることがわかる。
また、Ｐ関数３２５は、「１２８ビットブロック暗号Ｃａｍｅｌｌｉａアルゴリズム仕様書」に示される表現方法に従って、表現することにより小型化が可能である。
【０１１９】
具体的には、上記仕様書により、Ｐ関数は、以下のように表現できる。
ｚ１’＝ｚ１＋ｚ３＋ｚ４＋ｚ６＋ｚ７＋ｚ８
ｚ２’＝ｚ１＋ｚ２＋ｚ４＋ｚ５＋ｚ７＋ｚ８
ｚ３’＝ｚ１＋ｚ２＋ｚ３＋ｚ５＋ｚ６＋ｚ８
ｚ４’＝ｚ２＋ｚ３＋ｚ４＋ｚ５＋ｚ６＋ｚ７
ｚ５’＝ｚ１＋ｚ２      ＋ｚ６＋ｚ７＋ｚ８
ｚ６’＝ｚ２＋ｚ３      ＋ｚ５＋ｚ７＋ｚ８
ｚ７’＝ｚ３＋ｚ４      ＋ｚ５＋ｚ６＋ｚ８
ｚ８’＝ｚ１＋ｚ４      ＋ｚ５＋ｚ６＋ｚ７
上記のｚ１’〜ｚ８’を求める式の「＋」は、排他的論理和演算を示す。
ｚ１からｚ８は、各々ｍＳ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５（＝Ｓ２），Ｓ６（＝Ｓ３），Ｓ７（＝Ｓ４），Ｓ８（＝Ｓ１）からの出力である。ここで、ｚ５からｚ８をｚｚ２，ｚｚ３，ｚｚ４，ｚｚ１と記述変換すると、以下のようになる。
ｚ１’＝ｚ１＋ｚ３＋ｚ４＋ｚｚ１＋ｚｚ３＋ｚｚ４
ｚ２’＝ｚ１＋ｚ２＋ｚ４＋ｚｚ１＋ｚｚ２＋ｚｚ４
ｚ３’＝ｚ１＋ｚ２＋ｚ３＋ｚｚ１＋ｚｚ２＋ｚｚ３
ｚ４’＝ｚ２＋ｚ３＋ｚ４＋ｚｚ２＋ｚｚ３＋ｚｚ４
ｚ５’＝ｚ１＋ｚ２      ＋ｚｚ１＋ｚｚ３＋ｚｚ４
ｚ６’＝ｚ２＋ｚ３      ＋ｚｚ１＋ｚｚ２＋ｚｚ４
ｚ７’＝ｚ３＋ｚ４      ＋ｚｚ１＋ｚｚ２＋ｚｚ３
ｚ８’＝ｚ１＋ｚ４      ＋ｚｚ２＋ｚｚ３＋ｚｚ４
これにより、Ｓ１からＳ４をＺ１からＺ４を出力させる演算及びｚｚ１からｚｚ４を出力させる演算というように、２クロックかけて演算することで、Ｐ関数も約半分の回路で構成することが可能である。
【０１２０】
ＣＡＭＥＬＬＩＡによるデータ変換装置を図３７に基づいて説明する。
図３７に示すＣＡＭＥＬＬＩＡのデータ変換装置では、主変換部３２０と副変換部３３０が並列に配置されている。
副変換部３３０は、データ正変換部５０とデータ逆変換部７０とを有している。
主変換部３２０は、１／２のＦ関数から構成されるＦ関数部を有している。主変換部３２０がＦ関数未満のＦ関数、即ち、１／２x （ｘ≧１）Ｆ関数で構成され場合は、図６１の１／２Ｆ関数を例に挙げて説明したように、１段のＦ関数をＦ関数部１３２１ａによる処理とＦ関数部１３２１ｂによる処理の中間結果であるＥＸＯＲ回路１３２２ａの出力結果を保持しなくてはならない。
【０１２１】
一般的に、実装するＦ関数の個数を減らし、１段のＦ関数によるデータ変換処理を複数回のループアーキテクチャで実現する方法を採用していくと、Ｆ関数分の回路規模は減少していくが、ループを制御する制御回路や各Ｆ関数に鍵を入力させるためのセレクタ等の回路は増加する。このように、Ｆ関数分の回路規模とループを制御するための回路規模とは、トレードオフの関係にある。
従って、ＣＡＭＥＬＬＩＡのデータ変換装置の小型化を考えた場合、実装するＦ関数の個数及び繰り返しの回数を検討する必要がある。即ち、Ｆ関数を主変換部３２０に１つ実装したＣＡＭＥＬＬＩＡのデータ変換装置を実現するか、又は、Ｆ関数内のＳＢＯＸの実装する数を削減し、１段分のＦ関数によるデータ変換を数サイクルで演算させるのか等を充分に検討する必要がある。これは、１段未満のＦ関数からＦ関数部を構成することにより削減される回路規模とループを構成するためのセレクタ等の増加による回路規模増加とのトレードオフの検討を意味する。
また、ＣＡＭＥＬＬＩＡの場合、前述したとおり、出力鍵（鍵ＫＡ）を生成するために用いる関数は、データ攪拌部３０の主変換部３２０の一部を用いる。よって、この場合にも、データ攪拌部３０のＦ関数を利用するために追加されるセレクタ等の影響を充分に検討する必要がある。
図３６を用いて説明したように、ＣＡＭＥＬＬＩＡのＦ関数は、８ビット入出力を行う４種類（Ｓ１，Ｓ２，Ｓ３，Ｓ４）のＳボックスを２回ずつ使用している。ここでは、ＳＢＯＸを８個実装するか、又は、４つ実装して２回繰返すか等の検討が必要である。
２００１年暗号と情報セキュリティシンポジウム予稿集に記載された「１２８ｂｉｔブロック暗号のハードウェア実装について（ＩＩＩ）」より、Ｓボックス１つの回路規模は、約２００ゲートであり、Ｓボックスを８個から４個に４個削減すると、約８００ゲートの削減になる。
一方、これとトレードオフの関係にある繰り返しを行うための２−１セレクタが、少なくとも３２個（約ＮＡＮＤ回路１００ゲート）必要となる。
これにより、Ｓボックスを８個実装するより、４個実装して２回繰返すことにより回路が小さくなることが予想される。
従って、ＣＡＭＥＬＬＩＡのデータ変換装置のＦ関数部３２１は、Ｓボックスを８個実装して１回のデータ変換を行うことが可能であるが、Ｓボックスを４個実装して２回のデータ変換を繰り返すことにより、データ変換を行うことも可能であり、いずれを用いてもよい。ただし、回路規模を考慮すれば、２回のデータ変換を繰り返す方が好ましい。
【０１２２】
図３７に示すＣＡＭＥＬＬＩＡのアルゴリズムを用いた場合、このシーケンスにより、中間鍵生成部４０サイクルでデータの暗号化／復号を実現できる。
以下に、中間鍵生成部４０サイクルの処理過程を示す。
まず、ステップ１では、副変換部３３０を用いて、Ｗｈｉｔｅｎｉｎｇを演算する。
次に、ステップ２で、主変換部３２０を用いて、Ｆ関数の１／２の処理（１／２Ｆ関数）を演算する。
同様にステップ３で、主変換部３２０を用いて、残りのＦ関数の１／２の処理（１／２Ｆ関数）を演算する。
ステップ４〜ステップ１３では、ステップ２〜ステップ３を５回行う。
ステップ１４では、副変換部３３０のデータ正変換（ＦＬ）とデータ逆変換（ＦＬ−１）関数を演算することによりデータの変換を行う。
さらに、ステップ１５〜ステップ２７で、ステップ２〜ステップ１４を繰り返す。
さらに、ステップ２８〜ステップ３９で、ステップ２〜ステップ１３を繰り返す。
最後にステップ４０で、ステップＳ１と同様のＷｈｉｔｅｎｉｎｇを演算する。
ここで、ステップ１は、図４のＥＸＯＲ回路３１ａによる演算を示し、ステップ４０は図４のＥＸＯＲ回路３１ｂによる演算を示している。即ち、ＥＸＯＲ回路３１ａとＥＸＯＲ回路３１ｂとは、副変換部３３０に備えられたデータ正変換部５０とデータ逆変換部７０の有するＥＸＯＲを使用して演算を行う。
なお、鍵生成部２０の構成及び動作は、前述したと同様であるので説明を省略する。
【０１２３】
上述したステップ２及びステップ３では、主変換部３２０により２サイクルで１つのＦ関数によるデータ変換を行う。このデータ処理について、図３７と図６４とを用いて、具体的な動作を説明する。
図６４は、図６１と比較すると、入力鍵として下位の鍵が最初に入力され、上位の鍵が次に入力されて処理が実現される点で異なる。
まず、ステップ１の具体的動作について説明する。入力データであるＰ（平文又は復号文）は、２−１セレクタ３１１により選択され、上位データと下位データとに分割されて、上位データは、副変換部３３０のデータ正変換部５０によってＷｈｉｔｅｎｉｎｇされ、下位データは、副変換部３３０のデータ逆変換部７０に入力されて、同様に、Ｗｈｉｔｅｎｉｎｇされる。Ｗｈｉｔｅｎｉｎｇされた上位データと下位データとは、２−１セレクタ３４０の２−１セレクタＨ３４１と３−１セレクタＬ３４２に入力される。各々入力されたデータは、２−１セレクタＨ３４１と３−１セレクタＬ３４２により選択され、演算レジスタＨ３５１と演算レジスタＬ３５２に保持される。
【０１２４】
次に、ステップ２の動作について説明する。
演算レジスタＨ３５１に保持された上位データの上位ビットが、２−１セレクタ３１２に入力されるとともに、上位データの下位ビットが１バイトローテートシフトされて、２−１セレクタ３１２に入力される。２−１セレクタ３１２は、２つの入力データからローテートシフトされている下位ビットを選択し、主変換部３２０へ出力する。選択された下位ビットを１バイトローテートシフトすることによって、図３６に示すように、各入力データ（５）から（８）を各Ｓボックスに適用させて入力させることができる。主変換部３２０では、１／２Ｆ関数を持つＦ関数部３２１により、図６４に示す１段目の上半分のデータ変換が行われる。ここで、図３７のＦ関数部３２１と図６４の１／２Ｆ関数からなるＦ関数部１３２１ａ〜Ｆ関数部１３２１ｌは、同一構成をとる。図６４に示すＦ関数部１３２１ａによるデータ変換は、鍵１Ｌを用いて、入力された上位データのうち、下位半数ビットをデータ変換し、変換後のデータをＥＸＯＲ回路１３２２ａに出力する。ＥＸＯＲ回路１３２２ａは、Ｆ関数部１３２１ａによって出力された変換後のデータを入力するとともに、入力された下位データとの排他的論理和をとられる。即ち、出力されたデータ（中間データ）は、主変換部３２０から３−１セレクタＬ３４２に入力され、演算レジスタＬ３５２に保持される。これと同時に、演算レジスタＨ３５１に保持されていたＰの上位データが２−１セレクタ３１１を通り、副変換部３３０の、例えば、データ正変換部５０のデータ転送を利用してデータ転送を行い、２−１セレクタＨ３４１を経由して、演算レジスタＨ３５１から、再び演算レジスタＨ３５１に保持される。
【０１２５】
次に、ステップ３の動作について説明する。
図６４のＦ関数部１３２１ｂによるデータ処理は、図３７の主変換部３２０による２サイクル目の処理で実現される。即ち、１バイトローテートシフトさせずに、２−１セレクタ３１２に入力した上位データの上位ビットを２−１セレクタ３１２が選択し、主変換部３２０に出力する。このような適用により、上位データの上位半数ビットのデータがＦ関数部１３２１ｂにより非線形変換されてＥＸＯＲ回路１３２２ｂへ出力される。ＥＸＯＲ回路１３２２ｂでは、もう一方の入力信号として、１サイクル目で主変換部３２０が出力し、演算レジスタＬ３５２に保持された中間データを主変換部３２０に入力することにより、ＥＸＯＲ回路１３２２ｂへ入力する。ＥＸＯＲ回路１３２２ｂで排他的論理和がとられた後の出力データは、２−１セレクタＨ３４１に選択されて演算レジスタＨ３５１に保持される。この時点で、Ｐの上位データは、３−１セレクタＬ３４２を経由して演算レジスタＬ３５２に保持されている。従って、図６４の主変換部３２０で行われる２段目のデータ変換処理に用いられる上位データと下位データとが演算レジスタＨ３５１と演算レジスタＬ３５２に保持されていることとなる。
【０１２６】
ステップ４〜ステップ１３では、ステップ２〜ステップ３を５回行う。
即ち、２段目のデータ変換をＦ関数部１３２１ｃとＥＸＯＲ回路１３２２ｃとで１サイクル、Ｆ関数部１３２１ｄとＥＸＯＲ回路１３２２ｄとで１サイクル、合わせて２サイクルで行う処理がステップ４、ステップ５の処理に相当する。３段目から６段目の処理も、同様に行うが、これが、ステップ６〜ステップ１３の処理に相当する。
なお、前述したように、図６４のＦ関数部１３２１ａからＦ関数部１３２１ｌの関数は、図３７のＦ関数部３２１の関数と同一の関数である。
【０１２７】
次に、ステップ１４の処理について説明する。
これは、図３７の副変換部３３０による処理を示すものである。
まず、演算レジスタＨ３５１と演算レジスタＬ３５２に保持されたステップ１３の処理後の上位データと下位データとは、２−１セレクタ３１１に入力され、選択されて、上位データをデータ正変換部５０へ下位データをデータ逆変換部７０へ入力する。
データ正変換部５０とデータ逆変換部７０とでは、入力された各々のデータを線形変換し、データ正変換部５０による変換データは２−１セレクタＨ３４１へ、データ逆変換部７０による変換データは３−１セレクタＬ３４２へ入力され、各々選択されて、各々演算レジスタＨ３５１、演算レジスタＬ３５２に保持される。
【０１２８】
ステップ１５からステップ２７の処理は、図３７の主変換部３２０の処理と副変換部３３０の処理に該当する。
ステップ２８からステップ３９の処理は、図３７の主変換部３２０の処理に該当する。
ステップ４０では、ステップ１と同様に、副変換部３３０のＥＸＯＲを用いてＷｈｉｔｅｎｉｎｇを行う。
これらの中間鍵生成部４０ステップを経て、入力データＰが平文の場合には、暗号化処理により暗号文Ｃが出力され、入力データＰが暗号文の場合には、暗号化処理と同一回路によって復号処理が行われ、復号文Ｃを出力することが可能となる。
【０１２９】
このように、図３７に示すＣＡＭＥＬＬＩＡを用いたデータ変換装置では、主変換部３２０と副変換部３３０とを並列して配置したことにより、直列に配置した場合に比べて、１サイクルのサイクル時間を短縮でき、動作周波数の向上を図ることができる。
【０１３０】
また、主変換部３２０と副変換部３３０とを並列して配置したことにより、主変換部３２０を通過しないで副変換部３３０に信号を入力できるパスと、副変換部３３０を通過しないで主変換部３２０に信号を入力できるパスが存在することとなったため、将来的に行われる他の構成や他の動作の付加、削除等の変更に対し、柔軟に対応できる。
【０１３１】
また、主変換部３２０と副変換部３３０とを直列に配置したＣＡＭＥＬＬＩＡを使用したデータ変換装置では、上述したように複数サイクルでＦ関数による１回のデータ変換を行う場合には、１サイクルで変換対象となるデータは、入力データの一部であるため、入力データの一部の変換データを演算レジスタ３５０に保持し、一定期間後に副変換部３３０に送るためのパスをデータ攪拌部３０中に設けるか、または、一定期間後に主変換部３２０を転送して副変換部３３０に送るための転送パスを主変換部３２０中に設ける必要があった。
しかし、本実施の形態では、主変換部３２０と副変換部３３０とを並列に配置したため、上記パスの付加や主変換部３２０の転送パス機能の追加を不要とし、装置の回路規模の増加を抑止することが可能となる。
【０１３２】
さらに、図５９に示すデータ正変換部５０とデータ逆変換部７０との共用回路を用いた場合には、Ａ→Ｂ→Ｃ→Ｄ→Ｅ→Ｂ→Ｃ・・・のパスがループ回路となる。このため、実際のＬＳＩにするときに、切換信号の伝搬遅延の差による信号のレーシング、ノイズなどの影響により、発信回路にならないような工夫が必要となる。また、このような上記ループ回路（ＦＥＥＤＢＡＣＫ−ＬＯＯＰ回路）を持った回路には、論理合成ツールが対応できず、効率よく論理合成が行われない、という問題が生じていた。
そこで、図３７では、副変換部３３０のデータ正変換部５０とデータ逆変換部７０とを別々に設ける構成とした。このため、上記レーシングなどの問題を生じないデータ変換装置の構築が可能となった。
【０１３３】
さらに、前述したように、図３７では、副変換部３３０の鍵及びデータの転送機能を用いることで、鍵ＫＬレジスタ２４０からの鍵のパスと主変換部３２０からのデータパスを不要とすることができる。このため、ＣＡＭＥＬＬＩＡのブロック処理を行うデータ変換装置の更なる小型化と低消費電力化を図ることができる。
【０１３４】
実施の形態６．
次に、実施の形態６について説明する。
図３８は、実施の形態６のＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図３７比べ、副変換部３３０が、データ正変換部５０とデータ逆変換部７０とを共用回路とする１／２副変換部９０により構成されている点が異なる。このため、図３７の２−１セレクタ２１５、４−１セレクタ２１７が不要となる。
このように、本実施の形態のデータ変換装置では、２−１セレクタ２１５、４−１セレクタ２１７に必要な４つのセレクタと２−１セレクタ２１５によって出力された鍵を副変換部３３０へ入力するパスが不要となる。このため、鍵スケジュール部２１０の構成が簡略化でき、データ変換装置の更なる小型化を図ることができる。
【０１３５】
実施の形態７．
図４７は、実施の形態７を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態は、図３７の構成図と比較し、主変換部３２０のＦ関数部３２１が１／８のＦ関数から構成される部分が異なる。即ち、本実施の形態では、主変換部３２０は、８サイクルでＦ関数１つのデータ変換を行うこととなる。従って、図３７と比べ、図３７の２−１セレクタ３１２が８−１セレクタ３１５に変更されている。他の構成は、図３７と同様である。
【０１３６】
実施の形態８．
図４８は、実施の形態８を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態では、図４７で示す実施の形態と比べ、３３０は１／２副変換部９０を備える点で異なる。従って、図４７に示す２−１セレクタ２１５と４−１セレクタ２１７が不要となる。
【０１３７】
実施の形態９．
本実施の形態を、図４９に示す。
図４９は、実施の形態９を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態では、図３７と比べ、主変換部３２０のＦ関数部３２１が１／４のＦ関数から構成される点で異なる。従って、図３７の２−１セレクタ３１２が図４９では、４−１セレクタ３１６になっている。４−１セレクタ３１６により選択された１６ビットの入力データを使用して、Ｆ関数部３２１により主変換部３２０は４サイクルのデータ変換を行うことで１つのＦ関数に対するデータ変換を行う。他の構成は、図３７と同様である。
【０１３８】
実施の形態１０．
図５０は、実施の形態１０を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図４９に示す実施の形態と比べ、副変換部３３０が１／２副変換部９０を備える点で異なる。従って、図４９と比較して、２−１セレクタ２１５と４−１セレクタ２１７が不要となる。他の構成は、図４９と同様である。
【０１３９】
実施の形態１１．
次に、実施の形態１１について説明する。
図３９は、実施の形態１１を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図３７との違いは、主変換部３２０がＦ関数を一つ持つＦ関数部３２１により構成されている点である。従って、主変換部３２０は、Ｆ関数１段の処理を１サイクルで行うことができるため、図３７に存在していた２−１セレクタ３１２は不要となる。また、図３７の２−１セレクタ２１２が不要となり、８−１セレクタ２１３が４つの定数から一つの定数を選択する４−１セレクタ２１８に変わっている。
【０１４０】
実施の形態１２．
次に、実施の形態１２について説明する。
図４０は、実施の形態１２を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図４０では、２−１セレクタ３１３が付加されている。これは、副変換部３３０が１／２副変換部９０によって構成されるために、２−１セレクタ３１１によって選択されたデータから、その上位データか下位データのいずれかを選択するためである。本実施の形態では、主変換部３２０による処理を１サイクルで行うため、図３９と同様に２−１セレクタ３１２は不要となる。また、図３９の２−１セレクタ２１５と４−１セレクタ２１７とが不要となる。
【０１４１】
実施の形態１３．
次に、実施の形態１３について説明する。
図４１は、実施の形態１３を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図３９と比較すると、主変換部３２０がＦ関数部３２１を６回繰り返すのではなく、主変換部３２０がＦ関数部３２１を６段直列して持ち、データの変換を行う点で異なる。従って、本実施の形態では、主変換部３２０の出力信号が１つ増えている。これは、主変換部３２０の２段目のＦ関数の出力データを３−１セレクタＨ３４３と４−１セレクタＬ３４４とに入力し、演算レジスタＨ３５１と演算レジスタＬ３５２とにより保持させるためである。このため、３−１セレクタＨ３４３は入力信号が３つとなり、４−１セレクタＬ３４４は入力信号が４つとなっている。
また、４−１セレクタ５００と４−１セレクタ５０１を４組備え、それらから選択された４つの鍵を主変換部３２０に入力するセレクタが増えている。また、鍵スケジュール部２１０の他のセレクタである４−１セレクタ５０２と４−１セレクタ５０３からも副変換部３３０と主変換部３２０に鍵が供給される構成となっている。
【０１４２】
実施の形態１４．
次に、実施の形態１４について説明する。
図４２は、実施の形態１４を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図４２は、図４１と同様に、６段のＦ関数を直列に備えたＦ関数部を主変換部３２０が備える点で、図４０と異なる。このため、図４１の場合と同様に、図４０と比べ、３−１セレクタＨ３４３と４−１セレクタＬ３４４の入力信号が１つずつ増え、また、４−１セレクタ５００と４−１セレクタ５０１を４組備えることが必要となる。また、鍵スケジュール部２１０の他のセレクタである４−１セレクタ５０２と３−１セレクタ５０４からも副変換部３３０と主変換部３２０に鍵が供給される構成となっている。なお、３−１セレクタ５０４には、３つの入力信号が入力される。
【０１４３】
実施の形態１５．
本実施の形態を、図４３に示す。
図４３は、実施の形態１５を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態では、図４１と比べ、主変換部３２０がＦ関数を２段備えたＦ関数部３２１を有する点で異なる。よって、図４１と比べ、３−１セレクタＨ３４３と４−１セレクタＬ３４４が２−１セレクタＨ３４１と３−１セレクタＬ３４２に置き換わり、かつ、４−１セレクタ５００と４−１セレクタ５０１を備えた４組のセレクタが不要となっている。
【０１４４】
実施の形態１６．
本実施の形態を、図４４に示す。
図４４は、実施の形態１６を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態では、図４２の実施の形態と比べ、主変換部３２０が備えるＦ関数部３２１が２段のＦ関数からなっている点で異なる。従って、図４２の３−１セレクタＨ３４３と４−１セレクタＬ３４４が２−１セレクタＨ３４１と３−１セレクタＬ３４２に置き換わり、また、４−１セレクタ５００と４−１セレクタ５０１とからなる４組のセレクタが不要となる。
【０１４５】
実施の形態１７．
図４５は、実施の形態１７を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態では、主変換部３２０のＦ関数部３２１が３段のＦ関数を有している。従って、図４１と比較すると、４−１セレクタ５００と４−１セレクタ５０１とからなる４組のセレクタが不要となり、その代わりに、４−１セレクタ５０５が付加されている。４−１セレクタ５０５によって選択された信号が主変換部３２０に入力される。
【０１４６】
実施の形態１８．
図４６は、実施の形態１８を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図４５で示す実施の形態と同様に、主変換部３２０のＦ関数部３２１は３段のＦ関数を有している。図４５と比較して異なる部分は、副変換部３３０が本実施の形態では、１／２副変換部９０を備えていることである。他の構成は同様である。
【０１４７】
実施の形態１９．
図５１は、実施の形態１９を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
本実施の形態では、まず、中間鍵生成部４０の構成が図３７等と比べて異なっている。本実施の形態で示す中間鍵生成部４０の構成と図３７等で示す中間鍵生成部４０の構成は等価であるため、図３７等の中間鍵生成部４０は、図５１で示す中間鍵生成部４０に置き換えることが可能である。
図５１の中間鍵生成部４０の構成について、説明する。
まず、２−１ＫＬセレクタ２９１は、入力された秘密鍵と鍵ＫＬレジスタ２４０保持された中間鍵（鍵ＫＬ）とを入力し、この２つの入力信号から１つの信号を選択し、鍵ＫＬレジスタ２４０に保持する。また、２−１ＫＡセレクタ２９２は、中間鍵生成部４０が生成する出力鍵と鍵ＫＡレジスタ２５０に保持された出力鍵（鍵ＫＡ）を入力する。入力された２つの入力信号から２−１ＫＡセレクタ２９２は、１つの信号を選択し、選択された信号を鍵ＫＡレジスタ２５０が保持する。
２−１セレクタ２２７は、鍵ＫＬレジスタ２４０と鍵ＫＡレジスタ２５０に保持された中間鍵（鍵ＫＬ）と出力鍵（鍵ＫＡ）から１つの鍵を選択し、８−１セレクタ２２８に出力する。８−１セレクタ２２８は、２−１セレクタ２２７によって選択された鍵を、図５１に示すように、０，１５，３０，４５，６０，７７，９４，１１１の８つのビット数で右または左に巡回シフトさせる。即ち、巡回シフトビット数が０の場合には、データをシフトしない。巡回シフトビット数が１５の場合には、右又は左へ１５ビットデータを巡回シフトさせる。他も同様である。このように、データを巡回シフトさせることにより８つの信号を生成し、８つの信号から８−１セレクタ２２８は１つの信号を選択し、出力する。
このような動作により、図３７の中間鍵生成部４０の機能と同様の機能を本実施の形態の構成を持つ中間鍵生成部４０が果たすことが可能となる。このようにして、中間鍵生成部４０から出力されたデータのうち、上位半数ビットをＫＬＨ、下位半数ビットをＫＬＬとして、鍵スケジュール部２１０の２−１セレクタ５１０と２−１セレクタ５１１に入力する。このように、図３７の４−１セレクタ２１６と４−１セレクタ２１７は、本実施の形態では、２−１セレクタ５１０と２−１セレクタ５１１に置き換えることができる。
従って、図５２に示す中間鍵生成部４０では、２−１セレクタが図３７で示す中間鍵生成部４０と同様に１０個必要であるが、２−１セレクタ５１０と２−１セレクタ５１１とに必要な２−１セレクタは２つのみ必要であるため、中間鍵生成部４０と２−１セレクタ５１０と２−１セレクタ５１１とで必要な２−１セレクタは、全体で１２個となる。
図３７に示す中間鍵生成部４０では、１０個の２−１セレクタが必要であり、かつ、４−１セレクタ２１６と４−１セレクタ２１７に６個の２−１セレクタが必要であるため、中間鍵生成部４０と４−１セレクタ２１６と４−１セレクタ２１７とが備える必要のある２−１セレクタは、合計で１６個となる。
従って、図３７に示すデータ変換装置と比較して、本実施の形態のデータ変換装置は、全体として４つの２−１セレクタを削減することができる。
よって、本実施の形態では、セレクタの削減による小型化とセレクタの削減によるゲート数の減少に伴う低消費電力化を図ることができる。
なお、本実施の形態で示した中間鍵生成部４０の構成は、他の全ての実施の形態における中間鍵生成部４０の構成として用いることが可能である。
【０１４８】
実施の形態２０．
図５２は、実施の形態２０を示すＣＡＭＥＬＬＩＡのデータ変換装置の構成図である。
図５１と比較し、本実施の形態では、副変換部３３０が１／２副変換部９０を備える点で異なる。よって、図５１に示す２−１セレクタ２１５と２−１セレクタ５１１が、本実施の形態では不要となる。他の構成は、図５１と同様である。
なお、図５１と図５２で示されるローテートシフトビット数は、巡回シフトビット数と同義である。
【０１４９】
実施の形態２１．
実施の形態４の説明の中で示した図３４と図３５とは、１２８ビット長の鍵を用いたＣＡＭＥＬＬＩＡによる暗号化処理及び復号処理を行う処理を示していた。
しかし、全ての実施の形態についてのデータ変換装置の構成図は、１２８ビット長の鍵だけでなく、１９２ビット長の鍵及び２５６ビット鍵の全てに基づいた暗号化／復号処理を行うＣＡＭＥＬＬＩＡのデータ変換装置にも適用することができる。
【０１５０】
図５３は、１９２ビット鍵の生成過程を示した図である。
前述した１２８ビット鍵の場合には、拡大鍵として２５６ビット長の鍵を生成したが、入力する秘密鍵が１９２ビットの場合及び２５６ビットの場合には、拡大鍵は５１２ビット長となる。
図５３では、鍵ＫＬと鍵ＫＲが中間鍵であり、鍵ＫＡと鍵ＫＢとが出力鍵である。更に、鍵ＫＬ、鍵ＫＲ、鍵ＫＡ、鍵ＫＢは、全て１２８ビットであるので、これらを合計して拡大鍵５１２ビットが生成されることとなる。
入力される秘密鍵が２５６ビットの場合には、鍵ＫＬは、入力された秘密鍵の上位半分ビットの１２８ビットとなり、鍵ＫＲは、下位１２８ビットとなる。
鍵ＫＬと鍵ＫＲとは、排他的論理和をとられ、図５３に示すように、主変換部３２０の一部に入力される。
【０１５１】
図５３は、秘密鍵が１２８ビット長の場合の拡大鍵の生成方法を示した図２の右側の部分に対応している。
図５３の左側の入力鍵から出力鍵ＫＡを生成する方法は、鍵ＫＬと鍵ＫＲとの排他的論理和が入力鍵となる点を除き、図２に示す出力鍵ＫＡの生成方法と同様である。図５３の右側の鍵ＫＲから出力鍵ＫＢを生成する過程は、図２に存在しない。従って、出力鍵（鍵ＫＢ）の生成方法について説明する。
入力された鍵が２５６ビットの場合には、下位１２８ビットを入力鍵（鍵ＫＲ）とし、主変換部３２０に入力する。下位１２８ビット中の上位ビットが主変換部３２０の１段目に位置するＦ関数部３２１ａを用いて定数Σ５により非線形変換され、出力される。出力されたデータは、入力鍵（鍵ＫＲ）の下位ビットとの間でＥＸＯＲ回路３２２ａにより排他的論理和がとられ、Ｆ関数部３２１ｂに入力される。Ｆ関数部３２１ｂでは、定数Σ６によって再びデータが非線形変換され、変換後のデータと入力鍵（鍵ＫＲ）の上位ビットとの間でＥＸＯＲ回路３２２ｂにより排他的論理和がとられる。ＥＸＯＲ回路３２２ｂによる演算後の変換データが出力鍵（鍵ＫＢ）の上位６４ビットデータとしてとして出力され、ＥＸＯＲ回路３２２ａによる演算結果のデータが出力鍵（鍵ＫＢ）の下位６４ビットデータとして出力される。
このようにして、生成された出力鍵（鍵ＫＡ及び鍵ＫＢ）と入力鍵（鍵ＫＬ及び鍵ＫＲ）とは、５１２ビットの拡大鍵として中間鍵生成部４０から鍵スケジュール部２１０へ送られ、鍵スケジュール部２１０によって鍵のスケジュールが行われ、データの暗号化／復号に用いられる。
【０１５２】
秘密鍵が１９２ビットである場合には、入力された秘密鍵の上位１２８ビットが鍵ＫＬとなる。また、入力された秘密鍵の下位６４ビットが鍵ＫＲの上位６４ビットとなる。鍵ＫＲの下位６４ビットは、鍵ＫＲの上位６４ビット、即ち、入力された秘密鍵の下位６４ビットを反転させたものである。その他の鍵生成方法については、秘密鍵が２５６ビットの場合と同様であるので説明を省略する。
【０１５３】
図５４は、１９２ビット鍵及び２５６ビット鍵ＣＡＭＥＬＬＩＡの暗号処理を示す図である。
１２８ビット鍵ＣＡＭＥＬＬＩＡの暗号化処理を示す図３４と比較した場合、主変換部３２０が３つから４つに増加し、副変換部３３０が２つから３つに増加している。従って、１９２ビット鍵及び２５６ビット鍵の暗号化処理では、全体で２４段のＦ関数による暗号処理が行われる。他の構成は、図３４に示す１２８ビット鍵の場合と同様であるので説明を省略する。
【０１５４】
図５５は、１９２ビット鍵及び２５６ビット鍵のＣＡＭＥＬＬＩＡの復号処理を示す図である。
１２８ビット鍵のＣＡＭＥＬＬＩＡの復号処理については図３５に示したが、図３５と比較すると、主変換部３２０が４つ、副変換部３３０が３つと増加しており、暗号化処理の場合と同様にＦ関数が２４段となっている。その他の構成は、１２８ビット鍵のＣＡＭＥＬＬＩＡの復号処理と同様であるので説明を省略する。
なお、１２８ビット鍵及び１９２ビット鍵及び１５６ビット鍵のブロック暗号ＣＡＭＥＬＬＩＡルゴリズムの詳細は、「１２８ビットブロック暗号ＣＡＭＥＬＬＩＡアルゴリズム仕様書」に記載する。
【０１５５】
以上に記載したすべての実施の形態は、１２８ビット鍵のデータ変換装置、１９２ビット鍵のデータ変換装置、２５６ビット鍵のデータ変換装置に、採用することができる。
【０１５６】
また、全ての実施の形態で、副変換部３３０が備える鍵転送及びデータ転送機能を用いることが可能である。
【０１５７】
すべての実施の形態では、各構成要素の各動作はお互いに関連しており、各構成要素の動作は、上記に示された動作の関連を考慮しながら、一連の動作として置き換えることができる。そして、このように置き換えることにより、方法の発明の実施形態とすることができる。
また、上記各構成要素の動作を、各構成要素の処理と置き換えることにより、プログラムの実施の形態とすることができる。
また、プログラムを、プログラムを記録したコンピュータ読み取り可能な記録媒体に記憶させることで、プログラムに記録したコンピュータ読取り可能な記録媒体の実施の形態とすることができる。
【０１５８】
プログラムの実施の形態及びプログラムに記録したコンピュータ読取り可能な記録媒体の実施の形態は、すべてコンピュータで動作可能なプログラムにより構成することができる。
プログラムの実施の形態およびプログラムを記録したコンピュータ読取り可能な記録媒体の実施の形態における各処理はプログラムで実行されるが、このプログラムは、記録装置に記録されていて、記録装置から中央処理装置（ＣＰＵ）に読み込まれ、中央処理装置によって、各フローチャートが実行されることになる。なお、記録装置、中央処理装置は図示していない。
また、各実施の形態のソフトウエアやプログラムは、ＲＯＭ（ＲＥＡＤ  ＯＮＬＹ  ＭＥＭＯＲＹ）に記憶されたファームウエアで実現されていても構わない。あるいは、ソフトウエアとファームウエアとハードウエアとの組み合わせで前述したプログラムの各機能を実現しても構わない。
【０１５９】
【発明の効果】
セレクタの増加を抑止し、削減することにより、装置の小型化を図ることができる。
【０１６０】
また、回路全体のゲート数を減少させることにより、低消費電力化を図ることができる。
【０１６１】
また、動作周波数を向上させることができる。
【０１６２】
副変換部は、入力データまたは入力鍵を転送できる。
【０１６３】
装置の構成変更に柔軟に対応できる。
【０１６４】
データ正変換部５０かデータ逆変換部７０の一方でデータのデータ変換をし、データ正変換部５０かデータ逆変換部７０の他方で入力されたデータまたは鍵を転送することが出来る。
【０１６５】
主変換部からセレクタへのパスが不要となり、装置の小型化が図れ、また、セレクタ数の減少による低消費電力化を図ることが可能となる。
【図面の簡単な説明】
【図１】  実施の形態１のデータ変換装置の構成図である。
【図２】  １２８ビット鍵の場合、中間鍵生成部４０が中間鍵から出力鍵を生成する動作を示す図である。
【図３】  鍵スケジュール部２１０の内部構成とその動作を示す図である。
【図４】  データ攪拌部３０のデータ暗号化／復号処理の動作を示す図である。
【図５】  Ｆ関数部３２１の内部構成及び動作を示す図である。
【図６】  図１の主変換部３２０と副変換部３３０を逆に配置したデータ変換装置の構成図である。
【図７】  主変換部３２０と副変換部３３０が並列に配置されたデータ変換装置の構成図である。
【図８】  中間鍵生成部４０の６−１ＫＬセレクタ２２０及び６−１ＫＡセレクタ２３０の内部構成を示す図である。
【図９】  中間鍵生成部４０の他の構成例を示す図である。
【図１０】  データ正変換部５０が鍵転送機能を有する場合の副変換部３３０の内部構成図である。
【図１１】  データ逆変換部７０が鍵転送機能を有する場合の副変換部３３０の内部構成図である。
【図１２】  データ正変換部５０とデータ逆変換部７０とが鍵転送機能を有する場合の副変換部３３０の内部構成図である。
【図１３】  実施の形態２におけるデータ正変換部５０がデータ転送機能を有する場合の副変換部３３０の内部構成図である。
【図１４】  データ逆変換部７０がデータ転送機能を有する場合の副変換部３３０の内部構成図である。
【図１５】  データ正変換部５０とデータ逆変換部７０がデータ転送機能を有する場合の副変換部３３０の内部構成図である。
【図１６】  実施の形態３におけるデータ正変換部５０が鍵転送機能とデータ転送機能、データ逆変換部７０が鍵転送機能を有する場合の副変換部３３０の内部構成図である。
【図１７】  データ逆変換部７０が鍵転送機能とデータ転送機能、データ正変換部５０が鍵転送機能を有する場合の副変換部３３０の内部構成図である。
【図１８】  データ正変換部５０とデータ逆変換部７０が鍵転送機能とデータ転送機能を有する場合の副変換部３３０の内部構成図である。
【図１９】  データ正変換部５０が鍵転送機能とデータ転送機能を有する場合の副変換部３３０の内部構成図である。
【図２０】  データ逆変換部７０が鍵転送機能とデータ転送機能を有する場合の副変換部３３０の内部構成図である。
【図２１】  データ正変換部５０が鍵転送機能とデータ転送機能、データ逆変換部７０がデータ転送機能を有する場合の副変換部３３０の構成図である。
【図２２】  データ逆変換部７０が鍵転送機能とデータ転送機能、データ正変換部５０がデータ転送機能を有する場合の副変換部３３０の構成図である。
【図２３】  データ正変換部５０がデータ転送機能、データ逆変換部７０が鍵転送機能を有する場合の副変換部３３０の構成図である。
【図２４】  データ正変換部５０が鍵転送機能、データ逆変換部７０がデータ転送機能を有する場合の副変換部３３０の構成図である。
【図２５】  データ逆変換部７０とデータ正変換部５０とをシリアルに接続し、データ正変換部５０とデータ逆変換部７０とが各々データ転送機能を有する場合の副変換部３３０の構成図である。
【図２６】  図２５のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成図である。
【図２７】  データ正変換部５０とデータ逆変換部７０とをシリアルに接続し、データ正変換部５０が鍵転送機能及びデータ転送機能を有し、データ逆変換部７０がデータ転送機能を有する場合の副変換部３３０の構成図である。
【図２８】  図２７のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成図である。
【図２９】  データ正変換部５０とデータ逆変換部７０とをシリアルに接続し、データ正変換部５０がデータ転送機能を有し、データ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合の副変換部３３０の構成図である。
【図３０】  図２９のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成図である。
【図３１】  実施の形態４における１／２副変換部９０に鍵転送機能及びデータ転送機能を付加した場合の副変換部３３０の構成図である。
【図３２】  １／２副変換部９０にデータ転送機能を付加した場合の副変換部３３０の構成図である。
【図３３】  １／２副変換部９０に鍵転送機能を付加した場合の副変換部３３０の構成図である。
【図３４】  １２８ビット鍵を用いたＣＡＭＥＬＬＩＡのデータ変換装置におけるデータ暗号化処理を示す図である。
【図３５】  １２８ビット鍵を用いたＣＡＭＥＬＬＩＡのデータ変換装置におけるデータ復号処理を示す図である。
【図３６】  ＣＡＭＥＬＬＩＡのデータ変換装置におけるＦ関数の内部構成図である。
【図３７】  実施の形態５の全体構成及び動作を示した図である。
【図３８】  実施の形態６の全体構成及び動作を示した図である。
【図３９】  実施の形態１１の全体構成及び動作を示した図である。
【図４０】  実施の形態１２の全体構成及び動作を示した図である。
【図４１】  実施の形態１３の全体構成及び動作を示した図である。
【図４２】  実施の形態１４の全体構成及び動作を示した図である。
【図４３】  実施の形態１５の全体構成及び動作を示した図である。
【図４４】  実施の形態１６の全体構成及び動作を示した図である。
【図４５】  実施の形態１７の全体構成及び動作を示した図である。
【図４６】  実施の形態１８の全体構成及び動作を示した図である。
【図４７】  実施の形態７の全体構成及び動作を示した図である。
【図４８】  実施の形態８の全体構成及び動作を示した図である。
【図４９】  実施の形態９の全体構成及び動作を示した図である。
【図５０】  実施の形態１０の全体構成及び動作を示した図である。
【図５１】  実施の形態１９の全体構成及び動作を示した図である。
【図５２】  実施の形態２０の全体構成及び動作を示した図である。
【図５３】  １９２、２５６ビット鍵の場合、中間鍵生成部４０が中間鍵から出力鍵を生成する動作を示す図である。
【図５４】  １９２、２５６ビット鍵を用いたＣＡＭＥＬＬＩＡのデータ変換装置におけるデータ暗号化処理を示す図である。
【図５５】  １９２、２５６ビット鍵を用いたＣＡＭＥＬＬＩＡのデータ変換装置におけるデータ復号処理を示す図である。
【図５６】  関連するデータ変換装置の構成及び動作図の一例である。
【図５７】  主変換部３２０の内部構成の一例である。
【図５８】  副変換部３３０を構成する回路を示す図である。
【図５９】  副変換部３３０を構成するデータ正変換部５０とデータ逆変換部７０とを共用した回路を示す図である。
【図６０】  関連するデータ変換装置の構成及び動作図の他の一例である。
【図６１】  主変換部３２０の内部構成の他の一例である。
【図６２】  データ正変換部５０とデータ逆変換部７０とをシリアルに接続し、データ正変換部５０とデータ逆変換部７０が鍵転送機能及びデータ転送機能を有する場合の副変換部３３０の構成図である。
【図６３】  図６２のデータ正変換部５０とデータ逆変換部７０とが上下入れ替わっている場合の副変換部３３０の構成図である。
【図６４】  ＣＡＭＥＬＬＩＡの主変換部３２０の内部構成の一例である。
【符号の説明】
５  制御部、２０  鍵生成部、３０  データ攪拌部、４０  中間鍵生成部、５０  データ正変換部、５１，５４，５８，５９，６０，７１，７３，７７，７９，８０，９５，９６，９７，９８，１０１  ＡＮＤ回路、５２，７２，１００  ＮＯＴ回路、５３，５７，７４，７８，９２，９４  ＯＲ回路、３１ａ，３１ｂ，５５，５６，７５，７６，９１，９３，３２２ａ，３２２ｂ，３２２ｃ，３２２ｄ，３２２ｅ，３２２ｆ，３２３，６００，６０１，１３２２ａ，１３２２ｂ，１３２２ｃ，１３２２ｄ，１３２２ｅ，１３２２ｆ，１３２２ｇ，１３２２ｈ，１３２２ｉ，１３２２ｊ，１３２２ｋ，１３２２ｌ  ＥＸＯＲ回路、７０  データ逆変換部、９０  １／２副変換部、２１０  鍵スケジュール部、９９ａ，９９ｂ，２１１，２１２，２１４，２１５，２２４，２２７，３１１，３１２，３１３，５１０，５１１  ２−１セレクタ、２１３，２２８，３１５  ８−１セレクタ、２１６，２１７，２１８，２１９，２２３，３１６，５００，５０１，５０２，５０３，５０５  ４−１セレクタ、２２０  ６−１ＫＬセレクタ、２２１，２３１  ６−１セレクタ、２２２  ３−１ＫＬセレクタ、２３０  ６−１ＫＡセレクタ、２３２  ３−１ＫＡセレクタ、２４０  鍵ＫＬレジスタ、２５０  鍵ＫＡレジスタ、２９１  ２−１ＫＬセレクタ、２９２  ２−１ＫＡセレクタ、３１０，３４０  セレクタ、３２０，３２０ａ，３２０ｂ，３２０ｃ  主変換部、３２１，３２１ａ，３２１ｂ，３２１ｃ，３２１ｄ，３２１ｅ，３２１ｆ，１３２１ａ，１３２１ｂ，１３２１ｃ，１３２１ｄ，１３２１ｅ，１３２１ｆ，１３２１ｇ，１３２１ｈ，１３２１ｉ，１３２１ｊ，１３２１ｋ，１３２１ｌ  Ｆ関数部、３２４  Ｓ関数、３２４ａ，３２４ｈ  Ｓ1 、３２４ｂ，３２４ｅ  Ｓ4 、３２４ｃ，３２４ｆ  Ｓ3 、３２４ｄ，３２４ｇ  Ｓ2 、３２５  Ｐ関数、３３０，３３０ａ，３３０ｂ  副変換部、３４１  ２−１セレクタＨ、３４２  ３−１セレクタＬ、３４３  ３−１セレクタＨ、３４４  ４−１セレクタＬ、３５０  演算レジスタ、３５１  演算レジスタＨ、３５２  演算レジスタＬ、５０４３−１セレクタ。
【図１】
0004128395.tif 000002
【図２】
0004128395.tif 000003
【図３】
0004128395.tif 000004
【図４】
0004128395.tif 000005
【図５】
0004128395.tif 000006
【図６】
0004128395.tif 000007
【図７】
0004128395.tif 000008
【図８】
0004128395.tif 000009
【図９】
0004128395.tif 000010
【図１０】
0004128395.tif 000011
【図１１】
0004128395.tif 000012
【図１２】
0004128395.tif 000013
【図１３】
0004128395.tif 000014
【図１４】
0004128395.tif 000015
【図１５】
0004128395.tif 000016
【図１６】
0004128395.tif 000017
【図１７】
0004128395.tif 000018
【図１８】
0004128395.tif 000019
【図１９】
0004128395.tif 000020
【図２０】
0004128395.tif 000021
【図２１】
0004128395.tif 000022
【図２２】
0004128395.tif 000023
【図２３】
0004128395.tif 000024
【図２４】
0004128395.tif 000025
【図２５】
0004128395.tif 000026
【図２６】
0004128395.tif 000027
【図２７】
0004128395.tif 000028
【図２８】
0004128395.tif 000029
【図２９】
0004128395.tif 000030
【図３０】
0004128395.tif 000031
【図３１】
0004128395.tif 000032
【図３２】
0004128395.tif 000033
【図３３】
0004128395.tif 000034
【図３４】
0004128395.tif 000035
【図３５】
0004128395.tif 000036
【図３６】
0004128395.tif 000037
【図３７】
0004128395.tif 000038
【図３８】
0004128395.tif 000039
【図３９】
0004128395.tif 000040
【図４０】
0004128395.tif 000041
【図４１】
0004128395.tif 000042
【図４２】
0004128395.tif 000043
【図４３】
0004128395.tif 000044
【図４４】
0004128395.tif 000045
【図４５】
0004128395.tif 000046
【図４６】
0004128395.tif 000047
【図４７】
0004128395.tif 000048
【図４８】
0004128395.tif 000049
【図４９】
0004128395.tif 000050
【図５０】
0004128395.tif 000051
【図５１】
0004128395.tif 000052
【図５２】
0004128395.tif 000053
【図５３】
0004128395.tif 000054
【図５４】
0004128395.tif 000055
【図５５】
0004128395.tif 000056
【図５６】
0004128395.tif 000057
【図５７】
0004128395.tif 000058
【図５８】
0004128395.tif 000059
【図５９】
0004128395.tif 000060
【図６０】
0004128395.tif 000061
【図６１】
0004128395.tif 000062
【図６２】
0004128395.tif 000063
【図６３】
0004128395.tif 000064
【図６４】
0004128395.tif 000065