データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体
【課題】Sボックス変換部の構成を、安全性を保持しつつ簡単な構成とする。
【解決手段】データを非線形変換する非線形データ変換部のSボックス変換部21は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換部18と、部分体変換部18に接続される線形変換部85,87(アフィン変換部)であって、変換するGF(2n)上のデータをGF(2)nの元とみなして、GF(2n)上のデータをGF(2)n上のデータに変換するGF(2)上のベクトル空間GF(2)nの線形変換部85,87(アフィン変換部)とを備えた。
【解決手段】データを非線形変換する非線形データ変換部のSボックス変換部21は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換部18と、部分体変換部18に接続される線形変換部85,87(アフィン変換部)であって、変換するGF(2n)上のデータをGF(2)nの元とみなして、GF(2n)上のデータをGF(2)n上のデータに変換するGF(2)上のベクトル空間GF(2)nの線形変換部85,87(アフィン変換部)とを備えた。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報通信等において、デジタル情報を保護する暗号化と復号及びデータ拡散等のためのデータ変換装置とデータ変換方法及びデータ変換方法を記録した記録媒体に関するものである。
【背景技術】
【0002】
図25は、「現代暗号理論」(社団法人電子情報通信学会、平成9年11月15日発行、46頁)に記載された従来のDES暗号に用いられる暗号関数を示す図である。
【0003】
図25に示すように、8個のSボックスが設けられている。この8個のSボックスは、それぞれ異なるテーブルである。各テーブルは、6ビットの入力データから4ビットの出力データを出力するものである。
【0004】
図26は、「Specification of E2 − a 128−bit Block Cipher」(Nippon Telegraph and Telephone Corporaion,June 14,1998、10頁)に記載された非線形変換関数を示す図である。
【0005】
図26に示すように、各S関数部には、8個のSボックスが設けられている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Bruce Schneier,「Description of a New Variable−Lengh Key, 64−Bit Block Cipher (Blowfish)」, Lecture Notes in Computer Science, Vol.809, p.191−204, 1994年7月21日JICST受入,引用非特許03−004170
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来の暗号装置においては、複数のSボックスが設けられている。ある暗号では、それぞれ異なるテーブルが用意されているため、記憶容量が1つのSボックスを使う場合に比べて増大し、また、別の暗号では、1つのSボックスしか使っていないため、安全性が低下するという問題がある。
【0008】
また、図7に示すように、暗号化部にデータ正変換部(FL)250を設けた場合には、復号部にデータ逆変換部(FL-1)270を設けなければ復号することができない。データ正変換部(FL)250とデータ逆変換部(FL-1)270は、一般には、異なる回路であるため、暗号化部と復号部を同一の構成にすることができないという課題があった。
【0009】
また、拡大鍵を生成する場合に、より安全性の高い拡大鍵を生成するために複雑なオペレーションが必要であった。また、拡大鍵を生成するに当たり、初期値として入力される鍵データのビット数が一定値でなければならないという課題があった。
【0010】
この発明は、暗号化用と復号用の回路を同一にするとともに、非線形関数計算のために用いられる回路規模、プログラムサイズ、メモリ容量を削減し、拡大鍵を生成する場合に、簡単な構成で生成できるシステムを提供することを目的とする。
【課題を解決するための手段】
【0011】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、データ変換を行うデータを第1のデータ(L)と第2のデータ(R)に分割してデータ変換するとともに、
上記データ処理部は、
第1のデータ(L)を変換するデータ正変換部(FL)と、
第2のデータ(R)を上記データ正変換部(FL)の変換とは逆の変換をするデータ逆変換部(FL-1)と
を備えたことを特徴とする。
【0012】
上記データ処理部は、第1の入力と第2の入力と、第1の出力と第2の出力とを有し、
上記データ正変換部(FL)は、変換したデータをデータ処理部の第1の入力へ出力し、
上記データ逆変換部(FL-1)は、データ処理部の第2の出力から出力されたデータを変換して出力することを特徴とする。
【0013】
上記データ処理部は、第1の入力と第2の入力と、第1の出力と第2の出力とを有し、
上記データ正変換部(FL)は、変換したデータをデータ処理部の第2の入力へ出力し、
上記データ逆変換部(FL-1)は、データ処理部の第1の出力から出力されたデータを変換して出力することを特徴とする。
【0014】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、データを非線形変換する非線形変換部を備え、
非線形変換部は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換部(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換部(s2)と
を備えたことを特徴とする。
【0015】
上記第1変換部(s1 )は、変換テーブルTにデータy1 を入力してデータs1 (y1)を出力させ、このデータをデータz1 =s1 (y1 )として出力し、
上記第2変換部(s2 )は、変換テーブルTにデータy2 を入力してデータs1 (y2)を出力させ、データs1 (y2 )を巡回シフト処理したデータ(rot(s1 (y2)))をデータz2 =rot(s1 (y2 ))として出力することを特徴とする。
【0016】
上記データ処理部は、更に、
変換するデータの第1部分データと第2部分データとは異なる一部分のデータを第3部分データとして入力し、第1部分データと第2部分データと第3部分データとは異なる一部分のデータを第4部分データとしてそれぞれ入力して、上記変換テーブルTを用いた変換と、第2変換部(s2)の第2部分用演算とはそれぞれ異なる第3部分用演算と第4部分用演算とにより、第3部分データと第4部分データとをそれぞれ変換し、変換したデータを出力する第3変換部(s3)と第4変換部(s4 )とを備えたことを特徴とする。
【0017】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換部と、
上記部分体変換部の前段と後段との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応でGF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換部を備えたことを特徴とする。
【0018】
上記部分体変換部は、N(Nは偶数)ビットのデータXをX=X0 +βX1 (X0 ,X1:部分体の元、β:もとの体の元)となる上位のN/2ビットのデータX1 と下位のN/2ビットのデータX0 に等分して、Y=Y0+βY1 =1/(X0 +βX1 )(但し、X=0のときY=0)となる上位のN/2ビットのデータY1と下位のN/2ビットのデータY0 をそれぞれN/2ビット単位で演算してデータYを求める複数のN/2ビット演算器のみを有することを特徴とする。
【0019】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )=I×B(Iは整数、B=Zi+1 −Zi ))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成する鍵シフト部を有するとともに、
上記鍵シフト部は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフトレジスタと、
Zi ビット巡回シフトされた鍵データに対して巡回シフトレジスタを1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフトレジスタをI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+2ビット巡回シフトされた鍵データを生成させる制御部と
を有することを特徴とする。
【0020】
上記巡回シフトレジスタは、巡回シフトレジスタを動作させるために供給されている動作クロックの1クロックサイクルでZi+1 −Ziビット(Bビット)の巡回シフトをする回路であることを特徴とする。
【0021】
上記巡回シフト回路は、(Zi+1 −Zi )ビット(Bビット)の値として、B1 =8×J1+1(J1 =0以上の整数)ビットと、B2 =8×J2 −1(J2 =1以上の整数、J1とJ2 は無関係、即ち、J1 ≠J2 又はJ1 =J2)ビットとのいずれかの値を選択するセレクタを備えたことを特徴とする。
【0022】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成する鍵シフト部を有するとともに、
上記鍵シフト部は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とする。
【0023】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記鍵生成部は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換部と、
上記第1のGビット鍵変換部から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換部と
を備え、
上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換部に入力して変換して第2のGビット変換鍵データK2 を出力し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1と、第2のGビット変換部により出力された第2のGビット変換鍵データK2 とを連結して、変換された2Gビット鍵データ(K1,K2 )として出力することを特徴とする。
【0024】
上記第1のGビット鍵変換部は、
Gビット鍵データを非線形変換する2段の非線形データ変換部と、
2段目の非線形データ変換部から出力された変換途中のGビット鍵データと、
第1のGビット鍵変換部が入力したGビット鍵データとの論理演算を行う論理演算部と
を備えたことを特徴とする。
【0025】
上記鍵生成部は、更に、Qビット(G<Q<2G)の鍵データを入力した場合、Qビットの鍵データを2Gビットの鍵データにするビット長変換部を備えたことを特徴とする。
【0026】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部の間に配置したことを特徴とする。
【0027】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部との両者の前と両者の後とのいずれかに配置したことを特徴とする。
【0028】
上記S関数部は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換部(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して、上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換部(s2)と
を備えたことを特徴とする。
【0029】
この発明に係るデータ変換装置は、少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、データ変換を行うデータ同士で論理演算するP関数部を有する非線形関数部(F)を備え、
上記P関数部は、z1 ,z2 ,・・・,z8 の8個の4n(nは1以上の整数)ビットデータを入力し、
上記z1 ,z2 ,z3 ,z4 の4個のデータのうち、少なくとも2個以上のデータ排他的論理和演算を行って4nビットの結果U1を得る回路と、
上記z5 ,z6 ,z7 ,z8 の4個のデータのうち、少なくとも2個以上のデータ排他的論理和演算を行って4nビットの結果U2を得る回路と、
U1 とU2 との排他的論理和演算を行って4nビットの結果U3 を得る回路と、
U1 に対して巡回シフトをする巡回回路と、
上記巡回回路の出力とU3 との排他的論理和演算を行って結果U4 を得る回路と
を備え、
上記U3 ,U4 をz1',z2',・・・,z8'として出力することを特徴とする。
【0030】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、データ変換を行うデータを第1のデータ(L)と第2のデータ(R)に分割するとともに、
上記データ処理は、第1のデータ(L)を変換するデータ正変換処理(FL)と、
第2のデータ(R)を上記データ正変換処理(FL)の変換とは逆の変換をするデータ逆変換処理(FL-1)と
を備えたことを特徴とする。
【0031】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、データを非線形変換する非線形変換処理を備え、
非線形変換処理は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換処理(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して、上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換処理(s2)とを備えたことを特徴とする。
【0032】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換処理と、
上記部分体変換処理の前段処理と後段処理との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応でGF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換処理とのいずれかを備えたことを特徴とする。
【0033】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは、1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )(Iは整数、B=Zi+1 −Zi ))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフト処理と、
Zi ビット巡回シフトされた鍵データに対して巡回シフト処理を1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフト処理をI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+2ビット巡回シフトされた鍵データを生成させる制御処理と
を有することを特徴とする。
【0034】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とする。
【0035】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記鍵生成処理は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換処理と、
上記第1のGビット鍵変換処理から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換処理と
を備え、
上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換部に入力して変換して第2のGビット変換鍵データK2 を出力し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1と、第2のGビット変換処理により出力された第2のGビット変換鍵データK2 とを連結して、変換された2Gビット鍵データ(K1,K2 )として出力することを特徴とする。
【0036】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数をS関数処理とP関数処理の間に動作させることを特徴とする。
【0037】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数処理をS関数処理とP関数処理との両者の前と両者の後とのいずれかで動作させることを特徴とする。
【0038】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、
第1の入力部と、
第2の入力部と、
第1の出力部と、
第2の出力部と
データの暗号化とデータの復号とを同一のアルゴリズムで行う非線形変換部と、
第1の入力部に入力されるデータを変換する第1入力データ正変換部と、
第2の出力部から出力されるデータを入力して上記第1入力データ正変換部の変換とは逆の変換をする第2出力データ逆変換部と
を備えたことを特徴とする。
【0039】
上記非線形変換部は、
第1の入力データを第1の入力部から入力し、
第2の入力データを第2の入力部から入力し、
第1の入力データと第2の入力データとを暗号化用鍵データを用いて非線形変換し、第1の変換データと第2の変換データとを生成し、
第1の変換データを第1の出力部から出力し、
第2の変換データを第2の出力部から出力し、
上記第1の変換データを第2の入力部から入力し、
上記第2の変換データを第1の入力部から入力し、第1の変換データと第2の変換データとを復号用鍵データを用いて非線形変換し、第1の出力データと第2の出力データとを生成し、
第1の出力データを第2の出力部から出力し、
第2の出力データを第1の出力部から出力した場合に、
第1の入力データと第2の出力データとが同一となり、第2の入力データと第1の出力データとが同一となるアルゴリズムを備えたことを特徴とする。
【0040】
上記データ処理部は、更に、
第2の入力部に入力されるデータを変換する第2入力データ正変換部と、
第1の出力部から出力されるデータを入力して、上記第2入力データ正変換部の変換とは逆の変換をする第1出力データ逆変換部と
を備えたことを特徴とする。
【0041】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、データ変換を行うデータを非線形変換する非線形関数部(F)を備え、
上記鍵生成部は、非線形関数部(F)に供給する鍵データを加工して、加工した鍵データをデータ処理部の非線形関数部(F)以外の部分に供給してデータと演算させることを特徴とする。
【0042】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、データ変換を行うデータを非線形変換する非線形関数処理(F)を備え、
上記鍵生成処理は、非線形関数処理(F)に供給する鍵データを加工して、加工した鍵データをデータ処理の非線形関数処理(F)以外の処理に供給してデータと演算させることを特徴とする。
【0043】
また、この発明は、上記データ変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【0044】
また、この発明は、上記データ変換方法をコンピュータに実行させるプログラムであることを特徴とする。
【発明の効果】
【0045】
この発明の実施の形態によれば、暗号化と復号とが同一のアルゴリズムで行えるように、データ正変換部(FL)251とデータ逆変換部(FL-1)271を備えているので、暗号化部200と復号部500を兼用して用いることができる。
【0046】
また、この発明の実施の形態によれば、変換テーブルTを兼用してSボックス第1変換部13とSボックス第2変換部14を構成しているので、構成が簡単になるという効果がある。
【0047】
また、この発明の実施の形態によれば、部分体変換部18を用いているので、構成が簡単になるとともに、線形変換部85と線形変換部87を設けているので、部分体変換部18を用いた場合でも安全性が向上する。
【0048】
また、この発明の実施の形態によれば、シフト制御部345がシフトレジスタを整数回動作させることにより15ビットや17ビットのみの一定値でないシフト数(例えば、30ビットや34ビット)を用いた鍵データのシフトを行うことができ、安全性を向上させることができる。
【0049】
また、この発明の実施の形態によれば、シフトレジスタにおいてシフトされたデータから拡大鍵として使用しない場合を設けているので、更に、安全性を向上させることができる。
【0050】
また、この発明の実施の形態によれば、ビット数の異なる鍵データが入力された場合でも、ビット長変換部310により一定長の鍵データに変換するので、柔軟性のある鍵生成オペレーションが行える。
【0051】
また、この発明の実施の形態によれば、第1のGビット鍵変換部320の中で2段の非線形変換を用いていることにより、K1 について等価鍵が存在しないことが証明でき、安全性を向上させることができる。
【0052】
また、この発明の実施の形態によれば、鍵関数部25の配置位置を変更したので、高速処理が可能になる。
【図面の簡単な説明】
【0053】
【図1】暗号化用データ変換装置100と復号用データ変換装置400を示す図。
【図2】符号及び記号の説明図。
【図3】暗号化部200又は復号部500の構成図。
【図4】暗号化部200又は復号部500の他の構成図。
【図5】データ正変換部(FL)251の構成図。
【図6】データ逆変換部(FL-1)271の構成図。
【図7】従来の暗号化部と復号部の一部を示す図。
【図8】暗号化部200と復号部500の一部を示す図。
【図9】点対称におかれたデータ正変換部(FL)251とデータ逆変換部(FL-1)271を示す図。
【図10】点対称となるデータ正変換部(FL)とデータ逆変換部(FL-1)の関係を示す図。
【図11】非線形関数部Fを示す図。
【図12】Sボックス第1変換部13とSボックス第2変換部14の構成図。
【図13】Sボックス変換部21の構成図。
【図14】線形変換部85の構成図。
【図15】線形変換部87の構成図。
【図16】鍵生成部300又は鍵生成部600の構成図。
【図17】ビット長変換部310の動作説明図。
【図18】シフトレジスタA341の構成図。
【図19】シフト制御部345の制御テーブルの構成図。
【図20】シフトレジスタA341とシフトレジスタB342の動作説明図。
【図21】シフトレジスタA341とシフトレジスタB342と拡大鍵の対応図。
【図22】シフトレジスタA341〜シフトレジスタD344の動作説明図。
【図23】シフトレジスタA341〜シフトレジスタD344と拡大鍵の対応図。
【図24】暗号化用データ変換装置100と復号用データ変換装置400が実装されたコンピュータを示す図。
【図25】従来のDESの暗号関数の構成図。
【図26】従来の128ビットブロック暗号E2の非線形関数を示す図。
【図27】Sボックス変換部の他の例を示す図。
【図28】Sボックス第1〜第4変換部を用いた非線形関数部Fを示す図。
【図29】鍵関数部25の配置を変更した図。
【図30】鍵関数部25の配置を変更した他の図。
【図31】P関数部30の他の構成図。
【図32】P関数部30の他の構成図。
【図33】図31のS1〜S4の構成と動作を示す図。
【図34】等価鍵の非存在証明の説明図。
【図35】等価鍵の非存在証明の説明図。
【図36】暗号化部200又は復号部500の他の構成図。
【図37】暗号化部200又は復号部500の他の構成図。
【図38】暗号化部200又は復号部500の他の構成図。
【図39】暗号化部200又は復号部500の他の構成図。
【図40】暗号化部200又は復号部500の他の構成図。
【図41】暗号化部200又は復号部500の他の構成図。
【図42】図39と図40とを併せた場合を示す図。
【図43】図3に示した暗号化部200又は復号部500に対して図28に示した非線形関数部Fを用いた場合の構成図。
【図44】図43に示した非線形関数部Fの中から鍵関数部25を削除した非線形関数部F’を用いる場合を示す図。
【図45】図44の構成に対して更にホワイトニング拡大鍵の演算を拡大鍵とともに行う場合を示す図。
【図46】非線形関数部Fが図29に示したような構成をとる場合に、非線形関数部Fから鍵関数部25を削除し、代わりに、拡大鍵kをXOR回路298に供給する場合を示す図。
【図47】非線形関数部Fが図30に示したような構成をとる場合、非線形関数部Fから鍵関数部25を削除し、代わりに、非線形変換された拡大鍵k'をXOR回路298に供給する場合を示す図。
【発明を実施するための形態】
【0054】
実施の形態1.
図1は、この実施の形態の暗号化用データ変換装置100と復号用データ変換装置400を示す図である。
【0055】
暗号化用データ変換装置100は、例えば、128ビットの平文を入力し、128ビットの暗号文を出力する暗号装置である。復号用データ変換装置400は、128ビットの暗号文を入力し、128ビットの平文を出力する復号装置である。暗号化用データ変換装置100は、暗号化部200と鍵生成部300から構成されている。暗号化部200は、平文の暗号化を行う暗号化用データ処理部である。鍵生成部300は、128ビット又は192ビット又は256ビットの鍵データを入力し、定数Viを用いて複数(n個)の64ビット又は128ビットの拡大鍵を生成して暗号化部200に供給する。復号用データ変換装置400は、復号部500と鍵生成部600を備えている。復号部500は、暗号文を入力し、暗号文の復号を行う復号用データ処理部である。鍵生成部600は、前述した鍵生成部300と同じもの又は同様のものである。また、暗号化部200と復号部500は、同一のものを用いることができ、図においては、暗号化部200と復号部500に分けて図示しているが、1つの回路又は1つのプログラムで兼用することができる。同様に、鍵生成部300と鍵生成部600も1つの回路又は1つのプログラムで兼用することができる。即ち、暗号化用データ変換装置100と復号用データ変換装置400は、同一の回路又は同一のプログラムで兼用することができる。
【0056】
図2は、以下の図及び説明において用いる記号の意味を示している。
【0057】
以下、図3以降の各図において、左側のデータを左データLと呼び、図において、右側のデータを右データRと呼ぶものとする。また、非線形データ変換部210,220,230,240へ入力するデータを入力データと呼び、非線形データ変換部210,220,230,240の内部のデータを中間データと呼び、非線形データ変換部210,220,230,240から出力するデータを出力データと呼ぶものとする。
【0058】
図3は、暗号化部200又は復号部500の一例を示す図である。
【0059】
図3は、6段の非線形データ変換部210と6段の非線形データ変換部220と6段の非線形データ変換部230が縦続接続されている場合を示している。6段の非線形データ変換部210と6段の非線形データ変換部220の間には、データ正変換部(FL)251とデータ逆変換部(FL-1)271が設けられている。また、6段の非線形データ変換部220と6段の非線形データ変換部230の間には、データ正変換部(FL)253とデータ逆変換部(FL-1)273が設けられている。6段の非線形データ変換部210の中には、6段の非線形データ変換部が設けられている。例えば、1つの非線形データ変換部280は、非線形関数部FとXOR(排他的論理和)回路290から構成されている。このようにして、図3においては、全部で18段の非線形データ変換部が設けられている。
【0060】
非線形データ変換部210は、任意の2つの右入力データR0 と左入力データL0 に対し、上記左入力データL0を第1の拡大鍵k1 を用いて第1の非線形変換し、該第1の非線形変換された出力データと上記右入力データR0 との排他的論理和を第1の左中間データL1として出力し、上記左入力データL0 を第1の右中間データR1 として出力する第1の非線形データ変換部280と、上記第1の左中間データR1を第2の拡大鍵k2 を用いて第2の非線形変換し、該第2の非線形変換された出力データと上記第1の右中間データR1 との排他的論理和を第2の左中間データL2として出力し、上記第1の左中間データL1 を第2の右中間データR2 として出力する第2の非線形データ変換部281とを備え、第1の非線形データ変換部280から第6の非線形データ変換部285を縦続接続して、最終の右中間データR6と左中間データL6 を変換後の出力データとするものである。
【0061】
図4は、図3の暗号化部200に対して更にデータ正変換部(FL)255とデータ逆変換部(FL-1)275と6段の非線形データ変換部240を追加し、全部で24段の非線形データ変換部により変換を行う場合を示している。
【0062】
図5は、データ正変換部(FL)251を示す図である。
【0063】
図5においては、データ正変換部(FL)251の入力データを左入力データ51と右入力データ52に分け、論理演算を行った後、左出力データ60と右出力データ61により出力データを作成している場合を示している。左入力データ51は、AND回路54において、拡大鍵53との論理積がとられ、その後、1ビット巡回左シフト部55において、左方向への1ビットの巡回シフト(サーキュラシフトともいう)が行われる。シフト後は、右入力データ52との排他的論理和がXOR回路56により演算される。XOR回路56の出力は、右出力データ61になるとともに、OR回路58において、拡大鍵57との論理和がとられ、その結果は、更に、XOR回路59において左入力データ51と排他的論理和の演算が行われ、左出力データ60となる。
【0064】
図6は、データ逆変換部(FL-1)271を示す図である。
【0065】
図6においては、入力データを左入力データ71と右入力データ72に分け、論理演算を行った後、左出力データ80と右出力データ81により出力データを作成している場合を示している。
【0066】
右入力データ72は、OR回路74において、拡大鍵73との論理和がとられ、更に、XOR回路75において、左入力データ71との排他的論理和がとられる。その結果、XOR回路75からの出力は左出力データ80になるとともに、AND回路77において、拡大鍵76との論理積がとられ、1ビット巡回左シフト部78において、左方向への1ビットの巡回左シフトが行われ、その結果は、更に、XOR回路79において右入力データ72と排他的論理和がとられ、右出力データ81となる。
【0067】
図5に示したデータ正変換部(FL)251と図6に示したデータ逆変換部(FL-1)271は、正逆反対のオペレーションをするものである。従って、同一の拡大鍵のもとで図5の出力データYを図6の入力データYにすることにより、図6の出力データXとして図5の入力データXを得ることができる。
【0068】
このように、一方の出力データを他方の入力データとすることにより、一方の入力データを他方の出力データとして得ることができる関係を正変換と逆変換の関係にあるという。データ正変換部(FL)251とデータ逆変換部(FL-1)271は、このような正変換と逆変換を行う回路である。
【0069】
なお、図5の1ビット巡回左シフト部55と図6の1ビット巡回左シフト部78はともに左シフトをするが、両方とも右シフトを行うようにしてもよい。また、データ正変換部(FL)251とデータ逆変換部(FL-1)271は、正変換と逆変換を行うのであれば、他の構成でもよい。例えば、巡回のシフト数を変えてもよい。また、notを含んだAND回路、notを含んだOR回路、notを含んだXOR回路を、更に付加してもよい。即ち、notを含んだAND回路、notを含んだOR回路、notを含んだXOR回路を、それぞれandn,orn,xornと表した場合、定義は以下の通りである。
【0070】
x andn y:(not x)and y
x orn y:(not x)or y
x xorn y:(not x)and y
最近のいくつかのCPUでは、notも含んだand,or,xor命令を備えているものがある。これらの命令は、and,or,xor命令と同様のコストで実行可能である。
【0071】
図7は、従来の暗号化部201と従来の復号部501を示している。
【0072】
従来の暗号化部201においては、2つのデータ正変換部FLが設けられている。このため、この逆のオペレーションをするためには、復号部に2つのデータ逆変換部FL-1をおかなければならない。従って、暗号化部と復号部の構成が一般的には異なってしまい、暗号化部と復号部を同一回路にすることができない。
【0073】
一方、図8に示すように、この実施の形態では、暗号化部200において、データ正変換部(FL)251とデータ逆変換部(FL-1)271を隣り合わせに配置しているため、復号部500においても全く同じ構成で復号を行うことができる。例えば、右データRをデータ正変換部(FL)251で変換して左データL’を得、左データLをデータ逆変換部(FL-1)271で変換して右データR’を得た場合、左データL’をデータ逆変換部(FL-1)271に入力させてやることにより右データRを得ることができ、右データR’をデータ正変換部(FL)251に入力させてやることにより左データLを得ることができる。
【0074】
このようにして、暗号化部200と復号部500は、全く同じ構成で実現することができ、暗号化部200と復号部500を兼用して用いることができる。
【0075】
図9は、データ正変換部(FL)251とデータ逆変換部(FL-1)271を非線形データ変換部280を中心にして点対称となる位置においた場合を示している。
【0076】
このように、非線形データ変換部280を中心にしてデータ正変換部(FL)251とデータ逆変換部(FL-1)271を点対称の位置においた場合に、同一構成により暗号化と復号を行うことができる。
【0077】
図10は、点対称の位置におかれたデータ正変換部(FL)とデータ逆変換部(FL-1)との対応を示している。
【0078】
図10に示すように、図3においてはデータ正変換部(FL)251とデータ逆変換部(FL-1)273が6段の非線形データ変換部220を中心とした点対称の位置に配置されていることを示している。
【0079】
なお、図3,図4,図8,図9において、データ正変換部(FL)とデータ逆変換部(FL-1)の位置は逆でもよい。また、図3,図4,図8,図9において、右データRと左データLは逆でもよい。
【0080】
図36は、6段の非線形データ変換部210と6段の非線形データ変換部220と6段の非線形データ変換部230とを用いて暗号化部200を構成した場合を示している。
【0081】
6段の非線形データ変換部210と6段の非線形データ変換部220と6段の非線形データ変換部230とは、暗号化と復号との両方に用いることができる回路である。
【0082】
ここで、6段の非線形データ変換部210とデータ正変換部(FL)250とデータ逆変換部(FL-1)271とにより正逆データ変換部211を構成している。ここで、正逆データ変換部とは、暗号化と復号との両方に用いることができる回路のことをいうものとする。即ち、正逆データ変換部は、一方の出力データを他方の入力データとすることにより、一方の入力データを他方の出力データとして得ることができる正変換と逆変換とを行う1つの回路である。
【0083】
また、6段の非線形データ変換部220とデータ正変換部(FL)251とデータ逆変換部(FL-1)273とにより正逆データ変換部221を構成している。
【0084】
また、6段の非線形データ変換部230とデータ正変換部(FL)253とデータ逆変換部(FL-1)275とにより正逆データ変換部231を構成している。
【0085】
これら正逆データ変換部211と正逆データ変換部221と正逆データ変換部231とを縦列に接続して暗号化部200が構成されている。そして、この暗号化部200は、復号部500としても用いることができる。
【0086】
また、6段の非線形データ変換部210と6段の非線形データ変換部220とデータ正変換部(FL)251とデータ逆変換部(FL-1)271とを非線形データ変換部1210と見なせば、非線形データ変換部1210は、暗号化と復号との両方に用いることができる回路である。ここで、非線形データ変換部1210とデータ正変換部(FL)250とデータ逆変換部(FL-1)273とにより正逆データ変換部1211を構成している。
【0087】
また、6段の非線形データ変換部220と6段の非線形データ変換部230とデータ正変換部(FL)253とデータ逆変換部(FL-1)273とを非線形データ変換部1220と見なせば、非線形データ変換部1220とデータ正変換部(FL)251とデータ逆変換部(FL-1)275とにより正逆データ変換部1221を構成している。
【0088】
正逆データ変換部1211と正逆データ変換部1221とは、復号部500にも用いることができる。
【0089】
また、6段の非線形データ変換部210から6段の非線形データ変換部230までを非線形データ変換部2210と見なせば、非線形データ変換部2210は、暗号化と復号との両方に用いることができる回路である。
【0090】
ここで、非線形データ変換部2210とデータ正変換部(FL)250とデータ逆変換部(FL-1)275とにより正逆データ変換部2211を構成している。
【0091】
正逆データ変換部2211は、復号部500にも用いることができる。
【0092】
以上のように、暗号化部200又は復号部500は、正逆データ変換部を複数縦続接続することにより構成することができる。
【0093】
また、暗号化部200又は復号部500は、正逆データ変換部の中に正逆データ変換部を含ませることにより、正逆データ変換部を階層化して構成することができる。
【0094】
図37は、6段の非線形データ変換部210を備えた暗号化部200と復号部500とが同一構成となる例を示している。
【0095】
図37の6段の非線形データ変換部210は、図3,図4に示すように、偶数段の非線形データ変換部280を有している。データAは、第1入力データ正変換部256により変換されデータA’となり、第1の入力部261に入力され、第1の入力部261から入力されたデータA’は、第1の出力部263からデータA1’として出力される。また、第2の入力部262から入力されたデータBは、第2の出力部264からデータB1として出力される。第2の出力部264から出力されたデータB1 は、第2出力データ逆変換部279により変換されデータB1’として出力される。
【0096】
暗号化部200の第1の出力部263から出力されたデータA1’は、復号部500の第2の入力部262にデータA1’として入力される。暗号化部200の第2出力データ逆変換部279から出力されたデータB1’は、復号部500の第1入力データ正変換部256にデータB1’として入力され、データB1として出力される。
【0097】
非線形データ変換部210は、データB1 を入力してデータBを出力する。また、非線形データ変換部210は、データA1’を入力してデータA’を出力する。第2出力データ逆変換部279は、データA’を入力してデータAを出力する。
【0098】
図38では、奇数段の非線形データ変換部219が奇数段の非線形データ変換部280を有している。従って、第1の入力部261から入力されたデータA’は、第2の出力部264からデータA1’として出力され、第2出力データ逆変換部279により変換され、データA1”として出力される。また、第2の入力部262から入力したデータBは、第1の出力部263からデータB1として出力される。
【0099】
暗号化部200の第1の出力部263から出力されたデータB1 は、復号部500の第2の入力部262にデータB1 として入力される。暗号化部200の第2出力データ逆変換部279から出力されたデータA1”は、復号部500のデータA1”として入力され、第1入力データ正変換部256に入力される。
【0100】
図37,図38の場合は、いずれも、暗号化部200と復号部500とが同一構成で、暗号化、復号ができる。
【0101】
図39は、第2の入力部262に第2入力データ正変換部257を設け、第1の出力部263に第1出力データ逆変換部278を設けた場合を示している。
【0102】
図40は、第1の入力部261に第1入力データ逆変換部276を設け、第2の出力部264に第2出力データ正変換部259を設けた場合を示している。
【0103】
図41は、左側の入出力部261,263にデータ正変換部256,258を設け、右側の入出力部262,264にデータ逆変換部277,279を設けた場合を示している。
【0104】
図42は、図39と図40とを併せた場合を示している。
【0105】
図示していないが、図37と図39を併せてもよい。また、図38と図39とを併せてもよい。また、図示していないが、図37,図39から図42の6段(偶数段)の非線形データ変換部210を奇数段の非線形データ変換部219としてもよい。図39から図42の場合も、暗号化部200と復号部500との同一構成で実現できる。
【0106】
実施の形態2.
図11は、非線形データ変換部280の非線形関数部Fの構成図である。
【0107】
非線形関数部Fは、F関数入力データ10を入力し、非線形変換を行ってF関数出力データ40を出力する。64ビットのF関数入力データ10は、8つのデータに分けられ、8ビットのデータとして処理される。各8ビットのデータは、鍵関数部25の8個のXOR回路12に入力され、拡大鍵11との排他的論理和がとられ、S関数部20において、置換を用いた非線形変換を受ける。その後、P関数部30において、8ビットのデータ同士で図に示すような16個のXOR回路815により演算が行われ、64ビットのF関数出力データ40が出力される。S関数部20には、4個のSボックス第1変換部13と4個のSボックス第2変換部14が設けられている。
【0108】
図12は、Sボックス第1変換部13とSボックス第2変換部14の実現例を示す図である。
【0109】
Sボックス第1変換部13の内部には、変換テーブルTが設けられている。変換テーブルTは、0〜255の値に対して任意に(ランダムに)対応させた0〜255の値を予め記憶しておくものであり、0〜255の値を入力し、各値に対応した値(0〜255の値)を出力するテーブルである。例えば、1が入力された場合には、変換テーブルTから7が出力される。変換テーブルTは、全単射であるかどうか、最大差分確率が十分に小さいかなどの安全性が考慮された非線形変換を行うものである。
【0110】
Sボックス第2変換部14は、Sボックス第1変換部13を含むとともに、1ビット巡回左シフト部22(図の「<<<1」の「<<<」は巡回左シフトを示し、「1」は1ビットを示す)を有している。1ビット巡回左シフト部22は、Sボックス第1変換部13の出力に対して1ビットの巡回左シフトを行う。例えば、1が入力された場合には、Sボックス第1変換部13から7が出力され、1ビット巡回左シフト部22から14が出力される。
【0111】
Sボックス第1変換部13とSボックス第2変換部14を図12のように構成すると、変換テーブルTを2種類持つ必要がないにも関わらず、2種類の変換テーブルTを設けた場合と同じような効果を得ることができる。変換テーブルTを1つしか持たないことにより、変換テーブルTを記憶するメモリ容量を少なくし、回路全体を小さくすることができる。
【0112】
また、図27に示すように、1ビット巡回左シフト部22の代わりに、或いは、1ビット巡回左シフト部22の他に1ビット巡回右シフト部(図27のSボックス第3変換部15の「>>>1」)を設けることにより、更に異なる変換テーブルTを設けた場合と同じ効果を得ることができる。また、入力されたデータyに対して1ビット巡回左シフト部(図27のSボックス第4変換部16の「<<<1」)を設けて、入力されたデータyを先にシフトしてから変換テーブルTにより変換してもよい。図27においては、s(y),s(y)<<<1,s(y)>>>1,s(y<<<1)の場合を示したが、s(y>>>1)でもよいし、s(y<<<1)<<<1,s(y<<<1)>>>1,s(y>>>1)<<<1,s(y>>>1)>>>1の場合でもよい。シフト量を1ビットにすることにより、例えば、1ビットシフト命令しか持たないCPU等においては、3ビットや5ビットシフトするよりも、高速処理を行うことが可能な場合がある。また、このシフト処理を1ビットシフトしかできないハードウェアを用いて行う場合にも、同様に、高速処理を適用することができる場合がある。更には、1ビットシフトではなく、2ビット、3ビット等の任意ビットのシフトでもよく、任意ビットのシフトを行うことにより、更に、異なる種類のテーブルを付加したのと同じ効果を得ることができる場合がある。
【0113】
図28は、図27に示した4つのSボックス第1〜第4変換部13,14,15,16を用いたS関数部20を示す図である。
【0114】
また、P関数部30の他の構成を図31に示す。
【0115】
8ビットの入力データy1 ,y2 ,y3 ,y4 から、それぞれS1,S2,S3,S4を参照して32ビットのデータZ1,Z2 ,Z3 ,Z4 を求め、これらの排他的論理和を回路913で求め、また、8ビットの入力データy5,y6 ,y7 ,y8 から、それぞれS2,S3,S4,S1を参照して32ビットのデータZ5,Z6 ,Z7 ,Z8 を求め、これらの排他的論理和を回路916により求め、これらの排他的論理和演算結果U2と前記排他的論理和演算結果U1 との排他的論理和が回路917でとられてz1',z2',z3',z4'として出力され、また、回路913よりの排他的論理和演算結果U1に対し、左に1バイト巡回シフト(この図31では、「<<<1」は1ビットではなく、1バイトの巡回シフトを示す)が回路918で行われ、回路917の出力と回路919で排他的論理和演算が行われてz5',z6',z7',z8'が得られる。
【0116】
ここで、図33の(a)〜(d)に示すように、S1はSボックス第1変換部13を、S2はSボックス第2変換部14を、S3はSボックス第3変換部15を、S4はSボックス第4変換部16を用いて構成されており、それぞれの変換部からの8ビット出力データを4つコピーして32ビットデータとし、更に、そのうち3つのデータ(24ビット分)だけを出力するように、マスクをかけて32ビットデータを出力する。
【0117】
なお、上記回路918の1バイトの巡回シフトは、Sボックスが処理するビット長(8ビット=1バイト)単位でシフトするものである。
【0118】
図32は、図31と等価な構成であるが、実装方法が異なるP関数部30を示している。
【0119】
8ビットの入力データy1 ,y2 ,y3 ,y4 から、それぞれS5,S6,S7,S8をそれぞれ参照して32ビットのデータZ1,Z2 ,Z3 ,Z4 が出力され、これらは回路933により排他的論理和演算が行われ、その演算結果Aが回路933から出力される。また、8ビットの入力データy5,y6 ,y7 ,y8 から、それぞれS9,SA,SB,SCを参照して32ビットのデータZ5,Z6 ,Z7 ,Z8 が出力され、これらが回路936により排他的論理和演算が行われ、その演算結果Bが回路936から出力される。演算結果Bは、回路937により右に1バイト巡回シフト(この図32では、図31と同じく、1ビット単位ではなく、Sボックスが処理するビット長単位(1バイト単位)のシフトをする)されるとともに、回路938で演算結果Aと排他的論理和演算される。この演算結果Cは、回路939により上(左)に1バイト巡回されるとともに、回路937の出力との排他的論理和演算が回路940で行われる。その演算結果Dは、回路941により上(左)に2バイト巡回されるとともに、回路939の出力と排他的論理和演算が回路942で行われる。その演算結果Eは、回路943により(右)に1バイト巡回されるとともに、回路941の出力と排他的論理和演算が回路944で行われる。回路944の出力Fがz1',z2',z3',z4'として、回路943の出力がz5',z6',z7',z8'として出力される。
【0120】
ここで、S5,SCはSボックス第1変換部13と論理シフトを、S6,S9はSボックス第2変換部14と論理シフトを、S7,SAはSボックス第3変換部15と論理シフトを、S8,SBはSボックス第4変換部16と論理シフトを用いて構成されている。論理シフトは、各変換部からの8ビット出力データを32ビット出力データ中の所定の位置に出力するために利用され、S5,SAでは0,S6,SBでは1バイト、S7,SCでは2バイト、S8,S9では3バイト左シフトするように設定されている。即ち、変換部における8ビットの出力をzとすると、32ビットの出力は、S5,SAでは[0,0,0,z](0は8つの各ビットが0であることを示す)、S6,SBでは[0,0,z,0]、S7,SCでは[0,z,0,0]、S8,S9では[z,0,0,0]となる。
【0121】
なお、実装上は、直接所定の出力を出すように計算された8ビット入力、32ビット出力の置換表を用意してもよい。
【0122】
図31,図32の場合は、図26に示した従来のE2暗号で使われていた置換処理よりも高速で、かつ、柔軟な実装が可能となる装置を提供できる。
【0123】
図11において、S関数部20にあるSボックスを全種類異なるSボックスで個別に構成した場合には、8個の変換テーブルTが必要になるのに対し、図12のような構成にすることにより、少なくとも変換テーブルTを記憶する全体の記憶容量を1/2にすることができる。
【0124】
また、図12に示したSボックス第1変換部13、Sボックス第2変換部14に対して、8個の8ビットデータを時分割に入力させることにより、従来の個別の8個のSボックスを、図12に示したSボックス第1変換部13とSボックス第2変換部14のみで代替えすることができる。
【0125】
図13は、S関数部20のSボックスの他の例を示す図である。
【0126】
具体的な構成に関しては、松井,桜井「ガロア体除算回路及び乗除算共用回路」(特許登録番号2641285[H9.5.2])に詳しく述べられている。
【0127】
Sボックス変換部21には、8ビットのデータが入力され、8ビットのデータが出力される。Sボックス変換部21は、N(ここでは、N=8)ビット線形変換部17と部分体変換部18とNビット線形変換部19から構成されている。Nビット線形変換部17は、8ビットのオペレーションを行う。部分体変換部18は、ガロア体GF(24)の元である4ビットのみのオペレーションを行う。Nビット線形変換部19は、8ビットのオペレーションを行う。Nビット線形変換部17の線形変換部85は、図14に示すような線形変換を行う回路である。また、線形変換部87は、図15に示すような線形変換を行う回路である。
【0128】
なお、線形変換部85の代わりに、アフィン変換(なお、線形変換は、アフィン変換の一態様であると考えられる)を行う回路を用いても構わない。或いは、線形変換部87の代わりに、アフィン変換を行う回路を用いても構わない。線形変換部85は、8ビットのデータ(X)に変換を行い、得られた8ビットのデータ(X’)をガロア体GF(28)の元とみなし、X’から上位4ビットと下位4ビットのデータ(X1 とX0 )を、それぞれ部分体GF(24)の元とみなし、部分体変換部18に出力する。ここで、例えば、GF(28 )の元βを既約多項式X8 +X6+X5 +X3 +1=0の元とし、α=β238 とすると、部分体GF(24)の基底は、[1,α,α2 ,α3 ]と表され、これを用いてGF(24 )の元X0,X1 と表すと、X’=X0 +βX1 という関係になる(詳細は、「ガロア体除算回路及び乗除算共用回路」(特許登録番号2641285[H9.5.2]参照)。部分体変換部18は、4ビットの演算を行う演算器のみで構成されている。
【0129】
ここで、「部分体」のとり方としてはGF(2n )に対して、n=2mとなる部分体GF(2m )が考えられ、ここでの例は、n=8,m=4となる。
【0130】
部分体変換部18は、「ガロア体除算回路及び乗除算共用回路」(特許登録番号2641285[H9.5.2]で示されたn=8,m=4の時の回路を基に構成される部分体を用いた逆元回路である。この逆元回路の演算結果として、各々GF(24)の元とみなせる上位4ビットのデータと下位4ビットのデータ(Y1 とY0 )が、GF(28 )上の元とみなせる8ビットのデータYとして線形変換部87に出力される。ここで、Y=Y0+βY1 である。以上より、この逆元回路は、Y=Y0 +βY1 =1/(X0+βX1 )を演算する回路である。また、この逆元回路の「有限体」の元の表し方(基底の取り方)には「多項式基底」や「正規基底」というように、「基底」の取り方はいくつか考えられる。
【0131】
図13のSボックス変換部21において特徴となる点は、非線形変換を行うために入力されたデータのビット幅(8ビット)の半分のビット幅(4ビット)で演算を行う点である。即ち、逆元回路においては、4ビットのオペレーションのみが行われている点が特徴である。
【0132】
このように、4ビットのみオペレーションを行うことにより演算速度は遅くなるかもしれないが、回路全体の規模は、8ビットの演算素子を用いるよりも遙かに小さくすることができるという利点がある。
【0133】
そして、Sボックス変換部21の次の特徴は、前述した部分体変換部18の両側にN=8ビットのNビット線形変換部17とNビット線形変換部19を設けている点である。Sボックス変換部21を部分体変換部18を用いて実現すると、ランダムな値を記憶した変換テーブルTを用いる場合に比べて、回路全体の規模が小さくなったり、構造が簡単になるという利点があるが、逆に、安全性が低下する可能性がある。そこで、部分体変換部18の両側で線形変換又はアフィン変換を行い、部分体変換部18を採用したことによる安全性の低下をなくすようにしている。
【0134】
なお、図13において、部分体変換部18の両側において線形変換を行っているが、片側だけに設けても構わない。或いは、片側で線形変換し、別側でアフィン変換を行っても構わない。
【0135】
図29は、図11に示した鍵関数部25を、即ち、S関数部20とP関数部30の前にある鍵関数部25を、S関数部20とP関数部30の後に配置したものである。
【0136】
また、図30は、鍵関数部25をS関数部20とP関数部30の間に配置したものである。
【0137】
図29又は図30のような構成にすることにより、図11に示した構成に比べて、実装上高速になることが多いという効果が得られる。更に、拡大鍵の生成を補正することにより、図29又は図30の構成で、同一の入力から図11の構成と同一の出力を得ることができる。図26に示した従来のF関数においては、2つのS関数があり、それぞれ最初に拡大鍵との演算を行い、次に、S関数による演算を行っている。それに対し、図29に示す場合は、ひとつの鍵関数部25をF関数の最後に配置している。また、図30の場合は、ひとつの鍵関数部25をS関数部20とP関数部30の間に配置している。
【0138】
図43は、図3に示した暗号化部200又は復号部500に対して図28に示した非線形関数部Fを用いた場合の構成図である。
【0139】
左データがF関数入力データ10として非線形関数部Fに入力され、F関数出力データ40が出力される。F関数出力データ40は、右データと排他的論理和演算が行われ、その結果が次の段の左データとなる。また、左データは、F関数入力データ10として非線形関数部Fに入力されるとともに、次の段の右データとして用いられる。図43に示す構成においては、非線形関数部Fの中で鍵関数部25とS関数部20とP関数部30との演算が行われるため、非線形関数部Fにおける演算の負荷が大きなものとなる。この非線形関数部Fにおける演算の負荷を分散させて実行することにより、処理の高速化を図る例について、以下に図を用いて説明する。
【0140】
図44は、図43に示した非線形関数部Fの中から鍵関数部25を削除した非線形関数部F’を用いる場合を示している。拡大鍵k1 は、XOR回路891において左データL0と排他的論理和演算が行われる。また、拡大鍵k2 は、XOR回路297において右データR0 と排他的論理和演算が行われる。左データは、F関数入力データ10として非線形関数部F’に入力され、S関数部20とP関数部30との変換を受ける。XOR回路297の出力とF関数出力データ40とは、XOR回路290において排他的論理和演算が行われ、左データL1を出力する。
【0141】
一方、鍵生成部300,600は、拡大鍵k1 とk3 との排他的論理和演算を行い、この加工された拡大鍵k1+k3 を出力する。XOR回路891の出力R1 と拡大鍵k1 +k3 とが、XOR回路298において排他的論理和演算が行われ、右データを出力する。鍵生成部300,600は、拡大鍵を加工して、k1+k3 ,k2 +k4 ,k3 +k5 ,・・・,k16+k18を生成して出力する。鍵生成部300,600は、加工された拡大鍵を、非線形関数処理(F)以外の処理に供給してデータと演算させる。この結果、左データL18と右データR18とは、図43の場合と同じものが得られる。
【0142】
加工された拡大鍵を、非線形関数処理(F)以外の処理に供給してデータと演算させることにより、非線形関数部F’において、S関数部20とP関数部30との計算をしている間に、非線形関数部F’の外部、即ち、XOR回路297,298で鍵データとの計算ができ、鍵関数部25の計算が非線形関数部Fからなくなり、非線形関数部Fの負荷が分散され、高速実装が可能となる。
【0143】
図45は、図44の構成に対して更にホワイトニング拡大鍵kw1 の演算を拡大鍵とともに行う場合を示している。図45においては、鍵生成部がホワイトニング拡大鍵の一部kw1highと第1の拡大鍵k1との排他的論理和演算を予め行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路891に供給している場合を示している。
また、鍵生成部がホワイトニング拡大鍵の一部kw1lowと第2の拡大鍵k2 との排他的論理和演算を予め行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路297に供給している場合を示している。
【0144】
このようにして、図44に示したXOR回路293の演算をなくすことができる。また、図45の場合は、鍵生成部がホワイトニング拡大鍵kw2 の一部kw2lowと拡大鍵k17との排他的論理和演算を行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路299に供給している。また、鍵生成部がホワイトニング拡大鍵の他の部分kw2highと拡大鍵k18との排他的論理和演算を行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路892に供給している。
【0145】
このようにして、図44に示したXOR回路296の演算をなくしている。
【0146】
図46は、非線形関数部Fが図29に示したような構成をとる場合に、非線形関数部Fから鍵関数部25を削除し、代わりに、鍵生成部が拡大鍵kをXOR回路298に供給する場合を示している。
【0147】
また、図47は、非線形関数部Fが図30に示したような構成をとる場合、非線形関数部Fから鍵関数部25を削除し、代わりに、鍵生成部が非線形変換された拡大鍵k'=P(k)をXOR回路298に供給する場合を示している。図47の場合は、P関数処理による演算と同一の演算を鍵データに対して施して非線形変換された鍵データを生成し、非線形変換された鍵データを上記データ処理が用いる鍵データとして、データ処理の非線形関数処理(F)以外の処理に供給してデータと演算させる場合を示している。 図46及び図47のいずれの場合も、鍵関数部25を非線形関数部Fから削除しているので、非線形関数部Fの演算負荷が減少し、非線形関数部Fの演算と平行して非線形関数部Fの外にあるXOR回路298の演算を行うことができるため、高速処理を行うことが可能になる。
【0148】
実施の形態3.
図16は、図1に示した鍵生成部300(又は鍵生成部600)の構成図である。
【0149】
鍵生成部300は、ビット長変換部310と第1のGビット鍵変換部320と第2のGビット鍵変換部330と鍵シフト部340から構成されている。鍵生成部300には、128ビット又は192ビット又は256ビットの鍵データが入力され、128ビットの鍵データK1と128ビットの鍵データK2 が生成され、複数の64ビットの拡大鍵が出力される。ビット長変換部310において、ビット数の異なる鍵データが入力されても、出力される鍵データのビット長が一定になるように変換している。即ち、ビット長変換部310は、内部において上位128ビットの鍵データSKhighと下位128ビットの鍵データSKlowを生成し、前者を第1のGビット鍵変換部320と鍵シフト部340に出力する。また、後者を第2のGビット鍵変換部330と鍵シフト部340に出力する。また、前者と後者の排他的論理和をとった128ビットの鍵データを第1のGビット鍵変換部320に出力する。
【0150】
図17は、ビット長変換部310の内部動作を示す図である。
【0151】
ビット長変換部310に128ビットの鍵データが入力された場合には、その入力された鍵データがそのまま上位128ビットの鍵データSKhighとして出力される。また、下位128ビットの鍵データSKlowは、0に設定されて出力される。
【0152】
次に、ビット長変換部310に192ビットの鍵データが入力された場合には、入力された鍵データの上位128ビットのデータがそのまま上位128ビットの鍵データSKhighとして出力される。また、入力された192ビットの鍵データの下位64ビットのデータと、その下位64ビットのデータが反転された64ビットの反転データとが連結され、下位128ビットの鍵データSKlowが生成され出力される。
【0153】
次に、256ビットの鍵データが入力された場合には、入力された鍵データの上位128ビットがSKhighとして、下位128ビットがSKlowとして出力される。
【0154】
第1のGビット鍵変換部320には、ビット長変換部310から128ビットの鍵データSKhighとSKlow の排他的論理和が入力され、2段の非線形変換を受けた後、上位128ビットの鍵データSKhighと排他的論理和がとられ、更に2段の非線形変換を受け、128ビットの鍵データK1が出力される。
【0155】
ビット長変換部310に入力された鍵データの長さが128ビットの場合には、第1のGビット鍵変換部320から出力された128ビットの鍵データと入力された元の鍵データとを用いて鍵シフト部340が拡大鍵を生成する。ビット長変換部310に入力された鍵データの長さが192ビット又は256ビットの場合には、第1のGビット鍵変換部320から出力された128ビットの鍵データを更に第2のGビット鍵変換部330に入力し、下位128ビットの鍵データSKlowと排他的論理和をとり、2段の非線形変換を行った後、128ビットの鍵データK2 を出力する。鍵シフト部340には、第1のGビット鍵変換部320と第2のGビット鍵変換部330の両方から出力された2つの128ビットの鍵データが出力され、両者と入力された元の鍵データとを用いて鍵シフト部340が拡大鍵を生成する。
【0156】
鍵シフト部340は、シフトレジスタA341とシフトレジスタB342とシフトレジスタC343とシフトレジスタD344とシフト制御部345を備えている。シフト制御部345からは、セレクト信号346が各シフトレジスタに出力され、シフトレジスタの動作を制御している。
【0157】
図18は、シフトレジスタA341の構成を示す図である。
【0158】
シフトレジスタA341は、128ビット分のスイッチ群を持ったセレクタA347と、128ビットのレジスタA348を有している。セレクト信号346は、セレクタA347の各スイッチをA側又はB側のいずれかに全て同時に接続することを指示するスイッチ信号を含んでいる。図においては、セレクト信号346によりセレクタA347のスイッチ群がAを選択した場合を示しており、この場合には、レジスタA348が17ビット左側に巡回シフトする場合を示している。また、スイッチ群がBを接続した場合には、レジスタAが左側に15ビット巡回シフトすることを示している。この15ビットシフト、或いは、17ビットシフトは、1クロックサイクルで行われる。
【0159】
なお、巡回シフトのシフト数(15,17)は一例であり、他のシフト数でも構わない。
【0160】
図19は、シフト制御部345に記憶されている制御テーブルの一部分を示す図である。
【0161】
この制御テーブルは、各クロック毎にレジスタを何ビットシフトさせるかを記憶しているテーブルである。例えば、レジスタA制御テーブルにおいては、1クロック目で15ビットシフトさせることを示している。また、2クロック目で更に15ビットシフトさせることを示している。同様に、3クロック目、4クロック目も15ビットシフトさせることを示している。5クロック目〜8クロック目は、それぞれ17ビットシフトさせることを示している。
【0162】
図20は、128ビットの鍵データから拡大鍵を生成する場合に、シフト制御部345が図19に示すテーブルを用いて各シフトレジスタを制御した結果を示す図である。
【0163】
シフトレジスタA341には、ビット長変換部310から入力した上位128ビットの鍵データSKhighが設定される。シフトレジスタB342には、第1のGビット鍵変換部320から出力した128ビットの鍵データK1が設定される。このような状態で、図19に示す制御テーブルに従って、シフトレジスタA341とシフトレジスタB342が動作する。図20において、斜線を引いた部分は無視され、出力されないことを示している。それ以外の斜線が引かれていない部分は、図21に示すように、拡大鍵として出力されるものである。
【0164】
図21は、レジスタの値と拡大鍵の対応を示す図である。
【0165】
図20においては、1クロック毎に15ビットずつ4回シフトし、5クロック目からは1クロック毎に17ビットシフトする場合を示している。シフトレジスタA341とシフトレジスタB342から上位64ビット及び下位64ビットを拡大鍵として出力するかしないかの判断、或いは、その出力する順番は、図示していない制御テーブルに記載されているものとし、その制御テーブルに基づいて、セレクト信号346に出力指示信号を含ませてシフトレジスタに出力することにより、各シフトレジスタから拡大鍵が64ビットずつ出力されることになる。
【0166】
図22は、192ビット又は256ビットの鍵データから拡大鍵を生成する場合を示している。
【0167】
即ち、シフトレジスタA341にビット長変換部310から入力した上位128ビットの鍵データSKhighをセットし、シフトレジスタB342に下位128ビットの鍵データSKlowをセットし、シフトレジスタC343に第1のGビット鍵変換部320から出力した128ビットの鍵データK1 をセットし、シフトレジスタD344に第2のGビット鍵変換部330から出力した128ビットの鍵データK2をセットする場合を示している。
【0168】
斜線部分は、拡大鍵として使用しない鍵を示している。
【0169】
図23は、レジスタの値と拡大鍵の対応を示す図である。
【0170】
拡大鍵として使用しない鍵や図23に示すレジスタの値と拡大鍵との対応も前述した制御部にある制御テーブルが記憶しているものとする。
【0171】
図19に示すように、シフト制御部345は、シフトレジスタA341に設定された鍵データをシフトするビット数を記憶している。即ち、シフトレジスタA制御テーブルに示すように、シフトレジスタA341に設定された鍵データをZ0=0ビット、Z1 =15ビット、Z2 =45ビット、Z3 =60ビット、Z4=77ビット、Z5 =94ビット、Z6 =111ビット、Z7 =128ビット移動させることにより、拡大鍵を次々と生成することになる。
【0172】
各シフト数の和は、15+15+15+15+17+17+17+17=128となり、128ビットのレジスタを128ビット巡回シフトすることにより、レジスタは初期状態に戻ることになる。
【0173】
このように、シフト数の総和を128ビット(レジスタのビット数)として初期状態に戻す理由は、初期状態のレジスタに対して次の処理があった場合に、そのまま次の処理が開始できるからである。また、逆変換処理(復号)を行う場合にも、拡大鍵を生成するための処理の開始が同じく初期状態のままから開始するため、初期状態をセットすることにより、変換処理(暗号化)と逆変換処理(復号)のどちらも行うことができる。また、シフト数の総和を128ビット(レジスタのビット数)より大きくしていないのは、例えば、128ビット(レジスタのビット数)以下の2ビット巡回シフトと128ビット(レジスタのビット数)より大きい130ビット巡回シフトは同一値になってしまい、一巡回以上のシフト(128ビット以上のシフト数)としてしまうことによるシフトレジスタ内の状態として、同じ値の発生を防止するためである。レジスタA制御テーブルは、レジスタを一巡回させるに当たり、その途中でできるだけ不規則なシフト数になる値を設定することが望ましい。しかし、シフトレジスタの構成を簡単にするには、なるべく限られたシフト数でシフトするようにしたい。そこで、レジスタを1個(1クロック)で15ビットと17ビットとの2種類のシフトができるように構成し、この2種類のシフトを用いて、更に、以下のようにして、異なる数のシフトを実現している。
【0174】
Z1 −Z0 =15(ここで、Z1 −Z0 =B1とする)、Z2 −Z1 =30(即ち、Z2 −Z1 =2B1)であり、Z2 −Z1 =2(Z1 −Z0 )という関係にする。また、シフトレジスタB制御テーブルに示すように、Z5−Z4 =34(ここで、Z5 −Z4 =2B2 とする)、Z6−Z5 =17(即ち、Z6 −Z5 =B2 )であり、Z5−Z4 =2(Z6 −Z5 )という関係にする。即ち、シフト数の差分を15ビットと30ビット又は17ビットと34ビットとし、1回のシフト数(15ビットと17ビット)の整数倍(2倍=I倍)となるシフト数(30ビット又は34ビット)とする。
【0175】
このように、シフト数の差分を1回のシフト数又は1回のシフト数の2倍以上の整数倍(I倍、Iは2以上の整数)のいずれかとすることにより、シフトレジスタA341を1回又は2回(I回)動作させることにより、制御テーブルに記憶したシフト数のオペレーションを容易に実現することができる。2回(I回)動作させるということは、シフトレジスタA341を動作させるために供給されている動作クロックの2クロック(Iクロック)サイクルでシフト動作が終了することを意味している。
【0176】
ここで、I回(2回)シフトさせる場合、I−1回(2−1=1回)目までのシフトしたデータは上位のデータも下位のデータもともに無視し、拡大鍵として使用しない。例えば、図19のZ1=15からZ2 =45へシフトする場合は、I=(Z2 −Z1 )/(1回のシフト数)=(45−15)/15=2となり、I−1回目(2−1=1回目)のシフト後のデータは、上位のデータも下位のデータもともに無視し、拡大鍵として使用しない。これは、図20では、key[8]とkey[9]に斜線が引かれている通り、拡大鍵として使用しないとして示されている。そして、I回目(2回目)のシフト後のデータの上位のデータと下位のデータのいずれか又は両方を拡大鍵として用いる。これは、図20では、key[12]とkey[13]とが拡大鍵として出力されることが示されている。
【0177】
このように、2以上の整数倍のシフトを行うのは、15ビット又は17ビットのみのシフトだけでなく、30(=15×2)ビット又は34(=17×2)ビット(又は、45(=15×3)ビット又は51(=17×3)ビット等)のシフトも行えるようにし、シフト数を変化させ、安全性をより高めるためである。また、前述した拡大鍵として使用しない場合を設けているのも、同様に、より安全性を高めるためである。
【0178】
拡大鍵として使用しないデータ(図20と図22において、斜線を引かれた拡大鍵として使用しない鍵)は、例えば、ハードウェアの処理、或いは、プログラムの処理が一連に連続して行われないような場合に発生させることが望ましい。例えば、図3において、データ正変換部(FL)とデータ逆変換部(FL-1)のオペレーションを行うとき、或いは、その前後、或いは、プログラムにおいて関数呼び出し、或いは、サブルーチンコール、或いは、割り込み処理を行う場合等の処理の切れ目、或いは、処理の変化時に行うようにするのが望ましい。
【0179】
また、図19に示した制御テーブルの特徴は、B1 =8×2−1=15(B1 =8×J1 −1、ここで、J1は1以上の整数)ビットのシフト数と、B2 =8×2+1=17(B2 =8×J2 +1、ここで、J2は0以上の整数、J1 =J2 又はJ1 ≠J2 )ビットのシフト数を指定していることである。シフトの量を8の倍数に±1とすることにより、奇数ビットのシフトを行うことになり、拡大鍵のデータ処理部への作用が8ビット単位、即ち、偶数単位であることから、偶数ビットだけシフトするよりも安全性が高まる。また、シフト量として8の倍数に1ビットの±を行っているだけなので、例えば、1ビットシフト命令しか持たないCPU等においては、3ビットや5ビットシフトするよりも、高速処理を行うことが可能な場合がある。また、このシフト処理を1ビットシフトしかできないハードウェアを用いて行う場合にも、同様に、高速処理を適用することができる場合がある。
【0180】
前述したビット長変換部310の説明においては、3種類のビット幅の鍵データを入力する場合を示したが、128ビット(Gビット)と256ビット(2Gビット)の間のビット長Q(G<Q<2G)を持つ鍵データが入力された場合も、何等かのアルゴリズムを用いて256ビットの鍵データが入力された場合と同様のサイズに鍵データを伸長させることができる。即ち、Gビットと2Gビットの間の長さQを持つ鍵データが入力された場合、ビット長変換部310によってQビットの鍵データを2Gビットの鍵データに変換することができる。
【0181】
次に、図34を用いて等価鍵の非存在証明の説明をする。
【0182】
以下の図34の説明では、「+」で排他的論理和演算を意味するとする。
【0183】
ここで、2つの128ビットの鍵データSK1とSK2(SK1≠SK2)とを入力するものとし、ビット長変換部310が、SK1からSK1high=SK1=(SKH1|SKL1)を、また、SK2からSK2high=SK2=(SKH2|SKL2)を出力するものとする。ここで、SKHi(i=1,2)はSKiの上位64ビットのデータであり、SKLi(i=1,2)はSKiの下位64ビットのデータである。
【0184】
SKH1とSKH2との排他的論理和をΔAとし、SKL1とSKL2との排他的論理和をΔBとすると、SK1≠SK2であるから、「少なくとも、ΔA≠0又はΔB≠0」が成り立つ。
【0185】
図34に示すように、このΔAとΔBが2段の非線形変換を受けていくことによって、ΔA+ΔD,ΔB+ΔCに変化する。このことは、SK1highとSK2highとの排他的論理和(ΔA|ΔB)が、SK1highから2段の非線形変換を受けたデータとSK2highから2段の非線形変換を受けたデータとの排他的論理和(ΔA+ΔD|ΔB+ΔC)に変化したことを意味する。従って、この2段の非線形変換を受けたデータが、排他的論理和回路999でそれぞれSK1high,SK2highと排他的論理和演算されると、この2つのデータの排他的論理和は(ΔD|ΔC)になる。さて、ここで、非線形変換が全単射関数であれば、ΔX≠0の入力に対して、ΔY≠0を出力することから、「少なくとも、ΔA≠0又はΔB≠0」であるならば、「少なくとも、ΔC≠0又はΔD≠0」となる。故に、2段の非線形変換によってSK1highとSK2highから同じデータを出力することはあり得ないことを意味しており、等価鍵の非存在証明となる。
【0186】
一方、図35に示すように、2段の非線形変換ではなく、3段の非線形変換を行う場合について考えてみる。「少なくとも、ΔA≠0又はΔB≠0」が成り立つのであるから、ΔAかΔBのいずれかが0である場合があり得る。もし、ΔA=0であるとするとΔC=0となり、また、上記と同じ議論により、SK1highとSK2highとの排他的論理和(0|ΔB)が、SK1highから3段の非線形変換を受けたデータと、SK2highから3段の非線形変換を受けたデータとの排他的論理和(ΔB+ΔE|ΔD)に変化する。従って、この3段の非線形変換を受けたデータが、排他的論理和回路999でそれぞれSK1high,SK2highと排他的論理和演算されると、この2つのデータの排他的論理和は(ΔB+ΔE|ΔB+ΔD)になる。さて、ここで、ΔB=ΔD=ΔE≠0が成り立つと仮定すると、(ΔB+ΔE|ΔB+ΔD)=(0|0)となる。つまり、この3段の非線形変換を受けたデータが、それぞれSK1high,SK2highと排他的論理和演算すると、その演算結果が一致することを意味する。即ち、SK1highとSK2highから同じデータを出力することを意味し、暗号の安全性上問題が多い等価鍵が存在することになる。
【0187】
以上述べた3段の非線形変換のみならず、一般的な非線形変換では異なるSK1とSK2から等価なK1 を出力する、即ち、等価鍵が存在する可能性があるが、本実施の形態で述べる2段の非線形変換なら等価鍵が存在しないことを証明できる。
【0188】
また、等価鍵の非存在証明が付けられるのは、この2段の非線形変換以外にもあると思われるが、2段の非線形変換を行う場合は、等価鍵の非存在証明を付けることができる上、簡単な構成であるため、2段の非線形変換をするのが望ましい構成である。
【0189】
図24は、暗号化用データ変換装置100又は復号用データ変換装置400が実装されるコンピュータを示す図である。
【0190】
暗号化用データ変換装置100又は/及び復号用データ変換装置400は、プリントサーキットボードとしてバスに接続される。このプリントサーキットボードには、CPUやメモリや論理回路素子が備えられており、前述してきた動作を行うことによりCPUから供給される平文を暗号文にし、CPUに返送する。或いは、CPUから送られてきた暗号文を平文に復号し、CPUに返送する。
【0191】
暗号化用データ変換装置100又は復号用データ変換装置400は、このように、全てハードウェアを用いて実現することが可能である。また、暗号化用データ変換装置100又は復号用データ変換装置400は、全てソフトウェアを用いてデータ変換方法としても実現することも可能である。即ち、磁気ディスク装置やフレキシブルディスク装置に記憶されたプログラムを用いて前述した動作を行わせることができる。或いは、図示していないが、ハードウェアとソフトウェアを組み合わせて前述した動作を実現させるようにしても構わない。また、図示していないが、1台のコンピュータで前述した動作全てを実現する必要はなく、サーバとクライアント、或いは、ホストコンピュータと端末コンピュータのように、分散されたシステムで前述した動作を達成するようにしても構わない。
【0192】
前述した図1〜図47の図中に矢印が記載されている図面は、矢印の方向が動作の流れを示しており、前述した図1〜図47の図中に矢印が記載されている図面は、データ変換装置のブロック図でもあり、かつ、フローチャート図でもある。そして、前述したブロック図における「何々部」と記載されている部分は、「何々工程」又は「何々処理」と読み換えることにより、データ変換方法を示す動作フローチャート又はプログラムフローチャートとなる。
【0193】
なお、前述した実施の形態では、128ビットの平文と暗号文の場合を示したが、256ビットの平文と暗号文やその他のビット数の平文と暗号文の場合でもよい。
【0194】
また、前述した実施の形態では、128,192,256ビットの鍵データと64ビットの拡大鍵の場合を示したが、その他のビット数の場合でもよい。
【0195】
平文と暗号文と鍵データと拡大鍵のビット長が変わった場合には、もちろん、そのビット長に対応して、各部や各工程や各処理の処理するビット長も変わる。
【技術分野】
【0001】
本発明は、情報通信等において、デジタル情報を保護する暗号化と復号及びデータ拡散等のためのデータ変換装置とデータ変換方法及びデータ変換方法を記録した記録媒体に関するものである。
【背景技術】
【0002】
図25は、「現代暗号理論」(社団法人電子情報通信学会、平成9年11月15日発行、46頁)に記載された従来のDES暗号に用いられる暗号関数を示す図である。
【0003】
図25に示すように、8個のSボックスが設けられている。この8個のSボックスは、それぞれ異なるテーブルである。各テーブルは、6ビットの入力データから4ビットの出力データを出力するものである。
【0004】
図26は、「Specification of E2 − a 128−bit Block Cipher」(Nippon Telegraph and Telephone Corporaion,June 14,1998、10頁)に記載された非線形変換関数を示す図である。
【0005】
図26に示すように、各S関数部には、8個のSボックスが設けられている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Bruce Schneier,「Description of a New Variable−Lengh Key, 64−Bit Block Cipher (Blowfish)」, Lecture Notes in Computer Science, Vol.809, p.191−204, 1994年7月21日JICST受入,引用非特許03−004170
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来の暗号装置においては、複数のSボックスが設けられている。ある暗号では、それぞれ異なるテーブルが用意されているため、記憶容量が1つのSボックスを使う場合に比べて増大し、また、別の暗号では、1つのSボックスしか使っていないため、安全性が低下するという問題がある。
【0008】
また、図7に示すように、暗号化部にデータ正変換部(FL)250を設けた場合には、復号部にデータ逆変換部(FL-1)270を設けなければ復号することができない。データ正変換部(FL)250とデータ逆変換部(FL-1)270は、一般には、異なる回路であるため、暗号化部と復号部を同一の構成にすることができないという課題があった。
【0009】
また、拡大鍵を生成する場合に、より安全性の高い拡大鍵を生成するために複雑なオペレーションが必要であった。また、拡大鍵を生成するに当たり、初期値として入力される鍵データのビット数が一定値でなければならないという課題があった。
【0010】
この発明は、暗号化用と復号用の回路を同一にするとともに、非線形関数計算のために用いられる回路規模、プログラムサイズ、メモリ容量を削減し、拡大鍵を生成する場合に、簡単な構成で生成できるシステムを提供することを目的とする。
【課題を解決するための手段】
【0011】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、データ変換を行うデータを第1のデータ(L)と第2のデータ(R)に分割してデータ変換するとともに、
上記データ処理部は、
第1のデータ(L)を変換するデータ正変換部(FL)と、
第2のデータ(R)を上記データ正変換部(FL)の変換とは逆の変換をするデータ逆変換部(FL-1)と
を備えたことを特徴とする。
【0012】
上記データ処理部は、第1の入力と第2の入力と、第1の出力と第2の出力とを有し、
上記データ正変換部(FL)は、変換したデータをデータ処理部の第1の入力へ出力し、
上記データ逆変換部(FL-1)は、データ処理部の第2の出力から出力されたデータを変換して出力することを特徴とする。
【0013】
上記データ処理部は、第1の入力と第2の入力と、第1の出力と第2の出力とを有し、
上記データ正変換部(FL)は、変換したデータをデータ処理部の第2の入力へ出力し、
上記データ逆変換部(FL-1)は、データ処理部の第1の出力から出力されたデータを変換して出力することを特徴とする。
【0014】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、データを非線形変換する非線形変換部を備え、
非線形変換部は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換部(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換部(s2)と
を備えたことを特徴とする。
【0015】
上記第1変換部(s1 )は、変換テーブルTにデータy1 を入力してデータs1 (y1)を出力させ、このデータをデータz1 =s1 (y1 )として出力し、
上記第2変換部(s2 )は、変換テーブルTにデータy2 を入力してデータs1 (y2)を出力させ、データs1 (y2 )を巡回シフト処理したデータ(rot(s1 (y2)))をデータz2 =rot(s1 (y2 ))として出力することを特徴とする。
【0016】
上記データ処理部は、更に、
変換するデータの第1部分データと第2部分データとは異なる一部分のデータを第3部分データとして入力し、第1部分データと第2部分データと第3部分データとは異なる一部分のデータを第4部分データとしてそれぞれ入力して、上記変換テーブルTを用いた変換と、第2変換部(s2)の第2部分用演算とはそれぞれ異なる第3部分用演算と第4部分用演算とにより、第3部分データと第4部分データとをそれぞれ変換し、変換したデータを出力する第3変換部(s3)と第4変換部(s4 )とを備えたことを特徴とする。
【0017】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換部と、
上記部分体変換部の前段と後段との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応でGF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換部を備えたことを特徴とする。
【0018】
上記部分体変換部は、N(Nは偶数)ビットのデータXをX=X0 +βX1 (X0 ,X1:部分体の元、β:もとの体の元)となる上位のN/2ビットのデータX1 と下位のN/2ビットのデータX0 に等分して、Y=Y0+βY1 =1/(X0 +βX1 )(但し、X=0のときY=0)となる上位のN/2ビットのデータY1と下位のN/2ビットのデータY0 をそれぞれN/2ビット単位で演算してデータYを求める複数のN/2ビット演算器のみを有することを特徴とする。
【0019】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )=I×B(Iは整数、B=Zi+1 −Zi ))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成する鍵シフト部を有するとともに、
上記鍵シフト部は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフトレジスタと、
Zi ビット巡回シフトされた鍵データに対して巡回シフトレジスタを1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフトレジスタをI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+2ビット巡回シフトされた鍵データを生成させる制御部と
を有することを特徴とする。
【0020】
上記巡回シフトレジスタは、巡回シフトレジスタを動作させるために供給されている動作クロックの1クロックサイクルでZi+1 −Ziビット(Bビット)の巡回シフトをする回路であることを特徴とする。
【0021】
上記巡回シフト回路は、(Zi+1 −Zi )ビット(Bビット)の値として、B1 =8×J1+1(J1 =0以上の整数)ビットと、B2 =8×J2 −1(J2 =1以上の整数、J1とJ2 は無関係、即ち、J1 ≠J2 又はJ1 =J2)ビットとのいずれかの値を選択するセレクタを備えたことを特徴とする。
【0022】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成する鍵シフト部を有するとともに、
上記鍵シフト部は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とする。
【0023】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記鍵生成部は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換部と、
上記第1のGビット鍵変換部から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換部と
を備え、
上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換部に入力して変換して第2のGビット変換鍵データK2 を出力し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1と、第2のGビット変換部により出力された第2のGビット変換鍵データK2 とを連結して、変換された2Gビット鍵データ(K1,K2 )として出力することを特徴とする。
【0024】
上記第1のGビット鍵変換部は、
Gビット鍵データを非線形変換する2段の非線形データ変換部と、
2段目の非線形データ変換部から出力された変換途中のGビット鍵データと、
第1のGビット鍵変換部が入力したGビット鍵データとの論理演算を行う論理演算部と
を備えたことを特徴とする。
【0025】
上記鍵生成部は、更に、Qビット(G<Q<2G)の鍵データを入力した場合、Qビットの鍵データを2Gビットの鍵データにするビット長変換部を備えたことを特徴とする。
【0026】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部の間に配置したことを特徴とする。
【0027】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部との両者の前と両者の後とのいずれかに配置したことを特徴とする。
【0028】
上記S関数部は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換部(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して、上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換部(s2)と
を備えたことを特徴とする。
【0029】
この発明に係るデータ変換装置は、少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、データ変換を行うデータ同士で論理演算するP関数部を有する非線形関数部(F)を備え、
上記P関数部は、z1 ,z2 ,・・・,z8 の8個の4n(nは1以上の整数)ビットデータを入力し、
上記z1 ,z2 ,z3 ,z4 の4個のデータのうち、少なくとも2個以上のデータ排他的論理和演算を行って4nビットの結果U1を得る回路と、
上記z5 ,z6 ,z7 ,z8 の4個のデータのうち、少なくとも2個以上のデータ排他的論理和演算を行って4nビットの結果U2を得る回路と、
U1 とU2 との排他的論理和演算を行って4nビットの結果U3 を得る回路と、
U1 に対して巡回シフトをする巡回回路と、
上記巡回回路の出力とU3 との排他的論理和演算を行って結果U4 を得る回路と
を備え、
上記U3 ,U4 をz1',z2',・・・,z8'として出力することを特徴とする。
【0030】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、データ変換を行うデータを第1のデータ(L)と第2のデータ(R)に分割するとともに、
上記データ処理は、第1のデータ(L)を変換するデータ正変換処理(FL)と、
第2のデータ(R)を上記データ正変換処理(FL)の変換とは逆の変換をするデータ逆変換処理(FL-1)と
を備えたことを特徴とする。
【0031】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、データを非線形変換する非線形変換処理を備え、
非線形変換処理は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換処理(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して、上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換処理(s2)とを備えたことを特徴とする。
【0032】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換処理と、
上記部分体変換処理の前段処理と後段処理との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応でGF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換処理とのいずれかを備えたことを特徴とする。
【0033】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは、1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )(Iは整数、B=Zi+1 −Zi ))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフト処理と、
Zi ビット巡回シフトされた鍵データに対して巡回シフト処理を1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフト処理をI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+2ビット巡回シフトされた鍵データを生成させる制御処理と
を有することを特徴とする。
【0034】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とする。
【0035】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記鍵生成処理は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換処理と、
上記第1のGビット鍵変換処理から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換処理と
を備え、
上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換部に入力して変換して第2のGビット変換鍵データK2 を出力し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1と、第2のGビット変換処理により出力された第2のGビット変換鍵データK2 とを連結して、変換された2Gビット鍵データ(K1,K2 )として出力することを特徴とする。
【0036】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数をS関数処理とP関数処理の間に動作させることを特徴とする。
【0037】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数処理をS関数処理とP関数処理との両者の前と両者の後とのいずれかで動作させることを特徴とする。
【0038】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、
第1の入力部と、
第2の入力部と、
第1の出力部と、
第2の出力部と
データの暗号化とデータの復号とを同一のアルゴリズムで行う非線形変換部と、
第1の入力部に入力されるデータを変換する第1入力データ正変換部と、
第2の出力部から出力されるデータを入力して上記第1入力データ正変換部の変換とは逆の変換をする第2出力データ逆変換部と
を備えたことを特徴とする。
【0039】
上記非線形変換部は、
第1の入力データを第1の入力部から入力し、
第2の入力データを第2の入力部から入力し、
第1の入力データと第2の入力データとを暗号化用鍵データを用いて非線形変換し、第1の変換データと第2の変換データとを生成し、
第1の変換データを第1の出力部から出力し、
第2の変換データを第2の出力部から出力し、
上記第1の変換データを第2の入力部から入力し、
上記第2の変換データを第1の入力部から入力し、第1の変換データと第2の変換データとを復号用鍵データを用いて非線形変換し、第1の出力データと第2の出力データとを生成し、
第1の出力データを第2の出力部から出力し、
第2の出力データを第1の出力部から出力した場合に、
第1の入力データと第2の出力データとが同一となり、第2の入力データと第1の出力データとが同一となるアルゴリズムを備えたことを特徴とする。
【0040】
上記データ処理部は、更に、
第2の入力部に入力されるデータを変換する第2入力データ正変換部と、
第1の出力部から出力されるデータを入力して、上記第2入力データ正変換部の変換とは逆の変換をする第1出力データ逆変換部と
を備えたことを特徴とする。
【0041】
この発明に係るデータ変換装置は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、データ変換を行うデータを非線形変換する非線形関数部(F)を備え、
上記鍵生成部は、非線形関数部(F)に供給する鍵データを加工して、加工した鍵データをデータ処理部の非線形関数部(F)以外の部分に供給してデータと演算させることを特徴とする。
【0042】
この発明に係るデータ変換方法は、鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、データ変換を行うデータを非線形変換する非線形関数処理(F)を備え、
上記鍵生成処理は、非線形関数処理(F)に供給する鍵データを加工して、加工した鍵データをデータ処理の非線形関数処理(F)以外の処理に供給してデータと演算させることを特徴とする。
【0043】
また、この発明は、上記データ変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【0044】
また、この発明は、上記データ変換方法をコンピュータに実行させるプログラムであることを特徴とする。
【発明の効果】
【0045】
この発明の実施の形態によれば、暗号化と復号とが同一のアルゴリズムで行えるように、データ正変換部(FL)251とデータ逆変換部(FL-1)271を備えているので、暗号化部200と復号部500を兼用して用いることができる。
【0046】
また、この発明の実施の形態によれば、変換テーブルTを兼用してSボックス第1変換部13とSボックス第2変換部14を構成しているので、構成が簡単になるという効果がある。
【0047】
また、この発明の実施の形態によれば、部分体変換部18を用いているので、構成が簡単になるとともに、線形変換部85と線形変換部87を設けているので、部分体変換部18を用いた場合でも安全性が向上する。
【0048】
また、この発明の実施の形態によれば、シフト制御部345がシフトレジスタを整数回動作させることにより15ビットや17ビットのみの一定値でないシフト数(例えば、30ビットや34ビット)を用いた鍵データのシフトを行うことができ、安全性を向上させることができる。
【0049】
また、この発明の実施の形態によれば、シフトレジスタにおいてシフトされたデータから拡大鍵として使用しない場合を設けているので、更に、安全性を向上させることができる。
【0050】
また、この発明の実施の形態によれば、ビット数の異なる鍵データが入力された場合でも、ビット長変換部310により一定長の鍵データに変換するので、柔軟性のある鍵生成オペレーションが行える。
【0051】
また、この発明の実施の形態によれば、第1のGビット鍵変換部320の中で2段の非線形変換を用いていることにより、K1 について等価鍵が存在しないことが証明でき、安全性を向上させることができる。
【0052】
また、この発明の実施の形態によれば、鍵関数部25の配置位置を変更したので、高速処理が可能になる。
【図面の簡単な説明】
【0053】
【図1】暗号化用データ変換装置100と復号用データ変換装置400を示す図。
【図2】符号及び記号の説明図。
【図3】暗号化部200又は復号部500の構成図。
【図4】暗号化部200又は復号部500の他の構成図。
【図5】データ正変換部(FL)251の構成図。
【図6】データ逆変換部(FL-1)271の構成図。
【図7】従来の暗号化部と復号部の一部を示す図。
【図8】暗号化部200と復号部500の一部を示す図。
【図9】点対称におかれたデータ正変換部(FL)251とデータ逆変換部(FL-1)271を示す図。
【図10】点対称となるデータ正変換部(FL)とデータ逆変換部(FL-1)の関係を示す図。
【図11】非線形関数部Fを示す図。
【図12】Sボックス第1変換部13とSボックス第2変換部14の構成図。
【図13】Sボックス変換部21の構成図。
【図14】線形変換部85の構成図。
【図15】線形変換部87の構成図。
【図16】鍵生成部300又は鍵生成部600の構成図。
【図17】ビット長変換部310の動作説明図。
【図18】シフトレジスタA341の構成図。
【図19】シフト制御部345の制御テーブルの構成図。
【図20】シフトレジスタA341とシフトレジスタB342の動作説明図。
【図21】シフトレジスタA341とシフトレジスタB342と拡大鍵の対応図。
【図22】シフトレジスタA341〜シフトレジスタD344の動作説明図。
【図23】シフトレジスタA341〜シフトレジスタD344と拡大鍵の対応図。
【図24】暗号化用データ変換装置100と復号用データ変換装置400が実装されたコンピュータを示す図。
【図25】従来のDESの暗号関数の構成図。
【図26】従来の128ビットブロック暗号E2の非線形関数を示す図。
【図27】Sボックス変換部の他の例を示す図。
【図28】Sボックス第1〜第4変換部を用いた非線形関数部Fを示す図。
【図29】鍵関数部25の配置を変更した図。
【図30】鍵関数部25の配置を変更した他の図。
【図31】P関数部30の他の構成図。
【図32】P関数部30の他の構成図。
【図33】図31のS1〜S4の構成と動作を示す図。
【図34】等価鍵の非存在証明の説明図。
【図35】等価鍵の非存在証明の説明図。
【図36】暗号化部200又は復号部500の他の構成図。
【図37】暗号化部200又は復号部500の他の構成図。
【図38】暗号化部200又は復号部500の他の構成図。
【図39】暗号化部200又は復号部500の他の構成図。
【図40】暗号化部200又は復号部500の他の構成図。
【図41】暗号化部200又は復号部500の他の構成図。
【図42】図39と図40とを併せた場合を示す図。
【図43】図3に示した暗号化部200又は復号部500に対して図28に示した非線形関数部Fを用いた場合の構成図。
【図44】図43に示した非線形関数部Fの中から鍵関数部25を削除した非線形関数部F’を用いる場合を示す図。
【図45】図44の構成に対して更にホワイトニング拡大鍵の演算を拡大鍵とともに行う場合を示す図。
【図46】非線形関数部Fが図29に示したような構成をとる場合に、非線形関数部Fから鍵関数部25を削除し、代わりに、拡大鍵kをXOR回路298に供給する場合を示す図。
【図47】非線形関数部Fが図30に示したような構成をとる場合、非線形関数部Fから鍵関数部25を削除し、代わりに、非線形変換された拡大鍵k'をXOR回路298に供給する場合を示す図。
【発明を実施するための形態】
【0054】
実施の形態1.
図1は、この実施の形態の暗号化用データ変換装置100と復号用データ変換装置400を示す図である。
【0055】
暗号化用データ変換装置100は、例えば、128ビットの平文を入力し、128ビットの暗号文を出力する暗号装置である。復号用データ変換装置400は、128ビットの暗号文を入力し、128ビットの平文を出力する復号装置である。暗号化用データ変換装置100は、暗号化部200と鍵生成部300から構成されている。暗号化部200は、平文の暗号化を行う暗号化用データ処理部である。鍵生成部300は、128ビット又は192ビット又は256ビットの鍵データを入力し、定数Viを用いて複数(n個)の64ビット又は128ビットの拡大鍵を生成して暗号化部200に供給する。復号用データ変換装置400は、復号部500と鍵生成部600を備えている。復号部500は、暗号文を入力し、暗号文の復号を行う復号用データ処理部である。鍵生成部600は、前述した鍵生成部300と同じもの又は同様のものである。また、暗号化部200と復号部500は、同一のものを用いることができ、図においては、暗号化部200と復号部500に分けて図示しているが、1つの回路又は1つのプログラムで兼用することができる。同様に、鍵生成部300と鍵生成部600も1つの回路又は1つのプログラムで兼用することができる。即ち、暗号化用データ変換装置100と復号用データ変換装置400は、同一の回路又は同一のプログラムで兼用することができる。
【0056】
図2は、以下の図及び説明において用いる記号の意味を示している。
【0057】
以下、図3以降の各図において、左側のデータを左データLと呼び、図において、右側のデータを右データRと呼ぶものとする。また、非線形データ変換部210,220,230,240へ入力するデータを入力データと呼び、非線形データ変換部210,220,230,240の内部のデータを中間データと呼び、非線形データ変換部210,220,230,240から出力するデータを出力データと呼ぶものとする。
【0058】
図3は、暗号化部200又は復号部500の一例を示す図である。
【0059】
図3は、6段の非線形データ変換部210と6段の非線形データ変換部220と6段の非線形データ変換部230が縦続接続されている場合を示している。6段の非線形データ変換部210と6段の非線形データ変換部220の間には、データ正変換部(FL)251とデータ逆変換部(FL-1)271が設けられている。また、6段の非線形データ変換部220と6段の非線形データ変換部230の間には、データ正変換部(FL)253とデータ逆変換部(FL-1)273が設けられている。6段の非線形データ変換部210の中には、6段の非線形データ変換部が設けられている。例えば、1つの非線形データ変換部280は、非線形関数部FとXOR(排他的論理和)回路290から構成されている。このようにして、図3においては、全部で18段の非線形データ変換部が設けられている。
【0060】
非線形データ変換部210は、任意の2つの右入力データR0 と左入力データL0 に対し、上記左入力データL0を第1の拡大鍵k1 を用いて第1の非線形変換し、該第1の非線形変換された出力データと上記右入力データR0 との排他的論理和を第1の左中間データL1として出力し、上記左入力データL0 を第1の右中間データR1 として出力する第1の非線形データ変換部280と、上記第1の左中間データR1を第2の拡大鍵k2 を用いて第2の非線形変換し、該第2の非線形変換された出力データと上記第1の右中間データR1 との排他的論理和を第2の左中間データL2として出力し、上記第1の左中間データL1 を第2の右中間データR2 として出力する第2の非線形データ変換部281とを備え、第1の非線形データ変換部280から第6の非線形データ変換部285を縦続接続して、最終の右中間データR6と左中間データL6 を変換後の出力データとするものである。
【0061】
図4は、図3の暗号化部200に対して更にデータ正変換部(FL)255とデータ逆変換部(FL-1)275と6段の非線形データ変換部240を追加し、全部で24段の非線形データ変換部により変換を行う場合を示している。
【0062】
図5は、データ正変換部(FL)251を示す図である。
【0063】
図5においては、データ正変換部(FL)251の入力データを左入力データ51と右入力データ52に分け、論理演算を行った後、左出力データ60と右出力データ61により出力データを作成している場合を示している。左入力データ51は、AND回路54において、拡大鍵53との論理積がとられ、その後、1ビット巡回左シフト部55において、左方向への1ビットの巡回シフト(サーキュラシフトともいう)が行われる。シフト後は、右入力データ52との排他的論理和がXOR回路56により演算される。XOR回路56の出力は、右出力データ61になるとともに、OR回路58において、拡大鍵57との論理和がとられ、その結果は、更に、XOR回路59において左入力データ51と排他的論理和の演算が行われ、左出力データ60となる。
【0064】
図6は、データ逆変換部(FL-1)271を示す図である。
【0065】
図6においては、入力データを左入力データ71と右入力データ72に分け、論理演算を行った後、左出力データ80と右出力データ81により出力データを作成している場合を示している。
【0066】
右入力データ72は、OR回路74において、拡大鍵73との論理和がとられ、更に、XOR回路75において、左入力データ71との排他的論理和がとられる。その結果、XOR回路75からの出力は左出力データ80になるとともに、AND回路77において、拡大鍵76との論理積がとられ、1ビット巡回左シフト部78において、左方向への1ビットの巡回左シフトが行われ、その結果は、更に、XOR回路79において右入力データ72と排他的論理和がとられ、右出力データ81となる。
【0067】
図5に示したデータ正変換部(FL)251と図6に示したデータ逆変換部(FL-1)271は、正逆反対のオペレーションをするものである。従って、同一の拡大鍵のもとで図5の出力データYを図6の入力データYにすることにより、図6の出力データXとして図5の入力データXを得ることができる。
【0068】
このように、一方の出力データを他方の入力データとすることにより、一方の入力データを他方の出力データとして得ることができる関係を正変換と逆変換の関係にあるという。データ正変換部(FL)251とデータ逆変換部(FL-1)271は、このような正変換と逆変換を行う回路である。
【0069】
なお、図5の1ビット巡回左シフト部55と図6の1ビット巡回左シフト部78はともに左シフトをするが、両方とも右シフトを行うようにしてもよい。また、データ正変換部(FL)251とデータ逆変換部(FL-1)271は、正変換と逆変換を行うのであれば、他の構成でもよい。例えば、巡回のシフト数を変えてもよい。また、notを含んだAND回路、notを含んだOR回路、notを含んだXOR回路を、更に付加してもよい。即ち、notを含んだAND回路、notを含んだOR回路、notを含んだXOR回路を、それぞれandn,orn,xornと表した場合、定義は以下の通りである。
【0070】
x andn y:(not x)and y
x orn y:(not x)or y
x xorn y:(not x)and y
最近のいくつかのCPUでは、notも含んだand,or,xor命令を備えているものがある。これらの命令は、and,or,xor命令と同様のコストで実行可能である。
【0071】
図7は、従来の暗号化部201と従来の復号部501を示している。
【0072】
従来の暗号化部201においては、2つのデータ正変換部FLが設けられている。このため、この逆のオペレーションをするためには、復号部に2つのデータ逆変換部FL-1をおかなければならない。従って、暗号化部と復号部の構成が一般的には異なってしまい、暗号化部と復号部を同一回路にすることができない。
【0073】
一方、図8に示すように、この実施の形態では、暗号化部200において、データ正変換部(FL)251とデータ逆変換部(FL-1)271を隣り合わせに配置しているため、復号部500においても全く同じ構成で復号を行うことができる。例えば、右データRをデータ正変換部(FL)251で変換して左データL’を得、左データLをデータ逆変換部(FL-1)271で変換して右データR’を得た場合、左データL’をデータ逆変換部(FL-1)271に入力させてやることにより右データRを得ることができ、右データR’をデータ正変換部(FL)251に入力させてやることにより左データLを得ることができる。
【0074】
このようにして、暗号化部200と復号部500は、全く同じ構成で実現することができ、暗号化部200と復号部500を兼用して用いることができる。
【0075】
図9は、データ正変換部(FL)251とデータ逆変換部(FL-1)271を非線形データ変換部280を中心にして点対称となる位置においた場合を示している。
【0076】
このように、非線形データ変換部280を中心にしてデータ正変換部(FL)251とデータ逆変換部(FL-1)271を点対称の位置においた場合に、同一構成により暗号化と復号を行うことができる。
【0077】
図10は、点対称の位置におかれたデータ正変換部(FL)とデータ逆変換部(FL-1)との対応を示している。
【0078】
図10に示すように、図3においてはデータ正変換部(FL)251とデータ逆変換部(FL-1)273が6段の非線形データ変換部220を中心とした点対称の位置に配置されていることを示している。
【0079】
なお、図3,図4,図8,図9において、データ正変換部(FL)とデータ逆変換部(FL-1)の位置は逆でもよい。また、図3,図4,図8,図9において、右データRと左データLは逆でもよい。
【0080】
図36は、6段の非線形データ変換部210と6段の非線形データ変換部220と6段の非線形データ変換部230とを用いて暗号化部200を構成した場合を示している。
【0081】
6段の非線形データ変換部210と6段の非線形データ変換部220と6段の非線形データ変換部230とは、暗号化と復号との両方に用いることができる回路である。
【0082】
ここで、6段の非線形データ変換部210とデータ正変換部(FL)250とデータ逆変換部(FL-1)271とにより正逆データ変換部211を構成している。ここで、正逆データ変換部とは、暗号化と復号との両方に用いることができる回路のことをいうものとする。即ち、正逆データ変換部は、一方の出力データを他方の入力データとすることにより、一方の入力データを他方の出力データとして得ることができる正変換と逆変換とを行う1つの回路である。
【0083】
また、6段の非線形データ変換部220とデータ正変換部(FL)251とデータ逆変換部(FL-1)273とにより正逆データ変換部221を構成している。
【0084】
また、6段の非線形データ変換部230とデータ正変換部(FL)253とデータ逆変換部(FL-1)275とにより正逆データ変換部231を構成している。
【0085】
これら正逆データ変換部211と正逆データ変換部221と正逆データ変換部231とを縦列に接続して暗号化部200が構成されている。そして、この暗号化部200は、復号部500としても用いることができる。
【0086】
また、6段の非線形データ変換部210と6段の非線形データ変換部220とデータ正変換部(FL)251とデータ逆変換部(FL-1)271とを非線形データ変換部1210と見なせば、非線形データ変換部1210は、暗号化と復号との両方に用いることができる回路である。ここで、非線形データ変換部1210とデータ正変換部(FL)250とデータ逆変換部(FL-1)273とにより正逆データ変換部1211を構成している。
【0087】
また、6段の非線形データ変換部220と6段の非線形データ変換部230とデータ正変換部(FL)253とデータ逆変換部(FL-1)273とを非線形データ変換部1220と見なせば、非線形データ変換部1220とデータ正変換部(FL)251とデータ逆変換部(FL-1)275とにより正逆データ変換部1221を構成している。
【0088】
正逆データ変換部1211と正逆データ変換部1221とは、復号部500にも用いることができる。
【0089】
また、6段の非線形データ変換部210から6段の非線形データ変換部230までを非線形データ変換部2210と見なせば、非線形データ変換部2210は、暗号化と復号との両方に用いることができる回路である。
【0090】
ここで、非線形データ変換部2210とデータ正変換部(FL)250とデータ逆変換部(FL-1)275とにより正逆データ変換部2211を構成している。
【0091】
正逆データ変換部2211は、復号部500にも用いることができる。
【0092】
以上のように、暗号化部200又は復号部500は、正逆データ変換部を複数縦続接続することにより構成することができる。
【0093】
また、暗号化部200又は復号部500は、正逆データ変換部の中に正逆データ変換部を含ませることにより、正逆データ変換部を階層化して構成することができる。
【0094】
図37は、6段の非線形データ変換部210を備えた暗号化部200と復号部500とが同一構成となる例を示している。
【0095】
図37の6段の非線形データ変換部210は、図3,図4に示すように、偶数段の非線形データ変換部280を有している。データAは、第1入力データ正変換部256により変換されデータA’となり、第1の入力部261に入力され、第1の入力部261から入力されたデータA’は、第1の出力部263からデータA1’として出力される。また、第2の入力部262から入力されたデータBは、第2の出力部264からデータB1として出力される。第2の出力部264から出力されたデータB1 は、第2出力データ逆変換部279により変換されデータB1’として出力される。
【0096】
暗号化部200の第1の出力部263から出力されたデータA1’は、復号部500の第2の入力部262にデータA1’として入力される。暗号化部200の第2出力データ逆変換部279から出力されたデータB1’は、復号部500の第1入力データ正変換部256にデータB1’として入力され、データB1として出力される。
【0097】
非線形データ変換部210は、データB1 を入力してデータBを出力する。また、非線形データ変換部210は、データA1’を入力してデータA’を出力する。第2出力データ逆変換部279は、データA’を入力してデータAを出力する。
【0098】
図38では、奇数段の非線形データ変換部219が奇数段の非線形データ変換部280を有している。従って、第1の入力部261から入力されたデータA’は、第2の出力部264からデータA1’として出力され、第2出力データ逆変換部279により変換され、データA1”として出力される。また、第2の入力部262から入力したデータBは、第1の出力部263からデータB1として出力される。
【0099】
暗号化部200の第1の出力部263から出力されたデータB1 は、復号部500の第2の入力部262にデータB1 として入力される。暗号化部200の第2出力データ逆変換部279から出力されたデータA1”は、復号部500のデータA1”として入力され、第1入力データ正変換部256に入力される。
【0100】
図37,図38の場合は、いずれも、暗号化部200と復号部500とが同一構成で、暗号化、復号ができる。
【0101】
図39は、第2の入力部262に第2入力データ正変換部257を設け、第1の出力部263に第1出力データ逆変換部278を設けた場合を示している。
【0102】
図40は、第1の入力部261に第1入力データ逆変換部276を設け、第2の出力部264に第2出力データ正変換部259を設けた場合を示している。
【0103】
図41は、左側の入出力部261,263にデータ正変換部256,258を設け、右側の入出力部262,264にデータ逆変換部277,279を設けた場合を示している。
【0104】
図42は、図39と図40とを併せた場合を示している。
【0105】
図示していないが、図37と図39を併せてもよい。また、図38と図39とを併せてもよい。また、図示していないが、図37,図39から図42の6段(偶数段)の非線形データ変換部210を奇数段の非線形データ変換部219としてもよい。図39から図42の場合も、暗号化部200と復号部500との同一構成で実現できる。
【0106】
実施の形態2.
図11は、非線形データ変換部280の非線形関数部Fの構成図である。
【0107】
非線形関数部Fは、F関数入力データ10を入力し、非線形変換を行ってF関数出力データ40を出力する。64ビットのF関数入力データ10は、8つのデータに分けられ、8ビットのデータとして処理される。各8ビットのデータは、鍵関数部25の8個のXOR回路12に入力され、拡大鍵11との排他的論理和がとられ、S関数部20において、置換を用いた非線形変換を受ける。その後、P関数部30において、8ビットのデータ同士で図に示すような16個のXOR回路815により演算が行われ、64ビットのF関数出力データ40が出力される。S関数部20には、4個のSボックス第1変換部13と4個のSボックス第2変換部14が設けられている。
【0108】
図12は、Sボックス第1変換部13とSボックス第2変換部14の実現例を示す図である。
【0109】
Sボックス第1変換部13の内部には、変換テーブルTが設けられている。変換テーブルTは、0〜255の値に対して任意に(ランダムに)対応させた0〜255の値を予め記憶しておくものであり、0〜255の値を入力し、各値に対応した値(0〜255の値)を出力するテーブルである。例えば、1が入力された場合には、変換テーブルTから7が出力される。変換テーブルTは、全単射であるかどうか、最大差分確率が十分に小さいかなどの安全性が考慮された非線形変換を行うものである。
【0110】
Sボックス第2変換部14は、Sボックス第1変換部13を含むとともに、1ビット巡回左シフト部22(図の「<<<1」の「<<<」は巡回左シフトを示し、「1」は1ビットを示す)を有している。1ビット巡回左シフト部22は、Sボックス第1変換部13の出力に対して1ビットの巡回左シフトを行う。例えば、1が入力された場合には、Sボックス第1変換部13から7が出力され、1ビット巡回左シフト部22から14が出力される。
【0111】
Sボックス第1変換部13とSボックス第2変換部14を図12のように構成すると、変換テーブルTを2種類持つ必要がないにも関わらず、2種類の変換テーブルTを設けた場合と同じような効果を得ることができる。変換テーブルTを1つしか持たないことにより、変換テーブルTを記憶するメモリ容量を少なくし、回路全体を小さくすることができる。
【0112】
また、図27に示すように、1ビット巡回左シフト部22の代わりに、或いは、1ビット巡回左シフト部22の他に1ビット巡回右シフト部(図27のSボックス第3変換部15の「>>>1」)を設けることにより、更に異なる変換テーブルTを設けた場合と同じ効果を得ることができる。また、入力されたデータyに対して1ビット巡回左シフト部(図27のSボックス第4変換部16の「<<<1」)を設けて、入力されたデータyを先にシフトしてから変換テーブルTにより変換してもよい。図27においては、s(y),s(y)<<<1,s(y)>>>1,s(y<<<1)の場合を示したが、s(y>>>1)でもよいし、s(y<<<1)<<<1,s(y<<<1)>>>1,s(y>>>1)<<<1,s(y>>>1)>>>1の場合でもよい。シフト量を1ビットにすることにより、例えば、1ビットシフト命令しか持たないCPU等においては、3ビットや5ビットシフトするよりも、高速処理を行うことが可能な場合がある。また、このシフト処理を1ビットシフトしかできないハードウェアを用いて行う場合にも、同様に、高速処理を適用することができる場合がある。更には、1ビットシフトではなく、2ビット、3ビット等の任意ビットのシフトでもよく、任意ビットのシフトを行うことにより、更に、異なる種類のテーブルを付加したのと同じ効果を得ることができる場合がある。
【0113】
図28は、図27に示した4つのSボックス第1〜第4変換部13,14,15,16を用いたS関数部20を示す図である。
【0114】
また、P関数部30の他の構成を図31に示す。
【0115】
8ビットの入力データy1 ,y2 ,y3 ,y4 から、それぞれS1,S2,S3,S4を参照して32ビットのデータZ1,Z2 ,Z3 ,Z4 を求め、これらの排他的論理和を回路913で求め、また、8ビットの入力データy5,y6 ,y7 ,y8 から、それぞれS2,S3,S4,S1を参照して32ビットのデータZ5,Z6 ,Z7 ,Z8 を求め、これらの排他的論理和を回路916により求め、これらの排他的論理和演算結果U2と前記排他的論理和演算結果U1 との排他的論理和が回路917でとられてz1',z2',z3',z4'として出力され、また、回路913よりの排他的論理和演算結果U1に対し、左に1バイト巡回シフト(この図31では、「<<<1」は1ビットではなく、1バイトの巡回シフトを示す)が回路918で行われ、回路917の出力と回路919で排他的論理和演算が行われてz5',z6',z7',z8'が得られる。
【0116】
ここで、図33の(a)〜(d)に示すように、S1はSボックス第1変換部13を、S2はSボックス第2変換部14を、S3はSボックス第3変換部15を、S4はSボックス第4変換部16を用いて構成されており、それぞれの変換部からの8ビット出力データを4つコピーして32ビットデータとし、更に、そのうち3つのデータ(24ビット分)だけを出力するように、マスクをかけて32ビットデータを出力する。
【0117】
なお、上記回路918の1バイトの巡回シフトは、Sボックスが処理するビット長(8ビット=1バイト)単位でシフトするものである。
【0118】
図32は、図31と等価な構成であるが、実装方法が異なるP関数部30を示している。
【0119】
8ビットの入力データy1 ,y2 ,y3 ,y4 から、それぞれS5,S6,S7,S8をそれぞれ参照して32ビットのデータZ1,Z2 ,Z3 ,Z4 が出力され、これらは回路933により排他的論理和演算が行われ、その演算結果Aが回路933から出力される。また、8ビットの入力データy5,y6 ,y7 ,y8 から、それぞれS9,SA,SB,SCを参照して32ビットのデータZ5,Z6 ,Z7 ,Z8 が出力され、これらが回路936により排他的論理和演算が行われ、その演算結果Bが回路936から出力される。演算結果Bは、回路937により右に1バイト巡回シフト(この図32では、図31と同じく、1ビット単位ではなく、Sボックスが処理するビット長単位(1バイト単位)のシフトをする)されるとともに、回路938で演算結果Aと排他的論理和演算される。この演算結果Cは、回路939により上(左)に1バイト巡回されるとともに、回路937の出力との排他的論理和演算が回路940で行われる。その演算結果Dは、回路941により上(左)に2バイト巡回されるとともに、回路939の出力と排他的論理和演算が回路942で行われる。その演算結果Eは、回路943により(右)に1バイト巡回されるとともに、回路941の出力と排他的論理和演算が回路944で行われる。回路944の出力Fがz1',z2',z3',z4'として、回路943の出力がz5',z6',z7',z8'として出力される。
【0120】
ここで、S5,SCはSボックス第1変換部13と論理シフトを、S6,S9はSボックス第2変換部14と論理シフトを、S7,SAはSボックス第3変換部15と論理シフトを、S8,SBはSボックス第4変換部16と論理シフトを用いて構成されている。論理シフトは、各変換部からの8ビット出力データを32ビット出力データ中の所定の位置に出力するために利用され、S5,SAでは0,S6,SBでは1バイト、S7,SCでは2バイト、S8,S9では3バイト左シフトするように設定されている。即ち、変換部における8ビットの出力をzとすると、32ビットの出力は、S5,SAでは[0,0,0,z](0は8つの各ビットが0であることを示す)、S6,SBでは[0,0,z,0]、S7,SCでは[0,z,0,0]、S8,S9では[z,0,0,0]となる。
【0121】
なお、実装上は、直接所定の出力を出すように計算された8ビット入力、32ビット出力の置換表を用意してもよい。
【0122】
図31,図32の場合は、図26に示した従来のE2暗号で使われていた置換処理よりも高速で、かつ、柔軟な実装が可能となる装置を提供できる。
【0123】
図11において、S関数部20にあるSボックスを全種類異なるSボックスで個別に構成した場合には、8個の変換テーブルTが必要になるのに対し、図12のような構成にすることにより、少なくとも変換テーブルTを記憶する全体の記憶容量を1/2にすることができる。
【0124】
また、図12に示したSボックス第1変換部13、Sボックス第2変換部14に対して、8個の8ビットデータを時分割に入力させることにより、従来の個別の8個のSボックスを、図12に示したSボックス第1変換部13とSボックス第2変換部14のみで代替えすることができる。
【0125】
図13は、S関数部20のSボックスの他の例を示す図である。
【0126】
具体的な構成に関しては、松井,桜井「ガロア体除算回路及び乗除算共用回路」(特許登録番号2641285[H9.5.2])に詳しく述べられている。
【0127】
Sボックス変換部21には、8ビットのデータが入力され、8ビットのデータが出力される。Sボックス変換部21は、N(ここでは、N=8)ビット線形変換部17と部分体変換部18とNビット線形変換部19から構成されている。Nビット線形変換部17は、8ビットのオペレーションを行う。部分体変換部18は、ガロア体GF(24)の元である4ビットのみのオペレーションを行う。Nビット線形変換部19は、8ビットのオペレーションを行う。Nビット線形変換部17の線形変換部85は、図14に示すような線形変換を行う回路である。また、線形変換部87は、図15に示すような線形変換を行う回路である。
【0128】
なお、線形変換部85の代わりに、アフィン変換(なお、線形変換は、アフィン変換の一態様であると考えられる)を行う回路を用いても構わない。或いは、線形変換部87の代わりに、アフィン変換を行う回路を用いても構わない。線形変換部85は、8ビットのデータ(X)に変換を行い、得られた8ビットのデータ(X’)をガロア体GF(28)の元とみなし、X’から上位4ビットと下位4ビットのデータ(X1 とX0 )を、それぞれ部分体GF(24)の元とみなし、部分体変換部18に出力する。ここで、例えば、GF(28 )の元βを既約多項式X8 +X6+X5 +X3 +1=0の元とし、α=β238 とすると、部分体GF(24)の基底は、[1,α,α2 ,α3 ]と表され、これを用いてGF(24 )の元X0,X1 と表すと、X’=X0 +βX1 という関係になる(詳細は、「ガロア体除算回路及び乗除算共用回路」(特許登録番号2641285[H9.5.2]参照)。部分体変換部18は、4ビットの演算を行う演算器のみで構成されている。
【0129】
ここで、「部分体」のとり方としてはGF(2n )に対して、n=2mとなる部分体GF(2m )が考えられ、ここでの例は、n=8,m=4となる。
【0130】
部分体変換部18は、「ガロア体除算回路及び乗除算共用回路」(特許登録番号2641285[H9.5.2]で示されたn=8,m=4の時の回路を基に構成される部分体を用いた逆元回路である。この逆元回路の演算結果として、各々GF(24)の元とみなせる上位4ビットのデータと下位4ビットのデータ(Y1 とY0 )が、GF(28 )上の元とみなせる8ビットのデータYとして線形変換部87に出力される。ここで、Y=Y0+βY1 である。以上より、この逆元回路は、Y=Y0 +βY1 =1/(X0+βX1 )を演算する回路である。また、この逆元回路の「有限体」の元の表し方(基底の取り方)には「多項式基底」や「正規基底」というように、「基底」の取り方はいくつか考えられる。
【0131】
図13のSボックス変換部21において特徴となる点は、非線形変換を行うために入力されたデータのビット幅(8ビット)の半分のビット幅(4ビット)で演算を行う点である。即ち、逆元回路においては、4ビットのオペレーションのみが行われている点が特徴である。
【0132】
このように、4ビットのみオペレーションを行うことにより演算速度は遅くなるかもしれないが、回路全体の規模は、8ビットの演算素子を用いるよりも遙かに小さくすることができるという利点がある。
【0133】
そして、Sボックス変換部21の次の特徴は、前述した部分体変換部18の両側にN=8ビットのNビット線形変換部17とNビット線形変換部19を設けている点である。Sボックス変換部21を部分体変換部18を用いて実現すると、ランダムな値を記憶した変換テーブルTを用いる場合に比べて、回路全体の規模が小さくなったり、構造が簡単になるという利点があるが、逆に、安全性が低下する可能性がある。そこで、部分体変換部18の両側で線形変換又はアフィン変換を行い、部分体変換部18を採用したことによる安全性の低下をなくすようにしている。
【0134】
なお、図13において、部分体変換部18の両側において線形変換を行っているが、片側だけに設けても構わない。或いは、片側で線形変換し、別側でアフィン変換を行っても構わない。
【0135】
図29は、図11に示した鍵関数部25を、即ち、S関数部20とP関数部30の前にある鍵関数部25を、S関数部20とP関数部30の後に配置したものである。
【0136】
また、図30は、鍵関数部25をS関数部20とP関数部30の間に配置したものである。
【0137】
図29又は図30のような構成にすることにより、図11に示した構成に比べて、実装上高速になることが多いという効果が得られる。更に、拡大鍵の生成を補正することにより、図29又は図30の構成で、同一の入力から図11の構成と同一の出力を得ることができる。図26に示した従来のF関数においては、2つのS関数があり、それぞれ最初に拡大鍵との演算を行い、次に、S関数による演算を行っている。それに対し、図29に示す場合は、ひとつの鍵関数部25をF関数の最後に配置している。また、図30の場合は、ひとつの鍵関数部25をS関数部20とP関数部30の間に配置している。
【0138】
図43は、図3に示した暗号化部200又は復号部500に対して図28に示した非線形関数部Fを用いた場合の構成図である。
【0139】
左データがF関数入力データ10として非線形関数部Fに入力され、F関数出力データ40が出力される。F関数出力データ40は、右データと排他的論理和演算が行われ、その結果が次の段の左データとなる。また、左データは、F関数入力データ10として非線形関数部Fに入力されるとともに、次の段の右データとして用いられる。図43に示す構成においては、非線形関数部Fの中で鍵関数部25とS関数部20とP関数部30との演算が行われるため、非線形関数部Fにおける演算の負荷が大きなものとなる。この非線形関数部Fにおける演算の負荷を分散させて実行することにより、処理の高速化を図る例について、以下に図を用いて説明する。
【0140】
図44は、図43に示した非線形関数部Fの中から鍵関数部25を削除した非線形関数部F’を用いる場合を示している。拡大鍵k1 は、XOR回路891において左データL0と排他的論理和演算が行われる。また、拡大鍵k2 は、XOR回路297において右データR0 と排他的論理和演算が行われる。左データは、F関数入力データ10として非線形関数部F’に入力され、S関数部20とP関数部30との変換を受ける。XOR回路297の出力とF関数出力データ40とは、XOR回路290において排他的論理和演算が行われ、左データL1を出力する。
【0141】
一方、鍵生成部300,600は、拡大鍵k1 とk3 との排他的論理和演算を行い、この加工された拡大鍵k1+k3 を出力する。XOR回路891の出力R1 と拡大鍵k1 +k3 とが、XOR回路298において排他的論理和演算が行われ、右データを出力する。鍵生成部300,600は、拡大鍵を加工して、k1+k3 ,k2 +k4 ,k3 +k5 ,・・・,k16+k18を生成して出力する。鍵生成部300,600は、加工された拡大鍵を、非線形関数処理(F)以外の処理に供給してデータと演算させる。この結果、左データL18と右データR18とは、図43の場合と同じものが得られる。
【0142】
加工された拡大鍵を、非線形関数処理(F)以外の処理に供給してデータと演算させることにより、非線形関数部F’において、S関数部20とP関数部30との計算をしている間に、非線形関数部F’の外部、即ち、XOR回路297,298で鍵データとの計算ができ、鍵関数部25の計算が非線形関数部Fからなくなり、非線形関数部Fの負荷が分散され、高速実装が可能となる。
【0143】
図45は、図44の構成に対して更にホワイトニング拡大鍵kw1 の演算を拡大鍵とともに行う場合を示している。図45においては、鍵生成部がホワイトニング拡大鍵の一部kw1highと第1の拡大鍵k1との排他的論理和演算を予め行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路891に供給している場合を示している。
また、鍵生成部がホワイトニング拡大鍵の一部kw1lowと第2の拡大鍵k2 との排他的論理和演算を予め行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路297に供給している場合を示している。
【0144】
このようにして、図44に示したXOR回路293の演算をなくすことができる。また、図45の場合は、鍵生成部がホワイトニング拡大鍵kw2 の一部kw2lowと拡大鍵k17との排他的論理和演算を行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路299に供給している。また、鍵生成部がホワイトニング拡大鍵の他の部分kw2highと拡大鍵k18との排他的論理和演算を行い(即ち、鍵生成部が拡大鍵を加工して)、XOR回路892に供給している。
【0145】
このようにして、図44に示したXOR回路296の演算をなくしている。
【0146】
図46は、非線形関数部Fが図29に示したような構成をとる場合に、非線形関数部Fから鍵関数部25を削除し、代わりに、鍵生成部が拡大鍵kをXOR回路298に供給する場合を示している。
【0147】
また、図47は、非線形関数部Fが図30に示したような構成をとる場合、非線形関数部Fから鍵関数部25を削除し、代わりに、鍵生成部が非線形変換された拡大鍵k'=P(k)をXOR回路298に供給する場合を示している。図47の場合は、P関数処理による演算と同一の演算を鍵データに対して施して非線形変換された鍵データを生成し、非線形変換された鍵データを上記データ処理が用いる鍵データとして、データ処理の非線形関数処理(F)以外の処理に供給してデータと演算させる場合を示している。 図46及び図47のいずれの場合も、鍵関数部25を非線形関数部Fから削除しているので、非線形関数部Fの演算負荷が減少し、非線形関数部Fの演算と平行して非線形関数部Fの外にあるXOR回路298の演算を行うことができるため、高速処理を行うことが可能になる。
【0148】
実施の形態3.
図16は、図1に示した鍵生成部300(又は鍵生成部600)の構成図である。
【0149】
鍵生成部300は、ビット長変換部310と第1のGビット鍵変換部320と第2のGビット鍵変換部330と鍵シフト部340から構成されている。鍵生成部300には、128ビット又は192ビット又は256ビットの鍵データが入力され、128ビットの鍵データK1と128ビットの鍵データK2 が生成され、複数の64ビットの拡大鍵が出力される。ビット長変換部310において、ビット数の異なる鍵データが入力されても、出力される鍵データのビット長が一定になるように変換している。即ち、ビット長変換部310は、内部において上位128ビットの鍵データSKhighと下位128ビットの鍵データSKlowを生成し、前者を第1のGビット鍵変換部320と鍵シフト部340に出力する。また、後者を第2のGビット鍵変換部330と鍵シフト部340に出力する。また、前者と後者の排他的論理和をとった128ビットの鍵データを第1のGビット鍵変換部320に出力する。
【0150】
図17は、ビット長変換部310の内部動作を示す図である。
【0151】
ビット長変換部310に128ビットの鍵データが入力された場合には、その入力された鍵データがそのまま上位128ビットの鍵データSKhighとして出力される。また、下位128ビットの鍵データSKlowは、0に設定されて出力される。
【0152】
次に、ビット長変換部310に192ビットの鍵データが入力された場合には、入力された鍵データの上位128ビットのデータがそのまま上位128ビットの鍵データSKhighとして出力される。また、入力された192ビットの鍵データの下位64ビットのデータと、その下位64ビットのデータが反転された64ビットの反転データとが連結され、下位128ビットの鍵データSKlowが生成され出力される。
【0153】
次に、256ビットの鍵データが入力された場合には、入力された鍵データの上位128ビットがSKhighとして、下位128ビットがSKlowとして出力される。
【0154】
第1のGビット鍵変換部320には、ビット長変換部310から128ビットの鍵データSKhighとSKlow の排他的論理和が入力され、2段の非線形変換を受けた後、上位128ビットの鍵データSKhighと排他的論理和がとられ、更に2段の非線形変換を受け、128ビットの鍵データK1が出力される。
【0155】
ビット長変換部310に入力された鍵データの長さが128ビットの場合には、第1のGビット鍵変換部320から出力された128ビットの鍵データと入力された元の鍵データとを用いて鍵シフト部340が拡大鍵を生成する。ビット長変換部310に入力された鍵データの長さが192ビット又は256ビットの場合には、第1のGビット鍵変換部320から出力された128ビットの鍵データを更に第2のGビット鍵変換部330に入力し、下位128ビットの鍵データSKlowと排他的論理和をとり、2段の非線形変換を行った後、128ビットの鍵データK2 を出力する。鍵シフト部340には、第1のGビット鍵変換部320と第2のGビット鍵変換部330の両方から出力された2つの128ビットの鍵データが出力され、両者と入力された元の鍵データとを用いて鍵シフト部340が拡大鍵を生成する。
【0156】
鍵シフト部340は、シフトレジスタA341とシフトレジスタB342とシフトレジスタC343とシフトレジスタD344とシフト制御部345を備えている。シフト制御部345からは、セレクト信号346が各シフトレジスタに出力され、シフトレジスタの動作を制御している。
【0157】
図18は、シフトレジスタA341の構成を示す図である。
【0158】
シフトレジスタA341は、128ビット分のスイッチ群を持ったセレクタA347と、128ビットのレジスタA348を有している。セレクト信号346は、セレクタA347の各スイッチをA側又はB側のいずれかに全て同時に接続することを指示するスイッチ信号を含んでいる。図においては、セレクト信号346によりセレクタA347のスイッチ群がAを選択した場合を示しており、この場合には、レジスタA348が17ビット左側に巡回シフトする場合を示している。また、スイッチ群がBを接続した場合には、レジスタAが左側に15ビット巡回シフトすることを示している。この15ビットシフト、或いは、17ビットシフトは、1クロックサイクルで行われる。
【0159】
なお、巡回シフトのシフト数(15,17)は一例であり、他のシフト数でも構わない。
【0160】
図19は、シフト制御部345に記憶されている制御テーブルの一部分を示す図である。
【0161】
この制御テーブルは、各クロック毎にレジスタを何ビットシフトさせるかを記憶しているテーブルである。例えば、レジスタA制御テーブルにおいては、1クロック目で15ビットシフトさせることを示している。また、2クロック目で更に15ビットシフトさせることを示している。同様に、3クロック目、4クロック目も15ビットシフトさせることを示している。5クロック目〜8クロック目は、それぞれ17ビットシフトさせることを示している。
【0162】
図20は、128ビットの鍵データから拡大鍵を生成する場合に、シフト制御部345が図19に示すテーブルを用いて各シフトレジスタを制御した結果を示す図である。
【0163】
シフトレジスタA341には、ビット長変換部310から入力した上位128ビットの鍵データSKhighが設定される。シフトレジスタB342には、第1のGビット鍵変換部320から出力した128ビットの鍵データK1が設定される。このような状態で、図19に示す制御テーブルに従って、シフトレジスタA341とシフトレジスタB342が動作する。図20において、斜線を引いた部分は無視され、出力されないことを示している。それ以外の斜線が引かれていない部分は、図21に示すように、拡大鍵として出力されるものである。
【0164】
図21は、レジスタの値と拡大鍵の対応を示す図である。
【0165】
図20においては、1クロック毎に15ビットずつ4回シフトし、5クロック目からは1クロック毎に17ビットシフトする場合を示している。シフトレジスタA341とシフトレジスタB342から上位64ビット及び下位64ビットを拡大鍵として出力するかしないかの判断、或いは、その出力する順番は、図示していない制御テーブルに記載されているものとし、その制御テーブルに基づいて、セレクト信号346に出力指示信号を含ませてシフトレジスタに出力することにより、各シフトレジスタから拡大鍵が64ビットずつ出力されることになる。
【0166】
図22は、192ビット又は256ビットの鍵データから拡大鍵を生成する場合を示している。
【0167】
即ち、シフトレジスタA341にビット長変換部310から入力した上位128ビットの鍵データSKhighをセットし、シフトレジスタB342に下位128ビットの鍵データSKlowをセットし、シフトレジスタC343に第1のGビット鍵変換部320から出力した128ビットの鍵データK1 をセットし、シフトレジスタD344に第2のGビット鍵変換部330から出力した128ビットの鍵データK2をセットする場合を示している。
【0168】
斜線部分は、拡大鍵として使用しない鍵を示している。
【0169】
図23は、レジスタの値と拡大鍵の対応を示す図である。
【0170】
拡大鍵として使用しない鍵や図23に示すレジスタの値と拡大鍵との対応も前述した制御部にある制御テーブルが記憶しているものとする。
【0171】
図19に示すように、シフト制御部345は、シフトレジスタA341に設定された鍵データをシフトするビット数を記憶している。即ち、シフトレジスタA制御テーブルに示すように、シフトレジスタA341に設定された鍵データをZ0=0ビット、Z1 =15ビット、Z2 =45ビット、Z3 =60ビット、Z4=77ビット、Z5 =94ビット、Z6 =111ビット、Z7 =128ビット移動させることにより、拡大鍵を次々と生成することになる。
【0172】
各シフト数の和は、15+15+15+15+17+17+17+17=128となり、128ビットのレジスタを128ビット巡回シフトすることにより、レジスタは初期状態に戻ることになる。
【0173】
このように、シフト数の総和を128ビット(レジスタのビット数)として初期状態に戻す理由は、初期状態のレジスタに対して次の処理があった場合に、そのまま次の処理が開始できるからである。また、逆変換処理(復号)を行う場合にも、拡大鍵を生成するための処理の開始が同じく初期状態のままから開始するため、初期状態をセットすることにより、変換処理(暗号化)と逆変換処理(復号)のどちらも行うことができる。また、シフト数の総和を128ビット(レジスタのビット数)より大きくしていないのは、例えば、128ビット(レジスタのビット数)以下の2ビット巡回シフトと128ビット(レジスタのビット数)より大きい130ビット巡回シフトは同一値になってしまい、一巡回以上のシフト(128ビット以上のシフト数)としてしまうことによるシフトレジスタ内の状態として、同じ値の発生を防止するためである。レジスタA制御テーブルは、レジスタを一巡回させるに当たり、その途中でできるだけ不規則なシフト数になる値を設定することが望ましい。しかし、シフトレジスタの構成を簡単にするには、なるべく限られたシフト数でシフトするようにしたい。そこで、レジスタを1個(1クロック)で15ビットと17ビットとの2種類のシフトができるように構成し、この2種類のシフトを用いて、更に、以下のようにして、異なる数のシフトを実現している。
【0174】
Z1 −Z0 =15(ここで、Z1 −Z0 =B1とする)、Z2 −Z1 =30(即ち、Z2 −Z1 =2B1)であり、Z2 −Z1 =2(Z1 −Z0 )という関係にする。また、シフトレジスタB制御テーブルに示すように、Z5−Z4 =34(ここで、Z5 −Z4 =2B2 とする)、Z6−Z5 =17(即ち、Z6 −Z5 =B2 )であり、Z5−Z4 =2(Z6 −Z5 )という関係にする。即ち、シフト数の差分を15ビットと30ビット又は17ビットと34ビットとし、1回のシフト数(15ビットと17ビット)の整数倍(2倍=I倍)となるシフト数(30ビット又は34ビット)とする。
【0175】
このように、シフト数の差分を1回のシフト数又は1回のシフト数の2倍以上の整数倍(I倍、Iは2以上の整数)のいずれかとすることにより、シフトレジスタA341を1回又は2回(I回)動作させることにより、制御テーブルに記憶したシフト数のオペレーションを容易に実現することができる。2回(I回)動作させるということは、シフトレジスタA341を動作させるために供給されている動作クロックの2クロック(Iクロック)サイクルでシフト動作が終了することを意味している。
【0176】
ここで、I回(2回)シフトさせる場合、I−1回(2−1=1回)目までのシフトしたデータは上位のデータも下位のデータもともに無視し、拡大鍵として使用しない。例えば、図19のZ1=15からZ2 =45へシフトする場合は、I=(Z2 −Z1 )/(1回のシフト数)=(45−15)/15=2となり、I−1回目(2−1=1回目)のシフト後のデータは、上位のデータも下位のデータもともに無視し、拡大鍵として使用しない。これは、図20では、key[8]とkey[9]に斜線が引かれている通り、拡大鍵として使用しないとして示されている。そして、I回目(2回目)のシフト後のデータの上位のデータと下位のデータのいずれか又は両方を拡大鍵として用いる。これは、図20では、key[12]とkey[13]とが拡大鍵として出力されることが示されている。
【0177】
このように、2以上の整数倍のシフトを行うのは、15ビット又は17ビットのみのシフトだけでなく、30(=15×2)ビット又は34(=17×2)ビット(又は、45(=15×3)ビット又は51(=17×3)ビット等)のシフトも行えるようにし、シフト数を変化させ、安全性をより高めるためである。また、前述した拡大鍵として使用しない場合を設けているのも、同様に、より安全性を高めるためである。
【0178】
拡大鍵として使用しないデータ(図20と図22において、斜線を引かれた拡大鍵として使用しない鍵)は、例えば、ハードウェアの処理、或いは、プログラムの処理が一連に連続して行われないような場合に発生させることが望ましい。例えば、図3において、データ正変換部(FL)とデータ逆変換部(FL-1)のオペレーションを行うとき、或いは、その前後、或いは、プログラムにおいて関数呼び出し、或いは、サブルーチンコール、或いは、割り込み処理を行う場合等の処理の切れ目、或いは、処理の変化時に行うようにするのが望ましい。
【0179】
また、図19に示した制御テーブルの特徴は、B1 =8×2−1=15(B1 =8×J1 −1、ここで、J1は1以上の整数)ビットのシフト数と、B2 =8×2+1=17(B2 =8×J2 +1、ここで、J2は0以上の整数、J1 =J2 又はJ1 ≠J2 )ビットのシフト数を指定していることである。シフトの量を8の倍数に±1とすることにより、奇数ビットのシフトを行うことになり、拡大鍵のデータ処理部への作用が8ビット単位、即ち、偶数単位であることから、偶数ビットだけシフトするよりも安全性が高まる。また、シフト量として8の倍数に1ビットの±を行っているだけなので、例えば、1ビットシフト命令しか持たないCPU等においては、3ビットや5ビットシフトするよりも、高速処理を行うことが可能な場合がある。また、このシフト処理を1ビットシフトしかできないハードウェアを用いて行う場合にも、同様に、高速処理を適用することができる場合がある。
【0180】
前述したビット長変換部310の説明においては、3種類のビット幅の鍵データを入力する場合を示したが、128ビット(Gビット)と256ビット(2Gビット)の間のビット長Q(G<Q<2G)を持つ鍵データが入力された場合も、何等かのアルゴリズムを用いて256ビットの鍵データが入力された場合と同様のサイズに鍵データを伸長させることができる。即ち、Gビットと2Gビットの間の長さQを持つ鍵データが入力された場合、ビット長変換部310によってQビットの鍵データを2Gビットの鍵データに変換することができる。
【0181】
次に、図34を用いて等価鍵の非存在証明の説明をする。
【0182】
以下の図34の説明では、「+」で排他的論理和演算を意味するとする。
【0183】
ここで、2つの128ビットの鍵データSK1とSK2(SK1≠SK2)とを入力するものとし、ビット長変換部310が、SK1からSK1high=SK1=(SKH1|SKL1)を、また、SK2からSK2high=SK2=(SKH2|SKL2)を出力するものとする。ここで、SKHi(i=1,2)はSKiの上位64ビットのデータであり、SKLi(i=1,2)はSKiの下位64ビットのデータである。
【0184】
SKH1とSKH2との排他的論理和をΔAとし、SKL1とSKL2との排他的論理和をΔBとすると、SK1≠SK2であるから、「少なくとも、ΔA≠0又はΔB≠0」が成り立つ。
【0185】
図34に示すように、このΔAとΔBが2段の非線形変換を受けていくことによって、ΔA+ΔD,ΔB+ΔCに変化する。このことは、SK1highとSK2highとの排他的論理和(ΔA|ΔB)が、SK1highから2段の非線形変換を受けたデータとSK2highから2段の非線形変換を受けたデータとの排他的論理和(ΔA+ΔD|ΔB+ΔC)に変化したことを意味する。従って、この2段の非線形変換を受けたデータが、排他的論理和回路999でそれぞれSK1high,SK2highと排他的論理和演算されると、この2つのデータの排他的論理和は(ΔD|ΔC)になる。さて、ここで、非線形変換が全単射関数であれば、ΔX≠0の入力に対して、ΔY≠0を出力することから、「少なくとも、ΔA≠0又はΔB≠0」であるならば、「少なくとも、ΔC≠0又はΔD≠0」となる。故に、2段の非線形変換によってSK1highとSK2highから同じデータを出力することはあり得ないことを意味しており、等価鍵の非存在証明となる。
【0186】
一方、図35に示すように、2段の非線形変換ではなく、3段の非線形変換を行う場合について考えてみる。「少なくとも、ΔA≠0又はΔB≠0」が成り立つのであるから、ΔAかΔBのいずれかが0である場合があり得る。もし、ΔA=0であるとするとΔC=0となり、また、上記と同じ議論により、SK1highとSK2highとの排他的論理和(0|ΔB)が、SK1highから3段の非線形変換を受けたデータと、SK2highから3段の非線形変換を受けたデータとの排他的論理和(ΔB+ΔE|ΔD)に変化する。従って、この3段の非線形変換を受けたデータが、排他的論理和回路999でそれぞれSK1high,SK2highと排他的論理和演算されると、この2つのデータの排他的論理和は(ΔB+ΔE|ΔB+ΔD)になる。さて、ここで、ΔB=ΔD=ΔE≠0が成り立つと仮定すると、(ΔB+ΔE|ΔB+ΔD)=(0|0)となる。つまり、この3段の非線形変換を受けたデータが、それぞれSK1high,SK2highと排他的論理和演算すると、その演算結果が一致することを意味する。即ち、SK1highとSK2highから同じデータを出力することを意味し、暗号の安全性上問題が多い等価鍵が存在することになる。
【0187】
以上述べた3段の非線形変換のみならず、一般的な非線形変換では異なるSK1とSK2から等価なK1 を出力する、即ち、等価鍵が存在する可能性があるが、本実施の形態で述べる2段の非線形変換なら等価鍵が存在しないことを証明できる。
【0188】
また、等価鍵の非存在証明が付けられるのは、この2段の非線形変換以外にもあると思われるが、2段の非線形変換を行う場合は、等価鍵の非存在証明を付けることができる上、簡単な構成であるため、2段の非線形変換をするのが望ましい構成である。
【0189】
図24は、暗号化用データ変換装置100又は復号用データ変換装置400が実装されるコンピュータを示す図である。
【0190】
暗号化用データ変換装置100又は/及び復号用データ変換装置400は、プリントサーキットボードとしてバスに接続される。このプリントサーキットボードには、CPUやメモリや論理回路素子が備えられており、前述してきた動作を行うことによりCPUから供給される平文を暗号文にし、CPUに返送する。或いは、CPUから送られてきた暗号文を平文に復号し、CPUに返送する。
【0191】
暗号化用データ変換装置100又は復号用データ変換装置400は、このように、全てハードウェアを用いて実現することが可能である。また、暗号化用データ変換装置100又は復号用データ変換装置400は、全てソフトウェアを用いてデータ変換方法としても実現することも可能である。即ち、磁気ディスク装置やフレキシブルディスク装置に記憶されたプログラムを用いて前述した動作を行わせることができる。或いは、図示していないが、ハードウェアとソフトウェアを組み合わせて前述した動作を実現させるようにしても構わない。また、図示していないが、1台のコンピュータで前述した動作全てを実現する必要はなく、サーバとクライアント、或いは、ホストコンピュータと端末コンピュータのように、分散されたシステムで前述した動作を達成するようにしても構わない。
【0192】
前述した図1〜図47の図中に矢印が記載されている図面は、矢印の方向が動作の流れを示しており、前述した図1〜図47の図中に矢印が記載されている図面は、データ変換装置のブロック図でもあり、かつ、フローチャート図でもある。そして、前述したブロック図における「何々部」と記載されている部分は、「何々工程」又は「何々処理」と読み換えることにより、データ変換方法を示す動作フローチャート又はプログラムフローチャートとなる。
【0193】
なお、前述した実施の形態では、128ビットの平文と暗号文の場合を示したが、256ビットの平文と暗号文やその他のビット数の平文と暗号文の場合でもよい。
【0194】
また、前述した実施の形態では、128,192,256ビットの鍵データと64ビットの拡大鍵の場合を示したが、その他のビット数の場合でもよい。
【0195】
平文と暗号文と鍵データと拡大鍵のビット長が変わった場合には、もちろん、そのビット長に対応して、各部や各工程や各処理の処理するビット長も変わる。
【特許請求の範囲】
【請求項1】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換部と、
上記部分体変換部の前段と後段との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応GF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換部を備えたことを特徴とするデータ変換装置。
【請求項2】
上記部分体変換部は、N(Nは偶数)ビットのデータXをX=X0 +βX1 (X0,X1 :部分体の元、β:もとの体の元)となる上位のN/2ビットのデータX1 と下位のN/2ビットのデータX0に等分して、Y=Y0 +βY1 =1/(X0 +βX1 )(但し、X=0のときY=0)となる上位のN/2ビットのデータY1と下位のN/2ビットのデータY0 をそれぞれN/2ビット単位で演算してデータYを求める複数のN/2ビット演算器のみを有することを特徴とする請求項1記載のデータ変換装置。
【請求項3】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは、1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )=I×B(Iは整数、B=Zi+1 −Zi ))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成する鍵シフト部を有するとともに、
上記鍵シフト部は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフトレジスタと、
Zi ビット巡回シフトされた鍵データに対して巡回シフトレジスタを1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフトレジスタをI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+2ビット巡回シフトされた鍵データを生成させる制御部と
を有することを特徴とするデータ変換装置。
【請求項4】
上記巡回シフトレジスタは、巡回シフトレジスタを動作させるために供給されている動作クロックの1クロックサイクルでZi+1−Zi ビット(Bビット)の巡回シフトをする回路であることを特徴とする請求項3記載のデータ変換装置。
【請求項5】
上記巡回シフト回路は、(Zi+1 −Zi )ビット(Bビット)の値として、B1=8×J1 +1(J1 =0以上の整数)ビットと、B2 =8×J2 −1(J2=1以上の整数、J1 とJ2 は無関係、即ち、J1≠J2 又はJ1=J2 )ビットとのいずれかの値を選択するセレクタを備えたことを特徴とする請求項3記載のデータ変換装置。
【請求項6】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成す
る鍵シフト部を有するとともに、
上記鍵シフト部は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とするデータ変換装置。
【請求項7】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記鍵生成部は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換部と、
上記第1のGビット鍵変換部から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換部と
を備え、 上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換部に入力して変換して第2のGビット変換鍵データK2 を出力し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1と、第2のGビット変換部により出力された第2のGビット変換鍵データK2 とを連結して、変換された2Gビット鍵データ(K1,K2 )として出力することを特徴とするデータ変換装置。
【請求項8】
上記第1のGビット鍵変換部は、
Gビット鍵データを非線形変換する2段の非線形データ変換部と、
2段目の非線形データ変換部から出力された変換途中のGビット鍵データと、
第1のGビット鍵変換部が入力したGビット鍵データとの論理演算を行う論理演算部とを備えたことを特徴とする請求項7記載のデータ変換装置。
【請求項9】
上記鍵生成部は、更に、Qビット(G<Q<2G)の鍵データを入力した場合、Qビットの鍵データを2Gビットの鍵データにするビット長変換部を備えたことを特徴とする請求項7記載のデータ変換装置。
【請求項10】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部の間に配置したことを特徴とするデータ変換装置。
【請求項11】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部との両者の前と両者の後とのい
ずれかに配置したことを特徴とするデータ変換装置。
【請求項12】
上記S関数部は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換部(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して、上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換部(s2)と
を備えたことを特徴とする請求項10記載のデータ変換装置。
【請求項13】
少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、データ変換を行うデータ同士で論理演算するP関数部を有する非線形関数部(F)を備え、
上記P関数部は、z1 ,z2 ,・・・,z8 の8個の4n(nは1以上の整数)ビットデータを入力し、
上記z1 ,z2 ,z3 ,z4 の4個のデータのうち、少なくとも2個以上のデータの排他的論理和演算を行って4nビットの結果U1を得る回路と、
上記z5 ,z6 ,z7 ,z8 の4個のデータのうち、少なくとも2個以上のデータの排他的論理和演算を行って4nビットの結果U2を得る回路と、
U1 とU2 との排他的論理和演算を行って4nビットの結果U3 を得る回路と、
U1 に対して巡回シフトをする巡回回路と、
上記巡回回路の出力とU3 との排他的論理和演算を行って4nビットの結果U4 を得る回路と
を備え、
上記U3 ,U4 をそれぞれ4個に分割してz1',z2',・・・,z8'の8個のnビットのデータとして出力することを特徴とする請求項10記載のデータ変換装置。
【請求項14】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換処理と、
上記部分体変換処理の前段処理と後段処理との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応でGF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換処理を備えたことを特徴とするデータ変換方法。
【請求項15】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは、1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )(Iは整数、B=Zi+1 −Zi))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフト処理と、
Zi ビット巡回シフトされた鍵データに対して巡回シフト処理を1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフト処理をI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+2ビット巡回シフトされた鍵データを生成させる制御処理と
を有することを特徴とするデータ変換方法。
【請求項16】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とするデータ変換方法。
【請求項17】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記鍵生成処理は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換処理と、
上記第1のGビット鍵変換処理から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換処理と
を備え、
上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換処理に入力して変換して第2のGビット変換鍵データK2を出力し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1 と、第2のGビット変換処理により出力された第2のGビット変換鍵データK2とを連結して
、変換された2Gビット鍵データ(K1 ,K2 )として出力することを特徴とするデータ変換方法。
【請求項18】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数をS関数処理とP関数処理の間に動作させることを特徴とするデータ変換方法。
【請求項19】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数処理をS関数処理とP関数処理との両者の前と両者の後とのいずれかで動作させることを特徴とするデータ変換方法。
【請求項20】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、データ変換を行うデータを非線形変換する非線形関数部(F)を備え、
上記鍵生成部は、非線形関数部(F)に供給する鍵データを加工して、加工した鍵データをデータ処理部の非線形関数部(F)以外の部分に供給してデータと演算させることを特徴とするデータ変換装置。
【請求項21】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、データ変換を行うデータを非線形変換する非線形関数処理(F)を備え、
上記鍵生成処理は、非線形関数処理(F)に供給する鍵データを加工して、加工した鍵データをデータ処理の非線形関数処理(F)以外の処理に供給してデータと演算させることを特徴とするデータ変換方法。
【請求項22】
上記請求項14記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項23】
上記請求項15記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項24】
上記請求項16記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項25】
上記請求項17記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項26】
上記請求項18記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項27】
上記請求項19記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項28】
上記請求項21記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、
上記データ処理部は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換部と、
上記部分体変換部の前段と後段との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応GF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換部を備えたことを特徴とするデータ変換装置。
【請求項2】
上記部分体変換部は、N(Nは偶数)ビットのデータXをX=X0 +βX1 (X0,X1 :部分体の元、β:もとの体の元)となる上位のN/2ビットのデータX1 と下位のN/2ビットのデータX0に等分して、Y=Y0 +βY1 =1/(X0 +βX1 )(但し、X=0のときY=0)となる上位のN/2ビットのデータY1と下位のN/2ビットのデータY0 をそれぞれN/2ビット単位で演算してデータYを求める複数のN/2ビット演算器のみを有することを特徴とする請求項1記載のデータ変換装置。
【請求項3】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは、1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )=I×B(Iは整数、B=Zi+1 −Zi ))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成する鍵シフト部を有するとともに、
上記鍵シフト部は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフトレジスタと、
Zi ビット巡回シフトされた鍵データに対して巡回シフトレジスタを1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフトレジスタをI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフトレジスタにZi+2ビット巡回シフトされた鍵データを生成させる制御部と
を有することを特徴とするデータ変換装置。
【請求項4】
上記巡回シフトレジスタは、巡回シフトレジスタを動作させるために供給されている動作クロックの1クロックサイクルでZi+1−Zi ビット(Bビット)の巡回シフトをする回路であることを特徴とする請求項3記載のデータ変換装置。
【請求項5】
上記巡回シフト回路は、(Zi+1 −Zi )ビット(Bビット)の値として、B1=8×J1 +1(J1 =0以上の整数)ビットと、B2 =8×J2 −1(J2=1以上の整数、J1 とJ2 は無関係、即ち、J1≠J2 又はJ1=J2 )ビットとのいずれかの値を選択するセレクタを備えたことを特徴とする請求項3記載のデータ変換装置。
【請求項6】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換部を有し、
上記鍵生成部は、上記複数段の非線形データ変換部の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換部の拡大鍵を生成す
る鍵シフト部を有するとともに、
上記鍵シフト部は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とするデータ変換装置。
【請求項7】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記鍵生成部は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換部と、
上記第1のGビット鍵変換部から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換部と
を備え、 上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換部に入力して変換して第2のGビット変換鍵データK2 を出力し、第1のGビット鍵変換部により出力された第1のGビット変換鍵データK1と、第2のGビット変換部により出力された第2のGビット変換鍵データK2 とを連結して、変換された2Gビット鍵データ(K1,K2 )として出力することを特徴とするデータ変換装置。
【請求項8】
上記第1のGビット鍵変換部は、
Gビット鍵データを非線形変換する2段の非線形データ変換部と、
2段目の非線形データ変換部から出力された変換途中のGビット鍵データと、
第1のGビット鍵変換部が入力したGビット鍵データとの論理演算を行う論理演算部とを備えたことを特徴とする請求項7記載のデータ変換装置。
【請求項9】
上記鍵生成部は、更に、Qビット(G<Q<2G)の鍵データを入力した場合、Qビットの鍵データを2Gビットの鍵データにするビット長変換部を備えたことを特徴とする請求項7記載のデータ変換装置。
【請求項10】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部の間に配置したことを特徴とするデータ変換装置。
【請求項11】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
データ変換を行うデータと鍵データとを論理演算する鍵関数部と、
データ変換を行うデータを他のデータへ置換変換するS関数部と、
データ変換を行うデータ同士で論理演算するP関数部と
を有する非線形関数部(F)を備え、
非線形関数部(F)は、鍵関数部をS関数部とP関数部との両者の前と両者の後とのい
ずれかに配置したことを特徴とするデータ変換装置。
【請求項12】
上記S関数部は、
変換するデータの一部分のデータを第1部分データとして入力して、入力したデータの値を他の値に変換して出力する変換テーブルTを用いて第1部分データを変換し、変換したデータを出力する第1変換部(s1)と、
変換するデータの少なくとも他の一部分のデータを第2部分データとして入力して、上記変換テーブルTを用いた変換と第2部分用演算とを用いて第2部分データを変換し、変換したデータを出力する第2変換部(s2)と
を備えたことを特徴とする請求項10記載のデータ変換装置。
【請求項13】
少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部を備えたデータ変換装置において、データ変換を行うデータ同士で論理演算するP関数部を有する非線形関数部(F)を備え、
上記P関数部は、z1 ,z2 ,・・・,z8 の8個の4n(nは1以上の整数)ビットデータを入力し、
上記z1 ,z2 ,z3 ,z4 の4個のデータのうち、少なくとも2個以上のデータの排他的論理和演算を行って4nビットの結果U1を得る回路と、
上記z5 ,z6 ,z7 ,z8 の4個のデータのうち、少なくとも2個以上のデータの排他的論理和演算を行って4nビットの結果U2を得る回路と、
U1 とU2 との排他的論理和演算を行って4nビットの結果U3 を得る回路と、
U1 に対して巡回シフトをする巡回回路と、
上記巡回回路の出力とU3 との排他的論理和演算を行って4nビットの結果U4 を得る回路と
を備え、
上記U3 ,U4 をそれぞれ4個に分割してz1',z2',・・・,z8'の8個のnビットのデータとして出力することを特徴とする請求項10記載のデータ変換装置。
【請求項14】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理を実行するデータ変換方法において、
上記データ処理は、変換するデータを入力し、入力したデータをある体(field)の元と見なし、その部分体を用いた逆元回路を用いて変換し、変換したデータを出力する部分体変換処理と、
上記部分体変換処理の前段処理と後段処理との少なくともいずれか一方に変換するGF(2n )上のデータを自然な対応でGF(2)nの元とみなし、GF(2)上のベクトル空間GF(2)n のアフィン変換処理を備えたことを特徴とするデータ変換方法。
【請求項15】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、鍵データと鍵データから生成された鍵データに依存するデータとの少なくともいずれかを入力して予め定められたビット数Z1,Z2 ,・・・,Zm (ここで、i,j,kは、1〜mのいずれか1つの値とし、Zk −Zj=I×(Zi+1 −Zi )(Iは整数、B=Zi+1 −Zi))だけ、巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、
1回の動作で(Zi+1 −Zi )ビット(Bビット)の巡回シフトをする巡回シフト処理と、
Zi ビット巡回シフトされた鍵データに対して巡回シフト処理を1回動作させて(Zi+1 −Zi)ビット(Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+1 ビット巡回シフトされた鍵データを生成させ、Zi+1ビット巡回シフトされた鍵データに対して巡回シフト処理をI回動作させてI×(Zi+1 −Zi )ビット(I×Bビット)の巡回シフトを行わせることにより、巡回シフト処理によりZi+2ビット巡回シフトされた鍵データを生成させる制御処理と
を有することを特徴とするデータ変換方法。
【請求項16】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、各段ごとに拡大鍵を入力して非線形変換をする多段に接続された複数段の非線形データ変換処理を有し、
上記鍵生成処理は、上記複数段の非線形データ変換処理の各段毎に対して供給する拡大鍵を生成するにあたり、ある鍵データを予め定められたビット数(Bビット)だけ順に巡回シフトして、この巡回シフトした鍵データから各段の非線形データ変換処理へ供給する拡大鍵を生成する鍵シフト処理を有するとともに、
上記鍵シフト処理は、Bビットだけ順に巡回シフトしたデータのうち、一部のデータを無視して拡大鍵を生成せず、残りの他のデータから拡大鍵を生成することを特徴とするデータ変換方法。
【請求項17】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記鍵生成処理は、
GビットのGビット鍵データを入力して変換し、Gビットの第1のGビット変換鍵データを出力する第1のGビット鍵変換処理と、
上記第1のGビット鍵変換処理から出力された第1のGビット変換鍵データを入力し、更に変換してGビットの第2のGビット変換鍵データを出力する第2のGビット変換処理と
を備え、
上記鍵生成部がGビット鍵データKを入力した場合は、Gビット鍵データKを第1のGビット鍵変換部に入力して変換し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1を変換されたGビット鍵データとして出力し、
上記鍵生成部が2Gビット鍵データKを入力した場合は、2Gビット鍵データKからGビット鍵データを生成して生成したGビット鍵データを第1のGビット鍵変換部に入力して変換して第1のGビット変換鍵データK1を出力し、第1のGビット変換鍵データK1 を第2のGビット変換処理に入力して変換して第2のGビット変換鍵データK2を出力し、第1のGビット鍵変換処理により出力された第1のGビット変換鍵データK1 と、第2のGビット変換処理により出力された第2のGビット変換鍵データK2とを連結して
、変換された2Gビット鍵データ(K1 ,K2 )として出力することを特徴とするデータ変換方法。
【請求項18】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数をS関数処理とP関数処理の間に動作させることを特徴とするデータ変換方法。
【請求項19】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
データ変換を行うデータと鍵データとを論理演算する鍵関数処理と、
データ変換を行うデータを他のデータへ置換変換するS関数処理と、
データ変換を行うデータ同士で論理演算するP関数処理と
を有する非線形関数処理(F)を備え、
非線形関数処理(F)は、鍵関数処理をS関数処理とP関数処理との両者の前と両者の後とのいずれかで動作させることを特徴とするデータ変換方法。
【請求項20】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理部と、
上記データ処理部が用いる鍵データを生成してデータ処理部に供給する鍵生成部と
を備えたデータ変換装置において、
上記データ処理部は、データ変換を行うデータを非線形変換する非線形関数部(F)を備え、
上記鍵生成部は、非線形関数部(F)に供給する鍵データを加工して、加工した鍵データをデータ処理部の非線形関数部(F)以外の部分に供給してデータと演算させることを特徴とするデータ変換装置。
【請求項21】
鍵データを入力して少なくともデータの暗号化とデータの復号とのいずれかのデータ変換を行うデータ処理と、
上記データ処理が用いる鍵データを生成してデータ処理に供給する鍵生成処理と
を実行するデータ変換方法において、
上記データ処理は、データ変換を行うデータを非線形変換する非線形関数処理(F)を備え、
上記鍵生成処理は、非線形関数処理(F)に供給する鍵データを加工して、加工した鍵データをデータ処理の非線形関数処理(F)以外の処理に供給してデータと演算させることを特徴とするデータ変換方法。
【請求項22】
上記請求項14記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項23】
上記請求項15記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項24】
上記請求項16記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項25】
上記請求項17記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項26】
上記請求項18記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項27】
上記請求項19記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項28】
上記請求項21記載のデータ変換方法をコンピュータに実行させるプログラム又は上記プログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【公開番号】特開2011−18065(P2011−18065A)
【公開日】平成23年1月27日(2011.1.27)
【国際特許分類】
【出願番号】特願2010−190217(P2010−190217)
【出願日】平成22年8月27日(2010.8.27)
【分割の表示】特願2006−298813(P2006−298813)の分割
【原出願日】平成13年3月8日(2001.3.8)
【出願人】(000006013)三菱電機株式会社 (33,312)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成23年1月27日(2011.1.27)
【国際特許分類】
【出願日】平成22年8月27日(2010.8.27)
【分割の表示】特願2006−298813(P2006−298813)の分割
【原出願日】平成13年3月8日(2001.3.8)
【出願人】(000006013)三菱電機株式会社 (33,312)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]