(57)【特許請求の範囲】
【請求項１】
上位Ｎビット（Ｎは正の整数）がＮビットのデータを非線形変換したＮビットの変換データであり、中位（Ｌ−Ｎ）ビット（ＬはＮ以上の整数）が０であり、下位Ｎビットが上位Ｎビットと同一のデータである（Ｎ＋Ｌ）ビットのデータを、上記Ｎビットのデータと対応させて記憶する第１の非線形変換テーブルと、
上位ＮビットがＬビットのデータの下位Ｎビットであり、下位Ｌビットが上記Ｌビットのデータを非線形変換したＬビットのデータと上記Ｌビットのデータの上位（Ｌ−Ｎ）ビットを０にしたデータとの排他的論理和である（Ｎ＋Ｌ）ビットのデータを、上記Ｌビットのデータと対応させて記憶する第２の非線形変換テーブルとを備える非線形変換装置が、
ＮビットのデータＡを入力し、
上記第１の非線形変換テーブルを用いて、入力したＮビットのデータＡに対応する（Ｎ＋Ｌ）ビットのデータを取得して、変換データＡとし、
ＬビットのデータＢを入力し、
上記第２の非線形変換テーブルを用いて、入力したＬビットのデータＢに対応する（Ｎ＋Ｌ）ビットのデータを取得して、変換データＢとし、
上記変換データＡと上記変換データＢとの排他的論理和を演算し、
演算した排他的論理和の演算結果を、データＣとして出力する
ことを特徴とする非線形変換方法。
【請求項２】
上位Ｎビット（Ｎは正の整数）がＮビットのデータを非線形変換したＮビットの変換データであり、下位Ｎビットが上位Ｎビットと同一のデータである２Ｎビットのデータを、上記Ｎビットのデータと対応づけて記憶する第１の非線形変換テーブルと、
上位ＮビットがＮビットのデータと同一のデータであり、下位Ｎビットが上記Ｎビットのデータを非線形変換したＮビットの変換データと上記Ｎビットのデータとの排他的論理和である２Ｎビットのデータを、上記Ｎビットのデータと対応づけて記憶した第２の非線形変換テーブルとを備える非線形変換装置が、
ＮビットのデータＡを入力し、
上記第１の非線形変換テーブルを用いて、入力したＮビットのデータＡに対応する２Ｎビットのデータを取得して、変換データＡとし、
ＮビットのデータＢを入力し、
上記第２の非線形変換テーブルを用いて、入力したＮビットのデータＢに対応する２Ｎビットのデータを取得して、変換データＢとし、
上記変換データＡと上記変換データＢとの排他的論理和を演算し、
演算した排他的論理和の演算結果を、データＣとして出力する
ことを特徴とする非線形変換方法。
【請求項３】
上位Ｎビット（Ｎは正の整数）がＮビットのデータを非線形変換したＮビットの変換データであり、中位（Ｌ−Ｎ）ビット（ＬはＮ以上の整数）が０であり、下位Ｎビットが上位Ｎビットと同一のデータである（Ｎ＋Ｌ）ビットのデータを、上記Ｎビットのデータと対応させて記憶する第１の非線形変換テーブルを備える非線形変換装置が、
（Ｎ＋Ｌ）ビットの鍵データＫ’を入力し、
Ｌビットのデータについて、入力した鍵データＫ’の下位Ｌビットと、上記Ｌビットのデータとの排他的論理和を演算し、
演算した排他的論理和の演算結果を非線形変換してＬビットの変換データを取得し、
取得したＬビットの変換データと、上記Ｌビットのデータの上位（Ｌ−Ｎ）ビットを０にしたデータとの排他的論理和を演算し、
上位Ｎビットが上記Ｌビットのデータの下位Ｎビットであり、下位Ｌビットが演算した排他的論理和の演算結果である（Ｎ＋Ｌ）ビットのデータを生成し、
生成した（Ｎ＋Ｌ）ビットのデータを、上記Ｌビットのデータと対応づけて記憶して、第２の非線形変換テーブルとし、
上位Ｎビットが入力した鍵データＫ’の上位Ｎビットであり、中位（Ｌ−Ｎ）ビットが０であり、下位Ｎビットが上位Ｎビットと同一のデータである（Ｎ＋Ｌ）ビットのデータを生成して、鍵データＤとし、
ＮビットのデータＡを入力し、
上記第１の非線形変換テーブルを用いて、入力したＮビットのデータＡに対応する（Ｎ＋Ｌ）ビットのデータを取得して、変換データＡとし、
ＬビットのデータＢを入力し、
上記第２の非線形変換テーブルを用いて、入力したＬビットのデータＢに対応する（Ｎ＋Ｌ）ビットのデータを取得して、変換データＢとし、
上記変換データＡと、上記変換データＢとの排他的論理和を演算し、
演算した変換データＡと変換データＢとの排他的論理和と、上記鍵データＤとの排他的論理和を演算し、
演算した排他的論理和と鍵データＤとの排他的論理和を、データＣとして出力する
ことを特徴とする非線形変換方法。
【請求項４】
非線形変換装置が、
（Ｎ＋Ｌ）ビット（Ｎは正の整数、ＬはＮ以上の整数）の鍵データＫ’を入力し、
Ｎビットのデータについて、上記Ｎビットのデータを非線形変換したＮビットの変換データを取得し、
入力した鍵データＫ’の上位Ｎビットと、取得したＮビットの変換データとの排他的論理和を演算し、
上位Ｎビットが演算した排他的論理和の演算結果であり、中位（Ｌ−Ｎ）ビットが０であり、下位Ｎビットが上位Ｎビットと同一のデータである（Ｎ＋Ｌ）ビットのデータを生成し、
生成した（Ｎ＋Ｌ）ビットのデータを、上記Ｎビットのデータと対応づけて記憶して、第１の非線形変換テーブルとし、
Ｌビットのデータについて、入力した鍵データＫ’の下位Ｌビットと、上記Ｌビットのデータとの排他的論理和を演算し、
演算した排他的論理和の演算結果を非線形変換してＬビットの変換データを取得し、
取得したＬビットの変換データと、上記Ｌビットのデータの上位（Ｌ−Ｎ）ビットを０にしたデータとの排他的論理和を演算し、
上位Ｎビットが上記Ｌビットのデータの下位Ｎビットであり、下位Ｌビットが演算した排他的論理和の演算結果である（Ｎ＋Ｌ）ビットのデータを生成し、
生成した（Ｎ＋Ｌ）ビットのデータを、上記Ｌビットのデータと対応づけて記憶して、第２の非線形変換テーブルとし、
ＮビットのデータＡを入力し、
上記第１の非線形変換テーブルを用いて、入力したＮビットのデータＡに対応する（Ｎ＋Ｌ）ビットのデータを取得して、変換データＡとし、
ＬビットのデータＢを入力し、
上記第２の非線形変換テーブルを用いて、入力したＬビットのデータＢに対応する（Ｎ＋Ｌ）ビットのデータを取得して、変換データＢとし、
上記変換データＡと、上記変換データＢとの排他的論理和を演算し、
演算した排他的論理和の演算結果を、データＣとして出力する
ことを特徴とする非線形変換方法。
【請求項５】
上記非線形変換方法は、更に、
鍵データＫを入力し、
入力した鍵データＫに基づいて、（Ｎ＋Ｌ）ビットの鍵データＫ’を生成し、
生成した鍵データＫ’を、上記鍵データＫ’として入力する
ことを特徴とする請求項３または請求項４記載の非線形変換方法。
【請求項６】
ＮビットのデータＡとＬビットのデータＢとをそれぞれ非線形変換して、Ｍ（Ｍ≠Ｎ，Ｍ≠Ｌ）ビットのデータＣを出力する非線形変換方法において、
ＮビットのデータＡを非線形変換して、Ｍビットの変換データＡとする第１の非線形変換工程と、
ＬビットのデータＢを非線形変換して、Ｍビットの変換データＢとする第２の非線形変換工程と、
上記Ｍビットの変換データＡと上記Ｍビットの変換データＢとを排他的論理和演算してＭビットのデータＣとして出力する演算工程と
を備え、
Ｎビット≦Ｌビットであり、かつ、Ｍビット＝Ｎビット＋Ｌビットであり、
第１の非線形変換工程は、
ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データと、
（Ｌ−Ｎ）ビットのパディングデータと、
ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データと
を連結したＭビットの変換データＡを出力する第１の非線形変換テーブルを用いて、非線形変換し、
第２の非線形変換工程は、
ＬビットのデータＢの上位（Ｌ−Ｎ）ビットがトランケートされたＮビットのデータＢ’と、
ＬビットのデータＢをＬビットのデータに非線形変換したＬビットの変換データとＬビットのデータＢの上位（Ｌ−Ｎ）ビットを０としたデータとを排他的論理和演算したＬビットの変換データと
を連結したＭビットの変換データを出力する第２の非線形変換テーブルを用いて、非線形変換することを特徴とする非線形変換方法。
【請求項７】
上記第１の非線形変換工程は、
ＮビットのデータＡからＭビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖（Ｌ−Ｎ）ビット分の０‖Ｔａ（Ａ）］（「Ｔａ」は非線形変換を示す。「‖」は連結を示す）を出力する第１の非線形変換テーブルを用いて、非線形変換し、
上記第２の非線形変換工程は、
ＬビットのデータＢからＭビットの変換データＢ［Ｂ＝Ｂ’‖（Ｔｂ（Ｂ）＋Ｂ”）］（Ｂ’はＬビットのデータＢの下位Ｎビットのデータを意味する。「Ｔｂ」は非線形変換を示す。「＋」は、排他的論理和演算を示す。Ｂ”はＬビットのデータＢの上位（Ｌ−Ｎ）ビット分を０にしたＬビットのデータを示す。）を出力する第２の非線形変換テーブルを用いて、非線形変換し、
上記演算工程は、
上記Ｍビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖（Ｌ−Ｎ）ビット分の０‖Ｔａ（Ａ）］と上記Ｍビットの変換データＢ［Ｂ＝Ｂ’‖（Ｔｂ（Ｂ）＋Ｂ”）］との排他的論理和演算を行い、Ｍビットの変換データＣ［Ｃ＝（Ｔａ（Ａ）＋Ｂ’）‖（Ｔｂ（Ｂ）＋Ｔａ（Ａ）”＋Ｂ”）］（ここで、Ｔａ（Ａ）”は［（Ｌ−Ｎ）ビット分の０‖Ｔａ（Ａ）］を示す。）を出力することを特徴とする請求項６記載の非線形変換方法。
【請求項８】
ＮビットのデータＡとＬビットのデータＢとをそれぞれ非線形変換して、Ｍ（Ｍ≠Ｎ，Ｍ≠Ｌ）ビットのデータＣを出力する非線形変換方法において、
ＮビットのデータＡを非線形変換して、Ｍビットの変換データＡとする第１の非線形変換工程と、
ＬビットのデータＢを非線形変換して、Ｍビットの変換データＢとする第２の非線形変換工程と、
上記Ｍビットの変換データＡと上記Ｍビットの変換データＢとを排他的論理和演算してＭビットのデータＣとして出力する演算工程と
を備え、
Ｎビット＝Ｌビットであり、かつ、Ｍビット＝Ｎビット＋Ｌビットであり、
上記第１の非線形変換工程は、ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データを２つ連結したＭビットの変換データＡを出力する第１の非線形変換テーブルを用いて、非線形変換し、
上記第２の非線形変換工程は、
ＬビットのデータＢと、
ＬビットのデータＢをＬビットのデータに非線形変換したＬビットの変換データとＬビットのデータＢとを排他的論理和演算したＬビットの変換データと
を連結したＭビットの変換データＢを出力する第２の非線形変換テーブルを用いて、非線形変換することを特徴とする非線形変換方法。
【請求項９】
上記第１の非線形変換工程は、
ＮビットのデータＡからＭビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖Ｔａ（Ａ）］（「Ｔａ」は非線形変換を示す。「‖」は連結を示す）を出力する第１の非線形変換テーブルを用いて、非線形変換し、
上記第２の非線形変換工程は、
ＬビットのデータＢからＭビットの変換データＢ［Ｂ＝Ｂ‖（Ｔｂ（Ｂ）＋Ｂ）］（「Ｔｂ」は非線形変換を示す。「＋」は排他的論理和演算を示す）を出力する第２の非線形変換テーブルを用いて、非線形変換し、
上記演算工程は、
上記Ｍビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖Ｔａ（Ａ）］と上記Ｍビットの変換データＢ［Ｂ＝Ｂ‖（Ｔｂ（Ｂ）＋Ｂ）］との排他的論理和演算を行い、Ｍビットの変換データＣ［Ｃ＝（Ｔａ（Ａ）＋Ｂ）‖（Ｔｂ（Ｂ）＋Ｔａ（Ａ）＋Ｂ）］を出力することを特徴とする請求項８記載の非線形変換方法。
【請求項１０】
上記第１の非線形変換テーブルと上記第２の非線形変換テーブルとの少なくともいずれか一方は、鍵データに基づく非線形変換を実行する非線形変換テーブルであることを特徴とする請求項７または請求項９記載の非線形変換方法。
【請求項１１】
上記請求項１乃至請求項１０のいずれかに記載された非線形変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
Ｎビット（Ｎは正の整数）のデータＡをＮビットのデータに非線形変換したＮビットの変換データと、（Ｌ−Ｎ）ビット（ＬはＮ以上の整数）のパディングデータと、ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データとを連結したＭビット（Ｍ＝Ｎ＋Ｌ）の変換データＡを記憶する第１の非線形変換テーブルと、
ＬビットのデータＢの上位（Ｌ−Ｎ）ビットがトランケートされたＮビットのデータＢ’と、ＬビットのデータＢをＬビットのデータに非線形変換したＬビットの変換データとＬビットのデータＢの上位（Ｌ−Ｎ）ビットを０にしたデータとを排他的論理和演算したＬビットの変換データとを連結したＭビットの変換データを記憶する第２の非線形変換テーブルと、
ＮビットのデータＡを入力し、上記第１の非線形変換テーブルを用いてＮビットのデータＡをＭビットのデータに非線形変換して、非線形変換したＭビットのデータをＭビットの変換データＡとして出力する第１の非線形変換回路と、
ＬビットのデータＢを入力し、上記第２の非線形変換テーブルを用いてＬビットのデータＢをＭビットのデータに非線形変換して、非線形変換したＭビットのデータをＭビットの変換データＢとして出力する第２の非線形変換回路と、
上記第１の非線形変換回路から出力されたＭビットの変換データＡと、上記第２の非線形変換回路から出力されたＭビットの変換データＢとを排他的論理和演算してＭビットの変換データＣを出力する演算器と
を備えたことを特徴とする非線形変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えば、暗号及び復号に用いられる非線形変換方法及び非線形変換装置に関するものである。特に、非線形変換を高速に行うソフトウェア（プログラム）に関するものである。
【０００２】
【従来の技術】
以下、図において、数値「８」はデータのビット数を示している。また、図において、丸印の中に「＋」を記入した記号は、排他的論理和回路又は排他的論理和演算を示している。また、以下の説明で、「＋」は排他的論理和演算を意味するものとする。また、「‖」は連結（コンカティネーション）を意味するものとする。例えば、Ａを８ビットのデータとし、Ｂを８ビットのデータとすると、Ａ‖Ｂは、データＡの後にデータＢをつなげた１６ビットのデータを意味する。
【０００３】
従来例１．
図２９は、従来の非線形変換装置を示す図である。
図２９に示す非線形変換装置は、左入力データに第１の非線形変換をし、該第１の非線形変換された変換データと、上記右入力データとの排他的論理和を第１の右中間データとして出力し、かつ、上記右入力データを第１の左中間データとして出力する第１の副変換処理部と、上記第１の左中間データを入力し、第２の非線形変換をし、該第２の非線形変換された変換データと、上記第１の右中間データとの排他的論理和を第２の右中間データとして出力し、かつ、上記第１の右中間データを第２の左中間データとして出力する第２の副変換処理部とを備え、上記第１の副変換処理部を１段とし、上記第２の副変換処理部を次の１段として交互にｎ段（図においては、３段）接続して、第１から第ｎの副変換処理部を形成し、非線形変換を行い、第ｎの副変換処理部から出力される左中間データと右中間データを、データ変換されたＡデータとＢデータとして出力することを特徴とするデータ変換装置を示している。このデータ変換装置は、第１の副変換処理部の非線形変換処理の終了以前に、第２副変換処理部の非線形変換処理を開始するものである。
【０００４】
図２９においては、１６ビットの入力データは、８ビットずつに分割される。分割された８ビットのデータは、交互に非線形変換テーブルＴ１，非線形変換テーブルＴ２，非線形変換テーブルＴ３により非線形変換を施され、最後に１６ビットの出力データとなる。ここで、８ビットに分割された一方のデータをデータＡとし、非線形変換テーブルＴ１により非線形変換されたデータをデータＢとする。データＡは、非線形変換テーブルＴ２により変換データ［Ｔ２（Ａ）］８１に変換される。変換データ［Ｔ２（Ａ）］８１は、排他的論理和回路Ｘ２により変換データ［Ｔ２（Ａ）＋Ｂ’］８４になる。一方、データＢは、非線形変換テーブルＴ３により変換データ［Ｔ３（Ｂ）］８３になる。変換データ［Ｔ３（Ｂ）］８３は、排他的論理和回路Ｘ３により変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］８５になる。最後に、変換データ［Ｔ２（Ａ）＋Ｂ’］８４と変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］８５が連結され、１６ビットのデータＣとなる。即ち、データＣは、変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”）］８９となる。
【０００５】
図３０は、図２９のＹ部分のハードウェア構成図である。
図３０に示すように、８ビットのデータＡと８ビットのデータＢを連結（コンカティネート）して１６ビットのデータＣとする場合には、単に８本のラインと８本のラインを束ねて１６本のラインにすればよい。このため、連結に必要な時間は、一切かからない。
【０００６】
図３１は、図２９に示したデータＡとデータＢの非線形変換をプログラムを用いて行う場合のソースコードである。
図３１に示すソースコードに用いられているプログラミング言語は、仮想のものである。また、予め非線形変換テーブルＴ１、非線形変換テーブルＴ２、非線形変換テーブルＴ３は、プログラムから参照できるような状態でメモリに存在しているものとする。
まず、Ｓ１において、データＡを用いて非線形変換テーブルＴ２を検索し、変換データ［Ｔ２（Ａ）］８１を得る。次に、Ｓ２において、データＡとデータＢの排他的論理和演算を行い、変換データ［Ｔ２（Ａ）＋Ｂ’］８４を得る。次に、データＢを用いて非線形変換テーブルＴ３を検索し、変換データ［Ｔ３（Ｂ）］８３を得る。次に、Ｓ４において、データＢとデータＡの排他的論理和演算を行い、変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］８５を得る。次に、Ｓ５において、データＡを８ビット左側にシフトする。図３２のＳ５は、データＡを８ビット左側にシフトした場合を示している。
次に、Ｓ６において、データＡとデータＢの排他的論理和演算を行い、変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”）］８９を得る。図３２のＳ６は、データＡとデータＢの排他的論理和演算をした結果、８ビットのデータＡと８ビットのデータＢから１６ビットのデータＣを得た場合を示している。
このように、ソフトウェア（プログラム）を用いて８ビットのデータと８ビットのデータＢとを連結する場合には、Ｓ５に示したように、データＡを左側に８ビットシフトしてからでなければ、連結処理を行うことができない。
以上のように、６ステップで処理が完了する。
【０００７】
次に、非線形変換テーブルのテーブルサイズについて説明する。
図３３に示すように、Ｎビットのデータを用いてテーブルを検索し、Ｍビットのデータを出力する場合には、２N ×Ｍビットのサイズが必要である。例えば、図３４に示すように、２ビットのデータを用いて４ビットのデータを出力する場合には、２2 ×４＝１６ビットのテーブルサイズが必要となる。図２９及び図３１に示す非線形変換テーブルＴ１、非線形変換テーブルＴ２、非線形変換テーブルＴ３は、８ビットのデータを入力し、８ビットのデータを出力するテーブルであるから、図３５に示すように、２8 ×８＝２５６×８ビット＝２５６バイトとなり、各テーブルが２５６バイトのテーブルサイズを持つ。従って、図２９及び図３１に示す３つのテーブルの合計サイズは、２５６バイト×３＝７６８バイトである。
【０００８】
一方、図２９に示す装置を、図３６に示すように、１つのテーブルで実現することも可能である。即ち、１６ビットを入力し、非線形変換した１６ビットのデータを出力するテーブルを１つだけ設けるようにすることも可能である。図３６に示すテーブルによるデータ変換をソフトウェアで行う場合には、１回のテーブル検索により非線形変換が完了することになる。この場合には、図３６に示すように、テーブルサイズは、２16×１６ビット＝１２８キロバイトとなる。テーブルを図３６のように１つにまとめた場合には、図２９及び図３１に示したように、３つのテーブルで行う場合に比べて、テーブルサイズが約１７０倍（１２８キロバイト÷７６８バイト＝１７０．６６６）となる。
【０００９】
従来例２．
図３７は、１６ビットの入力データを９ビットと７ビットに分割して非線形変換を行う場合を示している。
図３８は、９ビットのデータの非線形変換を行う非線形変換テーブルＴ１の構成図である。非線形変換テーブルＴ３も非線形変換テーブルＴ１と同じ構成である。
また、図３９は、７ビットのデータの非線形変換を行う非線形変換テーブルＴ２の構成図である。
コンピュータは、８ビット、１６ビット、３２ビット、６４ビットのように、８ビット単位（１バイト単位）にデータ処理を行うようになっている。従って、図３８と図３９に示すように、通常は、テーブルも８ビット単位に構成する。図３８の場合には、９ビットのデータを入力して、有効ビット数が９ビットのデータを出力するものである。しかし、図３８に示すように、１レコードを１６ビットで構成するため、上位７ビットのには０をパディングしてある。このため、テーブルサイズは、２9 ×１６ビット＝１キロバイトとなる。
また、図３９の場合は、７ビットのデータを入力して、有効ビット数が７ビットのデータを出力する。しかし、１レコードを８ビットに構成している。即ち、上位１ビットには、０がパディングしてある。このため、テーブルサイズは、２7 ×８ビット＝１２８バイトとなる。
【００１０】
図４０は、図３７に示したデータＡとデータＢとの非線形変換を実行するプログラムのソースコードを示す図である。
まず、Ｓ１において、変換データ［Ｔ２（Ａ）］８１を得る。次に、Ｓ２において、７ビットのデータＡと９ビットのデータＢの排他的論理和演算を行い、図４１のＳ２に示すように、９ビットのデータＡを得る。次に、Ｓ２１において、データＡを７ビットのデータにするために、図４１のＳ２１に示すように、上位２ビットを削除（トランケート）するための７ビットのマスク処理を行う。ここで、データＡの上位２ビットはトランケートされ、７ビットのデータＡとなる。即ち、Ｓ２とＳ２１により変換データ［Ｔ２（Ａ）＋Ｂ’］８４が得られる。ここで、データＢ’は、９ビットのデータＢの上位２ビットがトランケートされた７ビットのデータをいう。次に、Ｓ３において、変換データ［Ｔ３（Ｂ）］８３を得る。次に、Ｓ４において、９ビットのデータＢと７ビットのデータＡに２ビットの０が上位に付加された９ビットのデータとを用いて、図４１のＳ４に示すように、排他的論理和演算を行い、９ビットのデータＢを得る。即ち、変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］８５を得る。ここで、Ｔ２（Ａ）”は、７ビットのデータＴ２（Ａ）の先頭に２ビットの０を付加した９ビットのデータである。また、Ｂ”は、７ビットのデータＢ’の先頭に２ビットの０を付加した９ビットのデータである。即ち、Ｂ”は、９ビットのデータＢの上位２ビットを０にしたものである。次に、Ｓ５において、データＡを９ビット左側にシフトし、Ｓ６においてデータＢと連結し、１６ビットのデータＣを得る。
【００１１】
図３１の場合には、６ステップであったが、図４０に示す場合は、Ｓ２１に示すマスク処理が追加されており、７ステップの処理となる。
【００１２】
図４２は、図３７の処理に対して更に鍵データを用いた変換が追加された場合を示している。
即ち、排他的論理和回路Ｘ４において、変換データ［Ｔ２（Ａ）＋Ｂ’］８４と７ビットの鍵データＫＩ１１１とが排他的論理和演算されている。また、排他的論理和回路Ｘ５において、データＢと９ビットの鍵データＫＩ１１２とが排他的論理和演算されている。
【００１３】
図４３は、図４２の鍵データを用いた場合のソースコードを示している。
まず、Ｓ１において、変換データ［Ｔ２（Ａ）］８１を得る。次に、Ｓ２において、変換データ［Ｔ２（Ａ）＋Ｂ］を得る。次に、Ｓ２１において、データＡを９ビットから７ビットのデータにするために、７ビットのマスク処理を行う。こうして、変換データ［Ｔ２（Ａ）＋Ｂ’］８４が得られる。次に、Ｓ２２において、鍵データＫＩ１１１との排他的論理和演算が行われ、変換データ［Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１］８６を得る。次に、Ｓ２３において、鍵データＫＩ１１２の排他的論理和演算を行い、変換データ［Ｂ＋ＫＩ１１２］８２を得る。次に、Ｓ３において、非線形変換テーブルＴ３により変換データ［Ｔ３（Ｂ＋ＫＩ１１２）］８７を得る。次に、Ｓ４において、データＡとの排他的論理和演算を行い、変換データ［Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１）］８８を得る。そして、Ｓ５において、データＡを左側に９ビットシフトし、Ｓ６において、データＡとデータＢの連結を行い、１６ビットのデータＣを得る。データＣは、変換データ［（Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１））］９９となる。
【００１４】
鍵データを用いる場合には、図４０に示したソースコードに比べてＳ２１とＳ２３とが追加され、９ステップにより非線形変換が行われる。
【００１５】
従来例３．
図４４は、従来の他の非線形変換回路を示す図である。
８ビットのデータＡは、非線形変換テーブルＴ２により変換データ［Ｔ２（Ａ）］８１になる。変換データ［Ｔ２（Ａ）］８１は、排他的論理和回路Ｘ２により変換データ［Ｔ２（Ａ）＋Ｂ’］８４となる。変換データ［Ｔ２（Ａ）＋Ｂ’］８４は、非線形変換テーブルＴ３により変換データ［Ｔ３（Ｔ２（Ａ）＋Ｂ）］９７になる。変換データ［Ｔ３（Ｔ２（Ａ）＋Ｂ）］９７は、排他的論理和回路Ｘ３により変換データ［Ｔ３（Ｔ２（Ａ）＋Ｂ）＋Ａ］９８となる。そして、データＣは、［（Ｔ３（Ｔ２（Ａ）＋Ｂ）＋Ａ）‖（Ｔ２（Ａ）＋Ｂ）］１９９となる。
【００１６】
【発明が解決しようとする課題】
コンピュータに用いられる中央処理装置は、キャッシュメモリ及びメインメモリを用いてデータ処理を行う。キャッシュメモリは、メインメモリに比べて高速なアクセスを行うことができる。従って、前述した非線形変換テーブルは、できるだけキャッシュメモリに常駐できるようにすることが望ましい。キャッシュメモリのサイズが１６キロバイト、或いは、３２キロバイトのように限られている場合には、テーブルサイズが限られてしまう。図３６に示したように、１つのテーブルにより非線形変換を行う場合には、１２８キロバイトのキャッシュメモリサイズが必要になる。１つのテーブルを用いて変換をする場合には、テーブル検索が１回で済み、ハードウェア処理及びソフトウェア処理のいずれの場合においても高速処理が可能になる。しかし、キャッシュメモリのサイズが１２８キロバイト未満の中央処理装置を用いる場合には、図３６に示したような１２８キロバイトという大容量のテーブルをキャッシュメモリに常駐させることはできず、処理が遅くなってしまう。
【００１７】
また、図３０に示したように、ＮビットとＬビットのデータをハードウェアで連結してＭビットのデータ作成する場合には、特別なオペレーションは必要ないが、図３１に示したように、ソフトウェアでＮビットとＬビットのデータを連結する場合には、シフト処理が必要になり、ソフトウェアの処理の高速化が図りにくいという課題がある。
【００１８】
この発明は、非線形変換処理を高速に行えるようにすることを目的とする。また、テーブルサイズを大容量にすることなく、非線形変換テーブルをキャッシュメモリに記憶させることによりテーブルへの高速アクセスを実現することを目的とする。また、非線形変換処理をプログラムで行う場合に、プログラムの処理速度を高速化することを目的とする。
【００１９】
【課題を解決するための手段】
この発明に係る非線形変換方法は、ＮビットのデータＡとＬビットのデータＢとをそれぞれ非線形変換して、Ｍ（Ｍ≠Ｎ，Ｍ≠Ｌ）ビットのデータＣを出力する非線形変換方法において、
ＮビットのデータＡを非線形変換して、Ｍビットの変換データＡとする第１の非線形変換工程と、
ＬビットのデータＢを非線形変換して、Ｍビットの変換データＢとする第２の非線形変換工程と、
上記Ｍビットの変換データＡと上記Ｍビットの変換データＢとを演算してＭビットの変換データＣを出力する演算工程と
を備えたことを特徴とする。
【００２０】
上記非線形変換方法は、Ｍビットの変換データを入力し、Ｍビットの変換データをＮビットのデータとＬビットのデータとに分割して（Ｍ＝Ｌ＋Ｎ）、分割したＮビットのデータとＬビットのデータとを複数段にわたり非線形変換して、非線形変換したＮビットのデータとＬビットのデータとを連結して非線形変換したＭビットとデータを出力する非線形変換方法であることを特徴とする。
【００２１】
上記第１の非線形変換工程と第２の非線形変換工程と演算工程とは、ＮビットのデータとＬビットのデータとをそれぞれ非線形変換する最後の段の代わりに実行することを特徴とする。
【００２２】
上記非線形変換方法は、
第１の非線形変換工程において、非線形変換テーブルを用いてＮビットのデータからＭビットの変換データを生成し、
第２の非線形変換工程において、非線形変換テーブルを用いてＬビットのデータからＭビットの変換データを生成し、
演算工程により上記２つのＭビットの変換データのＭビット演算をしてＭビットのデータを出力することにより、
ＮビットのデータとＬビットのデータとを連結するオペレーションを実行しないことを特徴とする。
【００２３】
この発明に係る非線形変換方法は、Ｎビット＝Ｌビットであり、かつ、Ｍビット＝Ｎビット＋Ｌビットであり、
上記第１の非線形変換工程は、ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データを２つ連結したＭビットの変換データＡを出力し、
上記第２の非線形変換工程は、
ＬビットのデータＢと、
ＬビットのデータＢをＬビットのデータに非線形変換したＬビットの変換データとＬビットのデータＢとを論理演算したＬビットの変換データと
を連結したＭビットの変換データＢを出力することを特徴とする。
【００２４】
上記第１の非線形変換工程は、
ＮビットのデータＡから第１の非線形変換テーブルＴａを用いてＭビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖Ｔａ（Ａ）］（「‖」は連結を示す）を出力し、
上記第２の非線形変換工程は、
ＬビットのデータＢから第２の非線形変換テーブルＴｂを用いてＭビットの変換データＢ［Ｂ＝Ｂ‖（Ｔｂ（Ｂ）＋Ｂ）］（「＋」は排他的論理和演算を示す）を出力し、
上記演算工程は、
上記Ｍビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖Ｔａ（Ａ）］と上記Ｍビットの変換データＢ［Ｂ＝Ｂ‖（Ｔｂ（Ｂ）＋Ｂ）］との排他的論理和演算を行い、Ｍビットの変換データＣ［Ｃ＝（Ｔａ（Ａ）＋Ｂ）‖（Ｔｂ（Ｂ）＋Ｔａ（Ａ）＋Ｂ）］を出力することを特徴とする。
【００２５】
上記第１の非線形変換テーブルＴａと上記第２の非線形変換テーブルＴｂとの少なくともいずれか一方は、鍵データに基づく非線形変換を実行する非線形変換テーブルであることを特徴とする。
【００２６】
この発明に係る非線形変換方法は、Ｎビット＜Ｌビットであり、かつ、Ｍビット＝Ｎビット＋Ｌビットであり、
第１の非線形変換工程は、
ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データと、
（Ｌ−Ｎ）ビットのパディングデータと、
ＮビットのデータＡをＮビットのデータに非線形変換したＮビットの変換データと
を連結したＭビットの変換データＡを出力し、
第２の非線形変換工程は、
ＬビットのデータＢの上位（Ｌ−Ｎ）ビットがトランケートされたＮビットのデータＢ’と、
ＬビットのデータＢをＬビットのデータに非線形変換したＬビットの変換データとＬビットのデータＢとを論理演算したＬビットの変換データと
を連結したＭビットの変換データを出力することを特徴とする。
【００２７】
上記第１の非線形変換工程は、
ＮビットのデータＡから第１の非線形変換テーブルＴａを用いてＭビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖（Ｌ−Ｎ）ビット分の０‖Ｔａ（Ａ）］（「‖」は連結を示す）を出力し、
上記第２の非線形変換工程は、
ＬビットのデータＢから第２の非線形変換テーブルＴｂを用いてＭビットの変換データＢ［Ｂ＝Ｂ’‖（Ｔｂ（Ｂ）＋Ｂ”）］（Ｂ’はＬビットのデータＢの下位Ｎビットのデータを意味する。「＋」は、排他的論理和演算を示す。Ｂ”はＬビットのデータＢの上位（Ｌ−Ｎ）ビット分を０にしたＬビットのデータを示す。）を出力し、
上記演算工程は、
上記Ｍビットの変換データＡ［Ａ＝Ｔａ（Ａ）‖（Ｌ−Ｎ）ビット分の０‖Ｔａ（Ａ）］と上記Ｍビットの変換データＢ［Ｂ＝Ｂ’‖（Ｔｂ（Ｂ）＋Ｂ”）］との排他的論理和演算を行い、Ｍビットの変換データＣ［Ｃ＝（Ｔａ（Ａ）＋Ｂ’）‖（Ｔｂ（Ｂ）＋Ｔａ（Ａ）”＋Ｂ”）］（ここで、Ｔａ（Ａ）”は［（Ｌ−Ｎ）ビット分の０‖Ｔａ（Ａ）］を示す。）を出力することを特徴とする。
【００２８】
上記第１の非線形変換テーブルＴａと上記第２の非線形変換テーブルＴｂとの少なくともいずれか一方は、鍵データに基づく非線形変換を実行する非線形変換テーブルであることを特徴とする。
【００２９】
また、この発明は、上記非線形変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００３０】
また、この発明に係る非線形変換装置は、ＮビットのデータＡを入力してＮビットのデータＡをＭビットのデータに非線形変換して、非線形変換したＭビットのデータをＭビットの変換データＡとして出力する第１の非線形変換回路と、
ＬビットのデータＢを入力してＬビットのデータＢをＭビットのデータに非線形変換して、非線形変換したＭビットのデータをＭビットの変換データＢとして出力する第２の非線形変換回路と、
上記第１の非線形変換回路から出力されたＭビットの変換データＡと、上記第２の非線形変換回路から出力されたＭビットの変換データＢとを論理演算してＭビットの変換データＣを出力する演算器と
を備えたことを特徴とする。
【００３１】
【発明の実施の形態】
実施の形態１．
図１は、この実施の形態の非線形変換方法が用いられる環境を示す図である。この実施の形態の非線形変換は、図１に示した各種の電子機器との間で通信されるデータの暗号化又は復号化に用いることができる。例えば、携帯電話と基地局（ＢＳ）との間の通信、サーバとパーソナルコンピュータ（ＰＣ）との間の通信等に用いられる暗号化、復号化に用いることができる。
【００３２】
図２は、図１に示した各種電子機器の一般的なシステム構成図である。
各種電子機器の内部には、中央処理装置（ＣＰＵ）、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、キーボード（Ｋ／Ｂ）、通信制御装置（ＣＯＭ）、ディスク装置等が設けられている。これらは、バスにより接続されている。また、ＣＰＵは、キャッシュメモリを有しており、キャッシュメモリにあるデータを高速アクセスすることが可能である。また、暗号ユニット１００がバスに接続され、ＣＰＵから供給されるデータの非線形変換を行い、データの暗号化又は復号化を行い、バスを介してデータをＣＰＵに転送する。暗号ユニット１００は、バスに接続されたハードウェアとして実現することもできるが、暗号プログラム１０１によりソフトウェアとして実現することも可能である。暗号プログラム１０１は、ディスク等の記録媒体に記憶されており、ＣＰＵにより読み出され実行されることにより、暗号ユニット１００と同一の機能を提供することができる。
【００３３】
図３は、暗号ユニット１００の構成図である。
暗号ユニット１００は、非線形変換回路ＦＯを８段縦続接続したものである。
【００３４】
図４は、非線形変換回路ＦＯ１の構成図である。
非線形変換回路ＦＯ２〜非線形変換回路ＦＯ８も、非線形変換回路ＦＯ１と同じ構成である。非線形変換回路ＦＯ１は、非線形変換回路ＦＩ１から非線形変換回路ＦＩ３までを３つ縦続接続したものである。
【００３５】
図３と図４は、ともに左入力データに第１の非線形変換をし、該第１の非線形変換された変換データと、上記右入力データとの排他的論理和を第１の右中間データとして出力し、かつ、上記右入力データを第１の左中間データとして出力する第１の副変換処理部と、上記第１の左中間データを入力し、第２の非線形変換をし、該第２の非線形変換された変換データと、上記第１の右中間データとの排他的論理和を第２の右中間データとして出力し、かつ、上記第１の右中間データを第２の左中間データとして出力する第２の副変換処理部とを備え、上記第１の副変換処理部を１段とし、上記第２の副変換処理部を次の１段として交互にｎ段（図においては、３段）接続して、第１から第ｎの副変換処理部を形成し、非線形変換を行い、第ｎの副変換処理部から出力される左中間データと右中間データを、データ変換されたＡデータとＢデータとして出力することを特徴とするデータ変換装置を示している。このデータ変換装置は、第１の副変換処理部の非線形変換処理の終了以前に、第２副変換処理部の非線形変換処理を開始するものである。
【００３６】
図５は、非線形変換回路ＦＩ１の構成図である。図５は、図２９と同じ処理結果を得るものである。
非線形変換回路ＦＩ２と非線形変換回路ＦＩ３も、非線形変換回路ＦＩ１と同じ構成である。
図５において、数値「８」，「１６」は、ビット数を示している。
１６ビット（Ｍ＝１６）のデータは、８ビット（Ｌビット）のデータと８ビット（Ｎビット）のデータに分割される（Ｍ＝Ｌ＋Ｎ，Ｌ＝Ｎ）。非線形変換テーブルＴ１は、８ビットのデータを入力して非線形変換を施し、８ビットのデータを出力する。この８ビットのデータに対して排他的論理和回路Ｘ１において、８ビット（Ｎビット）のデータＡで排他的論理和演算を行うことにより、８ビット（Ｌビット）のデータＢが生成される。ここでは、データＡもデータＢも８ビットのデータである。非線形変換テーブルＴ４は、８ビットのデータＡを入力して非線形変換を行い、１６ビットのデータを出力する。非線形変換テーブルＴ５は、８ビットのデータＢを入力して非線形変換を行い、１６ビットのデータを出力する。排他的論理和回路Ｘ９は、非線形変換テーブルＴ４から出力された１６ビットのデータと非線形変換テーブルＴ５から出力された１６ビットのデータとの排他的論理和演算を行い、１６ビット（Ｍビット）のデータＣを出力する。
【００３７】
図６は、非線形変換テーブルＴ４の構成図である。
非線形変換テーブルＴ４は、２つの非線形変換テーブルＴ２を連結したものである。非線形変換テーブルＴ２は、データＡを入力してデータＡに対して非線形変換を行い、変換データ［Ｔ２（Ａ）］６６を出力するものである。従って、非線形変換テーブルＴ４は、データＡを入力して変換データ［Ｔ２（Ａ）‖Ｔ２（Ａ）］６１を出力する。ここで、「‖」は、連結を示す。以下、同じ。
非線形変換テーブルＴ４のサイズは、２8 ×１６ビット＝５１２バイトとなる。
【００３８】
図７は、非線形変換テーブルＴ５の構成図である。
非線形変換テーブルＴ５は、テーブルＴ６と非線形変換テーブルＴ７を連結したものである。テーブルＴ６は、図８に示すように、０〜２５５までのデータＢが記憶されたテーブルである。非線形変換テーブルＴ７は、図９に示すように、非線形変換テーブルＴ３とテーブルＴ６を用いて生成することができる。テーブルＴ６は、図８に示したものと同じテーブルである。非線形変換テーブルＴ３は、データＢを入力し、データＢを非線形変換し、変換データ［Ｔ３（Ｂ）］６４を出力するテーブルである。この非線形変換テーブルＴ３とテーブルＴ６のテーブルを排他的論理和演算を行った結果生成されるのが、非線形変換テーブルＴ７である。この結果、非線形変換テーブルＴ７には、変換データ［Ｔ３（Ｂ）＋Ｂ］６５が記憶されていることになる。ここで、「＋」は、排他的論理和演算を意味する。以下、同じ。図７に示したように、非線形変換テーブルＴ５は、データＢを入力し、変換データ［Ｂ‖（Ｔ３（Ｂ）＋Ｂ）］６３を出力するものである。
非線形変換テーブルＴ５のテーブルサイズは、２8 ×１６ビット＝５１２バイトとなる。
【００３９】
図１０は、図５に示した８ビット（Ｎ＝８）のデータＡと８ビット（Ｌ＝８，Ｌ＝Ｎ）のデータＢの非線形変換を行う仮想のプログラミング言語によるプログラムソースコードである。Ｆで示された枠内の３ステップ（Ｓ１〜Ｓ３の左側）がプログラムソースコードである。Ｓ１〜Ｓ３の右側は、各ステップの意味を示す記述であり、プログラムソースコードではない（以下、同じ）。
Ｓ１において、非線形変換テーブルＴ４によりデータＡを非線形変換し、変換データ［Ｔ２（Ａ）‖Ｔ２（Ａ）］６１を得る。Ｓ２において、データＢを非線形変換テーブルＴ５において非線形変換し、変換データ［Ｂ‖（Ｔ３（Ｂ）＋Ｂ）］６３を得る。Ｓ３において、データＡとデータＢの排他的論理和演算を行い、１６ビット（Ｍ＝１６，Ｍ＝Ｌ＋Ｎ）のデータＣを得る。データＣは、変換データ［（Ｔ２（Ａ）＋Ｂ）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）＋Ｂ）］６９となる。
図３１に示した場合は、６ステップ必要であったが、図１０に示す場合は、３ステップとなる。図１０においては、非線形変換テーブルが１６ビットの変換データを出力するので、図３１のＳ５に示すシフト処理が不要になる。また、図３１のＳ２とＳ４に示した８ビットの排他的論理和演算も不要になる。
【００４０】
図１１は、図１０に示した３ステップをＦとした場合、このＦを入れ子構造にしたプログラムを示す図である。
Ｆの前後にプリプロセス３とホストプロセス３を実行することにより、非線形変換回路ＦＩと同一の処理を実行することができる。この非線形変換回路ＦＩと同一の処理を変数Ｌ２を用いて３回実行することにより、図４に示した非線形変換回路ＦＩ１、非線形変換回路ＦＩ２、非線形変換回路ＦＩ３と同一の処理を実行することができる。そして、プリプロセス２とホストプロセス２を実行することにより、非線形変換回路ＦＯと同一の処理を実行することができる。そして、変数Ｌ１により非線形変換回路ＦＯと同一の処理を８回実行することにより、非線形変換回路ＦＯ１から非線形変換回路ＦＯ８までの処理と同一の処理を実行することができる。このように、図１０に示したＦは、３重のループ処理の中で２４回実行されるものである。従って、図１０に示したプログラムのステップ数を１ステップ減少させるということは、２４ステップ減少させることに等しくなる。即ち、プログラムの高速化が図れる。
【００４１】
図１２は、図２９と図３１で用いたテーブルのサイズと図５と図１０で用いたテーブルのサイズとの比較図である。
非線形変換テーブルＴ４は、非線形変換テーブルＴ２の２倍のサイズになり、非線形変換テーブルＴ５は、非線形変換テーブルＴ３の２倍のサイズになる。そして、３テーブルのトータルのテーブルサイズは、従来が７８６バイトであったのに対して、この実施の形態では１２８０バイトとなる。キャッシュメモリのサイズが３２キロバイト程度である場合には、この程度のテーブルサイズの増加は何ら問題とならず、全てのテーブルをキャッシュメモリに常駐させることができる。
【００４２】
図５に示す構成は、図２９に示す構成の代わりに用いることができる。図５に示す構成は、データＣの上位８ビットが［Ｔ２（Ａ）＋Ｂ］であり、データＡとデータＢとの分離変換が可能である。また、データＣの下位８ビットが［Ｔ３（Ｂ）＋Ｔ２（Ａ）＋Ｂ］であり、データＡとデータＢとの分離変換が可能である。即ち、データＡから［Ｔ２（Ａ）‖Ｔ２（Ａ）］を生成すればよい。また、データＢから［Ｂ‖（Ｔ３（Ｂ）＋Ｂ）］を生成すればよい。
このように、データＢを無視してデータＡのみの分離変換をするのが非線形変換テーブルＴ４である。また、データＡを無視してデータＢのみの分離変換をするのが非線形変換テーブルＴ５である。
一方、図５に示す構成は、図４４に示す構成の代わりに用いることはできない。なぜなら、データＣの上位８ビットが［Ｔ３（Ｔ２（Ａ）＋Ｂ）＋Ａ］であり、データＡとデータＢの分離変換ができないからである。即ち、非線形変換テーブルＴ３には、［Ｔ２（Ａ）＋Ｂ］を入力させる必要があり、非線形変換テーブルＴ３の変換をデータＡの変換とデータＢの変換に分離できないからである。
【００４３】
実施の形態２．
図１３は、図５に示した非線形変換回路ＦＩ１の他の構成を示す図である。図１３は、図３７と同じ処理結果を得るものである。
暗号ユニット１００及び非線形変換回路ＦＯ１から非線形変換回路ＦＯ８の構成は、図３，図４と同じである。また、非線形変換回路ＦＩ２と非線形変換回路ＦＩ３は、非線形変換回路ＦＩ１と同じ構成である。図１３に示す非線形変換回路ＦＩ１は、１６ビット（Ｍビット）のデータを９ビット（Ｌビット）のデータと７ビット（Ｎビット）のデータに分割して非線形変換を行うものである（Ｍ＝Ｌ＋Ｎ，Ｌ＞Ｎ）。
【００４４】
図１４は、非線形変換テーブルＴ４の構成図である。
非線形変換テーブルＴ４は、非線形変換テーブルＴ２’と非線形変換テーブルＴ２を連結したものである。
【００４５】
図１５は、非線形変換テーブルＴ４の詳細図である。
非線形変換テーブルＴ４は、非線形変換テーブルＴ２’と非線形変換テーブルＴ２から生成される。非線形変換テーブルＴ２は、１レコードが８ビットで構成されており、上位１ビットには、０がパディングされている。非線形変換テーブルＴ２は、７ビットのデータを入力し、８ビットのデータを出力するテーブルである。非線形変換テーブルＴ４は、１レコードを１６ビットにしたテーブルである。非線形変換テーブルＴ４は、１６ビットの後ろ８ビットに、非線形変換テーブルＴ２の８ビットのデータをそのまま用いる。また、１６ビットの上位７ビットに、非線形変換テーブルＴ２の下位７ビットを用いている。更に、非線形変換テーブルＴ４の１６ビットデータの上位から８ビット目は、非線形変換テーブルＴ２の上位１ビット目のパディングされた０を配置している。即ち、非線形変換テーブルＴ２’は、非線形変換テーブルＴ２をサイクリックに１ビット左側にローテーションシフトさせたものである。
図１４に示すように、非線形変換テーブルＴ４は、データＡを入力し、２ビット（９−７ビット＝Ｌ−Ｎビット）の０が挿入された変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］６７を出力する。
非線形変換テーブルＴ４のテーブルサイズは、２7 ×１６ビット＝２５６キロバイトである。
【００４６】
図１６は、非線形変換テーブルＴ５の構成図である。
非線形変換テーブルＴ５は、テーブルＴ６’と非線形変換テーブルＴ７’を連結したものである。
【００４７】
図１７は、テーブルＴ６と非線形変換テーブルＴ７から非線形変換テーブルＴ５を生成する図である。
テーブルＴ６は、９ビットのデータＢを記録したテーブルである。テーブルＴ６の上位７ビットには、０がパディングしてある。非線形変換テーブルＴ７は、変換データ［Ｔ３（Ｂ）＋Ｂ”］１６５を記録したテーブルである。ここで、データＢ”は、データＢの上位２ビット（Ｌ−Ｎビット）を０にしたものである。非線形変換テーブルＴ７の上位７ビットには、０がパディングしてある。図１７に示した非線形変換テーブルＴ７は、図９の変換テーブルＴ６の代わりとなるデータＢ”のテーブルと図９の変換テーブルＴ３とを用いて、図９に示した方法と同じ方法で作成することができる。異なる点は、図９が８ビットデータを用いている点に対して、図１７の非線形変換テーブルＴ７を生成する場合には、有効ビット数が９ビットのデータ（即ち、７ビットの０が上位にパディングされている１６ビットのデータ）を用いている点である。
テーブルＴ６の下位７ビットをテーブルＴ６’として非線形変換テーブルＴ５の上位７ビットに配置する。また、非線形変換テーブルＴ７の下位９ビットを非線形変換テーブルＴ７’として非線形変換テーブルＴ５の下位９ビットに配置する。このようにして、テーブルＴ６’と非線形変換テーブルＴ７’から非線形変換テーブルＴ５が生成される。非線形変換テーブルＴ５の上位７ビットは、データＢの上位２ビット（９−７ビット＝Ｌ−Ｎビット）を削除（トランケート）した下位７ビット（Ｎビット）のみのデータであり、このデータＢの下位７ビットのデータを７ビットデータＢ’とする。図１６に示すように、非線形変換テーブルＴ５は、データＢを入力し、１６ビットの変換データ［Ｂ’‖（Ｔ３（Ｂ）＋Ｂ”）］１６３を出力する。
非線形変換テーブルＴ５のテーブルサイズは、２9 ×１６ビット＝１キロバイトである。
【００４８】
図１８は、７ビット（Ｎ＝７）のデータＡと９ビット（Ｌ＝９，Ｌ＞Ｎ）のデータＢの非線形変換を行うプログラムのソースコードを示す図である。
Ｓ１において、非線形変換テーブルＴ４を用いてデータＡを非線形変換し、変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］６７を得る。Ｓ２において、非線形変換テーブルＴ５を用いてデータＢを非線形変換し、変換データ［Ｂ’‖（Ｔ３（Ｂ）＋Ｂ”）］１６３を得る。Ｓ３において、データＡとデータＢの排他的論理和演算を行い、１６ビット（Ｍ＝１６，Ｍ＝Ｌ＋Ｎ）のデータＣを得る。データＣは、変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”）］１６９である。ここで、Ｔ２（Ａ）”は、２ビット（Ｌ−Ｎビット）の０とＴ２（Ａ）とを連結した９ビットのデータ［００‖Ｔ２（Ａ）］を示す。
【００４９】
図１９は、非線形変換テーブルＴ４から得られた変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］６７と非線形変換テーブルＴ５から得られた変換データ［Ｂ’‖（Ｔ３（Ｂ）＋Ｂ”）］１６３をＳ３により排他的論理和演算を行い、変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”）］１６９を得る場合を示している。
変換データ［Ｔ３（Ｂ）＋Ｂ”］１６５と上位２ビットに０がおかれた変換データ［Ｔ２（Ａ）］６６とが排他的論理和演算され、変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］７３となる。また、データＢから上位２ビットを削除した７ビットデータＢ’と変換データ［Ｔ２（Ａ）］６６との排他的論理和演算が行われ、変換データ［Ｔ２（Ａ）＋Ｂ’］７１が得られる。
【００５０】
図１８に示す場合も、３ステップで処理が完了するので、処理の高速化が図れる。図１８の場合は、図１０の場合に比べて、更に、非線形変換テーブルＴ５が９ビットデータＢをマスクした７ビットデータＢ’を出力するので、図４０のＳ２１に示した７ビットマスク処理が不要になる。
【００５１】
実施の形態３．
図２０は、暗号ユニット１００の他の例を示す図である。
暗号ユニット１００は、鍵生成部１１０を有している。鍵生成部１１０は、非線形変換回路ＦＯと非線形変換回路ＦＩに必要な鍵データＫＯと鍵データＫＩを生成して出力する。
【００５２】
図２１は、鍵生成部１１０の鍵データＫＩの生成手順を示す図である。
鍵生成部１１０は、１２８ビットの鍵データＫから１６ビットの鍵データＫ１から鍵データＫ８の８つの鍵データを作り出し、鍵スケジュールに則り、１６ビットの８つの鍵データＫ１’から鍵データＫ８’を生成する。
一方、鍵データＫＩ１から鍵データＫＩ８は、図２０に示すように、非線形変換回路ＦＯ１から非線形変換回路ＦＯ８に配布される。更に、鍵データＫＩ１は、鍵データＫＩ１１、鍵データＫＩ１２、鍵データＫＩ１３に分割され、図２２に示すように、非線形変換回路ＦＩ１、非線形変換回路ＦＩ２、非線形変換回路ＦＩ３に配布される。そして、鍵データＫＩ１１は、データＡと排他的論理和演算が行われる鍵データＫＩ１１１とデータＢと排他的論理和演算が行われる鍵データＫＩ１１２に分割される。図２１に示す鍵データＫＩ１１から鍵データＫＩ８３は、１６ビットの鍵であり、合計２４の鍵データである。それに対して、生成された鍵データは、鍵データＫ１’から鍵データＫ８’までの８つの鍵データである。この８つの鍵データは、２４個の鍵データに重複して用いられる。例えば、図２１において、鍵データＫ１’は、鍵データＫＩ１１と鍵データＫＩ８２の両方に用いられている。
このように、鍵の配布先は、鍵生成部１１０により定められており、かつ、その種類は８種類である。従って、鍵データが含まれているテーブルを８種類用意しておき、いずれか１つのテーブルを選択して使用することにより、鍵データが反映された非線形変換を行うことが可能になる。例えば、図２１において、鍵データＫ１’は、鍵データＫＩ１１に用いられており、図２２の非線形変換回路ＦＩ１には、鍵データＫＩ１１が配布されている。従って、非線形変換回路ＦＩ１１の非線形変換処理に用いるテーブルは、鍵データＫ１’から鍵データＫ８’までの鍵データがそれぞれ反映された８種類のテーブルの中から鍵データＫ１’が反映されたテーブルを選択して、非線形変換を行えばよい。また、図２１において、鍵データＫ３’は、鍵データＫＩ１２に用いられており、図２２において、非線形変換回路ＦＩ２には、鍵データＫＩ１２が配布されているので、非線形変換回路ＦＩ２における非線形変換を実施する場合には、鍵データＫ３’が反映されたテーブルを選択して、非線形変換を行えばよい。
【００５３】
図２２の非線形変換回路ＦＩ１は、任意の２つのＡ入力データとＢ入力データに対し、上記Ａ入力データを第１の鍵パラメータ１１１で第１の非線形変換をし、該第１の非線形変換された出力データと上記Ｂ入力データとの排他的論理和を第１のＡ中間データとして出力し、上記Ｂ入力データを第１のＢ中間データとして出力する第１の副変換処理部１２１と、上記第１のＢ中間データを第２の鍵パラメータ１１２で第２の非線形変換をし、該第２の非線形変換された出力データと上記第１のＡ中間データとの排他的論理和を第２のＢ中間データとして出力し、上記第１のＡ中間データを第２のＡ中間データとして出力する第２の副変換処理部１２２とをｎ段（図では、３段）備えたデータ変換装置を示している。
【００５４】
図２３は、鍵データＫ１’から鍵データＫ８’までの８つの鍵データの下位９ビットがそれぞれ反映された非線形変換テーブルＴ５１から非線形変換テーブルＴ５８の８つのテーブルが用意された非線形変換回路ＦＩ１（ＦＩ２，ＦＩ３）を示す図である。
図２３は、図４２に示した回路と同一の非線形変換結果を得るものである。
非線形変換テーブルＴ４は、実施の形態２に示したものと同一のものである。非線形変換テーブルＴ５１は、鍵データＫ１’の下位９ビットを反映した非線形変換データを出力するテーブルである。同様に、非線形変換テーブルＴ５２〜非線形変換テーブルＴ５８は、鍵データＫ２’から鍵データＫ８’の下位９ビットをそれぞれ反映した非線形変換データを出力するテーブルである。図２３において、非線形変換テーブルＴ４は、データＡを入力し、変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］６７を出力する。そして、図２３に示す非線形変換回路ＦＩが鍵データＫＩ１１を入力する非線形変換回路ＦＯ１の非線形変換回路ＦＩ１である場合には、非線形変換テーブルＴ５１を選択し、非線形変換テーブルＴ５１によりデータＢを入力して変換データ［Ｂ’‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｂ”）］７６を出力する。排他的論理和回路Ｘ９により変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］６７と変換データ［Ｂ’‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｂ”）］７６との排他的論理和演算を行い、変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”）］７８を得る。そして、排他的論理和回路Ｘ８により変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”）］７８と鍵データ［ＫＩ１１１‖００‖ＫＩ１１１］（データＤ）との排他的論理和演算を行い、変換データ［（Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１））］７９を得る。
【００５５】
図２４は、データＡとデータＢとの非線形変換を行うソースプログラムを示す図である。
まず、Ｓ０において、変数Ｊにいずれの鍵データを用いるかを示す値を代入する。即ち、鍵データＫ１’から鍵データＫ８’のいずれの鍵データがこの非線形変換回路ＦＩにおいて用いられるかを示す値を代入する。ここでは、非線形変換回路ＦＯ１の非線形変換回路ＦＩ１が鍵データＫ１’を用いるものとしてＪに１を代入している。次に、Ｓ１において、データＡを非線形変換テーブルＴ４により非線形変換し、変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］６７を得る。次に、Ｓ２において、非線形変換テーブルＴ５１を用いてデータＢの非線形変換を行い、変換データ［Ｂ’‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｂ”）］７６を得る。次に、Ｓ３において、データＡとデータＢの排他的論理和演算を行い、変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”）］７８を得る。次に、Ｓ４において、データＣと鍵データ［ＫＩ１１１‖００‖ＫＩ１１１］（データＤ）の排他的論理和演算を行い、変換データ［（Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１））］７９を得る。
【００５６】
実施の形態４．
図２５は、図２３に示した非線形変換回路ＦＩの他の構成を示す図である。図２５は、図４２と同じ処理結果を得るものである。
図２５においては、図２３の非線形変換テーブルＴ４と排他的論理和回路Ｘ８の代わりに、非線形変換テーブルＴ４１から非線形変換テーブルＴ４８を用いる場合を示している。非線形変換テーブルＴ４１は、鍵データＫ１’の上位７ビットを反映した非線形変換データを出力する。同様に、非線形変換テーブルＴ４２から非線形変換テーブルＴ４８は、鍵データＫ２’から鍵データＫ８’の上位７ビットを反映した非線形変換データを出力する。
【００５７】
図２６は、図２５のデータＡとデータＢとを非線形変換するソースプログラムを示す図である。
まず、Ｓ０において、Ｊに１を代入する。ここでは、図２５に示す非線形変換回路ＦＩが非線形変換回路ＦＯ１の非線形変換回路ＦＩ１に対して、鍵データＫ１’を用いて非線形変換する場合を示している。次に、Ｓ１において、非線形変換テーブルＴ４１を用いてデータＡを変換データ［（Ｔ２（Ａ）＋ＫＩ１１１）‖００‖（Ｔ２（Ａ）＋ＫＩ１１１）］７７に変換する。次に、Ｓ２において、非線形変換テーブルＴ５１を用いてデータＢを変換データ［Ｂ’‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｂ”）］７６に変換する。次に、Ｓ３において、データＡとデータＢの排他的論理和演算を行い、データＣを出力する。データＣは、変換データ［（Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１））］７９である。
【００５８】
図２７は、実施の形態２，３，４に用いたテーブルのテーブルサイズと図３７に示したテーブルのテーブルサイズとの比較図である。
実施の形態２の合計テーブルサイズは、従来とほとんど変わらない。また、実施の形態３に示した場合は、８個のキーデータに対応した８個のテーブルを設けるため、合計テーブルサイズが約９キロバイトになっている。また、実施の形態４の場合には、８個の鍵データに対して、それぞれテーブルを２つずつ設け、１６個のテーブルが必要となるため、合計１７キロバイトのテーブルサイズが必要となる。いずれの場合も、３２キロバイトのキャッシュメモリがあれば全てのテーブルをキャッシュメモリに常駐させることができる。
なお、実施の形態３及び実施の形態４において、鍵データの種類が８個ではなく、１６個や３２個とを増加した場合には、その増加数に従ってテーブルの数も増やさなければならず、キャッシュメモリサイズをオーバーしてしまう場合もある。そのような場合には、実施の形態４ではなく、実施の形態３のように、鍵データを全てテーブルに反映するのではなく、鍵データの一部分をテーブルに反映するような形にして、全てのテーブルをキャッシュメモリに常駐させるようにすればよい。
【００５９】
図２８は、前述した実施の形態の非線形変換を多段接続したものである。（ａ）に、この実施の形態の多段縦続接続した場合の一例（２段縦続接続の場合）を示している。（ｂ）の場合は、（ａ）と等価な場合であって、従来の４段縦続接続による非線形変換の場合を示している。
従来の２段の縦続接続をまとめて１段の変換にすることができる。
【００６０】
【発明の効果】
前述した実施の形態１から実施の形態４によれば、非線形変換処理を高速に行うことができる。特に、非線形変換処理をソフトウェア（プログラム）により行う場合には、ステップ数を減少させることができ、高速処理を行うことができる。
【００６１】
また、マスク処理をしたテーブルを用いているので、プログラムでマスク処理を行う必要がない。
【００６２】
また、テーブルを検索することにより、最終的に出力するビット数と同一ビット数の非線形変換データを非線形変換テーブルから出力しているので、データの連結処理を行う必要がない。
【００６３】
また、全ての非線形変換テーブルをキャッシュメモリに配置することができ、高速なテーブル検索を行うことができる。
【図面の簡単な説明】
【図１】  実施の形態１の非線形変換が用いられる環境を示す図。
【図２】  実施の形態１の非線形変換が動作する構成図。
【図３】  暗号ユニット１００の構成図。
【図４】  非線形変換回路ＦＯ１の構成図。
【図５】  非線形変換回路ＦＩ１の構成図。
【図６】  非線形変換テーブルＴ４の構成図。
【図７】  非線形変換テーブルＴ５の構成図。
【図８】  テーブルＴ６の構成図。
【図９】  非線形変換テーブルＴ７の構成図。
【図１０】  プログラムのソースコードを示す図。
【図１１】  暗号プログラム１０１の概略構成図。
【図１２】  テーブルサイズの比較図。
【図１３】  実施の形態２のＦＩ１の構成図。
【図１４】  非線形変換テーブルＴ４の構成図。
【図１５】  非線形変換テーブルＴ４の詳細図。
【図１６】  非線形変換テーブルＴ５の構成図。
【図１７】  非線形変換テーブルＴ５の詳細図。
【図１８】  プログラムのソースコードを示す図。
【図１９】  データＡとデータＢの演算を示す図。
【図２０】  実施の形態３の暗号ユニット１００の構成図。
【図２１】  鍵生成部１１０の動作図。
【図２２】  非線形変換回路ＦＯ１の構成図。
【図２３】  非線形変換回路ＦＩの構成図。
【図２４】  プログラムのソースコードを示す図。
【図２５】  実施の形態４の非線形変換回路ＦＩを示す図。
【図２６】  プログラムのソースコードを示す図。
【図２７】  テーブルサイズの比較図。
【図２８】  その他の実施の形態を示す図。
【図２９】  従来例１の非線形変換回路を示す図。
【図３０】  図２９のＹ部分の拡大図。
【図３１】  従来のプログラムのソースコードを示す図。
【図３２】  データＡとデータＢの連結動作を示す図。
【図３３】  テーブルサイズの説明図。
【図３４】  テーブルサイズの説明図。
【図３５】  テーブルサイズの説明図。
【図３６】  テーブルサイズの説明図。
【図３７】  従来例２の非線形変換回路を示す図。
【図３８】  非線形変換テーブルＴ１の構成図。
【図３９】  非線形変換テーブルＴ２の構成図。
【図４０】  従来のプログラムのソースコードを示す図。
【図４１】  従来の動作を説明する図。
【図４２】  従来の非線形変換回路を示す図。
【図４３】  従来のプログラムのソースコードを示す図。
【図４４】  従来の非線形変換回路を示す図。
【符号の説明】
６１  変換データ［Ｔ２（Ａ）‖Ｔ２（Ａ）］、６３  変換データ［Ｂ‖（Ｔ３（Ｂ）＋Ｂ）］、６４  変換データ［Ｔ３（Ｂ）］、６５  変換データ［Ｔ３（Ｂ）＋Ｂ］、６６  変換データ［Ｔ２（Ａ）］、６７  変換データ［Ｔ２（Ａ）‖００‖Ｔ２（Ａ）］、６９  変換データ［（Ｔ２（Ａ）＋Ｂ）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）＋Ｂ）］、７１  変換データ［Ｔ２（Ａ）＋Ｂ’］、７３  変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］、７６  変換データ［Ｂ’‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｂ”）］、７７  変換データ［（Ｔ２（Ａ）＋ＫＩ１１１）‖００‖（Ｔ２（Ａ）＋ＫＩ１１１）］、７８  変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”）］、７９  変換データ［（Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１））］、８１  変換データ［Ｔ２（Ａ）］、８３  変換データ［Ｔ３（Ｂ）］、８４  変換データ［Ｔ２（Ａ）＋Ｂ’］、８５変換データ［Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”］、８６  変換データ［Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１］、８７  変換データ［Ｔ３（Ｂ＋ＫＩ１１２）］、８８  変換データ［Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１）］、８９  変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”）］、９９  変換データ［（Ｔ２（Ａ）＋Ｂ’＋ＫＩ１１１）‖（Ｔ３（Ｂ＋ＫＩ１１２）＋Ｔ２（Ａ）”＋Ｂ”＋（００‖ＫＩ１１１））］、１００  暗号ユニット、１０１  暗号プログラム、１１０  鍵生成部、１６３  変換データ［Ｂ’‖（Ｔ３（Ｂ）＋Ｂ”）］、１６５  変換データ［Ｔ３（Ｂ）＋Ｂ”］、１６９  変換データ［（Ｔ２（Ａ）＋Ｂ’）‖（Ｔ３（Ｂ）＋Ｔ２（Ａ）”＋Ｂ”）］、Ａ，Ｂ，Ｃ  データ、Ｂ’  ７ビットデータ、Ｄ  鍵データ［ＫＩ１１１‖００‖ＫＩ１１１］、ＦＩ，ＦＯ  非線形変換回路、ＫＩ，ＫＯ  鍵データ、Ｔ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５，Ｔ７，Ｔ８，Ｔ９  非線形変換テーブル、Ｔ６  テーブル、Ｘ  排他的論理和回路。
【図１】
0003917357.tif 000002
【図２】
0003917357.tif 000003
【図３】
0003917357.tif 000004
【図４】
0003917357.tif 000005
【図５】
0003917357.tif 000006
【図６】
0003917357.tif 000007
【図７】
0003917357.tif 000008
【図８】
0003917357.tif 000009
【図９】
0003917357.tif 000010
【図１０】
0003917357.tif 000011
【図１１】
0003917357.tif 000012
【図１２】
0003917357.tif 000013
【図１３】
0003917357.tif 000014
【図１４】
0003917357.tif 000015
【図１５】
0003917357.tif 000016
【図１６】
0003917357.tif 000017
【図１７】
0003917357.tif 000018
【図１８】
0003917357.tif 000019
【図１９】
0003917357.tif 000020
【図２０】
0003917357.tif 000021
【図２１】
0003917357.tif 000022
【図２２】
0003917357.tif 000023
【図２３】
0003917357.tif 000024
【図２４】
0003917357.tif 000025
【図２５】
0003917357.tif 000026
【図２６】
0003917357.tif 000027
【図２７】
0003917357.tif 000028
【図２８】
0003917357.tif 000029
【図２９】
0003917357.tif 000030
【図３０】
0003917357.tif 000031
【図３１】
0003917357.tif 000032
【図３２】
0003917357.tif 000033
【図３３】
0003917357.tif 000034
【図３４】
0003917357.tif 000035
【図３５】
0003917357.tif 000036
【図３６】
0003917357.tif 000037
【図３７】
0003917357.tif 000038
【図３８】
0003917357.tif 000039
【図３９】
0003917357.tif 000040
【図４０】
0003917357.tif 000041
【図４１】
0003917357.tif 000042
【図４２】
0003917357.tif 000043
【図４３】
0003917357.tif 000044
【図４４】
0003917357.tif 000045