(57)【特許請求の範囲】
【請求項１】
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
秘密鍵Ｋに基づいて生成する異なるデータ構成を有する第１中間鍵ＫＡ、および第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化部を有し、
前記データ暗号化部は、
ラウンド数ｒのラウンド関数を実行するラウンド関数実行部であり、前記第１中間鍵ＫＡに基づいて生成されるラウンド鍵ＫＡｉ（ただしｉは１〜ｒの整数）を入力鍵としてラウンド関数を実行するラウンド関数実行部と、
前記入力データ、または前記ラウンド関数実行部が出力する各ラウンドの出力データ中、少なくとも３以上のラウンドの出力データの構成データに対して前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ（ただしｉは０〜ｒ＋１の整数）との排他的論理和演算を実行する排他的論理和演算部と、
を有する構成であることを特徴とする暗号処理装置。
【請求項２】
前記データ暗号化部は、
前記第１中間鍵ＫＡに基づいてラウンド鍵ＫＡｉの生成処理を実行する第１鍵生成部と、
前記第１鍵生成部の生成するラウンド鍵ＫＡｉを入力鍵としてラウンド関数を実行するラウンド関数実行部と、
前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第１セレクタと、
前記第２中間鍵ＫＢに基づいて鍵ＫＢｉの生成処理を実行する第２鍵生成部と、
前記第２鍵生成部の生成する鍵ＫＢｉと、値０を含む複数データの選択出力を実行する第２セレクタと、
前記第１セレクタの出力データの構成データと、前記第２セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算部と、
を有する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記データ暗号化部は、
前記第２鍵生成部の生成する鍵ＫＢｉを入力し、ビット位置入れ替え処理を実行する入れ替え処理部を有し、
前記第２セレクタは、
前記第２鍵生成部の生成する鍵ＫＢｉと、値０と、前記入れ替え処理部の生成データのいずれかを選択出力する構成であることを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記第１鍵生成部は、
前記第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成し、
前記ラウンド関数実行部は、
ラウンド１〜ｒの各ラウンド関数に、前記第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行し、
前記第２鍵生成部は、
前記第２中間鍵ＫＢに基づいて、前記ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成し、
前記排他的論理和演算部は、
前記入力データ、または前記ラウンド関数実行部が出力する各ラウンドの出力データ中、少なくとも３以上のラウンドの出力データの構成データと、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉとの排他的論理和演算を実行する構成であることを特徴とする請求項２に記載の暗号処理装置。
【請求項５】
前記排他的論理和演算部は、
前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行する構成であることを特徴とする請求項４に記載の暗号処理装置。
【請求項６】
前記排他的論理和演算部は、
前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理において、
４つの連続するラウンド関数に対する入力ラウンド鍵を、前記鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した鍵が適用されるラウンドを含む４連続ラウンド４ｐ＋１〜４ｐ＋４（ただしｐは０以上の整数）において、
（ａ）４ｐ＋１ラウンドにラウンド鍵ＫＡ４ｐ＋１を入力、
（ｂ）４ｐ＋２ラウンドにラウンド鍵ＫＡ４ｐ＋２を入力、
（ｃ）４ｐ＋３ラウンドにラウンド鍵［ＫＡ４ｐ＋３（ＥＸＯＲ）ＫＢ４ｐ＋３］を入力、
（ｄ）４ｐ＋４ラウンドにラウンド鍵［ＫＡ４ｐ＋４（ＥＸＯＲ）ＫＢ４ｐ＋４］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理となるように前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行する構成であることを特徴とする請求項５に記載の暗号処理装置。
【請求項７】
前記排他的論理和演算部は、
前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉまたは鍵ＫＢｉの分割鍵との排他的論理和演算を実行する構成であることを特徴とする請求項１〜６いずれかに記載の暗号処理装置。
【請求項８】
前記ラウンド関数実行部は、
入力データをｎビット（ただしｎは２以上の整数）としたとき、ｎ／ｋビット単位（ただしｋは２以上の整数かつｎの因数）の分割データを入力する構成であり、ラウンド関数実行部に対する入力データと前記ラウンド鍵ＫＡｉとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成する構成であることを特徴とする請求項１〜７いずれかに記載の暗号処理装置。
【請求項９】
前記データ暗号化部は、Ｆｅｉｓｔｅｌ構造に従った暗号化処理を実行する構成であることを特徴とする請求項１〜８いずれかに記載の暗号処理装置。
【請求項１０】
前記第１中間鍵ＫＡは、前記秘密鍵Ｋに対する非線形変換処理により生成される鍵データであり、
前記第２中間鍵ＫＢは、
（ａ）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
（ｂ）秘密鍵Ｋに対して線形変換を適用したデータ、
（ｃ）秘密鍵Ｋそのもの
上記（ａ）〜（ｃ）のいずれかによって構成されるデータであることを特徴とする請求項１〜９いずれかに記載の暗号処理装置。
【請求項１１】
暗号処理装置において、共通鍵ブロック暗号処理を実行する暗号処理方法であり、
データ暗号化部が、秘密鍵Ｋに基づいて生成する異なるデータ構成を有する第１中間鍵ＫＡと第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部が、前記第１中間鍵ＫＡに基づいて生成されるラウンド鍵ＫＡｉ（ただしｉは１〜ｒの整数）を入力鍵としてラウンド数ｒのラウンド関数を実行するラウンド関数実行ステップと、
排他的論理和演算部が、前記入力データ、または前記ラウンド関数実行部が出力する各ラウンドの出力データ中、少なくとも３以上のラウンドの出力データの構成データに対して前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ（ただしｉは０〜ｒ＋１の整数）との排他的論理和演算を実行する排他的論理和演算ステップと、
を有することを特徴とする暗号処理方法。
【請求項１２】
前記データ暗号化ステップは、
第１鍵生成部が、前記第１中間鍵ＫＡに基づいてラウンド鍵ＫＡｉの生成処理を実行する第１鍵生成ステップと、
ラウンド関数実行部が、前記第１鍵生成部の生成するラウンド鍵ＫＡｉを入力鍵としてラウンド関数を実行するラウンド関数実行ステップと、
第１セレクタが、前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第１データ選択ステップと、
第２鍵生成部が、前記第２中間鍵ＫＢに基づいて鍵ＫＢｉの生成処理を実行する第２鍵生成ステップと、
第２セレクタが、前記第２鍵生成部の生成する鍵ＫＢｉと、値０を含む複数データの選択出力を実行する第２データ選択ステップと、
排他的論理和演算部が、前記第１セレクタの出力データの構成データと、前記第２セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算ステップと、
を有することを特徴とする請求項１１に記載の暗号処理方法。
【請求項１３】
前記データ暗号化ステップは、さらに、
入れ替え処理部が、前記第２鍵生成部の生成する鍵ＫＢｉを入力し、ビット位置入れ替え処理を実行する入れ替え処理ステップを有し、
前記第２データ選択ステップは、
前記第２鍵生成部の生成する鍵ＫＢｉと、値０と、前記入れ替え処理部の生成データのいずれかを選択出力するステップであることを特徴とする請求項１２に記載の暗号処理方法。
【請求項１４】
前記第１鍵生成ステップは、
前記第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成し、
前記ラウンド関数実行ステップは、
ラウンド１〜ｒの各ラウンド関数に、前記第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行し、
前記第２鍵生成ステップは、
前記第２中間鍵ＫＢに基づいて、前記ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成し、
前記排他的論理和演算ステップは、
前記入力データ、または前記ラウンド関数実行部が出力する各ラウンドの出力データ中、少なくとも３以上のラウンドの出力データの構成データと、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉとの排他的論理和演算を実行するステップであることを特徴とする請求項１２に記載の暗号処理方法。
【請求項１５】
前記排他的論理和演算ステップは、
前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行するステップであることを特徴とする請求項１４に記載の暗号処理方法。
【請求項１６】
前記排他的論理和演算ステップは、
前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理において、
４つの連続するラウンド関数に対する入力ラウンド鍵を、前記鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した鍵が適用されるラウンドを含む４連続ラウンド４ｐ＋１〜４ｐ＋４（ただしｐは０以上の整数）において、
（ａ）４ｐ＋１ラウンドにラウンド鍵ＫＡ４ｐ＋１を入力、
（ｂ）４ｐ＋２ラウンドにラウンド鍵ＫＡ４ｐ＋２を入力、
（ｃ）４ｐ＋３ラウンドにラウンド鍵［ＫＡ４ｐ＋３（ＥＸＯＲ）ＫＢ４ｐ＋３］を入力、
（ｄ）４ｐ＋４ラウンドにラウンド鍵［ＫＡ４ｐ＋４（ＥＸＯＲ）ＫＢ４ｐ＋４］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理となるように前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行するステップであることを特徴とする請求項１５に記載の暗号処理方法。
【請求項１７】
前記排他的論理和演算ステップは、
前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉまたは鍵ＫＢｉの分割鍵との排他的論理和演算を実行するステップであることを特徴とする請求項１１〜１６いずれかに記載の暗号処理方法。
【請求項１８】
前記ラウンド関数実行ステップは、
入力データをｎビット（ただしｎは２以上の整数）としたとき、ｎ／ｋビット単位（ただしｋは２以上の整数かつｎの因数）の分割データを入力し、ラウンド関数実行部に対する入力データと前記ラウンド鍵ＫＡｉとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成するステップであることを特徴とする請求項１１〜１７いずれかに記載の暗号処理方法。
【請求項１９】
前記データ暗号化ステップは、Ｆｅｉｓｔｅｌ構造に従った暗号化処理を実行するステップであることを特徴とする請求項１１〜１８いずれかに記載の暗号処理方法。
【請求項２０】
前記第１中間鍵ＫＡは、前記秘密鍵Ｋに対する非線形変換処理により生成される鍵データであり、
前記第２中間鍵ＫＢは、
（ａ）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
（ｂ）秘密鍵Ｋに対して線形変換を適用したデータ、
（ｃ）秘密鍵Ｋそのもの
上記（ａ）〜（ｃ）のいずれかによって構成されるデータであることを特徴とする請求項１１〜１９いずれかに記載の暗号処理方法。
【請求項２１】
暗号処理装置において、共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
データ暗号化部に、秘密鍵Ｋに基づいて生成する異なるデータ構成を有する第１中間鍵ＫＡと第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なわせるデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部に、前記第１中間鍵ＫＡに基づいて生成されるラウンド鍵ＫＡｉ（ただしｉは１〜ｒの整数）を入力鍵としてラウンド関数を実行させるラウンド関数実行ステップと、
排他的論理和演算部に、前記入力データ、または前記ラウンド関数実行部が出力する各ラウンドの出力データ中、少なくとも３以上のラウンドの出力データの構成データに対して前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ（ただしｉは０〜ｒ＋１の整数）との排他的論理和演算を実行させる排他的論理和演算ステップと、
を含むことを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ネットワーク通信、電子商取引、その他のデータ処理分野においてセキュリティ確保は重要な課題である。セキュリティ確保の１つの方法として暗号技術があり、暗号処理は様々な領域で利用されている。例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
【０００３】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【０００４】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位（６４ビット，１２８、２５６ビットなど）のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【０００５】
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号であったＤＥＳ（Data Encryption Standard）アルゴリズム、現在の米国標準であるＡＥＳ（Advanced Encryption Standard）アルゴリズムなどが知られている。
【０００６】
図１を参照して、共通鍵ブロック暗号処理について説明する。共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有するデータ暗号化部１１４と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部１１２とによって構成される。鍵スケジュール部１１２は数百ビットの秘密鍵（Ｋ）１１１を数千ビット程度の拡大鍵１１３に拡張して、データ暗号化部１１４に供給する。拡大鍵１１３のうち、データ暗号化部１１４のラウンド関数１１５で入力される拡大鍵の一部をラウンド鍵と呼ぶ。
【０００７】
例えば，ｒ段のラウンド関数を行う構成としたブロック暗号においては，１からｒ段までのラウンド関数にそれぞれ｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝のラウンド鍵が入力される。また、初期鍵としてＩＫが最終鍵としてＦＫが排他的論理和される。
【０００８】
データ暗号化部１１４の代表的な構造にＦｅｉｓｔｅｌ構造がある。Ｆｅｉｓｔｅｌ構造は、データ変換関数としてのラウンド関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関数においては、線形変換処理および非線形変換処理が実行される。なお、Ｆｅｉｓｔｅｌ構造を適用した暗号処理について記載した文献としては、例えば非特許文献１、非特許文献２がある。
【０００９】
図２にデータ暗号化部１１４の具体的構成例を示す。ブロック長をｎとし、ラウンド関数１１５をＦｅｉｓｔｅｌ構造とし、ラウンド鍵のサイズをｎ／２ビット、ラウンド数ｒをｒ＝４ｔ＋２（ｔは自然数）とする。このとき、初期鍵ＩＫおよび最終鍵ＦＫもｎ／２ビットで、Ｆｅｉｓｔｅｌ構造により分割されたデータラインの片側にのみ排他的論理和されることにする。
【００１０】
図２に示すデータ暗号化部１１４に入力されるｎビットの平文Ｐは、１／２に分割され、その上位ｎ／２ビットをＰ０、下位ｎ／２ビットをＰ１とする。同様に暗号文Ｃについても１／２に分割し、上位ｎ／２ビットをＣ０、下位ｎ／２ビットをＣ１とする。
【００１１】
図２に示すデータ暗号化部１１４では、入力平文Ｐの下位ｎ／２ビットＰ１に初期鍵ＩＫを排他的論理和した後、ラウンド鍵：ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒがそれぞれ入力されたラウンド関数をｒ回処理し、最後のラウンド関数から出力される下位ｎ／２ビットに最終鍵ＦＫが排他的論理和されて暗号文Ｃの下位ｎ／２ビットＣ１が生成される。
【００１２】
ラウンド関数１１５は、Ｆ関数およびデータの入れ替え（左右系列の入れ替え）で構成される。Ｆ関数の内部構成には様々なタイプのものがあるが、例えば、図２に示すＦ関数１１６のように、ラウンド鍵との排他的論理和演算、Ｓ−ｂｏｘと呼ばれる非線形演算、線形変換の処理を行う構成が知られている。
【００１３】
図３に、図２と異なる構成を持つデータ暗号化部１１４の構成例を示す。図３に示すデータ暗号化部１１４は、各ラウンド関数の構成は図２に示す構成と同様の構成であるが、初期鍵ＩＫと最終鍵ＦＫの入力構成が図２に示す構成とは異なっている。すなわち、図２に示す構成では、入力平文Ｐの下位ｎ／２ビットＰ１に初期鍵ＩＫを排他的論理和する構成であったが、図３に示す構成では、入力平文Ｐの上位ｎ／２ビットＰ０に初期鍵ＩＫを排他的論理和した後、ＲＫ１、ＲＫ２、…、ＲＫｒ−１、ＲＫｒが入力されたＦ関数および入れ替え関数で構成されるラウンド関数をｒ回処理し、最後のラウンド関数から出力される上位ｎ／２ビットに最終鍵ＦＫが排他的論理和されて暗号文Ｃの上位ｎ／２ビットＣ０が生成される構成となっている。
【００１４】
図２、図３に示すデータ暗号化部の構成は、ｎビットの入力平文Ｐを上位下位ｎ／２ビットずつの２系列に分割して処理を行う構成であるが、ｎビットの入力平文Ｐをｎ／４ビットずつの４系列に分割して処理を行う構成もある。
【００１５】
４系列の構成を持つデータ暗号化部の構成例（４系列Ｔｙｐｅ−２一般化Ｆｅｉｓｔｅｌ構造）を図４、図５を参照して説明する。図４および図５に示すように、ｎビット平文Ｐを１／４に分割したｎ／４ビットデータをＰ０，Ｐ１，Ｐ２，Ｐ３とし、ｎビット暗号文Ｃを１／４に分割したｎ／４ビットデータを各々Ｃ０，Ｃ１，Ｃ２，Ｃ３とする。
【００１６】
本構成では、図４、図５に示すように、各ラウンドにおいて２つのラウンド関数が実行される。各ラウンドにおける２つのラウンド関数では、ｎ／２ビットのラウンド鍵ＲＫ１を１／２に分割したｎ／４ビットのラウンド鍵ＲＫ１［０］、ＲＫ１［１］を生成して各ラウンド関数に入力する。同様に、ｎ／２ビットの初期鍵ＩＫについても１／２に分割したｎ／４ビットのＩＫ［０］、ＩＫ［１］を４系列中の２つの系列に入力し、ｎ／２ビットの最終鍵ＦＫについても、１／２に分割したｎ／４ビットのＦＫ［０］、ＦＫ［１］を４系列中の２つの系列に入力する構成としている。
【００１７】
図４においては、入力平文Ｐを１／４に分割したｎ／４ビットデータをＰ０，Ｐ１，Ｐ２，Ｐ３中の、Ｐ１およびＰ３に初期鍵ＩＫ［０］およびＩＫ［１］を排他的論理和した後、それぞれｎ／４ビットの分割されたラウンド鍵ＲＫ１［０］，ＲＫ１［１］が入力されたラウンド関数を行う。
【００１８】
以下、各ラウンドにおいて、２つのラウンド関数の各々にラウンド鍵｛ＲＫ２［０］，ＲＫ２［１］｝，…，｛ＲＫｒ−１［０］，ＲＫｒ−１［１］｝，｛ＲＫｒ［０］，ＲＫｒ［１］｝を入力して計ｒ回のラウンド関数を実行する。
【００１９】
最後に、ｎビット暗号文Ｃを１／４に分割したｎ／４ビットデータを各々Ｃ０，Ｃ１，Ｃ２，Ｃ３を構成するＣ１およびＣ３の出力前段の処理として最終鍵ＦＫをｎ／４ビットに分割したＦＫ［０］およびＦＫ［１］を排他的論理和する。
【００２０】
図５においては、入力平文Ｐを１／４に分割したｎ／４ビットデータをＰ０，Ｐ１，Ｐ２，Ｐ３中の、図４の構成とは異なる系列であるＰ０およびＰ２に初期鍵ＩＫ［０］およびＩＫ［１］を排他的論理和した後，同様のラウンド関数をｒ回繰り返し、最後に図４とは異なる系列であるＣ０およびＣ２の出力前段の処理として最終鍵ＦＫをｎ／４ビットに分割したＦＫ［０］およびＦＫ［１］を排他的論理和する。
【００２１】
先に図１を参照して説明したように、ラウンド鍵は鍵スケジュール部１１２において生成される。鍵スケジュール部１１２は数百ビットの秘密鍵（Ｋ）１１１を数千ビット程度の拡大鍵１１３に拡張して、データ暗号化部１１４に供給する。ｒ段のラウンド関数を行う構成としたブロック暗号においては，１からｒ段までのラウンド関数にそれぞれ｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝のラウンド鍵が秘密鍵（Ｋ）１１１に基づいて生成される。なお、初期鍵ＩＫ、最終鍵ＦＫも秘密鍵（Ｋ）１１１に基づいて生成される。
【００２２】
データ暗号化部において適用する鍵であるラウンド鍵、初期鍵ＩＫ、最終鍵ＦＫの一般的な生成処理例について説明する。例えば、ラウンド鍵は以下のように構成される。まず、ｋビットの秘密鍵Ｋに対して非線形変換を行ない、ｋビットの第１中間鍵ＫＡを作成する。次に、第１中間鍵ＫＡからそれぞれｎ／２ビットを抜き出し、｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を構成する。
【００２３】
次に、秘密鍵Ｋからｋビットの別のデータを作成し、これを第２中間鍵ＫＢとする。第２中間鍵ＫＢに関しては、
１）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
２）秘密鍵Ｋに対して線形変換を適用したデータ、
３）秘密鍵Ｋそのもの
などの設定が考えられる。
第２中間鍵ＫＢから２ラウンドおきにそれぞれｎ／２ビットを抜き出し，｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を構成する。
【００２４】
ラウンド鍵｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝は、上述した処理によって秘密鍵Ｋから生成した以下のデータ、
第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝
第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝
これらのデータに基づいて、ラウンド鍵｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝を例えば以下のように設定する。
ＲＫ１＝ＫＡ１
ＲＫ２＝ＫＡ２
ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
ＲＫ５＝ＫＡ５
・・・・
ＲＫｒ−４＝ＫＡｒ−４
ＲＫｒ−３＝ＫＡｒ−３（ＥＸＯＲ）ＫＢｒ−３
ＲＫｒ−２＝ＫＡｒ−２（ＥＸＯＲ）ＫＢｒ−２
ＲＫｒ−１＝ＫＡｒ−１
ＲＫｒ＝ＫＡｒ
とする。なお、上記式において［Ａ（ＥＸＯＲ）Ｂ］は、ＡとＢの排他的論理和演算である。
【００２５】
また、初期鍵ＩＫ、最終鍵ＦＫに関しても、第２中間鍵ＫＢからそれぞれｎ／２ビットを抜き出してＫＢ０およびＫＢｒ＋１を構成し、
ＩＫ＝ＫＢ０
ＦＫ＝ＫＢｒ＋１
とする。
【００２６】
このような鍵生成構成とすることで、鍵解析の困難性を高めることができるとされている。第１中間鍵ＫＡのみから生成されるｎ／２ビット鍵ＫＡｎは、連続する２ラウンドのみで利用され、３ラウンド連続することがない。例えば上記設定では、第１ラウンドと第２ラウンドは、第１中間鍵ＫＡのみから生成されるｎ／２ビット鍵ＫＡｎが利用されているが、第３ラウンドと第４ラウンドは、第１中間鍵ＫＡから生成されるｎ／２ビット鍵ＫＡｎと第２中間鍵ＫＢから生成されるｎ／２ビット鍵ＫＢｎとの排他的論理和演算結果として生成されるデータがラウンド鍵に設定される。このように、元となるデータが異なるものを組み合わせることにより、鍵の解析困難性を高め、安全性の高い暗号処理が実現されることが知られている。
【００２７】
先に説明した図２のＦｅｉｓｔｅｌ構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図６に示す。図６に示す排他的論理和演算部１２１〜１２３は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【００２８】
先に説明した図３のＦｅｉｓｔｅｌ構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図７に示す。図７に示す排他的論理和演算部１３１〜１３３は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【００２９】
先に説明した図４の４系列Ｔｙｐｅ−２一般化Ｆｅｉｓｔｅｌ構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図８に示す。図８に示す排他的論理和演算部１４１〜１４６は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【００３０】
先に説明した図５の４系列Ｔｙｐｅ−２一般化Ｆｅｉｓｔｅｌ構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図９に示す。図９に示す排他的論理和演算部１５１〜１５６は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【００３１】
図６〜図９に示すデータ暗号化部を具体的なハードウェアで構成する場合、各ラウンド関数は同じ演算回路であるので、１つのラウンド関数回路を設定して、その１つのラウンド関数回路を繰り返し利用する構成とするのが一般的である。すなわち、１つのラウンド関数回路と、そのラウンド関数回路に対して入力するデータおよび鍵データを順次変更する回路が必要となる。
【００３２】
図６に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図１０に示す。図１０に示す暗号処理回路は、１つのラウンド関数回路２０１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）２０２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）２０３と、セレクタ１〜３，２１１〜２１３と、ｎビットデータレジスタ２１４と、排他的論理和演算部２１５，２１６を有する。
【００３３】
まず、暗号化開始時には、第２鍵生成部（ＫＢｉ生成回路）２０３において、ＫＢ０を生成し、セレクタ１，２１１は平文入力を、セレクタ３，２１３はＫＢ０を選択する設定とする。セレクタ１，２１１によって選択された平文入力のｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ３，２１３によって選択されたＫＢ０と、排他的論理和演算部２１６において排他的論理和された後、データレジスタ２１４に格納される。
【００３４】
第１ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）２０２においてＫＡ１を生成し、セレクタ１，２１１はラウンド関数回路２０１の出力を選択し、セレクタ２，２１２は０を選択し、セレクタ３，２１３は０を選択する設定とする。ラウンド関数回路２０１にはラウンド鍵としてＫＡ１とセレクタ２，２１２によって選択された０の排他的論理和、つまりＫＡ１が入力される。この第１ラウンドにおいて、ＫＡ１を適用したラウンド関数処理が行われる。これは、図６に示す構成の第１ラウンドの処理に相当する。
【００３５】
第１ラウンドで、ラウンド関数回路２０１にラウンド鍵［ＫＡ１］が入力されてラウンド関数を実行した結果データはセレクタ１，２１１から出力される。セレクタ１，２１１から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ３，２１３の出力と排他的論理和演算部２１６において排他的論理和されるが、セレクタ３，２１３の出力は０であるため、そのままデータレジスタ２１４に格納される。
【００３６】
第２ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）２０２においてＫＡ２を生成し、セレクタ１，２１１はラウンド関数回路２０１の出力を選択し、セレクタ２，２１２は０を選択し、セレクタ３，２１３は０を選択する設定とする。
【００３７】
ラウンド関数回路２０１にはラウンド鍵としてＫＡ２とセレクタ２，２１２によって選択された０の排他的論理和、つまりＫＡ２が入力される。第２ラウンドで、ラウンド関数回路２０１にラウンド鍵［ＫＡ２］が入力されてラウンド関数を実行した結果データはセレクタ１，２１１から出力される。セレクタ１，２１１から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ３，２１３の出力と排他的論理和演算部２１６において排他的論理和されるが、セレクタ３，２１３の出力は０であるため、そのままデータレジスタ２１４に格納される。
【００３８】
第３ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）２０２においてＫＡ３を生成し、さらに、第２鍵生成部（ＫＢｉ生成回路）２０３においてＫＢ３を生成し、セレクタ１，２１１はラウンド関数回路の出力を選択し、セレクタ２，２１２はＫＢ３を選択し、セレクタ３，２１３は０を選択する設定とする。
【００３９】
この設定により、ラウンド関数回路２０１にはラウンド鍵としてＫＡ３と、セレクタ２，２１２によって選択されたＫＢ３の排他的論理和演算部２１５における排他的論理和結果［ＫＡ３（ＥＸＯＲ）ＫＢ３］がラウンド鍵として入力される。
【００４０】
このようにして、第３ラウンドで、ラウンド関数回路２０１にラウンド鍵［ＫＡ３（ＥＸＯＲ）ＫＢ３］が入力されてラウンド関数を実行した結果データはセレクタ１，２１１から出力される。セレクタ１，２１１から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ３，２１３の出力と排他的論理和演算部２１６において排他的論理和されるが、セレクタ３，２１３の出力は０であるため、そのままデータレジスタ２１４に格納される。
上記の処理をラウンド数に応じて繰り返す。
【００４１】
第ｒラウンド目では、第１鍵生成部（ＫＡｉ生成回路）２０２においてＫＡｒを、第２鍵生成部（ＫＢｉ生成回路）２０３においてＫＢｒ＋１を生成し、セレクタ１，２１１はラウンド関数回路２０１の出力を選択し、セレクタ２，２１２は０を選択し、セレクタ３，２１３はＫＢｒ＋１を選択する設定とする。
【００４２】
ラウンド関数回路２０１にはラウンド鍵としてＫＡｒとセレクタ２，２１２によって選択された０の排他的論理和、つまりＫＡｒが入力される。第ｒラウンドで、ラウンド関数回路２０１にラウンド鍵［ＫＡｒ］が入力されてラウンド関数を実行した結果データはセレクタ１，２１１から出力される。セレクタ１，２１１から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ３，２１３の出力と排他的論理和演算部２１６において排他的論理和される。セレクタ３，２１３の出力はＫＢｒ＋１であり、ラウンド関数回路２０１の出力の下位ｎ／２ビットと、ＫＢｒ＋１との排他的論理和結果がデータレジスタ２１４に格納される。この処理は、図６に示すｒラウンド目の出力とＫＢｒ＋１との排他的論理和処理を実行する構成に相当する。
【００４３】
これらの処理により、データレジスタ２１４には、暗号文Ｃ＝Ｃ０｜Ｃ１が格納される。
【００４４】
図７に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図１１に示す。図１１に示す暗号処理回路も、図１０に示す構成とほぼ同様の構成を持つ。
【００４５】
１つのラウンド関数回路２０１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）２０２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）２０３と、セレクタ１〜２，２１１，２１２と、ｎビットデータレジスタ２１４と、排他的論理和演算部２１５、これらの構成は、図１０に示す構成と同じである。
【００４６】
セレクタ１，２１１の出力部にある排他的論理和演算部２２１と、セレクタ３，２２２が、図１０に示す設定とは異なっており、排他的論理和演算部２２１は、セレクタ１，２１１の出力の上位ｎ／２ビットと、第２鍵生成部（ＫＢｉ生成回路）２０３の生成するＫＢｉを選択的に入力するセレクタ３，２２２の出力との排他的論理和演算を行う構成となっている。処理の流れは、図１０を参照して説明した処理と同様の処理となる。
【００４７】
先に説明した図８の４系列Ｔｙｐｅ−２一般化Ｆｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図１２に示す。図１２に示す暗号処理回路も、そのほとんどは、図１０に示す構成とほぼ同様の構成を持つ。
【００４８】
すなわち、１つのラウンド関数回路２０１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）２０２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）２０３と、セレクタ１〜２，２１１，２１２と、ｎビットデータレジスタ２１４と、排他的論理和演算部２１５、これらの構成は、図１０に示す構成と同じである。
【００４９】
セレクタ１，２１１の出力部は、ｎ／４ビットずつの系列に分割する構成とされる。すなわち、セレクタ１，２１１から出力されるｎビットは、上位からｎ／４ビットの４つのデータに分割される。これは、図８に示すｎ／４ビットデータの入力系列であるＰ０，Ｐ１，Ｐ２，Ｐ３に対応する。
【００５０】
さらに、これらのｎ／４ビットデータの入力系列Ｐ０，Ｐ１，Ｐ２，Ｐ３中の、Ｐ１およびＰ３に排他的論理和を実行するための排他的論理和演算部２５２，２５３が設定され、第２鍵生成部（ＫＢｉ生成回路）２０３の生成するＫＢｉを選択的に入力するセレクタ３，２５１の出力との排他的論理和演算を行う構成となっている。処理の流れは、図１０を参照して説明した処理とほぼ同様の処理となる。
【００５１】
先に説明した図９の４系列Ｔｙｐｅ−２一般化Ｆｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図１３に示す。図１３に示す暗号処理回路も、そのほとんどは、図１０に示す構成とほぼ同様の構成を持つ。
【００５２】
すなわち、１つのラウンド関数回路２０１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）２０２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）２０３と、セレクタ１〜２，２１１，２１２と、ｎビットデータレジスタ２１４と、排他的論理和演算部２１５、これらの構成は、図１０に示す構成と同じである。
【００５３】
セレクタ１，２１１の出力部は、図１２に示す構成と同様、上位からｎ／４ビットの４つのデータに分割される。これは、図９に示すｎ／４ビットデータの入力系列であるＰ０，Ｐ１，Ｐ２，Ｐ３に対応する。
【００５４】
さらに、これらのｎ／４ビットデータの入力系列Ｐ０，Ｐ１，Ｐ２，Ｐ３中の、Ｐ０およびＰ２に排他的論理和を実行するための排他的論理和演算部２７２，２７３が設定され、第２鍵生成部（ＫＢｉ生成回路）２０３の生成するＫＢｉを選択的に入力するセレクタ３，２７１の出力との排他的論理和演算を行う構成となっている。処理の流れは、図１０を参照して説明した処理とほぼ同様の処理となる。
【００５５】
図１０〜図１３を参照して説明したように、複数の中間鍵ＫＡとＫＢを利用して各ラウンドのラウンド鍵を生成して暗号処理を実行する回路には、多くのセレクタ（３つ）や、第１中間鍵ＫＡベースの鍵ＫＡｉと第２中間鍵ＫＢベースの鍵ＫＢｉとの排他的論理和演算回路が必要な構成であり、回路規模が大きくなり、製造コストも高くなるという問題がある。
【非特許文献１】K. Nyberg, "Generalized Feistel networks", ASIACRYPT'96, SpringerVerlag, 1996, pp.91--104.
【非特許文献２】Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
【発明の開示】
【発明が解決しようとする課題】
【００５６】
本発明は、上記問題点に鑑みてなされたものであり、複数の中間鍵ＫＡとＫＢを利用して共通鍵ブロック暗号処理を行う構成において、回路規模を小さくし小型化とコストダウンを実現した暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００５７】
本発明の第１の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
秘密鍵Ｋに基づいて生成する異なるデータ構成を有する第１中間鍵ＫＡ、および第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化部を有し、
前記データ暗号化部は、
ラウンド数ｒのラウンド関数を実行するラウンド関数実行部であり、前記第１中間鍵ＫＡに基づいて生成されるラウンド鍵ＫＡｉ（ただしｉは１〜ｒの整数）のみを入力鍵としてラウンド関数を実行するラウンド関数実行部と、
前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ（ただしｉは０〜ｒ＋１の整数）との排他的論理和演算を実行する排他的論理和演算部と、
を有する構成であることを特徴とする暗号処理装置にある。
【００５８】
さらに、本発明の暗号処理装置の一実施態様において、前記データ暗号化部は、前記第１中間鍵ＫＡに基づいてラウンド鍵ＫＡｉの生成処理を実行する第１鍵生成部と、前記第１鍵生成部の生成するラウンド鍵ＫＡｉのみを入力鍵としてラウンド関数を実行するラウンド関数実行部と、前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第１セレクタと、前記第２中間鍵ＫＢに基づいて鍵ＫＢｉの生成処理を実行する第２鍵生成部と、前記第２鍵生成部の生成する鍵ＫＢｉと、値０を含む複数データの選択出力を実行する第２セレクタと、前記第１セレクタの出力データの構成データと、前記第２セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算部と、を有する構成であることを特徴とする。
【００５９】
さらに、本発明の暗号処理装置の一実施態様において、前記データ暗号化部は、前記第２鍵生成部の生成する鍵ＫＢｉを入力し、ビット位置入れ替え処理を実行する入れ替え処理部を有し、前記第２セレクタは、前記第２鍵生成部の生成する鍵ＫＢｉと、値０と、前記入れ替え処理部の生成データのいずれかを選択出力する構成であることを特徴とする。
【００６０】
さらに、本発明の暗号処理装置の一実施態様において、前記第１鍵生成部は、前記第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成し、前記ラウンド関数実行部は、ラウンド１〜ｒの各ラウンド関数に、前記第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行し、前記第２鍵生成部は、前記第２中間鍵ＫＢに基づいて、前記ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成し、前記排他的論理和演算部は、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データと、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉとの排他的論理和演算を実行する構成であることを特徴とする。
【００６１】
さらに、本発明の暗号処理装置の一実施態様において、前記排他的論理和演算部は、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行する構成であることを特徴とする。
【００６２】
さらに、本発明の暗号処理装置の一実施態様において、前記排他的論理和演算部は、前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理において、４つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、４連続ラウンドｐ〜ｐ＋３に対して、
（ａ）ｐラウンドにラウンド鍵ＫＡｐを入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２（ＥＸＯＲ）ＫＢｐ＋２］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３（ＥＸＯＲ）ＫＢｐ＋３］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理と等価な処理になるように前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行する構成であることを特徴とする。
【００６３】
さらに、本発明の暗号処理装置の一実施態様において、前記排他的論理和演算部は、前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉまたは鍵ＫＢｉの分割鍵との排他的論理和演算を実行する構成であることを特徴とする。
【００６４】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド関数実行部は、入力データをｎビットとしたとき、ｎ／ｋビット単位（ただしｋ≧２）の分割データを入力する構成であり、ラウンド関数実行部に対する入力データと前記ラウンド鍵ＫＡｉとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成する構成であることを特徴とする。
【００６５】
さらに、本発明の暗号処理装置の一実施態様において、前記データ暗号化部は、Ｆｅｉｓｔｅｌ構造に従った暗号化処理を実行する構成であることを特徴とする。
【００６６】
さらに、本発明の暗号処理装置の一実施態様において、前記第１中間鍵ＫＡは、前記秘密鍵Ｋに対する非線形変換処理により生成される鍵データであり、前記第２中間鍵ＫＢは、
（ａ）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
（ｂ）秘密鍵Ｋに対して線形変換を適用したデータ、
（ｃ）秘密鍵Ｋそのもの
上記（ａ）〜（ｃ）のいずれかによって構成されるデータであることを特徴とする。
【００６７】
さらに、本発明の第２の側面は、
暗号処理装置において、共通鍵ブロック暗号処理を実行する暗号処理方法であり、
データ暗号化部が、秘密鍵Ｋに基づいて生成する異なるデータ構成を有する第１中間鍵ＫＡと第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部が、前記第１中間鍵ＫＡに基づいて生成されるラウンド鍵ＫＡｉ（ただしｉは１〜ｒの整数）のみを入力鍵としてラウンド数ｒのラウンド関数を実行するラウンド関数実行ステップと、
排他的論理和演算部が、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ（ただしｉは０〜ｒ＋１の整数）との排他的論理和演算を実行する排他的論理和演算ステップと、
を有することを特徴とする暗号処理方法にある。
【００６８】
さらに、本発明の暗号処理方法の一実施態様において、前記データ暗号化ステップは、第１鍵生成部が、前記第１中間鍵ＫＡに基づいてラウンド鍵ＫＡｉの生成処理を実行する第１鍵生成ステップと、ラウンド関数実行部が、前記第１鍵生成部の生成するラウンド鍵ＫＡｉのみを入力鍵としてラウンド関数を実行するラウンド関数実行ステップと、第１セレクタが、前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第１データ選択ステップと、第２鍵生成部が、前記第２中間鍵ＫＢに基づいて鍵ＫＢｉの生成処理を実行する第２鍵生成ステップと、第２セレクタが、前記第２鍵生成部の生成する鍵ＫＢｉと、値０を含む複数データの選択出力を実行する第２データ選択ステップと、排他的論理和演算部が、前記第１セレクタの出力データの構成データと、前記第２セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算ステップとを有することを特徴とする。
【００６９】
さらに、本発明の暗号処理方法の一実施態様において、前記データ暗号化ステップは、さらに、入れ替え処理部が、前記第２鍵生成部の生成する鍵ＫＢｉを入力し、ビット位置入れ替え処理を実行する入れ替え処理ステップを有し、前記第２データ選択ステップは、前記第２鍵生成部の生成する鍵ＫＢｉと、値０と、前記入れ替え処理部の生成データのいずれかを選択出力するステップであることを特徴とする。
【００７０】
さらに、本発明の暗号処理方法の一実施態様において、前記第１鍵生成ステップは、前記第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成し、前記ラウンド関数実行ステップは、ラウンド１〜ｒの各ラウンド関数に、前記第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行し、前記第２鍵生成ステップは、前記第２中間鍵ＫＢに基づいて、前記ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成し、前記排他的論理和演算ステップは、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データと、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉとの排他的論理和演算を実行するステップであることを特徴とする。
【００７１】
さらに、本発明の暗号処理方法の一実施態様において、前記排他的論理和演算ステップは、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行するステップであることを特徴とする。
【００７２】
さらに、本発明の暗号処理方法の一実施態様において、前記排他的論理和演算ステップは、前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理において、４つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、４連続ラウンドｐ〜ｐ＋３に対して、
（ａ）ｐラウンドにラウンド鍵ＫＡｐを入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２（ＥＸＯＲ）ＫＢｐ＋２］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３（ＥＸＯＲ）ＫＢｐ＋３］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理と等価な処理になるように前記鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行するステップであることを特徴とする。
【００７３】
さらに、本発明の暗号処理方法の一実施態様において、前記排他的論理和演算ステップは、前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉまたは鍵ＫＢｉの分割鍵との排他的論理和演算を実行するステップであることを特徴とする。
【００７４】
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド関数実行ステップは、入力データをｎビットとしたとき、ｎ／ｋビット単位（ただしｋ≧２）の分割データを入力し、ラウンド関数実行部に対する入力データと前記ラウンド鍵ＫＡｉとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成するステップであることを特徴とする。
【００７６】
さらに、本発明の暗号処理方法の一実施態様において、前記第１中間鍵ＫＡは、前記秘密鍵Ｋに対する非線形変換処理により生成される鍵データであり、前記第２中間鍵ＫＢは、
（ａ）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
（ｂ）秘密鍵Ｋに対して線形変換を適用したデータ、
（ｃ）秘密鍵Ｋそのもの
上記（ａ）〜（ｃ）のいずれかによって構成されるデータであることを特徴とする。
【００７７】
さらに、本発明の第３の側面は、
暗号処理装置において、共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
データ暗号化部に、秘密鍵Ｋに基づいて生成する異なるデータ構成を有する第１中間鍵ＫＡと第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なわせるデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部に、前記第１中間鍵ＫＡに基づいて生成されるラウンド鍵ＫＡｉ（ただしｉは１〜ｒの整数）のみを入力鍵としてラウンド関数を実行させるラウンド関数実行ステップと、
排他的論理和演算部に、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ（ただしｉは０〜ｒ＋１の整数）との排他的論理和演算を実行させる排他的論理和演算ステップと、
を含むことを特徴とするコンピュータ・プログラムにある。
【００７８】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００７９】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００８０】
本発明の一実施例の構成によれば、秘密鍵Ｋに基づいて生成する複数の異なるデータ構成を有する第１中間鍵ＫＡと第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なう共通鍵ブロック暗号処理構成において、ラウンド関数実行部に第１中間鍵ＫＡに基づいて生成するラウンド鍵ＫＡｉのみを入力してラウンド関数を実行し、第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉは、ラウンド関数部におけるＦ関数に入力することなく、暗号処理対象となる入力データ、またはラウンド関数からの出力データとの排他的論理和演算を実行させる構成とした。本構成により暗号処理回路を簡略化し装置の小型化およびコストダウンを実現することができる。
【発明を実施するための最良の形態】
【００８１】
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。本発明の暗号処理装置は、共通鍵ブロック暗号処理を実行する暗号処理装置であり、先に図１を参照して説明したと同様の処理構成を有する。ただし、ラウンド関数等を実行するデータ暗号化部の構成は、先に、図１０〜図１３を説明した回路構成に比較して簡略化した構成となっている。
【００８２】
先に図１を参照して説明したように、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有するデータ暗号化部１１４と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部１１２とによって構成される。鍵スケジュール部１１２は数百ビットの秘密鍵（Ｋ）１１１を数千ビット程度の拡大鍵１１３に拡張して、データ暗号化部１１４に供給する。
【００８３】
データ暗号化部１１４では、１からｒ段までのラウンド関数にそれぞれ｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝のラウンド鍵が入力される。また、初期鍵としてＩＫが最終鍵としてＦＫが排他的論理和される。
【００８４】
本発明の一実施例に従った暗号処理装置におけるデータ暗号化部において適用する鍵であるラウンド鍵、初期鍵ＩＫ、最終鍵ＦＫも、先に説明した処理と同様の処理で生成する。
【００８５】
すなわち、ｋビットの秘密鍵Ｋに対して非線形変換を行ない、ｋビットの第１中間鍵ＫＡを作成する。次に、第１中間鍵ＫＡからそれぞれｎ／２ビットを抜き出し、｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を構成する。次に、秘密鍵Ｋからｋビットの別のデータを作成し、これを第２中間鍵ＫＢとする。第２中間鍵ＫＢに関しては、
１）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
２）秘密鍵Ｋに対して線形変換を適用したデータ、
３）秘密鍵Ｋそのもの
などの設定のいずれかとする。
この第２中間鍵ＫＢから２ラウンドおきにそれぞれｎ／２ビットを抜き出し，｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を構成する。
【００８６】
ラウンド鍵｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝は、上述した処理によって秘密鍵Ｋから生成した以下のデータ、
第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝
第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝
これらのデータに基づいて、ラウンド鍵｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝を例えば以下のように設定する。
ＲＫ１＝ＫＡ１
ＲＫ２＝ＫＡ２
ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
ＲＫ５＝ＫＡ５
・・・・
ＲＫｒ−４＝ＫＡｒ−４
ＲＫｒ−３＝ＫＡｒ−３（ＥＸＯＲ）ＫＢｒ−３
ＲＫｒ−２＝ＫＡｒ−２（ＥＸＯＲ）ＫＢｒ−２
ＲＫｒ−１＝ＫＡｒ−１
ＲＫｒ＝ＫＡｒ
とする。なお、上記式において［Ａ（ＥＸＯＲ）Ｂ］は、ＡとＢの排他的論理和演算である。初期鍵ＩＫ、最終鍵ＦＫに関しても、第２中間鍵ＫＢからそれぞれｎ／２ビットを抜き出してＫＢ０およびＫＢｒ＋１を構成し、
ＩＫ＝ＫＢ０
ＦＫ＝ＫＢｒ＋１
とする。
【００８７】
前述したように、このような鍵生成構成とすることで、鍵解析の困難性を高め安全性の高い暗号処理が実現される。
【００８８】
本願発明の一実施例に従った暗号処理装置は、上記のように複数の鍵（上記の例では、第１中間鍵および第２中間鍵）を混在させてラウンド鍵、初期鍵、最終鍵を生成してデータ暗号処理を行うデータ暗号化部の回路構成の簡略化を実現したものである。
【００８９】
本願発明の一実施例においては、簡略化回路構成を実現するため、ラウンド鍵ＲＫｉの生成に際して選択されたラウンドにおいて入力される第２中間鍵ベースの鍵ＫＢｉの入力構成を、先に説明した従来構成（図１０〜図１３）とは異なる構成としている。具体的には、等価変形を用いて、先に説明した従来構成（図１０〜図１３）とは異なるデータに対して第２中間鍵ベースの鍵ＫＢｉの排他的論理和演算を行い、結果として、従来と同一の暗号処理アルゴリズムを実行させることを可能としたものである。
【００９０】
以下、本願発明に従った暗号処理装置におけるデータ暗号化部の簡略化回路構成の各実施例について説明する。説明は、
（１）実施例１：２系列Ｆｅｉｓｔｅｌ構造における第１適用例
（２）実施例２：２系列Ｆｅｉｓｔｅｌ構造における第２適用例
（３）実施例３：４系列Ｆｅｉｓｔｅｌ構造における第１適用例
（４）実施例４：４系列Ｆｅｉｓｔｅｌ構造における第２適用例
【００９１】
（１）実施例１：２系列Ｆｅｉｓｔｅｌ構造における第１適用例
まず、実施例１として、２系列Ｆｅｉｓｔｅｌ構造における第１の適用例について説明する。すなわち、先に図６を参照して説明したｎビットの入力平文Ｐを上位下位ｎ／２ビットずつの２系列に分割して処理を行う２系列のＦｅｉｓｔｅｌ構造のデータ暗号化部に対応する簡略化回路構成である。なお、図６に示す２系列型の従来の回路構成は図１０に示す回路構成である。
【００９２】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図１７に示す回路構成となるが、この図１７に示す回路構成の説明の前に、図１４〜図１６を参照して、回路の簡略化を実現するための理論的な説明を行う。
【００９３】
図６に示す２系列のＦｅｉｓｔｅｌ構造のデータ暗号化部のラウンド関数に対して入力されるラウンド鍵｛ＲＫ１，ＲＫ２，…，ＲＫｒ−１，ＲＫｒ｝は、前にも説明したように、
第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝
第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝
これらのデータに基づいて生成され、
第１ラウンド：ＲＫ１＝ＫＡ１
第２ラウンド：ＲＫ２＝ＫＡ２
第３ラウンド：ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
第４ラウンド：ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
第５ラウンド：ＲＫ５＝ＫＡ５
・・・・
という設定である。
【００９４】
例えば第３ラウンドに入力するラウンド鍵、すなわち、
ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
この鍵生成のため、図１０に示す排他的論理和演算部２１５が利用されていた。
【００９５】
本発明に従った回路（図１７参照）では、この図１０に示す鍵生成のための排他的論理和演算部２１５を省略する構成を実現する。この理論について、図１４〜図１６を参照して説明する。
【００９６】
図１４は、先に図１０を参照して説明した回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。第２ラウンド〜第５ラウンドのラウンド関数のＦ関数３０２〜３０５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２
第３ラウンド：ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
第４ラウンド：ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
第５ラウンド：ＲＫ５＝ＫＡ５
図１０に示す回路構成では、これらのラウンド鍵を各ラウンドにおいてラウンド関数回路に入力するため、セレクタ２，２１２と、排他的論理和演算部２１５を用いて、各ラウンド鍵の生成を行っている。
【００９７】
例えば、図１４に示す構成における第３、４ラウンドに示す排他的論理和演算部３０７，３０８が、図１０に示す排他的論理和演算部２１５に相当する。第２、第５ラウンドのように、第２中間鍵ベースの鍵ＫＢｉは使用されないラウンドでは、図１０のセレクタ２，２１２の出力が０に設定され、図１０に示す排他的論理和演算部２１５は、第１中間鍵ベースの鍵ＫＡｉを変更することなく出力することになる。
【００９８】
図１５は、本発明に従った図１７に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。第２ラウンド〜第５ラウンドのラウンド関数のＦ関数３１２〜３１５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２
第３ラウンド：ＲＫ３＝ＫＡ３
第４ラウンド：ＲＫ４＝ＫＡ４
第５ラウンド：ＲＫ５＝ＫＡ５
【００９９】
さらに、図１５に示す構成では、第２ラウンドに入力するｎビット中、第２ラウンドのＦ関数に入力されない側にあるｎ／２ビット（図に示すデータＰ）と、第２中間鍵ＫＢベースのｎ／２ビット鍵ＫＢ３との排他的論理和演算を排他的論理和演算部３２１において実行し、その後、さらに第２ラウンドのＦ関数３１２の出力（データＱ）と排他的論理和演算部３２２において、排他的論理和演算を実行して、この結果のｎ／２ビットデータを第３ラウンドのＦ関数３１３の入力として、この入力と第３ラウンドのＦ関数に入力するラウンド鍵ＫＡ３との排他的論理和演算をＦ関数３１３内の排他的論理和演算部３２３において行い、その結果データ（データＴ'）をＦ関数３１３内の非線形変換部（Ｓボックス）に対する入力としている。
【０１００】
この図１５の構成における第３ラウンドのＦ関数３１３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'）と、図１４における第３ラウンドのＦ関数３０３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ）を比較してみる。
【０１０１】
図１４に示す第３ラウンドのＦ関数内部の非線形演算への入力データ［Ｔ］は、図１４に示すデータＰ，Ｑ，ＫＡ３，ＫＢ３による下記の演算結果として表すことができる。
Ｔ＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）ＫＡ３（ＥＸＯＲ）ＫＢ３
【０１０２】
また、図１５の構成における第３ラウンドのＦ関数３１３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'）は、図１５に示すデータＰ，Ｑ，ＫＡ３，ＫＢ３による下記の演算結果として表すことができる。なおデータＰ，Ｑ，ＫＡ３，ＫＢ３は、図１４に示すデータと同一である。
Ｔ'＝Ｐ（ＥＸＯＲ）ＫＢ３（ＥＸＯＲ）Ｑ（ＥＸＯＲ）ＫＡ３
このＴ'の算出式は、上記Ｔの算出式と等価である。すなわち、
Ｔ'＝Ｔ
が成立し、図１５の構成における第３ラウンドのＦ関数の非線形変換部に対する入力は、図１４の構成における第３ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０１０３】
このように、第３ラウンドにおけるＦ関数に入力するラウンド鍵を、
図１４の構成では、ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
としているが、
図１５に示すように、第３ラウンドにおけるＦ関数に入力するラウンド鍵を、
ＲＫ３＝ＫＡ３
として、第３ラウンドのＦ関数に対する入力データの生成段階でＫＢ３の排他的論理和演算を実行して、そのデータを第３ラウンドのＦ関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【０１０４】
このことは、第４ラウンドについても同様であり、図１４の構成では、第４ラウンドにおけるＦ関数３０４に入力するラウンド鍵を、排他的論理和演算部３０８の処理により、
ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
として入力しているが、
図１５の構成のように、第３ラウンドにおけるＦ関数３１４に入力するラウンド鍵を、
ＲＫ４＝ＫＡ４
として、第４ラウンドのＦ関数３１４に対する入力データの生成段階でＫＢ４の排他的論理和演算を、排他的論理和演算部３２４において実行して、そのデータを第４ラウンドのＦ関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【０１０５】
次に、図１４と図１５の構成における第５ラウンドの処理について比較する。
図１４は、先に図１０を参照して説明した回路を適用した第２ラウンド〜第５ラウンドの処理を説明しており、第２ラウンド〜第５ラウンドのラウンド関数のＦ関数３０２〜３０５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２
第３ラウンド：ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
第４ラウンド：ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
第５ラウンド：ＲＫ５＝ＫＡ５
すなわち、第５ラウンドでは第２中間鍵ＫＢベースの鍵データＫＢｉは利用されない。
【０１０６】
図１４に示す第５ラウンドのＦ関数３０５の非線形変換部（Ｓボックス）への入力データ［Ｕ］は、図１４に示すデータＰ，Ｑ，Ｒ，ＫＡ５による下記の演算結果として表すことができる。
Ｕ＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
【０１０７】
また、図１５の構成における第５ラウンドのＦ関数３１５内の非線形変換部（Ｓボックス）に対する入力データ（Ｕ'）は、図１５に示すデータＰ，Ｑ，Ｒ，ＫＢ３，ＫＡ５による下記の演算結果として表すことができる。なおデータＰ，Ｑ，Ｒ，ＫＢ３，ＫＡ５は、図１４に示すデータと同一である。
Ｕ'＝Ｐ（ＥＸＯＲ）ＫＢ３（ＥＸＯＲ）Ｑ（ＥＸＯＲ）ＫＢ３（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
このＵ'の算出式において、同一データである鍵ＫＢ３について２回繰り返して排他的論理和演算が実行されている。同じデータを２回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【０１０８】
従って、上記式は、上記式から鍵ＫＢ３についての２回の排他的論理和演算を省略した下式、すなわち、
Ｕ'＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
と同じ結果が得られる。
上記式は、前述の図１４を参照して説明した図１４に示す第５ラウンドのＦ関数３０５の非線形演算への入力データ［Ｕ］の算出式、
Ｕ＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
上記の算出式と同じになる。すなわち、
Ｕ'＝Ｕ
が成立し、図１５の構成における第５ラウンドのＦ関数の非線形変換部に対する入力は、図１４の構成における第５ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０１０９】
このように、従来型の図１４に示す構成における第２中間鍵ＫＢベースの鍵データＫＢｉが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第１中間鍵ＫＡベースの鍵ＫＡｉのままに設定して、Ｆ関数に対する非入力データ側において、第２中間鍵ベースＫＢの同一の鍵ＫＢｉを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【０１１０】
このような設定は、すべてのラウンドにおいて実現可能である。図１５に示すようにラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみとすることができる。具体的には、図１６に示すような暗号処理構成が実現される。この図１６に示す暗号処理構成は、先に説明した図６に示す暗号処理構成と等価な構成を持つ。すなわち図６に示す暗号処理構成を適用して平文Ｐを入力して得られる暗号文Ｃと、図１６に示す暗号処理構成を適用して同じ平文Ｐを入力して得られる暗号文Ｃとは同一となり、同じ暗号処理が行われることになる。
【０１１１】
このように、ラウンド関数に対するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみとして、ラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉの排他的論理和演算を行う構成とすることで、図１７に示す簡略化した回路構成を用いた暗号処理が可能となる。
【０１１２】
すなわち、図１７は、図１６に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図１０を参照して説明した図６に示す従来型の２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【０１１３】
図１６に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成例としての図１７に示す暗号処理回路は、１つのラウンド関数回路３５１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）３５２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）３５３と、ｎビットデータレジスタ３５４と、セレクタ１〜２，３５５〜３５６と、排他的論理和演算部３５７を有する。
【０１１４】
まず、暗号化開始時には、第２鍵生成部（ＫＢｉ生成回路）３５３において、ＫＢ０を生成し、セレクタ１，３５５は平文入力を、セレクタ２，３５６はＫＢ０を選択する設定とする。セレクタ１，３５５によって選択された平文入力のｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ２，３５６によって選択されたＫＢ０と、排他的論理和演算部３５７において排他的論理和された後、データレジスタ３５４に格納される。この排他的論理和演算部３５７における排他的論理和処理は、図１６に示す構成の第１ラウンドの前の入力データの下位ｎ／２ビット（Ｐ１）とＫＢ０との排他的論理和演算処理に相当する。
【０１１５】
第１ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）３５２においてＫＡ１を生成し、第２鍵生成部（ＫＢｉ生成回路）３５３においてＫＢ３を生成し、セレクタ１，３５５はラウンド関数回路３５１の出力を選択し、セレクタ２，３５６はＫＢ３を選択する設定とする。ラウンド関数回路３５１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）３５２からＫＡ１が入力される。この第１ラウンドにおいて、ＫＡ１を適用したラウンド関数処理が行われる。これは、図１６に示す構成の第１ラウンドの処理に相当する。
【０１１６】
第１ラウンドで、ラウンド関数回路３５１にラウンド鍵［ＫＡ１］が入力されてラウンド関数を実行した結果データはセレクタ１，３５５から出力される。セレクタ１，３５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ２，３５６の出力と排他的論理和演算部３５７において排他的論理和される。セレクタ２，３５６の出力は第２鍵生成部（ＫＢｉ生成回路）３５３において生成されたＫＢ３であり、セレクタ１，３５５から出力される下位ｎ／２と、ＫＢ３との排他的論理和演算結果が、データレジスタ３５４に格納されるｎビットデータの下位ｎ／２ビットとなる。データレジスタ３５４に格納されるｎビットデータの上位ｎ／２ビットは、ラウンド関数回路３５１からセレクタ１，３５５を介して出力される上位ｎ／２ビットである。
【０１１７】
第２ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）３５２においてＫＡ２を生成し、第２鍵生成部（ＫＢｉ生成回路）３５３においてＫＢ４を生成し、セレクタ１，３５５はラウンド関数回路３５１の出力を選択し、セレクタ２，３５６は第２鍵生成部（ＫＢｉ生成回路）３５３において生成されたＫＢ４を選択する設定とする。
【０１１８】
ラウンド関数回路３５１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）３５２において生成されたＫＡ２が入力される。第２ラウンドで、ラウンド関数回路３５１にラウンド鍵［ＫＡ２］が入力されてラウンド関数を実行した結果データはセレクタ１，３５５から出力される。セレクタ１，３５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ２，３５６の出力と排他的論理和演算部３５７において排他的論理和される。セレクタ２，３５６の出力は第２鍵生成部（ＫＢｉ生成回路）３５３において生成されたＫＢ４であるため、セレクタ１，３５５から出力される下位ｎ／２と、ＫＢ４との排他的論理和演算結果が、データレジスタ３５４に格納されるｎビットデータの下位ｎ／２ビットとなる。データレジスタ３５４に格納されるｎビットデータの上位ｎ／２ビットは、ラウンド関数回路３５１からセレクタ１，３５５を介して出力される上位ｎ／２ビットである。
【０１１９】
これらの処理をラウンド数に応じて繰り返す。
第（ｒ−１）ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）３５２においてＫＡｒ−１を生成し、セレクタ１，３５５はラウンド関数回路３５１の出力を選択し、セレクタ２，３５６は０を選択する設定とする。
【０１２０】
ラウンド関数回路３５１にはラウンド鍵としてＫＡｒ−１が入力される。第（ｒ−１）ラウンドで、ラウンド関数回路３５１にラウンド鍵［ＫＡｒ−１］が入力されてラウンド関数を実行した結果データはセレクタ１，３５５から出力される。セレクタ１，３５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ２，３５６の出力と排他的論理和演算部３５７において排他的論理和される。セレクタ２，３５６の出力は０であり、セレクタ１，３５５から出力されるｎビットがそのままデータレジスタ３５４に格納される。この処理は、図１６に示す（ｒ−１）ラウンドの処理に相当する。図１６に示すように最終ラウンドの第ｒラウンド目に入力する下位ｎ／２ビットには、鍵ＫＢｉとの排他論理和を行わない構成となっている。
【０１２１】
最終の第ｒラウンド目には、第１鍵生成部（ＫＡｉ生成回路）３５２においてＫＡｒを生成し、第２鍵生成部（ＫＢｉ生成回路）３５３はＫＢｒ＋１を生成し、セレクタ１，３５５はラウンド関数回路３５１の出力を選択し、セレクタ２，３５６は、第２鍵生成部（ＫＢｉ生成回路）３５３において生成されたＫＢｒ＋１を選択する設定とする。
【０１２２】
ラウンド関数回路３５１には第１鍵生成部（ＫＡｉ生成回路）３５２において生成されたラウンド鍵としてＫＡｒが入力される。第ｒラウンドで、ラウンド関数回路３５１にラウンド鍵［ＫＡｒ］が入力されてラウンド関数を実行した結果データはセレクタ１，３５５から出力される。セレクタ１，３５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、下位ｎ／２ビットがセレクタ２，３５６の出力と排他的論理和演算部３５７において排他的論理和される。セレクタ２，３５６の出力はＫＢｒ＋１であり、ラウンド関数回路３５１の出力の下位ｎ／２ビットと、ＫＢｒ＋１との排他的論理和結果がデータレジスタ３５４に格納される。データレジスタ３５４に格納されるｎビットデータの上位ｎ／２ビットは、ラウンド関数回路３５１からセレクタ１，３５５を介して出力される上位ｎ／２ビットである。この処理は、図１６に示すｒラウンド目の出力とＫＢｒ＋１との排他的論理和処理を実行する構成に相当する。
【０１２３】
以上の処理により、データレジスタ３５４には、
暗号文Ｃ＝Ｃ０｜Ｃ１が格納される。
図１６に示す暗号化構成の処理を実行する回路として構成される図１７に示す回路構成は、先に説明した図６の暗号化構成に対応する図１０に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０１２４】
図１７に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第１鍵生成部（ＫＡｉ生成回路）３５２は、第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成する。
ラウンド関数実行部としてのラウンド関数回路３５１は、ラウンド１〜ｒの各ラウンド関数に、第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行する。
第２鍵生成部（ＫＢｉ生成回路）３５３は、第２中間鍵ＫＢに基づいて、ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成する。
排他的論理和演算部３５７は、入力データ、またはラウンド関数実行部としてのラウンド関数回路３５１からの出力データの構成データと、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉとの排他的論理和演算を実行する。
このような処理構成となる。
【０１２５】
なお、排他的論理和演算部３５７は、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行する。具体的には、４つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、４連続ラウンドｐ〜ｐ＋３に対して、
（ａ）ｐラウンドにラウンド鍵ＫＡｐを入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２（ＥＸＯＲ）ＫＢｐ＋２］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３（ＥＸＯＲ）ＫＢｐ＋３］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理と等価な処理になるように鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行する。なお、ｐ＋４ラウンド以降も上記のｐ〜ｐ＋３ラウンドと同様、ＫＡｉを連続２ラウンド、ＫＡｉ（ＥＸＯＲ）ＫＢｉを連続２ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【０１２６】
このように図１６に示す暗号化構成の処理を実行する図１７に示す回路構成は、先に説明した図６の暗号化構成に対応する図１０に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０１２７】
（２）実施例２：２系列Ｆｅｉｓｔｅｌ構造における第２適用例
次に、実施例２として、２系列Ｆｅｉｓｔｅｌ構造における第２の適用例について説明する。すなわち、先に図７を参照して説明したｎビットの入力平文Ｐを上位下位ｎ／２ビットずつの２系列に分割して処理を行う２系列のＦｅｉｓｔｅｌ構造のデータ暗号化部に対応する簡略化回路構成である。なお、図７に示す２系列型の従来の回路構成は図１１に示す回路構成である。
【０１２８】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図２０に示す回路構成となるが、この図２０に示す回路構成の説明の前に、図１８〜図１９を参照して、回路の簡略化を実現するための理論的な説明を行う。
【０１２９】
図１８は、本発明に従った図２０に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。第２ラウンド〜第５ラウンドのラウンド関数のＦ関数４１２〜４１５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２
第３ラウンド：ＲＫ３＝ＫＡ３
第４ラウンド：ＲＫ４＝ＫＡ４
第５ラウンド：ＲＫ５＝ＫＡ５
【０１３０】
さらに、図１８に示す構成では、第３ラウンドに入力するｎビット中、第３ラウンドのＦ関数に入力するｎ／２ビットと、第２中間鍵ＫＢベースのｎ／２ビット鍵ＫＢ３との排他的論理和演算を排他的論理和演算部４２１において実行して、この結果のｎ／２ビットデータを第３ラウンドのＦ関数４１３の入力として、この入力と第３ラウンドのＦ関数に入力するラウンド鍵ＫＡ３との排他的論理和演算をＦ関数４１３内の排他的論理和演算部４２２において行い、その結果データ（データＴ'）をＦ関数４１３内の非線形変換部（Ｓボックス）に対する入力としている。
【０１３１】
なお、図７に示すＦｅｉｓｔｅｌ構造と図６に示すＦｅｉｓｔｅｌ構造とは、初期鍵と最終鍵の入力位置が異なるのみであり、１〜ｒラウンドのラウンド演算の処理構成は同一であるので、この図１８の構成における各ラウンドのＦ関数に対する入力と、図６、図７のＦｅｉｓｔｅｌ構造に対応する図１４に示す暗号処理構成におけるＦ関数に対する入力を比較する。図１４に示す暗号処理構成は、先に図７に対応する回路構成として説明した図１１の回路による暗号処理構成に相当する。
【０１３２】
図１８の構成における第３ラウンドのＦ関数４１３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'）と、図１４における第３ラウンドのＦ関数３０３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ）を比較してみる。
【０１３３】
図１４に示す第３ラウンドのＦ関数内部の非線形演算への入力データ［Ｔ］は、先に説明したように、図１４に示すデータＰ，Ｑ，ＫＡ３，ＫＢ３による下記の演算結果として表すことができる。
Ｔ＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）ＫＡ３（ＥＸＯＲ）ＫＢ３
【０１３４】
また、図１８の構成における第３ラウンドのＦ関数４１３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'）は、図１８に示すデータＰ，Ｑ，ＫＡ３，ＫＢ３による下記の演算結果として表すことができる。なおデータＰ，Ｑ，ＫＡ３，ＫＢ３は、図１４に示すデータと同一である。
Ｔ'＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）ＫＢ３（ＥＸＯＲ）ＫＡ３
このＴ'の算出式は、上記Ｔの算出式と等価である。すなわち、
Ｔ'＝Ｔ
が成立し、図１８の構成における第３ラウンドのＦ関数の非線形変換部に対する入力は、図１４の構成における第３ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０１３５】
このように、第３ラウンドにおけるＦ関数に入力するラウンド鍵を、
図１４の構成では、ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
としているが、
図１８に示すように、第３ラウンドにおけるＦ関数に入力するラウンド鍵を、
ＲＫ３＝ＫＡ３
として、第３ラウンドのＦ関数に対する入力データの生成段階でＫＢ３の排他的論理和演算を実行して、そのデータを第３ラウンドのＦ関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【０１３６】
このことは、第４ラウンドについても同様であり、図１４の構成では、第４ラウンドにおけるＦ関数３０４に入力するラウンド鍵を、排他的論理和演算部３０８の処理により、
ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
として入力しているが、
図１８の構成のように、第３ラウンドにおけるＦ関数４１４に入力するラウンド鍵を、
ＲＫ４＝ＫＡ４
として、第４ラウンドのＦ関数４１４に対する入力データの生成段階でＫＢ４の排他的論理和演算を、排他的論理和演算部４２３において実行して、そのデータを第４ラウンドのＦ関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【０１３７】
次に、図１４と図１８の構成における第５ラウンドの処理について比較する。
図１４は、先に図１１を参照して説明した回路を適用した第２ラウンド〜第５ラウンドの処理を説明しており、第２ラウンド〜第５ラウンドのラウンド関数のＦ関数３０２〜３０５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２
第３ラウンド：ＲＫ３＝ＫＡ３（ＥＸＯＲ）ＫＢ３
第４ラウンド：ＲＫ４＝ＫＡ４（ＥＸＯＲ）ＫＢ４
第５ラウンド：ＲＫ５＝ＫＡ５
すなわち、第５ラウンドでは第２中間鍵ＫＢベースの鍵データＫＢｉは利用されない。
【０１３８】
図１４に示す第５ラウンドのＦ関数３０５の非線形変換部（Ｓボックス）への入力データ［Ｕ］は、図１４に示すデータＰ，Ｑ，Ｒ，ＫＡ５による下記の演算結果として表すことができる。
Ｕ＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
【０１３９】
また、図１８の構成における第５ラウンドのＦ関数４１５内の非線形変換部（Ｓボックス）に対する入力データ（Ｕ'）は、図１８に示すデータＰ，Ｑ，Ｒ，ＫＡ５，ＫＢ３による下記の演算結果として表すことができる。なおデータＰ，Ｑ，Ｒ，ＫＡ５，ＫＢ３は、図１４に示すデータと同一である。
Ｕ'＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）ＫＢ３（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＢ３（ＥＸＯＲ）ＫＡ５
このＵ'の算出式において、同一データである鍵ＫＢ３について２回繰り返して排他的論理和演算が実行されている。同じデータを２回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【０１４０】
従って、上記式は、上記式から鍵ＫＢ３についての２回の排他的論理和演算を省略した下式、すなわち、
Ｕ'＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
と同じ結果が得られる。
上記式は、前述の図１４を参照して説明した図１４に示す第５ラウンドのＦ関数３０５の非線形演算への入力データ［Ｕ］の算出式、
Ｕ＝Ｐ（ＥＸＯＲ）Ｑ（ＥＸＯＲ）Ｒ（ＥＸＯＲ）ＫＡ５
上記の算出式と同じになる。すなわち、
Ｕ'＝Ｕ
が成立し、図１８の構成における第５ラウンドのＦ関数の非線形変換部に対する入力は、図１４の構成における第５ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０１４１】
このように、従来型の図１４に示す構成における第２中間鍵ＫＢベースの鍵データＫＢｉが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第１中間鍵ＫＡベースの鍵ＫＡｉのままに設定して、Ｆ関数に対する入力データ側において、第２中間鍵ベースＫＢの同一の鍵ＫＢｉを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【０１４２】
このような設定は、すべてのラウンドにおいて実現可能である。図１８に示すようにラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみとすることができる。具体的には、図１９に示すような暗号処理構成が実現される。この図１９に示す暗号処理構成は、先に説明した図７に示す暗号処理構成と等価な構成を持つ。すなわち図７に示す暗号処理構成を適用して平文Ｐを入力して得られる暗号文Ｃと、図１９に示す暗号処理構成を適用して同じ平文Ｐを入力して得られる暗号文Ｃとは同一となり、同じ暗号処理が行われることになる。
【０１４３】
このように、ラウンド関数に対するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみとして、ラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉの排他的論理和演算を行う構成とすることで、図２０に示す簡略化した回路構成を用いた暗号処理が可能となる。
【０１４４】
すなわち、図２０は、図１９に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図１１を参照して説明した図７に示す従来型の２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【０１４５】
図２０に示す暗号処理回路は、１つのラウンド関数回路４５１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）４５２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）４５３と、ｎビットデータレジスタ４５４と、セレクタ１〜２，４５５〜４５６と、排他的論理和演算部４５７を有する。
【０１４６】
まず、暗号化開始時には、第２鍵生成部（ＫＢｉ生成回路）４５３において、ＫＢ０を生成し、セレクタ１，４５５は平文入力を、セレクタ２，４５６はＫＢ０を選択する設定とする。セレクタ１，４５５によって選択された平文入力のｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、上位ｎ／２ビットがセレクタ２，４５６によって選択されたＫＢ０と、排他的論理和演算部４５７において排他的論理和された後、データレジスタ４５４に格納される。この排他的論理和演算部４５７における排他的論理和処理は、図１９に示す構成の第１ラウンドの前の入力データの上位ｎ／２ビット（Ｐ０）とＫＢ０との排他的論理和演算処理に相当する。
【０１４７】
第１ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）４５２においてＫＡ１を生成し、セレクタ１，４５５はラウンド関数回路４５１の出力を選択し、セレクタ２，４５６は０を選択する設定とする。ラウンド関数回路４５１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）４５２からＫＡ１が入力される。この第１ラウンドにおいて、ＫＡ１を適用したラウンド関数処理が行われる。これは、図１９に示す構成の第１ラウンドの処理に相当する。
【０１４８】
第１ラウンドで、ラウンド関数回路４５１にラウンド鍵［ＫＡ１］が入力されてラウンド関数を実行した結果データはセレクタ１，４５５から出力される。セレクタ１，４５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、上位ｎ／２ビットがセレクタ２，４５６の出力と排他的論理和演算部４５７において排他的論理和される。セレクタ２，４５６の出力は０であり、セレクタ１，４５５から出力されるデータがそのままデータレジスタ４５４に格納される。
【０１４９】
第２ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）４５２においてＫＡ２を生成し、セレクタ１，４５５はラウンド関数回路４５１の出力を選択し、セレクタ２，４５６は第２鍵生成部（ＫＢｉ生成回路）４５３において生成されたＫＢ３を選択する設定とする。
【０１５０】
ラウンド関数回路４５１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）４５２において生成されたＫＡ２が入力される。第２ラウンドで、ラウンド関数回路４５１にラウンド鍵［ＫＡ２］が入力されてラウンド関数を実行した結果データはセレクタ１，４５５から出力される。セレクタ１，４５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、上位ｎ／２ビットがセレクタ２，４５６の出力と排他的論理和演算部４５７において排他的論理和される。セレクタ２，４５６の出力は第２鍵生成部（ＫＢｉ生成回路）４５３において生成されたＫＢ３であるため、セレクタ１，４５５から出力される上位ｎ／２と、ＫＢ３との排他的論理和演算結果が、データレジスタ４５４に格納されるｎビットデータの上位ｎ／２ビットとなる。データレジスタ４５４に格納されるｎビットデータの下位ｎ／２ビットは、ラウンド関数回路４５１からセレクタ１，４５５を介して出力される下位ｎ／２ビットである。
【０１５１】
これらの処理をラウンド数に応じて繰り返す。
第（ｒ−１）ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）４５２においてＫＡｒ−１を生成し、第２鍵生成部（ＫＢｉ生成回路）４５３ではＫＢｒ−２を生成する。セレクタ１，４５５はラウンド関数回路４５１の出力を選択し、セレクタ２，４５６は、第２鍵生成部（ＫＢｉ生成回路）４５３において生成されたＫＢｒ−２を選択する設定とする。
【０１５２】
ラウンド関数回路４５１にはラウンド鍵としてＫＡｒ−１が入力される。第（ｒ−１）ラウンドで、ラウンド関数回路４５１にラウンド鍵［ＫＡｒ−１］が入力されてラウンド関数を実行した結果データはセレクタ１，４５５から出力される。セレクタ１，４５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、上位ｎ／２ビットがセレクタ２，４５６の出力と排他的論理和演算部４５７において排他的論理和される。セレクタ２，４５６の出力は第２鍵生成部（ＫＢｉ生成回路）４５３において生成されたＫＢｒ−２であり、セレクタ１，４５５から出力される上位ｎ／２と、ＫＢｒ−２との排他的論理和演算結果が、データレジスタ４５４に格納されるｎビットデータの上位ｎ／２ビットとなる。データレジスタ４５４に格納されるｎビットデータの下位ｎ／２ビットは、ラウンド関数回路４５１からセレクタ１，４５５を介して出力される下位ｎ／２ビットである。この処理は、図１９に示す（ｒ−１）ラウンドの処理に相当する。
【０１５３】
最終の第ｒラウンド目には、第１鍵生成部（ＫＡｉ生成回路）４５２においてＫＡｒを生成し、第２鍵生成部（ＫＢｉ生成回路）４５３ではＫＢｒ＋１を生成する。セレクタ１，４５５はラウンド関数回路４５１の出力を選択し、セレクタ２，４５６は、第２鍵生成部（ＫＢｉ生成回路）４５３において生成されたＫＢｒ＋１を選択する設定とする。
【０１５４】
ラウンド関数回路４５１には第１鍵生成部（ＫＡｉ生成回路）４５２において生成されたラウンド鍵としてＫＡｒが入力される。第ｒラウンドで、ラウンド関数回路４５１にラウンド鍵［ＫＡｒ］が入力されてラウンド関数を実行した結果データはセレクタ１，４５５から出力される。セレクタ１，４５５から出力されるｎビットは、上位ｎ／２ビットと下位ｎ／２ビットに分割され、上位ｎ／２ビットがセレクタ２，４５６の出力と排他的論理和演算部４５７において排他的論理和される。セレクタ２，４５６の出力はＫＢｒ＋１であり、ラウンド関数回路４５１の出力の上位ｎ／２ビットと、ＫＢｒ＋１との排他的論理和結果がデータレジスタ４５４に格納される。データレジスタ４５４に格納されるｎビットデータの下位ｎ／２ビットは、ラウンド関数回路４５１からセレクタ１，４５５を介して出力される下位ｎ／２ビットである。この処理は、図１９に示すｒラウンド目の出力とＫＢｒ＋１との排他的論理和処理を実行する構成に相当する。
【０１５５】
以上の処理により、データレジスタ４５４には、
暗号文Ｃ＝Ｃ０｜Ｃ１が格納される。
図１９に示す暗号化構成の処理を実行する回路として構成される図２０に示す回路構成は、先に説明した図７の暗号化構成に対応する図１１に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０１５６】
図２０に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第１鍵生成部（ＫＡｉ生成回路）４５２は、第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成する。
ラウンド関数実行部としてのラウンド関数回路４５１は、ラウンド１〜ｒの各ラウンド関数に、第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行する。
第２鍵生成部（ＫＢｉ生成回路）４５３は、第２中間鍵ＫＢに基づいて、ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成する。
排他的論理和演算部４５７は、入力データ、またはラウンド関数実行部としてのラウンド関数回路４５１からの出力データの構成データと、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉとの排他的論理和演算を実行する。
このような処理構成となる。
【０１５７】
なお、排他的論理和演算部４５７は、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行する。具体的には、４つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、４連続ラウンドｐ〜ｐ＋３に対して、
（ａ）ｐラウンドにラウンド鍵ＫＡｐを入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２（ＥＸＯＲ）ＫＢｐ＋２］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３（ＥＸＯＲ）ＫＢｐ＋３］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理と等価な処理になるように鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行する。なお、ｐ＋４ラウンド以降も上記のｐ〜ｐ＋３ラウンドと同様、ＫＡｉを連続２ラウンド、ＫＡｉ（ＥＸＯＲ）ＫＢｉを連続２ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【０１５８】
このように図１９に示す暗号化構成の処理を実行する図２０に示す回路構成は、先に説明した図７の暗号化構成に対応する図１１に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０１５９】
（３）実施例３：４系列Ｆｅｉｓｔｅｌ構造における第１適用例
次に、実施例３として、４系列Ｆｅｉｓｔｅｌ構造における第１の適用例について説明する。すなわち、先に図８を参照して説明したｎビットの入力平文Ｐを上位〜下位ｎ／４ビットずつの４系列に分割して処理を行う４系列のＦｅｉｓｔｅｌ構造のデータ暗号化部に対応する簡略化回路構成である。なお、図８に示す４系列型の従来の回路構成は図１２に示す回路構成である。
【０１６０】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図２４に示す回路構成となるが、この図２４に示す回路構成の説明の前に、図２１〜図２３を参照して、回路の簡略化を実現するための理論的な説明を行う。
【０１６１】
図２１は、先に図１２を参照して説明した回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。先に説明したように４系列のＦｅｉｓｔｅｌ構造のデータ暗号化部では、各ラウンドにおいて２つのラウンド関数が実行される。各ラウンドにおける２つのラウンド関数では、ｎ／２ビットのラウンド鍵ＲＫ１を１／２に分割したｎ／４ビットのラウンド鍵ＲＫ１［０］、ＲＫ１［１］を生成して各ラウンド関数に入力する。同様に、ｎ／２ビットの初期鍵ＩＫについても１／２に分割したｎ／４ビットのＩＫ［０］、ＩＫ［１］を４系列中の２つの系列に入力し、ｎ／２ビットの最終鍵ＦＫについても、１／２に分割したｎ／４ビットのＦＫ［０］、ＦＫ［１］を４系列中の２つの系列に入力する構成としている。
【０１６２】
図２１に示すように、第２ラウンド〜第５ラウンドのラウンド関数のＦ関数５０２〜５０５，５１２〜５１５では、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２［０］｜ＫＡ２［１］
第３ラウンド：ＲＫ３＝ＫＡ３［０］（ＥＸＯＲ）ＫＢ３［０］｜ＫＡ３［１］（ＥＸＯＲ）ＫＢ３［１］
第４ラウンド：ＲＫ４＝ＫＡ４［０］（ＥＸＯＲ）ＫＢ４［０］｜ＫＡ４［１］（ＥＸＯＲ）ＫＢ４［１］
第５ラウンド：ＲＫ５＝ＫＡ５［０］｜ＫＡ５［１］
【０１６３】
図１２に示す回路構成では、これらのラウンド鍵を各ラウンドにおいてラウンド関数回路に入力するため、セレクタ２，２１２と、排他的論理和演算部２１５を用いて、各ラウンド鍵の生成を行っている。
【０１６４】
例えば、図２１に示す構成における第３、４ラウンドに示す排他的論理和演算部５２１〜５２４が、図１２に示す排他的論理和演算部２１５に相当する。第２、第５ラウンドのように、第２中間鍵ベースの鍵ＫＢｉは使用されないラウンドでは、図１２のセレクタ２，２１２の出力が０に設定され、図１２に示す排他的論理和演算部２１５は、第１中間鍵ベースの鍵ＫＡｉを変更することなく出力することになる。
【０１６５】
図２２は、本発明に従った図２４に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。第２ラウンド〜第５ラウンドのラウンド関数のＦ関数５５２〜５５５，５６２〜５６５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２［０］｜ＫＡ２［１］
第３ラウンド：ＲＫ３＝ＫＡ３［０］｜ＫＡ３［１］
第４ラウンド：ＲＫ４＝ＫＡ４［０］｜ＫＡ４［１］
第５ラウンド：ＲＫ５＝ＫＡ５［０］｜ＫＡ５［１］
【０１６６】
さらに、図２２に示す構成では、各ラウンドに入力するデータのｎビット中、各ラウンドのＦ関数出力側の排他的論理和演算部の前段に排他的論理和部５７２〜５７５，５８２〜５８５が設定され、各ｎ／４ビットと、第２中間鍵ＫＢベースのｎ／４ビット鍵ＫＢｉ［０］，ＫＢｉ［１］との排他的論理和演算を実行する構成となっている。
【０１６７】
第２ラウンドでは、
Ｆ関数５５２の出力に対する排他的論理和演算処理の前の排他的論理和部５７２において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［０］との排他的論理和演算、
Ｆ関数５６２の出力に対する排他的論理和演算処理の前の排他的論理和部５８２において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［１］との排他的論理和演算を実行する構成となっている。
【０１６８】
第３ラウンドでは、
Ｆ関数５５３の出力に対する排他的論理和演算処理の前の排他的論理和部５７３において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ４［０］との排他的論理和演算、
Ｆ関数５６３の出力に対する排他的論理和演算処理の前の排他的論理和部５８３において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ４［１］との排他的論理和演算を実行する構成となっている。
【０１６９】
第４ラウンドでは、
Ｆ関数５５４の出力に対する排他的論理和演算処理の前の排他的論理和部５７４において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［１］との排他的論理和演算、
Ｆ関数５６４の出力に対する排他的論理和演算処理の前の排他的論理和部５８４において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［０］との排他的論理和演算を実行する構成となっている。
【０１７０】
第５ラウンドでは、
Ｆ関数５５５の出力に対する排他的論理和演算処理の前の排他的論理和部５７５において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ４［１］との排他的論理和演算、
Ｆ関数５６５の出力に対する排他的論理和演算処理の前の排他的論理和部５８５において、前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ４［０］との排他的論理和演算を実行する構成となっている。
【０１７１】
すなわち、第２ラウンドの開始前に、１ラウンド目のラウンド関数の出力データの（ｎ／４＋１）ビット目からｎ／２ビット目までとＫＢ３［０］を排他的論理和し、同様に１ラウンド目のラウンド関数の出力データの（３ｎ／４＋１）ビット目からｎビット目までとＫＢ３［１］を排他的論理和する。
また、第３ラウンドの開始前に、２ラウンド目のラウンド関数の出力データの（ｎ／４＋１）ビット目からｎ／２ビット目までとＫＢ４［０］を排他的論理和し、同様に２ラウンド目のラウンド関数の出力データの（３ｎ／４＋１）ビット目からｎビット目までとＫＢ４［１］を排他的論理和する。
【０１７２】
また、第４ラウンドの開始前に、３ラウンド目のラウンド関数の出力データの（ｎ／４＋１）ビット目からｎ／２ビット目までとＫＢ３［１］を排他的論理和し、同様に３ラウンド目のラウンド関数の出力データの（３ｎ／４＋１）ビット目からｎビット目までとＫＢ３［０］を排他的論理和する。
また、第５ラウンドの開始前に、４ラウンド目のラウンド関数の出力データの（ｎ／４＋１）ビット目からｎ／２ビット目までとＫＢ４［１］を排他的論理和し、同様に４ラウンド目のラウンド関数の出力データの（３ｎ／４＋１）ビット目からｎビット目までとＫＢ４［０］を排他的論理和する。
【０１７３】
この図２２の構成における第３ラウンドの、
Ｆ関数５５３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'［０］）、
Ｆ関数５６３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'［１］）、
と、
図２１における第３ラウンドの
Ｆ関数５０３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ［０］）、
Ｆ関数５１３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ［１］）、
を比較してみる。
【０１７４】
図２１における第３ラウンドのＦ関数５０３，５１３の非線形変換部（Ｓボックス）に対する入力データ：Ｔ［０］，Ｔ［１］は、図２１に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，ＫＡ３［０］，ＫＡ３［１］，ＫＢ３［０］，ＫＢ３［１］による下記の演算結果として表すことができる。
Ｔ［０］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）ＫＡ３［０］（ＥＸＯＲ）ＫＢ３［０］
Ｔ［１］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）ＫＡ３［１］（ＥＸＯＲ）ＫＢ３［１］
【０１７５】
また、図２２における第３ラウンドのＦ関数５５３，５６３の非線形変換部（Ｓボックス）に対する入力データ：Ｔ'［０］，Ｔ'［１］は、図２２に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，ＫＡ３［０］，ＫＡ３［１］，ＫＢ３［０］，ＫＢ３［１］による下記の演算結果として表すことができる。なおデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，ＫＡ３［０］，ＫＡ３［１］，ＫＢ３［０］，ＫＢ３［１］は、図２１に示すデータと同一である。
Ｔ'［０］＝Ｐ［０］（ＥＸＯＲ）ＫＢ３［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）ＫＡ３［０］
Ｔ'［１］＝Ｐ［１］（ＥＸＯＲ）ＫＢ３［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）ＫＡ３［１］
これらのＴ'［０］，Ｔ'［１］の算出式は、上記Ｔ［０］，Ｔ［１］の算出式と等価である。すなわち、
Ｔ'［０］＝Ｔ［０］
Ｔ'［１］＝Ｔ［１］
が成立し、図２２の構成における第３ラウンドのＦ関数の非線形変換部に対する入力は、図２１の構成における第３ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０１７６】
このように、第３ラウンドにおける２つのＦ関数に入力するラウンド鍵を、
図２１の構成では、
ＫＡ３［０］（ＥＸＯＲ）ＫＢ３［０］、およびＫＡ３［１］（ＥＸＯＲ）ＫＢ３［１］
としているが、
図２２に示すように、第３ラウンドにおけるＦ関数に入力するラウンド鍵を、
ＫＡ３［０］とＫＡ３［１］、
として、第３ラウンドのＦ関数に対する入力データの生成段階でＫＢ３［０］，ＫＢ３［１］を適用した排他的論理和演算を実行して、そのデータを第３ラウンドのＦ関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。このことは、第４ラウンドについても同様である。
【０１７７】
次に、図２１と図２２の構成における第５ラウンドの処理について比較する。
図２１において、第５ラウンドのラウンド関数のＦ関数５０５，５１５には、
第５ラウンド：ＫＡ５［０］，ＫＡ５［１］，
これらの第１中間鍵ＫＡベースの鍵データＫＡｉが入力される。すなわち、第５ラウンドでは第２中間鍵ＫＢベースの鍵データＫＢｉは利用されない。
【０１７８】
図２１に示す第５ラウンドの２つのＦ関数５０５，５１５の非線形変換部（Ｓボックス）への入力データＵ［０］，Ｕ［１］は、図２１に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，Ｒ［０］，Ｒ［１］，ＫＡ５［０］，ＫＡ５［１］による下記の演算結果として表すことができる。
Ｕ［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
【０１７９】
また、図２２における第５ラウンドのＦ関数５５５，５６５の非線形変換部（Ｓボックス）に対する入力データ：Ｕ'［０］，Ｕ'［１］は、図２２に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，Ｒ［０］，Ｒ［１］，ＫＡ５［０］，ＫＡ５［１］，ＫＢ３［０］，ＫＢ３［１］による下記の演算結果として表すことができる。なおこれらのデータは、図２１に示すデータと同一である。
Ｕ'［０］＝Ｐ［１］（ＥＸＯＲ）ＫＢ３［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）ＫＢ３［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ'［１］＝Ｐ［０］（ＥＸＯＲ）ＫＢ３［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）ＫＢ３［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
このＵ'［０］，Ｕ'［１］の算出式において、同一データである鍵ＫＢ３［１］またはＫＢ３［０］について２回繰り返して排他的論理和演算が実行されている。同じデータを２回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【０１８０】
従って、上記式は、上記式から鍵ＫＢ３［１］またはＫＢ３［０］についての２回の排他的論理和演算を省略した下式、すなわち、
Ｕ'［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ'［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
と同じ結果が得られる。
【０１８１】
上記式は、前述の図２１を参照して説明した図２１に示す第５ラウンドのＦ関数５０５，５１５の非線形演算への入力データＵ［０］，Ｕ［１］の算出式、
Ｕ［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
上記の算出式と同じになる。すなわち、
Ｕ'［０］＝Ｕ［０］
Ｕ'［１］＝Ｕ［１］
が成立し、図２２の構成における第５ラウンドのＦ関数の非線形変換部に対する入力は、図２１の構成における第５ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０１８２】
このように、従来型の図２１に示す構成における第２中間鍵ＫＢベースの鍵データＫＢｉが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第１中間鍵ＫＡベースの鍵ＫＡｉのままに設定して、Ｆ関数に対する非入力データ側において、第２中間鍵ベースＫＢの同一の鍵ＫＢｉを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【０１８３】
このような設定は、すべてのラウンドにおいて実現可能である。図２２に示すようにラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみとすることができる。具体的には、図２３に示すような暗号処理構成が実現される。この図２３に示す暗号処理構成は、先に説明した図８に示す暗号処理構成と等価な構成を持つ。すなわち図８に示す暗号処理構成を適用して平文Ｐを入力して得られる暗号文Ｃと、図２３に示す暗号処理構成を適用して同じ平文Ｐを入力して得られる暗号文Ｃとは同一となり、同じ暗号処理が行われることになる。
【０１８４】
このように、ラウンド関数に対するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみによって構成されるＫＡｉ［０］，ＫＡｉ［１］として、ラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉによって構成されるＫＢｉ［０］，ＫＢｉ［１］の排他的論理和演算を行う構成とすることで、図２４に示す簡略化した回路構成を用いた暗号処理が可能となる。
【０１８５】
すなわち、図２４は、図２３に示す４系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図１２を参照して説明した図８に示す従来型の４系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【０１８６】
図２４に示す暗号処理回路は、１つのラウンド関数回路６０１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）６０２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）６０３と、入れ替え回路６０４と、ｎビットデータレジスタ６０５と、セレクタ１〜２，６１１〜６１２と、排他的論理和演算部６２１，６２２を有する。入れ替え回路６０４はｎ／２ビットの入力の上位ｎ／４ビットと下位ｎ／４ビットを入れ替える回路である。第２鍵生成部（ＫＢｉ生成回路）６０３の生成する鍵ＫＢｉ［０］，ＫＢｉ［１］を入れ替えるために利用される。
【０１８７】
まず、暗号化開始時には、第２鍵生成部（ＫＢｉ生成回路）６０３において、ＫＢ０を生成し、セレクタ１，６１１は平文入力を、セレクタ２，６１２はＫＢ０を選択する設定とする。セレクタ１，６１１によって選択された平文入力のｎビットは、上位〜下位ｎ／４ビット単位で４分割される。
【０１８８】
ｎビット平文データの（ｎ／４＋１）ビット目からｎ／２ビット目までがセレクタ２，６１２によって選択されたＫＢ０の上位ｎ／４ビットであるＫＢ０［０］と、排他的論理和演算部６２１において排他的論理和され、（３ｎ／４＋１）ビット目からｎビット目までがセレクタ２，６１２によって選択されたＫＢ０の下位ｎ／４ビットであるＫＢ０［１］と、排他的論理和演算部６２２において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ６０５に格納される。この時点の排他的論理和演算部６２１，６２２における排他的論理和処理は、図２３に示す構成の第１ラウンドの前の入力データＰ１とＫＢ０［０］との排他的論理和演算処理、およびＰ３とＫＢ０［１］との排他的論理和演算処理に相当する。
【０１８９】
第１ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）６０２においてＫＡ１を生成し、第２鍵生成部（ＫＡｉ生成回路）６０３においてＫＢ３を生成し、セレクタ１，６１１はラウンド関数回路６０１の出力を選択し、セレクタ２，６１２はＫＢ３を選択する設定とする。ラウンド関数回路６０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）６０２からＫＡ１が入力される。この第１ラウンドにおいて、ＫＡ１を適用したラウンド関数処理が行われる。これは、図２３に示す構成の第１ラウンドの処理に相当する。なお、ラウンド関数回路６０１では、図２３に示すように、２つのＦ関数の処理、すなわちＫＡ１［０］とＫＡ１［１］を適用したＦ関数が実行される。これらのＦ関数の処理は、並列処理またはシーケンシャル処理のいずれでもよい。なお、以下の説明において、ラウンド鍵［ＫＡｉ］を入力したラウンド関数の処理は、いずれもＫＡｉ［０］とＫＡｉ［１］を適用したＦ関数を実行する処理を含むものである。
【０１９０】
第１ラウンドで、ラウンド関数回路６０１にラウンド鍵［ＫＡ１］が入力されてラウンド関数を実行した結果データはセレクタ１，６１１から出力される。セレクタ１，６１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その（ｎ／４＋１）ビット目からｎ／２ビット目までがセレクタ２，６１２の出力によって選択されたＫＢ３の上位ｎ／４ビットであるＫＢ３［０］と排他的論理和演算部６２１において排他的論理和され、（３ｎ／４＋１）ビット目からｎビット目までがセレクタ２，６１２の出力によって選択されたＫＢ３の下位ｎ／４ビットであるＫＢ３［１］と排他的論理和演算部６２２において排他的論理和され、その他のセレクタ１，６１１からの出力データはそのままのデータとしてデータレジスタ６０５に格納される。この時点の排他的論理和演算部６２１，６２２における排他的論理和処理は、図２３に示す構成の第１ラウンドの出力データとＫＢ３［０］、ＫＢ３［１］との排他的論理和演算処理に相当する。
【０１９１】
第２ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）６０２においてＫＡ２を生成し、第２鍵生成部（ＫＢｉ生成回路）６０３においてＫＢ４を生成し、セレクタ１，６１１はラウンド関数回路６０１の出力を選択し、セレクタ２，６１２は第２鍵生成部（ＫＢｉ生成回路）６０３において生成されたＫＢ４を選択する設定とする。
【０１９２】
ラウンド関数回路６０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）６０２において生成されたＫＡ２が入力される。第２ラウンドで、ラウンド関数回路６０１にラウンド鍵［ＫＡ２］が入力されてラウンド関数を実行した結果データはセレクタ１，６１１から出力される。セレクタ１，６１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その（ｎ／４＋１）ビット目からｎ／２ビット目までがセレクタ２，６１２の出力によって選択されたＫＢ４の上位ｎ／４ビットであるＫＢ４［０］と排他的論理和演算部６２１において排他的論理和され、（３ｎ／４＋１）ビット目からｎビット目までがセレクタ２，６１２の出力によって選択されたＫＢ４の下位ｎ／４ビットであるＫＢ４［１］と排他的論理和演算部６２２において排他的論理和され、その他のセレクタ１，６１１からの出力データはそのままのデータとしてデータレジスタ６０５に格納される。この時点の排他的論理和演算部６２１，６２２における排他的論理和処理は、図２３に示す構成の第２ラウンドの出力データとＫＢ４［０］、ＫＢ４［１］との排他的論理和演算処理に相当する。
【０１９３】
第３ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）６０２においてＫＡ３を生成し、第２鍵生成部（ＫＢｉ生成回路）６０３においてＫＢ３を生成し、セレクタ１，６１１はラウンド関数回路６０１の出力を選択し、セレクタ２，６１２は入れ替え回路６０４の出力を選択する設定とする。入れ替え回路６０４は、第２鍵生成部（ＫＢｉ生成回路）６０３において生成されたｎ／２ビット鍵ＫＢ３の上位ｎ／４ビットと下位ｎ／４ビットの入れ替えを行う。すなわち、ＫＢ３［０］，ＫＢ３［１］は入れ替えられてＫＢ３［１］，ＫＢ３［０］としてセレクタ２，６１２から出力される。
【０１９４】
ラウンド関数回路６０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）６０２において生成されたＫＡ３が入力される。第３ラウンドで、ラウンド関数回路６０１にラウンド鍵［ＫＡ３］が入力されてラウンド関数を実行した結果データはセレクタ１，６１１から出力される。セレクタ１，６１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その（ｎ／４＋１）ビット目からｎ／２ビット目までがセレクタ２，６１２の出力によって選択されたＫＢ３の入れ替えデータの上位ｎ／４ビットであるＫＢ３［１］と排他的論理和演算部６２１において排他的論理和され、（３ｎ／４＋１）ビット目からｎビット目までがセレクタ２，６１２の出力によって選択されたＫＢ３［０］と排他的論理和演算部６２２において排他的論理和され、その他のセレクタ１，６１１からの出力データはそのままのデータとしてデータレジスタ６０５に格納される。この時点の排他的論理和演算部６２１，６２２における排他的論理和処理は、図２３に示す構成の第３ラウンドの出力データとＫＢ３［１］、ＫＢ３［０］との排他的論理和演算処理に相当する。
【０１９５】
これらの処理をラウンド数に応じて繰り返す。
第（ｒ−１）ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）６０２においてＫＡｒ−１を生成し、セレクタ１，６１１はラウンド関数回路６０１の出力を選択し、セレクタ２，６１２は０を選択する設定とする。
【０１９６】
ラウンド関数回路６０１にはラウンド鍵としてＫＡｒ−１が入力される。第（ｒ−１）ラウンドで、ラウンド関数回路６０１にラウンド鍵［ＫＡｒ−１］が入力されてラウンド関数を実行した結果データはセレクタ１，６１１から出力される。セレクタ１，６１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その（ｎ／４＋１）ビット目からｎ／２ビット目までがセレクタ２，６１２の出力によって選択された［０］と排他的論理和演算部６２１において排他的論理和され、（３ｎ／４＋１）ビット目からｎビット目までがセレクタ２，６１２の出力によって選択された［０］と排他的論理和演算部６２２において排他的論理和される。結果として、セレクタ１，６１１からの出力データはそのままのデータとしてデータレジスタ６０５に格納される。この処理は、図２３に示す構成の第（ｒ−１）ラウンドの出力処理に相当する。
【０１９７】
最終の第ｒラウンド目には、第１鍵生成部（ＫＡｉ生成回路）６０２においてＫＡｒを生成し、第２鍵生成部（ＫＢｉ生成回路）６０３はＫＢｒ＋１を生成し、セレクタ１，６１１はラウンド関数回路６０１の出力を選択し、セレクタ２，６１２は、第２鍵生成部（ＫＢｉ生成回路）６０３において生成されたＫＢｒ＋１を選択する設定とする。
【０１９８】
ラウンド関数回路６０１には第１鍵生成部（ＫＡｉ生成回路）６０２において生成されたラウンド鍵としてＫＡｒが入力される。第ｒラウンドで、ラウンド関数回路６０１にラウンド鍵［ＫＡｒ］が入力されてラウンド関数を実行した結果データはセレクタ１，６１１から出力される。セレクタ１，６１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その（ｎ／４＋１）ビット目からｎ／２ビット目までがセレクタ２，６１２の出力によって選択されたＫＢｒ＋１の上位ｎ／４ビットであるＫＢｒ＋１［０］と排他的論理和演算部６２１において排他的論理和され、（３ｎ／４＋１）ビット目からｎビット目までがセレクタ２，６１２の出力によって選択されたＫＢｒ＋１の下位ｎ／４ビットであるＫＢｒ＋１［１］と排他的論理和演算部６２２において排他的論理和され、その他のセレクタ１，６１１からの出力データはそのままのデータとしてデータレジスタ６０５に格納される。この時点の排他的論理和演算部６２１，６２２における排他的論理和処理は、図２３に示す構成の第ｒラウンドの出力データとＫＢｒ＋１［０］、ＫＢｒ＋１［１］との排他的論理和演算処理に相当する。
【０１９９】
以上の処理により、データレジスタ６０５には、
暗号文Ｃ＝Ｃ０｜Ｃ１｜Ｃ２｜Ｃ３が格納される。
図２３に示す暗号化構成の処理を実行する回路として構成される図２４に示す回路構成は、先に説明した図８の暗号化構成に対応する図１２に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０２００】
図２４に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第１鍵生成部（ＫＡｉ生成回路）６０２は、第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成する。
ラウンド関数実行部としてのラウンド関数回路６０１は、ラウンド１〜ｒの各ラウンド関数に、第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行する。なお、各ラウンドでは、ＫＡｉ［０］とＫＡｉ［１］を適用したＦ関数を実行する。
第２鍵生成部（ＫＢｉ生成回路）６０３は、第２中間鍵ＫＢに基づいて、ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成する。
入れ替え回路６０４は、第２鍵生成部（ＫＢｉ生成回路）６０３の生成するｎ／２ビット鍵ＫＢｉの上位下位ｎ／４ビットＫＢｉ［０］，ＫＢｉ［１］を入れ替える。
排他的論理和演算部６２１，６２２は、入力データ、またはラウンド関数実行部としてのラウンド関数回路６０１からの出力データの構成データと、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉの構成データＫＢｉ［０］とＫＢｉ［１］との排他的論理和演算を実行する。
このような処理構成となる。
【０２０１】
なお、排他的論理和演算部６２１，６２２は、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵、具体的には鍵ＫＢｉの構成データＫＢｉ［０］とＫＢｉ［１］を異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行する。具体的には、４つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、４連続ラウンドｐ〜ｐ＋３に対して、
（ａ）ｐラウンドにラウンド鍵ＫＡｐを入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２（ＥＸＯＲ）ＫＢｐ＋２］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３（ＥＸＯＲ）ＫＢｐ＋３］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理と等価な処理になるように鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行する。なお、ｐ＋４ラウンド以降も上記のｐ〜ｐ＋３ラウンドと同様、ＫＡｉを連続２ラウンド、ＫＡｉ（ＥＸＯＲ）ＫＢｉを連続２ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【０２０２】
なお、各Ｆ関数に対する入力する鍵としては、
（ａ）ｐラウンドのＦ関数に鍵ＫＡｐ［０］とＫＡｐ［１］を入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１［０］とＫＡｐ＋１［１］を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２［０］（ＥＸＯＲ）ＫＢｐ＋２［０］］と［ＫＡｐ＋２［１］（ＥＸＯＲ）ＫＢｐ＋２［１］］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３［０］（ＥＸＯＲ）ＫＢｐ＋３［０］］と［ＫＡｐ＋３［１］（ＥＸＯＲ）ＫＢｐ＋３［１］］を入力、
このような入力設定と等価となるように排他的論理和演算部６２１，６２２において、第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ［０］とＫＢｉ［１］を適用した排他的論理和演算を実行する。
【０２０３】
このように図２３に示す暗号化構成の処理を実行する図２４に示す回路構成は、先に説明した図８の暗号化構成に対応する図１２に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０２０４】
（４）実施例４：４系列Ｆｅｉｓｔｅｌ構造における第２適用例
次に、実施例４として、４系列Ｆｅｉｓｔｅｌ構造における第２の適用例について説明する。すなわち、先に図９を参照して説明したｎビットの入力平文Ｐを上位〜下位ｎ／４ビットずつの４系列に分割して処理を行う４系列のＦｅｉｓｔｅｌ構造のデータ暗号化部に対応する簡略化回路構成である。なお、図９に示す４系列型の従来の回路構成は図１３に示す回路構成である。
【０２０５】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図２７に示す回路構成となるが、この図２７に示す回路構成の説明の前に、図２５〜図２６を参照して、回路の簡略化を実現するための理論的な説明を行う。
【０２０６】
図２５は、本発明に従った図２７に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。第２ラウンド〜第５ラウンドのラウンド関数のＦ関数７５２〜７５５，７６２〜７６５には、以下のラウンド鍵が入力される。
第２ラウンド：ＲＫ２＝ＫＡ２［０］｜ＫＡ２［１］
第３ラウンド：ＲＫ３＝ＫＡ３［０］｜ＫＡ３［１］
第４ラウンド：ＲＫ４＝ＫＡ４［０］｜ＫＡ４［１］
第５ラウンド：ＲＫ５＝ＫＡ５［０］｜ＫＡ５［１］
【０２０７】
さらに、図２５に示す構成では、第２ラウンドを除き各ラウンドに入力するデータのｎビット中、各ラウンドのＦ関数入力側の入力データ部の前段に排他的論理和部７７３〜７７５，７８２〜７８５が設定され、各ｎ／４ビットと、第２中間鍵ＫＢベースのｎ／４ビット鍵ＫＢｉ［０］，ＫＢｉ［１］との排他的論理和演算を実行する構成となっている。
【０２０８】
第３ラウンドでは、
Ｆ関数７５３に入力する前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［０］との排他的論理和演算、
Ｆ関数７６３に入力する前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［１］との排他的論理和演算を実行する構成となっている。
【０２０９】
第４ラウンドでは、
Ｆ関数７５４に入力する前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ４［０］との排他的論理和演算、
Ｆ関数７６４に入力する前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ４［１］との排他的論理和演算を実行する構成となっている。
【０２１０】
第５ラウンドでは、
Ｆ関数７５５に入力する前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［１］との排他的論理和演算、
Ｆ関数７６５に入力する前ラウンドからのｎ／４ビッデータとｎ／４ビット鍵ＫＢ３［０］との排他的論理和演算を実行する構成となっている。
【０２１１】
すなわち、第３ラウンドの開始前に、２ラウンド目のラウンド関数の出力データの１ビット目からｎ／４ビット目までとＫＢ３［０］を排他的論理和し、同様に２ラウンド目のラウンド関数の出力データの（ｎ／２＋１）ビット目から３ｎ／４ビット目までとＫＢ３［１］を排他的論理和する。
【０２１２】
さらに、第４ラウンドの開始前に、３ラウンド目のラウンド関数の出力データの１ビット目からｎ／４ビット目までとＫＢ４［０］を排他的論理和し、同様に３ラウンド目のラウンド関数の出力データの（ｎ／２＋１）ビット目から３ｎ／４ビット目までとＫＢ４［１］を排他的論理和する。
【０２１３】
さらに、第５ラウンドの開始前に、４ラウンド目のラウンド関数の出力データの１ビット目からｎ／４ビット目までとＫＢ３［１］を排他的論理和し、同様に４ラウンド目のラウンド関数の出力データの（ｎ／２＋１）ビット目から３ｎ／４ビット目までとＫＢ３［０］を排他的論理和する。
【０２１４】
なお、図９に示すＦｅｉｓｔｅｌ構造と図８に示すＦｅｉｓｔｅｌ構造とは、初期鍵と最終鍵の入力位置が異なるのみであり、１〜ｒラウンドのラウンド演算の処理構成は同一であるので、この図２５の構成における各ラウンドのＦ関数に対する入力と、図８、図９のＦｅｉｓｔｅｌ構造に対応する先に説明した図２１に示す暗号処理構成におけるＦ関数に対する入力を比較する。図２１に示す暗号処理構成は、先に図９に対応する回路構成として説明した図１３の回路による暗号処理構成に相当する。
【０２１５】
この図２５の構成における第３ラウンドの、
Ｆ関数７５３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'［０］）、
Ｆ関数７６３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ'［１］）、
と、
図２１における第３ラウンドの
Ｆ関数５０３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ［０］）、
Ｆ関数５１３内の非線形変換部（Ｓボックス）に対する入力データ（Ｔ［１］）、
を比較してみる。
【０２１６】
図２１における第３ラウンドのＦ関数５０３，５１３の非線形変換部（Ｓボックス）に対する入力データ：Ｔ［０］，Ｔ［１］は、先に説明したように、図２１に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，ＫＡ３［０］，ＫＡ３［１］，ＫＢ３［０］，ＫＢ３［１］による下記の演算結果として表すことができる。
Ｔ［０］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）ＫＡ３［０］（ＥＸＯＲ）ＫＢ３［０］
Ｔ［１］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）ＫＡ３［１］（ＥＸＯＲ）ＫＢ３［１］
【０２１７】
また、図２５における第３ラウンドのＦ関数７５３，７６３の非線形変換部（Ｓボックス）に対する入力データ：Ｔ'［０］，Ｔ'［１］は、図２５に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，ＫＡ３［０］，ＫＡ３［１］，ＫＢ３［０］，ＫＢ３［１］による下記の演算結果として表すことができる。なおデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，ＫＡ３［０］，ＫＡ３［１］，ＫＢ３［０］，ＫＢ３［１］は、図２１に示すデータと同一である。
Ｔ'［０］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）ＫＢ３［０］（ＥＸＯＲ）ＫＡ３［０］
Ｔ'［１］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）ＫＢ３［１］（ＥＸＯＲ）ＫＡ３［１］
これらのＴ'［０］，Ｔ'［１］の算出式は、上記Ｔ［０］，Ｔ［１］の算出式と等価である。すなわち、
Ｔ'［０］＝Ｔ［０］
Ｔ'［１］＝Ｔ［１］
が成立し、図２５の構成における第３ラウンドのＦ関数の非線形変換部に対する入力は、図２１の構成における第３ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０２１８】
このように、第３ラウンドにおける２つのＦ関数に入力するラウンド鍵を、
図２１の構成では、
ＫＡ３［０］（ＥＸＯＲ）ＫＢ３［０］、およびＫＡ３［１］（ＥＸＯＲ）ＫＢ３［１］
としているが、
図２５に示すように、第３ラウンドにおけるＦ関数に入力するラウンド鍵を、
ＫＡ３［０］とＫＡ３［１］、
として、第３ラウンドのＦ関数に対する入力データの生成段階でＫＢ３［０］，ＫＢ３［１］を適用した排他的論理和演算を実行して、そのデータを第３ラウンドのＦ関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。このことは、第４ラウンドについても同様である。
【０２１９】
次に、図２１と図２５の構成における第５ラウンドの処理について比較する。
図２１において、第５ラウンドのラウンド関数のＦ関数５０５，５１５には、
第５ラウンド：ＫＡ５［０］，ＫＡ５［１］，
これらの第１中間鍵ＫＡベースの鍵データＫＡｉが入力される。すなわち、第５ラウンドでは第２中間鍵ＫＢベースの鍵データＫＢｉは利用されない。
【０２２０】
図２１に示す第５ラウンドの２つのＦ関数５０５，５１５の非線形変換部（Ｓボックス）への入力データＵ［０］，Ｕ［１］は、先に説明したように、図２１に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，Ｒ［０］，Ｒ［１］，ＫＡ５［０］，ＫＡ５［１］による下記の演算結果として表すことができる。
Ｕ［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
【０２２１】
また、図２５における第５ラウンドのＦ関数７５５，７６５の非線形変換部（Ｓボックス）に対する入力データ：Ｕ'［０］，Ｕ'［１］は、図２５に示すデータＰ［０］，Ｐ［１］，Ｑ［０］，Ｑ［１］，Ｒ［０］，Ｒ［１］，ＫＡ５［０］，ＫＡ５［１］，ＫＢ３［０］，ＫＢ３［１］による下記の演算結果として表すことができる。なおこれらのデータは、図２１に示すデータと同一である。
Ｕ'［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）ＫＢ３［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＢ３［１］（ＥＸＯＲ）ＫＡ５［０］
Ｕ'［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）ＫＢ３［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＢ３［０］（ＥＸＯＲ）ＫＡ５［１］
このＵ'［０］，Ｕ'［１］の算出式において、同一データである鍵ＫＢ３［１］またはＫＢ３［０］について２回繰り返して排他的論理和演算が実行されている。同じデータを２回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【０２２２】
従って、上記式は、上記式から鍵ＫＢ３［１］またはＫＢ３［０］についての２回の排他的論理和演算を省略した下式、すなわち、
Ｕ'［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ'［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
と同じ結果が得られる。
【０２２３】
上記式は、前述の図２１を参照して説明した図２１に示す第５ラウンドのＦ関数５０５，５１５の非線形演算への入力データＵ［０］，Ｕ［１］の算出式、
Ｕ［０］＝Ｐ［１］（ＥＸＯＲ）Ｑ［１］（ＥＸＯＲ）Ｒ［０］（ＥＸＯＲ）ＫＡ５［０］
Ｕ［１］＝Ｐ［０］（ＥＸＯＲ）Ｑ［０］（ＥＸＯＲ）Ｒ［１］（ＥＸＯＲ）ＫＡ５［１］
上記の算出式と同じになる。すなわち、
Ｕ'［０］＝Ｕ［０］
Ｕ'［１］＝Ｕ［１］
が成立し、図２５の構成における第５ラウンドのＦ関数の非線形変換部に対する入力は、図２１の構成における第５ラウンドのＦ関数の非線形変換部に対する入力と同一となる。
【０２２４】
このように、従来型の図２１に示す構成における第２中間鍵ＫＢベースの鍵データＫＢｉが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第１中間鍵ＫＡベースの鍵ＫＡｉのままに設定して、Ｆ関数に対する入力データ側において、第２中間鍵ベースＫＢの同一の鍵ＫＢｉを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【０２２５】
このような設定は、すべてのラウンドにおいて実現可能である。図２５に示すようにラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみとすることができる。具体的には、図２６に示すような暗号処理構成が実現される。この図２６に示す暗号処理構成は、先に説明した図９に示す暗号処理構成と等価な構成を持つ。すなわち図９に示す暗号処理構成を適用して平文Ｐを入力して得られる暗号文Ｃと、図２６に示す暗号処理構成を適用して同じ平文Ｐを入力して得られる暗号文Ｃとは同一となり、同じ暗号処理が行われることになる。
【０２２６】
このように、ラウンド関数に対するラウンド鍵を第１中間鍵ＫＡベースの鍵ＫＡｉのみによって構成されるＫＡｉ［０］，ＫＡｉ［１］として、ラウンド関数に対する入力データに対して第２中間鍵ＫＢベースの鍵ＫＢｉによって構成されるＫＢｉ［０］，ＫＢｉ［１］の排他的論理和演算を行う構成とすることで、図２７に示す簡略化した回路構成を用いた暗号処理が可能となる。
【０２２７】
すなわち、図２７は、図２６に示す４系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図１３を参照して説明した図９に示す従来型の４系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【０２２８】
図２７に示す暗号処理回路は、１つのラウンド関数回路８０１と、秘密鍵Ｋに基づいて例えば非線形変換によって生成される第１中間鍵ＫＡから、第１中間鍵ＫＡベースのｎ／２ビット鍵｛ＫＡ１，ＫＡ２，…，ＫＡｒ−１，ＫＡｒ｝を生成する第１鍵生成部（ＫＡｉ生成回路）８０２と、秘密鍵Ｋに基づいて例えば異なる非線形変換によって生成される第２中間鍵ＫＢから、第２中間鍵ＫＢベースのｎ／２ビット鍵｛ＫＢ３，ＫＢ４，…，ＫＢｒ−３，ＫＢｒ−２｝を生成する第２鍵生成部（ＫＢｉ生成回路）８０３と、入れ替え回路８０４と、ｎビットデータレジスタ８０５と、セレクタ１〜２，８１１〜８１２と、排他的論理和演算部８２１，８２２を有する。入れ替え回路８０４はｎ／２ビットの入力の上位ｎ／４ビットと下位ｎ／４ビットを入れ替える回路である。第２鍵生成部（ＫＢｉ生成回路）８０３の生成する鍵ＫＢｉ［０］，ＫＢｉ［１］を入れ替えるために利用される。
【０２２９】
まず、暗号化開始時には、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢ０を生成し、セレクタ１，８１１は平文入力を、セレクタ２，８１２はＫＢ０を選択する設定とする。セレクタ１，８１１によって選択された平文入力のｎビットは、上位〜下位ｎ／４ビット単位で４分割される。
【０２３０】
ｎビット平文データの１ビット目からｎ／４ビット目までがセレクタ２，８１２によって選択されたＫＢ０の上位ｎ／４ビットであるＫＢ０［０］と、排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２によって選択されたＫＢ０の下位ｎ／４ビットであるＫＢ０［１］と、排他的論理和演算部８２２において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第１ラウンドの前の入力データＰ０とＫＢ０［０］との排他的論理和演算処理、およびＰ２とＫＢ０［１］との排他的論理和演算処理に相当する。
【０２３１】
第１ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡ１を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２は［０］を選択する設定とする。ラウンド関数回路８０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）８０２からＫＡ１が入力される。この第１ラウンドにおいて、ＫＡ１を適用したラウンド関数処理が行われる。これは、図２６に示す構成の第１ラウンドの処理に相当する。なお、ラウンド関数回路８０１では、図２６に示すように、２つのＦ関数の処理、すなわちＫＡ１［０］とＫＡ１［１］を適用したＦ関数が実行される。これらのＦ関数の処理は、並列処理またはシーケンシャル処理のいずれでもよい。なお、以下の説明において、ラウンド鍵［ＫＡｉ］を入力したラウンド関数の処理は、いずれもＫＡｉ［０］とＫＡｉ［１］を適用したＦ関数を実行する処理を含むものである。
【０２３２】
第１ラウンドで、ラウンド関数回路８０１にラウンド鍵［ＫＡ１］が入力されてラウンド関数を実行した結果データはセレクタ１，８１１から出力される。セレクタ１，８１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その１ビット目からｎ／４ビット目と、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２の出力と排他的論理和演算部８２１、排他的論理和演算部８２２において排他的論理和されるが、セレクタ２，８１２の出力は［０］であり、セレクタ１，８１１からの出力データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の処理は、図２６に示す構成の第１ラウンドの処理に相当する。
【０２３３】
第２ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡ２を生成し、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢ３を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２はＫＢ３を選択する設定とする。セレクタ１，８１１によって選択されたラウンド関数回路８０１の出力のｎビットは、上位〜下位ｎ／４ビット単位で４分割される。
【０２３４】
ラウンド関数回路８０１の出力ｎビットデータの１ビット目からｎ／４ビット目までがセレクタ２，８１２によって選択されたＫＢ３の上位ｎ／４ビットであるＫＢ３［０］と、排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２によって選択されたＫＢ３の下位ｎ／４ビットであるＫＢ３［１］と、排他的論理和演算部８２２において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第２ラウンドの出力データとＫＢ３［０］、ＫＢ３［１］との排他的論理和演算処理に相当する。
【０２３５】
第３ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡ３を生成し、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢ４を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２はＫＢ４を選択する設定とする。セレクタ１，８１１によって選択されたラウンド関数回路８０１の出力のｎビットは、上位〜下位ｎ／４ビット単位で４分割される。
【０２３６】
ラウンド関数回路８０１の出力ｎビットデータの１ビット目からｎ／４ビット目までがセレクタ２，８１２によって選択されたＫＢ４の上位ｎ／４ビットであるＫＢ４［０］と、排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２によって選択されたＫＢ４の下位ｎ／４ビットであるＫＢ４［１］と、排他的論理和演算部８２２において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第３ラウンドの出力データとＫＢ４［０］、ＫＢ４［１］との排他的論理和演算処理に相当する。
【０２３７】
第４ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡ４を生成し、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢ３を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２は入れ替え回路８０４の出力を選択する設定とする。入れ替え回路８０４は、第２鍵生成部（ＫＢｉ生成回路）８０３において生成されたｎ／２ビット鍵ＫＢ３の上位ｎ／４ビットと下位ｎ／４ビットの入れ替えを行う。すなわち、ＫＢ３［０］，ＫＢ３［１］は入れ替えられてＫＢ３［１］，ＫＢ３［０］としてセレクタ２，８１２から出力される。
【０２３８】
ラウンド関数回路８０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）８０２において生成されたＫＡ４が入力される。第４ラウンドで、ラウンド関数回路８０１にラウンド鍵［ＫＡ４］が入力されてラウンド関数を実行した結果データはセレクタ１，８１１から出力される。セレクタ１，８１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その１ビット目からｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢ３の入れ替えデータの上位ｎ／４ビットであるＫＢ３［１］と排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢ３［０］と排他的論理和演算部８２２において排他的論理和され、その他のセレクタ１，８１１からの出力データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第４ラウンドの出力データとＫＢ３［１］、ＫＢ３［０］との排他的論理和演算処理に相当する。
【０２３９】
第５ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡ５を生成し、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢ４を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２は入れ替え回路８０４の出力を選択する設定とする。入れ替え回路８０４は、第２鍵生成部（ＫＢｉ生成回路）８０３において生成されたｎ／２ビット鍵ＫＢ４の上位ｎ／４ビットと下位ｎ／４ビットの入れ替えを行う。すなわち、ＫＢ４［０］，ＫＢ４［１］は入れ替えられてＫＢ４［１］，ＫＢ４［０］としてセレクタ２，８１２から出力される。
【０２４０】
ラウンド関数回路８０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）８０２において生成されたＫＡ５が入力される。第５ラウンドで、ラウンド関数回路８０１にラウンド鍵［ＫＡ５］が入力されてラウンド関数を実行した結果データはセレクタ１，８１１から出力される。セレクタ１，８１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その１ビット目からｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢ４の入れ替えデータの上位ｎ／４ビットであるＫＢ４［１］と排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢ４［０］と排他的論理和演算部８２２において排他的論理和され、その他のセレクタ１，８１１からの出力データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第５ラウンドの出力データとＫＢ４［１］、ＫＢ４［０］との排他的論理和演算処理に相当する。
【０２４１】
上記をラウンド数に応じて繰り返す。
第（ｒ−１）ラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡｒ−１を生成し、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢｒ−２を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２は入れ替え回路８０４の出力を選択する設定とする。入れ替え回路８０４では、第２鍵生成部（ＫＢｉ生成回路）８０３において生成したｎ／２ビット鍵：ＫＢｒ−２を入力し、ＫＢｒ−２の上位ｎ／４ビットと下位ｎ／４ビットが入れ替えられ、セレクタ２，８１２は上位ｎ／４ビットがＫＢｒ−２［１］、下位ｎ／４ビットがＫＢｒ−２［０］の鍵を出力する。
【０２４２】
ラウンド関数回路８０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）８０２において生成されたＫＡｒ−１が入力される。第（ｒ−１）ラウンドで、ラウンド関数回路８０１にラウンド鍵［ＫＡｒ−１］が入力されてラウンド関数を実行した結果データはセレクタ１，８１１から出力される。セレクタ１，８１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その１ビット目からｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢｒ−２の入れ替えデータの上位ｎ／４ビットであるＫＢｒ−２［１］と排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢｒ−２［０］と排他的論理和演算部８２２において排他的論理和され、その他のセレクタ１，８１１からの出力データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第（ｒ−１）ラウンドの出力データとＫＢｒ−２［１］、ＫＢｒ−２［０］との排他的論理和演算処理に相当する。
【０２４３】
第ｒラウンド目には、第１鍵生成部（ＫＡｉ生成回路）８０２においてＫＡｒを生成し、第２鍵生成部（ＫＢｉ生成回路）８０３において、ＫＢｒ＋１を生成し、セレクタ１，８１１はラウンド関数回路８０１の出力を選択し、セレクタ２，８１２は第２鍵生成部（ＫＢｉ生成回路）８０３において生成されるＫＢｒ＋１を選択する設定とする。
【０２４４】
ラウンド関数回路８０１にはラウンド鍵として、第１鍵生成部（ＫＡｉ生成回路）８０２において生成されたＫＡｒが入力される。第ｒラウンドで、ラウンド関数回路８０１にラウンド鍵［ＫＡｒ］が入力されてラウンド関数を実行した結果データはセレクタ１，８１１から出力される。セレクタ１，８１１から出力されるｎビットは、ｎ／４ビット単位に分割され、その１ビット目からｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢｒ＋１の上位ｎ／４ビットであるＫＢｒ＋１［０］と排他的論理和演算部８２１において排他的論理和され、（ｎ／２＋１）ビット目から３ｎ／４ビット目までがセレクタ２，８１２の出力によって選択されたＫＢｒ＋１［１］と排他的論理和演算部８２２において排他的論理和され、その他のセレクタ１，８１１からの出力データはそのままのデータとしてデータレジスタ８０５に格納される。この時点の排他的論理和演算部８２１，８２２における排他的論理和処理は、図２６に示す構成の第ｒラウンドの出力データとＫＢｒ＋１［０］、ＫＢｒ＋１［１］との排他的論理和演算処理に相当する。
【０２４５】
以上の処理により、データレジスタ８０５には、
暗号文Ｃ＝Ｃ０｜Ｃ１｜Ｃ２｜Ｃ３が格納される。
図２６に示す暗号化構成の処理を実行する回路として構成される図２７に示す回路構成は、先に説明した図９の暗号化構成に対応する図１３に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０２４６】
図２７に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第１鍵生成部（ＫＡｉ生成回路）８０２は、第１中間鍵ＫＡに基づいて、ラウンド１〜ｒの各ラウンド関数に各々入力するｒ個のラウンド鍵ＫＡ１〜ＫＡｒを生成する。
ラウンド関数実行部としてのラウンド関数回路８０１は、ラウンド１〜ｒの各ラウンド関数に、第１中間鍵ＫＡに基づいて生成されるｒ個のラウンド鍵ＫＡ１〜ＫＡｒを順次入力してラウンド関数を実行する。なお、各ラウンドでは、ＫＡｉ［０］とＫＡｉ［１］を適用したＦ関数を実行する。
第２鍵生成部（ＫＢｉ生成回路）８０３は、第２中間鍵ＫＢに基づいて、ラウンド関数の開始前において適用する初期鍵ＫＢ０と、ｒラウンドの最終ラウンド関数の開始後において適用する最終鍵ＫＢｒ＋１と、連続２ラウンドおきのラウンドに対応する鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２を生成する。
入れ替え回路８０４は、第２鍵生成部（ＫＢｉ生成回路）８０３の生成するｎ／２ビット鍵ＫＢｉの上位下位ｎ／４ビットＫＢｉ［０］，ＫＢｉ［１］を入れ替える。
排他的論理和演算部８２１，８２２は、入力データ、またはラウンド関数実行部としてのラウンド関数回路８０１からの出力データの構成データと、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ０，ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２，ＫＢｒ＋１から選択した鍵ＫＢｉの構成データＫＢｉ［０］とＫＢｉ［１］との排他的論理和演算を実行する。
このような処理構成となる。
【０２４７】
なお、排他的論理和演算部８２１，８２２は、第２中間鍵ＫＢに基づいて生成される鍵ＫＢ３，ＫＢ４，・・・ＫＢｒ−３，ＫＢｒ−２から選択した同一鍵、具体的には鍵ＫＢｉの構成データＫＢｉ［０］とＫＢｉ［１］を異なるラウンドのラウンド関数実行部からの出力データに対して２回繰り返して利用した排他的論理和演算を実行する。具体的には、４つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、４連続ラウンドｐ〜ｐ＋３に対して、
（ａ）ｐラウンドにラウンド鍵ＫＡｐを入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２（ＥＸＯＲ）ＫＢｐ＋２］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３（ＥＸＯＲ）ＫＢｐ＋３］を入力、
上記（ａ）〜（ｄ）のラウンド鍵の入力処理と等価な処理になるように鍵ＫＢｉから選択した同一鍵を２回繰り返して利用した排他的論理和演算処理を実行する。なお、ｐ＋４ラウンド以降も上記のｐ〜ｐ＋３ラウンドと同様、ＫＡｉを連続２ラウンド、ＫＡｉ（ＥＸＯＲ）ＫＢｉを連続２ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【０２４８】
なお、各Ｆ関数に対する入力する鍵としては、
（ａ）ｐラウンドのＦ関数に鍵ＫＡｐ［０］とＫＡｐ［１］を入力、
（ｂ）ｐ＋１ラウンドにラウンド鍵ＫＡｐ＋１［０］とＫＡｐ＋１［１］を入力、
（ｃ）ｐ＋２ラウンドにラウンド鍵［ＫＡｐ＋２［０］（ＥＸＯＲ）ＫＢｐ＋２［０］］と［ＫＡｐ＋２［１］（ＥＸＯＲ）ＫＢｐ＋２［１］］を入力、
（ｄ）ｐ＋３ラウンドにラウンド鍵［ＫＡｐ＋３［０］（ＥＸＯＲ）ＫＢｐ＋３［０］］と［ＫＡｐ＋３［１］（ＥＸＯＲ）ＫＢｐ＋３［１］］を入力、
このような入力設定と等価となるように排他的論理和演算部８２１，８２２において、第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉ［０］とＫＢｉ［１］を適用した排他的論理和演算を実行する。
【０２４９】
このように図２６に示す暗号化構成の処理を実行する図２７に示す回路構成は、先に説明した図９の暗号化構成に対応する図１３に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【０２５０】
［暗号処理装置としてのＩＣモジュール構成例］
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのＩＣモジュール９００の構成例を図２８に示す。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図２８に示すＩＣモジュール９００は、これら様々な機器に構成することが可能である。
【０２５１】
図２８に示すＣＰＵ(Central processing Unit)９０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ９０２は、ＣＰＵ９０１が実行するプログラム、あるいは演算パラメータなどの固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ９０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ９０２は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル（置換表）や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。暗号処理部９０３は、例えば上述した各種の暗号処理構成、例えば、Ｆｅｉｓｔｅｌ構造に従った共通鍵ブロック暗号処理アルゴリズムを実行する。
【０２５２】
また、暗号処理部９０３は、上述した各実施例において説明したように、秘密鍵Ｋに基づく第１中間鍵ＫＡ、第２中間鍵ＫＢを生成して、ラウンド関数を実行する。第１中間鍵ＫＡは、秘密鍵Ｋに対する非線形変換処理により生成される鍵データであり、第２中間鍵ＫＢは、
（ａ）秘密鍵Ｋに対して、第１中間鍵ＫＡと異なる非線形変換を適用したデータ、
（ｂ）秘密鍵Ｋに対して線形変換を適用したデータ、
（ｃ）秘密鍵Ｋそのもの
上記（ａ）〜（ｃ）のいずれかによって構成されるデータである。
【０２５３】
暗号処理部９０３は、これらの第１中間鍵ＫＡ、第２中間鍵ＫＢをベースとする鍵ＫＡｉ，ＫＢｉを生成する。中間鍵ベースの鍵ＫＡｉのみがラウンド関数におけるラウンド関数鍵として適用され、中間鍵ベースの鍵ＫＢｉは、ラウンド関数の入出力データとの排他的論理和演算に利用される。
【０２５４】
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭに格納し、ＣＰＵ９０１がＲＯＭ格納プログラムを読み出して実行するように構成してもよい。
【０２５５】
乱数発生器９０４は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０２５６】
送受信部９０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０２５７】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０２５８】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０２５９】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０２６０】
上述したように、本発明の一実施例の構成によれば、秘密鍵Ｋに基づいて生成する複数の異なるデータ構成を有する第１中間鍵ＫＡと第２中間鍵ＫＢを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なう共通鍵ブロック暗号処理構成において、ラウンド関数実行部に第１中間鍵ＫＡに基づいて生成するラウンド鍵ＫＡｉのみを入力してラウンド関数を実行し、第２中間鍵ＫＢに基づいて生成される鍵ＫＢｉは、ラウンド関数部におけるＦ関数に入力することなく、暗号処理対象となる入力データ、またはラウンド関数からの出力データとの排他的論理和演算を実行させる構成とした。本構成により暗号処理回路を簡略化し装置の小型化およびコストダウンを実現することができる。
【図面の簡単な説明】
【０２６１】
【図１】共通鍵ブロック暗号アルゴリズムの基本構成を示す図である。
【図２】共通鍵ブロック暗号におけるデータ暗号化部の構成例について説明する図である。
【図３】共通鍵ブロック暗号におけるデータ暗号化部の構成例について説明する図である。
【図４】共通鍵ブロック暗号における４系列の構成を持つデータ暗号化部の構成例について説明する図である。
【図５】共通鍵ブロック暗号における４系列の構成を持つデータ暗号化部の構成例について説明する図である。
【図６】図２のＦｅｉｓｔｅｌ構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図７】図３のＦｅｉｓｔｅｌ構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図８】図４のＦｅｉｓｔｅｌ構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図９】図５のＦｅｉｓｔｅｌ構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図１０】図６に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図１１】図７に示す２系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図１２】図８に示す４系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図１３】図９に示す４系列のＦｅｉｓｔｅｌ構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図１４】図１０を参照して説明した回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。
【図１５】本発明の一実施例に従った図１７に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。
【図１６】本発明の一実施例に従った図１７に示す回路を適用した場合の暗号処理構成を説明する図である。
【図１７】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図１８】本発明に従った図２０に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。
【図１９】本発明の一実施例に従った図２０に示す回路を適用した場合の暗号処理構成を説明する図である。
【図２０】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図２１】図１２を参照して説明した回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。
【図２２】本発明に従った図２４に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。
【図２３】本発明の一実施例に従った図２４に示す回路を適用した場合の暗号処理構成を説明する図である。
【図２４】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図２５】本発明に従った図２７に示す回路を適用した第２ラウンド〜第５ラウンドの処理を説明する図である。
【図２６】本発明の一実施例に従った図２７に示す回路を適用した場合の暗号処理構成を説明する図である。
【図２７】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図２８】本発明に係る暗号処理を実行する暗号処理装置としてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０２６２】
１１１  秘密鍵
１１２  暗号化鍵スケジュール部
１１３  拡大鍵
１１４  データ暗号化部
１１５  ラウンド関数
１１６  Ｆ関数
１２１〜１２３  排他的論理和演算部
１３１〜１３３  排他的論理和演算部
１５１〜１５６  排他的論理和演算部
２０１  ラウンド関数回路
２０２  第１鍵生成部（ＫＡｉ生成回路）
２０３  第２鍵生成部（ＫＢｉ生成回路）
２１１〜２１３  セレクタ
２１４  データレジスタ
２１５〜２１６  排他的論理和演算部
２２１  排他的論理和演算部
２２２  セレクタ
２５１  セレクタ
２５２〜２５３  排他的論理和演算部
２７１  セレクタ
２７２〜２７３  排他的論理和演算部
３０２〜３０５  Ｆ関数
３０７〜３０８  排他的論理和演算部
３１２〜３１５  Ｆ関数
３２１〜３２４  排他的論理和演算部
３５１  ラウンド関数回路
３５２  第１鍵生成部（ＫＡｉ生成回路）
３５３  第２鍵生成部（ＫＢｉ生成回路）
３５４  データレジスタ
３５５〜３５６  セレクタ
３５７  排他的論理和演算部
４１２〜４１５  Ｆ関数
４２１〜４２３  排他的論理和演算部
４５１  ラウンド関数回路
４５２  第１鍵生成部（ＫＡｉ生成回路）
４５３  第２鍵生成部（ＫＢｉ生成回路）
４５４  データレジスタ
４５５〜４５６  セレクタ
４５７  排他的論理和演算部
５０２〜５０５  Ｆ関数
５１２〜５１５  Ｆ関数
５２１〜５２４  排他的論理和演算部
５５２〜５５５  Ｆ関数
５６２〜５６５  Ｆ関数
５２１〜５２４  排他的論理和演算部
５７２〜５７５  排他的論理和演算部
５８１〜５８５  排他的論理和演算部
６０１  ラウンド関数回路
６０２  第１鍵生成部（ＫＡｉ生成回路）
６０３  第２鍵生成部（ＫＢｉ生成回路）
６０４  入れ替え回路
６０５  データレジスタ
６１１〜６１２  セレクタ
６２１〜６２２  排他的論理和演算部
７５２〜７５５  Ｆ関数
７６２〜７６５  Ｆ関数
７７３〜７７５  排他的論理和演算部
７８２〜７８５  排他的論理和演算部
５８１〜５８５  排他的論理和演算部
８０１  ラウンド関数回路
８０２  第１鍵生成部（ＫＡｉ生成回路）
８０３  第２鍵生成部（ＫＢｉ生成回路）
８０４  入れ替え回路
８０５  データレジスタ
８１１〜８１２  セレクタ
８２１〜８２２  排他的論理和演算部
９００  ＩＣモジュール
９０１  ＣＰＵ(Central processing Unit)
９０２  メモリ
９０３  暗号処理部
９０４  乱数発生器
９０５  送受信部
【図１】
0005223245.tif 000002
【図２】
0005223245.tif 000003
【図３】
0005223245.tif 000004
【図４】
0005223245.tif 000005
【図５】
0005223245.tif 000006
【図６】
0005223245.tif 000007
【図７】
0005223245.tif 000008
【図８】
0005223245.tif 000009
【図９】
0005223245.tif 000010
【図１０】
0005223245.tif 000011
【図１１】
0005223245.tif 000012
【図１２】
0005223245.tif 000013
【図１３】
0005223245.tif 000014
【図１４】
0005223245.tif 000015
【図１５】
0005223245.tif 000016
【図１６】
0005223245.tif 000017
【図１７】
0005223245.tif 000018
【図１８】
0005223245.tif 000019
【図１９】
0005223245.tif 000020
【図２０】
0005223245.tif 000021
【図２１】
0005223245.tif 000022
【図２２】
0005223245.tif 000023
【図２３】
0005223245.tif 000024
【図２４】
0005223245.tif 000025
【図２５】
0005223245.tif 000026
【図２６】
0005223245.tif 000027
【図２７】
0005223245.tif 000028
【図２８】
0005223245.tif 000029