(57)【要約】【課題】  ソフトウェア構成の暗号処理モジュールにおいて、非線形変換手段であるＳ−ＢＯＸの記憶容量を削減してプログラムサイズを低減し、且つ、処理効率の低下を防止することができる暗号処理方法及び暗号処理プログラムを提供する。【解決手段】  入力データまたは入力データを基に生成された中間データを非線形に置換するための置換表を複数用いる共通鍵暗号方式による暗号処理方法であって、１バイト単位のデータ領域の上位４ビット及び下位４ビットの夫々に置換表の異なる要素の値を記憶した複合置換表を備え、複合置換表を用いて入力データまたは中間データを非線形変換する非線形変換処理を行なう。【選択図】        図５
2008046151.tif 000002
【特許請求の範囲】
【請求項１】
入力データまたは前記入力データを基に生成された中間データを非線形に置換するための置換表を複数用いる共通鍵暗号方式による暗号処理方法であって、
１バイト単位のデータ領域の上位４ビット及び下位４ビットの夫々に前記置換表の異なる要素の値を記憶した複合置換表を備え、前記複合置換表を用いて前記入力データまたは前記中間データを非線形変換する非線形変換処理を行なうことを特徴とする暗号処理方法。
【請求項２】
前記複合置換表は、前記複数の置換表の内の第１置換表及び第２置換表を多重化してなり、前記第１置換表の各要素の値が個別に前記データ領域夫々の上位４ビットに、前記第２置換表の各要素の値が個別に前記データ領域夫々の下位４ビットに記憶されていることを特徴とする請求項１に記載の暗号処理方法。
【請求項３】
前記複合置換表は、前記データ領域の同一のバイト単位内に記憶されている前記第１置換表の要素の位相と前記第２置換表の要素の位相とが同一であることを特徴とする請求項２に記載の暗号処理方法。
【請求項４】
前記非線形変換処理は、前記複合置換表から１バイト単位で前記データ領域夫々に記憶された非線形変換用データを読み出し、
前記入力データまたは前記中間データを所定数に分割した分割データの内の第１分割データを、下位４ビットをマスク処理した前記非線形変換用データを用いて非線形変換し、
前記分割データの内の前記第１分割データに連接される第２分割データを、上位４ビットをマスク処理した前記非線形変換用データを用いて非線形変換することを特徴とする請求項３に記載の暗号処理方法。
【請求項５】
前記第１置換表と前記第２置換表を多重化して前記複合置換表を作成する複合置換表作成工程を実行することを特徴とする請求項１〜４の何れか１項に記載の暗号処理方法。
【請求項６】
請求項１〜請求項５の何れか１項に記載の暗号処理方法における前記非線形変換処理を、コンピュータ上で実行するプログラムステップを含むことを特徴とする暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理技術に関し、特に、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｉｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式等、非線形変換手段Ｓ−ＢＯＸ（ｓｕｂｓｔｉｔｕｔｉｏｎ  ｂｏｘ）を用いた共通鍵暗号方式による暗号処理技術に関する。
【背景技術】
【０００２】
近年のインターネットの普及等に伴い、機密データの転送要求や蓄積量が増加しており、該機密データに対する安全性確保のために、情報セキュリティ技術が大きく注目されるようになっている。情報セキュリティ技術の一つとして、データの暗号化技術がある。暗号化技術は、情報セキュリティに欠かせない要素技術であることから、多くの暗号方式が提案されており、現在、様々な暗号化技術を用いたデータ通信が実際に行われている。具体的には、例えば、ＩＣカードと、該ＩＣカードに対するデータの読み取り及び書き込みを行なうリーダライタの間で行なわれるデータ通信において、ＩＣカード及びリーダライタにソフトウェアまたはハードウェアで構成された暗号処理モジュールを実装し、送受信データの暗号処理及び復号化処理を行っている。
【０００３】
現在使用されている主な暗号方式には、公開鍵暗号方式と共通鍵暗号方式がある。公開鍵暗号方式は、暗号化を行なう公開鍵と復号化を行なう秘密鍵の２つの鍵を用いる暗号方式であり、暗号化及び復号化に複雑な計算を要するため、その安全性は高いが、処理時間が長い。このため、公開鍵暗号方式では、ハードウェアによる高速化が望ましく、ＩＣカード等のソフトウェアでの実装が必要とされる装置には向いていない。一方、共通鍵暗号方式は、暗号化及び復号化を同じ共通鍵を用いて行なう暗号方式であり、入力データや暗号処理の過程で生成される中間データと鍵との排他的論理和を行う論理演算や非線形変換のためのテーブル参照等、比較的簡素な処理で暗号化できるため、処理時間が短い。具体的には、ソフトウェアにより共通鍵暗号方式を用いて暗号化及び復号化を行なう場合の方が、ハードウェアにより高速化して公開鍵暗号方式を用いて暗号化及び複合化を行なう場合よりも処理時間が短い。このため、処理時間の長い公開鍵暗号方式は、比較的データ量の少ない認証や電子署名に利用され、処理時間の短い共通鍵暗号方式は、大容量データの守秘に利用されることが多い。尚、ＤＥＳ暗号方式等の一部の共通鍵暗号方式は、ハードウェア化が容易になるように設計されているため、ソフトウェアで構成された暗号処理モジュールを実装する場合には、プログラム資源を効率よく利用するための設計を行う必要がある。
【０００４】
ところで、共通鍵暗号方式では、ユーザ間で共有する共通鍵を、入力データや中間データに対し、排他的論理和をとるために用いている。そこで、入出力データ間の相関関係をより複雑にし、暗号解読をより困難にするために、暗号処理中に非線形演算を組み込んでいる。この非線形演算では、例えば、入力されたデータのビット列をランダムに置換するためのＳ−ＢＯＸ（ｓｕｂｓｔｉｔｕｔｉｏｎ  ｂｏｘ）と称される変換テーブル（置換表に相当）を用いて非線形変換処理を行なう。通常、Ｓ−ＢＯＸは複数の変換テーブルを備え、夫々の変換テーブルは行列の形をとる。
【０００５】
ここで、従来のソフトウェア構成の暗号処理モジュールを搭載する場合におけるＳ−ＢＯＸを用いた共通鍵暗号方式による暗号処理について説明する。
【０００６】
先ず、従来の暗号処理モジュールのソフトウェア構成について、図１、図３、図４、図１０〜図１２を基に簡単に説明する。
【０００７】
図１は、暗号処理モジュールの概略構成を示しており、入力データの変換を実行するラウンド関数部１００と、ラウンド関数部１００の各暗号処理部１０３で用いる鍵データＫを生成する鍵スケジュール部１１０を備えて構成されている。ラウンド関数部１００は、前段の出力データ（中間データ）に対し変換テーブルを用いて暗号処理を行なう暗号処理部１０３を１６段備えて構成されている。ここで、図１０は、変換テーブルＳ１、Ｓ２、・・・、Ｓｍ（ｍは変換テーブルの総数）を示している。暗号処理部１０３は、図３に示すように、Ｆ関数部２０１を備えて構成されており、前段からの２つの中間データＬｎ−１、Ｒｎ−１と鍵データｋｎを用いて中間データＬｎ、Ｒｎを生成する。Ｆ関数部２０１は、図４に示すように、Ｓ−ＢＯＸ処理部３０２を備えて構成されている。Ｓ−ＢＯＸ処理部３０２では、３２ビットの中間データＲｎ−１を４８ビットに拡大処理した値Ｒ'と鍵データＫｎとの排他的論理輪である４８ビットのデータＸを非線形変換処理して、３２ビットのデータＹを生成する。
【０００８】
ここで、図１１は、従来のＳ−ＢＯＸ処理部３０２の非線形変換処理の概念を示している。ここでのＳ−ＢＯＸ処理部３０２は、４８ビットのデータＸを６ビット毎に分割したＸ１〜Ｘ８の夫々に対して非線形変換処理を実行する変換部ＳＢ１〜ＳＢ８を備えている。変換部ＳＢｎは、固有の変換テーブルＳｎを備えており、該変換テーブルＳｎを用いてデータＸｎに対する非線形変換処理を実行して、４ビットのデータＹｎを出力する。Ｓ−ＢＯＸ処理部３０２は、変換部ＳＢ１〜ＳＢ８から出力された８つの４ビットのデータＹ１〜Ｙ８を連接処理して、３２ビットのデータＹを出力する。変換部ＳＢｎ，ｎ＋１は夫々、図１２に示すように、入力された６ビットのデータＸｎに対し、変換テーブルＳｎを用いて非線形変換処理を実行して４ビットのデータＹｎを求める。
【０００９】
次に、従来の暗号処理モジュールの非線形変換処理について図１３〜図１５を基に説明する。ここでは、Ｓ−ＢＯＸ処理部３０２の処理手順について説明する。
【００１０】
Ｓ−ＢＯＸ処理部３０２は、図１３に示すように、先ず、入力された４８ビットのデータＸを６ビット毎に分割し、８組のデータＸ１〜Ｘ８を生成する（ステップ＃１３０１）。続いて、Ｓ−ＢＯＸ処理部３０２の変換部ＳＢ１が、入力されたデータＸ１に対し変換テーブルＳ１を用いてＳ−ＢＯＸ処理（非線形変換処理）を実行し、データＹ１を求める（ステップ＃１３０２）。変換部ＳＢ２〜変換部ＳＢ８においても同様に非線形変換処理を逐次的に実行しデータＹ２〜Ｙ８を求める。最後に、データＹ１〜Ｙ８を連接処理して、３２ビットのデータＹを生成する。ここで、図１４は、従来のＳ−ＢＯＸ処理部３０２で使用する変換テーブルの一例として、変換テーブルＳ１及びＳ２を示している。ここで、図中の“０ｘ”は次の文字が１６進数を示す表記文字である。各変換テーブルＳ１、Ｓ２には夫々４種類の換字表が用意されている。具体的には、データＸ１のｂｉｔ０（最下位ビット）及びｂｉｔ５（最上位ビット）の値に基づいて４種類の換字表の内の１つを選択し、選択した換字表に従ってデータＸ１の中央の４ビットの値（ｂｉｔ１〜ｂｉｔ４の値）を変換し、変換した値をデータＹ１として出力する。図１５は、変換部ＳＢｎによるＳ−ＢＯＸ処理の処理手順、即ち、変換テーブルＳｎを用いた非線形変換処理の処理手順を示している。
【００１１】
上述した従来のＳ−ＢＯＸを用いた共通鍵暗号方式による暗号処理の例では、ソフトウェア構成の暗号処理モジュールを実装する場合、８つの変換テーブルＳ１〜Ｓ８を固定データとして備える必要がある。ここで、Ｓ−ＢＯＸをソフトウェアで実装する場合、Ｓ−ＢＯＸ内の各変換テーブルの値を記憶する記憶領域は１バイト（８ビット）単位でアドレス分割されているため、１バイトのデータ領域の夫々に対しテーブル内の１つの要素を記憶していた。上記従来例では、Ｓ−ＢＯＸ内には８つの４行１６列の変換テーブルがあり、変換テーブル１つのデータ要素数が６４（１６×４）個であるため、変換テーブル１つのデータ容量は６４バイトとなる。そして、変換テーブルは８つあるため、暗号処理モジュール全体で変換テーブルが必要とする記憶容量は５１２バイトになる。従って、Ｓ−ＢＯＸをソフトウェアで実装する場合、暗号化プログラム全体のプログラムサイズに対して変換テーブルのコードサイズが占める割合は小さくない。
【００１２】
特に、ＩＣカード等の小型の組み込み型装置では、ソフトウェアはＲＯＭや不揮発性メモリ等に格納されるため、コスト等の観点から、プログラムサイズを小さくすることが望ましい。ここで、例えば、ＩＣカードにおいて、３２ＫＢの記憶容量を持つ不揮発性メモリが各ソフトウェアのプログラムとそのデータを格納する記憶領域として用意されており、この記憶領域にＤＥＳ暗号方式による暗号化プログラムを格納する場合は、上述したように暗号化プログラムのＳ−ＢＯＸの変換テーブルだけで０.５ＫＢの記憶領域を占有してしまう。このため、ＩＣカードの他の機能を実現するためのプログラムに割り当てることができる記憶領域が非常に少なくなってしまうという問題があった。
【００１３】
上述したように、ＩＣカード等の小型の組み込み装置において、共通鍵暗号方式の暗号処理モジュールをソフトウェアで実装する場合は、記憶領域の圧迫が問題となる。このため、昨今では、暗号処理モジュールをソフトウェアでなくハードウェアで実装するための様々な暗号化技術が提案されている。例えば、ハードウェア構成の暗号処理モジュールにおいて、データ通信の安全性を高めるために、共通鍵を用いてＳ−ＢＯＸを動的に変更制御する暗号化技術がある（例えば、特許文献１参照）。更に、暗号処理における消費電流（消費電力）を解析する暗号解読に対抗するために、中間データを格納する第１データレジスタと中間データの反転データを格納する第２データレジスタを設け、第１データレジスタに中間データの書き込み処理を行なうと共に第２データレジスタに反転データの書き込み処理を行なう暗号化技術がある（例えば、特許文献２参照）。また、中間データ（非反転データ）を処理する非反転データ用暗号化回路と、反転データを処理する反転データ用暗号化回路を設け、非反転データ及び反転データの何れか一方をランダムに選択し、選択したデータを暗号処理する暗号化技術がある（例えば、特許文献３参照）。
【００１４】
【特許文献１】特開２００３−３２３１１７号公報
【特許文献２】特開２００５−３１４７１号公報
【特許文献３】特開２００２−３１１８２６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、特許文献１〜３に記載の暗号化技術のように、ハードウェア構成の暗号処理モジュールを実装する場合は、ソフトウェア構成の暗号処理モジュールを実装する場合に比べ、設計、開発及び生産にかかるコストが高いという問題がある。更に、暗号処理モジュールに不具合があった場合には、修正を行うことができず、ハードウェアそのものを交換等する必要がある等の問題がある。
【００１６】
本発明は上記の問題に鑑みてなされたものであり、その目的は、ソフトウェア構成の暗号処理モジュールにおいて、非線形変換手段であるＳ−ＢＯＸの記憶容量を削減してプログラムサイズを低減し、且つ、処理効率の低下を防止することができる暗号処理方法を提供する点にある。また、該暗号処理方法を自動的に実行する暗号処理プログラムを提供する点にある。
【課題を解決するための手段】
【００１７】
上記目的を達成するための本発明に係る暗号処理方法は、入力データまたは前記入力データを基に生成された中間データを非線形に置換するための置換表を複数用いる共通鍵暗号方式による暗号処理方法であって、１バイト単位のデータ領域の上位４ビット及び下位４ビットの夫々に前記置換表の異なる要素の値を記憶した複合置換表を備え、前記複合置換表を用いて前記入力データまたは前記中間データを非線形変換する非線形変換処理を行なうことを第１の特徴とする。
【００１８】
上記特徴の本発明に係る暗号処理方法は、前記複合置換表が、前記複数の置換表の内の第１置換表及び第２置換表を多重化して含み、前記第１置換表の各要素の値が個別に前記データ領域夫々の上位４ビットに、前記第２置換表の各要素の値が個別に前記データ領域夫々の下位４ビットに記憶されていることを第２の特徴とする。
【００１９】
上記特徴の本発明に係る暗号処理方法は、前記複合置換表は、前記データ領域の同一のバイト単位内に記憶されている前記第１置換表の要素の位相と前記第２置換表の要素の位相とが同一であることを第３の特徴とする。
【００２０】
上記特徴の本発明に係る暗号処理方法は、前記非線形変換処理は、前記複合置換表から１バイト単位で前記データ領域夫々に記憶された非線形変換用データを読み出し、前記入力データまたは前記中間データを所定数に分割した分割データの内の第１分割データを、下位４ビットをマスク処理した前記非線形変換用データを用いて非線形変換し、前記分割データの内の前記第１分割データに連接される第２分割データを、上位４ビットをマスク処理した前記非線形変換用データを用いて非線形変換することを第４の特徴とする。
【００２１】
上記何れかの特徴の本発明に係る暗号処理方法は、前記第１置換表と前記第２置換表を多重化して前記複合置換表を作成する複合置換表作成工程を実行することを第５の特徴とする。
【００２２】
上記目的を達成するための本発明に係る暗号処理プログラムは、上記第１〜第５の何れかの特徴の暗号処理方法における前記非線形変換処理を、コンピュータ上で実行するプログラムステップを含むことを特徴とする。
【発明の効果】
【００２３】
上記特徴の本発明によれば、共通鍵暗号方式で用いるＳ−ＢＯＸの各置換表（変換テーブル）の２つの要素の値を夫々、データ領域の上位４ビット及び下位４ビットに記憶した複合置換表（複合変換テーブル）を用いるので、ソフトウェア構成による暗号処理モジュールを実装する場合に、Ｓ−ＢＯＸの置換表のプログラムサイズを半分にし、Ｓ−ＢＯＸのプログラムサイズを低減することができる。具体的には、Ｓ−ＢＯＸでは、通常、変換テーブル内の各要素の値は４ビットで表示可能な値であるが、変換テーブルの各要素を記憶するデータ領域は１バイト単位で定義されることから、該データ領域を上位４ビット及び下位４ビットで分割すれば、変換テーブルの２つの要素を記憶することが可能になる。従って、本発明の如く、データ領域の上位４ビット及び下位４ビットに２つの変換テーブルの要素を記憶することで、Ｓ−ＢＯＸの置換表のプログラムサイズを半分にし、Ｓ−ＢＯＸのプログラムサイズを低減することができる。
【００２４】
更に、上記特徴の本発明において、複合置換表を、異なる置換表の２つの要素の値を各データ領域に記憶するように構成し、同一のデータ領域に記憶されている第１置換表の要素の位相と第２置換表の要素の位相とが同一となるように構成すれば、各置換表の要素の位相とデータ領域との相関関係を複雑化することなくＳ−ＢＯＸのプログラムサイズを低減することが可能になる。
【００２５】
また、上記特徴の本発明において、第１分割データを、下位４ビットをマスク処理した複合置換表の各要素のデータを用いて非線形変換し、第２分割データを、上位４ビットをマスク処理した複合置換表の各要素のデータを用いて非線形変換するように構成すれば、非線形変換処理対象の２つのデータに対し、従来技術ではＳ−ＢＯＸによる処理後に必要であった非線形変換後のデータの連接処理を実行する必要がなくなるため、処理効率の低下防止を図ることが可能になる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明に係る暗号処理方法及び暗号処理プログラム（以下、適宜「本発明方法」及び「本発明プログラム」と称する）の実施形態を図面に基づいて説明する。
【００２７】
本発明に係る暗号処理方法及び暗号処理プログラムの実施形態について、図１〜図１５を基に説明する。尚、本発明方法及び本発明プログラムは、共通鍵暗号方式により暗号処理を行なうものであり、特に、本実施形態では、１つの共通鍵を基に複数の鍵を生成し、生成した複数の鍵を用いて暗号処理を繰り返し実行する共通鍵ブロック暗号方式の１つであるＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式による暗号処理を実行する。ＤＥＳ暗号方式の暗号処理では、入力データ（平文）から生成された中間データに対する変換関数の適用による暗号処理を繰り返し実行することにより、平文を暗号文に変換する。本実施形態では、暗号化する平文データのサイズが６４ビットであり、鍵データのサイズが４８ビットである場合を想定して説明する。
【００２８】
先ず、本発明プログラムの基本構成について図１〜図６を基に説明する。本発明プログラムは、図１に示すように、入力データの変換を実行するラウンド関数部１００と、ラウンド関数部１００の各暗号処理部１０３（ラウンド）で用いる鍵データＫを生成する鍵スケジュール部１１０を備えて構成されており、これは、従来技術に係る暗号処理モジュールの構成と同じである。
【００２９】
ラウンド関数部１００は、平文データの入力を受け付ける入力処理部１０１、平文データに対する転置処理（文字列の入れ替え処理）を実行すると共に６４ビットの平文データを３２ビットの中間データＬ０、Ｒ０に分割する初期転置処理部１０２、前段から出力される中間データに対する暗号処理を行なう暗号処理部１０３、暗号処理部１０３から出力される中間データに対する転置処理を行なう最終転置処理部１０４、及び、暗号文データを出力する出力処理部１０５を備えて構成されている。尚、本実施形態のラウンド関数部１００は、１６段の暗号処理部１０３を備え、各段の暗号処理部１０３は、前段から出力される中間データを、１バイト単位のデータ領域の上位４ビット及び下位４ビットの夫々に変換テーブルの異なる要素の値を記憶した複合変換テーブル（複合置換表に相当）を用いて暗号処理するように構成されている。
【００３０】
本発明で用いる複合変換テーブルは、図１０に示す従来の変換テーブルの内、非線形変換後に連接処理される２つの中間データを変換するための２つの変換テーブルを多重化して構成されている。ここで、図２は、本発明で用いる複合変換テーブルＳ１，２、Ｓ３，４、・・・、Ｓｍ−１，ｍ（ｍは多重化前の変換テーブルの総数）を示している。詳細には、多重化の対象となる２つの変換テーブルをＳｄ、Ｓｄ＋１（ｄはｍ以下の奇数）とし、テーブルＳｄの各要素の値をａｄｐｑ（ｐ、ｑは任意の整数）、テーブルＳｄ＋１の各要素の値をａｄ＋１ｐｑとした場合、本発明で用いる複合変換テーブルＳｄ，ｄ＋１の各要素の値は、ａｄｐｑを４つ左シフトさせた値とａｄ＋１ｐｑの論理和（ａｄｐｑ＜＜４｜ａｄ＋１ｐｑ）となる。
【００３１】
暗号処理部１０３は、図３に示すように、Ｆ関数部２０１を備えて構成されており、初期転置処理部１０２または前段（ｎ−１段）（ｎは１以上１６以下の整数）の暗号処理部１０３から２つの中間データＬｎ−１、Ｒｎ−１を、鍵スケジュール部１１０から鍵データｋｎを受け取り、中間データＲｎ−１を中間データＬｎとし、中間データＲｎ−１と鍵データｋｎをＦ関数部２０１で変換した値と中間データＬｎ−１との排他的論理輪を中間データＲｎとして、中間データＬｎ、Ｒｎを出力する。尚、暗号処理部１０３の基本構成は、従来技術に係る暗号処理部１０３の基本構成と同じである。
【００３２】
Ｆ関数部２０１は、図４に示すように、前段から入力された３２ビットの中間データＲを４８ビットに拡大処理して値Ｒ'を生成する拡大転置処理部３０１、値Ｒ’と鍵スケジュール部１１０から入力される鍵データｋｎとの排他的論理和Ｘを非線形変換処理して３２ビットのデータＹを生成するＳ−ＢＯＸ処理部３０２、Ｓ−ＢＯＸ処理部３０２の出力データＹを転置してＦ関数部２０１の出力としての３２ビットのデータＦ（Ｒ、Ｋ）を生成する転置処理部３０３を備えて構成されており、これは、従来技術に係るＦ関数部２０１の基本構成と同じである。
【００３３】
ここで、図５は、Ｓ−ＢＯＸ処理部３０２の非線形変換処理のデータの流れを示している。Ｓ−ＢＯＸ処理部３０２は、複合変換テーブルＳｄ，ｄ＋１を用いて６ビットのデータを４ビットのデータに変換する非線形変換処理を行なう変換部ＳＢｄ，ｄ＋１を複数備えて構成されている。より詳細には、本実施形態では、入力されるデータＸが４８ビットであることから、Ｓ−ＢＯＸ処理部３０２は、４つの変換部ＳＢ１，２、ＳＢ３，４、ＳＢ５，６、ＳＢ７，８を備えている。データＸを６ビット毎に分割したデータＸ１〜Ｘ８の内、データＸ１及びＸ２が変換部ＳＢ１，２に、データＸ３及びＸ４が変換部ＳＢ３，４に、データＸ５及びＸ６が変換部ＳＢ５，６に、データＸ７及びＸ８が変換部ＳＢ７，８に夫々入力される。
【００３４】
変換部ＳＢｎ，ｎ＋１は夫々、図６に示すように、複合変換テーブルＳｎ，ｎ＋１に基づいて６ビットの２つのデータＸｎ及びＸｎ＋１を非線形変換処理して８ビットの２つのデータＺｎ及びＺｎ＋１を求める非線形変換処理部８０１、及び、８ビットの２つのデータＺｎとデータＺｎ＋１を多重化処理して８ビットの変換部ＳＢｎ，ｎ＋１の出力データＹ（ｎ＋１）／２を作成する多重化処理部８０２を備えて構成されている。非線形変換処理部８０１は、従来技術と同様に、データＸｎのｂｉｔ０及びｂｉｔ５に基づいて４種類の換字表の内の１つを選択し、選択した換字表に従ってデータＸｎの中央の４ビットの値（ｂｉｔ１〜ｂｉｔ４の値）を変換し、変換した値をデータＺｎとして出力する。続いて、非線形変換処理部８０１は、データＸｎと同様にして、データＸｎ＋１をデータＺｎ＋１に変換する。また、本実施形態での多重化処理は論理和演算であり、多重化処理部８０２は、データＺｎの上位４ビットが有効であり、データＺｎ＋１の下位４ビットが有効であることから、データＺｎの下位４ビットをマスク処理した値Ｚｎ＆０ｘｆ０と、データＺｎ＋１の上位４ビットをマスク処理した値Ｚｎ＋１＆０ｘ０ｆの論理和をとる。最後に、Ｓ−ＢＯＸ処理部３０２は、４つの変換部ＳＢ１，２、ＳＢ３，４、ＳＢ５，６、ＳＢ７，８が生成した４つの８ビットのデータＹ１〜Ｙ４を連接処理して、３２ビットのデータＹを出力する。
【００３５】
鍵スケジュール部１１０は、鍵データの入力を受け付ける入力処理部１１１、鍵データを鍵生成部１１３で処理可能なデータに変換する縮約型転置処理部１１２、及び、前段から出力される鍵データＫを基に新たな鍵データＫを作成する鍵生成部１１３を備えて構成されている。本実施形態の鍵スケジュール部１１０は、ラウンド関数部１００の暗号処理部１０３夫々に個別の鍵データＫを提供するように１６段の鍵生成部１１３を備えて構成されており、鍵生成部１１３は、前段から出力される鍵データを受けて新たに鍵データを作成するように構成されている。
【００３６】
次に、本発明プログラムにおける本発明方法の処理手順について図７〜図９を基に説明する。
【００３７】
本発明プログラムのラウンド関数部１００は、入力処理部１０１が６４ビットの平文データを受け付けると、先ず、初期転置処理部１０２が、６４ビットの平文データを３２ビットのデータＬ０、Ｒ０に分割し、分割したデータＬ０、Ｒ０を第１段暗号処理部１０３ａに入力する。第１段暗号処理部１０３ａは、初期転置処理部１０２からのデータＬ０、Ｒ０に対し、後述する鍵スケジュール部１１０の第１段鍵生成部１１３ａから入力される４８ビットの鍵データＫ１を用いて暗号処理を実行し、暗号処理結果である中間データＬ１、Ｒ１を次段の第２段暗号処理部１０３ｂに出力する。同様に、第２段〜第１５段暗号処理部１０３は、夫々、前段の中間データＬｎ−１、Ｒｎ−１に対し、鍵生成部１１３から入力される鍵データｋｎを用いて暗号処理を実行し、中間データＬｎ、Ｒｎを次段の暗号処理部１０３に出力する。最終段の第１６段暗号処理部１０３ｃは、第１５段暗号処理部１０３からの中間データＬ１５、Ｒ１５に対し、第１６段鍵生成部１１３ｃから入力される鍵データｋ１６を用いて暗号処理を実行し、中間データＬ１６、Ｒ１６を最終転置処理部１０４に対して出力する。最終転置処理部１０４は、中間データＬ１６、Ｒ１６から暗号文データを生成し、出力処理部１０５に対して出力する。
【００３８】
より詳細には、暗号処理部１０３は、図３に示すように、前段（ｎ−１段）の暗号処理部１０３からの２つの中間データＬｎ−１、Ｒｎ−１を受け付けると、中間データＲｎ−１を中間データＬｎとし、中間データＲｎ−１と鍵データｋｎをＦ関数部２０１で変換した値と中間データＬｎ−１との排他的論理輪を中間データＲｎとして、中間データＬｎ、Ｒｎを出力する。Ｆ関数部２０１は、図４に示すように、拡大転置処理部３０１が、３２ビットの中間データＲを４８ビットに拡大処理して値Ｒ'を生成し、Ｓ−ＢＯＸ処理部３０２が、値Ｒ’と鍵データｋｎとの排他的論理和Ｘを非線形変換処理して３２ビットのデータＹを生成し、転置処理部３０３が、データＹを転置してデータＦ（Ｒ、Ｋ）を生成する。
【００３９】
ここで、図７は、Ｓ−ＢＯＸ処理部３０２の処理手順を示している。Ｓ−ＢＯＸ処理部３０２は、先ず、入力された４８ビットのデータＸを６ビット毎に分割し、８組のデータＸ１＝（ｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）、Ｘ２＝（ｘ６，ｘ７，ｘ８，ｘ９，ｘ１０，ｘ１１）、・・・、Ｘ８＝（ｘ４２，ｘ４３，ｘ４４，ｘ４５，ｘ４６，ｘ４７）を生成する（ステップ＃６０１）。
【００４０】
続いて、Ｓ−ＢＯＸ処理部３０２の変換部ＳＢ１，２が、入力されたデータＸ１及びＸ２夫々に対し、複合変換テーブルＳ１，２を用いてＳ−ＢＯＸ処理（非線形変換処理）を実行する（ステップ＃６０２）。ここで、図８は、変換部ＳＢ１，２で使用する複合変換テーブルＳ１，２の一例を示している。従来技術の場合と同様に、図中の“０ｘ”は次の文字が１６進数を示す表記文字であり、複合変換テーブルＳ１，２には４種類の換字表が用意されている。より具体的には、複合変換テーブルＳ１，２は、図１４に示す従来技術で用いる変換テーブルＳ１及びＳ２を多重化したものであり、複合変換テーブルＳ１，２の要素の値は、夫々、上位４ビットの値が変換テーブルＳ１の対応する位相の要素の値であり、下位４ビットの値が変換テーブルＳ２の対応する位相の要素の値となっている。
【００４１】
図９は、変換部ＳＢ１，２によるステップ＃６０２におけるＳ−ＢＯＸ処理の処理手順、即ち、複合変換テーブルＳ１，２を用いた非線形変換処理の処理手順を示している。本実施形態の変換部ＳＢｎ，ｎ＋１の非線形変換処理部８０１は、２つのデータＸｎ及びデータＸｎ＋１に対し、１つの複合変換テーブルＳｎ，ｎ＋１を用いて非線形変換処理を実行する。変換部ＳＢｎ，ｎ＋１は、図９に示すように、先ず、データＸｎに対して参照ｉｎｄｅｘを計算し、複合変換テーブルＳｎ，ｎ＋１に基づいてデータＸｎを換字してデータＺｎを求める。データＸｎの変換は、従来技術と同様に、データＸｎのｂｉｔ０及びｂｉｔ５に基づいて４種類の換字表の内の１つを選択し、選択した換字表に従ってデータＸｎの中央の４ビットの値（ｂｉｔ１〜ｂｉｔ４の値）を変換し、変換した値をデータＺｎとして出力する。続いて、データＸｎの場合と同様に、データＸｎ＋１に対して参照ｉｎｄｅｘを計算し、複合変換テーブルＳｎ，ｎ＋１に基づいてデータＸｎ＋１を換字してデータＺｎ＋１を求める。最後に、変換部ＳＢｎ，ｎ＋１の多重化処理部８０２は、非線形変換処理部８０１が生成したデータＺｎとデータＺｎ＋１を多重化処理して変換部ＳＢｎ，ｎ＋１の出力データＹ（ｎ＋１）／２を作成する。多重化処理は、データＸｎの非線形変換処理結果がデータＺｎの上位４ビットに対応し、データＸｎ＋１の非線形変換処理結果がデータＺｎ＋１の下位４ビットに対応することから、データＺｎの下位４ビットをマスク処理した値Ｚｎ＆０ｘｆ０と、データＺｎ＋１の上位４ビットをマスク処理した値Ｚｎ＋１＆０ｘ０ｆの論理和をとる。更に具体的には、データＸｎを複合変換テーブルＳｎ，ｎ＋１で換字した結果が（ａｎｐｑ｜ａｎ＋１ｐｑ）、データＸｎ＋１を複合変換テーブルＳｎ，ｎ＋１で換字した結果が（ａｎｒｓ｜ａｎ＋１ｒｓ）（ｒ、ｓは任意の整数）であるとすると、データＹ（ｎ＋１）／２は、｛（ａｎｐｑ｜ａｎ＋１ｐｑ）＆０ｘｆ０｝｜｛（ａｎｒｓ｜ａｎ＋１ｒｓ）＆０ｘ０ｆ｝で求めることができる。
【００４２】
尚、本発明プログラム及び本発明方法を適用してソフトウェア構成の暗号処理モジュールを実装する場合、４つの複合変換テーブルＳ１，２〜Ｓ７，８を固定データとして用意すれば良い。従って、本発明プログラム及び本発明方法では、従来技術と同様に、複合変換テーブル１つのデータ要素数が６４個であるため、複合変換テーブル１つのデータ容量は６４バイトとなるが、複合変換テーブルの数は４つであるため、本発明プログラム全体で複合変換テーブルが必要とする記憶容量は２５６バイトになる。これは従来技術に係る暗号処理方法の５１２バイトの半分である。
【００４３】
従来技術に係る暗号処理方法の処理速度と本発明方法の処理速度とを比較する。従来技術に係る暗号処理方法の処理速度及び本発明方法の処理速度は、夫々、連接処理及び多重化処理の処理速度に依存する。従来技術に係る暗号処理方法では、図１２及び図１３に示すように、プログラム全体で４回のシフト演算と４回の論理和の計算が行なわれる。これに対し、本発明方法では、図６及び図７に示すように、各多重化処理において１回の論理和と２回の論理積が行なわれ、本発明方法全体では、４回の論理和と８回の論理積の計算が行なわれる。つまり、従来技術に係る暗号処理方法の処理時間と本発明方法の処理時間の差は、４回のシフト演算にかかる時間と８回の論理積の計算に係る時間の差となる。シフト演算及び論理積の計算は、共に、電子計算機における基本演算であり、その処理速度は十分に速いため、プログラム全体での処理時間の差は僅かであり、本発明方法を適用することによって処理パフォーマンスが下がることはない。
【図面の簡単な説明】
【００４４】
【図１】本発明に係る暗号処理プログラムの概略構成を示す概略ブロック図
【図２】本発明に係る暗号処理プログラム及び暗号処理方法で用いる複合変換テーブル（複合置換表）の概略構成を示す表
【図３】本発明に係る暗号処理プログラムの暗号処理部の構成例を示す概略構成図
【図４】本発明に係る暗号処理プログラムで用いるＦ関数部の構成例を示す概略構成図
【図５】本発明に係る暗号処理プログラムで用いるＳ−ＢＯＸ処理部における非線形変換処理の概念を示す概念図
【図６】本発明に係る暗号処理プログラムで用いる変換部の構成例を示す概略構成図
【図７】本発明に係る暗号処理方法におけるＳ−ＢＯＸ処理部の処理手順を示すフローチャート
【図８】本発明に係る暗号処理方法で用いる複合変換テーブル（複合置換表）の概略構成を示す表
【図９】本発明に係る暗号処理方法における変換部の処理手順を示すフローチャート
【図１０】従来技術に係る暗号処理プログラム及び暗号処理方法で用いる変換テーブル（置換表）の概略構成を示す表
【図１１】従来技術に係る暗号処理プログラムで用いるＳ−ＢＯＸ処理部における非線形変換処理の概念を示す概念図
【図１２】従来技術に係る暗号処理プログラムで用いる変換部の構成例を示す概略構成図
【図１３】従来技術に係る暗号処理方法におけるＳ−ＢＯＸ処理部の処理手順を示すフローチャート
【図１４】従来技術に係る暗号処理方法で用いる変換テーブル（置換表）の概略構成を示す表
【図１５】従来技術に係る暗号処理方法における変換部の処理手順を示すフローチャート
【符号の説明】
【００４５】
１：      本発明に係る暗号化プログラム
１００：  ラウンド関数部
１０１：  入力処理部
１０２：  初期転置処理部
１０３：  暗号処理部
１０４：  最終転置処理部
１０５：  出力処理部
１１０：  鍵スケジュール部
１１１：  入力処理部
１１２：  縮約型転置処理部
１１３：  鍵生成部
２０１：  Ｆ関数部
３０１：  拡大転置処理部
３０２：  Ｓ−ＢＯＸ処理部
３０３：  転置処理部
８０１：  非線形変換処理部
８０２：  多重化処理部
ＳＢ：    変換部
Ｓ：      変換テーブル
【図１】
2008046151.tif 000003
【図２】
2008046151.tif 000004
【図３】
2008046151.tif 000005
【図４】
2008046151.tif 000006
【図５】
2008046151.tif 000007
【図６】
2008046151.tif 000008
【図７】
2008046151.tif 000009
【図８】
2008046151.tif 000010
【図９】
2008046151.tif 000011
【図１０】
2008046151.tif 000012
【図１１】
2008046151.tif 000013
【図１２】
2008046151.tif 000014
【図１３】
2008046151.tif 000015
【図１４】
2008046151.tif 000016
【図１５】
2008046151.tif 000017