(57)【要約】【課題】低コストかつメモリ記憶データの削減を可能としたＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成を実現する。【解決手段】非線形変換部および線形変換部を有するＳＰ型のＦ関数を、複数ラウンド繰り返し実行するＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理において、各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数、例えばＡＥＳやＷｈｉｒｌｐｏｏｌなどにおいて適用される変換処理と同一の変換処理として実行する構成とした。本構成により、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。【選択図】図３
2007192893.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部を有し、
前記暗号処理部は、
各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成であることを特徴とする暗号処理装置。
【請求項２】
前記暗号処理部は、
各ラウンドの線形変換処理に、少なくとも２以上の異なる複数の行列を選択的に適用する構成であり、選択適用する行列の少なくとも１つは前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記暗号処理部は、
各ラウンドの線形変換処理に、２つの異なる行列Ｍ０，Ｍ１を選択的に適用する構成であり、各行列Ｍ０，Ｍ１の配置は、
（ａ）奇数ラウンドにＭ０，Ｍ１の順に配置、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１の順に配置、
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用する構成であることを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記暗号処理部は、
各ラウンドの線形変換処理に、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を選択的に適用する構成であり、各行列Ｍ０，Ｍ１，Ｍ２の配置は、
（ａ）奇数ラウンドにＭ０，Ｍ１，Ｍ２の順に配置、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１，Ｍ２の順に配置、
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用する構成であることを特徴とする請求項２に記載の暗号処理装置。
【請求項５】
前記暗号処理部は、
６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成であり、
各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＡＥＳ暗号アルゴリズムにおいて適用される行列であることを特徴とする請求項１〜４いずれかに記載の暗号処理装置。
【請求項６】
前記暗号処理部は、
ＡＥＳ暗号処理と、６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする請求項５に記載の暗号処理装置。
【請求項７】
前記暗号処理部は、
１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成であり、
各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＷｈｉｒｌｐｏｏｌハッシュ関数において適用される行列であることを特徴とする請求項１〜４いずれかに記載の暗号処理装置。
【請求項８】
前記暗号処理部は、
Ｗｈｉｒｌｐｏｏｌハッシュ関数と、１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする請求項７に記載の暗号処理装置。
【請求項９】
暗号処理方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理ステップを有し、
前記暗号処理ステップは、
各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行することを特徴とする暗号処理方法。
【請求項１０】
前記暗号処理ステップは、
各ラウンドの線形変換処理に、少なくとも２以上の異なる複数の行列を選択的に適用し、選択適用する行列の少なくとも１つは前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする請求項９に記載の暗号処理方法。
【請求項１１】
前記暗号処理ステップは、
各ラウンドの線形変換処理に、２つの異なる行列Ｍ０，Ｍ１を選択的に適用する処理を実行するステップであり、各行列Ｍ０，Ｍ１の適用順は、
（ａ）奇数ラウンドにＭ０，Ｍ１の順に適用、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１の順に適用、
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用することを特徴とする請求項１０に記載の暗号処理方法。
【請求項１２】
前記暗号処理ステップは、
各ラウンドの線形変換処理に、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を選択的に適用する処理を実行するステップであり、各行列Ｍ０，Ｍ１，Ｍ２の適用順は、
（ａ）奇数ラウンドにＭ０，Ｍ１，Ｍ２の順に適用、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１，Ｍ２の順に適用、
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用することを特徴とする請求項１０に記載の暗号処理方法。
【請求項１３】
前記暗号処理ステップは、
６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行するステップであり、
各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＡＥＳ暗号アルゴリズムにおいて利用される行列を適用することを特徴とする請求項９〜１２いずれかに記載の暗号処理方法。
【請求項１４】
前記暗号処理ステップは、
１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行するステップであり、
各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＷｈｉｒｌｐｏｏｌハッシュ関数において適用される行列であることを特徴とする請求項９〜１２いずれかに記載の暗号処理方法。
【請求項１５】
暗号処理装置において暗号処理を実行させるコンピュータ・プログラムであり、
暗号処理部において実行させるステップとして、非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行させる暗号処理ステップを有し、
前記暗号処理ステップは、
各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行させるステップであることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
【０００４】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【０００５】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位（６４ビット，１２８ビットなど）のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【０００６】
代表的な共通鍵ブロック暗号のアルゴリズムとしては、共通鍵ブロック暗号のアルゴリズム中で行なわれるデータ変換には非線形変換や線形変換が含まれる。従って、共通鍵ブロック暗号などの暗号要素技術を設計する際に、非線形変換を行う関数や線形変換部に利用するための行列を決定しなくてはならない。
【０００７】
例えば、ＩＣカードにおいて暗号処理演算を実行させる場合、暗号処理アルゴリズムを実行させるハードウェアを内蔵させ、ハードウェア内のメモリにプログラム（ソフトウェア）などのデータを記録することが必要となる。
【０００８】
昨今、ＩＣカードや携帯電話などの情報処理端末に様々なデータ処理機能を備えさせることで、ユーザが多数のカードを保持する必要性を排除し、利便性を高めようとする動きがある。しかし、この場合、それぞれの機関の運用システムにおいて採用する暗号アルゴリズムに対応させることが必要となる。ＩＣカードや携帯端末などにおいて、複数の異なる暗号アルゴリズムを実行可能な構成とするためには、各アルゴリズムに対応するハードウェアを備え、かつ各アルゴリズムに対応するソフトウェアを組み込むことが必要となり、コスト高を招くという問題がある。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、上記問題点に鑑みてなされたものであり、Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成において、他の暗号アルゴリズムやハッシュ関数などにおいて適用可能なデータ変換と共通のデータ変換を実行する構成として、部品の共通化による設計コストの削減やメモリ記憶データの削減を可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【００１０】
さらに、具体的には、本発明は、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化による、コードサイズの縮小を可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の側面は、
暗号処理装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部を有し、
前記暗号処理部は、
各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成であることを特徴とする暗号処理装置にある。
【００１２】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、各ラウンドの線形変換処理に、少なくとも２以上の異なる複数の行列を選択的に適用する構成であり、選択適用する行列の少なくとも１つは前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする。
【００１３】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、各ラウンドの線形変換処理に、２つの異なる行列Ｍ０，Ｍ１を選択的に適用する構成であり、各行列Ｍ０，Ｍ１の配置は、
（ａ）奇数ラウンドにＭ０，Ｍ１の順に配置、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１の順に配置、
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用する構成であることを特徴とする。
【００１４】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、各ラウンドの線形変換処理に、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を選択的に適用する構成であり、各行列Ｍ０，Ｍ１，Ｍ２の配置は、
（ａ）奇数ラウンドにＭ０，Ｍ１，Ｍ２の順に配置、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１，Ｍ２の順に配置、
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用する構成であることを特徴とする。
【００１５】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成であり、各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＡＥＳ暗号アルゴリズムにおいて適用される行列であることを特徴とする。
【００１６】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、ＡＥＳ暗号処理と、６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする。
【００１７】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成であり、各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＷｈｉｒｌｐｏｏｌハッシュ関数において適用される行列であることを特徴とする。
【００１８】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、Ｗｈｉｒｌｐｏｏｌハッシュ関数と、１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする。
【００１９】
さらに、本発明の第２の側面は、
暗号処理方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理ステップを有し、
前記暗号処理ステップは、
各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行することを特徴とする暗号処理方法にある。
【００２０】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、各ラウンドの線形変換処理に、少なくとも２以上の異なる複数の行列を選択的に適用し、選択適用する行列の少なくとも１つは前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする。
【００２１】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、各ラウンドの線形変換処理に、２つの異なる行列Ｍ０，Ｍ１を選択的に適用する処理を実行するステップであり、各行列Ｍ０，Ｍ１の適用順は、
（ａ）奇数ラウンドにＭ０，Ｍ１の順に適用、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１の順に適用、
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用することを特徴とする。
【００２２】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、各ラウンドの線形変換処理に、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を選択的に適用する処理を実行するステップであり、各行列Ｍ０，Ｍ１，Ｍ２の適用順は、
（ａ）奇数ラウンドにＭ０，Ｍ１，Ｍ２の順に適用、
（ｂ）偶数ラウンドの最終段からＭ０，Ｍ１，Ｍ２の順に適用、
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用することを特徴とする。
【００２３】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行するステップであり、各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＡＥＳ暗号アルゴリズムにおいて利用される行列を適用することを特徴とする。
【００２４】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行するステップであり、各ラウンドの線形変換処理に選択適用する行列の少なくとも１つはＷｈｉｒｌｐｏｏｌハッシュ関数において適用される行列であることを特徴とする。
【００２５】
さらに、本発明の第３の側面は、
暗号処理装置において暗号処理を実行させるコンピュータ・プログラムであり、
暗号処理部において実行させるステップとして、非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行させる暗号処理ステップを有し、
前記暗号処理ステップは、
各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行させるステップであることを特徴とするコンピュータ・プログラムにある。
【００２６】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００２７】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００２８】
本発明の構成によれば、非線形変換部および線形変換部を有するＳＰ型のＦ関数を、複数ラウンド繰り返し実行するＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理において、各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数、例えばＡＥＳやＷｈｉｒｌｐｏｏｌなどにおいて適用される変換処理と同一の変換処理として実行する構成としたので、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。すなわち、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化によるコードサイズの縮小が可能となる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
１．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造
２．線形変換層（Ｐ層）における最適拡散変換
３．様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換の態様
４．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号におけるデータ変換処理に、他の暗号アルゴリズムまたはハッシュ関数に適用されるデータ変換処理構成を適用した構成
（４．１）ＡＥＳ部品共有型６４ビットＦｅｉｓｔｅｌ型暗号
（４．２）Ｗｈｉｒｌｐｏｏｌ部品共有型１２８ビットＦｅｉｓｔｅｌ型暗号
５．暗号処理装置の構成例
【００３０】
［１．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造］
まず、ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造について説明する。共通鍵ブロック暗号のデザインとして、平文データの変換方法に基本となる変換関数をある特別な順序で配置するＦｅｉｓｔｅｌ構造と呼ばれる構造が用いられることが多い。Ｆｅｉｓｔｅｌ構造はラウンド関数と呼ばれる変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。
【００３１】
図１を参照して、Ｆｅｉｓｔｅｌ構造について説明する。暗号化対象として入力される平文の長さを２ｍｎビットとする。ただし、ｍ，ｎは共に整数である。初めに、２ｍｎビットの平文を、ｍｎビットの２つの入力データＰＬ（Plain-Left）１０１，ＰＲ(Plain-Right)１０２に分割し、これを入力値とする。
【００３２】
Ｆｅｉｓｔｅｌ構造はラウンド関数とよばれる基本構造の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はＦ関数１２０と呼ばれる。図１の構成では、Ｆ関数（ラウンド関数）１２０がｒ段繰り返された構成例を示している。
【００３３】
例えば第１番目のラウンドでは、ｍｎビットの入力データＸと、鍵生成部（図示せず）から入力されるｍｎビットのラウンド鍵Ｋ１１０３がＦ関数１２０に入力され、Ｆ関数１２０におけるデータ変換処理の後にｍｎビットのデータＹを出力する。出力はもう片方の前段からの入力データ（第１段の場合は入力データＰＬ）と排他的論理和部１０４において、排他的論理和演算がなされ、ｍｎビットの演算結果が次のラウンド関数へと出力される。この処理、すなわちＦ関数を定められたラウンド数（ｒ）だけ繰り返し適用して暗号化処理が完了し、暗号文の分割データＣＬ（Cipher-Left）、ＣＲ（Cipher-Right）が出力される。以上の構成より、Ｆｅｉｓｔｅｌ構造の復号処理はラウンド鍵を挿入する順序を逆にするだけでよく、逆関数を構成する必要がないことが導かれる。
【００３４】
各ラウンドの関数として設定されるＦ関数１２０の構成について、図２を参照して説明する。図２（ａ）は、１つのラウンドにおけるＦ関数１２０に対する入力および出力を示す図であり、図２（ｂ）は、Ｆ関数１２０の構成の詳細を示す図である。Ｆ関数１２０は、図２（ｂ）に示すように、非線形変換層（Ｓ層）と線形変換層（Ｐ層）を接続したいわゆるＳＰ型の構成を有する。
【００３５】
図２に示すＦ関数１２０は、入出力ビット長がｍ×ｎ（ｍ，ｎ：整数）ビットの設定を持つ関数である。ＳＰ型Ｆ関数内部では初めに鍵データＫｉとデータＸｉとの排他的論理和が実行され、次に非線形変換層（Ｓ層）が適用され、続いて線形変換層（Ｐ層）が適用される。
【００３６】
具体的には非線形変換層（Ｓ層）は、Ｓボックス（Ｓ−ｂｏｘ）１２１と呼ばれるｎビット入力ｎビット出力の非線形変換テーブルがｍ個並んだものであり、ｍｎビットのデータはｎビットずつ分割されてそれぞれ対応するＳボックス（Ｓ−ｂｏｘ）１２１に入力されデータが変換される。各Ｓボックスでは、例えば変換テーブルを適用した非線形変換処理が実行される。
【００３７】
線形変換層（Ｐ層）は線形変換部１２２によって構成され、線形変換部１２２は、Ｓボックス１２１からの出力データであるｍｎビットの出力値Ｚを入力し、この入力に対して線形変換を施しｍｎビットの結果を出力する。線形変換部１２２は、入力ビット位置の入れ替え処理などの線形変換処理を実行して、ｍｎビットの出力値Ｙを出力する。この出力値Ｙが前段からの入力データと排他的論理和され、次のラウンドのＦ関数の入力値とされる。
【００３８】
なお、以下に説明する本実施例の構成では、線形変換層（Ｐ層）としての線形変換部１２２において実行する線形変換はＧＦ（２）上で定義されるｍｎ×ｍｎの行列を適用して行なわれる線形変換であると定義し、また、第ｉラウンド目に含まれる行列をＭｉと呼ぶものとする。
【００３９】
［２．線形変換層（Ｐ層）における最適拡散変換］
上述したＦ関数内の線形変換層（Ｐ層）としての線形変換部１２２において実行される線形変換の特殊な例として最適拡散変換（Ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ）を以下のように定義する。
【００４０】
ｎ×ａビットデータからｎ×ｂビットデータへの線形変換を行う写像、
θ：｛０，１｝ｎａ→｛０，１｝ｎｂ
に対して分岐数Ｂ（θ）を次のように定義する。
Ｂ（θ）＝ｍｉｎα≠０｛ｈｗｎ（α）＋ｈｗｎ（θ（α））｝
ただし、ｍｉｎα≠０｛Ｘα｝は、α≠０を満たすすべてのＸαのうちの最小値を表すものとし、ｈｗｎ（Ｙ）はビット列Ｙをｎビットごとに区切って表したときに、ｎビットのデータすべてが０ではない（非ゼロ）要素の数を返す関数とする。このとき、Ｂ（θ）がｂ＋１であるような写像θを最適拡散変換と定義する。また便宜的に行列Ｍの分岐数をＢ（Ｍ）と表すものとする。
【００４１】
［３．様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換の態様］
次に、様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換の態様について説明する。先に説明した非線形変換や線形変換処理は、多くの暗号アルゴリズムや縮約関数としてのハッシュ関数などにおいて利用されるデータ変換である。
【００４２】
様々な暗号アルゴリズムおよびハッシュ関数では、このようなデータ変換を行うため、非線形変換層（Ｓ層）として、ｎビット入力ｎビット出力の非線形変換テーブルからなるＳボックス（Ｓ−ｂｏｘ）が利用され、線形変換層（Ｐ層）としては、入力ビット位置の入れ替え処理などの線形変換処理を実行する線形変換行列が利用される。
【００４３】
このように、様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換は、非線形変換や線形変換処理を行なうという共通性を有するため、共通鍵ブロック暗号やハッシュ関数の一部、ストリーム暗号などでは、データ変換を行なうための同じような部品が使われることがある。例えば、非線形変換を実現するために８ビット入出力の置換表が使われるケースや、線形変換としてＧＦ（２８）上の４ｘ４や８ｘ８の行列が使われることがある。以下、米国標準暗号ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ））と、ＩＳＯにおいて標準化されているハッシュ関数Ｗｈｉｒｌｐｏｏｌにおいて利用される非線形変換と、線形変換の概要について説明する。
【００４４】
（１）ＡＥＳ暗号
米国標準暗号ＡＥＳは１２８ビットブロック暗号であり、データ変換手続きの中に以下のような非線形演算と線形演算を行う部分が存在する。
［非線形変換］
【数１】
2007192893.tif 000003
【００４５】
上記式はＡＥＳにおける非線形変換の一部を示している。上記式において、ＳＡＥＳ（ｘｋ）は、ＡＥＳアルゴリズムにおいて適用される非線形変換を実行するＳボックスによる処理関数を示しており、１バイトデータ（ｘｋ）を入力として、１バイトデータ（ｙｋ）の出力に非線形変換処理を行なう関数を示している。複数のＳボックスの適用によって、入力４バイトデータ：ｘ０〜ｘ３を出力４バイトデータ：ｙ０〜ｙ３に非線形変換する処理を実行する。
【００４６】
［線形変換］
【数２】
2007192893.tif 000004
【００４７】
上記式はＡＥＳにおける線形変換の一部を示している。上記式は、入力ビット位置の入れ替え処理などの線形変換処理を実行する線形変換行列を利用した式である。ただし、行列の要素は有限体ＧＦ（２８）の要素を表し、既約多項式はｔ８＋ｔ４＋ｔ３＋ｔ＋１で表されるものである。ここで用いられている行列は分岐数が５となる最適拡散変換である。ＡＥＳ暗号アルゴリズムにおける線形変換には、上記した４×４の行列が適用される。
【００４８】
（２）Ｗｈｉｒｌｐｏｏｌ
次に、ＩＳＯにおいて標準化されているハッシュ関数Ｗｈｉｒｌｐｏｏｌにおいて利用される非線形変換と、線形変換の概要について説明する。ハッシュ関数Ｗｈｉｒｌｐｏｏｌは５１２ｂｉｔの出力を持つハッシュ関数であり、データ変換手続きの中に以下のような演算を行う部分が存在する。
【００４９】
［非線形変換］
【数３】
2007192893.tif 000005
【００５０】
上記式はハッシュ関数Ｗｈｉｒｌｐｏｏｌの非線形変換を示している。上記式において、ＳＷ（ｘｋ）は、ハッシュ関数Ｗｈｉｒｌｐｏｏｌにおいて適用される非線形変換を実行するＳボックスによる処理関数を示しており、１バイトデータ（ｘｋ）を入力として、１バイトデータ（ｙｋ）の出力に非線形変換処理を行なう関数を示している。複数のＳボックスの適用によって、入力８バイトデータ：ｘ０〜ｘ７を出力８バイトデータ：ｙ０〜ｙ７に非線形変換する処理を実行する。
【００５１】
［線形変換］
【数４】
2007192893.tif 000006
【００５２】
上記式はハッシュ関数Ｗｈｉｒｌｐｏｏｌの線形変換を示している。上記式は、入力ビット位置の入れ替え処理などの線形変換処理を実行する線形変換行列を利用した式である。ただし、行列の要素は有限体ＧＦ（２８）の要素を表し、既約多項式はｔ８＋ｔ４＋ｔ３＋ｔ２＋１で表されるものである。ここで用いられている行列は分岐数が９となる最適拡散変換である。ハッシュ関数Ｗｈｉｒｌｐｏｏｌアルゴリズムにおける線形変換には、上記した８×８の行列が適用される。
【００５３】
［４．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号におけるデータ変換処理に、他の暗号アルゴリズムまたはハッシュ関数に適用されるデータ変換処理構成を適用した構成］
上述したように、ＡＥＳ暗号や、ハッシュ関数Ｗｈｉｒｌｐｏｏｌでも、入力値から出力値を得るためのデータ変換処理において非線形変換、線形変換が実行され、それぞれの変換処理に適用されるデータ、すなわち、非線形変換に適用する変換テーブル（置換表）や、線形変換に適用する線形変換行列は予め規定されたデータが利用される。
【００５４】
以下では、ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号におけるデータ変換処理において実行される非線形変換処理や変換処理において、ＡＥＳ暗号や、ハッシュ関数Ｗｈｉｒｌｐｏｏｌにおいて利用されている非線形変換に適用する変換テーブル（置換表）や、線形変換に適用する線形変換行列を適用した構成について説明する。
【００５５】
本発明に係る暗号処理装置は、非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部を有し、暗号処理部において、各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成を有する。
【００５６】
ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号は、先に［１．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造］の項目において説明したアルゴリズムであり、そのアルゴリズムは、ＡＥＳ暗号や、ハッシュ関数Ｗｈｉｒｌｐｏｏｌのアルゴリズムとは異なっている。ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号は、先に図１、図２を参照して説明したように、各ラウンドにおいて、Ｆ関数を実行する構成を有し、各ラウンドにおけるＦ関数においてＳボックスを適用した非線形変換と、線形変換行列を適用した線形変換処理を実行する構成を持つ。
【００５７】
共通鍵ブロック暗号の１つのデザインであるＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号は、Ｆ関数の構成を変更することで、様々な入出力ビット構成に対応可能である。例えば入出力ビットを６４ビットとした６４ビットブロック暗号、あるいは、入出力ビットを１２８ビットとした１２８ビットブロック暗号などである。
【００５８】
ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号を設計する場合、Ｆ関数において適用する非線形変換処理や線形変換処理構成は、処理ビット数に対応した構成とすることが必要となる。
【００５９】
ここで、例えば、入出力ビットを６４ビットとした６４ビットブロック暗号を実行するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号においては、前述したＡＥＳアルゴリズムにおいて適用される非線形変換および線形変換処理構成が適用可能となる。すなわち、ＡＥＳアルゴリズムで適用されている非線形変換用の変換テーブル（置換表）や線形変換に適用する線形変換行列が適用可能である。
【００６０】
また、入出力ビットを１２８ビットとした１２８ビットブロック暗号を実行するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号においては、前述したハッシュ関数Ｗｈｉｒｌｐｏｏｌにおいて適用される非線形変換および線形変換処理構成が適用可能となる。すなわち、ハッシュ関数Ｗｈｉｒｌｐｏｏｌで適用されている非線形変換用の変換テーブル（置換表）や線形変換に適用する線形変換行列が適用可能となる。
【００６１】
ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、各ラウンドにおいて適用する線形変換行列を異なる行列として設定すると、例えば差分解析などの攻撃に対する耐性を高めることができる。すなわち、暗号強度を高めることが可能となる。なお、各ラウンドにおいて適用する線形変換行列を異なる行列として設定することでＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号の暗号強度を高めた構成の詳細については、本発明と同一の出願人に係る先の特許出願：特願２００５−３１３８４２に説明されている。
【００６２】
従来型のＦｅｉｓｔｅｌ型暗号では、すべての段のＦ関数に同じ線形変換層を用いているため、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質が存在した。暗号解析手法の代表的な手法として、ある差分を持つ入力データ（平文）とその出力データ（暗号文）を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析（あるいは差分解読法）が知られており、従来のＤＥＳ暗号アルゴリズム等の共通鍵ブロック暗号においては、Ｆ関数の線形変換部において適用する処理（変換行列）を、各段のラウンドにおいて等しいものに設定しているため、差分解析が行いやすく、結果として鍵の解析の容易性を招いている。
【００６３】
各ラウンドのＦ関数に適用する線形変換行列を特定のシーケンスに従った異なる行列とすることで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。
【００６４】
各ラウンドにおいて適用する線形変換行列を異なる行列として設定する場合、例えば暗号処理を実行するＩＣカードなどの情報処理装置に複数の異なる線形変換行列データを保持することが必要となる。Ｆｅｉｓｔｅｌ型暗号において複数の行列を選択する際には、いくつかの選択基準があるが、例えば各行列を決定する際に、新たに２つや３つの行列全てを自ら決定せずに、そのうちのひとつをＡＥＳの行列やＷｈｉｒｌｐｏｏｌの行列をそのまま利用することで、設計の効率化が図られる。
【００６５】
具体的には、６４ビットＦｅｉｓｔｅｌ型暗号において利用する行列の１つとしてＡＥＳに適用されている行列を利用する構成や、１２８ビットＦｅｉｓｔｅｌ型暗号において利用する行列の１つとしてＷｈｉｒｌｐｏｏｌに適用されている行列を利用する構成である。
【００６６】
先に説明したように、ＩＣカードや携帯端末では、様々なデータ処理を１つの装置で実行可能とするため、様々な暗号アルゴリズムやハッシュ関数を実行可能な構成とすることが求められている。このような要請に対して、例えば、ＡＥＳとＦｅｉｓｔｅｌ型暗号の２つの異なるアルゴリズムを実行可能な構成とする場合、それぞれのアルゴリズムに適用する非線形変換テーブルや線形変換行列を保持することが必要となる。また、ＷｈｉｒｌｐｏｏｌとＦｅｉｓｔｅｌ型暗号の２つの異なるアルゴリズムを実行可能な構成とする場合、それぞれのアルゴリズムに適用する非線形変換テーブルや線形変換行列を保持することが必要となる。
【００６７】
このような複数のアルゴリズムに適用する変換用のデータを保持させるためには、ＩＣカードなどの装置の限られたメモリ空間をこれらの複数のアルゴリズムに利用される複数のテーブルや行列を格納するために費やされることになる。また、Ｆｅｉｓｔｅｌ型暗号に適用するための例えば線形変換行列は、一定の暗号強度を保持するために、任意の行列を利用することは好ましくなく暗号強度を低下させないための性質を持つ行列であることが必要となる。
【００６８】
Ｆｅｉｓｔｅｌ型暗号に適用するための例えば線形変換行列の制約は、例えば、前述した本発明と同一の出願人に係る先の特許出願：特願２００５−３１３８４２に説明されている。例えば適用可能な１つの制約条件の例を以下に示す。
【００６９】
（制約条件Ａ）
Ｆ関数を持つｒ段からなるＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成におけるｒ段各々に対応するＦ関数の線形変換部は下記条件を満足する行列Ｍｉを適用する。
ｎ×ａビットデータからｎ×ｂビットデータへの線形変換を行う写像θ：｛０，１｝ｎａ→｛０，１｝ｎｂに対して、分岐数Ｂ（θ）を、
分岐数Ｂ（θ）＝ｍｉｎα≠０｛ｈｗｎ（α）＋ｈｗｎ（θ（α））｝、
ただし、ｍｉｎα≠０｛Ｘα｝は、α≠０を満たすすべてのＸαのうちの最小値、
ｈｗｎ（Ｙ）はビット列Ｙをｎビットごとに区切って表したときにｎビットのデータすべてが０ではない（非ゼロ）要素の数を返す関数、
とし、分岐数Ｂ（θ）がｂ＋１である写像θを最適拡散変換と定義し、
さらに、行列Ｍの分岐数をＢ（Ｍ）と表したとき、
ＢＤ１＝ｍｉｎ｛Ｂ（Ｍｉ）｜１≦ｉ≦ｒ｝，
ＢＤ２＝ｍｉｎ｛Ｂ（Ｍｉ｜Ｍｉ＋２）｜１≦ｉ≦ｒ−２｝，
ただし、Ａ｜Ｂは行列Ａ，Ｂの連結により得られる行列、
とした場合において、
ＢＤ１，ＢＤ２のすべてが３以上になるような行列Ｍｉを適用する。
なお、３以上という条件により、ＭｉとＭｉ＋２が必ず異なる行列ではなくてはならない。
【００７０】
例えば、上述の（制約条件Ａ）が、差分攻撃などの攻撃に対する耐性を持つために、Ｆｅｉｓｔｅｌ型暗号に適用する線形変換行列の条件として適用可能である。
【００７１】
ＡＥＳや、Ｗｈｉｒｌｐｏｏｌにおいて利用されている例えば線形変換行列は、暗号強度を保つ指標の１つである分岐数が一定の条件を満たしており、これらをＦｅｉｓｔｅｌ型暗号に適用することで、一定の暗号強度の保持が保証される。従って、上述した複数の異なる線形変換行列を適用するＦｅｉｓｔｅｌ型暗号における複数の行列の一部に、ＡＥＳや、Ｗｈｉｒｌｐｏｏｌにおいて利用されている線形変換行列を適用することで、ＩＣカードや携帯端末などの暗号処理装置におけるメモリの有効利用が可能となり、またＦｅｉｓｔｅｌ型暗号の設計の効率化も図られることになる。すなわち、設計時に決定すべき行列の数を少なくすることができ、設計者が探索すべき候補数が少なくなり絞込みのための時間が削減される。
【００７２】
以下、ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、各ラウンドにおいて適用する線形変換行列を異なる行列として設定し、差分解析などの攻撃に対する耐性を高めたＦｅｉｓｔｅｌ型暗号において、その一部の線形変換行列にＡＥＳまたはＷｈｉｒｐｏｏｌの行列を適用した構成例について説明する。以下に説明する実施例では、２つまたは３つの異なる線形変換行列を用いるＦｅｉｓｔｅｌ暗号において、それら行列のうちの１つにＡＥＳまたはＷｈｉｒｌｐｏｏｌの行列を採用する例を説明する。
【００７３】
（４．１）ＡＥＳ部品共有型６４ビットＦｅｉｓｔｅｌ型暗号
まず、ＡＥＳと部品共有した６４ビットブロック暗号の構成について説明する。前述したように、Ｆｅｉｓｔｅｌ型暗号の各ラウンドのＦ関数に適用する線形変換行列を適用することで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。以下、非線形変換層（Ｓ層）と線形変換層（Ｐ層）をＦ関数に有するＳＰ型の６４ビットＦｅｉｓｔｅｌ型暗号構成において、２つの異なる線形変換行列と３つの異なる線形変換行列を適用し、その一部をＡＥＳ暗号アルゴリズムにおいて適用されている線形変換行列を利用した構成例について説明する。
【００７４】
（４．１．１）２つの異なる線形変換行列を適用した構成例
まず、２つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号であり、６４ビットブロック暗号を実行する構成例について説明する。図３を参照して、２つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号アルゴリズムについて説明する。
【００７５】
本アルゴリズムの構成では、複数段（ラウンド）を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成における各段のＦ関数中の線形変換部において適用する線形変換処理のための行列として、２つの異なる行列Ｍ０，Ｍ１を利用する。具体的には、図３に示すように、
（ａ）奇数段にＭ０，Ｍ１の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１の順に配置
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用する構成とする。
【００７６】
条件（ａ）は、（ａ）奇数段にＭ０，Ｍ１の順に配置する条件であり、図３に示すように、ラウンド１，３，５，・・・の順に、行列Ｍ０，Ｍ１を順に配置する。条件（ｂ）は、（ａ）偶数段の最終段からＭ０，Ｍ１の順に配置する条件であり、図３に示すように、ラウンド１２，１０，８，・・・の順に、行列Ｍ０，Ｍ１を順に配置する。
【００７７】
ここで、行列Ｍ０，Ｍ１の各々は、各ラウンドにおけるＦ関数において実行される線形変換行列であり、４×４の行列を示している。この２つの行列Ｍ０，Ｍ１は異なる行列であり、その１つの行列、例えば、行列Ｍ０は、前述のＡＥＳアルゴリズムにおいて利用されている４×４の行列を利用する。行列Ｍ１は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列とする。
【００７８】
具体的な行列の組み合わせ例を以下に示す。例えば、Ｍ０，Ｍ１の２つの行列全体の任意の４本の行を取り出してきても分岐数が５であり、さらにｔＭ０−１，ｔＭ１−１の２つの行列の任意の４本の行を取り出してきても分岐数が５であるような条件を満たす行列としては以下の行列の組み合わせがある。なお、ｔＭはＭの転置行列，Ｍ−１はＭの逆行列を表す。
【数５】
2007192893.tif 000007
【００７９】
上記行列Ｍ０，Ｍ１のうち、行列Ｍ０は、先に説明したＡＥＳアルゴリズムにおいて利用されている４×４の行列であり、行列Ｍ１は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の２つの異なる行列Ｍ０，Ｍ１を適用してＦｅｉｓｔｅｌ暗号アルゴリズムの各ラウンドにおけるＦ関数の線形変換を実行する。なお、各行列の要素は有限体ＧＦ（２８）の要素を表し、既約多項式はｔ８＋ｔ４＋ｔ３＋ｔ＋１で表される。
【００８０】
（４．１．２）３つの異なる線形変換行列を適用した構成例
次に、３つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号であり、６４ビットブロック暗号を実行する構成例について説明する。図４を参照して、３つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号アルゴリズムについて説明する。
【００８１】
本アルゴリズムの構成では、複数段（ラウンド）を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成における各段のＦ関数中の線形変換部において適用する線形変換処理のための行列として、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を利用する。具体的には、図４に示すように、
（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用する構成とする。
【００８２】
条件（ａ）は、（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置する条件であり、図４に示すように、ラウンド１，３，５，・・・の順に、行列Ｍ０，Ｍ１，Ｍ２を順に配置する。条件（ｂ）は、（ａ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置する条件であり、図４に示すように、ラウンド１２，１０，８，・・・の順に、行列Ｍ０，Ｍ１，Ｍ２を順に配置する。
【００８３】
ここで、行列Ｍ０，Ｍ１，Ｍ２の各々は、各ラウンドにおけるＦ関数において実行される線形変換行列であり、４×４の行列を示している。この３つの行列Ｍ０，Ｍ１，Ｍ２は異なる行列であり、その１つの行列、例えば、行列Ｍ０は、前述のＡＥＳアルゴリズムにおいて利用されている４×４の行列を利用する。行列Ｍ１，Ｍ２は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列とする。
【００８４】
具体的な行列の組み合わせ例を以下に示す。例えば、Ｍ０，Ｍ１，Ｍ２の３つの行列全体の任意の４本の行を取り出してきても分岐数が５であり、さらにｔＭ０−１，ｔＭ１−１の２つの行列、ｔＭ１−１，ｔＭ２−１の２つの行列、ｔＭ２−１，ｔＭ０−１の２つの行列の任意の４本の行を取り出してきても分岐数が５であるような条件を満たす行列としては以下の行列の組み合わせがある。
【数６】
2007192893.tif 000008
【００８５】
上記行列Ｍ０，Ｍ１，Ｍ２のうち、行列Ｍ０は、先に説明したＡＥＳアルゴリズムにおいて利用されている４×４の行列であり、行列Ｍ１，Ｍ２は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用してＦｅｉｓｔｅｌ暗号アルゴリズムの各ラウンドにおけるＦ関数の線形変換を実行する。なお、各行列の要素は有限体ＧＦ（２８）の要素を表し、既約多項式はｔ８＋ｔ４＋ｔ３＋ｔ＋１で表される。
【００８６】
（４．２）Ｗｈｉｒｌｐｏｏｌ部品共有型１２８ビットＦｅｉｓｔｅｌ型暗号
次に、ＩＳＯ標準化ハッシュ関数であるＷｈｉｒｌｐｏｏｌと部品共有した１２８ビットブロック暗号の構成について説明する。前述したように、Ｆｅｉｓｔｅｌ型暗号の各ラウンドのＦ関数に適用する線形変換行列を適用することで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。以下、非線形変換層（Ｓ層）と線形変換層（Ｐ層）をＦ関数に有するＳＰ型の１２８ビットＦｅｉｓｔｅｌ型暗号構成において、２つの異なる線形変換行列と３つの異なる線形変換行列を適用し、その一部をＷｈｉｒｌｐｏｏｌ暗号アルゴリズムにおいて適用されている線形変換行列を利用した構成例について説明する。
【００８７】
（４．２．１）２つの異なる線形変換行列を適用した構成例
まず、２つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号であり、１２８ビットブロック暗号を実行する構成例について説明する。２つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号は、先に図３を参照して説明したように、複数段（ラウンド）を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成における各段のＦ関数中の線形変換部において適用する線形変換処理のための行列として２つの異なる線形変換行列Ｍ０，Ｍ１を利用する構成である。具体的には、図３に示すように、
（ａ）奇数段にＭ０，Ｍ１の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１の順に配置
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用する構成とする。
【００８８】
条件（ａ）は、（ａ）奇数段にＭ０，Ｍ１の順に配置する条件であり、図３に示すように、ラウンド１，３，５，・・・の順に、行列Ｍ０，Ｍ１を順に配置する。条件（ｂ）は、（ａ）偶数段の最終段からＭ０，Ｍ１の順に配置する条件であり、図３に示すように、ラウンド１２，１０，８，・・・の順に、行列Ｍ０，Ｍ１を順に配置する。
【００８９】
ここで、行列Ｍ０，Ｍ１の各々は、各ラウンドにおけるＦ関数において実行される線形変換行列であり、８×８の行列を示している。この２つの行列Ｍ０，Ｍ１は異なる行列であり、その１つの行列、例えば、行列Ｍ０は、前述のＷｈｉｒｌｐｏｏｌアルゴリズムにおいて利用されている８×８の行列を利用する。行列Ｍ１は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列とする。
【００９０】
具体的な行列の組み合わせ例を以下に示す。例えば、Ｍ０，Ｍ１の２つの行列全体の任意の８本の行を取り出してきても分岐数が８以上であり、さらにｔＭ０−１，ｔＭ１−１の２つの行列の任意の８本の行を取り出してきても分岐数が８以上であるような条件を満たす行列としては以下の行列の組み合わせがある。
【数７】
2007192893.tif 000009
【００９１】
上記行列Ｍ０，Ｍ１のうち、行列Ｍ０は、先に説明したＷｈｉｒｌｐｏｏｌアルゴリズムにおいて利用されている８×８の行列であり、行列Ｍ１は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の２つの異なる行列Ｍ０，Ｍ１を適用してＦｅｉｓｔｅｌ暗号アルゴリズムの各ラウンドにおけるＦ関数の線形変換を実行する。なお、各行列の要素は有限体ＧＦ（２８）の要素を表し、既約多項式はｔ８＋ｔ４＋ｔ３＋ｔ２＋１で表される。
【００９２】
（４．２．２）３つの異なる線形変換行列を適用した構成例
次に、３つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号であり、１２８ビットブロック暗号を実行する構成例について説明する。３つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号は、先に図４を参照して説明したように、複数段（ラウンド）を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成における各段のＦ関数中の線形変換部において適用する線形変換処理のための行列として、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を利用する。具体的には、図４に示すように、
（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用する構成とする。
【００９３】
条件（ａ）は、（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置する条件であり、図４に示すように、ラウンド１，３，５，・・・の順に、行列Ｍ０，Ｍ１，Ｍ２を順に配置する。条件（ｂ）は、（ａ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置する条件であり、図４に示すように、ラウンド１２，１０，８，・・・の順に、行列Ｍ０，Ｍ１，Ｍ２を順に配置する。
【００９４】
ここで、行列Ｍ０，Ｍ１，Ｍ２の各々は、各ラウンドにおけるＦ関数において実行される線形変換行列であり、８×８の行列を示している。この３つの行列Ｍ０，Ｍ１，Ｍ２は異なる行列であり、その１つの行列、例えば、行列Ｍ０は、前述のＷｈｉｒｌｐｏｏｌアルゴリズムにおいて利用されている８×８の行列を利用する。行列Ｍ１，Ｍ２は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列とする。
【００９５】
具体的な行列の組み合わせ例を以下に示す。例えば、Ｍ０，Ｍ１，Ｍ２の３つの行列全体の任意の８本の行を取り出してきても分岐数が８以上であり、さらにｔＭ０−１，ｔＭ１−１の２つの行列、ｔＭ１−１，ｔＭ２−１の２つの行列、ｔＭ２−１，ｔＭ０−１の２つの行列の任意の８本の行を取り出してきても分岐数が８以上であるような条件を満たす行列としては以下の行列の組み合わせがある。
【数８】
2007192893.tif 000010
【００９６】
上記行列Ｍ０，Ｍ１，Ｍ２のうち、行列Ｍ０は、先に説明したＷｈｉｒｌｐｏｏｌアルゴリズムにおいて利用されている８×８の行列であり、行列Ｍ１，Ｍ２は、Ｆｅｉｓｔｅｌ暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用してＦｅｉｓｔｅｌ暗号アルゴリズムの各ラウンドにおけるＦ関数の線形変換を実行する。なお、各行列の要素は有限体ＧＦ（２８）の要素を表し、既約多項式はｔ８＋ｔ４＋ｔ３＋ｔ２＋１で表される。
【００９７】
なお、上述した処理例では、Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成において、各ラウンドのＦ関数中の線形変換処理に適用する線形変換行列のＡＥＳまたはＷｈｉｒｌｐｏｏｌとの共通化構成を説明したが、非線形変換に適用する変換テーブルについても、例えば６４ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理における非線形変換処理においては、ＡＥＳアルゴリズムにおいて適用する非線形変換テーブルを利用することが可能であり、例えば１２８ビットＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理における非線形変換処理においては、Ｗｈｉｒｌｐｏｏｌアルゴリズムにおいて適用する非線形変換テーブルを利用することが可能である。
【００９８】
すなわち、本発明の暗号処理装置は、非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部を有し、暗号処理部において、各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成を有する。この構成により、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。すなわち、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化によるコードサイズの縮小が可能となる。
【００９９】
［５．暗号処理装置の構成例］
最後に、暗号処理を実行する暗号処理装置としてのＩＣモジュール３００の構成例を図５に示す。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図５に示すＩＣモジュール３００は、これら様々な機器に構成することが可能である。
【０１００】
図５に示すＣＰＵ(Central processing Unit)３０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ３０２は、ＣＰＵ３０１が実行するプログラム、あるいは演算パラメータなどの固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ３０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ３０２は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル（置換表）や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１０１】
暗号処理部３０３は、例えば上述したＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理、さらに、ＡＥＳアルゴリズムや、Ｗｈｉｒｌｐｏｏｌなどの暗号処理やハッシュ関数等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭに格納し、ＣＰＵ３０１がＲＯＭ格納プログラムを読み出して実行するように構成してもよい。
【０１０２】
乱数発生器３０４は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０１０３】
送受信部３０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１０４】
このＩＣモジュール３００において、例えばＡＥＳアルゴリズムと、複数の異なる行列（線形変換行列）を適用したＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理アルゴリズムの２つの異なるアルゴリズムを実行可能な構成とする場合、Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理アルゴリズムの適用行列の一部をＡＥＳアルゴリズムの適用行列と共通化することで、メモリ３０２に記録すべき変換行列用データを削減することができる。
【０１０５】
また、同様に、ハッシュ関数Ｗｈｉｒｌｐｏｏｌと、複数の異なる行列（線形変換行列）を適用したＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理アルゴリズムの２つの異なるアルゴリズムを実行可能な構成とする場合、Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理アルゴリズムの適用行列の一部をハッシュ関数Ｗｈｉｒｌｐｏｏｌの適用行列と共通化することで、メモリ３０２に記録すべき変換行列用データを削減することができる。
【０１０６】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１０７】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１０８】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０１０９】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１１０】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１１１】
上述したように、本発明の構成によれば、非線形変換部および線形変換部を有するＳＰ型のＦ関数を、複数ラウンド繰り返し実行するＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理において、各ラウンドにおけるＦ関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数、例えばＡＥＳやＷｈｉｒｌｐｏｏｌなどにおいて適用される変換処理と同一の変換処理として実行する構成としたので、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。すなわち、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化によるコードサイズの縮小が可能となる。
【図面の簡単な説明】
【０１１２】
【図１】Ｆｅｉｓｔｅｌ構造を持つ代表的な共通鍵ブロック暗号の構成を示す図である。
【図２】ラウンド関数部として設定されるＦ関数の構成について説明する図である。
【図３】２つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号アルゴリズムについて説明する図である。
【図４】３つの異なる線形変換行列を利用したＦｅｉｓｔｅｌ型暗号アルゴリズムについて説明する図である。
【図５】本発明に係る暗号処理を実行する暗号処理装置としてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１１３】
１０１  入力データＰＬ（Plain-Left）
１０２  入力データＰＲ(Plain-Right)
１０３  ラウンド鍵
１０４  排他的論理和部
１２０  Ｆ関数
１２１  Ｓボックス（Ｓ−ｂｏｘ）
１２２  線形変換部
３００  ＩＣモジュール
３０１  ＣＰＵ(Central processing Unit)
３０２  メモリ
３０３  暗号処理部
３０４  乱数発生器
３０５  送受信部
【図１】
2007192893.tif 000011
【図２】
2007192893.tif 000012
【図３】
2007192893.tif 000013
【図４】
2007192893.tif 000014
【図５】
2007192893.tif 000015