(57)【要約】【課題】入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用でき、線型変換部における行列生成の制限を緩和する。【解決手段】ＭＤＳ変換部１４が各Ｓボックス１３1〜１３5のうちのＳボックス１３1〜１３4から出力される出力データをＭＤＳ変換する構成により、全てのＳボックス（非線型変換手段）の出力を線型変換部（ＭＤＳ変換手段）へ入力するという前提が無いので、線型変換部が存在しない場合が無い。よって、入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用できる。【選択図】図２
2008107636.tif 000002
【特許請求の範囲】
【請求項１】
ブロック暗号方式に用いられ、それぞれＦ関数部を有する複数段のラウンド関数部がカスケード接続されてなる暗号化装置であって、
前記各Ｆ関数部は、
入力されるデータに基づいて排他的論理和を算出する排他的論理和手段と、
前記排他的論理和手段から出力される出力データを分割する分割手段と、
前記分割手段に分割された各データをメモリ内の置換テーブルを用いて非線型変換する複数の非線型変換手段と、
前記各非線型変換手段のうちの一部の非線型変換手段から出力される出力データをＭＤＳ変換するＭＤＳ変換手段と、
前記ＭＤＳ変換手段から出力される出力データと、前記各非線型変換手段のうちの残りの非線型変換手段から出力される出力データとを結合して出力する出力手段と
を備えたことを特徴とする暗号化装置。
【請求項２】
請求項１に記載の暗号化装置において、
前記一部の非線型変換手段は、
互いに等しいビット数の入力サイズを有し、出力データを前記ＭＤＳ変換手段に出力する複数の第１の非線型変換手段であり、
前記残りの非線型変換手段は、
前記第１の非線型変換手段の入力サイズとは異なる入力サイズを有し、出力データを前記出力手段に出力する第２の非線型変換手段であることを特徴とする暗号化装置。
【請求項３】
請求項２に記載の暗号化装置において、
前記第２の非線型変換手段は、前記第１の非線型変換手段の入力サイズよりも小さい入力サイズを有することを特徴とする暗号化装置。
【請求項４】
ブロック暗号方式に用いられ、それぞれＦ関数部を有する複数段のラウンド関数部がカスケード接続されてなる暗号化装置のプログラムであって、
前記暗号化装置の各Ｆ関数部を、
入力されるデータに基づいて排他的論理和を算出する排他的論理和手段、
前記排他的論理和手段から出力される出力データを分割する分割手段、
前記分割手段に分割された各データを、前記暗号化装置のメモリに記憶された置換テーブルを用いて非線型変換する複数の非線型変換手段、
前記各非線型変換手段のうちの一部の非線型変換手段から出力される出力データをＭＤＳ変換するＭＤＳ変換手段、
前記ＭＤＳ変換手段から出力される出力データと、前記各非線型変換手段のうちの残りの非線型変換手段から出力される出力データとを結合して出力する出力手段、
として機能させるためのプログラム。
【請求項５】
ブロック暗号方式に用いられ、それぞれＦ関数部を有する複数段のラウンド関数部がカスケード接続されてなる暗号化装置の各Ｆ関数部が実行する暗号化方法であって、
入力されるデータに基づいて排他的論理和を算出する排他的論理和算出工程と、
前記排他的論理和算出工程から出力される出力データを分割する分割工程と、
前記分割工程により分割された各データを、前記暗号化装置のメモリに記憶された置換テーブルを用いて非線型変換する複数の非線型変換工程と、
前記各非線型変換工程のうちの一部の非線型変換工程から出力される出力データをＭＤＳ変換するＭＤＳ変換工程と、
前記ＭＤＳ変換工程から出力される出力データと、前記各非線型変換工程のうちの残りの非線型変換工程から出力される出力データとを結合して出力する出力工程と、
を備えたことを特徴とする暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データの暗号化を行う共通鍵ブロック暗号方式を用いる暗号化装置、プログラム及び方法に係り、例えば、入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用でき、線型変換部における行列生成の制限を緩和し得る暗号化装置、プログラム及び方法に関する。
【背景技術】
【０００２】
高度情報化社会において情報セキュリティを確保するためには、データを暗号化及び復号するための暗号技術が基本的な技術となる。暗号技術の中では、共通鍵ブロック暗号と呼ばれる方式が一般的に用いられている。
【０００３】
多くの共通鍵ブロック暗号では、ファイステル(Feistel)構造と呼ばれる繰り返し構造を採用しており、ファイステル構造では、構成要素としてＦ関数と呼ばれる関数が用いられている。Ｆ関数においては、入力データを分割し、得られた各データを、それぞれ置換テーブルを用いてデータを置換する複数のＳ−ＢＯＸ（以下、Ｓボックスという）と呼ばれる非線型関数に入力し、各非線型関数の出力データを線型関数によって拡散する構造が用いられることが多い。この構造はＳＰＮ(Substitution Permutation Network)構造と呼ばれている。
【０００４】
このような共通鍵ブロック暗号では、入力ビット数が通常６４ビットあるいは１２８ビットであり、Ｆ関数でのデータ分割が、通常、均等分割（分割された各データのビット数が等しい）となっている。このため、Ｓボックスへの入力ビット数は、通常２ｎビットであり、実際には計算機のメモリ容量の制限等により８ビットとなることが多い。また、均等分割の場合には、後段の線型変換に適した関数としてＭＤＳ(maximum distance separable：最小距離分離)変換（例えば、非特許文献１参照）と呼ばれる線型関数が知られている。
【０００５】
このようなＦ関数においては、入力データの分割を細かく（Ｓボックスへの入力ビット数を小さく）すれば、置換テーブルを参照する回数が増えて実行時間が低速になり、分割を粗く（Ｓボックスへの入力ビット数を大きく）すれば、置換テーブルのサイズが大きくなってＳボックス内の記憶装置のメモリ量が増大し、参照速度が低速になる可能性がある。このため、入力データの分割を調節して計算機で使用するのに最適なメモリ量を実現できることが望ましい。
【０００６】
しかしながら、均等分割の場合、前述したメモリ量の増大や参照時間の低速化といった不都合から、Ｓボックスの置換テーブルのサイズを大きくできない問題がある。
【０００７】
こうした問題に対処するため、特許文献１では、非均等分割も視野に入れて、計算機の１次キャッシュメモリ量及び全体の入出力数を基にこれを最適化して、全体の入出力数を分割してＳボックスの入出力数を決めて、余りを任意のＳボックスの入出力に追加する、といった、その計算機に適合する暗号を構成する技術を提案している。
【０００８】
また、特許文献２では、非均等分割の場合に適切な線型変換部が存在するか否かを判定し、存在する場合には、線型変換部として、擬似ＭＤＳ変換に対応する行列を生成する技術を提案している。なお、「擬似ＭＤＳ変換」とは、特許文献２に記載された線型変換の名称であり、均等分割でのＭＤＳ変換に対応するものを意味している。
【特許文献１】特開２００１−２８２１０２号公報
【特許文献２】特開２００２−９１２９７号公報
【非特許文献１】共通鍵ブロック暗号の選択／設計／評価に関するドキュメント、通信・放送機構
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら特許文献２に記載の技術は、通常は特に問題は無いが、本発明者の検討によれば、全てのＳボックスの出力を線型変換部へ入力することを前提とし、この前提による線型変換部の存在を判定することにより、行列の生成への制限が生じている点で改良の余地があると考える（特許文献２の第４０−４２段落参照）。
【００１０】
本発明は上記実情を考慮してなされたもので、入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用でき、線型変換部における行列生成の制限を緩和し得る暗号化装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の発明は、ブロック暗号方式に用いられ、それぞれＦ関数部を有する複数段のラウンド関数部がカスケード接続されてなる暗号化装置であって、前記各Ｆ関数部としては、入力されるデータに基づいて排他的論理和を算出する排他的論理和手段と、前記排他的論理和手段から出力される出力データを分割する分割手段と、前記分割手段に分割された各データをメモリ内の置換テーブルを用いて非線型変換する複数の非線型変換手段と、前記各非線型変換手段のうちの一部の非線型変換手段から出力される出力データをＭＤＳ変換するＭＤＳ変換手段と、前記ＭＤＳ変換手段から出力される出力データと、前記各非線型変換手段のうちの残りの非線型変換手段から出力される出力データとを結合して出力する出力手段とを備えた暗号化装置である。
【００１２】
なお、第１の発明は、「装置」として表現したが、これに限らず、「方法」、「プログラム」又は「コンピュータ読取り可能な記憶媒体」として表現しても良い。
【００１３】
（作用）
従って、第１の発明では、ＭＤＳ変換手段が各非線型変換手段のうちの一部の非線型変換手段から出力される出力データをＭＤＳ変換する構成により、特許文献２とは異なり、全てのＳボックス（非線型変換手段）の出力を線型変換部（ＭＤＳ変換手段）へ入力するという前提が無いので、線型変換部が存在しない場合が無い。
【００１４】
従って、入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用でき、線型変換部における行列生成の制限を緩和することができる。
【発明の効果】
【００１５】
以上説明したように本発明によれば、入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用でき、線型変換部における行列生成の制限を緩和できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の各実施形態を図面を用いて説明する。なお、以下の装置は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。また、以下の説明中のビット数や段数は一例であり、他の値にしてもよいことはいうまでも無い。
【００１７】
（一実施形態）
図１は本発明の一実施形態に係る暗号化装置の構成を示す模式図である。この暗号化装置１は、互いにカスケード接続された２３段の鍵変換関数部ｆｋ１〜ｆｋ２３と、各鍵変換関数部ｆｋ１〜ｆｋ２３から個別に鍵K1〜K23が入力され、互いにカスケード接続された２３段のラウンド関数部Ｒ１〜Ｒ２３とを備えている。
【００１８】
ここで、１段目の鍵変換関数部ｆｋ１は、９６ビットの共通鍵が入力されると、この共通鍵に所定の鍵変換関数を施して３２ビットの鍵K1を生成し、この鍵K1を１段目のラウンド関数部Ｒ１に送出し、鍵変換関数部ｆｋ１への入力前の９６ビットの共通鍵を２段目の鍵変換関数部ｆｋ２に送出するものである。
【００１９】
２〜２２段目の鍵変換関数部ｆｋ２〜ｆｋ２２は、前段の９６ビットの共通鍵が入力されると、この鍵K1〜K21に所定の鍵変換関数を施して３２ビットの鍵K2〜K22を生成し、この鍵K2〜K22を２〜２２段目のラウンド関数部Ｒ２〜Ｒ２２にそれぞれ送出し、それぞれの鍵変換関数部ｆｋ２〜ｆｋ２２への入力前の９６ビットの共通鍵を３〜２３段目の鍵変換関数部ｆｋ３〜ｆｋ２３にそれぞれ送出するものである。
【００２０】
２３段目の鍵変換関数部ｆｋ２３は、９６ビットの共通鍵が入力されると、この鍵に所定の鍵変換関数を施して３２ビットの鍵K23を生成し、この鍵K23を２３段目のラウンド関数部Ｒ２３に送出するものである。
【００２１】
一方、１段目のラウンド関数部Ｒ１は、１ブロック（６４ビット）の平文データが左右３２ビットずつに分割されて入力された入力データDL0,DR0に対し、右側の入力データDR0をＦ関数部F1が鍵変換関数部ｆｋ１からの鍵K1により変換し、変換結果FOと左側の入力データDL0との排他的論理和を排他的論理和部XOR1が算出し、算出結果を２段目への右側の３２ビットの入力データDR1とし、Ｆ関数部F1による変換前の右側の入力データDR0を２段目の左側の３２ビットの入力データDL1とし、これら入力データDL1,DR1を２段目のラウンド関数部Ｒ２に出力するものである。
【００２２】
２〜２２段目のラウンド関数部Ｒ２〜Ｒ２２は、前段のラウンド関数部Ｒ１〜Ｒ２１から入力された入力データDL1,DR1〜DL21,DR21に対し、右側の入力データDR1〜DR21をＦ関数部F2〜F22が鍵変換関数部ｆｋ２〜ｆｋ２２からの鍵K2〜K22により変換し、変換結果FOと左側の入力データDL1〜DL21との排他的論理和を排他的論理和部XOR2〜XOR22が算出し、算出結果を３〜２３段目への右側の３２ビットの入力データDR2〜DR22とし、Ｆ関数部F2〜F22による変換前の右側の入力データDR1〜DR21を３〜２３段目の左側の３２ビットの入力データDL2〜DR22とし、これら入力データDL2,DR2〜DL22,DR22を３〜２３段目のラウンド関数部Ｒ３〜Ｒ２３に出力するものである。
【００２３】
２３段目のラウンド関数部Ｒ２３は、前段のラウンド関数部Ｒ２２から入力された入力データDL22,DR22に対し、右側の入力データDR22をＦ関数部F23が鍵変換関数部ｆｋ２３からの鍵K23により変換し、変換結果FOと左側の入力データDL22との排他的論理和を排他的論理和部XOR23が算出し、算出結果を左側の３２ビットの出力データDR23とし、Ｆ関数部F23による変換前の右側の入力データDR22を右側の出力データDL23とし、これら出力データDL23,DR23を結合した６４ビット（１ブロック）の暗号文を出力するものである。
【００２４】
ここで、各Ｆ関数部F1〜F23は、図２に示すように、排他的論理和部１１、分割部１２、Ｓボックス（非線型変換手段）１３1〜１３5、ＭＤＳ変換部１４及び出力部１５を備えている。
【００２５】
排他的論理和部１１は、入力される３２ビットの入力データDRi-1及び３２ビットの鍵Ki（但し、1≦i≦23）に基づいて排他的論理和を算出し、算出結果を示す３２ビットの出力データを分割部１２に出力する機能をもっている。
【００２６】
分割部１２は、排他的論理和部１１から出力される３２ビットの出力データを４つの７ビットデータと１つの４ビットデータとに非均等に５分割（＝４つの７ビットデータ＋１つの４ビットデータ）し、得られた４つの７ビットデータをＳボックス１３1〜１３4に出力し、当該１つの４ビットデータをＳボックス１３5に出力する機能をもっている。
【００２７】
非均等に５分割する方法は、例えば、排他的論理和部１１から出力される３２ビットの出力データを４分割し、得られた４つの８ビットデータから１ビットずつデータを分割する方式が使用可能となっている。
【００２８】
ここで、１ビットずつ分割する方式を使用した理由は、「入力の各部は必ず出力全体に影響を及ぼす」ことを保証する拡散性を確保する観点から、なるべく多くのビット数のデータをＭＤＳ変換するようにしたためである。しかし、１ビットずつの分割には限定されない。
【００２９】
Ｓボックス１３1〜１３4（第１の非線型変換手段）は、分割部１２に分割されて得た各７ビットデータを図示しないメモリに記憶された置換テーブルを用いて非線型変換し、非線型変換結果を示す７ビットの出力データをＭＤＳ変換部１４に出力する機能をもっている。ここで、Ｓボックス１３1〜１３4は、出力データをＭＤＳ変換部１４に出力するように配置され、互いに等しいビット数（７ビット）の入力サイズを有している。
【００３０】
また、Ｓボックス１３1〜１３4は、それぞれ任意の置換テーブルを使用可能であるが、ここではテーブル数を抑制してメモリ量を最適化する観点から、Ｓボックス１３1，１３3が互いに同一の置換テーブル（Ｓ１）を用いている。同じ観点からＳボックス１３2，１３4は、Ｓボックス１３1，１３3の置換テーブル（Ｓ１）とは異なるが、互いに同一の置換テーブル（Ｓ２）を用いている。
【００３１】
Ｓボックス１３5（第２の非線型変換手段）は、分割部１２に分割されて得られた４ビットデータをメモリ内の置換テーブルを用いて非線型変換し、非線型変換結果を示す４ビットの出力データを出力部１５に出力する機能をもっている。
【００３２】
また、Ｓボックス１３5は、出力データをＭＤＳ変換部１４を介さずに出力部１５に出力するように配置され、Ｓボックス１３1〜１３4の入力サイズとは異なる入力サイズを有しており、ここではＳボックス１３1〜１３4の入力サイズよりも小さい入力サイズ（４ビット）を有している。
【００３３】
ＭＤＳ変換部１４は、各Ｓボックス１３1〜１３5のうちの一部のＳボックス１３1〜１３4から出力される２８ビットの出力データをＭＤＳ変換し、変換結果を示す２８ビットの出力データを出力部１５に出力する機能をもっている。
【００３４】
なお、ＭＤＳ変換部１４は、入力データのビット数と出力データのビット数とが互いに等しいため、特許文献２とは異なり擬似ＭＤＳ変換を用いず、線型変換部が存在しない場合が無いものである。
【００３５】
出力部１５は、ＭＤＳ変換部１４から出力される２８ビットの出力データと、各Ｓボックス１３1〜１３5のうちの残りのＳボックス１３5から出力される４ビットの出力データとを結合して３２ビットの出力データFOを排他的論理和部XORiに出力する機能をもっている。
【００３６】
ここで、３２ビットの出力データFOは、ＭＤＳ変換部１４から出力される２８ビットの出力データが４分割された４つの７ビットデータのそれぞれの最上位ビットＭＳＢに対し、Ｓボックス１３5から出力される４ビットの出力データが４分割されてなる４つの１ビットデータを配置し、得られた４つの８ビットデータFO[0]〜FO[3]を結合したものである。
【００３７】
ここで、４つの７ビットデータのそれぞれに、４ビットの出力データを４分割した４つの１ビットの出力データを配置した理由は、前述同様に、拡散性を確保する観点から好ましいためである。但し、４つの１ビットの出力データをそれぞれ配置する位置は、７ビットデータの最上位ビットＭＳＢの位置に限らず、７ビットデータの最小桁のビットＬＳＢの位置でもよく、あるいは７ビットデータの他の任意の桁のビット位置でもよい。
【００３８】
次に、以上のように構成された暗号化装置の動作を説明する。  
いま、暗号化装置１は、平文データと共通鍵とが入力されたとする。なお、共通鍵は、予め暗号化装置内の図示しないメモリに記憶していてもよい。
【００３９】
（鍵生成動作）
暗号化装置１の１段目の鍵変換関数部ｆｋ１は、９６ビットの共通鍵が入力されると、この共通鍵に所定の鍵変換関数を施して３２ビットの鍵K1を生成し、この鍵K1を１段目のラウンド関数部Ｒ１に送出する。
【００４０】
以下同様に、２〜２２段目の鍵変換関数部ｆｋ２〜ｆｋ２２は、９６ビットの共通鍵が入力されると、この鍵に所定の鍵変換関数を施して３２ビットの鍵K2〜K22を生成し、この鍵K2〜K22を２〜２２段目のラウンド関数部Ｒ２〜Ｒ２２にそれぞれ送出し、それぞれの鍵変換関数部ｆｋ２〜ｆｋ２２への入力前の９６ビットの共通鍵を３〜２３段目の鍵変換関数部ｆｋ３〜ｆｋ２３にそれぞれ送出する。
【００４１】
２３段目の鍵変換関数部ｆｋ２３は、９６ビットの共通鍵が入力されると、この鍵に所定の鍵変換関数を施して３２ビットの鍵K23を生成し、この鍵K23を２３段目のラウンド関数部Ｒ２３に送出する。
【００４２】
（暗号化の動作）
一方、暗号化装置１は、平文データを６４ビットの各ブロックに分割し、各ブロックの平文データについて暗号化処理を開始する。
【００４３】
始めに、暗号化装置１は、１ブロック（６４ビット）の平文データを左右３２ビットずつに分割し、得られた入力データDL0,DR0を１段目のラウンド関数部Ｒ１に入力する。
【００４４】
１段目のラウンド関数部Ｒ１は、この入力データDL0,DR0に対し、右側の入力データDR0をＦ関数部F1が鍵変換関数部ｆｋ１からの鍵K1により変換する。
【００４５】
Ｆ関数部F1においては、排他的論理和部１１が、入力される３２ビットの入力データDRi-1及び３２ビットの鍵Kiに基づいて排他的論理和を算出し、算出結果を示す３２ビットの出力データを分割部１２に出力する。
【００４６】
分割部１２は、この３２ビットの出力データを４つの７ビットデータと１つの４ビットデータとに非均等に５分割し、得られた４つの７ビットデータをＳボックス１３1〜１３4に出力し、当該１つの４ビットデータをＳボックス１３5に出力する。
【００４７】
Ｓボックス１３1〜１３4は、分割部１２から得られた各７ビットデータを図示しないメモリに記憶された置換テーブルを用いて非線型変換し、非線型変換結果を示す７ビットの出力データをＭＤＳ変換部１４に出力する。
【００４８】
Ｓボックス１３5は、分割部１２から得られた４ビットデータをメモリ内の置換テーブルを用いて非線型変換し、非線型変換結果を示す４ビットの出力データを出力部１５に出力する。
【００４９】
ＭＤＳ変換部１４は、Ｓボックス１３1〜１３4から受けた２８ビットの出力データをＭＤＳ変換し、変換結果を示す２８ビットの出力データを出力部１５に出力する。
【００５０】
出力部１５は、ＭＤＳ変換部１４から受けた２８ビットの出力データと、Ｓボックス１３5から受けた４ビットの出力データとを結合して３２ビットの出力データFO（Ｆ関数部F1による変換結果）を排他的論理和部XOR1に出力する。
【００５１】
続いて、１段目のラウンド関数部Ｒ１の排他的論理和部XOR1では、Ｆ関数部F1から受けた出力データFOと、左側の入力データDL0との排他的論理和を算出する。
【００５２】
ここで、１段目のラウンド関数部Ｒ１では、排他的論理和部XOR1による算出結果を２段目への右側の３２ビットの入力データDR1とし、Ｆ関数部F1による変換前の右側の入力データDR0を２段目の左側の３２ビットの入力データDL1とし、これら入力データDL1,DR1を２段目のラウンド関数部Ｒ２に出力する。
【００５３】
以下同様に、２〜２２段目のラウンド関数部Ｒ２〜Ｒ２２においては、前段のラウンド関数部Ｒ１〜Ｒ２１から入力された入力データDL1,DR1〜DL21,DR21に対し、右側の入力データDR1〜DR21をＦ関数部F2〜F22が鍵変換関数部ｆｋ２〜ｆｋ２２からの鍵K2〜K22により変換し、この変換結果FOと左側の入力データDL1〜DL21との排他的論理和を排他的論理和部XOR2〜XOR22が算出し、算出結果を３〜２３段目への右側の３２ビットの入力データDR2〜DR22とし、Ｆ関数部F2〜F22による変換前の右側の入力データDR1〜DR21を３〜２３段目の左側の３２ビットの入力データDL2〜DR22とし、これら入力データDL2,DR2〜DL22,DR22を３〜２３段目のラウンド関数部Ｒ３〜Ｒ２３に出力する。
【００５４】
２３段目のラウンド関数部Ｒ２３は、前段のラウンド関数部Ｒ２２から入力された入力データDL22,DR22に対し、右側の入力データDR22をＦ関数部F23が鍵変換関数部ｆｋ２３からの鍵K23により変換し、変換結果FOと左側の入力データDL22との排他的論理和を排他的論理和部XOR23が算出し、算出結果を左側の３２ビットの出力データDR23とし、Ｆ関数部F23による変換前の右側の入力データDR22を右側の出力データDL23とし、これら出力データDL23,DR23を結合した６４ビット（１ブロック）の暗号文を出力する。
【００５５】
暗号化装置１では、以上の１ブロック毎の暗号化動作を平文データの各ブロックに対して実行し、最終的な暗号文を得る。なお、各ブロックに対して暗号化動作を実行する際には、所望により、暗号文ブロック連鎖方式(cipher block chaining：CBCモード)等の利用モードを用いてもよい。また、復号時には、暗号化時とは逆の順番で鍵K23〜K1を用いて暗号文データを平文データに戻せばよい。
【００５６】
上述したように本実施形態によれば、ＭＤＳ変換部１４が各Ｓボックス１３1〜１３5のうちのＳボックス１３1〜１３4から出力される出力データをＭＤＳ変換する構成により、特許文献２とは異なり、全てのＳボックス（非線型変換手段）の出力を線型変換部（ＭＤＳ変換手段）へ入力するという前提が無いので、線型変換部が存在しない場合が無い。従って、入力データを非均等分割した場合にも線型変換部としてＭＤＳ変換を利用でき、線型変換部における行列生成の制限を緩和することができる。
【００５７】
補足すると、本実施形態においては、Ｆ関数Fiへの３２ビットの入力データを非均等なビット数で５分割し、４個の７ビットデータと１個の４ビットデータとの各々を５個のＳボックス１３1〜１３5への入力とする。これらＳボックスのうち、互いにビット長が均等となっているＳボックス１３1〜１３4からの４個の分割データ（７ビットずつ）に対してはＭＤＳ変換を行い、他のＳボックス１３5の出力データについては、ＭＤＳ変換を行う対象から外し、このＳボックス１３5の出力データについては、ビット長が均等であるＳボックス１３1〜１３4の出力データに対するＭＤＳ変換結果と適切に並べて結合したものをＦ関数の出力データFOとしている。
【００５８】
これにより、ＳＰＮ構造のＦ関数部において、入力データを均等なビット数で分割した場合に後段の線型変換部に採用されるＭＤＳ変換を、入力データを非均等なビット数で分割した場合にも後段の線型変換部に採用することができるので、線型変換部の設計の制限を緩和することができる。
【００５９】
すなわち、本実施形態によれば、入力データの非均等分割によりＳボックスのテーブルの数と大きさを抑制したことに加え、均等なビット数で分割した場合によく使用されるＭＤＳ変換を、入力データを非均等分割した場合にも線型変換部で使用できるようにしている。
【００６０】
なお、本実施形態は、非均等分割ではあるが、特許文献１とは異なり、特定の計算機等を対象に最適化したものではなく、任意の暗号化装置のメモリ量を最適化することができる。また、例えばＩＣカードのような小型携帯装置は、情報機器の中でも比較的メモリ量が小さいので、本実施形態の適用により、メモリ量を最適化することが好ましい。
【００６１】
さらに、本実施形態は、非均等分割の場合に限らず、図３に示すように、均等分割の場合にも適用できる。すなわち、本実施形態は、図３に示すように、入力データを８ビットに均等分割し、各分割データをＳボックス１３1〜１３4に入力し、Ｓボックス１３1〜１３3の出力データをＭＤＳ変換部１４に入力し、Ｓボックス１３4の出力データをＭＤＳ変換部１４を介さずに出力部１５に入力する変形例としても、本実施形態と同様に実施して同様の効果を得ることができる。
【００６２】
また、本実施形態及びその変形例における暗号化装置１の用途は、データの暗号化に限らず、２つのエンティティ間で、一方が乱数を生成して暗号化して得られた暗号化乱数を相手に送信し、相手が暗号化乱数を復号できた場合（相手が自分と同じ共通鍵を有する場合）に、相手を正当な相手と認証する認証装置としても使用できることは言うまでもない。ここでいう認証装置は、いわゆるチャレンジ・レスポンス認証を用いる認証装置である。チャレンジ・レスポンス認証については、例えば、ISO/IEC 9798-2: 1999, Entity authentication - Part 2: Mechanisms using symmetric encipherment algorithms (2nd edition)の文献に詳しい。
【００６３】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００６４】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００６５】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００６６】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００６７】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００６８】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【００６９】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００７０】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【００７１】
【図１】本発明の一実施形態に係る暗号化装置の構成を示す模式図である。
【図２】同実施形態におけるＦ関数部の構成を示す模式図である。
【図３】同実施形態におけるＦ関数部の変形例を示す模式図である。
【符号の説明】
【００７２】
ｆｋ１〜ｆｋ２３…鍵変換関数部、Ｒ１，Ｒ２，Ｒ２３…ラウンド関数部、F1, F2, Fi, F23…Ｆ関数部、１…暗号化装置、１１…排他的論理和部、１２…分割部、１３1〜１３5…Ｓボックス、１４…ＭＤＳ変換部、１５…出力部。
【図１】
2008107636.tif 000003
【図２】
2008107636.tif 000004
【図３】
2008107636.tif 000005