(57)【特許請求の範囲】
【請求項１】
少なくとも第一の入力データブロックと第二の入力データブロックを入力し、第一の出力データブロックを出力するデータ変換装置であって、
入力データブロック読み込み部と、入力データブロック記憶部と、中間演算処理部と、中間演算処理結果記憶部と、最終演算処理部とを有し、
上記入力データブロック読み込み部は、上記第一の入力データブロックを読み込み、
上記入力データブロック記憶部は、上記入力データブロック読み込み部により読み込んだ上記第一の入力データブロックを記憶し、
上記中間演算処理部は、上記入力データブロック記憶部に記憶した上記第一の入力データブロックを入力し、中間演算処理を行ない、第一の中間演算処理結果を出力し、
上記中間演算処理結果記憶部は、上記中間演算処理部が出力した上記第一の中間演算処理結果を記憶し、
上記入力データブロック読み込み部は、更に、上記中間演算処理部により上記第一の入力データブロックに対する上記中間演算処理を行なった後に、上記第二の入力データブロックを読み込み、
上記入力データブロック記憶部は、更に、上記入力データブロック読み込み部により読み込んだ上記第二の入力データブロックを、上記第一の入力データブロックに対して上書きして記憶し、
上記最終演算処理部は、上記中間演算処理結果記憶部に記憶した上記第一の中間演算処理結果と、上記入力データブロック記憶部に記憶した上記第二の入力データブロックとを入力し、最終演算処理を行ない、上記第一の出力データブロックを出力することを特徴とするデータ変換装置。
【請求項２】
上記データ変換装置は、更に、第三の入力データブロックを入力し、第二の出力データブロックを出力するデータ変換装置であって、
上記中間演算処理部は、更に、上記入力データブロック記憶部に記憶した上記第二の入力データブロックを入力し、上記中間演算処理を行ない、第二の中間演算処理結果を出力し、
上記中間演算処理結果記憶部は、更に、上記中間演算処理部が出力した上記第二の中間演算処理結果を記憶し、
上記入力データブロック読み込み部は、更に、上記中間演算処理部により上記第二の入力データブロックに対する上記中間演算処理を行なった後に、上記第三の入力データブロックを読み込み、
上記入力データブロック記憶部は、更に、上記入力データブロック読み込み部により読み込んだ上記第三の入力データブロックを、上記第二の入力データブロックに対して上書きして記憶し、
上記最終演算処理部は、更に、上記中間演算処理結果記憶部に記憶した上記第二の中間演算処理結果と、上記入力データブロック記憶部に記憶した上記第三の入力データブロックとを入力し、上記最終演算処理を行ない、上記第二の出力データブロックを出力することを特徴とする請求項１記載のデータ変換装置。
【請求項３】
平文データを構成する複数の平文データブロックを順次入力し、それぞれ暗号化し、順次暗号データブロックを出力し、複数の上記暗号データブロックからなる暗号データを生成する暗号化手順であって、順次、先に出力した上記暗号データブロックと、次に入力した上記平文データブロックとを用いて暗号化中間演算処理を行ない、得られた暗号化中間演算結果を用いて、暗号化最終演算処理を行ない、得られた暗号化最終演算結果を次の暗号データブロックとして出力する暗号化手順によって生成された上記暗号データを復号し、上記平文データを生成するデータ変換装置であって、
上記入力データブロック読み込み部は、上記第一の入力データブロックと、上記第二の入力データブロックと、上記第三の入力データブロックとして、上記暗号化によって出力された順と逆順に、上記暗号データブロックを読み込み、
上記中間演算処理部は、上記中間演算処理として、上記暗号化最終演算処理と逆の演算処理を行ない、
上記最終演算処理部は、上記最終演算処理として、上記暗号化中間演算処理の演算処理を行なうことを特徴とする請求項２記載のデータ変換装置。
【請求項４】
上記中間演算処理部は、上記中間演算処理として、復号処理を行ない、
上記最終演算処理部は、上記最終演算処理として、排他的論理和を求めることを特徴とする請求項３記載のデータ変換装置。
【請求項５】
上記第一の入力データブロックと第二の入力データブロックとは、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードで生成された暗号データであることを特徴とする請求項１から４いずれかに記載のデータ変換装置。
【請求項６】
少なくとも第一の入力データブロックと第二の入力データブロックを入力し、第一の出力データブロックを出力するデータ変換装置のデータ変換方法であって、以下の工程を有することを特徴とするデータ変換方法
（１）データ変換装置の入力データブロック読み込み部により、上記第一の入力データブロックを読み込む工程、
（２）データ変換装置の入力データブロック記憶部により、上記（１）の読み込む工程で読み込んだ上記第一の入力データブロックをメモリに記憶する工程、
（３）データ変換装置の中間演算処理部により、上記（２）の記憶する工程でメモリに記憶した上記第一の入力データブロックを入力し、中間演算処理を行ない、第一の中間演算処理結果を出力する工程、
（４）データ変換装置の中間演算処理結果記憶部により、上記（３）の出力する工程で出力した上記第一の中間演算処理結果をメモリに記憶する工程、
（５）データ変換装置の入力データブロック読み込み部により、上記（３）の出力する工程で上記第一の入力データブロックに対する上記中間演算処理を行なった後に、上記第二の入力データブロックを読み込む工程、
（６）データ変換装置の入力データブロック記憶部により、上記（５）の読み込む工程で読み込んだ上記第二の入力データブロックを、上記（２）の記憶する工程でメモリに記憶した第一の入力データブロックに対して上書きしてメモリに記憶する工程、
（７）データ変換装置の最終演算処理部により、上記（４）の記憶する工程でメモリに記憶した上記第一の中間演算処理結果と、上記（６）の記憶する工程でメモリに記憶した上記第二の入力データブロックとを入力し、最終演算処理を行ない、上記第一の出力データブロックを出力する工程。
【請求項７】
上記第一の入力データブロックと第二の入力データブロックとは、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードで生成された暗号データであることを特徴とする請求項６記載のデータ変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、ＣＢＣモードの暗号データを復号するデータ復号装置に用いられるデータ変換装置に係り、データ記憶領域を削減し、構成を単純化したデータ変換装置に関する。
【０００２】
【従来の技術】
暗号化や符号化等のデータ変換技術において、処理する対象をある固定された大きさを単位としたデータ（以降、データブロックという）に分割し、各々のデータブロックに対して同じ処理を実行する方法が知られている。共通鍵ブロック暗号による暗号化処理はその一つである。
【０００３】
これまで、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）をはじめとする共通鍵ブロック暗号の利用モード（Ｍｏｄｅ  ｏｆ  Ｏｐｅｒａｔｉｏｎｓ）として、米国商務省（ＮＢＳ）はＣＢＣ（Ｃｉｐｈｅｒ  ＢｌｏｃｋＣｈａｉｎｉｎｇ）モードを含む４種類のモードを提案している。この利用モードは、例えば、「現代暗号理論」（池野伸一、小山謙二、社団法人電子情報通信学会編）に示されている。
【０００４】
図２は、例えば、上記文献に示された従来のＣＢＣモードでの暗号化、復号手順であり、次に動作について説明する。
【０００５】
図２に示すように、入力平文のデータブロックＭ［ｉ］（ｉ＝０，１，２，・・・）は、入力順にＣＢＣモードで暗号化処理が実行され、暗号化処理が実行された順序でＣＢＣモードにより復号処理が実行される。その暗号化の手順は次の通りである。
１．初期値（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ：ＩＶ）が記憶素子Ｃ（１１）に書き込まれる。
２．記憶素子Ｃ（１１）とＭ［ｉ］（ｉ＝０，１，２，・・・）との排他的論理和の処理が実行される。
３．２の結果は、演算手段Ｅｋ（１３）により暗号化処理が実行され、出力データブロックＣ［ｉ］（ｉ＝０，１，２，・・・）が出力される。
４．出力データブロックＣ［ｉ］（ｉ＝０，１，２，・・・）が記憶素子Ｃ（１１）に書き込まれる。
５．以降、入力データブロックが終わるまで、処理２から４を繰り返す。
従って、図３に示すように暗号化処理の入力データブロックは、順にＭ［ｉ］（ｉ＝０，１，２，・・・）で、出力データブロックは順にＣ［ｉ］（ｉ＝０，１，２，・・・）である。
【０００６】
続いて、従来の復号の手順を説明する。具体的には、図４に示すような装置により、以下のステップにより処理されていた。
１．初期値（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ：ＩＶ）が記憶手段（６）に書き込まれる。
２．記憶手段ｉｎｐｕｔ（１）に入力データブロックが書き込まれる。
３．記憶手段ｉｎｐｕｔ（１）は、演算手段Ｄｅｃ（２）により復号処理が実行され、その結果が記憶手段（３）に書き込まれる。
４．記憶手段（６）と記憶手段（３）との排他的論理和が、記憶手段ｏｕｔｐｕｔ（５）に書き込まれる。
５．記憶手段ｉｎｐｕｔ（１）の値が記憶手段（６）に書き込まれる。
６．以降処理２から５を実行する。
７．入力データブロックが終わるまで、処理５から６を繰り返す。
従って、図３に示すように復号処理の入力データブロックは順にＣ［ｉ］（ｉ＝０，１，２，・・・）で、出力データブロックは順にＭ［ｉ］（ｉ＝０，１，２，・・・）である。
【０００７】
以上のように、従来のＣＢＣモードによる暗号化及び復号処理では、その処理は暗号化処理と復号処理は同じ順序で実行されている。
【０００８】
上述のように、連続したデータブロックを従来のＣＢＣモードで復号処理するために、２つの記憶手段（３，６）が必要であった。
【０００９】
【発明が解決しようとする課題】
この発明は、上記のような問題点を解決するためになされたもので、データ変換処理における復号処理過程におけるメモリバッファの削減を目的とする。
【００１０】
【課題を解決するための手段】
この発明に係るデータ変換装置は、少なくとも第一の入力データブロックと第二の入力データブロックを入力し、第一の出力データブロックを出力するデータ変換装置であって、
入力データブロック読み込み部と、入力データブロック記憶部と、中間演算処理部と、中間演算処理結果記憶部と、最終演算処理部とを有し、
上記入力データブロック読み込み部は、上記第一の入力データブロックを読み込み、
上記入力データブロック記憶部は、上記入力データブロック読み込み部により読み込んだ上記第一の入力データブロックを記憶し、
上記中間演算処理部は、上記入力データブロック記憶部に記憶した上記第一の入力データブロックを入力し、中間演算処理を行ない、第一の中間演算処理結果を出力し、
上記中間演算処理結果記憶部は、上記中間演算処理部が出力した上記第一の中間演算処理結果を記憶し、
上記入力データブロック読み込み部は、更に、上記中間演算処理部により上記第一の入力データブロックに対する上記中間演算処理を行なった後に、上記第二の入力データブロックを読み込み、
上記入力データブロック記憶部は、更に、上記入力データブロック読み込み部により読み込んだ上記第二の入力データブロックを、上記第一の入力データブロックに対して上書きして記憶し、
上記最終演算処理部は、上記中間演算処理結果記憶部に記憶した上記第一の中間演算処理結果と、上記入力データブロック記憶部に記憶した上記第二の入力データブロックとを入力し、最終演算処理を行ない、上記第一の出力データブロックを出力することを特徴とする。
【００１１】
上記データ変換装置は、更に、第三の入力データブロックを入力し、第二の出力データブロックを出力するデータ変換装置であって、
上記中間演算処理部は、更に、上記入力データブロック記憶部に記憶した上記第二の入力データブロックを入力し、上記中間演算処理を行ない、第二の中間演算処理結果を出力し、
上記中間演算処理結果記憶部は、更に、上記中間演算処理部が出力した上記第二の中間演算処理結果を記憶し、
上記入力データブロック読み込み部は、更に、上記中間演算処理部により上記第二の入力データブロックに対する上記中間演算処理を行なった後に、上記第三の入力データブロックを読み込み、
上記入力データブロック記憶部は、更に、上記入力データブロック読み込み部により読み込んだ上記第三の入力データブロックを、上記第二の入力データブロックに対して上書きして記憶し、
上記最終演算処理部は、更に、上記中間演算処理結果記憶部に記憶した上記第二の中間演算処理結果と、上記入力データブロック記憶部に記憶した上記第三の入力データブロックとを入力し、上記最終演算処理を行ない、上記第二の出力データブロックを出力することを特徴とする。
【００１２】
この発明に係るデータ変換装置は、平文データを構成する複数の平文データブロックを順次入力し、それぞれ暗号化し、順次暗号データブロックを出力し、複数の上記暗号データブロックからなる暗号データを生成する暗号化手順であって、順次、先に出力した上記暗号データブロックと、次に入力した上記平文データブロックとを用いて暗号化中間演算処理を行ない、得られた暗号化中間演算結果を用いて、暗号化最終演算処理を行ない、得られた暗号化最終演算結果を次の暗号データブロックとして出力する暗号化手順によって生成された上記暗号データを復号し、上記平文データを生成するデータ変換装置であって、
上記入力データブロック読み込み部は、上記第一の入力データブロックと、上記第二の入力データブロックと、上記第三の入力データブロックとして、上記暗号化によって出力された順と逆順に、上記暗号データブロックを読み込み、
上記中間演算処理部は、上記中間演算処理として、上記暗号化最終演算処理と逆の演算処理を行ない、
上記最終演算処理部は、上記最終演算処理として、上記暗号化中間演算処理の演算処理を行なうことを特徴とする。
【００１３】
上記中間演算処理部は、上記中間演算処理として、復号処理を行ない、
上記最終演算処理部は、上記最終演算処理として、排他的論理和を求めることを特徴とする。
【００１４】
この発明に係るデータ変換装置は、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードで生成された暗号データを復号するデータ変換装置であって、以下の要素を有することを特徴とする。
（１）上記暗号データを構成する暗号データブロックを、暗号データブロックが生成された順とは逆順に、読み込む暗号データブロック読み込み部、
（２）上記暗号データブロック読み込み部によって、読み込んだ上記暗号データブロックを順次復号するデータブロック復号部。
【００１５】
この発明に係るデータ変換方法は、少なくとも第一の入力データブロックと第二の入力データブロックを入力し、第一の出力データブロックを出力するデータ変換方法であって、以下の工程を有することを特徴とする。
（１）上記第一の入力データブロックを読み込む工程、
（２）読み込んだ上記第一の入力データブロックを記憶する工程、
（３）記憶した上記第一の入力データブロックを入力し、中間演算処理を行ない、第一の中間演算処理結果を出力する工程、
（４）出力した上記第一の中間演算処理結果を記憶する工程、
（５）上記第一の入力データブロックに対する上記中間演算処理を行なった後に、上記第二の入力データブロックを読み込む工程、
（６）読み込んだ上記第二の入力データブロックを、上記第一の入力データブロックに対して上書きして記憶する工程、
（７）記憶した上記第一の中間演算処理結果と、記憶した上記第二の入力データブロックとを入力し、最終演算処理を行ない、上記第一の出力データブロックを出力する工程。
【００１６】
この発明に係るデータ変換方法は、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードで生成された暗号データを復号するデータ変換方法であって、以下の工程を有することを特徴とする。
（１）上記暗号データを構成する暗号データブロックを、暗号データブロックが生成された順とは逆順に、読み込む工程、
（２）読み込んだ上記暗号データブロックを順次復号する工程。
【００１７】
【発明の実施の形態】
以下、図面を参照して、実施形態によるデータ変換アルゴリズムにおける逆順に復号する手続きを示す。
図１は、この発明の復号装置の構成図である。
図において、記憶手段ｉｎｐｕｔ（１）は、入力データブロックを記憶する記憶手段、演算装置Ｄｅｃ（２）は、復号処理を演算する演算装置、記憶手段（３）は、復号処理の演算結果を格納するメモリなどの記憶手段、記憶手段ｏｕｔｐｕｔ（５）は、復号結果を格納する記憶手段である。各記憶手段は、例えば、メモリである。
【００１８】
次に、動作について説明する。入力データブロックは暗号化処理された順序と逆の順序Ｃ［ｉ］（ｉ＝・・・，２，１，０）で読み込まれる。ブロック暗号を用いるシステムの場合、例えば、パケットのような通信単位毎にバッファとなる記憶領域を有することが多く、入力データブロック読み込み部（７）は、これらの記憶領域から入力データブロックを逆順に読み込む。
【００１９】
復号の手順を説明する。
１．まず、記憶手段ｉｎｐｕｔ（１）に先頭の入力データブロックが書き込まれる。
２．記憶手段ｉｎｐｕｔ（１）に書き込まれた入力データブロックは復号処理が実行され、その結果が記憶手段（３）に書き込まれる。
３．記憶手段ｉｎｐｕｔ（１）に次の入力データブロックが書き込まれる。
４．記憶手段ｉｎｐｕｔ（１）と記憶手段（３）との排他的論理和が排他的論理和素子４によりとられ、記憶手段ｏｕｔｐｕｔ（５）に書き込まれる。
５．処理２から４までを入力データブロックがなくなるまで繰り返す。
６．最後の入力データブロックが復号処理され、メモリバッファに格納された後は、記憶手段ｉｎｐｕｔ（１）に初期値（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ：ＩＶ）が書き込まれる。
７．記憶手段ｉｎｐｕｔ（１）と記憶手段（３）との排他的論理和を排他的論理和素子４によりとり、記憶手段ｏｕｔｐｕｔ（５）に書き込み、処理を終える。
【００２０】
以上のように、従来の方式とは異なり入力データブロックを逆順に処理するようにしているので、メモリバッファの個数を削減することができる。
【００２１】
尚、本実施の形態では、ハードウェアによる実装の例を示したが、ソフトウェアによる実装によって実施することもできる。また、この場合でも同様の効果を得る。
【００２２】
【発明の効果】
本発明においては、第一の入力データブロックに対する中間演算処理を行なった後に、第二の入力データブロックを読み込み、第一の入力データブロックに対して上書きして記憶するので、入力データブロックを記憶する領域を節減できる。
【００２３】
本発明においては、先に入力データブロック記憶部に記憶した第二の入力データブロックを用いて、中間演算処理を行なうので、改めて第二の入力データブロックを読み込む必要がなく、入力データブロックの読み込み動作を少なくし、構成を単純にするとともに、処理を高速化することができる。
【００２４】
本発明においては、暗号化によって出力された順と逆順に、暗号データブロックを読み込み、中間演算処理として、暗号化最終演算処理と逆の演算処理を行ない、最終演算処理として、暗号化中間演算処理の演算処理を行なうので、例えば、実施の形態に示したようなＣＢＣモードの暗号データを、少ない資源で、高速に復号することができる。
【００２５】
本発明においては、中間演算処理として、復号処理を行ない、最終演算処理として、排他的論理和を求めるので、例えば、実施の形態に示したようなＣＢＣモードの暗号データの復号装置としてデータ変換装置を用い、従来の復号装置に比べ資源を削減することができる。
【００２６】
本発明においては、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードで生成された暗号データを復号するデータ変換装置で、暗号データブロックが生成された順とは逆順に、暗号データブロックを読み込み、順次復号するので、暗号データブロックを記憶する領域を削減した復号装置を構成することができる。
【図面の簡単な説明】
【図１】  本発明に係るＣＢＣモードによるデータ復号装置の構成図である。
【図２】  ＣＢＣモードによるデータ暗号化装置及びデータ復号装置の概略図である。
【図３】  従来のＣＢＣモードによるデータ暗号化処理及びデータ復号処理における入出力データの並びを示す図である。
【図４】  従来のＣＢＣモードによるデータ復号装置の構成図である。
【符号の説明】
１  記憶手段ｉｎｐｕｔ、２  演算手段Ｄｅｃ、３，６  記憶手段、４，１２，１５  排他的論理和素子、５  記憶手段ｏｕｔｐｕｔ、７  入力データブロック読み込み部、８  データブロック復号部、１１，１４  記憶素子Ｃ、１３  演算手段、１６  演算手段Ｄｋ。
【図１】
0004335374.tif 000002
【図２】
0004335374.tif 000003
【図３】
0004335374.tif 000004
【図４】
0004335374.tif 000005