(57)【要約】【課題】インボリューション性、安全性を維持し、ラウンド数の変更を容易に行なうことができるＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成を実現する。【解決手段】非線形変換部および線形変換部を有するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号処理構成において、インボリーション性および、予め設定されたＦ関数配列条件であるＯＤＭ−ＭＲまたはＳＤＭ−ＭＲを満足する行列配列を持つｎラウンドの基本ユニットを構成し、このユニットに対してＦ関数の配列条件を満足するＦ関数を選択して追加、あるいは基本ユニットを複数接続することでインボリーション性および、ＯＤＭ−ＭＲ、またはＳＤＭ−ＭＲを満足する配列を持つラウンド数を増加させたＦｅｉｓｔｅｌ暗号構成を構築する。【選択図】図１０
2007199156.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部であり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを有する暗号処理部と、
前記暗号処理部に構成された暗号処理基本ユニットの利用回数設定情報に基づいて、前記暗号処理基本ユニットを１回または複数回繰り返し利用する暗号処理演算の実行制御を行う制御部と、
を有することを特徴とする暗号処理装置。
【請求項２】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、
奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、
奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
暗号処理装置製造装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部であり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを生成する暗号処理基本ユニット生成部と、
前記暗号処理基本ユニットを適用し、暗号処理装置に設定する暗号処理部のラウンド数に基づいて、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行するラウンド数変更部と、
を有することを特徴とする暗号処理装置製造装置。
【請求項５】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、
奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする請求項４に記載の暗号処理装置製造装置。
【請求項６】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、
奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする請求項４に記載の暗号処理装置製造装置。
【請求項７】
前記ラウンド数変更部は、
前記暗号処理基本ユニットを構成する先頭ラウンドの前、および最終ラウンドの後に、順次１つずつ、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行する構成であることを特徴とする請求項４に記載の暗号処理装置製造装置。
【請求項８】
前記ラウンド数変更部は、
前記暗号処理基本ユニットを複数ユニット接続して、Ｆ関数追加処理を実行する構成であることを特徴とする請求項４に記載の暗号処理装置製造装置。
【請求項９】
暗号処理方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理ステップであり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを利用した暗号処理を実行する暗号処理ステップと、
前記暗号処理部に構成された暗号処理基本ユニットの利用回数設定情報に基づいて、前記暗号処理基本ユニットを１回または複数回繰り返し利用する暗号処理演算の実行制御を行う制御ステップと、
を有することを特徴とする暗号処理方法。
【請求項１０】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、
奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする請求項９に記載の暗号処理方法。
【請求項１１】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、
奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする請求項９に記載の暗号処理方法。
【請求項１２】
暗号処理装置製造方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部であり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを生成する暗号処理基本ユニット生成ステップと、
前記暗号処理基本ユニットを適用し、暗号処理装置に設定する暗号処理部のラウンド数に基づいて、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行するラウンド数変更ステップと、
を有することを特徴とする暗号処理装置製造方法。
【請求項１３】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、
奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする請求項１２に記載の暗号処理装置製造方法。
【請求項１４】
前記Ｆ関数配列条件は、
前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、
奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする請求項１２に記載の暗号処理装置製造方法。
【請求項１５】
前記ラウンド数変更ステップは、
前記暗号処理基本ユニットを構成する先頭ラウンドの前、および最終ラウンドの後に、順次１つずつ、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行するステップであることを特徴とする請求項１２に記載の暗号処理装置製造方法。
【請求項１６】
前記ラウンド数変更ステップは、
前記暗号処理基本ユニットを複数ユニット接続して、Ｆ関数追加処理を実行するステップであることを特徴とする請求項１２に記載の暗号処理装置製造方法。
【請求項１７】
暗号処理装置において暗号処理を実行させるコンピュータ・プログラムであり、
暗号処理部において、非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理ステップであり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを利用した暗号処理を実行する暗号処理ステップと、
制御部において、前記暗号処理部に構成された暗号処理基本ユニットの利用回数設定情報に基づいて、前記暗号処理基本ユニットを１回または複数回繰り返し利用する暗号処理演算の実行制御を行う制御ステップと、
を実行させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラムに関する。さらに詳細には、Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
【０００４】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【０００５】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位（６４ビット，１２８ビットなど）のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【０００６】
共通鍵ブロック暗号方式の１つのデザインとして、暗号化処理対象として入力される平文データに対して、基本となる変換関数を繰り返し実行させるＦｅｉｓｔｅｌ構造と呼ばれる構造が用いられることが多い。Ｆｅｉｓｔｅｌ構造はラウンド関数と呼ばれる基本となる処理単位の繰り返しで構成される。ラウンド関数の繰り返し数、すなわちラウンド数（または段数）をいくつにするかは、特に固定的なものではなく、設計時に決定される。
【０００７】
ラウンド数を多く設定すれば、処理時間が長くなるが、様々な攻撃、すなわち差分解析などの暗号解析に対する強度を高め、安全性を強固にすることが可能となる。従って、処理時間優先とする場合と、安全性優先とする場合など、利用目的に応じたラウンド数の設定を行うことが好ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、共通鍵ブロック暗号方式の１つのデザインであるＦｅｉｓｔｅｌ構造を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する構成において、ラウンド数の変更を容易に行なうことを可能とし、また、差分攻撃などの攻撃に対する耐性の高い構成を維持したまま、様々なラウンド数の設定での暗号処理を可能とする暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の側面は、
暗号処理装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部であり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを有する暗号処理部と、
前記暗号処理部に構成された暗号処理基本ユニットの利用回数設定情報に基づいて、前記暗号処理基本ユニットを１回または複数回繰り返し利用する暗号処理演算の実行制御を行う制御部と、
を有することを特徴とする暗号処理装置にある。
【００１０】
さらに、本発明の暗号処理装置の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする。
【００１１】
さらに、本発明の暗号処理装置の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする。
【００１２】
さらに、本発明の第２の側面は、
暗号処理装置製造装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部であり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを生成する暗号処理基本ユニット生成部と、
前記暗号処理基本ユニットを適用し、暗号処理装置に設定する暗号処理部のラウンド数に基づいて、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行するラウンド数変更部と、
を有することを特徴とする暗号処理装置製造装置にある。
【００１３】
さらに、本発明の暗号処理装置製造装置の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする。
【００１４】
さらに、本発明の暗号処理装置製造装置の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする。
【００１５】
さらに、本発明の暗号処理装置製造装置の一実施態様において、前記ラウンド数変更部は、前記暗号処理基本ユニットを構成する先頭ラウンドの前、および最終ラウンドの後に、順次１つずつ、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行する構成であることを特徴とする。
【００１６】
さらに、本発明の暗号処理装置製造装置の一実施態様において、前記ラウンド数変更部は、前記暗号処理基本ユニットを複数ユニット接続して、Ｆ関数追加処理を実行する構成であることを特徴とする。
【００１７】
さらに、本発明の第３の側面は、
暗号処理方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理ステップであり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを利用した暗号処理を実行する暗号処理ステップと、
前記暗号処理部に構成された暗号処理基本ユニットの利用回数設定情報に基づいて、前記暗号処理基本ユニットを１回または複数回繰り返し利用する暗号処理演算の実行制御を行う制御ステップと、
を有することを特徴とする暗号処理方法にある。
【００１８】
さらに、本発明の暗号処理方法の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする。
【００１９】
さらに、本発明の暗号処理方法の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする。
【００２０】
さらに、本発明の第４の側面は、
暗号処理装置製造方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部であり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを生成する暗号処理基本ユニット生成ステップと、
前記暗号処理基本ユニットを適用し、暗号処理装置に設定する暗号処理部のラウンド数に基づいて、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行するラウンド数変更ステップと、
を有することを特徴とする暗号処理装置製造方法にある。
【００２１】
さらに、本発明の暗号処理装置製造方法の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が３つの異なる線形変換行列Ｍ０，Ｍ１，Ｍ２を適用した３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含む構成である場合において、奇数ラウンドを先頭から順次選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含み、偶数ラウンドを最終ラウンドから選択した場合、３連続部分に３種類のＦ関数Ｆ０，Ｆ１，Ｆ２を含むという配列条件であることを特徴とする。
【００２２】
さらに、本発明の暗号処理装置製造方法の一実施態様において、前記Ｆ関数配列条件は、前記Ｆｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理部に含まれる各ラウンドのＦ関数が２つの異なる線形変換行列Ｍ０，Ｍ１を適用した２種類のＦ関数Ｆ０，Ｆ１を含む構成である場合において、奇数ラウンドを先頭ラウンドから順次選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含み、偶数ラウンドを最終ラウンドから選択した場合、２連続部分に２種類のＦ関数Ｆ０，Ｆ１を含むという配列条件であることを特徴とする。
【００２３】
さらに、本発明の暗号処理装置製造方法の一実施態様において、前記ラウンド数変更ステップは、前記暗号処理基本ユニットを構成する先頭ラウンドの前、および最終ラウンドの後に、順次１つずつ、前記Ｆ関数配列条件を満足するＦ関数を選択し追加する処理を実行するステップであることを特徴とする。
【００２４】
さらに、本発明の暗号処理装置製造方法の一実施態様において、前記ラウンド数変更ステップは、前記暗号処理基本ユニットを複数ユニット接続して、Ｆ関数追加処理を実行するステップであることを特徴とする。
【００２５】
さらに、本発明の第５の側面は、
暗号処理装置において暗号処理を実行させるコンピュータ・プログラムであり、
暗号処理部において、非線形変換処理および線形変換処理を含むデータ変換処理を実行するＳＰ型Ｆ関数を複数ラウンド繰り返すＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理を実行する暗号処理ステップであり、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことを可能としたインボリューション性を備え、かつ、複数の異なるＦ関数を予め設定されたＦ関数配列条件を満足する配列とした暗号処理基本ユニットを利用した暗号処理を実行する暗号処理ステップと、
制御部において、前記暗号処理部に構成された暗号処理基本ユニットの利用回数設定情報に基づいて、前記暗号処理基本ユニットを１回または複数回繰り返し利用する暗号処理演算の実行制御を行う制御ステップと、
を実行させることを特徴とするコンピュータ・プログラムにある。
【００２６】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００２７】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００２８】
本発明の構成によれば、非線形変換部および線形変換部を有するＳＰ型のＦ関数を複数ラウンド繰り返し実行するＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成において、予め設定されたインボリーション性および、予め設定されたＦ関数の配列条件としてのＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎラウンド構成のＦｅｉｓｔｅｌ暗号構成を暗号処理基本ユニットとして構成し、この暗号処理基本ユニットに対して、Ｆ関数の配列条件を満足するという条件設定の下に選択したＦ関数を追加する処理や、あるいは、暗号処理基本ユニットを複数接続する処理によって、インボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足する配列を持つラウンド数を増加させたＦｅｉｓｔｅｌ暗号構成を構築することができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
１．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造
２．最適拡散変換および準最適拡散変換について
３．インボリューション性について
４．複数の異なる変換行列を利用するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号構成
５．複数の異なる変換行列を利用するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、ラウンド数の変更を容易にした構成
６．暗号処理装置の構成例
７．暗号処理装置製造装置の構成例
【００３０】
［１．ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造］
まず、ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造について説明する。共通鍵ブロック暗号のデザインとして、平文データの変換方法に基本となる変換関数をある特別な順序で配置するＦｅｉｓｔｅｌ構造と呼ばれる構造が用いられることが多い。Ｆｅｉｓｔｅｌ構造はラウンド関数と呼ばれる変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。
【００３１】
図１を参照して、Ｆｅｉｓｔｅｌ構造について説明する。暗号化対象として入力される平文の長さを２ｍｎビットとする。ただし、ｍ，ｎは共に整数である。初めに、２ｍｎビットの平文を、ｍｎビットの２つの入力データＰＬ（Plain-Left）１０１，ＰＲ(Plain-Right)１０２に分割し、これを入力値とする。
【００３２】
Ｆｅｉｓｔｅｌ構造はラウンド関数とよばれる基本構造の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はＦ関数１２０と呼ばれる。図１の構成では、Ｆ関数（ラウンド関数）１２０がｒ段繰り返された構成例を示している。
【００３３】
例えば第１番目のラウンドでは、ｍｎビットの入力データＸと、鍵生成部（図示せず）から入力されるｍｎビットのラウンド鍵Ｋ１１０３がＦ関数１２０に入力され、Ｆ関数１２０におけるデータ変換処理の後にｍｎビットのデータＹを出力する。出力はもう片方の前段からの入力データ（第１段の場合は入力データＰＬ）と排他的論理和部１０４において、排他的論理和演算がなされ、ｍｎビットの演算結果が次のラウンド関数へと出力される。この処理、すなわちＦ関数を定められたラウンド数（ｒ）だけ繰り返し適用して暗号化処理が完了し、暗号文の分割データＣＬ（Cipher-Left）、ＣＲ（Cipher-Right）が出力される。以上の構成より、Ｆｅｉｓｔｅｌ構造の復号処理はラウンド鍵を挿入する順序を逆にするだけでよく、逆関数を構成する必要がないことが導かれる。
【００３４】
各ラウンドの関数として設定されるＦ関数１２０の構成について、図２を参照して説明する。図２（ａ）は、１つのラウンドにおけるＦ関数１２０に対する入力および出力を示す図であり、図２（ｂ）は、Ｆ関数１２０の構成の詳細を示す図である。Ｆ関数１２０は、図２（ｂ）に示すように、非線形変換層（Ｓ層）と線形変換層（Ｐ層）を接続したいわゆるＳＰ型の構成を有する。
【００３５】
図２に示すＦ関数１２０は、入出力ビット長がｍ×ｎ（ｍ，ｎ：整数）ビットの設定を持つ関数である。ＳＰ型Ｆ関数内部では初めに鍵データＫｉとデータＸｉとの排他的論理和が実行され、次に非線形変換層（Ｓ層）が適用され、続いて線形変換層（Ｐ層）が適用される。
【００３６】
具体的には非線形変換層（Ｓ層）は、Ｓボックス（Ｓ−ｂｏｘ）１２１と呼ばれるｎビット入力ｎビット出力の非線形変換テーブルがｍ個並んだものであり、ｍｎビットのデータはｎビットずつ分割されてそれぞれ対応するＳボックス（Ｓ−ｂｏｘ）１２１に入力されデータが変換される。各Ｓボックスでは、例えば変換テーブルを適用した非線形変換処理が実行される。
【００３７】
線形変換層（Ｐ層）は線形変換部１２２によって構成され、線形変換部１２２は、Ｓボックス１２１からの出力データであるｍｎビットの出力値Ｚを入力し、この入力に対して線形変換を施しｍｎビットの結果を出力する。線形変換部１２２は、入力ビット位置の入れ替え処理などの線形変換処理を実行して、ｍｎビットの出力値Ｙを出力する。この出力値Ｙが前段からの入力データと排他的論理和され、次のラウンドのＦ関数の入力値とされる。
【００３８】
なお、以下に説明する本実施例の構成では、線形変換層（Ｐ層）としての線形変換部１２２において実行する線形変換はＧＦ（２）上で定義されるｍｎ×ｍｎの行列を適用して行なわれる線形変換であると定義し、また、第ｉラウンド目に含まれる行列をＭｉと呼ぶものとする。
【００３９】
［２．最適拡散変換および準最適拡散変換について］
上述のＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、Ｆ関数の線形変換層において実行する線形変換に適用する線形変換行列は、暗号強度を低下させることがないように、ある条件を満足する行列を適用することが好ましい。この条件について説明する。
【００４０】
線形変換の特殊な例として最適拡散変換（ＯＤＭ：Ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ）を以下のように定義する。
ｎ×ａビットデータからｎ×ｂビットデータへの線形変換を行う写像、
θ：｛０，１｝ｎａ→｛０，１｝ｎｂ
に対して分岐数Ｂ（θ）を次のように定義する。
Ｂ（θ）＝ｍｉｎα≠０｛ｈｗｎ（α）＋ｈｗｎ（θ（α））｝
ただし、ｍｉｎα≠０｛Ｘα｝は、α≠０を満たすすべてのＸαのうちの最小値を表すものとし、ｈｗｎ（Ｙ）はビット列Ｙをｎビットごとに区切って表したときに、ｎビットのデータすべてが０ではない（非ゼロ）要素の数を返す関数とする。
このとき、分岐数Ｂ（θ）がｂ＋１であるような写像θを最適拡散変換（ＯＤＭ：Ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ）と定義する。また便宜的に行列Ｍの分岐数をＢ（Ｍ）と表すものとする。
さらに、分岐数Ｂ（θ）がｂ＋１未満であるような写像θを準最適拡散変換（ＳＤＭ：Ｓｕｂ  Ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ）と定義する。
【００４１】
上述のＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、Ｆ関数の線形変換層において実行する線形変換に適用する線形変換行列を決定する場合、上述の最適拡散変換（ＯＤＭ）、すなわち分岐数Ｂ（θ）がｂ＋１であるような写像θ、および準最適拡散変換（ＳＤＭ）、すなわち、分岐数Ｂ（θ）がｂ＋１未満であるような写像θを実行する設定となっているか否かを検討して行列を決定することが好ましい。具体的な行列決定処理については、後述する。
【００４２】
［３．インボリューション性について］
上述のＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号を実行する暗号化関数Ｅを、以下のように定義する。
Ｅ（ＰＬ｜｜ＰＲ，Ｋ１，Ｋ２，・・・，Ｋｒ）
上記暗号化関数Ｅに示すＰＬ，ＰＲは暗号処理の対象として入力する平文を示し、｜｜は連結、Ｋ１，Ｋ２，・・・，Ｋｒは、各ラウンドにおいて使用するラウンド鍵を示す。
【００４３】
このような関数Ｅで示される暗号処理において、その復号関数Ｄは、以下のように示すことができる。
Ｄ（ＣＬ｜｜ＣＲ，Ｋ１，Ｋ２，・・・，Ｋｒ）
＝Ｅ（ＣＬ｜｜ＣＲ，Ｋｒ，・・・，Ｋ２，Ｋ１）
上記復号関数Ｄに示すＣＬ，ＣＲは、復号処理対象として入力する暗号文を示し、｜｜は連結、Ｋｒ，・・・Ｋ２，Ｋ１は、各ラウンドにおいて使用するラウンド鍵を示す。
【００４４】
このようにＦｅｉｓｔｅｌ構造共通鍵ブロック暗号では、通常、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことができるという特徴を有する。すなわち、暗号処理と、復号処理とに個別の回路を設定することなく、同じ回路を適用して、その処理順を逆に設定するのみで暗号処理と復号処理との双方を実行することができる。Ｆｅｉｓｔｅｌ構造共通鍵ブロック暗号が持つこの性質をインボリューション性と定義する。
【００４５】
図を参照して、Ｆｅｉｓｔｅｌ構造共通鍵ブロック暗号が持つインボリューション性について説明する。図１に示すＦｅｉｓｔｅｌ構造を暗号化処理に適用するＦｅｉｓｔｅｌ構造とする。この場合、暗号化関数Ｅを実行する。すなわち、
Ｅ（ＰＬ｜｜ＰＲ，Ｋ１，Ｋ２，・・・，Ｋｒ）
を実行する。ＰＬ，ＰＲは図１に示すように暗号処理の対象として入力する平文を示し、Ｋ１，Ｋ２，・・・，Ｋｒは、図１に示すように、各ラウンドにおいて使用するラウンド鍵を示す。
【００４６】
一方、図１に示すＦｅｉｓｔｅｌ構造による暗号化処理結果としての暗号文ＣＬ，ＣＲを復号するためのＦｅｉｓｔｅｌ構造は、図３に示す構成となる。図３に示すＦｅｉｓｔｅｌ構造は、復号関数Ｄ、すなわち、
Ｄ（ＣＬ｜｜ＣＲ，Ｋ１，Ｋ２，・・・，Ｋｒ）
＝Ｅ（ＣＬ｜｜ＣＲ，Ｋｒ，・・・，Ｋ２，Ｋ１）
を実行する。ＣＬ，ＣＲは、図３に示すように、復号処理対象として入力する暗号文であり、Ｋｒ，・・・Ｋ２，Ｋ１は、図３に示すように、各ラウンドにおいて使用するラウンド鍵を示す。
【００４７】
このように、Ｆｅｉｓｔｅｌ構造共通鍵ブロック暗号では、暗号処理と、復号処理とに個別の回路を設定することなく、同じ回路を適用して、その処理順を逆に設定するのみで暗号処理と復号処理との双方を実行することができる。これをインボリューション性と定義する。
【００４８】
［４．複数の異なる変換行列を利用するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号構成］
ＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、各ラウンドにおいて適用する線形変換行列を異なる行列として設定すると、例えば差分解析などの攻撃に対する耐性を高めることができる。すなわち、暗号強度を高めることが可能となる。なお、各ラウンドにおいて適用する線形変換行列を異なる行列として設定することでＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号の暗号強度を高めた構成の詳細については、本発明と同一の出願人に係る先の特許出願：特願２００５−３１３８４２に説明されている。
【００４９】
従来型のＦｅｉｓｔｅｌ型暗号では、すべてのラウンド（段）のＦ関数に同じ線形変換層を用いているため、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質が存在した。暗号解析手法の代表的な手法として、ある差分を持つ入力データ（平文）とその出力データ（暗号文）を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析（あるいは差分解読法）が知られており、従来のＤＥＳ暗号アルゴリズム等の共通鍵ブロック暗号においては、Ｆ関数の線形変換部において適用する処理（変換行列）を、各段のラウンドにおいて等しいものに設定しているため、差分解析が行いやすく、結果として鍵の解析の容易性を招いている。
【００５０】
各ラウンドのＦ関数に適用する線形変換行列を特定のシーケンスに従った異なる行列とすることで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。
【００５１】
具体的な例について、図４、図５を参照して説明する。図４の例は、複数段（ラウンド）を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成における各段のＦ関数中の線形変換部において適用する線形変換処理のための行列として、２つの異なる行列Ｍ０，Ｍ１を利用した例である。
【００５２】
具体的には、図４に示すように、
（ａ）奇数段にＭ０，Ｍ１の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１の順に配置
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用する構成とする。なお、Ｍ０，Ｍ１の順番は逆でもよい。すなわち、奇数段に連続して同一の行列が連続することなく、偶数段を最終段からみたときにも連続して同一の行列が連続することのないことが差分解析などの攻撃に対する耐性を高めることができる条件となる。
【００５３】
条件（ａ）は、（ａ）奇数段にＭ０，Ｍ１の順に配置する条件であり、図４に示すように、ラウンド１，３，５，・・・の順に、行列Ｍ０，Ｍ１を順に配置する。条件（ｂ）は、（ａ）偶数段の最終段からＭ０，Ｍ１の順に配置する条件であり、図４に示すように、ラウンド１２，１０，８，・・・の順に、行列Ｍ０，Ｍ１を順に配置する。ここで、行列Ｍ０，Ｍ１の各々は、各ラウンドにおけるＦ関数において実行される２つの異なる線形変換行列である。
【００５４】
図４に示す例は、２つの異なる線形変換行列を利用した例であり、この構成においても、差分攻撃に対する耐性を高めることが可能であるが、さらに、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を利用した構成も可能である。図５は、複数段（ラウンド）を持つＦｅｉｓｔｅｌ型共通鍵ブロック暗号処理構成における各段のＦ関数中の線形変換部において適用する線形変換処理のための行列として、３つの異なる行列Ｍ０，Ｍ１，Ｍ２を利用した例である。
【００５５】
図５に示すように、
（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用する構成とする。なお、Ｍ０，Ｍ１，Ｍ２の順番は異なっていてもよい。すなわち、奇数段の３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列が含まれ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列が含まれることが差分解析などの攻撃に対する耐性を高めることができる条件となる。
【００５６】
条件（ａ）は、（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置する条件であり、図５に示すように、ラウンド１，３，５，・・・の順に、行列Ｍ０，Ｍ１，Ｍ２を順に配置する。条件（ｂ）は、（ａ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置する条件であり、図５に示すように、ラウンド１２，１０，８，・・・の順に、行列Ｍ０，Ｍ１，Ｍ２を順に配置する。ここで、行列Ｍ０，Ｍ１，Ｍ２の各々は、各ラウンドにおけるＦ関数において実行される線形変換行列である。
【００５７】
図４、図５を参照して説明したように、異なる行列を特定の順に配置してＦ関数を実行させる構成とすることで、差分解析などの攻撃に対する耐性を高めたより高い安全性を有するＦｅｉｓｔｅｌ型暗号が実現される。なお、この構成および処理の詳細については、本発明と同一の出願人に係る先の特許出願：特願２００５−３１３８４２に説明されている。
【００５８】
さらに、図４、図５を参照して説明したような複数の異なる線形変換行列を設定するＦｅｉｓｔｅｌ型暗号において適用する線形変換行列は、一定の暗号強度を保持するために、特定の性質を持つ行列を利用することが好ましい。この線形変換行列の評価、設定の際に、最適拡散変換、準最適拡散変換という評価基準を用いることができる。
【００５９】
最適拡散変換、準最適拡散変換の定義について説明する。図５を参照して説明した３つの異なる行列をＭ０，Ｍ１，Ｍ２とした場合に｛Ｍ０｜｜Ｍ１｜｜Ｍ２｝，｛ｔＭ０−１｜｜ｔＭ１−１｝，｛ｔＭ０−１｜｜ｔＭ２−１｝，｛ｔＭ１−１｜｜ｔＭ２−１｝という４つの行列全てが最適拡散変換（Ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ）であるとき，Ｍ０，Ｍ１，Ｍ２はＯＤＭ−ＭＲ（Ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ  ａｃｒｏｓｓ  Ｍｕｌｔｉｐｌｅ  Ｒｏｕｎｄｓ）構造を持つ行列であると定義する。ただし，｜｜は連結，ｔＭはＭの転置行列，Ｍ−１はＭの逆行列を表す。
【００６０】
また、図５を参照して説明した３つの異なる行列をＭ０，Ｍ１，Ｍ２とした場合に｛Ｍ０｜｜Ｍ１｜｜Ｍ２｝，｛ｔＭ０−１｜｜ｔＭ１−１｝，｛ｔＭ０−１｜｜ｔＭ２−１｝，｛ｔＭ１−１｜｜ｔＭ２−１｝という４つの行列４つの行列のうちどれかひとつでも準最適拡散変換（Ｓｕｂ  ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ）である場合、Ｍ０，Ｍ１，Ｍ２はＳＤＭ−ＭＲ（Ｓｕｂ  ｏｐｔｉｍａｌ  Ｄｉｆｆｕｓｉｏｎ  Ｍａｐｐｉｎｇｓ  ａｃｒｏｓｓ  Ｍｕｌｔｉｐｌｅ  Ｒｏｕｎｄｓ）構造を持つ行列であると定義する。
【００６１】
なお、３つの異なる行列をＭ０，Ｍ１，Ｍ２とした場合に、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させるためには、３つの異なる行列をＭ０，Ｍ１，Ｍ２の配列順は、先に図５を参照して説明した配列順、すなわち、
（ａ）奇数段にＭ０，Ｍ１，Ｍ２の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１，Ｍ２の順に配置
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を配列することが条件となる。なお、先に説明したように、Ｍ０，Ｍ１，Ｍ２の順番は異なっていてもよい。すなわち、奇数段の３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列が含まれ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列が含まれることがＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となり、差分解析などの攻撃に対する耐性を高めることができる条件となる。
【００６２】
また、２つの異なる行列をＭ０，Ｍ１とした場合に、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させるためには、２つの異なる行列をＭ０，Ｍ１の配列順は、先に図４を参照して説明した配列順、すなわち、
（ａ）奇数段にＭ０，Ｍ１の順に配置
（ｂ）偶数段の最終段からＭ０，Ｍ１の順に配置
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を配列することが条件となる。なお、先に説明したように、Ｍ０，Ｍ１の順番は逆でもよい。すなわち、奇数段に連続して同一の行列が連続することなく、偶数段を最終段からみたときにも連続して同一の行列が連続することのないことがＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となり、差分解析などの攻撃に対する耐性を高めることができる条件となる。
【００６３】
このように、複数の異なる行列を利用するＦｅｉｓｔｅｌ型暗号構成において、各ラウンドにおいて適用する線形変換行列の設定をＯＤＭ−ＭＲ構造、あるいはＳＤＭ−ＭＲ構造とすることで、安全性の高い暗号処理を実現することができる。
【００６４】
［５．複数の異なる変換行列を利用するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、ラウンド数の変更を容易にした構成］
次に、複数の異なる変換行列を利用するＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ型暗号において、ラウンド数の変更を容易にした構成について説明する。
【００６５】
共通鍵ブロック暗号において、その処理ラウンド数（段数）は速度、安全性との間にトレードオフがあるため、柔軟に増減できることが望ましい。一般的にラウンド数（段数）が増加すれば安全性は高くなるが速度は落ち、段数が減少すれば安全性は低くなるが速度が上がるという関係がある。従って、処理速度優先とする場合、あるいは安全性優先とする場合など、その用途に応じて柔軟に処理ラウンド数を変更可能とする構成とすることが望まれる。
【００６６】
また、Ｆｅｉｓｔｅｌ型暗号を適用した暗号処理に適用する秘密鍵のサイズに応じて、処理ラウンド数を変更するという要請もある。例えば、暗号処理に適用する秘密鍵のサイズを変更する場合において、十分な安全性を確保するためには、秘密鍵のサイズに合わせて処理ラウンド数を適切に変更することが好ましい。例えば、ＡＥＳ暗号アルゴリズムを実行する場合、適用する秘密鍵のサイズが１２８ビットのときは１０段、１９２ビットのときは１２段、２５６ビットのときは１４段と秘密鍵のサイズと共に処理ラウンド数を変化させ、秘密鍵のサイズ分の鍵構成ビットデータを有効に利用することのできるラウンド数を設定することが要請される。
【００６７】
上述したＯＤＭ−ＭＲ構造やＳＤＭ−ＭＲ構造を持つ行列を線形変換に適用したＳＰ型Ｆ関数を持つＦｅｉｓｔｅｌ構造共通鍵ブロック暗号を構築する場合にも、前述のインボリューション性を維持することが望ましいが、異なる線形変換行列を含む異なるＦ関数を配置する際には、先に、図４、図５を参照して説明した制約の下に配置しなければならない。
【００６８】
なお、以下の説明においては、線形変換行列Ｍ０を用いたＦ関数をＦ０、線形変換行列Ｍ１を用いたＦ関数をＦ１、線形変換行列Ｍ２を用いたＦ関数をＦ２と記載することにする。
【００６９】
３つの異なる行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数Ｆ０，Ｆ１，Ｆ２を利用した場合は、先に図５を参照して説明したように、
（ａ）奇数ラウンドを上から選択した場合、Ｆ０，Ｆ１，Ｆ２，Ｆ０，Ｆ１，・・・の順に配置
（ｂ）偶数ラウンドを下から選択した場合、Ｆ０，Ｆ１，Ｆ２，Ｆ０，Ｆ１，・・・の順に配置
上記（ａ），（ｂ）の条件を満足するように３つの異なる行列Ｍ０，Ｍ１，Ｍ２を適用したＦ関数Ｆ０，Ｆ１，Ｆ２を配置する構成とすることが必要となる。なお、先に説明したように、Ｆ０，Ｆ１，Ｆ２の順番は異なっていてもよい。すなわち、奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれることがＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となり、差分解析などの攻撃に対する耐性を高めることができる条件となる。
【００７０】
同様に、２つの異なる行列Ｍ０，Ｍ１を利用したＦ関数Ｆ０，Ｆ１を利用した場合は、先に図４を参照して説明したように、
（ａ）奇数ラウンドを上から選択した場合、Ｆ０，Ｆ１，Ｆ０，Ｆ１，Ｆ０，・・・の順に配置
（ｂ）偶数ラウンドを下から選択した場合、Ｆ０，Ｆ１，Ｆ０，Ｆ１，Ｆ０，・・・の順に配置
上記（ａ），（ｂ）の条件を満足するように２つの異なる行列Ｍ０，Ｍ１を適用したＦ関数Ｆ０，Ｆ１を配置する構成とすることが必要となる。なお、先に説明したように、Ｆ０，Ｆ１の順番は逆でもよい。すなわち、奇数段に連続して同一の行列が連続することがないように、異なる２つのＦ関数、Ｆ０，Ｆ１が連続して含まれ、偶数段を最終段からみたときにも連続して同一の行列が連続することがないように、異なる２つのＦ関数、Ｆ０，Ｆ１が連続して含まれることがＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となり、差分解析などの攻撃に対する耐性を高めることができる条件となる。
【００７１】
さらに、異なる複数の行列を利用したＦ関数を適用したＦｅｉｓｔｅｌ型暗号において、インボリューション性、すなわち、先に説明したように、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数を同じ回路で行うことができるというインボリューション性を維持するためには、Ｆｅｉｓｔｅｌ型暗号の各ラウンドのＦ関数の上からの配置順と、下からの配置順が同一であることが必要となる。
【００７２】
このように、Ｆｅｉｓｔｅｌ型暗号においては、
インボリューション性の維持という条件と、
さらに、複数の異なる線形変換行列を利用した異なるＦ関数を適用するＦｅｉｓｔｅｌ型暗号構成とする場合には、その配列についても、上述したようなＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列とするという条件が、差分解析などの暗号攻撃に対する耐性を維持するためには必要となる。
【００７３】
複数の異なる線形変換行列を利用した異なるＦ関数を適用するＦｅｉｓｔｅｌ型暗号構成では、このような条件を満足させることが必要であり、暗号処理構成を設計する場合は、予めラウンド数を決定し、決定した固定ラウンド数に応じて複数の異なる線形変換行列を持つ異なるＦ関数の配置を決定するということが行なわれる。この結果、固定したラウンド数においては、インボリューション性、および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させる設計を行なうことができるが、これらのラウンド数の変更に容易に対応しにくいという問題があった。
【００７４】
例えば、６ラウンド（６段）構成として、３つの異なる行列を使用したＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号を想定した場合、配置するＦ関数の順序は、図６に示すような設定とすることが必要である。すなわち、図６に示すように、
上から、
［Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０］
の設定とすることになる。
【００７５】
また、８段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号の場合、配置するＦ関数の順序は、図７に示すような設定とすることが必要である。すなわち、図７に示すように、上から
［Ｆ０→Ｆ０→Ｆ１→Ｆ２→Ｆ２→Ｆ１→Ｆ０→Ｆ０］
の設定とすることになる。
【００７６】
このように、各ラウンド数に対応して個別にインボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させる設計を行なうことができるが、６段構成を８段構成に変更するといったことは容易ではない。すなわち、図６、図７に示すように、６段構成、８段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号は、Ｆ関数の順序が大きく異なるため、再利用できる箇所が非常に少ない。例えば、図６に示すような、６段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号をすでに実装しているハードウェアが製造済みであったとする。ここで、図７に示すような８段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号を使用したいといった要請があった場合、図６に示す６段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号のハードウェアはほとんど利用することはできず、新たに、図７に示す８段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号のハードウェアを作成することが必要となるという問題がある。あるいは、処理プログラムとしてのソフトウェアの変更を行なうといった処理が必要となる。
【００７７】
以下、このような処理負担を軽減させる構成例について説明する。すなわち、ＯＤＭ−ＭＲ構造または、ＳＤＭ−ＭＲ構造を持つＦｅｉｓｔｅｌ暗号処理構成において、処理ラウンド数の増加や減少などのラウンド数の変更を効率的に実行可能とした構成について説明する。
【００７８】
（処理例１）Ｆｅｉｓｔｅｌ暗号処理基本ユニットにＦ関数を追加する処理例
まず、予め設定されたＦｅｉｓｔｅｌ暗号処理基本ユニット、すなわち、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つＦｅｉｓｔｅｌ暗号処理基本ユニットに対して、Ｆ関数を追加することで、ラウンド数を増加させる処理構成について説明する。
【００７９】
一例として、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つ６段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号を基本とする暗号処理基本ユニットとする。ここでは、３つの異なる線形変換行列を持つ異なるＦ関数Ｆ０，Ｆ１，Ｆ２から構成されるＦｅｉｓｔｅｌ暗号処理基本ユニットとする。この基本暗号処理基本ユニットは、先に図６を参照して説明したように、Ｆ関数の配置は、上から、
［Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０］
となり、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つ。
【００８０】
この６段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号を８ラウンド（段）構成に変更する処理について説明する。６段を８段に変更する場合、図８に示すように、［Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０］という配列を持つ６段構成の暗号処理基本ユニット２０１の上下にそれぞれ［Ｆ０］というＦ関数を追加する。
【００８１】
このＦ関数［Ｆ０］の追加によって、図８に示すように、Ｆｅｉｓｔｅｌ暗号構成は、８ラウンド（段）構成に変更され、Ｆ関数の配置順は、上から、
［Ｆ０→Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０→Ｆ０］
という設定となる。
この８段構成の場合、Ｆ関数の配置順は、奇数段を上から選択した場合、
［Ｆ０→Ｆ２→Ｆ１→Ｆ０］
となり、偶数段を下からたどって選択した場合、
［Ｆ０→Ｆ２→Ｆ１→Ｆ０］
となっている。
【００８２】
この８段構成のＦｅｉｓｔｅｌ暗号構成は、各ラウンドのＦ関数の上からの配置順と、下からの配置順が同一であり、従って、インボリューション性が満足される。さらに、奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれるので、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となる。
【００８３】
この場合のＦ関数の選択条件は、
奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、かつ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれる設定となるＦ関数を選択することである。
【００８４】
この選択条件に基づいて追加するＦ関数を選択すると、図８に示す６段から８段へのラウンド数追加処理においては、追加するＦ関数は、Ｆ関数［Ｆ０］となり、６段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号を、インボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つ８ラウンド（段）構成のＦｅｉｓｔｅｌ暗号に変更することができる。
【００８５】
さらに、この図８に示すインボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つ８ラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成を１０段に変更する場合の処理例について、図９を参照して説明する。８段を１０段に変更する場合、図９に示すように、［Ｆ０→Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０→Ｆ０］という配列を持つ８段構成の暗号処理基本ユニット２０２の上下にそれぞれ［Ｆ２］というＦ関数を追加する。
【００８６】
このＦ関数［Ｆ２］の追加によって、図９に示すように、Ｆｅｉｓｔｅｌ暗号構成は、１０ラウンド（段）構成に変更され、Ｆ関数の配置順は、上から、
［Ｆ２→Ｆ０→Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０→Ｆ０→Ｆ２］
という設定となる。
この１０段構成の場合、Ｆ関数の配置順は、奇数段を上から選択した場合、
［Ｆ２→Ｆ０→Ｆ１→Ｆ２→Ｆ０］
となり、偶数段を下からたどって選択した場合、
［Ｆ２→Ｆ０→Ｆ１→Ｆ２→Ｆ０］
となっている。
【００８７】
この１０段構成のＦｅｉｓｔｅｌ暗号構成は、各ラウンドのＦ関数の上からの配置順と、下からの配置順が同一であり、従って、インボリューション性が満足される。さらに、奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれるので、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となる。
【００８８】
この場合のＦ関数の選択条件も、６段から８段への変更と同様であり、奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、かつ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれる設定となるＦ関数を選択することである。
【００８９】
この選択条件に基づいて追加するＦ関数を選択すると、図９に示す８段から１０段へのラウンド数追加処理においては、追加するＦ関数は、Ｆ関数［Ｆ２］となり、８段構成のＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号を、インボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つ１０ラウンド（段）構成のＦｅｉｓｔｅｌ暗号に変更することができる。
【００９０】
このように、予め設定されたインボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成を、ｎ＋２ラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成とする場合、奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、かつ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれる設定となるＦ関数を選択して、上下に追加することで、インボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎ＋２ラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成を構築することができる。
【００９１】
このような条件を満足するようにＦ関数の追加処理、すなわち、予め設定されたインボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成ユニットに対して、最上段と最下段のそれぞれに適切なＦ関数を付加する処理を行なうことで、付加した関数以外の部分は変更する以前の関数をそのまま再利用することが可能であり，２段ごとに効率よく段数の増減が行える．
【００９２】
以上のような処理によって、ＯＤＭ−ＭＲまたはＳＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号のインボリューション性を維持したまま、効率よくその処理ラウンド数を２段ごとに増減することが可能になる。また、上下に追加設定したＦ関数は、順次、上下から１つずつ取り除いても、インボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成ユニットが残り、ラウンドの増加のみならず、当初の暗号処理基本ユニットレベルまでのラウンド数削減にも対応可能である。
【００９３】
なお、上述した処理例では、３つの異なる線形変換行列を持つ３つのＦ関数Ｆ０，Ｆ１，Ｆ２が含まれる構成例について説明したが、２つの異なる線形変換行列を持つ２つのＦ関数Ｆ０，Ｆ１が含まれる構成においても同様の処理によって、ラウンド数の増加が実現できる。
【００９４】
２つの異なる線形変換行列を持つ２つのＦ関数Ｆ０，Ｆ１が含まれるＦｅｉｓｔｅｌ暗号構成について、ラウンド数の増加を行なう場合の条件は、以下のようになる。予め設定されたインボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成を、ｎ＋２ラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成とする場合、奇数段の２連続部分に必ず異なる２つの行列Ｍ０，Ｍ１を利用したＦ関数、Ｆ０，Ｆ１が含まれ、かつ、偶数段を最終段からみたときにも２連続部分に必ず、Ｍ０，Ｍ１の異なる２つの行列を適用した異なる２つのＦ関数、Ｆ０，Ｆ１が含まれる設定となるＦ関数を選択して、上下に追加することで、インボリーション性および、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列を持つｎ＋２ラウンド（段）構成のＦｅｉｓｔｅｌ暗号構成を構築することができる。
【００９５】
（処理例２）Ｆｅｉｓｔｅｌ暗号処理基本ユニットを複数利用する処理例
上述した処理例では、基本となるＦｅｉｓｔｅｌ暗号処理基本ユニットの上下に、それぞれ１つずつのＦ関数を追加することで、２ラウンド増加したＦｅｉｓｔｅｌ暗号処理構成を構築する例を説明した。次に、基本となるＦｅｉｓｔｅｌ暗号処理基本ユニットを複数、組み合わせることで、ラウンド数の変更を行なう処理例について説明する。
【００９６】
図１０を参照して、基本となるＦｅｉｓｔｅｌ暗号処理基本ユニットを複数、組み合わせることで、ラウンド数の変更を行なう処理例について説明する。図１０に示すＦｅｉｓｔｅｌ暗号処理基本ユニット２３１，２３２のそれぞれは、Ｆ関数の配置が、上から、
［Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０］
となり、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つ６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニットである。
【００９７】
図１０に示す構成は、この２つの６段Ｆｅｉｓｔｅｌ暗号処理基本ユニット２３１，２３２を用いて、１２段構成のＦｅｉｓｔｅｌ暗号処理構成を設定したものである。図１０に示す１２段構成のＦｅｉｓｔｅｌ暗号構成は、Ｆ関数の配置が、上から、
［Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０→Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０］
となる。
この１２段構成の場合、Ｆ関数の配置順は、奇数段を上から選択した場合、
［Ｆ０→Ｆ１→Ｆ２→Ｆ０→Ｆ１→Ｆ２］
となり、偶数段を下からたどって選択した場合、
［Ｆ０→Ｆ１→Ｆ２→Ｆ０→Ｆ１→Ｆ２］
となっている。
【００９８】
この１２段構成のＦｅｉｓｔｅｌ暗号構成は、各ラウンドのＦ関数の上からの配置順と、下からの配置順が同一であり、従って、インボリューション性が満足される。さらに、奇数段の３連続部分に必ず異なる３つの行列Ｍ０，Ｍ１，Ｍ２を利用したＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれ、偶数段を最終段からみたときにも３連続部分に必ず、Ｍ０，Ｍ１，Ｍ２の異なる３つの行列を適用した異なる３つのＦ関数、Ｆ０，Ｆ１，Ｆ２が含まれるので、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となる。
【００９９】
図１０には、６段のユニットを２つ接続して１２段構成のＦｅｉｓｔｅｌ暗号構成を生成した例を示したが、さらに６段のユニットを３つ、４つ・・と、多数接続することで、同様に１８段，２４段のＦｅｉｓｔｅｌ暗号構成、すなわち、ＯＤＭ−ＭＲ構造でかつインボリューション性も保たれたＦｅｉｓｔｅｌ暗号構成を構成することが可能となる。
【０１００】
このように、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つｎ段のＦｅｉｓｔｅｌ暗号処理基本ユニットを複数個（ｋ）組み合わせることによって、ｋ×ｎ段のインボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させたＦｅｉｓｔｅｌ暗号処理構成を構築することができる。
【０１０１】
同様に２つの異なる行列Ｍ０，Ｍ１を用いたＯＤＭ−ＭＲまたはＳＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号処理構成を暗号処理基本ユニットとして、これを複数、組み合わせることで、ラウンド数の変更を行なう処理例について説明する。図１１に示すＦｅｉｓｔｅｌ暗号処理基本ユニット２５１，２５２，２５３のそれぞれは、Ｆ関数の配置が、上から、
［Ｆ０→Ｆ１→Ｆ１→Ｆ０］
となり、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つ４段構成のＦｅｉｓｔｅｌ暗号処理基本ユニットである。
【０１０２】
図１１に示す構成は、この３つの４段Ｆｅｉｓｔｅｌ暗号処理基本ユニット２５１，２５２，２５３を用いて、１２段構成のＦｅｉｓｔｅｌ暗号処理構成を設定したものである。図１１に示す１２段構成のＦｅｉｓｔｅｌ暗号構成は、Ｆ関数の配置が、上から、
［Ｆ０→Ｆ１→Ｆ１→Ｆ０→Ｆ０→Ｆ１→Ｆ１→Ｆ０→Ｆ０→Ｆ１→Ｆ１→Ｆ０］
となる。
この１２段構成の場合、Ｆ関数の配置順は、奇数段を上から選択した場合、
［Ｆ０→Ｆ１→Ｆ０→Ｆ１→Ｆ０→Ｆ１］
となり、偶数段を下からたどって選択した場合、
［Ｆ０→Ｆ１→Ｆ０→Ｆ１→Ｆ０→Ｆ１］
となっている。
【０１０３】
この１２段構成のＦｅｉｓｔｅｌ暗号構成は、各ラウンドのＦ関数の上からの配置順と、下からの配置順が同一であり、従って、インボリューション性が満足される。さらに、奇数段の２連続部分に必ず異なる２つの行列Ｍ０，Ｍ１を利用したＦ関数、Ｆ０，Ｆ１が含まれ、偶数段を最終段からみたときにも２連続部分に必ず、Ｍ０，Ｍ１の異なる２つの行列を適用した異なる２つのＦ関数、Ｆ０，Ｆ１が含まれるので、ＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列となる。
【０１０４】
図１１には、４段のユニットを３つ接続して１２段構成のＦｅｉｓｔｅｌ暗号構成を生成した例を示したが、さらに４段のユニットを４つ，５つ・・と、多数接続することで、同様に１６段，２０段のＦｅｉｓｔｅｌ暗号構成、すなわち、ＯＤＭ−ＭＲ構造でかつインボリューション性も保たれたＦｅｉｓｔｅｌ暗号構成を構成することが可能となる。
【０１０５】
このように、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つｎ段のＦｅｉｓｔｅｌ暗号処理基本ユニットを複数個（ｋ）組み合わせることによって、ｋ×ｎ段のインボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させたＦｅｉｓｔｅｌ暗号処理構成を構築することができる。
【０１０６】
例えば、ＩＣカードなどの暗号処理を実行する情報処理装置における実装処理においては、例えば図１０を参照して説明した６段構成ＯＤＭ−ＭＲ構造Ｆｅｉｓｔｅｌ暗号処理基本ユニットを１つだけをハードウェアで実装しておき、使用する回数を選択可能とした処理プログラムを設定して、用途に応じて使用回数を変更するような処理プログラムを実行させる構成とすることで、様々なデータ処理に応じて選択されたラウンド数の暗号処理を実行させることができ、処理ラウンド数の増減を可能とした装置を低コストで実現できる。
【０１０７】
具体的な例について、図１２を参照して説明する。図１２には、暗号処理を実行する。６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２７０と、スイッチ２７１〜２７４を示してある。なお、スイッチ２７１〜２７４は、ハードウェアとして設定する構成としてもソフトウェア上でスイッチと同様の処理を実行する制御を行う構成としてもよい。
【０１０８】
図１２に示す６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２７０は、先に図６、図１０を参照して説明したと同様、Ｆ関数の配置が、上から、
［Ｆ０→Ｆ２→Ｆ１→Ｆ１→Ｆ２→Ｆ０］
となり、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つ６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニットである。
【０１０９】
図示しない制御部の制御によって、スイッチ２７１〜２７４が制御される。初期データの入力時には、スイッチ２７１，２７２は［ａ］側に設定され、例えば平文データＰＬ，ＰＲが入力され、６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２７０において６ラウンドのＦｅｉｓｔｅｌ暗号処理が実行される。処理結果は、スイッチ２７３，２７４が［ｃ］側に設定されている場合、出力される。
【０１１０】
６ラウンドのＦｅｉｓｔｅｌ暗号処理を実行する場合は、スイッチ２７３，２７４が［ｃ］側に設定され、結果が出力される。例えば１２ラウンドの暗号処理を実行する設定の場合、制御部の制御によって、スイッチ２７３，２７４は［ｄ］側に設定され、スイッチ２７１，２７２は［ｂ］側に設定される。その結果、６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２７０において実行された６ラウンドの処理結果は、再度、６段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２７０の最上段に入力されて、さらに＋６ラウンドのＦ関数による暗号処理が実行される。
【０１１１】
暗号処理が１２ラウンドの処理設定である場合は、その後、スイッチ２７３，２７４が［ｃ］側に設定され、出力される。さらに１８、２４・・ラウンドのＦ関数処理を実行する場合は、スイッチ２７３，２７４が［ｄ］に設定されて、予定の処理ラウンドの終了後に、スイッチ２７３，２７４が［ｃ］側に設定され、出力されることになる。このように、１つの基本となる暗号処理基本ユニット、すなわち、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つｎ段構成のＦｅｉｓｔｅｌ暗号処理基本ユニットをＩＣカードなどの暗号処理装置内に構成し、このユニットを利用した処理の繰り返し回数をＣＰＵなどの制御部の実行するプログラムによって選択可能な構成とすることで、それぞれのデータ処理に応じた最適なラウンド数の暗号処理演算を実行することが可能となる。
【０１１２】
図１３は、２種類の行列を利用した構成例を示している。４段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２８０と、スイッチ２８１〜２８７４を示してある。図１３に示す３段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２８０は、先に図１１を参照して説明したと同様、Ｆ関数の配置が、上から、
［Ｆ０→Ｆ１→Ｆ１→Ｆ０］
となり、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つ４段構成のＦｅｉｓｔｅｌ暗号処理基本ユニットである。
【０１１３】
図示しない制御部の制御によって、スイッチ２８１〜２８４が制御される。初期データの入力時には、スイッチ２８１，２８２は［ａ］側に設定され、例えば平文データＰＬ，ＰＲが入力され、４段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２８０においておラウンドのＦｅｉｓｔｅｌ暗号処理が実行される。処理結果は、スイッチ２８３，２８４が［ｃ］側に設定されている場合、出力される。
【０１１４】
４ラウンドのＦｅｉｓｔｅｌ暗号処理を実行する場合は、スイッチ２８３，２８４が［ｃ］側に設定され、結果が出力される。例えば８ラウンドの暗号処理を実行する設定の場合、制御部の制御によって、スイッチ２８３，２８４は［ｄ］側に設定され、スイッチ２８１，２８２は［ｂ］側に設定される。その結果、４段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２８０において実行された４ラウンドの処理結果は、再度、４段構成のＦｅｉｓｔｅｌ暗号処理基本ユニット２８０の最上段に入力されて、さらに＋４ラウンドのＦ関数による暗号処理が実行される。
【０１１５】
暗号処理が８ラウンドの処理設定である場合は、その後、スイッチ２８３，２８４が［ｃ］側に設定され、出力される。さらに１２、１６・・ラウンドのＦ関数処理を実行する場合は、スイッチ２８３，２８４が［ｄ］に設定されて、予定の処理ラウンドの終了後に、スイッチ２８３，２８４が［ｃ］側に設定され、出力されることになる。このように、１つの基本となる暗号処理基本ユニット、すなわち、インボリューション性とＯＤＭ−ＭＲ、または、ＳＤＭ−ＭＲを満足させる行列配列という２つの条件を満足させた構成を持つｎ段構成のＦｅｉｓｔｅｌ暗号処理基本ユニットをＩＣカードなどの暗号処理装置内に構成し、このユニットを利用した処理の繰り返し回数をＣＰＵなどの制御部の実行するプログラムによって選択可能な構成とすることで、それぞれのデータ処理に応じた最適なラウンド数の暗号処理演算を実行することが可能となる。
【０１１６】
［６．暗号処理装置の構成例］
次に、暗号処理を実行する暗号処理装置としてのＩＣモジュール３００の構成例について、図１４を参照して説明する。暗号処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１４に示すＩＣモジュール３００は、暗号処理装置の一例を示すものである。
【０１１７】
図１４に示すＣＰＵ(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)
３０２  メモリ
３０３  暗号処理部
３０４  乱数発生器
３０５  送受信部
５０１  暗号処理基本ユニット生成部
５０２  ラウンド数変更部
５１０  暗号処理装置
【図１】
2007199156.tif 000003
【図２】
2007199156.tif 000004
【図３】
2007199156.tif 000005
【図４】
2007199156.tif 000006
【図５】
2007199156.tif 000007
【図６】
2007199156.tif 000008
【図７】
2007199156.tif 000009
【図８】
2007199156.tif 000010
【図９】
2007199156.tif 000011
【図１０】
2007199156.tif 000012
【図１１】
2007199156.tif 000013
【図１２】
2007199156.tif 000014
【図１３】
2007199156.tif 000015
【図１４】
2007199156.tif 000016
【図１５】
2007199156.tif 000017