(57)【要約】【課題】暗号化時と復号時とで処理時間の差を少なくすることができ、かつ、ランダム性が高く、安全性の高い拡大鍵を生成可能な暗号化システムを提供する。【解決手段】第１〜第４入力データＸ０〜Ｘ３を受け、第１〜第４入力データＸ０〜Ｘ３にデータ置換およびデータ融合処理を施し、拡大鍵ＳＫを算出する拡大鍵算出部２１０と、第１〜第４入力データＸ０〜Ｘ３の各々に所定の巡回ビットシフト処理を施し、データ位置を入れ替えた後、次段の鍵変換部または最終鍵変換部への入力となる第１〜第４出力データＹ０〜Ｙ３を算出する出力算出部２３０とを含む。【選択図】　　　　図３
2004004603.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成装置であって、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割手段と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換手段とを備え、
前記複数の鍵変換手段の各々は、
前記複数の部分鍵データまたは前段の鍵変換手段からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値が相互に干渉しない固定的な変換処理を実行し、後段の鍵変換手段への複数の出力データを算出する出力算出部と、
前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを有する
ことを特徴とする拡大鍵生成装置。
【請求項２】
前記出力算出部は、前記複数の入力データのうちの少なくとも１つに対し、ビット位置をあらかじめ定められた規則に従い変更する
ことを特徴とする請求項１に記載の拡大鍵生成装置。
【請求項３】
前記出力算出部において実行される前記変換処理は、前記入力データのあらかじめ定められたビット位置の値の反転処理である
ことを特徴とする請求項１に記載の拡大鍵生成装置。
【請求項４】
前記出力算出部は、前記複数の入力データのうちの少なくとも１つに対し、所定のビット数だけ巡回シフト操作を実行する
ことを特徴とする請求項１に記載の拡大鍵生成装置。
【請求項５】
前記所定のビット数は、前記巡回シフト操作が施される前記入力データのビット数の約数ではない
ことを特徴とする請求項４に記載の拡大鍵生成装置。
【請求項６】
前記出力算出部は、前記巡回シフト操作を実行した後に、前記複数の入力データの位置をあらかじめ定められた規則に従って入れ替え、前記複数の出力データを算出する
ことを特徴とする請求項４に記載の拡大鍵生成装置。
【請求項７】
前記拡大鍵算出部は、前記複数の入力データの融合における途中過程および前記複数の入力データのうちの少なくとも１つのデータに対し、所定の置換テーブルに基づいた置換処理を実行する
ことを特徴とする請求項４に記載の拡大鍵生成装置。
【請求項８】
前記拡大鍵算出部は、前記複数の入力データの融合における途中過程および前記複数の入力データのうちの少なくとも１つのデータに対し、所定の置換テーブルに基づいた置換処理を実行する
ことを特徴とする請求項１に記載の拡大鍵生成装置。
【請求項９】
前記拡大鍵算出部は、
前記複数の入力データの中から少なくとも２つの入力データを融合して第１の融合データを生成する第１の融合部と、
前記第１の融合データに対し、前記所定の置換テーブルに基づいた置換処理を実行し、置換データを出力するデータ置換部と、
前記置換データと、前記複数の入力データの中から得られる少なくとも１つの入力データとを融合して第２の融合データを生成する第２の融合部と、
少なくとも前記第２の融合データを含むデータを入力とし、前記拡大鍵データを作成する拡大鍵作成部とを含む
ことを特徴とする請求項８に記載の拡大鍵生成装置。
【請求項１０】
前記拡大鍵算出部は、前記複数の入力データの融合の途中結果と最終結果とを連結して前記拡大鍵データを作成する
ことを特徴とする請求項８に記載の拡大鍵生成装置。
【請求項１１】
暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項１に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。
【請求項１２】
暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項４に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。
【請求項１３】
暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項５に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。
【請求項１４】
暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項８に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。
【請求項１５】
暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項１に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項１に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を１段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項１に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。
【請求項１６】
暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項４に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項４に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を１段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項４に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。
【請求項１７】
暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項５に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成部手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項５に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を１段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項５に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。
【請求項１８】
暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項８に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項８に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を１段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項８に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。
【請求項１９】
暗号鍵データを用いて平文データを暗号化し、暗号文データを生成する暗号化装置と、
前記暗号鍵データを用いて前記暗号文データを復号する復号装置とを備え、
前記暗号化装置は、
前記暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成手段と、
前記複数の拡大鍵データに基づいて、前記平文データを暗号化するデータ撹乱手段とを有し、
前記拡大鍵生成手段は、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割部と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換部とを含み、
前記複数の鍵変換部の各々は、
前記複数の部分鍵データまたは前段の鍵変換部からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値が相互に干渉しない固定的な変換処理を実行し、後段の鍵変換部への複数の出力データを算出する出力算出部と、
前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを含む
ことを特徴とする暗号化システム。
【請求項２０】
暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成方法であって、
暗号鍵データを複数の部分鍵データに分割するステップと、
前記複数の部分鍵データを入力とし、複数の拡大鍵データを出力する一連の複数の鍵変換ステップとを含み、
前記複数の鍵変換ステップの各々は、
前記複数の部分鍵データまたは前段の鍵変換ステップで出力される複数の出力データを複数の入力データとし、前記複数の入力データの各々について、各ビットの値が相互に干渉しない固定的な変換処理を実行し、後段の鍵変換ステップで用いられる複数の出力データを算出するステップと、
前記複数の入力データを融合して、前記拡大鍵データを算出するステップとを含む
ことを特徴とする拡大鍵生成方法。
【請求項２１】
コンピュータを、平文データに対して暗号鍵データを用いて暗号化処理を行なう暗号化装置として機能させるためのプログラムであって、
前記暗号化装置は、
前記暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成手段と、
前記平文データを前記複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備え、
前記拡大鍵生成手段は、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割部と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換部とを有し、
前記複数の鍵変換部の各々は、
前記複数の部分鍵データまたは前段の鍵変換部からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値が相互に干渉しない固定的な変換処理を実行し、後段の鍵変換部への複数の出力データを算出する出力算出部と、
前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを含む
ことを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、暗号化システムに関し、特に、暗号時と復号時とでの処理時間の差が少なく、かつ、ランダム性の高い拡大鍵を生成可能な暗号化システムに関する。
【０００２】
【従来の技術】
近年、デジタル通信が急速に普及してきたが、健全な産業の発展やプライバシーを保護する等の観点から、通信におけるデータの機密性を確保するためのデータ暗号方式が要求されている。また、暗号方式の実現においては、安全性のみならず暗号処理の高速性や実装の簡便性も要求される。このような暗号方式の一般的構成では、暗号化の対象となるデータは、固定サイズのブロックに分割され、各ブロックが所定の暗号鍵に基づいてデータ撹乱処理されて、暗号文が生成される。
【０００３】
（第１の従来例）
このような暗号方式の１つに米国の次世代標準暗号であるＡＥＳ（Ａｄｖａｎｃｅｄ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）として制定されたＲｉｊｎｄａｅｌ暗号がある。図１６は、Ｒｉｊｎｄａｅｌ暗号方式を用いた暗号化装置の内部構成を示す図である。暗号化装置１３００は、１２８ビットの暗号鍵ＥＫから各１２８ビットの拡大鍵ＳＫ０〜ＳＫ１０を生成し出力する拡大鍵生成部６と、拡大鍵生成部６に接続され、拡大鍵生成部６より拡大鍵ＳＫ０〜ＳＫ１０を受け、拡大鍵ＳＫ０〜ＳＫ１０を用いて１２８ビットデータの平文ＰＴに対して所定のデータ変換処理を繰り返し行うことによりデータ撹乱を行い、１２８ビットの暗号文ＣＴを作成するデータ撹乱部５とを含む。
【０００４】
拡大鍵生成部６は、暗号鍵ＥＫを受け、暗号鍵ＥＫを４つの３２ビットのデータブロックＤ０，Ｄ１，Ｄ２およびＤ３に分割して出力するデータ分割部６００と、データ分割部６００に接続され、データ分割部６００よりデータブロックＤ０〜Ｄ３を受け、それらに後述する所定の演算を施し、拡大鍵ＳＫ１と４つの３２ビットのデータブロックとを生成し、出力する鍵変換部６０と、各々、前段の鍵変換部に接続され、前段の鍵変換部より４つの３２ビットのデータブロックを受け、それらに後述する所定の演算を施し、拡大鍵と４つの３２ビットのデータブロックとを生成し、出力する鍵変換部６１〜６９とを含む。
【０００５】
鍵変換部６１〜６９から出力される拡大鍵を、それぞれ拡大鍵ＳＫ２〜ＳＫ１０と定義する。また、鍵変換部６９は、４つのデータブロックを出力するが、それらは、他の処理には利用されない。さらに、拡大鍵生成部６は、暗号鍵ＥＫを拡大鍵ＳＫ０として出力する。
【０００６】
データ撹乱部５は、拡大鍵生成部６に接続され、拡大鍵ＳＫ０を受け、平文ＰＴと拡大鍵ＳＫ０との間でビットごとの排他的論理和演算を実行し、出力する鍵加算部５００と、鍵加算部５００および鍵変換部６０に接続され、鍵加算部５００より出力されたデータを拡大鍵ＳＫ１に基づいて変換するデータ変換部５０と、鍵変換部６１〜６８にそれぞれ接続され、前段のデータ変換部より出力されたデータを拡大鍵ＳＫ２〜ＳＫ９に基づいてそれぞれ変換するデータ変換部５１〜５８と、データ変換部５８および鍵変換部６９に接続され、データ変換部５８より出力されたデータを拡大鍵ＳＫ１０に基づいて変換し、暗号文ＣＴを出力する最終データ変換部５９とを含む。
【０００７】
図１７は、鍵変換部６０〜６９の各々の内部構成を示す図である。鍵変換部６０〜６９の各々は、各３２ビットの第１〜第４入力データＸ０〜Ｘ３に基づいて、後述する鍵変換処理を実行し、第１〜第４出力データＹ０〜Ｙ３および１２８ビットの拡大鍵ＳＫを出力する。
【０００８】
鍵変換部６０〜６９の各々は、第４入力データＸ３を受け、当該入力データＸ３を上位ビット方向（左方向）に８ビットだけ巡回ビットシフトし、結果を出力するデータ回転部６０１と、データ回転部６０１に接続され、データ回転部６０１より演算結果を受け、当該演算結果に所定の置換処理を施し、結果を出力するデータ置換部６０２と、データ置換部６０２に接続され、データ置換部６０２より置換結果を受け、当該置換結果とあらかじめ定められた３２ビットの定数Ｒｃｏｎとの間でビットごとの排他的論理和演算を実行し、データＴを出力する排他的論理和演算部６０３とを含む。
【０００９】
鍵変換部６０〜６９の各々は、排他的論理和演算部６０３に接続され、第１入力データＸ０と排他的論理和演算部６０３より出力されるデータＴとを受け、第１入力データＸ０とデータＴとの間でビットごとの排他的論理和演算を実行し、第１出力データＹ０を出力する排他的論理和演算部６０４と、排他的論理和演算部６０４に接続され、第２入力データＸ１と排他的論理和演算部６０４での演算結果とを受け、第２入力データＸ１と当該演算結果との間でビットごとの排他的論理和演算を実行し、第２出力データＹ１を出力する排他的論理和演算部６０５とをさらに含む。
【００１０】
鍵変換部６０〜６９の各々は、排他的論理和演算部６０５に接続され、第３入力データＸ２と排他的論理和演算部６０５での演算結果とを受け、第３入力データＸ２と当該演算結果との間でビットごとの排他的論理和演算を実行し、第３出力データＹ２を出力する排他的論理和演算部６０６と、排他的論理和演算部６０６に接続され、第４入力データＸ３と排他的論理和演算部６０６での演算結果とを受け、第４入力データＸ３と当該演算結果との間でビットごとの排他的論理和演算を実行し、第４出力データＹ３を出力する排他的論理和演算部６０７と、排他的論理和演算部６０４〜６０７に接続され、第１〜第４出力データＹ０〜Ｙ３を連結して拡大鍵ＳＫを出力するデータ連結部６０８とをさらに含む。各部で実行される処理の詳細については、以下に示す暗号化処理の説明中で行なう。
【００１１】
以下、暗号化装置１３００により実行されるＲｉｊｎｄａｅｌ暗号方式の暗号化処理について簡単に説明する。図１６に示されるように、拡大鍵生成部６は、暗号鍵ＥＫをそのまま拡大鍵ＳＫ０としてデータ撹乱部５内部の鍵加算部５００に出力する。鍵加算部５００は、平文ＰＴと拡大鍵ＳＫ０との間でビット毎の排他的論理和演算を実行し、その結果をデータ変換部５０に出力する。データ分割部６００は、暗号鍵ＥＫを上位ビットから３２ビットずつ４つのデータブロックＤ０，Ｄ１，Ｄ２およびＤ３に分割して、鍵変換部６０に出力する。
【００１２】
データ変換部５０に入力されたデータは、データ変換部５０からデータ変換部５８の順で、各データ変換部において順次データ変換処理され、最終的に最終データ変換部５９で処理された結果が暗号文ＣＴとして出力される。
【００１３】
データ変換部５０〜５８は、拡大鍵ＳＫ１〜ＳＫ９に基づいて、データ変換処理をそれぞれ行なう。また、最終データ変換部５９は、拡大鍵ＳＫ１０に基づいて、データ変換処理を行なう。拡大鍵ＳＫ１〜ＳＫ１０は、拡大鍵生成部６内部の鍵変換部６０〜６９において生成され、データ撹乱部５のデータ変換部５０〜５８および最終データ変換部５９にそれぞれ供給される。即ち、データ撹乱部５は、以下に示す１段の処理群を１０段実行し、暗号文ＣＴを生成する。
【００１４】
鍵変換部６０〜６９の各々は、第１〜第４入力データＸ０〜Ｘ３（各３２ビット）を受け、鍵変換処理を実行し、拡大鍵ＳＫ（１２８ビット）及び、第１〜第４出力データＹ０〜Ｙ３を出力する。データ回転部６０１、データ置換部６０２および排他的論理和演算部６０３は、第４入力データＸ３に対して、次式（１）で表される演算を実行することにより、データＴを計算する。
Ｔ＝Ｒｃｏｎ（＋）Ｐｅｒｍ（ＲＯＴＬ８（Ｘ３））　　　　　…（１）
【００１５】
ここで、ＲＯＴＬ８（Ｘ）は、データＸを上位ビット方向（左方向）に８ビットだけ巡回ビットシフトした結果を表す。Ｐｅｒｍ（Ｘ）は、データＸに対して所定の置換処理を施した結果を表す。演算子「（＋）」はビット毎の排他的論理和演算を表す。定数Ｒｃｏｎは、鍵変換部６０〜６９のそれぞれで異なる３２ビットの固定値データである。
【００１６】
排他的論理和演算部６０４〜６０７は、このようにして求められたデータＴを用い、次式（２）〜（５）で表される演算を実行することにより、第１〜第４出力データＹ０〜Ｙ３をそれぞれ求める。
2004004603.tif 000003
【００１７】
データ連結部６０８は、次式（６）で表される関係を有する拡大鍵ＳＫを求める。演算子「‖」は、データの連結を表す。すなわち、次式（６）は、各３２ビットの第１〜第４出力データＹ０〜Ｙ３を連結することにより、１２８ビットの拡大鍵ＳＫが得られることを示している。
【００１８】
ＳＫ＝Ｙ０‖Ｙ１‖Ｙ２‖Ｙ３　　　　　　　　　　　　　　　…（６）
鍵変換部６０〜６９の各々は、上述の処理の結果得られる拡大鍵ＳＫおよび第１〜第４出力データＹ０〜Ｙ３を出力する。
【００１９】
図１８は、Ｒｉｊｎｄａｅｌ暗号方式を用いた復号装置の内部構成を示す図である。復号装置１４００は、１２８ビットの暗号鍵ＥＫから、暗号化時とは逆の順序で各１２８ビットの拡大鍵ＳＫ１０〜ＳＫ０を生成する拡大鍵逆生成部８と、拡大鍵逆生成部８に接続され、拡大鍵逆生成部８より拡大鍵ＳＫ１０〜ＳＫ０を受け、拡大鍵ＳＫ１０〜ＳＫ０を用いて１２８ビットの暗号文ＣＴに対し、所定の逆データ撹乱処理を実行し、復号文ＤＴを出力する逆データ撹乱部７とを含む。
【００２０】
拡大鍵逆生成部８は、暗号鍵ＥＫを受け、上位から３２ビットずつ、４つのデータブロックに分割するデータ分割部８００と、データ分割部８００に接続され、４つのブロックを受け、それらに所定の演算を施し、４つの３２ビットのデータブロックを出力する鍵変換部８０と、各々、前段の鍵変換部に接続され、前段の鍵変換部より４つの３２ビットのデータブロックを受け、それらに所定の演算を施し、後段の鍵変換部に４つの３２ビットのデータブロックを生成し、出力する鍵変換部８１〜８８と、鍵変換部８８に接続され、鍵変換部８８より４つの３２ビットのデータブロックを受け、それらに所定の演算を施し、拡大鍵ＳＫ１０と４つの３２ビットのデータブロックとを生成し、出力する鍵変換部８９とを含む。
【００２１】
鍵変換部８０〜８９で実行される所定の演算は、鍵変換部６０〜６９で実行される所定の演算とそれぞれ同様であるため、鍵変換部８０〜８９の各々は、図１７に示される鍵変換部と同様の構成を有する。このため、その詳細な説明はここでは繰返さない。
【００２２】
ただし、鍵変換部８０〜８８は、鍵変換部６０〜６８とは異なり、拡大鍵ＳＫ１〜ＳＫ９を出力しない。このため、鍵変換部８０〜８８の各々の構成は、図１７に示す鍵変換部の構成からデータ連結部６０８を除いた構成であってもよい。
【００２３】
拡大鍵逆生成部８は、鍵変換部８９に接続され、鍵変換部８９より出力される４つの３２ビットのデータブロックを受け、それらに後述する逆鍵変換処理を施し、拡大鍵ＳＫ９と４つの３２ビットのデータブロックとを生成し、出力する逆鍵変換部９０と、各々、前段の逆鍵変換部に接続され、前段の逆鍵変換部より４つの３２ビットのデータブロックを受け、それらに後述する逆鍵変換処理を施し、拡大鍵と４つの３２ビットのデータブロックとを生成し、出力する逆鍵変換部９１〜９９とをさらに含む。
【００２４】
逆鍵変換部９０〜９９より出力される拡大鍵は、それぞれ拡大鍵ＳＫ９〜ＳＫ０である。逆鍵変換部９９は、４つのデータブロックを出力するが、それらは、他の処理には利用されない。
【００２５】
逆データ撹乱部７は、鍵変換部８９に接続され、鍵変換部８９より拡大鍵ＳＫ１０を受け、暗号文ＣＴと拡大鍵ＳＫ１０とを用い、最終データ変換部５９で実行される変換処理の逆変換処理を実行し、処理結果を出力する最終逆データ変換部７０と、最終逆データ変換部７０および逆鍵変換部９０に接続され、最終逆データ変換部７０および逆鍵変換部９０から処理結果および拡大鍵ＳＫ９をそれぞれ受け、データ変換部５８で実行される変換処理の逆変換処理を実行し、処理結果を出力する逆データ変換部７１とを含む。
【００２６】
逆データ撹乱部７は、各々前段の逆データ変換部に接続されるとともに、逆鍵変換部９１〜９８にそれぞれ接続され、逆鍵変換部９１〜９８より拡大鍵ＳＫ８〜ＳＫ１をそれぞれ受け、データ変換部５７〜５０で実行される変換処理の逆変換処理をそれぞれ実行し、処理結果を出力する逆データ変換部７２〜７９と、逆データ変換部７９および逆鍵変換部９９に接続され、逆データ変換部７９および逆鍵変換部９９から処理結果および拡大鍵ＳＫ０をそれぞれ受け、鍵加算部５００で実行される変換処理の逆変換処理を実行し、復号文ＤＴを出力する鍵加算部７００とをさらに含む。
【００２７】
図１９は、逆鍵変換部９０〜９９の各々の内部構成を示す図である。逆鍵変換部９０〜９９の各々は、各３２ビットの第１〜第４入力データＹ０〜Ｙ３に基づいて、鍵変換部６０〜６９および８０〜８９の各々で実行される鍵変換処理の逆変換に相当する逆鍵変換処理を実行し、第１〜第４出力データＺ０〜Ｚ３および１２８ビットの拡大鍵ＳＫを出力する。
【００２８】
逆鍵変換部９０〜９９の各々は、第３入力データＹ２と第４入力データＹ３との間でビットごとの排他的論理和演算を実行し、第４出力データＺ３を出力する排他的論理和演算部９０１と、第２入力データＹ１と第３入力データＹ２との間でビットごとの排他的論理和演算を実行し、第３出力データＺ２を出力する排他的論理和演算部９０２と、第１入力データＹ０と第２入力データＹ１との間でビットごとの排他的論理和演算を実行し、第２出力データＺ１を出力する排他的論理和演算部９０３とを含む。
【００２９】
逆鍵変換部９０〜９９の各々は、排他的論理和演算部９０１に接続され、排他的論理和演算部９０１の出力を受け、当該出力を上位ビット方向（左方向）に８ビットだけ巡回ビットシフトし、結果を出力するデータ回転部９０５と、データ回転部９０５に接続され、データ回転部９０５より演算結果を受け、当該演算結果に所定の置換処理を施し、結果を出力するデータ置換部９０６とをさらに含む。
【００３０】
逆鍵変換部９０〜９９の各々は、データ置換部９０６に接続され、データ置換部９０６より置換結果を受け、当該置換結果と逆鍵変換部９０〜９９の各々であらかじめ定められた３２ビットの定数Ｒｃｏｎとの間でビットごとの排他的論理和演算を実行し、データＴを出力する排他的論理和演算部９０７と、排他的論理和演算部９０７に接続され、排他的論理和演算部９０７よりデータＴを受け、第１入力データＹ０とデータＴとの間でビットごとの排他的論理和演算を実行し、第１出力データＺ０を出力する排他的論理和演算部９０４と、排他的論理和演算部９０４〜９０１に接続され、第１〜第４出力データＺ０〜Ｚ３を連結して拡大鍵ＳＫを出力するデータ連結部９０８とをさらに含む。各部で実行される処理の詳細については、以下に示す復号処理の説明中で行なう。
【００３１】
以下、復号装置１４００により実行されるＲｉｊｎｄａｅｌ暗号方式の復号処理について簡単に説明する。図１８に示されるように、データ分割部８００は、１２８ビットの暗号鍵ＥＫを上位ビットから３２ビットずつ４つのデータブロックに分割する。これら４つのデータブロックに基づいて、鍵変換部８０〜８９において鍵変換処理が順次実行される。上述したように、鍵変換部８０〜８９で実行される鍵変換処理は、図１６に示す鍵変換部６０〜６９実行される鍵変換処理と同様である。ただし、鍵変換部８０〜８８でそれぞれ生成される拡大鍵ＳＫ１〜ＳＫ９は、その後の処理には利用されない。
【００３２】
鍵変換部８９は、生成された拡大鍵ＳＫを拡大鍵ＳＫ１０として最終逆データ変換部７０に出力する。その後、逆鍵変換部９０〜９９は、拡大鍵ＳＫ９〜ＳＫ０をそれぞれ順次生成する。鍵変換部８９および逆鍵変換部９０〜９９で実行される処理と並行して、最終逆データ変換部７０、逆データ変換部７１〜７９および鍵加算部７００は、拡大鍵ＳＫ１０〜ＳＫ０にそれぞれ基づいて、所定の処理を実行する。鍵加算部７００は最終的に復号文ＤＴを生成し、出力する。
【００３３】
次に、逆データ撹乱部７で実行される処理についてより詳細に説明する。逆データ撹乱部７で実行される処理は、図１６に示す暗号化装置１３００のデータ撹乱部５で実行される処理の逆変換に相当する。即ち、はじめに、最終逆データ変換部７０が、拡大鍵ＳＫ１０を用いて最終データ変換部５９で実行される処理の逆変換処理を実行する。その後、逆データ変換部７１〜７９は、拡大鍵ＳＫ９〜ＳＫ１をそれぞれ用いて、データ変換部５８〜５０で実行される処理の逆変換処理をそれぞれ実行する。最後に、鍵加算部７００は、拡大鍵ＳＫ０を用いて、鍵加算部５００で実行される処理の逆変換処理を実行し、復号文ＤＴを生成し、出力する。このように、復号時には、暗号化時とは逆の順序で拡大鍵を生成する必要がある。
【００３４】
図１９に示される逆鍵変換部９０〜９９の各々で実行される逆鍵変換処理について説明する。
排他的論理和演算部９０１〜９０３は、次式（７）〜（９）で表される演算をそれぞれ実行することにより、第２〜第４出力データＺ１〜Ｚ３をそれぞれ求める。
2004004603.tif 000004
【００３５】
データ回転部９０５、データ置換部９０６および排他的論理和演算部９０７は、第４出力データＺ３に対して次式（１０）で表される演算を実行することにより、データＴを計算する。
Ｔ＝Ｒｃｏｎ（＋）Ｐｅｒｍ（ＲＯＴＬ８（Ｚ３））　　　　…（１０）
【００３６】
排他的論理和演算部９０４は、データＴと第１入力データＹ０とのビットごとの排他的論理和である第１出力データＺ０を次式（１１）に従い求める。
Ｚ０＝Ｔ（＋）Ｙ０　　　　　　　　　　　　　　　　　　　…（１１）
【００３７】
データ連結部９０８は、次式（１２）に従い、第１〜第４出力データＺ０〜Ｚ３を結合し、１２８ビットの拡大鍵ＳＫを生成する。
ＳＫ＝Ｚ０‖Ｚ１‖Ｚ２‖Ｚ３　　　　　　　　　　　　　　…（１２）
【００３８】
逆鍵変換部９０〜９９の各々は、上述の処理の結果得られる拡大鍵ＳＫおよび第１〜第４出力データＺ０〜Ｚ３を出力する。
【００３９】
図１７に示されるように、本方式によれば、暗号化時に、データ置換部６０２が非線形処理を実行する。非線形処理されたデータの影響は、排他的論理和演算部６０４〜６０７を介して、拡大鍵ＳＫおよびすべての出力データにおよぶ。このため、本方式は簡易な鍵変換処理でありながら、ランダム性の高い拡大鍵生成を実現することができる。
【００４０】
（第２の従来例）
第２の従来例として米国標準暗号であるＤＥＳ（Ｄａｔａ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）がある。図２０はＤＥＳ方式による暗号化装置で用いられる鍵変換部１０の構成を示す図である。鍵変換部１０は、巡回シフト部１０１および１０２と、巡回シフト部１０１および１０２に接続されたデータ連結部１０３と、データ連結部１０３に接続されたデータ縮約部１０４とを含む。
【００４１】
次に、鍵変換部１０の動作について簡単に説明する。巡回シフト部１０１は、２８ビットの第１入力データに対して所定ビット数の巡回ビットシフト処理を実行し第１巡回シフトデータを生成する。巡回シフト部１０２は、２８ビットの第２入力データに対して所定ビット数の巡回ビットシフト処理を実行し第２巡回シフトデータを生成する。第１巡回シフトデータおよび第２巡回シフトデータは、それぞれ第１出力データおよび第２出力データとして鍵変換部１０から出力される。一方、データ連結部１０３は、第１巡回シフトデータと第２巡回シフトデータとを連結して５６ビットデータとし、当該データをデータ縮約部１０４に出力する。データ縮約部１０４は、入力されたデータからあらかじめ定められたビット位置の４８ビット分のデータを抽出し、拡大鍵を出力する。
【００４２】
ＤＥＳ方式による暗号化装置によれば、拡大鍵の生成は、基本的にデータシフト処理およびデータ抽出処理により実現されているため、暗号化時と復号時とで、拡大鍵を生成する際に、同じ拡大鍵生成処理を適用可能である。このため、第１の従来例のように、暗号化時と復号時とで、拡大鍵の生成に必要な処理量が異なるということがない。
【００４３】
しかしながら、これらの従来例では、以下のような問題点がある。第１の従来例の暗号方式においては、暗号化時と比べて、復号時の拡大鍵生成処理に時間がかかるという問題がある。その理由について以下に説明する。図１６に示されるように、暗号化装置１３００のデータ撹乱部５において、最初に処理を実行する鍵加算部５００には、暗号鍵ＥＫがそのまま使用される。このため、データ撹乱部５と拡大鍵生成部６は、並行してそれぞれの処理を実行することが可能である。
【００４４】
一方、図１８に示されるように、復号装置１４００の逆データ撹乱部７において、最初に処理を実行する最終逆データ変換部７０は、拡大鍵逆生成部８より供給される拡大鍵ＳＫ１０を使用しなければならない。拡大鍵ＳＫ１０を求めるためには、鍵変換部８０〜８９において鍵変換処理を実行する必要がある。すなわち、最終逆データ変換部７０は、１０回の鍵変換処理が実行された後でなければ処理を開始することができない。このため、復号処理は、これらの鍵変換処理の待ち時間だけ、暗号化処理と比べて時間がかかることになる。
【００４５】
このように、暗号化処理と復号処理との間で処理時間の極端に処理時間の差が生じる場合には、次のような問題が生じる。例えば、送信機と受信機との間でリアルタイムにデータをやり取りするような通信システムについて考える。このような通信システムに第１の従来例で説明した暗号化装置１３００および復号装置１４００を用いた場合には、送信機がリアルタイムでデータを暗号化して送信できたとしても、受信機は復号に時間がかかるためリアルタイムで暗号文を復号することができない。このため、受信機には受信した暗号化データを一時的に蓄積するためのバッファが必要となり、受信機のコストアップにつながってしまうという問題がある。
【００４６】
また、図２１のように、高速道路の料金所に取り付けられるＥＴＣ（Ｅｌｅｃｔｒｏｎｉｃ　Ｔｏｌｌ　Ｃｏｌｌｅｃｔｉｏｎ）システム１８００では、自動車１８０１に取り付けられた車載器１８０２と料金所アンテナ１８０４との間でのデータ通信を行ない、相互認証を行なう。自動車１８０１は、通常、ＥＴＣシステム１８００のゲートを停止することなく通過するため、ＥＴＣシステム１８００では、高速の応答速度が要求される。このため、ＥＴＣシステム１８００に従来の暗号化装置１３００および復号装置１４００を用いる場合には、高速なハードウェアが必要になるという問題がある。
【００４７】
一方、第２の従来例では、第１の従来例のような「復号時の拡大鍵生成に要する時間が暗号化時に比べて大きい」という問題は解消される。しかし、拡大鍵のランダム性が不十分であるという問題がある。
【００４８】
第２の従来例では、巡回ビットシフトされたデータを連結したものから所定位置のビットを抜き出したデータを拡大鍵としている。即ち、拡大鍵を生成する処理に、データ融合処理や置換処理などが使用されていないため、拡大鍵に十分なランダム性がない。これにより、第２の従来例の拡大鍵生成処理では、弱鍵と呼ばれる安全性の低い鍵が存在するという問題がある（ＤＥＳ方式による弱鍵については、たとえば、非特許文献１参照。）。
【００４９】
【非特許文献１】
Ａｌｆｒｅｄ　Ｊ．　Ｍｅｎｅｚｅｓ，　Ｐａｕｌ　Ｃ．　ｖａｎ　Ｏｏｒｓｃｈｏｔ，　Ｓｃｏｔｔ　Ａ．　Ｖａｎｓｔｏｎｅ，　”Ｈａｎｄｂｏｏｋ　ｏｆ　Ａｐｐｌｉｅｄ　Ｃｒｙｐｔｏｇｒａｐｈｙ”，　ＣＲＣ　Ｐｒｅｓｓ，　１９９７，　ｐｐ．２５６−ｐｐ．２５９
【００５０】
そこで、本発明は、このような状況に鑑みてなされたものであり、暗号化時と復号時とで処理時間の差を少なくすることができる暗号化システムを提供することを目的とする。
【００５１】
また、ランダム性が高く、安全性の高い拡大鍵を生成可能な暗号化システムを提供することも目的とする。
【００５２】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る拡大鍵生成装置は、暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成装置であって、前記暗号鍵データを複数の部分鍵データに分割するデータ分割手段と、前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換手段とを備え、前記複数の鍵変換手段の各々は、前記複数の部分鍵データまたは前段の鍵変換手段からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値が相互に干渉しない固定的な変換処理を実行し、後段の鍵変換手段への複数の出力データを算出する出力算出部と、前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを有することを特徴とする。
【００５３】
このように、出力算出部と拡大鍵算出部とを分離可能とし、出力算出部での処理が入力データに対し各ビットの値が相互に干渉しない固定的な変換処理とすることにより、所定段数の出力算出部の処理と等価な処理部を生成することができる。従って、復号時には、一端、上記した等価な処理部でデータを生成した後、鍵変換手段で実行される処理の逆変換処理を順次実行することにより、暗号文データの復号に利用される拡大鍵データを順次生成することが可能となる。よって、復号時には所定段数の出力算出部の処理を実行する必要がなくなり、暗号化時と復号時とで処理時間の差を少なくすることができる。
【００５４】
また、拡大鍵算出部は、複数の部分データを融合して拡大鍵データを算出していることより、ランダム性が高く、安全性の高い拡大鍵を提供することができる。
【００５５】
例えば、前記出力算出部は、前記複数の入力データのうちの少なくとも１つに対し、所定のビット数だけ巡回シフト操作を実行し、前記所定のビット数は、前記巡回シフト操作が施される前記入力データのビット数の約数ではない。
【００５６】
このように巡回シフト操作のビット数を巡回シフト操作が施される入力データの約数ではなくすることにより、入力データに複数回の巡回シフト操作を施したとしても、元の入力データと同一の入力データは生成されにくくなる。このため、ランダム性が高く、安全性の高い拡大鍵を提供することができる。
【００５７】
また、前記拡大鍵算出部は、前記複数の入力データの融合における途中過程および前記複数の入力データのうちの少なくとも１つのデータに対し、所定の置換テーブルに基づいた置換処理を実行する。
【００５８】
置換処理のような非線形な処理を挿入することにより、ランダム性が高く、安全性の高い拡大鍵を提供することができる。
本発明は、このような拡大鍵生成装置として実現することができるだけでなく、このような拡大鍵生成装置を備える暗号化装置として実現したり、このような拡大鍵生成装置を用いて暗号化された暗号文データを復号する復号装置として実現することもできる。また、暗号化装置と復号装置とからなる暗号化システムとして実現することもできるし、拡大鍵生成方法や、コンピュータを拡大鍵生成装置として機能させるためのプログラムとしても実現することができる。このようなプログラムは、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ　Ｄｉｓｋ−Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）などの記録媒体やインターネット等の伝送媒体を介して広く流通させることができるのは言うまでもない。
【００５９】
【発明の実施の形態】
以下、本発明に係る暗号化システムの実施の形態について図面を用いて詳細に説明する。暗号化システムは、後述する暗号化装置と復号装置とから構成される。
【００６０】
図１は、本発明の実施の形態に係る暗号化装置の構成の一例を示すブロック図である。
データ暗号化装置１１００は、１２８ビットの暗号鍵ＥＫを元に、各６４ビットの８個の拡大鍵ＳＫ０〜ＳＫ７を生成する拡大鍵生成部２と、拡大鍵生成部２に接続され、拡大鍵生成部２より拡大鍵ＳＫ０〜ＳＫ７を受け、拡大鍵ＳＫ０〜ＳＫ７を用いて平文ＰＴに対して所定のデータ変換処理を繰り返し実行することによりデータ撹乱を行ない、６４ビットの暗号文ＣＴを生成するデータ撹乱部１とを含む。
【００６１】
データ撹乱部１は、８個のデータ変換部１１〜１８を縦列に連結したものから構成される。拡大鍵生成部２は、データ分割部２０と、７個の鍵変換部２１〜２７と、１個の最終鍵変換部２８とを縦列に連結したものから構成される。
【００６２】
図２は、データ変換部１１〜１８の内部構成を示すブロック図である。データ変換部１１〜１８の各々は、鍵変換部２１〜２７および最終鍵変換部２８のいずれかに接続され、そのいずれかより拡大鍵ＳＫ（ＳＫ０〜ＳＫ７のいずれか）を受け、拡大鍵ＳＫと入力データＸとの間でビットごとの排他的論理和演算を実行し、データＡを出力する排他的論理和演算部１１１と、排他的論理和演算部１１１に接続され、排他的論理和演算部１１１よりデータＡを受け、データＡを４つのデータブロックＢ０〜Ｂ３に分割するデータ分割部１１２とを含む。
【００６３】
データ変換部１１〜１８の各々は、データ分割部１１２に接続され、データ分割部１１２よりデータブロックＢ０〜Ｂ３を受け、データブロックＢ０〜Ｂ３を後述する方法によりデータブロックＣ０〜Ｃ３にそれぞれ置換するデータ置換部１１３〜１１６と、データ置換部１１３〜１１６に接続され、データ置換部１１３〜１１６よりデータブロックＣ０〜Ｃ３を受け、データブロックＣ０〜Ｃ３を後述する方法により連結し、データＹを出力するデータ連結部１１７とをさらに含む。
【００６４】
図３は、鍵変換部２１〜２７の内部構成を示すブロック図である。鍵変換部２１〜２７の各々は、データ分割部２０または前段の鍵変換部より各３２ビットの第１〜第４入力データＸ０〜Ｘ３を受け、第１〜第４入力データＸ０〜Ｘ３より６４ビットの拡大鍵ＳＫを算出する拡大鍵算出部２１０と、第１〜第４入力データＸ０〜Ｘ３より次段の鍵変換部または最終鍵変換部２８への入力となる第１〜第４出力データＹ０〜Ｙ３を算出する出力算出部２３０とを含む。
【００６５】
拡大鍵算出部２１０は、第２入力データＸ１と第４入力データＸ３との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＡを算出する排他的論理和演算部２１１と、排他的論理和演算部２１１に接続され、排他的論理和演算部２１１よりデータＡを受け、データＡを後述する方法によりデータＢに置換するデータ置換部２１２と、データ置換部２１２に接続され、データ置換部２１２よりデータＢを受け、データＢと第３入力データＸ２との間でビットごとの排他的論理和演算を実行し、データＣを算出する排他的論理和演算部２１３とを含む。
【００６６】
拡大鍵算出部２１０は、排他的論理和演算部２１３に接続され、排他的論理和演算部２１３よりデータＣを受け、データＣと第２入力データＸ１との間でビットごとの排他的論理和演算を実行し、データＤを算出する排他的論理和演算部２１４と、排他的論理和演算部２１４に接続され、排他的論理和演算部２１４よりデータＤを受け、データＤと第１入力データＸ０との間でビットごとの排他的論理和演算を実行し、データＥを算出する排他的論理和演算部２１５と、排他的論理和演算部２１３および２１５に接続され、排他的論理和演算部２１３および２１５よりデータＣおよびデータＥをそれぞれ受け、データＣおよびデータＥを連結して６４ビットの拡大鍵ＳＫとして出力するデータ連結部２１６とをさらに含む。
【００６７】
出力算出部２３０は、第１入力データＸ０を下位ビット方向（右方向）に１ビットだけ巡回ビットシフトし、第４出力データＹ３として出力するデータ回転部２１７と、第２入力データＸ１を下位ビット方向（右方向）に５ビットだけ巡回ビットシフトし、第１出力データＹ０として出力するデータ回転部２１８と、第３入力データＸ２を下位ビット方向（右方向）に９ビットだけ巡回ビットシフトし、第２出力データＹ１として出力するデータ回転部２１９と、第４入力データＸ３を下位ビット方向（右方向）に１３ビットだけ巡回ビットシフトし、第３出力データＹ２として出力するデータ回転部２２０とを含む。
【００６８】
図４は、最終鍵変換部２８の内部構成を示すブロック図である。最終鍵変換部２８は、図３に示される鍵変換部の構成から出力算出部２３０を取り除いた構成になっている。最終鍵変換部２８は、拡大鍵算出部２８０を含む。
【００６９】
拡大鍵算出部２８０は、排他的論理和演算部２８１と、排他的論理和演算部２８１に接続されたデータ置換部２８２と、データ置換部２８２に接続された排他的論理和演算部２８３と、排他的論理和演算部２８３に接続された排他的論理和演算部２８４と、排他的論理和演算部２８４に接続された排他的論理和演算部２８５と、排他的論理和演算部２８３および２８５に接続されたデータ連結部２８６とを含む。
【００７０】
排他的論理和演算部２８１，２８３〜２８５、データ置換部２８２およびデータ連結部２８６の構成は、図３に示される拡大鍵算出部２１０の排他的論理和演算部２１１，２１３〜２１５、データ置換部２１２およびデータ連結部２１６の構成とそれぞれ同様である。このため、その詳細な説明はここでは繰返さない。
【００７１】
以下、図１〜図５を用いて、暗号化装置１１００の動作について説明する。
図１に示される暗号化装置１１００の全体的な処理の流れについて説明する。拡大鍵生成部２内部のデータ分割部２０は、１２８ビットの暗号鍵ＥＫを上位から３２ビットずつの４つのデータブロックに分割し、鍵変換部２１に出力する。鍵変換部２１は、入力された４つのブロックに対して後述する鍵変換処理を実行し、６４ビットの拡大鍵ＳＫ０及び４つの３２ビットのデータブロックを算出する。鍵変換部２１は、拡大鍵ＳＫ０をデータ変換部１１に出力し、算出された４つのデータブロックを次段の鍵変換部２２に出力する。
【００７２】
データ変換部１１は、入力された拡大鍵ＳＫ０を元に、６４ビットの平文ＰＴに対して後述するデータ変換処理を施し、６４ビットのデータを算出する。データ変換部１１は、算出されたデータを次段のデータ変換部１２に出力する。
【００７３】
鍵変換部２２は、前段の鍵変換部２１から入力された４つの３２ビットのデータブロックに対して鍵変換部２１と同様の鍵変換処理を実行し、拡大鍵ＳＫ１および４つの３２ビットのデータブロックを算出する。鍵変換部２２は、拡大鍵ＳＫ１をデータ変換部１２に出力し、算出された４つのデータブロックを次段の鍵変換部２３に出力する。
【００７４】
データ変換部１２は、入力された拡大鍵ＳＫ１を元に、前段のデータ変換部１１から入力されたデータに対してデータ変換部１１と同様のデータ変換処理を実行し、６４ビットのデータを算出する。データ変換部１２は、算出されたデータを次段のデータ変換部１３へ出力する。
【００７５】
以下、同様の処理が鍵変換部２３〜２７およびデータ変換部１３〜１７において実行される。最終鍵変換部２８は、鍵変換部２７より入力された４つのデータブロックに対して後述する最終鍵変換処理を施し、拡大鍵ＳＫ７を求め、データ変換部１８に出力する。
【００７６】
データ変換部１８は、拡大鍵ＳＫ７を元にデータ変換部１７からの入力データに対してデータ変換部１１と同様のデータ変換処理を実行し、６４ビットの暗号文ＣＴを算出し、出力する。
【００７７】
図２に示されるデータ変換部１１〜１８の各々で実行されるデータ変換処理について説明する。データ変換部１１〜１８の各々は、６４ビットの入力データＸに対して６４ビットの拡大鍵ＳＫに基づくデータ変換処理を施して、６４ビットの出力データＹを出力する。入力データＸは、平文ＰＴまたは前段のデータ変換部より出力されるデータのいずれかである。拡大鍵ＳＫは、鍵変換部２１〜２８よりそれぞれ出力されるＳＫ０〜ＳＫ７のいずれかである。
【００７８】
排他的論理和演算部１１１は、次式（１３）で示される入力データＸと拡大鍵ＳＫとのビットごとの排他的論理和演算を実行し、６４ビットのデータＡを求める。
Ａ＝Ｘ（＋）ＳＫ　　　　　　　　　　　　　　　　　　　　…（１３）
【００７９】
データ分割部１１２は、排他的論理和演算部１１１よりデータＡを受け、データＡを４つの上位ビットから１６ビットずつ４つのデータブロックＢ０，Ｂ１，Ｂ２およびＢ３に分割する。即ち、データＡとデータブロックＢ０〜Ｂ３との間には、次式（１４）に示される関係が成立する。
Ａ＝Ｂ０‖Ｂ１‖Ｂ２‖Ｂ３　　　　　　　　　　　　　　　…（１４）
【００８０】
データ分割部１１２は、４つのデータブロックＢ０〜Ｂ３をデータ置換部１１３〜１１６にそれぞれ出力する。
【００８１】
データ置換部１１３は、データ分割部１１２より入力された１６ビットデータＢ０を元に、次式（１５）に従い１６ビットのデータＣ０を求める。
Ｃ０＝Ｓｂｏｘ［Ｂ０ｈ］‖Ｓｂｏｘ［Ｂ０ｌ］　　　　　　…（１５）
【００８２】
ここで、Ｓｂｏｘは置換テーブルを表している。置換テーブルＳｂｏｘは、図５に示すような２５６個の要素を有する配列から構成され、各要素は８ビットのデータからなる。Ｂ０ｈはデータＢ０の上位８ビット、Ｂ０ｌはデータＢ０の下位８ビットのデータを表す。
【００８３】
すなわち、Ｓｂｏｘ［Ｂ０ｈ］は、置換テーブルＳｂｏｘのＢ０ｈ番目の要素を表しており、Ｓｂｏｘ［Ｂ０ｌ］は、置換テーブルＳｂｏｘのＢ０ｌ番目の要素を表している。データＣ０は、これら２つの要素を連結して作成されたデータである。
【００８４】
ここで用いられる置換テーブルＳｂｏｘは、「盛合志帆，青木和麻呂，神田雅透，高嶋洋一，松本勉著『既知のブロック暗号攻撃に対する安全性を考慮したＳ−ｂｏｘの構成法』（電子情報通信学会技術研究報告，ＩＳＥＣ９８−１３）」（訳語：Ｓｈｉｈｏ　Ｍｏｒｉａｉ，　Ｋａｚｕｍａｒｏ　Ａｏｋｉ，　Ｍａｓａｙｕｋｉ　Ｋａｎｄａ，　Ｙｏｕｉｃｈｉ　Ｔａｋａｓｈｉｍａ，　Ｋａｚｕｏ　Ｏｈｔａ　｀｀Ｓ−ｂｏｘ　ｄｅｓｉｇｎ　ｃｏｎｓｉｄｅｒｉｎｇ　ｔｈｅ　ｓｅｃｕｒｉｔｙ　ａｇａｉｎｓｔ　ｋｎｏｗｎ　ａｔｔａｃｋｓｏｎ　ｂｌｏｃｋ　ｃｉｐｈｅｒｓ’’，　Ｔｅｃｈｎｉｃａｌ　Ｒｅｐｏｒｔ　ｏｆ　ＩＥＩＣＥ，　Ｖｏｌ．９８　Ｎｏ．４８，　ＩＳＥＣ９８−１３，（ｉｎ　Ｊａｐａｎｅｓｅ），　（Ｊｕｌｙ，　１９９８）．）に記載されたものを用いる。ただし、置換テーブルＳｂｏｘは、これ以外のものであってもよく、これに限定されるものではない。
【００８５】
データ置換部１１４〜１１６は、データ分割部１１２よりデータブロックＢ１〜Ｂ３をそれぞれ受け、データブロックＣ１〜Ｃ３をそれぞれ求め、出力する。データ置換部１１４〜１１６の各々で実行される処理は、データ置換部１１３で実行される処理と同様であるため、その詳細な説明はここでは繰返さない。
【００８６】
データ連結部１１７は、データ置換部１１３〜１１６よりデータブロックＣ０〜Ｃ３をそれぞれ受け、次式（１６）に従い、データブロックＣ０〜Ｃ３を連結し、６４ビットのデータＹを求め、出力する。
Ｙ＝Ｃ０‖Ｃ１‖Ｃ２‖Ｃ３　　　　　　　　　　　　　　　…（１６）
【００８７】
図３に示される鍵変換部２１〜２７の各々で実行される鍵変換処理について説明する。鍵変換部２１〜２７の各々は、第１〜第４入力データＸ０〜Ｘ３に対して、後述する拡大鍵算出処理と出力算出処理とを実行し、拡大鍵ＳＫと第１〜第４出力データＹ０〜Ｙ３とを算出し、出力する。第１〜第４入力データＸ０〜Ｘ３は、データ分割部２０または前段の鍵変換部より出力される４つの３２ビットのデータブロックである。拡大鍵ＳＫは、データ変換部１１〜１７にそれぞれ入力されるＳＫ０〜ＳＫ６のいずれかである。
【００８８】
拡大鍵算出部２１０において実行される拡大鍵算出処理に説明する。
排他的論理和演算部２１１は、次式（１７）に従い、第２入力データＸ１と第４入力データＸ３との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＡを求める。
Ａ＝Ｘ１（＋）Ｘ３　　　　　　　　　　　　　　　　　　　…（１７）
【００８９】
データ置換部２１２は、排他的論理和演算部２１１よりデータＡを受け、データ変換部１１〜１８で用いた置換テーブルと同一の置換テーブルＳｂｏｘを用いて、次式（１８）で示される３２ビットデータＢを求める。
2004004603.tif 000005
【００９０】
但し、データＡを上位から８ビットずつに分割したデータの値をそれぞれＡ０，Ａ１，Ａ２，Ａ３とする。
【００９１】
排他的論理和演算部２１３は、データ置換部２１２よりデータＢを受け、次式（１９）に従い、データＢと第３入力データＸ２との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＣを求める。
Ｃ＝Ｂ（＋）Ｘ２　　　　　　　　　　　　　　　　　　　　…（１９）
【００９２】
排他的論理和演算部２１４は、排他的論理和演算部２１３よりデータＣを受け、次式（２０）に従い、データＣと第２入力データＸ１との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＤを求める。
Ｄ＝Ｃ（＋）Ｘ１　　　　　　　　　　　　　　　　　　　　…（２０）
【００９３】
排他的論理和演算部２１５は、排他的論理和演算部２１４よりデータＤを受け、次式（２１）に従い、データＤと第１入力データＸ０との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＥを求める。
Ｅ＝Ｄ（＋）Ｘ０　　　　　　　　　　　　　　　　　　　　…（２１）
【００９４】
データ連結部２１６は、排他的論理和演算部２１３および２１５よりデータＣおよびＥをそれぞれ受け、次式（２２）に従い、データＣおよびＥを連結し、６４ビットの拡大鍵ＳＫとして出力する。
ＳＫ＝Ｃ‖Ｅ　　　　　　　　　　　　　　　　　　　　　　…（２２）
【００９５】
次に、出力算出部２３０において第１〜第４出力データＹ０〜Ｙ３を算出する処理（出力算出処理）について説明する。
【００９６】
データ回転部２１７〜２２０は、次式（２３）〜（２６）にそれぞれ従い、第４出力データＹ３、第１出力データＹ０、第２出力データＹ１および第３出力データＹ２をそれぞれ算出する。
2004004603.tif 000006
【００９７】
ここで、ＲＯＴＲ１（Ｘ）、ＲＯＴＲ５（Ｘ）、ＲＯＴＲ９（Ｘ）およびＲＯＴＲ１３（Ｘ）は、データＸを下位ビット方向（右方向）にそれぞれ１ビット、５ビット、９ビットおよび１３ビットずつ巡回ビットシフトした結果を表す。
【００９８】
図４に示される最終鍵変換部２８で実行される最終鍵変換処理について説明する。最終鍵変換部２８の拡大鍵算出部２８０は、図３に示される拡大鍵算出部２１０と同様の動作をして拡大鍵ＳＫ７を算出する。このため、その詳細な説明はここでは繰返さない。
【００９９】
図６は、本発明の実施の形態に係る復号装置の構成の一例を示すブロック図である。
データ復号装置１２００は、１２８ビットの暗号鍵ＥＫを元に、暗号化時とは逆の順番で、各６４ビットの８個の拡大鍵ＳＫ７〜ＳＫ０を生成する拡大鍵逆生成部４と、拡大鍵逆生成部４に接続され、拡大鍵逆生成部４より拡大鍵ＳＫ７〜ＳＫ０を受け、拡大鍵ＳＫ７〜ＳＫ０を用いて暗号文ＣＴに対して後述する逆データ変換処理を繰り返し実行することにより復号文ＤＴを生成する逆データ撹乱部３とを含む。
【０１００】
逆データ撹乱部３は、８個の逆データ変換部３１〜３８を縦列に連結したものから構成される。拡大鍵逆生成部４は、鍵補正部４０と７個の逆鍵変換部４１〜４７と１個の最終鍵変換部４８とを縦列に連結したものから構成される。
【０１０１】
図７は、逆データ変換部３１〜３８の内部構成を示すブロック図である。逆データ変換部３１〜３８の各々は、６４ビットの入力データＹ（暗号文ＣＴまたは前段の逆データ変換部の出力データ）を受け、データＹを４つのデータブロックＡ０〜Ａ３に分割するデータ分割部３１１と、データ分割部３１１に接続され、データ分割部３１１よりデータブロックＡ０〜Ａ３を受け、データブロックＡ０〜Ａ３を後述する方法によりデータブロックＢ０〜Ｂ３にそれぞれ置換する逆データ置換部３１２〜３１５とを含む。
【０１０２】
逆データ変換部３１〜３８の各々は、逆データ置換部３１２〜３１５に接続され、逆データ置換部３１２〜３１５よりデータブロックＢ０〜Ｂ３を受け、データブロックＢ０〜Ｂ３を連結して出力するデータ連結部３１６と、データ連結部３１６に接続され、データ連結部３１６より出力される連結結果を受け、当該連結結果と拡大鍵ＳＫとの間でビットごとの排他的論理和演算を実行し、データＺを出力する排他的論理和演算部３１７とをさらに含む。
【０１０３】
図８は、鍵補正部４０の内部構成を示すブロック図である。鍵補正部４０は、各３２ビットの第１〜第４入力データＩ０〜Ｉ３を受け、後述する処理を実行し、第１〜第４出力データＪ０〜Ｊ３を算出する。鍵補正部４０は、第１入力データＩ０を下位ビット方向（右方向）に５１ビットだけ巡回ビットシフトし、第２出力データＪ１として出力するデータ回転部４０１と、第２入力データＩ１を下位ビット方向（右方向）に４７ビットだけ巡回ビットシフトし、第３出力データＪ２として出力するデータ回転部４０２と、第３入力データＩ２を下位ビット方向（右方向）に４３ビットだけ巡回ビットシフトし、第４出力データＪ３として出力するデータ回転部４０３と、第４入力データＩ３を下位ビット方向（右方向）に５５ビットだけ巡回ビットシフトし、第１出力データＪ０として出力するデータ回転部４０４とを含む。
【０１０４】
図９は、逆鍵変換部４１〜４７の内部構成を示すブロック図である。逆鍵変換部４１〜４７の各々は、鍵補正部４０または前段の逆鍵変換部より各３２ビットの第１〜第４入力データＹ０〜Ｙ３を受け、第１〜第４入力データＹ０〜Ｙ３より６４ビットの拡大鍵ＳＫを算出する拡大鍵算出部４１０と、第１〜第４入力データＹ０〜Ｙ３より次段の逆鍵変換部または最終鍵変換部４８への入力となる第１〜第４出力データＺ０〜Ｚ３を算出する出力逆算出部４３０とを含む。
【０１０５】
拡大鍵算出部４１０は、第２入力データＹ１と第４入力データＹ３との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＡを算出する排他的論理和演算部４１１と、排他的論理和演算部４１１に接続され、排他的論理和演算部４１１よりデータＡを受け、データＡを後述する方法によりデータＢに置換するデータ置換部４１２と、データ置換部４１２に接続され、データ置換部４１２よりデータＢを受け、データＢと第３入力データＹ２との間でビットごとの排他的論理和演算を実行し、データＣを算出する排他的論理和演算部４１３とを含む。
【０１０６】
拡大鍵算出部４１０は、排他的論理和演算部４１３に接続され、排他的論理和演算部４１３よりデータＣを受け、データＣと第２入力データＹ１との間でビットごとの排他的論理和演算を実行し、データＤを算出する排他的論理和演算部４１４と、排他的論理和演算部４１４に接続され、排他的論理和演算部４１４よりデータＤを受け、データＤと第１入力データＹ０との間でビットごとの排他的論理和演算を実行し、データＥを算出する排他的論理和演算部４１５と、排他的論理和演算部４１３および４１５に接続され、排他的論理和演算部４１３および４１５よりデータＣおよびデータＥをそれぞれ受け、データＣおよびデータＥを連結して６４ビットの拡大鍵ＳＫとして出力するデータ連結部４１６とをさらに含む。
【０１０７】
出力逆算出部４３０は、第１入力データＹ０を上位ビット方向（左方向）に５ビットだけ巡回ビットシフトし、第２出力データＺ１として出力するデータ回転部４１７と、第２入力データＹ１を上位ビット方向（左方向）に９ビットだけ巡回ビットシフトし、第３出力データＺ２として出力するデータ回転部４１８と、第３入力データＹ２を上位ビット方向（左方向）に１３ビットだけ巡回ビットシフトし、第４出力データＺ３として出力するデータ回転部４１９と、第４入力データＹ３を上位ビット方向（左方向）に１ビットだけ巡回ビットシフトし、第１出力データＺ０として出力するデータ回転部４２０とを含む。
【０１０８】
図６に示す最終鍵変換部４８は、図４に示される最終鍵変換部２８と同様の構成を有する。このため、その詳細な説明はここでは繰返さない。
以下、図６〜図１２を用いて、復号装置１２００の動作について説明する。
【０１０９】
図６に示される復号装置１２００の全体的な処理の流れについて説明する。
拡大鍵逆生成部４内部の鍵補正部４０は、１２８ビットの暗号鍵ＥＫを内部で４つの３２ビットのデータブロックに分割した後、後述する鍵補正処理を実行し、４つの３２ビットのデータブロックを算出する。鍵補正部４０は、算出された４つのデータブロックを逆鍵変換部４１に出力する。
【０１１０】
逆鍵変換部４１は、入力された４つのデータブロックを元に後述する逆鍵変換処理を実行し、６４ビットの拡大鍵ＳＫ７と、４つの３２ビットのデータブロックとを算出する。逆鍵変換部４１は、拡大鍵ＳＫ７を逆データ変換部３１に出力し、４つのデータブロックを次段の逆鍵変換部４２に出力する。
【０１１１】
逆データ変換部３１は、入力された拡大鍵ＳＫ７を元に６４ビットの暗号文ＣＴに対して後述する逆データ変換処理を実行し、６４ビットのデータを算出して次段の逆データ変換部３２に出力する。
【０１１２】
逆鍵変換部４２は、前段の逆鍵変換部４１から入力された４つのデータブロックを元に、逆鍵変換部４１と同様の処理を実行して拡大鍵ＳＫ６と、４つのデータブロックとを算出する。逆鍵変換部４２は、拡大鍵ＳＫ６を逆データ変換部３２に出力し、算出された４つのデータブロックを逆鍵変換部４３に出力する。
【０１１３】
逆データ変換部３２は、拡大鍵ＳＫ６を元に前段の逆データ変換部３１から入力されたデータに対して、逆データ変換部３１と同様の逆データ変換処理を施し、６４ビットのデータを算出し、次段の逆データ変換部３３に出力する。
【０１１４】
以下、同様の操作が逆鍵変換部４３〜４７および逆データ変換部３３〜３７において実行される。最終鍵変換部４８は、逆鍵変換部４７より入力された４つのデータブロックに対して、図４に示される最終鍵変換部２８で用いた最終鍵変換処理と同様の処理を施し、拡大鍵ＳＫ０を求め、逆データ変換部３８に出力する。
【０１１５】
逆データ変換部３８は、拡大鍵ＳＫ０を元に逆データ変換部３７からの入力データに対して逆データ変換部３１と同様の逆データ変換処理を施し、６４ビットの復号文ＤＴを算出し、出力する。
【０１１６】
図７に示される逆データ変換部３１〜３８の各々で実行される逆データ変換処理について説明する。
データ分割部３１１は、６４ビットのデータＹ（暗号文ＣＴまたは前段の逆データ変換部より出力されるデータＺ）を上位から１６ビットずつ４つのデータブロックＡ０，Ａ１，Ａ２，Ａ３に分割する。即ち、データＹとデータブロックＡ０〜Ａ３との間には、次式（２７）に示される関係が成立する。
Ｙ＝Ａ０‖Ａ１‖Ａ２‖Ａ３　　　　　　　　　　　　　　　　…（２７）
【０１１７】
データ分割部３１１は、データブロックＡ０〜Ａ３を逆データ置換部３１２〜３１５にそれぞれ出力する。
【０１１８】
逆データ置換部３１２は、データ分割部３１１より入力された１６ビットデータＡ０を元に、次式（２８）に従い１６ビットのデータブロックＢ０を求める。
2004004603.tif 000007
【０１１９】
ここで、ＩｎｖＳｂｏｘは上述した置換テーブルＳｂｏｘの逆置換を実行する逆置換テーブルを表している。逆置換テーブルは、図１０に示すような２５６個の要素を有する配列から構成され、各要素は８ビットのデータからなる。Ａ０ｈはデータブロックＡ０の上位８ビット、Ａ０ｌはデータブロックＡ０の下位８ビットのデータを表す。
【０１２０】
すなわち、ＩｎｖＳｂｏｘ［Ａ０ｈ］は、逆置換テーブルＩｎｖＳｂｏｘのＡ０ｈ番目の要素を表しており、ＩｎｖＳｂｏｘ［Ａ０ｌ］は、逆置換テーブルＩｎｖＳｂｏｘのＡ０ｌ番目の要素を表している。データブロックＢ０は、これら２つの要素を連結して作成されたデータである。
【０１２１】
ここで用いられる逆置換テーブルＩｎｖＳｂｏｘは、暗号化時に、図２に示すデータ置換部１１３〜１１６で用いられる置換テーブルＳｂｏｘを元にして作成されたものである。
【０１２２】
すなわち、置換テーブルＳｂｏｘと逆置換テーブルＩｎｖＳｂｏｘとの間には次式（２９）に示される関係が成立する。
2004004603.tif 000008
【０１２３】
図１１は、置換テーブルＳｂｏｘと逆置換テーブルＩｎｖＳｂｏｘとの関係を説明するための具体例を示す図である。例えば、Ｓｂｏｘ［７９］の値が２進数表現で「００１１０１００」であったとする。「００１１０１００」を１０進数表現すると「５２」になる。また、１０進数「７９」を２進数表現すると「０１００１１１１」となる。したがって、ＩｎｖＳｂｏｘ［５２］の値は２進数表現で「０１００１１１１」となる。
【０１２４】
逆データ置換部３１３〜３１５は、データ分割部３１１よりデータブロックＡ１〜Ａ３をそれぞれ受け、データブロックＢ１〜Ｂ３をそれぞれ求め、出力する。逆データ置換部３１３〜３１５の各々で実行される処理は、逆データ置換部３１２で実行される処理と同様であるため、その詳細な説明はここでは繰返さない。
【０１２５】
データ連結部３１６は、逆データ置換部３１２〜３１５よりデータブロックＢ０〜Ｂ３を受け、次式（３０）に従い、データブロックＢ０〜Ｂ３を連結し、６４ビットのデータＺを求め、出力する。
Ｚ＝Ｂ０‖Ｂ１‖Ｂ２‖Ｂ３　　　　　　　　　　　　　　　…（３０）
【０１２６】
図８に示される鍵補正部４０で実行される鍵補正処理について説明する。鍵補正部４０は、１２８ビットの暗号鍵ＥＫを入力として処理を実行するが、暗号鍵ＥＫの上位ビットから３２ビットずつを第１〜第４入力データＩ０〜Ｉ３とする。
【０１２７】
データ回転部４０１〜４０４は、次式（３１）〜（３４）にそれぞれ従い、第２出力データＪ１、第３出力データＪ２、第４出力データＪ３および第１出力データＪ０をそれぞれ算出する。
2004004603.tif 000009
【０１２８】
ここで、ＲＯＴＲ５１（Ｉ），ＲＯＴＲ４７（Ｉ），ＲＯＴＲ４３（Ｉ），ＲＯＴＲ５５（Ｉ）は、データＩを下位ビット方向（右方向）にそれぞれ５１ビット，４７ビット，４３ビットおよび５５ビットずつ巡回ビットシフトした結果を表す。
【０１２９】
最終的に、鍵補正部４０は、第１〜第４出力データＪ０〜Ｊ３を出力する。
次に、鍵補正部４０のデータ回転部４０１におけるシフト量の意味について説明する。鍵変換部２１に入力された第１〜第４入力データＸ０〜Ｘ３は、図３の出力算出部２３０においてデータ回転処理され、表１に示されるように第１〜第４出力データＹ０〜Ｙ３としてＲＯＴＲ５（Ｘ１）、ＲＯＴＲ９（Ｘ２）、ＲＯＴＲ１３（Ｘ３）およびＲＯＴＲ１（Ｘ０）がそれぞれ得られる。
【０１３０】
鍵変換部２１で得られた第１〜第４出力データＹ０〜Ｙ３を、鍵変換部２２の第１〜第４入力データＸ０〜Ｘ３とすると、同様のデータ回転処理が行なわれ、表１に示されるように、鍵変換部２２の第１〜第４出力データＹ０〜Ｙ３としてＲＯＴＲ１４（Ｘ２）、ＲＯＴＲ２２（Ｘ３）、ＲＯＴＲ１４（Ｘ０）およびＲＯＴＲ６（Ｘ１）がそれぞれ得られる。
【０１３１】
同様の処理を鍵変換部２３〜２７についても実行すると、表１に示されるような結果が得られる。したがって、鍵補正部４０を図８に示すような構成にすることにより、鍵変換部２１〜２７までの処理を実行したのと等価な結果が得られる。
【０１３２】
【表１】
2004004603.tif 000010
【０１３３】
なお、図８は、鍵変換部が７段の場合の鍵補正部４０の例を示したが、鍵変換部の段数に関わらず、鍵補正部を作成することは可能である。たとえば、鍵変換部が６段の場合には、鍵補正部４０の代わりに、図１２に示すような鍵補正部１６０を用いることができる。鍵補正部１６０は、表１を元にして作られたものである。なお、鍵補正部１６０のデータ回転部１６０１〜１６０４は、入力データを下位ビット方向（右方向）にそれぞれ４２ビット、３４ビット、４２ビットおよび５０ビットずつ巡回ビットシフトする処理を実行する。しかし、３２ビットの巡回ビットシフトは０ビットの巡回ビットシフト（すなわち、何も処理をしないこと）と等価である。このため、データ回転部１６０１〜１６０４における巡回ビットシフト数をそれぞれ１０ビット、２ビット、１０ビットおよび１８ビットとし、巡回ビットシフト数を削減することも可能である。
【０１３４】
また、図８に示される鍵補正部４０のデータ回転部４０１〜４０４における巡回ビットシフト数も同様に、それぞれ１９ビット、１５ビット、１１ビットおよび２３ビットとそれぞれ削減することも可能である。
【０１３５】
図９に示される逆鍵変換部４１〜４７で実行される逆鍵変換処理について説明する。逆鍵変換部４１〜４７の各々は、第１〜第４入力データＹ０〜Ｙ３に対して、後述する拡大鍵算出処理とデータ変換処理とを実行し、拡大鍵ＳＫと第１〜第４出力データＺ０〜Ｚ３とを算出し、出力する。第１〜第４入力データＹ０〜Ｙ３は、鍵補正部４０または前段の逆鍵変換部より出力される４つの３２ビットのデータブロックである。拡大鍵ＳＫは、逆データ変換部３１〜３７にそれぞれ入力されるＳＫ７〜ＳＫ１のいずれかである。
【０１３６】
拡大鍵算出部４１０で実行される拡大鍵算出処理について説明する。
排他的論理和演算部４１１は、次式（３５）に従い、第２入力データＹ１と第４入力データＹ３との間でビットごとの排他的論理和演算を実行し、３２ビットのデータＡを求める。
Ａ＝Ｙ１（＋）Ｙ３　　　　　　　　　　　　　　　　　　　…（３５）
【０１３７】
データ置換部４１２は、排他的論理和演算部４１１よりデータＡを受け、暗号化時にデータ変換部１１〜１８で用いた置換テーブルと同一の置換テーブルＳｂｏｘを用いて、次式（３６）で示される関係を有する３２ビットデータＢを求める。
Ｂ＝Ｓｂｏｘ［Ａ０］‖Ｓｂｏｘ［Ａ１］‖Ｓｂｏｘ［Ａ２］‖Ｓｂｏｘ［Ａ３］　　　　　　　　　　　　　　　　　　　　　　　　　　　…（３６）
【０１３８】
但し、データＡを上位から８ビットずつに分割したデータをそれぞれＡ０，Ａ１，Ａ２，Ａ３とする。
【０１３９】
排他的論理和演算部４１３は、データ置換部４１２よりデータＢを受け、次式（３７）に従い、データＢと第３入力データＹ２との間でビットごとの排他的論理和演算を実行し、３２ビットデータＣを求める。
Ｃ＝Ｂ（＋）Ｙ２　　　　　　　　　　　　　　　　　　　　…（３７）
【０１４０】
排他的論理和演算部４１４は、排他的論理和演算部４１３よりデータＣを受け、次式（３８）に従い、データＣと第２入力データＹ１との間でビットごとの排他的論理和演算を実行し、３２ビットデータＤを求める。
Ｄ＝Ｃ（＋）Ｙ１　　　　　　　　　　　　　　　　　　　　…（３８）
【０１４１】
排他的論理和演算部４１５は、排他的論理和演算部４１４よりデータＤを受け、次式（３９）に従い、データＤと第１入力データＹ０との間でビットごとの排他的論理和演算を実行し、３２ビットデータＥを求める。
Ｅ＝Ｄ（＋）Ｙ０　　　　　　　　　　　　　　　　　　　　　…（３９）
【０１４２】
データ連結部４１６は、排他的論理和演算部４１３および４１５よりデータＣおよびＥをそれぞれ受け、次式（４０）に従い、データＣおよびＥを連結し、６４ビットの拡大鍵ＳＫとして出力する。
ＳＫ＝Ｃ‖Ｅ　　　　　　　　　　　　　　　　　　　　　　　…（４０）
【０１４３】
次に、出力逆算出部４３０において第１〜第４出力データＺ０〜Ｚ３を算出する処理（データ変換処理）について説明する。
【０１４４】
データ回転部４１７〜４２０は、次式（４１）〜（４４）にそれぞれ従い、第２出力データＺ１、第３出力データＺ２、第４出力データＺ３および第１出力データＺ０をそれぞれ算出する。
2004004603.tif 000011
【０１４５】
ここで、ＲＯＴＬ５（Ｙ），ＲＯＴＬ９（Ｙ），ＲＯＴＬ１３（Ｙ），ＲＯＴＬ１（Ｙ）は、データＹを上位ビット方向（左方向）にそれぞれ５ビット、９ビット、１３ビットおよび１ビットずつ巡回ビットシフトした結果を表す。
【０１４６】
以下、上述した本実施の形態における暗号化システムの効果について、従来の技術と対比しながら説明する。
図１７に示されるように、第１の従来例では、復号装置１４００において、最終逆データ変換部７０で用いられる拡大鍵ＳＫ１０を求めるために、９回分の鍵変換部の処理をオーバーヘッドとして実行する必要があった。これによって、第１の従来例の復号処理は暗号化処理と比べて大幅に処理時間がかかるという問題点がある。
【０１４７】
しかし、図６に示されるように、本実施の形態に係る復号装置１２００においては、上記オーバーヘッドに相当する処理は、鍵補正部４０における処理だけである。これは、図３に示す鍵変換部の出力算出部２３０における処理を７回繰り返し実行することに相当するが、データ回転処理の場合、ｒビット（ｒは整数）のデータ回転処理を７回繰り返す処理は、（７×ｒ）ビットのデータ回転処理を１回行うことと等価である。これにより、出力算出部２３０の処理を７回繰り返すことは、鍵補正部４０に示すように、データ回転処理を４回実行することと等価である。このとき、両者のオーバーヘッドの処理量を比較すると以下のようになる。
【０１４８】
第１の従来例では、１回の鍵変換部の処理に、５回の排他的論理和演算と、１回の置換処理と、１回のデータ回転処理とが必要である。このため、これを９回行なうと、４５回の排他的論理和演算と、９回の置換処理と、９回のデータ回転処理とがオーバーヘッドとして必要である。一方、本実施の形態に係る復号装置１２００においては、オーバーヘッドとして必要な処理は、４回のデータ回転処理のみである。
【０１４９】
即ち、第１の従来例と比べて本発明の方が上記オーバーヘッドははるかに少ないことがわかる。これは、図３に示される鍵変換部において、拡大鍵を算出する拡大鍵算出部２１０と、次段の鍵変換部への入力となる出力算出部２３０とを分離し、出力算出部２３０をデータ回転処理のみにより構成したことによる。
【０１５０】
また、データ回転処理を、ハードウェアで実装する場合には信号線の配線パターンをアレンジすることで実現できるためにデータ遅延は生じない。このため、図６に示す復号装置１２００をハードウェアで実現する場合、実質的にはオーバーヘッドはゼロとみなすことができる。また、復号装置１２００をソフトウェアで実現する場合でも、巡回ビットシフト操作は大抵のプロセッサでは高速処理可能であるため、オーバーヘッドは無視できるくらい小さなものになるといえる。
【０１５１】
次に、システムにおいて生成される拡大鍵のランダム性について検討する。暗号化時において、図３に示される鍵変換部２１〜２７内部のデータ置換部２１２の出力は、排他的論理和演算部２１３〜２１５によるデータ融合処理によって拡大鍵の全てに影響を与えるようになっている。すなわち、データ置換部２１２の置換テーブルを用いた非線形な処理の影響は、排他的論理和演算部２１３〜２１５によるデータ融合処理によって拡大鍵の全範囲に及ぶようになっている。このことは、第１の従来例の鍵変換部６０〜６９と同等の効果を奏している。また、排他的論理和部演算部２１１および２１３〜２１５で実行されるデータ融合処理には、第１〜第４入力データＸ０〜Ｘ３のすべてが入力データとして使用されている。このため、暗号鍵ＥＫの値が１ビットでも変化すると、それによって生成される拡大鍵ＳＫ０〜ＳＫ７は全て変化することがいえる。以上のことから、生成される拡大鍵には十分なランダム性が得られているといえる。
【０１５２】
さらに、出力算出部２３０内部のデータ回転部２１７〜２２０では、データ回転数として１，５，９および１３ビットがそれぞれ用いられている。これらのビット数は、データ回転部２１７の各々に入力されるビット数（３２ビット）の約数ではない。これに対して、第２の従来例では、図１７に示されるようにビット回転部６０１においてビット数８という３２の約数がデータ回転のビット数として用いられている。この違いにより、本実施の形態におけるデータ回転部では、以下に説明するような効果がある。例えば、１６進数表記で、３３３３３３３３の３２ビットデータの場合、８ビットのデータ回転を行った結果も、３３３３３３３３となりデータ回転によるデータの変化はない。１１１１１１１１や５５５５５５５５といったデータに対しても同様である。しかし、本実施の形態のように３２の約数ではないビット数によるデータ回転では、上記のようなことが起こるのは、１６進数表記でＦＦＦＦＦＦＦＦ及び００００００００のデータの場合のみであり、それ以外の入力データに対しては、出力データは入力データと異なる値になる。即ち、本実施の形態のデータ回転部の方が高いデータ撹乱性能を実現していることになる。本実施の形態では鍵変換部２１〜２７内部の出力算出部２３０に、入力データのビット数の約数ではない回転数を有するデータ回転部を用いることによって、出力算出部２３０においても、高いデータ撹乱性能を実現している。
【０１５３】
なお、出力算出部２３０では、全ての３２ビットデータブロックに対してデータ回転処理を行っているが、これは、この構成に限られるものではなく、４つのデータブロックのうち少なくとも１つに対してデータ回転処理を行えばよい。また、データ回転数も本実施の形態に示す数値に限られるものではなく、データブロックサイズの約数でなければ、その他の回転数であってもよい。
【０１５４】
さらにまた、出力算出部２３０は、データ回転処理でなくても、第１〜第４入力データＸ０〜Ｘ３に対して、各ビットの値が相互に干渉しないような固定的な変換処理を実行してもよい。例えば、データ回転部２１７の代わりに図１３に示すようなビット入れ替え部１５００を用いてもよい。ビット入れ替え部１５００は、３２ビットの第１入力データＸ０を受け、各ビットの値が相互に干渉しないようにビット位置を入れ替え、第４出力データＹ３として出力するものである。
【０１５５】
このような変換であっても、各ビットの値が相互に干渉しないため、図８に示すような鍵補正部を作成することは可能である。
また、データ回転部２１７の代わりに図１４（ａ）に示すような特定のビット値のみを反転させる、ビット反転部１５２０を用いてもよい。なお、図１４（ａ）に示すビット反転部１５２０は、図１４（ｂ）に示す排他的論理和演算部１５４０と等価である。
【０１５６】
このような変換であっても、ビット入れ替え部１５００と同様に、各ビットの値が相互に干渉しないため、図８に示すような鍵補正部を作成することは可能である。
【０１５７】
また、本実施の形態では、データ変換部として図２に示すような構成のものを用いているが、この構成に限られるものではない。
さらに、本実施の形態では、平文および暗号文のサイズを６４ビット、暗号鍵のサイズを１２８ビット、拡大鍵のサイズを６４ビットとそれぞれしているが、このデータサイズに限られるものではない。また、図１に示すデータ撹乱部１におけるデータ変換処理の段数を８段としているが、この段数に限られるものでもない。
【０１５８】
さらにまた、図３に示される鍵変換部の排他的論理和演算部２１１は、４つの３２ビットのデータのうち２つのデータに対して排他的論理和演算を行っているが、この構成に限られるものではない。排他的論理和演算部２１１は、第１〜第４入力データＸ０〜Ｘ３を連結した１２８ビットのデータから得られる少なくとも２つの任意の部分データに対して排他的論理和演算を行う構成であれば、どのような構成であってもよい。
【０１５９】
さらに、排他的論理和演算部２１３は、データ置換部２１２によって置換変換されたデータＢと第１〜第４入力データＸ０〜Ｘ３のうちのいずれかのデータとの間で排他的論理和演算を行っているが、この構成に限られるものではない。排他的論理和演算部２１３は、データＢと第１〜第４入力データＸ０〜Ｘ３を連結した１２８ビットのデータから得られる少なくとも１つの任意の部分データとの間で排他的論理和演算を実行するような構成であってもよい。
【０１６０】
さらにまた、排他的論理和演算部２１１，２１３〜２１５は、データ融合方法として排他的論理和演算を用いているが、これは加算、減算、乗算のような２つ以上の入力データから１つの出力データを算出するような処理であれば何でも良い。
【０１６１】
図１５は、本実施の形態に係る暗号化システムを応用したＤＶＤプレーヤーの外観図である。ＤＶＤプレーヤー１７００は、挿入されたＤＶＤ１７０２のコンテンツの内容の認証を行なう際に、図６に示される復号装置１２００を有することが可能であるが、この際の認証処理を高速に実行することが可能となるため、ＤＶＤ１７０２を挿入してから実際にＤＶＤ１７０２のコンテンツが再生されるまでの時間を早くすることができる。
【０１６２】
【発明の効果】
以上の説明から明らかなように、本発明に係る暗号化システムによると、第１の従来例のように拡大鍵生成処理と次段の拡大鍵生成処理の入力を求める処理とを一部分に同一の処理回路を用いて実行するのではなく、拡大鍵算出部と出力算出部とに分離し、実行する。
【０１６３】
拡大鍵算出部は、複数のデータを融合して、拡大鍵を算出する。出力算出部は、ｎ回（ｎは自然数）繰り返した処理が等価な簡易処理に変換できるようなデータ回転処理を用いる。これにより、第１の従来例のように暗号時と比べて復号時のオーバーヘッド処理が極端に大きくなることがない。よって、暗号化処理時間と復号処理時間とがほとんど変わらないようにすることができる。
【０１６４】
また第２の従来例のように、拡大鍵算出部は、単純なビット入れ替え処理ではなく、置換テーブルによる非線形な置換処理とデータ融合処理とを組み合わせた複雑な処理を用いている。このため、置換テーブルを用いた非線形処理の影響がすべての拡大鍵におよび、かつ、暗号鍵が変化すると、その変化が生成されるすべての拡大鍵におよぶという特徴を有する。このため、ランダム性の高い拡大鍵生成処理を実現することができる。
【０１６５】
以上のように、本発明に係る暗号化システムによれば、第１の従来例と第２の従来例との課題を同時に解決することができる。
以上のように本発明に係る暗号化システムにより、高速かつ安全性の高い暗号処理、認証処理などが可能になる。このため、実行速度と安全性との両面で厳しい仕様が求められるシステムなどに使用されることにより、その実用的価値は極めて高い。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る暗号化装置１１００の構成の一例を示すブロック図である。
【図２】本発明の実施の形態に係るデータ変換部１１〜１８の構成の一例を示すブロック図である。
【図３】本発明の実施の形態に係る鍵変換部２１〜２７の構成の一例を示すブロック図である。
【図４】本発明の実施の形態に係る最終鍵変換部２８の構成の一例を示すブロック図である。
【図５】置換テーブルＳｂｏｘを説明するための図である。
【図６】本発明の実施の形態に係る復号装置１２００の構成の一例を示すブロック図である。
【図７】本発明の実施の形態に係る逆データ変換部３１〜３８の構成の一例を示すブロック図である。
【図８】本発明の実施の形態に係る鍵補正部４０の構成の一例を示すブロック図である。
【図９】本発明の実施の形態に係る逆鍵変換部４１〜４７の構成の一例を示すブロック図である。
【図１０】逆置換テーブルＩｎｖＳｂｏｘを説明するための図である。
【図１１】置換テーブルＳｂｏｘと逆置換テーブルＩｎｖＳｂｏｘとの関係を説明するための具体例を示す図である。
【図１２】鍵補正部１６０の構成の一例を示すブロック図である。
【図１３】ビット入れ替え部１５００を説明するための図である。
【図１４】ビット反転部１５２０とそれと等価な排他的論理和演算部１５４０とを説明するための図である。
【図１５】本実施の形態に係る暗号化システムを応用したＤＶＤ（Ｄｉｇｉｔａｌ　Ｖｅｒｓａｔｉｌｅ　Ｄｉｓｋ）プレーヤーの外観図である。
【図１６】第１の従来例に係る暗号化装置１３００の構成を示すブロック図である。
【図１７】第１の従来例に係る鍵変換部６０〜６９の構成を示すブロック図である。
【図１８】第１の従来例に係る復号装置１４００の構成を示すブロック図である。
【図１９】第１の従来例に係る逆鍵変換部９０〜９９の構成を示すブロック図である。
【図２０】第２の従来例に係る鍵変換部１０の構成を示すブロック図である。
【図２１】ＥＴＣシステムを説明するための図である。
【符号の説明】
１，５　データ撹乱部
２，６　拡大鍵生成部
３，７　逆データ撹乱部
４，８　拡大鍵逆生成部
１０，２１〜２７，６０〜６９，８０〜８９　鍵変換部
１１〜１８，５０〜５８　データ変換部
２０，１１２，３１１，６００，８００　データ分割部
２８，４８　最終鍵変換部
３１〜３８，７１〜７９　逆データ変換部
４０　鍵補正部
４１〜４７，９０〜９９　逆鍵変換部
５９　最終データ変換部
７０　最終逆データ変換部
１０１〜１０２　巡回シフト部
１０３，１１７，２１６，２８６，３１６，４１６，６０８，９０８　データ連結部
１０４　データ縮約部
１１１，２１１，２１３〜２１５，２８１，２８３〜２８５，３１７，４１１，４１３〜４１５，６０３〜６０７，９０１〜９０４，９０７，１５４０　排他的論理和演算部
１１３〜１１６，２１２，２８２，４１２，６０２，９０６　データ置換部
２１０，２８０，４１０　拡大鍵算出部
２１７〜２２０，４０１〜４０４，４１７〜４２０，６０１，９０５，１６０１〜１６０４　データ回転部
２３０　出力算出部
３１２〜３１５　逆データ置換部
４３０　出力逆算出部
５００，７００　鍵加算部
１１００，１３００　　暗号化装置
１２００，１４００　復号装置
１５００　ビット入れ替え部
１５２０　ビット反転部
１７００　ＤＶＤプレーヤー１７００
１７０２　ＤＶＤ
１８００　ＥＴＣシステム
１８０１　自動車
１８０２　車載器
１８０４　料金所アンテナ
【図１】
2004004603.tif 000012
【図２】
2004004603.tif 000013
【図３】
2004004603.tif 000014
【図４】
2004004603.tif 000015
【図５】
2004004603.tif 000016
【図６】
2004004603.tif 000017
【図７】
2004004603.tif 000018
【図８】
2004004603.tif 000019
【図９】
2004004603.tif 000020
【図１０】
2004004603.tif 000021
【図１１】
2004004603.tif 000022
【図１２】
2004004603.tif 000023
【図１３】
2004004603.tif 000024
【図１４】
2004004603.tif 000025
【図１５】
2004004603.tif 000026
【図１６】
2004004603.tif 000027
【図１７】
2004004603.tif 000028
【図１８】
2004004603.tif 000029
【図１９】
2004004603.tif 000030
【図２０】
2004004603.tif 000031
【図２１】
2004004603.tif 000032