(57)【要約】【課題】鍵解析の困難性を高め、安全性の高めた共通鍵ブロック暗号処理構成を実現する。【解決手段】共通鍵ブロック暗号処理に適用するラウンド鍵を生成する鍵スケジュール部において、秘密鍵から生成したｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド中間鍵を生成して、このラウンド中間鍵に基づいて複数の異なるラウンド鍵を生成する。または、さらにラウンド中間鍵からの選択データに対して各ラウンド毎に異なる定数を適用した排他的論理和演算によりラウンド鍵を生成する。本構成により、鍵の解析困難性を高めた安全性の高い暗号処理構成が実現される。【選択図】図１９
2008058827.tif 000002
【特許請求の範囲】
【請求項１】
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵の変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成する構成であることを特徴とする暗号処理装置。
【請求項２】
前記鍵スケジュール部は、
秘密鍵の変換処理によって生成するｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行し、ｑ個のラウンド中間鍵｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を、
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
上記式に従って生成する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記鍵スケジュール部は、
生成するラウンド中間鍵数をｑ個としたとき、前記ｘｓ倍演算を繰り返し実行して、ｑ個の異なるラウンド中間鍵を生成した後、
ｑ−１回目の最終的なｘｓ倍演算によって生成されたラウンド中間鍵データ、
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
に対して、
ｘ−（ｑ−１）×ｓ倍算を実行して、
ｘｓ倍演算実行前のオリジナル中間鍵ＭＫに戻す処理を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記鍵スケジュール部は、
前記ｘｓ倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵を生成することを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記鍵スケジュール部は、
前記ｘｓ倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記鍵スケジュール部は、
前記ｘｓ倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択を実行し、さらにビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項７】
前記鍵スケジュール部は、
前記秘密鍵の変換処理による中間鍵生成処理を、前記秘密鍵の構成データに対する非線形変換処理によって実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項８】
暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、
鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成するラウンド中間鍵生成ステップと、
前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成するビット選択ステップと、
を有することを特徴とする暗号処理方法。
【請求項９】
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行し、ｑ個のラウンド中間鍵｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を、
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
上記式に従って生成するステップであることを特徴とする請求項８に記載の暗号処理方法。
【請求項１０】
前記暗号処理方法は、さらに、
前記鍵スケジュール部において、
前記ラウンド鍵生成ステップにおいて前記ｘｓ倍演算を繰り返し実行して、ｑ個の異なるラウンド中間鍵を生成した後、ｑ−１回目の最終的なｘｓ倍演算によって生成されたラウンド中間鍵データ、
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
に対して、
ｘ−（ｑ−１）×ｓ倍算を実行して、
ｘｓ倍演算実行前のオリジナル中間鍵ＭＫに戻す処理を実行することを特徴とする請求項８に記載の暗号処理方法。
【請求項１１】
前記ラウンド鍵生成ステップは、
前記ｘｓ倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成するステップであることを特徴とする請求項８に記載の暗号処理方法。
【請求項１２】
前記ラウンド鍵生成ステップは、
前記ビット選択ステップにおいて抽出したビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成することを特徴とする請求項８に記載の暗号処理方法。
【請求項１３】
前記ラウンド鍵生成ステップにおける秘密鍵の変換処理は、
前記秘密鍵の構成データに対する非線形変換処理によって実行することを特徴とする請求項８に記載の暗号処理方法。
【請求項１４】
暗号処理装置において共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる暗号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成させるラウンド中間鍵生成ステップと、
前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成させるビット選択ステップと、
を実行させるステップであることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
【０００４】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【０００５】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位（６４ビット，１２８ビットなど）のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【０００６】
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号であったＤＥＳ（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
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、上記問題点に鑑みてなされたものであり、暗号解析の困難性を高め、安全性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵の変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成する構成であることを特徴とする暗号処理装置にある。
【００１２】
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、秘密鍵の変換処理によって生成するｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行し、ｑ個のラウンド中間鍵｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を、
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
上記式に従って生成する構成であることを特徴とする。
【００１３】
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、生成するラウンド中間鍵数をｑ個としたとき、前記ｘｓ倍演算を繰り返し実行して、ｑ個の異なるラウンド中間鍵を生成した後、ｑ−１回目の最終的なｘｓ倍演算によって生成されたラウンド中間鍵データ、
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
に対して、
ｘ−（ｑ−１）×ｓ倍算を実行して、
ｘｓ倍演算実行前のオリジナル中間鍵ＭＫに戻す処理を実行する構成であることを特徴とする。
【００１４】
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ｘｓ倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵を生成することを特徴とする。
【００１５】
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ｘｓ倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成する構成であることを特徴とする。
【００１６】
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ｘｓ倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択を実行し、さらにビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成する構成であることを特徴とする。
【００１７】
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記秘密鍵の変換処理による中間鍵生成処理を、前記秘密鍵の構成データに対する非線形変換処理によって実行する構成であることを特徴とする。
【００１８】
さらに、本発明の第２の側面は、
暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、
鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成するラウンド中間鍵生成ステップと、
前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成するビット選択ステップと、
を有することを特徴とする暗号処理方法にある。
【００１９】
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップは、秘密鍵の変換処理によって生成するｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行し、ｑ個のラウンド中間鍵｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を、
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
上記式に従って生成するステップであることを特徴とする。
【００２０】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さらに、前記鍵スケジュール部において、前記ラウンド鍵生成ステップにおいて前記ｘｓ倍演算を繰り返し実行して、ｑ個の異なるラウンド中間鍵を生成した後、ｑ−１回目の最終的なｘｓ倍演算によって生成されたラウンド中間鍵データ、
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
に対して、
ｘ−（ｑ−１）×ｓ倍算を実行して、
ｘｓ倍演算実行前のオリジナル中間鍵ＭＫに戻す処理を実行することを特徴とする。
【００２１】
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップは、前記ｘｓ倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成するステップであることを特徴とする。
【００２２】
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップは、前記ビット選択ステップにおいて抽出したビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成することを特徴とする。
【００２３】
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップにおける秘密鍵の変換処理は、前記秘密鍵の構成データに対する非線形変換処理によって実行することを特徴とする。
【００２４】
さらに、本発明の第３の側面は、
暗号処理装置において共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる暗号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成させるラウンド中間鍵生成ステップと、
前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成させるビット選択ステップと、
を実行させるステップであることを特徴とするコンピュータ・プログラムにある。
【００２５】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００２６】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００２７】
本発明の一実施例の構成によれば、共通鍵ブロック暗号処理を実行する暗号処理装置におけるラウンド鍵を生成する鍵スケジュール部において、秘密鍵から生成したｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド中間鍵を生成して、このラウンド中間鍵に基づいて複数の異なるラウンド鍵を生成する構成とした。また、本発明の一実施例の構成によれば、さらに、ラウンド中間鍵から選択されたデータに対して、各ラウンド毎に異なる定数を適用した排他的論理和演算によりラウンド鍵を生成する構成とした。本構成により、鍵の解析困難性を高めた安全性の高い暗号処理構成が実現される。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
１．共通鍵ブロック暗号の概要
２．鍵スケジュール部におけるｘ倍演算による中間鍵データの生成を伴う暗号処理構成
（２−１）鍵スケジュール部の詳細構成について
（２−２）中間鍵データの一般的な生成処理構成について
（２−３）本発明の第１実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
（２−４）本発明の第２実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
３．暗号処理装置の構成例
【００２９】
［１．共通鍵ブロック暗号の概要］
まず、本発明の適用可能な共通鍵ブロック暗号の概要について説明する。本明細書において、共通鍵ブロック暗号（以下ではブロック暗号）は、以下に定義するものを指すものとする。
【００３０】
ブロック暗号は平文Ｐと鍵Ｋを入力し、暗号文Ｃを出力する。平文と暗号文のビット長をブロックサイズと呼びここではｎで示す。ｎは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、予め１つに決められている値である。ブロック長がｎのブロック暗号のことをｎビットブロック暗号と呼ぶこともある。
【００３１】
鍵のビット長は、ｋで表す。鍵は任意の整数値を取りうる。共通鍵ブロック暗号アルゴリズムは１つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムＡはブロックサイズｎ＝１２８であり、鍵のビット長ｋ＝１２８、またはｋ＝１９２またはｋ＝２５６の各種の鍵サイズに対応するという構成もありうる。
平文［Ｐ］、暗号文［Ｃ］、鍵［Ｋ］の各ビットサイズは、以下のように示される。
平文Ｐ：ｎビット
暗号文Ｃ：ｎビット
鍵Ｋ：ｋビット
【００３２】
図１にｋビットの鍵長に対応したｎビット共通鍵ブロック暗号アルゴリズムＥの図を示す。図１に示すように、共通鍵ブロック暗号処理部Ｅ１０は、ｎビットの平文Ｐと、ｋビットの鍵Ｋを入力して、予め定められた暗号アルゴリズムを実行して、ｎビットの暗号文Ｃを出力する。なお、図1には平文から暗号文を生成する暗号化処理のみを示している。暗号文から平文を生成する復号処理は、一般的にはＥ１０の逆関数が用いられる。ただし、暗号化処理部Ｅ１０の構造によっては、復号処理においても、同様の共通鍵ブロック暗号処理部Ｅ１０が適用でき、鍵の入力順などのシーケンスの変更によって復号処理が可能となる。
【００３３】
図１に示す共通鍵ブロック暗号処理部Ｅ１０の内部構成について、図２を参照して説明する。ブロック暗号は２つの部分に分けて考えることができる。ひとつは鍵Ｋを入力とし、ある定められたステップにより入力鍵Ｋのビット長を拡大して拡大鍵Ｋ'（ビット長ｋ'）を出力する鍵スケジュール部１１と、平文Ｐと鍵スケジュール部１１から入力する拡大鍵Ｋ'を受け取り、平文Ｐを入力して、拡大鍵Ｋ'を適用した暗号処理を実行して、暗号文Ｃを生成するためのデータの変換を実行する暗号処理部１２である。なお、先に説明したように、暗号化処理部１２の構造によっては、暗号文を平文に戻すデータ復号処理にも暗号処理部１２が適用可能な場合もある。
【００３４】
次に、図２に示す暗号処理部１２の詳細構成について図３を参照して説明する。暗号処理部１２は、図３に示すように、ラウンド関数実行部２０を適用したデータ変換を繰り返し実行する構成を持つ。すなわち、暗号処理部１２は、ラウンド関数実行部２０という処理単位に分割できる。ラウンド関数実行部２０は入力として、前段のラウンド関数実行部の出力Ｘｉと、拡大鍵に基づいて生成されるラウンド鍵ＲＫｉの２つのデータを受け取り、内部でデータ変換処理を実行して出力データＸｉ＋１を次のラウンド関数実行部に出力する。なお、第１ラウンドでは、入力は、平文または平文に対する初期化処理データである。また最終ラウンドの出力は暗号文となる。
【００３５】
図３に示す例では、暗号処理部１２は、ｒ個のラウンド関数実行部２０を有し、ｒ回のラウンド関数実行部におけるデータ変換を繰り返して暗号文を生成する構成となっている。ラウンド関数の繰り返し回数をラウンド数と呼ぶ。図に示す例では、ラウンド数はｒとなる。
【００３６】
各ラウンド関数実行部の入力データＸｉは暗号化途中のｎビットデータであり、あるラウンドにおけるラウンド関数の出力Ｘｉ＋１が次のラウンドの入力として供給される。各ラウンド関数実行部のもう一つの入力データは鍵スケジュールから出力された拡大鍵のＫ'に基づくデータが用いられる。この各ラウンド関数実行部に入力され、ラウンド関数の実行に適用される鍵をラウンド鍵と呼ぶ。図で、ｉラウンドに適用するラウンド鍵をＲＫｉとして示している。拡大鍵Ｋ'は、例えば、ｒラウンド分のラウンド鍵ＲＫ１〜ＲＫｒの連結データとして構成される。
【００３７】
図３に示す構成は、暗号処理部１２の入力側から見て１ラウンド目の入力データをＸ０とし、ｉ番目のラウンド関数から出力されるデータをＸｉ、ラウンド鍵をＲＫｉとして示した暗号処理部１２の構成である。なお、この暗号処理部１２の構造によっては、例えば、適用するラウンド鍵の適用シーケンスを、暗号化処理と逆に設定し、暗号文を暗号処理部１２に入力することで平文を出力する構成とすることができる。
【００３８】
図３に示す暗号処理部１２のラウンド関数実行部２０は、さまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造（ｓｔｒｕｃｔｕｒｅ）によって分類できる。代表的な構造として、
（ア）ＳＰＮ（Substitution Permutation Network）構造、
（イ）Ｆｅｉｓｔｅｌ構造、
（ウ）拡張Ｆｅｉｓｔｅｌ構造、
がある。以下、これらの具体的構成について、図４〜図６を参照して説明する。
【００３９】
（ア）ＳＰＮ構造ラウンド関数
まず、図４を参照して、ラウンド関数実行部２０の一構成例としてのＳＰＮ構造ラウンド関数について説明する。ＳＰＮ構造ラウンド関数実行部２０ａは、非線形変換層（Ｓ層）と線形変換層（Ｐ層）を接続したいわゆるＳＰ型の構成を有する。図４に示すように、ｎビットの入力データすべてに対して、ラウンド鍵との排他的論理和（ＥＸＯＲ）演算を実行する排他的論理和演算部２１、排他的論理和演算部２１の演算結果を入力し、入力データの非線形変換を実行する非線形変換処理部２２、非線形変換処理部２２における非線形変換処理結果を入力し、入力データに対する線形変換処理を実行する線形変換処理部２３などによって構成される。線形変換処理部２３の線形変換処理結果が、次のラウンドに出力される。最終ラウンドでは暗号文となる。なお、図４に示す例では、排他的論理和演算部２１、非線形変換処理部２２、線形変換処理部２３の処理順を示しているが、これらの処理部の順番は、限定されるものではなく、他のシーケンスで処理を行なう構成としてもよい。
【００４０】
（イ）Ｆｅｉｓｔｅｌ構造
次に、図５を参照してラウンド関数実行部２０の一構成例としてのＦｅｉｓｔｅｌ（フェイステル）構造について説明する。Ｆｅｉｓｔｅｌ構造は、図５に示すように、前ラウンドからの入力（第１ラウンドでは入力文）であるｎビットの入力データをｎ／２ビットの２つのデータに分割して、各ラウンドにおいて入れ替えながら処理を実行する。
【００４１】
Ｆｅｉｓｔｅｌ構造を持つラウンド関数実行部２０ｂを適用した処理においては、図に示すように、一方のｎ／２ビットデータとラウンド鍵とがＦ関数部３０に入力される。Ｆ関数部３０は、上述したＳＰＮ構造と同様、非線形変換層（Ｓ層）と線形変換層（Ｐ層）を接続したいわゆるＳＰ型の構成を有する。
【００４２】
前ラウンドからのｎ／２ビットデータとラウンド鍵とがＦ関数部３０の排他的論理和演算部３１に入力され排他的論理和（ＥＸＯＲ）処理がなされる。さらに、この結果データを非線形変換処理部３２に入力して非線形変換を実行し、さらに、この非線形変換結果が線形変換処理部３３に入力され線形変換が実行される。この線形変換結果が、Ｆ関数処理結果データとして出力する。
【００４３】
さらに、このＦ関数出力と、前ラウンドから入力するもう１つのｎ／２ビット入力とを、排他的論理和演算部３４に入力し、排他的論理和演算（ＥＸＯＲ）を実行して、実行結果を、次のラウンドにおけるＦ関数の入力として設定される。なお、図に示す第ｉラウンドにおけるＦ関数入力に設定されたｎ／２ビットは次のラウンドのＦ関数出力との排他的論理和演算に適用される。このように、Ｆｅｉｓｔｅｌ構造は、各ラウンドにおいて入力を交互に入れ替えながらＦ関数を適用したデータ変換処理を実行する。
【００４４】
（ウ）拡張Ｆｅｉｓｔｅｌ構造
次に、図６を参照してラウンド関数実行部２０の一構成例としての拡張Ｆｅｉｓｔｅｌ構造について説明する。先に、図５を参照して説明したＦｅｉｓｔｅｌ構造は、ｎビットの平文を２つに分割してｎ／２ビットずつに区分して処理を実行していた。すなわち、分割数：ｄ＝２とした処理である。なお、この分割数は、データ系列数とも呼ばれる。
【００４５】
拡張Ｆｅｉｓｔｅｌ構造では、このデータ系列数（分割数）ｄを２以上の任意の整数とした設定である。データ系列数（分割数）ｄの値に応じたさまざまな拡張Ｆｅｉｓｔｅｌ構造を定義することができる。図６に示す例では、データ系列数（分割数）ｄ＝４であり、各系列に対してｎ／４ビットのデータが入力される。各ラウンドでは、１つ以上のラウンド関数としてのＦ関数が実行される。図に示す例は、１ラウンドにおいて２つのＦ関数部によるラウンド演算を行なう構成例である。
【００４６】
Ｆ関数部４１，４２の構成は、先に図５を参照して説明したＦ関数部３０の構成と同様であり、ラウンド鍵と入力値との排他的論理和演算と、非線形変換処理、線形変換処理を実行する構成となっている。なお、各Ｆ関数部に入力するラウンド鍵は、入力ビットとビット数が一致するように調整される。図に示す例では、各Ｆ関数部４１，４２に入力するラウンド鍵は、ｎ／４ビットとなる。これらの鍵は、拡大鍵を構成するラウント鍵をさらにビット分割して生成する。なお、データ系列数（分割数）をｄとしたとき、各系列に入力されるデータはｎ／ｄビットであり、各Ｆ関数に入力する鍵のビット数もｎ／ｄビットに調整される。
【００４７】
なお、図６に示す拡張Ｆｅｉｓｔｅｌ構造では、データ系列数（分割数）をｄとして、各ラウンドにおいてｄ／２のＦ関数を並列に実行する構成例であるが、拡張Ｆｅｉｓｔｅｌ構造は、各ラウンドにおいて、１つ以上ｄ／２以下のＦ関数を実行する構成が可能である。
【００４８】
図４〜図６を参照して説明したように、共通鍵ブロック暗号における暗号処理部１２のラウンド関数実行部２０は、
（ア）ＳＰＮ（Substitution Permutation Network）構造、
（イ）Ｆｅｉｓｔｅｌ構造、
（ウ）拡張Ｆｅｉｓｔｅｌ構造、
これらの構造をとり得る。これらのラウンド関数実行部は、いずれも非線形変換層（Ｓ層）と線形変換層（Ｐ層）を接続したいわゆるＳＰ型の構成を有する。すなわち、非線形変換処理を実行する非線形変換処理部と、線形変換処理を実行する線形変換処理部とを有する。以下、これらの変換処理構成について説明する。
【００４９】
（非線形変換処理部）
非線形変換処理部の具体例について、図７を参照して説明する。図７に示すように、非線形変換処理部５０は、具体的には、Ｓボックス（Ｓ−ｂｏｘ）５１と呼ばれるｓビット入力ｓビット出力の非線形変換テーブルがｍ個並んだものであり、ｍｓビットの入力データがｓビットずつ分割されてそれぞれ対応するＳボックス（Ｓ−ｂｏｘ）５１に入力されデータが変換される。各Ｓボックス５１では、例えば変換テーブルを適用した非線形変換処理が実行される。
【００５０】
入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために、図７に示すように、処理対象データＸを複数の単位に分割し、それぞれに対して、非線形変換を施す構成がとられることが多い。例えば入力サイズをｍｓビットとしたとき、ｓビットずつのｍ個のデータに分割して、ｍ個のＳボックス（Ｓ−ｂｏｘ）５１それぞれに対してｓビットを入力し、例えば変換テーブルを適用した非線形変換処理を実行して、これらの各Ｓビット出力ｍ個を合成してｍｓビットの非線形変換結果を得る。
【００５１】
（線形変換処理部）
線形変換処理部の具体例について、図８を参照して説明する。線形変換処理部は、入力値、例えば、Ｓボックスからの出力データであるｍｓビットの出力値を入力値Ｘとして入力し、この入力に対して線形変換を施しｍｓビットの結果を出力する。線形変換処理は、例えば、入力ビット位置の入れ替え処理などの線形変換処理を実行して、ｍｓビットの出力値Ｙを出力する。線形変換処理は、例えば、入力に対して、線形変換行列を適用して入力ビット位置の入れ替え処理を行なう。この行列の一例が図８に示す線形変換行列である。
【００５２】
線形変換処理部において適用する線形変換行列の要素は拡大体：ＧＦ（２８）の体の要素やＧＦ（２）の要素など、一般的にはさまざまな表現を適用した行列として構成できる。図８は、ｍｓビット入出力をもち、ＧＦ（２ｓ）の上で定義されるｍ×ｍの行列により定義される線形変換処理部の１つの構成例を示すものである。
【００５３】
［２．鍵スケジュール部におけるｘ倍演算による中間鍵データの生成を伴う暗号処理構成］
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を行なう構成である。この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになり、実用上、大きな問題となる。
【００５４】
上述した説明から明らかなように、共通鍵ブロック暗号においては、各ラウンドにおいて拡大鍵に基づいて生成されるラウンド鍵を適用した処理がなされる。暗号攻撃では、ラウンド鍵の解析に基づいて拡大鍵を復元し、さらに拡大鍵の元データである秘密鍵を解析するといった手順の攻撃が行なわれる場合がある。以下では、このような鍵解析の困難性を高め、安全性の高めた暗号処理装置の構成例について説明する。
【００５５】
以下、以下の各項目に従って、説明を行なう。
（２−１）鍵スケジュール部の詳細構成について
（２−２）中間鍵データの一般的な生成処理構成について
（２−３）本発明の第１実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
（２−４）本発明の第２実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
【００５６】
（２−１）鍵スケジュール部の詳細構成について
先に、例えば図２を参照して説明したように、共通鍵ブロック暗号においては、鍵スケジュール部が、入力鍵Ｋのビット長を拡大して拡大鍵Ｋ'（ビット長ｋ'）を出力し、拡大鍵に基づいて生成されるラウンド鍵ＲＫｉを適用したラウンド関数が実行される。
【００５７】
鍵スケジュール部は、例えば、数百ビットの鍵データを数千ビット程度の拡大鍵データに拡張して、ラウンド関数を実行するデータ暗号化部に供給する。拡大鍵データのうち、データ暗号化部のラウンド関数に入力される拡大鍵の一部をラウンド鍵と呼ぶ。また、ラウンド関数以外にもラウンド鍵が挿入される場合がある。例えば、最初のラウンド関数の前に挿入（ＥＸＯＲ）される鍵を初期鍵、最後のラウンド関数の後に挿入（ＥＸＯＲ）される鍵を最終鍵と呼ぶ。
【００５８】
図９および図１０を参照して暗号化処理と復号処理における秘密鍵Ｋと、初期鍵、ラウンド鍵、最終鍵の対応について説明する。図９、図１０には、それぞれｒ段をラウンド数としたブロック暗号を実行する暗号化構成および復号構成を示している。
【００５９】
例えば、図９は、ｒ段をラウンド数としたブロック暗号を実行する暗号化構成であり、秘密鍵［Ｋ］１１１は、暗号化鍵スケジュール部１１２に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、初期鍵、ラウンド鍵、最終鍵を含む暗号化拡大鍵１１３を生成する。データ暗号化部１１４は、ｒ段をラウンド数としたブロック暗号を実行する構成であり、暗号化の場合に、１からｒ段目までのラウンド関数にそれぞれラウンド鍵｛ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ｝が順に入力されてラウンド関数（Ｆ関数）が実行される。また、初期鍵として［ＩＫ］、最終鍵として［ＦＫ］が入力され、処理データとの排他的論理和演算（ＥＸＯＲ）が行なわれる。
【００６０】
図１０は、復号処理構成を示している。秘密鍵［Ｋ］１２１は、復号鍵スケジュール部１２２に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、初期鍵、ラウンド鍵、最終鍵を含む復号拡大鍵１２３を生成する。なお、秘密鍵［Ｋ］１２１は暗号化処理において適用した図９に示す秘密鍵［Ｋ］１１１と同じ鍵が適用される。
【００６１】
データ復号部１２４は、ｒ段をラウンド数としたブロック暗号を実行する構成であり、復号処理の場合は、最終鍵［ＦＫ］が入力され、処理データとの排他的論理和演算（ＥＸＯＲ）がなされた後、｛ＲＫｒ，ＲＫｒ−１，・・・，ＲＫ２，ＲＫ１｝の各ラウンド鍵が順に入力されてラウンド関数（Ｆ関数）が実行され、最後に初期鍵［ＩＫ］が入力され、処理データとの排他的論理和演算（ＥＸＯＲ）がなされる。
なお、以下では、初期鍵、最終鍵も含めてラウンド鍵と呼ぶ。
【００６２】
鍵解析を行なう暗号攻撃に対する耐性の高い、すなわち鍵解析を困難として安全性を高めた構成とするための、ラウンド鍵が満たす理想的な性質としては以下の性質がある。
（ａ）ラウンド鍵が分かっても鍵データが復元できないこと
（ｂ）ラウンド鍵同士が独立であること
これらの性質がある。
（ａ）は、万が一各ラウンドにおいて適用するラウンド鍵が解析された場合でも、そのラウンド鍵から元の秘密鍵を復元不可能とすることで安全性を高められることを意味する。また、（ｂ）は１つのラウンド鍵と他のラウンド鍵とのデータ間に何らかの関係がある場合、１つのラウンド鍵の解析に成功した場合、他のラウンド鍵が推定可能になり、このような関連性を排除することで安全性が高まるということを意味する。
【００６３】
しかしながら、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を生成することは難しく、実際には、秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる場合が多い。また、上記条件を満たしていない場合でも、安全性上、
＊ｓｌｉｄｅ  ａｔｔａｃｋ（スライド攻撃）に対し十分な耐性をもつこと
＊ｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋ（関連暗号攻撃）に対して十分な耐性をもつことが必要とされる。
【００６４】
Ｓｌｉｄｅ  ａｔｔａｃｋ（スライド攻撃）は，元の暗号化関数とそれをずらした暗号化関数とで、重なったラウンド関数のデータ値が同じになる平文・暗号文を検出し、これを利用してずらした部分の鍵を効率よく求める攻撃である。異なる秘密鍵に対して数段分のラウンド鍵が一致する場合に攻撃可能となる。
【００６５】
また、Ｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋ  （関連暗号攻撃）は，以下のような攻撃である。ある共通鍵ブロック暗号がラウンド数ｒ１のｋ１ビットの鍵長，ラウンド数ｒ２のｋ２ビットの鍵長を共にサポートしている場合（ｒ１＜ｒ２かつｋ１＜ｋ２とする）を考える。鍵長ｋ１ビットのラウンド鍵が鍵長ｋ２ビットのラウンド鍵の一部と一致する場合を考える。この場合、鍵長ｋ１ビットの場合のデータ暗号部の出力を用いることにより、鍵長ｋ２ビットの場合の残りのラウンド鍵を攻撃することが可能になる。
【００６６】
（２−２）中間鍵データの一般的な生成処理構成について
上述したように、上述のラウンド鍵を利用する共通鍵ブロック暗号処理を実行する装置を構成する場合、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を生成することは難しく、実際には、秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる。
【００６７】
この秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる場合の鍵スケジュール部の一般的な構成例について、図１１〜図１３を参照して説明する。
【００６８】
図１１は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図１２は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図１３は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例を示している。
【００６９】
まず、図１１に示す暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成、および処理について説明する。秘密鍵Ｋをｋビットとする。秘密鍵Ｋを、非線形変換回路２０１に入力し、非線形変換処理を行いｍビットの中間鍵データを生成する。中間鍵をＭＫとする。
【００７０】
中間鍵ＭＫは、セレクタ２０２を介してレジスタＲｅｇＬ２０３に入力され格納される。セレクタ２０２には、ｓビット左循環シフト回路２１１、（ｑ−１）×ｓビット右循環シフト回路２１２が接続され、セレクタ２０２を介してレジスタＲｅｇＬ２０３に対してそれぞれの循環シフト処理信号が入力され、レジスタＲｅｇＬ２０３に格納されたデータのｓビット左循環シフト処理、または（ｑ−１）×ｓビット右循環シフト処理が実行される。なお、ｓは１以上の整数である。
【００７１】
例えば、ｓビット左循環シフト回路２１１は、レジスタＲｅｇＬ２０３に格納されたｍビットの中間鍵ＭＫのｓビット循環左シフトを実行し、次のように、レジスタＲｅｇＬ２０３に格納された中間鍵ＭＫから、ｍビット×ｑのラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を作り出す。
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫ＜＜＜ｓ
ＭＫ３＝ＭＫ＜＜＜（２×ｓ）
・・・
ＭＫｑ−１＝ＭＫ＜＜＜（（ｑ−２）×ｓ）
ＭＫｑ＝ＭＫ＜＜＜（（ｑ−１）×ｓ）
【００７２】
なお、上記式において、［＜＜＜ｓ］は、ｓビット循環左シフトを表す。
ＭＫ１＝ＭＫは、シフト量ゼロのデータであり、中間鍵ＭＫに等しく、
ＭＫ２＝ＭＫ＜＜＜ｓは、中間鍵ＭＫに対して、左にｓビットの循環シフトを行なったデータ、
ＭＫ３＝ＭＫ＜＜＜（２×ｓ）は、中間鍵ＭＫに対して、左に２×ｓビットのシフトを行なったデータ、
・・・をそれぞれ示している。
【００７３】
ここで、初期鍵［ＩＫ］および最終鍵［ＦＫ］を含めたラウンド鍵を、それぞれｌ（エル）ビットであるとすると、ｌ（エル）ビット×（ｒ＋２）のラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝はラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝からデータを切り出して作られる。
【００７４】
例えば、セレクタ２０２に設定された中間鍵ＭＫのビット数ｍが、ラウンド鍵のビット数（ｌ（エル））の２倍、すなわち、ｍ＝２×ｌ（エル）とした場合、ラウンド鍵をラウンド中間鍵データから順に過不足なく切り出していくとすると、
ＩＫ＝（ＭＫ１）Ｌ
ＲＫ１＝（ＭＫ１）Ｒ
ＲＫ２＝（ＭＫ２）Ｌ
ＲＫ３＝（ＭＫ２）Ｒ
・・・
ＲＫｒ−２＝（ＭＫｑ−１）Ｌ
ＲＫｒ−１＝（ＭＫｑ−１）Ｒ
ＲＫｒ＝（ＭＫｑ）Ｌ
ＦＫ＝（ＭＫｑ）Ｒ
となる。
なお、（ｘ）Ｌはｘの上位ｌ（エル）ビット、（ｘ）Ｒはｘの下位ｌ（エル）ビットを表す。このとき、ｑ＝（ｒ＋２）／２を満たす。
【００７５】
この方式を適用した実装構成および処理について、図１１を参照して説明する。まず、中間鍵生成プロセスにおいて、ｋビットの秘密鍵Ｋを非線形変換回路２０１に入力して、ｍビットの中間鍵データＭＫを生成してセレクタ２０２を介してそのままシフト処理なしに、ラウンド中間鍵用レジスタＲｅｇＬ２０３に格納する。
【００７６】
暗号化の場合には、ｓビット左循環シフト回路２１１の処理信号をセレクタ２０２を介してラウンド中間鍵用レジスタＲｅｇＬ２０３に選択入力し、ラウンド中間鍵用レジスタＲｅｇＬ２０３に格納されたｍビットの中間鍵データＭＫに対するｓビット循環左シフトを繰り返し実行して、ラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を順次作り出すことができる。
【００７７】
さらに、ラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝は、各ラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝から、予め定められた選択シーケンスに従って所定のデータを選択することにより作り出される。データ選択は、セレクタ２０４において実行され、セレクタ２０４から、各ラウントにおいてｌ（エル）ビットのラウンド鍵が出力される。
【００７８】
この処理によって、すべてのラウンドのラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝が生成されて出力されると、最後にラウンド中間鍵用レジスタＲｅｇＬ２０３に格納されたデータを（ｑ−１）×ｓビット循環右シフトする。この処理は、（ｑ−１）×ｓビット右循環シフト回路２１２の処理信号をセレクタ２０２を介してラウンド中間鍵用レジスタＲｅｇＬ２０３に選択入力することで実行される。この右シフト処理によって、ラウンド中間鍵用レジスタＲｅｇＬ２０３に格納されたデータを、シフトなしの初期状態としての中間鍵データＭＫに戻すことができる。
【００７９】
図１２は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例である。図１２に示す復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部において、非線形変換回路２０１、セレクタ２０２、レジスタＲｅｇＬ２０３、セレクタ２０４は、図１１に示す構成と同様であり、シフト回路２２１，２２２のみが異なっている。
【００８０】
すなわち、復号処理におけるシフト回路２２１，２２２は、暗号処理におけるシフト回路２１１，２１２と逆向きのシフトを実行する回路、すなわち、
ｓビット右循環シフト回路２２１と、
（ｑ−１）×ｓビット左循環シフト回路２２２
によって構成される。
【００８１】
この復号処理における鍵スケジュール部では、まず、（ｑ−１）×ｓビット左循環シフト回路２２２の処理によって、レジスタＲｅｇＬ２０３に格納された中間鍵データを、（ｑ−１）×ｓビット循環左シフトする。その後に、ｓビット右循環シフト回路２２１の処理により、各ラウンドのラウンド鍵生成毎に、レジスタＲｅｇＬ２０３に格納されたデータを適宜ｓビット右循環シフトする。この処理シーケンスにより、ラウンド中間鍵データは、暗号処理時と逆の順番で生成される。すなわち、｛ＭＫｑ，ＭＫｑ−１，・・・，ＭＫ２，ＭＫ１｝を順次作り出すことができる。ラウンド鍵はラウンド中間鍵データから所定のデータをセレクタ２０４において選択することにより作り出される。
【００８２】
なお、図１１、図１２は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理の際のラウンド鍵生成処理を実行する構成であるが、これらの機能を兼ね備えた構成も構築可能である。この構成を図１３に示す。図１３に示す構成では、循環シフト回路２３１〜２３４を備え、それぞれ、
ｓビット左循環シフト回路２３１、
ｓビット右循環シフト回路２３２、
（ｑ−１）×ｓビット右循環シフト回路２３３、
（ｑ−１）×ｓビット左循環シフト回路２３４、
であり、図１１、図１２に構成された循環シフト回路をすべて含む構成であり、
ｓビット左循環シフト、ｓビット右循環シフト、（ｑ−１）×ｓビット右循環シフト、（ｑ−１）×ｓビット左循環シフトを選択的に実行することが可能な構成を持つ。この構成を適用することで、暗号化および復号処理いずれの場合もラウンド鍵を生成して出力することが可能となる。
【００８３】
次に、上述した鍵スケジュール部で生成されるラウンド中間鍵データの一様性について考える。ここで、ラウンド中間鍵データ、すなわち、
ＭＫ１＝ＭＫ
のビット列を
（ｍｋｍ−１，ｍｋｍ−２，…，ｍｋ１，ｍｋ０）
とする。
このとき、ラウンド中間鍵データ
ＭＫ２＝（ＭＫ＜＜＜ｓ）
＝（ｍｋｍ−ｓ−１，ｍｋｍ−ｓ−２，…，ｍｋ１，ｍｋ０，ｍｋｍ−１，ｍｋｍ−２，…，ｍｋｍ−ｓ＋１，ｍｋｍ−ｓ）
となる。
【００８４】
２つの異なるラウンド中間鍵データＭＫ１とラウンド中間鍵データＭＫ２の排他的論理和、すなわち、
ＭＫ１（ＥＸＯＲ）ＭＫ２を、
ＭＫ１（ＥＸＯＲ）ＭＫ２＝（ｕｍ−１，ｕｍ−２，…，ｕ１，ｕ０）とする。なお（ＥＸＯＲ）は排他的論理和演算を示す演算子とする。また、（ｕｍ−１，ｕｍ−２，…，ｕ１，ｕ０）は、ラウンド中間鍵データＭＫ１とラウンド中間鍵データＭＫ２の排他的論理和演算の結果データの構成ビットを示す。すると、
ｕｍ−１＝ｍｋｍ−１（ＥＸＯＲ）ｍｋｍ−ｓ−１
ｕｍ−２＝ｍｋｍ−２（ＥＸＯＲ）ｍｋｍ−ｓ−２
・・・
ｕｓ＋１＝ｍｋｓ＋１（ＥＸＯＲ）ｍｋ１
ｕｓ＝ｍｋｓ（ＥＸＯＲ）ｍｋ０
ｕｓ−１＝ｍｋｓ−１（ＥＸＯＲ）ｍｋｍ−１
・・・
ｕ１＝ｍｋ１（ＥＸＯＲ）ｍｋｍ−ｓ＋１
ｕ０＝ｍｋ０（ＥＸＯＲ）ｍｋｍ−ｓ
と、表すことができる。
【００８５】
このとき、ビット［ｕ０］は他のビット（ｕｍ−１，ｕｍ−２，…，ｕ２，ｕ１）を用いて、
ｕ０＝ｕｍ−１（ＥＸＯＲ）ｕｍ−２（ＥＸＯＲ），・・・（ＥＸＯＲ）ｕ２（ＥＸＯＲ）ｕ１
と表現できる。つまり、中間鍵データＭＫがランダムであるとしても、２つのラウンド中間鍵データの排他的論理和演算の結果、
ＭＫ１（ＥＸＯＲ）ＭＫ２
この結果として得られるビットは、上記の性質を満たすことになり、結果として、ｍビット（ｕｍ−１，ｕｍ−２，…，ｕ１，ｕ０）中の１ビット（ｕ０）は、他のビット情報によって記述可能となり、その情報量が１ビット分欠損してしまう。１ビット欠損することは、例えばビット解析を行なう場合に、解析対象とするビット数を削減することが可能となることを意味し、解析、すなわち鍵解析を行なう暗号攻撃に有利な条件となる。
【００８６】
同様に、任意のラウンド中間鍵データ同士の排他的論理和、
ＭＫｉ（ＥＸＯＲ）ＭＫｊ（０≦ｉ，ｊ≦ｑ−１，ｉ≠ｊ）
についても、その情報量が１ビット分欠損してしまう。
ＭＫｉ（ＥＸＯＲ）ＭＫｊの情報量が１ビット分欠損することによる影響に関しては，例えばＭＫｉ（ＥＸＯＲ）ＭＫｊを全数探索する場合にその情報量が少ないため、全数探索が容易になり、鍵の解析を容易にし、暗号攻撃を行いやすくする弊害を発生させる。
【００８７】
また、中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を生成する際に、循環シフトを用いた場合、中間鍵データＭＫの全てのビットが０になる場合，または全てのビットが１になる場合には、任意のラウンド中間鍵データＭＫｉも同様に全てのビットが０，または全てのビットが１となってしまい、全てのラウンド鍵が同じになってしまうという問題を発生させる。
【００８８】
また、秘密鍵Ｋより生成されたラウンド中間鍵データＭＫ１と別の秘密鍵Ｋ'より生成されたラウンド中間鍵データＭＫ２'が同じ値になった場合には、結果として、その後のシフト処理によって生成される各ラウンド中間鍵データも等しくなる。すなわち、
ＭＫ１＝ＭＫ２'
ＭＫ２＝ＭＫ３'
・・・
ＭＫｑ−２＝ＭＫｑ−１'
ＭＫｑ−１＝ＭＫｑ'
上記状態が発生する。このように、多くのラウンド中間鍵データが同じになり、ラウンド中間鍵データから生成するラウンド鍵もセレクタ条件が等しい場合には同じになってしまう。このような鍵の出現は、前述のｓｌｉｄｅ  ａｔｔａｃｋ（スライド攻撃）を可能とするという問題を発生させることになる。
【００８９】
また、この鍵スケジュール部がラウンド数ｒ１のｋ１ビットの鍵長、ラウンド数ｒ２のｋ２ビットを共にサポートしている場合（ｒ１＜ｒ２かつｋ１＜ｋ２とする）を考える。ｋ１ビットの秘密鍵Ｋ１から生成された中間鍵ＭＫとｋ２ビットの秘密鍵Ｋ２から生成された中間鍵ＭＫ'が一致した場合には、秘密鍵ＭＫのラウンド中間鍵データと秘密鍵ＭＫ'のｒ１段分のラウンド中間鍵データが等しくなる。このような状況は、前述したｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋ（関連暗号攻撃）の適用を可能にするという問題を発生させることになる。
【００９０】
上記のように、図１１〜図１３を参照して説明した中間鍵データの生成構成、すなわち、１つの中間鍵ＭＫに対してシフト処理を実行して複数の中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を生成する構成では、以下のような明らかに暗号攻撃を容易にするという問題を発生させる。すなわち、
＊ラウンド中間鍵データの排他的論理和の情報量が１ビット分欠損する。
＊中間鍵データの全てのビットが０になる場合，または全てのビットが１になる場合にはラウンド鍵が全て同じとなる。
＊Ｓｌｉｄｅ  ａｔｔａｃｋに対して十分な耐性がない。
＊Ｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋに対して十分な耐性がない。
このように、暗号攻撃を容易にする欠点をもつ。
【００９１】
（２−３）本発明の第１実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
以下、上述した循環シフト処理による中間鍵データの生成処理における問題点を解決し、様々な暗号攻撃に対する耐性の高い、すなわち安全性の高い暗号処理を実行するための中間鍵データおよびラウンド鍵の生成処理構成について説明する。
【００９２】
以下では、秘密鍵Ｋに基づく非線形変換処理の結果として得られた中間鍵ＭＫに対して、循環シフト処理を実行するのではなく、ｘｓ倍演算を用いてラウンド中間鍵データを生成する処理構成について説明する。
【００９３】
すなわち、秘密鍵Ｋに基づく非線形変換処理の結果として得られる中間鍵ＭＫから、中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を生成する際、ｓビット循環シフトを適用せず、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を用いる。
【００９４】
例えば、秘密鍵Ｋに基づく非線形変換処理の結果として得られる中間鍵ＭＫのビット数ｍをｍ＝１２８とし、ｍ次の既約多項式をｆ（ｘ）＝ｘ１２８＋ｘ７＋ｘ２＋ｘ１＋１とすると、拡大体ＧＦ（２１２８）上のｘ倍演算は以下のように定義できる。１２８ｂｉｔのデータを、
Ａ＝（ａ１２７，ａ１２６，…，ａ１，ａ０），
Ｂ＝（ｂ１２７，ｂ１２６，…，ｂ１，ｂ０）
とする。
拡大体ＧＦ（２１２８）上のｘ倍演算：Ｂ＝Ａｘは、以下のように表現される。
（ａ１２７，ａ１２６，・・・，ａ１，ａ０）→（ｂ１２７，ｂ１２６，・・・，ｂ１，ｂ０）
ここで、
ｂ１２７＝ａ１２６
ｂ１２６＝ａ１２５
・・・
ｂ８＝ａ７
ｂ７＝ａ６（ＥＸＯＲ）ａ１２７
ｂ６＝ａ５
ｂ５＝ａ４
ｂ４＝ａ３
ｂ３＝ａ２
ｂ２＝ａ１（ＥＸＯＲ）ａ１２７
ｂ１＝ａ０（ＥＸＯＲ）ａ１２７
ｂ０＝ａ１２７
となる。
【００９５】
上記演算は、拡大体ＧＦ（２１２８）上のｘ倍演算：Ｂ＝Ａｘによって得られるデータＢとデータＡの対応を示している。ｘｓ倍演算は上記のｘ倍演算をｓ回繰り返した演算となる。
【００９６】
また、ｘ倍演算の逆変換であるｘ−１倍演算は以下のように定義できる。
ｘ−１倍演算：Ｂ＝Ａｘ−１
（ａ１２７，ａ１２６，…，ａ１，ａ０）→（ｂ１２７，ｂ１２６，…，ｂ１，ｂ０）
ここで、
ｂ１２７＝ａ０
ｂ１２６＝ａ１２７
ｂ１２５＝ａ１２６
・・・
ｂ７＝ａ８
ｂ６＝ａ０（ＥＸＯＲ）ａ７
ｂ５＝ａ６
ｂ４＝ａ５
ｂ３＝ａ４
ｂ２＝ａ３
ｂ１＝ａ０（ＥＸＯＲ）ａ２
ｂ０＝ａ０（ＥＸＯＲ）ａ１
となる。
【００９７】
上記演算は、拡大体ＧＦ（２１２８）上のｘ倍演算の逆変換であるｘ−１倍演算：Ｂ＝Ａｘ−１によって得られるデータＢとデータＡの対応を示している。なお、ｘ−ｓ倍演算は上記のｘ−１倍演算をｓ回繰り返した演算となる。
【００９８】
ｘｓ倍演算、またはｘ−ｓ倍演算を用いたラウンド鍵生成処理構成について、図１４〜図１６を参照して説明する。
図１４は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図１５は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図１６は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例を示している。
【００９９】
まず、図１４に示す暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成、および処理について説明する。秘密鍵Ｋをｋビットとする。秘密鍵Ｋを、非線形変換回路３０１に入力し、非線形変換処理を行いｍビットの中間鍵データを生成する。中間鍵をＭＫとする。
【０１００】
中間鍵ＭＫは、セレクタ３０２を介してレジスタＲｅｇＬ３０３に入力され格納される。セレクタ３０２には、ｘｓ倍演算回路３１１、ｘ−（ｑ−１）×ｓ倍演算回路３１２が接続され、セレクタ３０２を介してレジスタＲｅｇＬ３０３に対して、それぞれの処理信号を入力し、レジスタＲｅｇＬ３０３に格納されたデータのｘｓ倍演算、またはｘ（ｑ−１）×ｓ倍演算を実行する。
【０１０１】
例えば、ｘｓ倍演算回路３１１は、レジスタＲｅｇＬ３０３に格納されたｍビットの中間鍵ＭＫのｘｓ倍演算を実行し、次のように、レジスタＲｅｇＬ３０３に格納された中間鍵ＭＫから、ｍビット×ｑのラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を作り出す。
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
【０１０２】
上記式において、ｘｓは、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算であり、先に説明したｘ倍演算をｓ回繰り返した演算となる。ｘ２×ｓは、先に説明したｘ倍演算を２ｓ回繰り返した演算となる。
【０１０３】
ここで、初期鍵［ＩＫ］および最終鍵［ＦＫ］を含めたラウンド鍵を、それぞれｌ（エル）ビットであるとすると、ｌ（エル）ビット×（ｒ＋２）のラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝は、上記手法によって生成されたラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝からデータを切り出して作られる。
【０１０４】
この方式を適用した実装構成および処理について、図１４を参照して説明する。まず、中間鍵生成プロセスにおいて、ｋビットの秘密鍵Ｋを非線形変換回路３０１に入力して、ｍビットの中間鍵データＭＫを生成してセレクタ３０２を介して、そのままシフト処理なしに、ラウンド中間鍵用レジスタＲｅｇＬ３０３に格納する。
【０１０５】
暗号化の場合には、ｘｓ倍演算回路３１１の処理信号をセレクタ３０２を介してラウンド中間鍵用レジスタＲｅｇＬ３０３に選択入力し、ラウンド中間鍵用レジスタＲｅｇＬ３０３に格納されたｍビットの中間鍵データＭＫに対するｘｓ倍演算を繰り返し実行して、上述した演算、すなわち、
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
これらの演算を実行して、ラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を順次作り出すことができる。
【０１０６】
さらに、ラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝は、各ラウンド中間鍵データ｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝から、予め定められた選択シーケンスに従って所定のデータを選択することにより作り出される。データ選択は、セレクタ２０４において実行され、セレクタ２０４から、各ラウントにおいてｌ（エル）ビットのラウンド鍵が出力される。
【０１０７】
この処理によって、すべてのラウンドのラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝が生成されて出力されると、最後にラウンド中間鍵用レジスタＲｅｇＬ２０３に格納されたデータに対して、ｘ−（ｑ−１）×ｓ倍演算を実行する。この処理は、ｘ−（ｑ−１）×ｓ倍演算回路３１２の処理信号をセレクタ３０２を介してラウンド中間鍵用レジスタＲｅｇＬ２０３に選択入力することで実行される。このｘ−（ｑ−１）×ｓ倍演算処理によって、ラウンド中間鍵用レジスタＲｅｇＬ３０３に格納されたデータを、初期状態としての中間鍵データＭＫに戻すことができる。すなわち、
ｑ−１回目の最終的なｘｓ倍演算によって生成されたラウンド中間鍵データ、
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
に対して、
ｘ−（ｑ−１）×ｓ倍算を実行して、
ｘｓ倍演算実行前のオリジナル中間鍵ＭＫに戻す処理を実行する。
【０１０８】
図１５は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例である。図１５に示す復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部において、非線形変換回路３０１、セレクタ３０２、レジスタＲｅｇＬ３０３、セレクタ３０４は、図１４に示す構成と同様であり、演算回路３２１，３２２のみが異なっている。
【０１０９】
すなわち、復号処理における演算回路３２１，３２２は、暗号処理における演算回路３１１，３１２の実行するｘ倍算の逆変換であるｘ−１倍算を実行する回路、すなわち、
ｘ−ｓ倍演算回路３２１と、
ｘ（ｑ−１）×ｓ倍演算回路３２２
によって構成される。
【０１１０】
この復号処理における鍵スケジュール部では、まず、ｘ（ｑ−１）×ｓ倍演算回路３２２の処理によって、レジスタＲｅｇＬ３０３に格納された中間鍵データに対して、ｘ（ｑ−１）×ｓ倍演算処理を実行する。その後に、ｘ−ｓ倍演算回路３２１の処理を実行して、各ラウンドのラウンド鍵生成毎に、レジスタＲｅｇＬ２０３に格納されたデータに対するｘ−ｓ倍演算処理を実行する。この処理シーケンスにより、ラウンド中間鍵データは、暗号処理時と逆の順番で生成される。すなわち、｛ＭＫｑ，ＭＫｑ−１，・・・，ＭＫ２，ＭＫ１｝を順次作り出すことができる。ラウンド鍵はラウンド中間鍵データから所定のデータをセレクタ３０４において選択することにより作り出される。
【０１１１】
なお、図１４、図１５は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理の際のラウンド鍵生成処理を実行する構成であるが、これらの機能を兼ね備えた構成も構築可能である。この構成を図１６に示す。図１６に示す構成では、演算回路３３１〜３３４を備え、それぞれ、
ｘｓ倍演算回路３３１、
ｘ−ｓ倍演算回路３３２、
ｘ−（ｑ−１）×ｓ倍演算回路３３３、
ｘ（ｑ−１）×ｓ倍演算回路３３４、
であり、図１４、図１５に構成された演算回路をすべて含む構成であり、
ｘｓ倍演算、ｘ−ｓ倍演算、ｘ−（ｑ−１）×ｓ倍演算、ｘ（ｑ−１）×ｓ倍演算を選択的に実行することが可能な構成を持つ。この構成を適用することで、暗号化および復号処理いずれの場合もラウンド鍵を生成して出力することが可能となる。
【０１１２】
次に、上述した鍵スケジュール部で生成されるラウンド中間鍵データの一様性について考える。２つの異なるラウンド中間鍵データＭＫ１とラウンド中間鍵データＭＫ２の排他的論理和、すなわち、
ＭＫ１（ＥＸＯＲ）ＭＫ２は、以下に示すように、
ＭＫ１（ＥＸＯＲ）ＭＫ２
＝ＭＫ（ＥＸＯＲ）ＭＫｘｓ
＝ＭＫ（１（ＥＸＯＲ）ｘｓ）
と一意に表せる。
【０１１３】
逆に演算を施していない元の中間鍵ＭＫは、２つの異なるラウンド中間鍵データＭＫ１とラウンド中間鍵データＭＫ２の排他的論理和、
ＭＫ１（ＥＸＯＲ）ＭＫ２
を適用して、
ＭＫ＝（ＭＫ１（ＥＸＯＲ）ＭＫ２）（１（ＥＸＯＲ）ｘｓ）−１
として、こちらも一意に表せる。
【０１１４】
つまり、オリジナルの中間鍵ＭＫと、中間鍵ＭＫに対する演算によって生成される複数の異なるラウンド中間鍵データＭＫ１とラウンド中間鍵データＭＫ２の排他的論理和、すなわち、
ＭＫ１（ＥＸＯＲ）ＭＫ２
とは、一対一の関係にあり、前述した循環シフト処理による中間鍵データの生成構成とは異なり、中間鍵データＭＫに対してＭＫ１（ＥＸＯＲ）ＭＫ２の情報量が欠損することはない。
【０１１５】
同様に、任意のラウンド中間鍵データ同士の排他的論理和、
ＭＫｉ（ＥＸＯＲ）ＭＫｊ  （０≦ｉ，ｊ≦ｑ−１，ｉ≠ｊ）
についても、中間鍵データＭＫに対してその情報量が欠損することはない。従って、鍵解析において、解析不要とするビット情報が発生せず、ビット解析の困難性を高めることが可能となる。
【０１１６】
また，拡大体ＧＦ（２１２８）上のｘ倍演算のｂ０，ｂ１，ｂ７で確認できるように、ｘｓ倍演算においては被乗数の上位ビットがその下位ビットと排他的論理和された値が結果のビットに割り当てられることがあるため、ｓビット循環シフトと比較してラウンド中間鍵データが攪拌されやすいと考えられる。また、（ｑ−１）×ｓを、中間鍵データＭＫのビット長ｍに近い値に設定することにより、ラウンド中間鍵データをより多く攪拌することが可能になる。
【０１１７】
さらに、中間鍵データＭＫの全てのビットが１になる場合を考える。
ＭＫ＝（ｍｋｍ−１，ｍｋｍ−２，…，ｍｋ１，ｍｋ０）
とする。
このとき、中間鍵データＭＫに対してｘ倍演算を施したＭＫｘは上記の拡大体ＧＦ（２１２８）上のｘ倍演算で確認できるように、ｍｋｍ−１の値で排他的論理和をとったＭＫｘのビットが０となることから、ＭＫｘの全てのビットが１になることはない。
同様にＭＫｘｓも全てのビットが１になることはないため、任意のラウンド中間鍵データＭＫｉも同様に全てのビットが１になることはなく、全てのラウンド鍵が同じになることはない。
従って、例えば前述のｓｌｉｄｅ  ａｔｔａｃｋ（スライド攻撃）を困難にすることが可能であり、暗号攻撃に対する耐性の高い、すなわち安全性の高い暗号処理が実現される。
【０１１８】
（２−４）本発明の第２実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
次に、本発明の第２実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について、図１７〜図１９を参照して説明する。以下において説明する実施例は、図１４〜図１６を参照して説明した構成によって生成するラウンド鍵データに対して、ラウンド毎に異なる定数Ｃｉを排他的論理和（ＥＸＯＲ）し、この結果をラウンド鍵とする構成である。
【０１１９】
すなわち、図１４〜図１６を参照して説明した構成によって生成するラウンド鍵データに対して、各ラウンド（ｉ）ごとに、異なる定数Ｃｉ（１≦ｉ≦ｒ−１）を排他的論理和（ＥＸＯＲ）したデータをラウンド鍵とする。
【０１２０】
本実施例に係るｘｓ倍演算、またはｘ−ｓ倍演算を用い、さらに、定数Ｃの排他的論理和（ＥＸＯＲ）を適用したラウンド鍵生成処理構成について、図１７〜図１９を参照して説明する。
図１７は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図１８は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図１９は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例を示している。
【０１２１】
図１７は、先に説明した図１４に示すｘｓ倍演算を適用した暗号化用のラウンド鍵生成処理を実行するラウンド鍵生成処理構成に対して、各ラウンド（ｉ）ごとに、異なる定数Ｃｉ（１≦ｉ≦ｒ−１）を生成する定数Ｃｉ生成回路４０１と、定数Ｃｉ生成回路４０１において生成したラウンド毎の定数Ｃｉ（１≦ｉ≦ｒ−１）と、セレクタ３０４の選択する各ラウンド毎のデータとの排他的論理和演算（ＥＸＯＲ）を実行する排他的論理和（ＥＸＯＲ）演算部４０２を追加した構成である。本実施例では、この排他的論理和（ＥＸＯＲ）演算部４０２による演算結果をラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝として出力する。
【０１２２】
図１８は、先に説明した図１５に示すｘ−ｓ倍演算を適用した復号用のラウンド鍵生成処理を実行するラウンド鍵生成処理構成に対して、定数Ｃｉ生成回路４０１と、排他的論理和（ＥＸＯＲ）演算部４０２を追加した構成であり、図１９は、図１７、図１８の両者を実行可能とした構成であり、先に説明した図１６に示す構成に、定数Ｃｉ生成回路４０１と、排他的論理和（ＥＸＯＲ）演算部４０２を追加した構成である。
【０１２３】
これらの構成では、セレクタ３０４の出力する各ラウンド毎のデータと、ラウンド毎に異なる定数Ｃｉを排他的論理和（ＥＸＯＲ）し、この結果をラウンド鍵とする。これは、例えば、中間鍵データＭＫの全てのビットが０となった場合、最終的に出力されるラウンド鍵｛ＩＫ，ＲＫ１，ＲＫ２，・・・，ＲＫｒ−１，ＲＫｒ，ＦＫ｝を同じデータとしないための措置である。
【０１２４】
例えば、図１７〜図１９に示す構成において、レジスタＲｅｇＬ３０３に格納される中間鍵データＭＫの全てのビットが０となった場合、ｘｓ倍演算、あるいはｘ−ｓ倍演算を施して生成したラウンド中間鍵データＭＫｉの全てのビットは０になるが、図１７〜図１９に示す構成では、セレクタ３０４の出力する各ラウンド毎のデータと、ラウンド毎に異なる定数Ｃｉを排他的論理和（ＥＸＯＲ）し、この結果をラウンド鍵としており、ラウンド毎に異なる定数Ｃｉが排他的論理和されることにより、ラウンド鍵が同じになることがない。
【０１２５】
また、秘密鍵Ｋより生成されたラウンド中間鍵データＭＫ１と別の秘密鍵Ｋ'より生成されたラウンド中間鍵データＭＫ２'が同じ値になった場合には以降の中間鍵データが同じになるが、ラウンド鍵に関してはラウンド毎に異なる定数Ｃｉが排他的論理和されることにより、ラウンド鍵は同じにならない。つまり、前述したｓｌｉｄｅ  ａｔｔａｃｋを防ぐことができる。
【０１２６】
また、図１７〜図１９に示す鍵生成構成が複数の鍵長をサポートする場合を考える。各ラウンド異なる定数を鍵長に応じて変えることによって、異なる鍵長において、中間鍵データＭＫが同じ値になった場合にもラウンド鍵を異なる値にすることができ、ｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋ（関連暗号攻撃）に対する耐性を高めることが可能となる。
【０１２７】
例えば、
ラウンド数ｒ１のｋ１ビットの鍵長、
ラウンド数ｒ２のｋ２ビットの鍵長、
ラウンド数ｒ３のｋ３ビットの鍵長、
これらの全てをサポートする構成である場合、
合計ｒ１＋ｒ２＋ｒ３個の異なるｌ（エル）ビットの定数Ｃｉを用いて排他論理和（ＥＸＯＲ）を実行する構成とすることにより、異なる鍵長において中間鍵データＭＫが同じ値になった場合にもラウンド鍵を異なる値にすることができる。
【０１２８】
なお、ラウンド毎に異なるｌ（エル）ビットの定数をラウンド数ｒに応じてｒ通り生成する回路は、ｌ（エル）が大きい場合にはその回路規模も大きくなる。この問題を解決する構成としては、例えば、ｌ（エル）ビットのデータをラウンド毎に異なるｗビットのデータｂｉに分割して、ｂｉをｌ／ｗ回繰り返し使用する。この構成により、回路規模を小さくすることができる。
【０１２９】
例えばｌ（エル）＝６４の場合には、ラウンド毎に異なる６４ｂｉｔの定数、すなわち、ラウンドｉに適用する定数Ｃｉをラウンド（ｉ）毎に異なる８ビットのｂｉで以下のように構成する。
Ｃｉ＝（ｂｉ，ｂｉ，ｂｉ，ｂｉ，ｂｉ，ｂｉ，ｂｉ，ｂｉ）
このように、ラウンド毎に異なる８ビットのｂｉを繰り返し用いることにより定数生成回路の規模を小さくすることができる。
【０１３０】
また、
Ｃｉ＝（ｂｉ，ｂｉ，ｂｉ，ｂｉ，〜ｂｉ，〜ｂｉ，〜ｂｉ，〜ｂｉ）
このような定数Ｃｉを生成する構成、すなわち、ｂｉとｂｉの反転データ〜ｂｉを用いる構成としてもよい。
【０１３１】
また、ラウンドｉに適用する定数Ｃｉの構成ビットｂｉをある初期値からラウンド毎にある規則を用いて更新するような回路とするとその回路規模は小さくすることができる。その規則をＧＦ（２）上で定義されるｗ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｗ）上のｘ倍演算としてもよい。
このとき、例えば，ｗ＝８でｗ次の既約多項式をｆ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ２＋１とすると、
ｂｉ＝（ｄ７，ｄ６，…，ｄ１，ｄ０）はｂｉ−１＝（ｃ７，ｃ６，…，ｃ１，ｃ０）を用いて以下のように示される。
ｄ７＝ｃ６
ｄ６＝ｃ５
ｄ５＝ｃ４
ｄ４＝ｃ３（ＥＸＯＲ）ｃ７
ｄ３＝ｃ２（ＥＸＯＲ）ｃ７
ｄ２＝ｃ１（ＥＸＯＲ）ｃ７
ｄ１＝ｃ０
ｄ０＝ｃ７
上記のように更新することができる。ｆ（ｘ）が原始多項式の場合には、ある初期値から生成されるｘ倍演算の値の周期は２ｗ−１となるため、２ｗ−１の異なるデータを生成することが可能となる。他に、上記規則を拡大体ＧＦ（２ｗ）上のｘ−１倍演算などとしてもよい。
【０１３２】
このように、実施例２では、実施例１の構成に残る問題点を解決し、
＊ラウンド中間鍵データの排他的論理和の情報量が欠損しない。
＊中間鍵データの全てのビットが０になる場合，または全てのビットが１になる場合であってもラウンド鍵が全て同じにはならない。
＊Ｓｌｉｄｅ  ａｔｔａｃｋに対して十分な耐性がある。
＊Ｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋに対して十分な耐性がある。
これらのすべてを満たす鍵スケジュール部の構成が実現される。
【０１３３】
本発明の暗号処理装置の構成についてまとめると、本発明の暗号処理装置は以下のような構成を有する。
本発明の暗号処理装置は、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有する共通鍵ブロック暗号処理を実行する暗号処理装置であり、鍵スケジュール部は、秘密鍵の構成データに対する非線形変換処理を適用した変換処理によって生成するｍビットの中間鍵に対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成し、ラウンド中間鍵の構成データのビット選択により、ラウンド鍵を生成する構成を有する。なお、鍵スケジュール部の生成するラウンド鍵は、ラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とが含まれる。
【０１３４】
具体的には、鍵スケジュール部は、秘密鍵の変換処理によって生成するｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行し、ｑ個のラウンド中間鍵｛ＭＫ１，ＭＫ２，・・・，ＭＫｑ−１，ＭＫｑ｝を、
ＭＫ１＝ＭＫ
ＭＫ２＝ＭＫｘｓ
ＭＫ３＝ＭＫｘ２×ｓ
・・・
ＭＫｑ−１＝ＭＫｘ（ｑ−２）×ｓ
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
上記式に従って生成する。
【０１３５】
さらに、鍵スケジュール部は、生成するラウンド中間鍵数をｑ個としたとき、ｘｓ倍演算を繰り返し実行して、ｑ個の異なるラウンド中間鍵を生成した後、ｑ−１回目の最終的なｘｓ倍演算によって生成されたラウンド中間鍵データ、
ＭＫｑ＝ＭＫｘ（ｑ−１）×ｓ
に対して、
ｘ−（ｑ−１）×ｓ倍算を実行して、
ｘｓ倍演算実行前のオリジナル中間鍵ＭＫに戻す処理を実行する。
【０１３６】
さらに、鍵スケジュール部は、上述した第２実施例で説明した構成では、ｘｓ倍演算を繰り返し実行して生成したラウンド中間鍵の構成データからのビット選択データに対して、ラウンド毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成する構成となる。
【０１３７】
上記構成を持つ鍵スケジュール部において生成されるラウンド鍵は、上述したように、ラウンド中間鍵データの排他的論理和の情報量が欠損せず、中間鍵データの全てのビットが０になる場合，または全てのビットが１になる場合であってもラウンド鍵が全て同じにはならないという特徴を持ち、例えばＳｌｉｄｅ  ａｔｔａｃｋや、Ｒｅｌａｔｅｄ  ｃｉｐｈｅｒ  ａｔｔａｃｋに対して十分な耐性がある安全性の高い暗号処理構成が実現される。
【０１３８】
［３．暗号処理装置の構成例］
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのＩＣモジュール７００の構成例を図２０に示す。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図２０に示すＩＣモジュール７００は、これら様々な機器に構成することが可能である。
【０１３９】
図２０に示すＣＰＵ(Central processing Unit)７０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ７０２は、ＣＰＵ７０１が実行するプログラム、あるいは演算パラメータなどの固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ７０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ７０２は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル（置換表）や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１４０】
暗号処理部７０３は、例えば上述した各種の暗号処理構成、すなわち、
（ア）ＳＰＮ（Substitution Permutation Network）構造、
（イ）Ｆｅｉｓｔｅｌ構造、
（ウ）拡張Ｆｅｉｓｔｅｌ構造、
これらの各構成のいずれかの構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
【０１４１】
また、暗号処理部７０３は、上述した各実施例に対応した構成、すなわち、
（２−３）本発明の第１実施例に係る中間鍵データおよびラウンド鍵の生成処理
（２−４）本発明の第２実施例に係る中間鍵データおよびラウンド鍵の生成処理
これらの処理構成のいずれかに対応する構成を持つ鍵スケジュール部を持つ。
【０１４２】
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭに格納し、ＣＰＵ７０１がＲＯＭ格納プログラムを読み出して実行するように構成してもよい。
【０１４３】
乱数発生器７０４は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０１４４】
送受信部７０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１４５】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１４６】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１４７】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０１４８】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１４９】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１５０】
上述したように、本発明の一実施例の構成によれば、共通鍵ブロック暗号処理を実行する暗号処理装置におけるラウンド鍵を生成する鍵スケジュール部において、秘密鍵から生成したｍビットの中間鍵ＭＫに対して、ＧＦ（２）上で定義されるｍ次の既約多項式ｆ（ｘ）によって作られる拡大体ＧＦ（２ｍ）上のｘｓ倍演算を繰り返し実行して、複数の異なるラウンド中間鍵を生成して、このラウンド中間鍵に基づいて複数の異なるラウンド鍵を生成する構成とした。また、本発明の一実施例の構成によれば、さらに、ラウンド中間鍵から選択されたデータに対して、各ラウンド毎に異なる定数を適用した排他的論理和演算によりラウンド鍵を生成する構成とした。本構成により、鍵の解析困難性を高めた安全性の高い暗号処理構成が実現される。
【図面の簡単な説明】
【０１５１】
【図１】共通鍵ブロック暗号アルゴリズムの基本構成を示す図である。
【図２】図１に示す共通鍵ブロック暗号処理部Ｅ１０の内部構成について説明する図である。
【図３】図２に示す暗号処理部１２の詳細構成について説明する図である。
【図４】ラウンド関数実行部の一構成例としてのＳＰＮ構造ラウンド関数について説明する図である。
【図５】ラウンド関数実行部の一構成例としてのＦｅｉｓｔｅｌ（フェイステル）構造について説明する図である。
【図６】ラウンド関数実行部の一構成例としての拡張Ｆｅｉｓｔｅｌ構造について説明する図である。
【図７】非線形変換処理部の具体例について説明する図である。
【図８】線形変換処理部の具体例について説明する図である。
【図９】暗号化処理における秘密鍵Ｋと、初期鍵、ラウンド鍵、最終鍵の対応について説明する図である。
【図１０】復号処理における秘密鍵Ｋと、初期鍵、ラウンド鍵、最終鍵の対応について説明する図である。
【図１１】暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１２】復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１３】暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１４】暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１５】復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１６】暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１７】暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１８】復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図１９】暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。
【図２０】本発明に係る暗号処理を実行する暗号処理装置としてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１５２】
１０  共通鍵ブロック暗号処理部Ｅ
１１  鍵スケジュール部
１２  暗号処理部
２０  ラウンド関数実行部
２１  排他的論理和演算部
２２  非線形変換処理部
２３  線形変換処理部
３０  Ｆ関数部
３１  排他的論理和演算部
３２  非線形変換処理部
３３  線形変換処理部
３４  排他的論理和演算部
４１，４２  Ｆ関数部
５０  非線形変換処理部
５１  Ｓボックス
１１１  秘密鍵
１１２  暗号化鍵スケジュール部
１１３  暗号化拡大鍵
１１４  データ暗号化部
１２１  秘密鍵
１２２  復号鍵スケジュール部
１２３  復号拡大鍵
１２４  データ復号部
２０１  非線形変換回路
２０２  セレクタ
２０３  レジスタ
２０４  セレクタ
２１１  ｓビット左循環シフト回路
２１２  （ｑ−１）×ｓビット右循環シフト回路
２２１  ｓビット右循環シフト回路
２２２  （ｑ−１）×ｓビット左循環シフト回路
２３１  ｓビット左循環シフト回路
２３２  ｓビット右循環シフト回路
２３３  （ｑ−１）×ｓビット右循環シフト回路
２３４  （ｑ−１）×ｓビット左循環シフト回路
３０１  非線形変換回路
３０２  セレクタ
３０３  レジスタ
３０４  セレクタ
３１１  ｘｓ倍演算回路
３１２  ｘ−（ｑ−１）×ｓ倍演算回路
３２１  ｘ−ｓ倍演算回路
３２２  ｘ（ｑ−１）×ｓ倍演算回路
４０１  定数Ｃｉ生成回路
４０２  排他的論理和（ＥＸＯＲ）演算部
７００  ＩＣモジュール
７０１  ＣＰＵ(Central processing Unit)
７０２  メモリ
７０３  暗号処理部
７０４  乱数発生器
７０５  送受信部
【図１】
2008058827.tif 000003
【図２】
2008058827.tif 000004
【図３】
2008058827.tif 000005
【図４】
2008058827.tif 000006
【図５】
2008058827.tif 000007
【図６】
2008058827.tif 000008
【図７】
2008058827.tif 000009
【図８】
2008058827.tif 000010
【図９】
2008058827.tif 000011
【図１０】
2008058827.tif 000012
【図１１】
2008058827.tif 000013
【図１２】
2008058827.tif 000014
【図１３】
2008058827.tif 000015
【図１４】
2008058827.tif 000016
【図１５】
2008058827.tif 000017
【図１６】
2008058827.tif 000018
【図１７】
2008058827.tif 000019
【図１８】
2008058827.tif 000020
【図１９】
2008058827.tif 000021
【図２０】
2008058827.tif 000022