Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ENCRYPTION DEVICE, ENCRYPTION METHOD, AND COMPUTER PROGRAM
Document Type and Number:
WIPO Patent Application WO/2008/026621
Kind Code:
A1
Abstract:
In an extended Feistel common key block encryption process, it is possible to make an encryption function and a decryption function have a common configuration. In an encryption configuration employing the extended Feistel structure having a data sequence number d which is an integer satisfying d ≥ 3, it is possible to apply an involution feature, i.e., a function common to the encryption and the decryption. By using a configuration for replacing a round key in a decryption and replacing an F function so as to set the swap function to the same processing aspect in the encryption process and the decryption process, it is possible to perform the processes by using the common function.

Inventors:
SHIBUTANI, Kyoji (MINATO-KU Tokyo, 75, 1080075, JP)
渋谷 香士 (〒75 東京都港区港南1丁目7番1号 ソニー株式会社内 Tokyo, 1080075, JP)
SHIRAI, Taizo (MINATO-KU Tokyo, 75, 1080075, JP)
白井 太三 (〒75 東京都港区港南1丁目7番1号 ソニー株式会社内 Tokyo, 1080075, JP)
Application Number:
JP2007/066729
Publication Date:
March 06, 2008
Filing Date:
August 29, 2007
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SONY CORPORATION (1-7-1 KONAN, MINATO-KU Tokyo, 75, 1080075, JP)
ソニー株式会社 (〒75 東京都港区港南1丁目7番1号 Tokyo, 1080075, JP)
SHIBUTANI, Kyoji (MINATO-KU Tokyo, 75, 1080075, JP)
渋谷 香士 (〒75 東京都港区港南1丁目7番1号 ソニー株式会社内 Tokyo, 1080075, JP)
SHIRAI, Taizo (MINATO-KU Tokyo, 75, 1080075, JP)
International Classes:
G09C1/00; H04L9/06
Attorney, Agent or Firm:
MIYATA, Masaaki et al. (Sawada, Miyata Yamada & Sasaki,Patent Office Ginza TK Bldg.,1-7 shintomi 1-chome Chuo-Ku, Tokyo 41, 1040041, JP)
Download PDF:
Claims:
 データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理装置であり、
 暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理部を有し、
 前記データ処理部は、
 暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行する構成であることを特徴とする暗号処理装置。
 前記データ処理部は、
 暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
 前記データ処理部は、
 前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行する構成であり、
 復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定としたラウンド鍵入れ替え処理を行なう構成であることを特徴とする請求項1に記載の暗号処理装置。
 前記データ処理部は、
 前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する構成であり、
 復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なう構成であることを特徴とする請求項1に記載の暗号処理装置。
 前記データ処理部は、
 複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行する構成であることを特徴とする請求項4に記載の暗号処理装置。
 前記データ処理部は、
 前記拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、
 復号処理の最終ラウンドの出力結果のシーケンス入れ替え処理を行なう出力調整を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
 暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理方法であり、
 データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理ステップを有し、
 前記データ処理ステップは、
 暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行することを特徴とする暗号処理方法。
 前記データ処理ステップは、
 暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行するステップであることを特徴とする請求項7に記載の暗号処理方法。
 前記データ処理ステップは、
 前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行するステップであり、
 復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定としたラウンド鍵入れ替え処理を行なうことを特徴とする請求項7に記載の暗号処理方法。
 前記データ処理ステップは、
 前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行するステップであり、
 復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なうことを特徴とする請求項7に記載の暗号処理方法。
 前記データ処理ステップは、
 複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行するステップを含むことを特徴とする請求項10に記載の暗号処理方法。
 前記データ処理ステップは、
 前記拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、
 復号処理の最終ラウンドの出力結果のシーケンス入れ替え処理を行なう出力調整を実行するステップを含むことを特徴とする請求項7に記載の暗号処理方法。
 暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行させるコンピュータ・プログラムであり、
 データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行させるデータ処理ステップを有し、
 前記データ処理ステップは、
 暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行させるステップであることを特徴とするコンピュータ・プログラム。
Description:
暗号処理装置、および暗号処理 法、並びにコンピュータ・プログラム

 本発明は、暗号処理装置、および暗号処 方法、並びにコンピュータ・プログラムに する。さらに詳細には、Feistel型共通鍵ブロ ック暗号処理を実行する暗号処理装置、およ び暗号処理方法、並びにコンピュータ・プロ グラムに関する。

 昨今、ネットワーク通信、電子商取引の 展に伴い、通信におけるセキュリティ確保 重要な問題となっている。セキュリティ確 の1つの方法が暗号技術であり、現在、様々 な暗号化手法を用いた通信が実際に行なわれ ている。

 例えばICカード等の小型の装置中に暗号 理モジュールを埋め込み、ICカードと、デー タ読み取り書き込み装置としてのリーダライ タとの間でデータ送受信を行ない、認証処理 、あるいは送受信データの暗号化、復号を行 なうシステムが実用化されている。

 暗号処理アルゴリズムには様々なものが るが、大きく分類すると、暗号化鍵と復号 を異なる鍵、例えば公開鍵と秘密鍵として 定する公開鍵暗号方式と、暗号化鍵と復号 を共通の鍵として設定する共通鍵暗号方式 に分類される。

 共通鍵暗号方式にも様々なアルゴリズム あるが、その1つに共通鍵をベースとして複 数の鍵を生成して、生成した複数の鍵を用い てブロック単位(64ビット,128ビットなど)のデ タ変換処理を繰り返し実行する方式がある このような鍵生成方式とデータ変換処理を 用したアルゴリズムの代表的なものが共通 ブロック暗号方式である。

 代表的な共通鍵ブロック暗号のアルゴリ ムとしては、例えば過去に米国標準暗号で ったDES(Data Encryption Standard)アルゴリズム、 現在の米国標準暗号であるAES(Advanced Encryption  Standard)アルゴリズムなどが知られている。

 このような、共通鍵ブロック暗号のアル リズムは、主として、入力データの変換を り返し実行するF関数部を有するラウンド関 数部と、ラウンド関数部の各ラウンドにおけ るF関数部で適用するラウンド鍵を生成する スケジュール部とによって構成される。鍵 ケジュール部は、秘密鍵であるマスター鍵( 鍵)に基づいて、まずビット数を増加させた 拡大鍵を生成し、生成した拡大鍵に基づいて 、ラウンド関数部の各ラウンドのF関数部で 用するラウンド鍵(副鍵)を生成する。

 このようなラウンド関数(F関数)を適用し アルゴリズムを実行する具体的な構造とし 、Feistel構造が知られている。Feistel構造は データ変換関数としてのラウンド関数(F関数 )の単純な繰り返しにより、平文を暗号文に 換する構造を持つ。Feistel構造を適用した暗 処理について記載した文献としては、例え 非特許文献1、非特許文献2がある。

 しかし、このFeistel構造を適用する共通鍵 ブロック暗号処理の問題点として、暗号解析 による鍵の漏洩がある。暗号解析または攻撃 手法の代表的な手法として、ある差分を持つ 入力データ(平文)とその出力データ(暗号文) 多数解析することにより各ラウンド関数に ける適用鍵を解析する差分解析(差分解読法 たは差分攻撃とも呼ばれる)や、平文と対応 暗号文に基づく解析を行う線形解析(線形解 法または線形攻撃とも呼ばれる)が知られて る。

 暗号解析による鍵の解析が容易であると うことは、その暗号処理の安全性が低いと うことになる。従来の暗号アルゴリズムに いては、ラウンド関数(F関数)部の線形変換 において適用する処理(変換行列)が、各段 ラウンドにおいて等しいものであったため 析が行いやすく、結果として鍵の解析の容 性を招いていた。

 このような問題に対処する構成として、F eistel構造のラウンド関数(F関数)部の線形変換 部に2つ以上の異なる行列を各ラウンド毎に り替えるように配置する構成が提案された この技術は拡散行列切り替え機構(DSM:Diffusion  Switching Mechanism,以下DSM)と呼ばれる。このDSM により、差分攻撃や線形攻撃に対する耐性を 向上させることが可能となる。

 拡散行列切り替え機構(DSM)を適用せず、Fe istel構造のラウンド関数(F関数)部の線形変換 に1種類のみの行列を配置した従来型のFeiste l構造を適用した暗号処理構成例を図1に示す 図1に示すFeistel構造は、ラウンド数をr(例え ばr=16)ラウンドとして、各ラウンドにおけるF 関数をFとして示している。入力は、平文Pで り、平文PはP[0]とP[1]の2つのデータ系列(分 数=2)に分割され、順次、各ラウンドにおい F関数を適用したデータ変換が実行されて、r ラウンドの変換結果として暗号文Cを構成す C[0],C[1]を出力する。各ラウンドのF関数では 図示しない鍵スケジュール部から供給され マスター鍵(主鍵)に基づいて生成された拡 鍵の構成要素としてのラウンド鍵(副鍵)が入 力され、データ変換に適用される。

 図1に示す構成では、n-bitの平文Pをラウンド 鍵RK 1 ,RK 2 ,・・・,RK r が入力されたF関数でr回(r段)処理し、その結 としてn-bitの暗号文Cを得る。平文Pを1/2に分 割したものをそれぞれ、P[0],P[1]と表現する(P= P[0]||P[1])である。なお、X1||X2は、X1とX2との連 結データを示す。暗号文Cについても同様に1/ 2に分割したものをそれぞれC[0],C[1]と呼ぶ(C=C[ 0]||C[1])。なお、このF関数の詳細構成につい は、本発明の説明の欄において詳細に説明 る。

 このように、各ラウンドが共通の線形変 行列を適用した同じ形式のF関数を持つ構成 では、暗号文を平文に戻す復号処理を行なう 場合、図2に示すように、全く同じ構成を持 Feistel構造を適用し、各ラウンドに適用する ウンド鍵の順番を、暗号化処理の場合と逆 設定するのみでよい。すなわち、暗号化関 と復号関数に全く同じ関数を適用すること 可能となる。このように暗号化処理と復号 理に同じ関数を適用することが可能であれ 、実装上、ハードウェア、あるいはソフト ェアにおいて、1つの構成を暗号化と復号そ れぞれの処理において共用することが可能と なり、装置の小型化、コストダウンが実現さ れる。なお、暗号化関数と復号関数に共通の 関数を適用することが可能な場合、その暗号 はインボリューション性を持つと定義する。

 これは,平文Pをラウンド鍵RK 1 ,RK 2 ,・・・,RK r で暗号化する暗号化関数EをE(P,RK 1 ,RK 2 ,・・・,RK r )で表現し,暗号文Cをラウンド鍵RK 1 ,RK 2 ,・・・,RK r で復号する復号関数DをD(C,RK 1 ,RK 2 ,・・・,RK r )で表現すると、下記のように表せることを 味する。
 (暗号化関数)
 C=E(P,RK 1 ,RK 2 ,・・・,RK r )
 (復号関数)
 P=D(C,RK 1 ,RK 2 ,・・・,RK r )
  =E(C,RK r ,RK r-1 ,・・・,RK 1 )
 上記より、復号関数Dは、ラウンド鍵の順番 を入れ替えた暗号化関数Eと等価であるとい る。

 Feistel構造のラウンド関数(F関数)部の線形 変換部に2つ以上の異なる行列を各ラウンド に切り替えるように配置する拡散行列切り え機構(DSM)を備えたFeistel構造例を図3に示す 図3に示すFeistel構造は、図1と同様、ラウン 数をr(例えばr=16)ラウンドとした構成である 。

 本構成例では、各ラウンドにおけるF関数は 、2つの異なるF関数F 0 ,F 1 をある規則に従って配列した構成とした拡散 行列切り替え機構(DSM)を適用して、差分攻撃 線形攻撃に対する耐性を向上させる構成と ている。すなわち、F関数F 0 と、F関数F 1 とでは、それぞれ異なる線形変換行列を適用 したデータ変換を実行する構成となっている 。

 入力は、平文Pであり、平文PはP[0]とP[1]の2 のデータ系列(分割数=2)に分割され、順次、 ラウンドにおいてF関数を適用したデータ変 換が実行されて、rラウンドの変換結果とし 暗号文Cを構成するC[0],C[1]を出力する。各ラ ンドのF関数F 0 ,F 1 では、図示しない鍵スケジュール部から供給 されるマスター鍵(主鍵)に基づいて生成され 拡大鍵の構成要素としてのラウンド鍵(副鍵 )が入力され、データ変換に適用される。

 このような拡散行列切り替え機構(DSM)を適 したFeistel構造において、暗号文を平文に戻 復号処理を行なう場合、図4に示すように、 各ラウンドのF関数F 0 ,F 1 の配列を変更することなく、図3と同じ構成 持つDSMを適用したFeistel構造を用いて、各ラ ンドに適用するラウンド鍵の順番を、暗号 処理の場合と逆に設定することで、復号処 を行なうことが可能となる。つまり、拡散 列切り替え機構(DSM)を適用したFeistel構造に いても、暗号化関数と復号関数に共通の関 を適用することを可能としたインボリュー ョン性が保持される。

 図3、図4を参照して説明した拡散行列切 替え機構(DSM)を持つFeistel構造は、入力とし の平文Pを2つのデータ系列P[0],P[1]に分割して ラウンド関数部に入力して暗号文を生成する 。あるいは暗号文Cを2つのデータ系列C[0],C[1] 分割してラウンド関数部に入力して復号文 生成する構成である。このデータ分割数は データ系列数あるいは分割数と呼ぶ。図3、 図4に示す拡散行列切り替え機構(DSM)を持つFei stel構造は、データ系列数(分割数)=2の構造で り、このようなデータ系列数(分割数)=2の構 造の場合には、F関数を適切に配置すること インボリューション性を保持させた構成が 築可能となる。

 一方、このような、2つのみのデータ系列 を持つFeistel構造と異なり、3本以上の任意数 例えば3,4,5・・等のデータ系列を許容した 張型Feistel構造(GFN:Generalized Feistel Network)が る。すなわち、入力のデータ系列を2に限定 ず、3以上のデータ系列を共用した構成であ る。

 拡張型Feistel構造(GFN)では、例えば、平文P を3つのデータ系列P[0],P[1],P[2]に分割してラウ ンド関数部に入力する構成や、4つのデータ 列P[0],P[1],P[2],P[3]に分割してラウンド関数部 入力する構成などが許容される。このよう データ系列数(分割数)が3以上の任意数のFeis tel構造を拡張型Feistel構造(GFN:Generalized Feistel Network)と呼ぶ。

 このような3本以上の任意数のデータ系列を 持つ拡張型Feistel構造(GFN)では、上述したイン ボリューション性、すなわち、暗号化関数と 復号関数に共通関数を適用できるインボリュ ーション性の保持構成とすることは困難とな る。さらに、拡張型Feistel構造(GFN)において、 上述の拡散行列切り替え機構(DSM)を適用構成 すなわち、各ラウンドのF関数での変換処理 が一律でない構成を持つDSN適用構成では、さ らにインボリューション性を保持させた構成 とすることは困難である。
K. Nyberg, "Generalized Feistel networks", ASIACR YPT'96, SpringerVerlag, 1996, pp.91--104. EYuliang Zheng, Tsutomu Matsumoto, Hideki Imai:  On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO  1989: 461-480

 本発明は、上記問題点に鑑みてなされた のであり、2つのデータ系列を持つFeistel構 のみならず、例えば3つ、4つなど、3以上の 意数のデータ系列を持つ拡張型Feistel構造(GFN :Generalized Feistel Network)を持つ共通鍵ブロッ 暗号処理において、インボリューション性 すなわち暗号化処理と復号処理に共通の関 を適用することを可能とした暗号処理装置 および暗号処理方法、並びにコンピュータ プログラムを提供することを目的とする。

 さらに、本発明は、ラウンド関数部に3つ 以上の異なる行列をラウンドごとに配置した 構成とする拡散行列切り替え機構(DSM)を適用 、2つのデータ系列を持つFeistel構造のみな ず、例えば3つ、4つなど、3以上の任意のデ タ系列を持つ拡張型Feistel構造(GFN)を持つ共 鍵ブロック暗号処理において、インボリュ ション性、すなわち暗号化処理と復号処理 共通の関数を適用することを可能とした暗 処理装置、および暗号処理方法、並びにコ ピュータ・プログラムを提供することを目 とする。

 本発明の第1の側面は、
 データ系列数:dをd≧3の整数とした拡張型Fei stel構造を適用した暗号処理を実行する暗号 理装置であり、
 暗号化処理および復号処理に共通のスワッ 処理を含むデータ処理を実行するデータ処 部を有し、
 前記データ処理部は、
 暗号化処理と、復号処理において、適用ラ ンド鍵の変更を行なうことで、暗号化処理 復号処理のいずれの処理においても前記共 のスワップ処理を含むデータ処理を実行す 構成であることを特徴とする暗号処理装置 ある。

 さらに、本発明の暗号処理装置の一実施 様において、前記データ処理部は、暗号化 理および復号処理に共通のスワップ関数を む共通の関数を実行する構成であることを 徴とする。

 さらに、本発明の暗号処理装置の一実施 様において、前記データ処理部は、前記拡 型Feistel構造を構成する各ラウンドのF関数 おいて実行する線形変換処理の変換行列を 通の行列に設定した暗号処理を実行する構 であり、復号処理の各ラウンドにおいて適 するラウンド鍵の適用シーケンスを、暗号 理と逆のシーケンスに設定するとともに、 数ラウンド各々の複数のF関数に入力するラ ンド鍵を、暗号化処理における入力態様と なる設定としたラウンド鍵入れ替え処理を なう構成であることを特徴とする。

 さらに、本発明の暗号処理装置の一実施 様において、前記データ処理部は、前記拡 型Feistel構造を構成する各ラウンドのF関数 の線形変換処理に適用する変換行列を少な とも2以上の異なる行列の選択適用構成とし 拡散行列切り替え機構(DSM:Diffusion Switching M echanism)を持つFeistel構造に従った暗号処理を 行する構成であり、復号処理の各ラウンド おいて適用するラウンド鍵の適用シーケン を、暗号処理と逆のシーケンスに設定する ともに、偶数ラウンド各々の複数のF関数、 よび該複数のF関数に入力するラウンド鍵を 、暗号化処理における入力態様と異なる設定 とするF関数およびラウンド鍵入れ替え処理 行なう構成であることを特徴とする。

 さらに、本発明の暗号処理装置の一実施 様において、前記データ処理部は、複数の なるF関数各々に対応する入出力対応データ を格納したテーブルを、各ラウンドに対応し て指定されるアドレスに従ってメモリから呼 び出して各F関数処理結果を算出する処理を 行する構成であることを特徴とする。

 さらに、本発明の暗号処理装置の一実施 様において、前記データ処理部は、前記拡 型Feistel構造を構成するラウンドのラウンド 数が偶数である場合、復号処理の最終ラウン ドの出力結果のシーケンス入れ替え処理を行 なう出力調整を実行する構成であることを特 徴とする。

 さらに、本発明の第2の側面は、
 暗号処理装置において、データ系列数:dをd 3の整数とした拡張型Feistel構造を適用した 号処理を実行する暗号処理方法であり、
 データ処理部において、暗号化処理および 号処理に共通のスワップ処理を含むデータ 理を実行するデータ処理ステップを有し、
 前記データ処理ステップは、
 暗号化処理と、復号処理において、適用ラ ンド鍵の変更を行なうことで、暗号化処理 復号処理のいずれの処理においても前記共 のスワップ処理を含むデータ処理を実行す ことを特徴とする暗号処理方法にある。

 さらに、本発明の暗号処理方法の一実施 様において、前記データ処理ステップは、 号化処理および復号処理に共通のスワップ 数を含む共通の関数を実行するステップで ることを特徴とする。

 さらに、本発明の暗号処理方法の一実施 様において、前記データ処理ステップは、 記拡張型Feistel構造を構成する各ラウンドの F関数において実行する線形変換処理の変換 列を共通の行列に設定した暗号処理を実行 るステップであり、復号処理の各ラウンド おいて適用するラウンド鍵の適用シーケン を、暗号処理と逆のシーケンスに設定する ともに、偶数ラウンド各々の複数のF関数に 力するラウンド鍵を、暗号化処理における 力態様と異なる設定としたラウンド鍵入れ え処理を行なうことを特徴とする。

 さらに、本発明の暗号処理方法の一実施 様において、前記データ処理ステップは、 記拡張型Feistel構造を構成する各ラウンドの F関数中の線形変換処理に適用する変換行列 少なくとも2以上の異なる行列の選択適用構 とした拡散行列切り替え機構(DSM:Diffusion Swi tching Mechanism)を持つFeistel構造に従った暗号 理を実行するステップであり、復号処理の ラウンドにおいて適用するラウンド鍵の適 シーケンスを、暗号処理と逆のシーケンス 設定するとともに、偶数ラウンド各々の複 のF関数、および該複数のF関数に入力するラ ウンド鍵を、暗号化処理における入力態様と 異なる設定とするF関数およびラウンド鍵入 替え処理を行なうことを特徴とする。

 さらに、本発明の暗号処理方法の一実施 様において、前記データ処理ステップは、 数の異なるF関数各々に対応する入出力対応 データを格納したテーブルを、各ラウンドに 対応して指定されるアドレスに従ってメモリ から呼び出して各F関数処理結果を算出する 理を実行するステップを含むことを特徴と る。

 さらに、本発明の暗号処理方法の一実施 様において、前記データ処理ステップは、 記拡張型Feistel構造を構成するラウンドのラ ウンド数が偶数である場合、復号処理の最終 ラウンドの出力結果のシーケンス入れ替え処 理を行なう出力調整を実行するステップを含 むことを特徴とする。

 さらに、本発明の第3の側面は、
 暗号処理装置において、データ系列数:dをd 3の整数とした拡張型Feistel構造を適用した 号処理を実行させるコンピュータ・プログ ムであり、
 データ処理部において、暗号化処理および 号処理に共通のスワップ処理を含むデータ 理を実行させるデータ処理ステップを有し
 前記データ処理ステップは、
 暗号化処理と、復号処理において、適用ラ ンド鍵の変更を行なうことで、暗号化処理 復号処理のいずれの処理においても前記共 のスワップ処理を含むデータ処理を実行さ るステップであることを特徴とするコンピ ータ・プログラムにある。

 なお、本発明のコンピュータ・プログラ は、例えば、様々なプログラム・コードを 行可能なコンピュータ・システムに対して コンピュータ可読な形式で提供する記憶媒 、通信媒体、例えば、CDやFD、MOなどの記録 体、あるいは、ネットワークなどの通信媒 によって提供可能なコンピュータ・プログ ムである。このようなプログラムをコンピ ータ可読な形式で提供することにより、コ ピュータ・システム上でプログラムに応じ 処理が実現される。

 本発明のさらに他の目的、特徴や利点は 後述する本発明の実施例や添付する図面に づくより詳細な説明によって明らかになる あろう。なお、本明細書においてシステム は、複数の装置の論理的集合構成であり、 構成の装置が同一筐体内にあるものには限 ない。

 本発明の一実施例の構成によれば、デー 系列数:dをd≧3の整数とした拡張型Feistel構 を適用した暗号処理構成において、インボ ューション性、すなわち暗号化処理と復号 理に共通の関数を適用可能な構成とするこ が可能となる。具体的には、復号処理にお るラウンド鍵の入れ替えやF関数の入れ替え 行う構成とすることで、スワップ関数を暗 化処理と復号処理とにおいて同一の処理態 に設定することで共通関数による処理が可 となる。

拡散行列切り替え機構(DSM)を適用しな 従来型のFeistel構造を持つ暗号処理構成例を す図である。 拡散行列切り替え機構(DSM)を適用しな 従来型のFeistel構造を持つ復号処理構成例を す図である。 拡散行列切り替え機構(DSM)を適用した 来型のFeistel構造を持つ暗号処理構成例を示 図である。 拡散行列切り替え機構(DSM)を適用した 来型のFeistel構造を持つ復号処理構成例を示 図である。 Feistel構造の基本構成について説明する 図である。 ラウンド関数部として設定されるF関数 の構成について説明する図である。 拡散行列切り替え機構(DSM)を実現したFe istel構造例を示す図である。 拡散行列切り替え機構(DSM)を持たない 張型Feistel構造(GFN)を持つ暗号化処理構成の 成例を示す図である。 拡散行列切り替え機構(DSM)を持たない 張型Feistel構造(GFN)を持つ復号処理構成の構 例を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張 Feistel構造(GFN)を持つ暗号化処理構成の構成 を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張 Feistel構造(GFN)を持つ復号処理構成の構成例 示す図である。 本発明の適用可能な拡張型Feistel構造 イプ2について説明する図である。 拡散行列切り替え機構(DSM)を持たない 張型Feistel構造(GFN)において、インボリュー ョン性を保持させる構成とした復号処理構 例を示す図である。 拡散行列切り替え機構(DSM)を持たない 張型Feistel構造(GFN)において、インボリュー ョン性を保持させる構成とした復号処理構 例を示す図である。 3段GFNの暗号化、復号関数を示す図で る。 4段GFNの暗号化、復号関数を示す図で る。 拡散行列切り替え機構(DSM)を持つ拡張 Feistel構造(GFN)において、インボリューショ 性を保持させる構成とした復号処理構成例 示す図である。 拡散行列切り替え機構(DSM)を持つ拡張 Feistel構造(GFN)において、インボリューショ 性を保持させる構成とした復号処理構成例 示す図である。 本発明に係る暗号処理を実行する暗号 処理装置としてのICモジュールの構成例を示 図である。

 以下、本発明の暗号処理装置、および暗号 理方法、並びにコンピュータ・プログラム 詳細について説明する。説明は、以下の項 に従って行なう。
 1.SP型F関数を持つFeistel構造
 2.2つのデータ系列を持つFeistel構造に対する 拡散行列切り替え機構(DSM)の設定法
 3.拡張型Feistel構造(GFN:Generalized Feistel Network )について
 (3-1)拡散行列切り替え機構(DSM)を持たない拡 張型Feistel構造(GFN)について
 (3-2)拡散行列切り替え機構(DSM)を持つ拡張型 Feistel構造(GFN)について
 4.拡張型Feistel構造(GFN)におけるインボリュ ション性保持構造について
 (4-1)拡散行列切り替え機構(DSM)を持たない拡 張型Feistel構造(GFN)におけるインボリューショ ン性保持構造について
 (4-2)拡散行列切り替え機構(DSM)を持つ拡張型 Feistel構造(GFN)におけるインボリューション性 保持構造について
 5.暗号処理装置の構成例

  [1.SP型F関数を持つFeistel構造]
 まず、SP型F関数を持つFeistel構造について説 明する。共通鍵ブロック暗号のデザインとし て知られているFeistel構造はラウンド関数と ばれる基本処理単位の繰り返しにより、平 を暗号文に変換する構造を持つ。

 図5を参照して、Feistel構造の基本構成に いて説明する。図5には、rラウンドのラウン ド数=rを持つ2つのデータ系列を持つFeistel構 の例を示している。なお、ラウンド数rは、 計の段階で決定されるパラメータであり、 えば入力される鍵の長さに応じて変更可能 値である。

 図5に示すFeistel構造において、暗号化対 として入力される平文の長さを2mnビットと る。ただし、m,nは共に整数である。初めに 2mnビットの平文を、mnビットの2つの入力デ タP[0]101,P[1]102に分割し、これを入力値とす 。図に示す例は、入力値を2分割する構成で り、データ系列数(分割数)=2の構成例である 。

 Feistel構造はラウンド関数とよばれる基本 処理単位の繰り返しで表現され、各ラウンド に含まれるデータ変換関数はラウンド関数(F 数)120と呼ばれる。図5の構成では、ラウン 関数120がr段繰り返された構成例を示してい 。

 例えば第1番目のラウンドでは、mnビットの 力データXと、図示しない鍵スケジュール部 (鍵生成部)から入力されるmnビットのラウン 鍵RK 1 103がF関数120に入力され、ラウンド関数(F関数 )120におけるデータ変換処理の後にmnビットの データYを出力する。出力はもう片方の前段 らの入力データ(第1段の場合は入力データP L )と排他的論理和部104において、排他的論理 演算がなされ、mnビットの演算結果が次のラ ウンド関数へと出力される。この処理、すな わちラウンド関数(F関数)を定められたラウン ド数(r)だけ繰り返し適用して暗号化処理が完 了し、暗号文の分割データC[0]、C[1]が出力さ る。各ラウンドにおいて実行されるラウン 関数(F関数)が同一構成であるFeistel構造の復 号処理はラウンド鍵を挿入する順序を逆にす るだけでよく、逆関数を構成する必要がない 。

 各ラウンドの関数として設定されるラウ ド関数(F関数)120の構成について、図6を参照 して説明する。図6(a)は、1つのラウンドにお るラウンド関数(F関数)120に対する入力およ 出力を示す図であり、図6(b)は、ラウンド関 数(F関数)120の構成の詳細を示す図である。ラ ウンド関数(F関数)120は、図6(b)に示すように 非線形変換層(S層)と線形変換層(P層)を接続 たいわゆるSP型の構成を有する。

 図6に示すラウンド関数(F関数)120は、入出力 ビット長がm×n(m,n:整数)ビットの設定を持つ 数である。SP型F関数内部では初めに鍵デー K i とデータX i との排他的論理和が実行され、次に非線形変 換層(S層)が適用され、続いて線形変換層(P層) が適用される。

 具体的には非線形変換層(S層)は、Sボック ス(S-box)121と呼ばれるnビット入力nビット出力 の非線形変換テーブルがm個並んだものであ 、mnビットのデータはnビットずつ分割され それぞれ対応するSボックス(S-box)121に入力さ れデータが変換される。各Sボックスでは、 えば変換テーブルを適用した非線形変換処 が実行される。

 線形変換層(P層)は線形変換部122によって 成され、線形変換部122は、Sボックス121から の出力データであるmnビットの出力値Zを入力 し、この入力に対して線形変換を施しmnビッ の結果を出力する。線形変換部122は、入力 ット位置の入れ替え処理などの線形変換処 を実行して、mnビットの出力値Yを出力する この出力値Yが前段からの入力データと排他 的論理和され、次のラウンドのF関数の入力 とされる。

 なお、以下に説明する本実施例の構成では 線形変換層(P層)としての線形変換部122にお て実行する線形変換はGF(2)上で定義されるmn ×mnの行列を適用して行なわれる線形変換で ると定義し、また、第iラウンド目に含まれ 行列をM i と呼ぶものとする。なお、本発明において説 明する構成における非線形変換部としてのS ックスと、線形変換は、いずれも全単射で るものとする。

  [2.2つのデータ系列を持つFeistel構造に対す る拡散行列切り替え機構(DSM)の設定法]
 先に説明したように、Feistel構造を適用した 暗号処理において、差分攻撃や線形攻撃に対 する耐性を高める構成として、拡散行列切り 替え機構(DSM:Diffusion Switching Mechanism,以下DSM) 適用した構成が提案されている。DSMは、Feis tel構造のラウンド関数(F関数)部の線形変換部 において適用する行列をすべてのラウンドで 同一とするのではなく、少なくとも2つ以上 異なる行列を各ラウンドに配置する構成で る。このDSMにより、差分攻撃や線形攻撃に する耐性を向上させることが可能となる。

 このDSMについて、その概要を説明する。F eistel構造において、拡散行列切り替え機構(DS M)を適用した場合、Feistel構造を構成するラウ ンド関数(F関数)部の線形変換部(P層)において 適用する行列は、複数の異なる行列となる。 例えば、図5に示すようなrラウンドのFeistel構 造の各ラウンドにおける適用行列を全て同じ 線形変換行列として設定するのではなく、少 なくとも2種類以上の行列を特定の規則に従 て配列する。

 例えば、各ラウンドのF関数の線形変換層に 2つの異なる線形変換行列M 0 ,M 1 を配置した拡散行列切り替え機構(DSM)を実現 たFeistel構造例を図7に示す。図7に示すFeistel 構造例において、
 F関数F 0 は、線形変換行列M 0 を適用した線形変換処理を実行するF関数、
 F関数F 1 は、線形変換行列M 1 を適用した線形変換処理を実行するF関数、
 を示している。
 2つの線形変換行列M 0 ,M 1 は、異なる行列によって構成される。

 なお、拡散行列切り替え機構(DSM)を実現 るためには、適用する行列は、所定の条件 満たすことが必要となる。この条件の1つが 分岐数(Branch)に関する制約である。以下、 の制約について説明する。

 Feistel構造におけるラウンド関数部の線形変 換に適用する複数の異なる行列M 0 ~M n それぞれの分岐数において、
 適用行列中の分岐数の最小値:B 1 D と、
 適用する複数の行列の結合行列に対応する 岐数の最小値:B 2 D ,B 3 D ,B 2 L
 を以下のように定義する。

 上記式において、
 M i は、Feistel構造における第iラウンドの線形変 処理に適用する線形変換行列を示し、
 [M i |M i+2 |・・]は、M i |M i+2 |・・各行列の連結により得られる結合行列 示し、
  t Mは、行列Mの転置行列、M -1 は、行列Mの逆行列を示す。

 上記式において、:B 2 D ,B 3 D ,B 2 L は、具体的には、Feistel構造における1つ飛び 連続する2ラウンドもしくは3ラウンドのF関 に含まれる行列を結合した行列の分岐数の 小値を表している。

 例えば、上記の各分岐数が以下の条件、す わち、
 B 2 D ≧3, B 3 D ≧3, B 2 L ≧3、
 上記条件を満足させるように各行列を設定 ることで、Feistel構造において、差分攻撃や 線形攻撃に対する耐性を向上させることが出 来ることが知られている。
 なお、B 1 D ,B 2 D ,B 3 D ,B 2 L における各添え字は以下の意味を持つもので ある。
 B n D のnは結合する行列数、B n D のDは差分攻撃(Differential Attack)に対する耐性 持つための条件であることを示し、B n L のLは線形攻撃(Linear Attack)に対する耐性を持 ための条件であることを示している。

 図7に示すような、データ系列数(分割数)= 2の拡散行列切り替え機構(DSM)を持つFeistel構 においては、先に、図3、図4を参照して説明 したように、インボリューション性、すなわ ち暗号化関数と復号関数を共有可能な構成と することは、F関数の適切な配置により可能 なる。

 しかし、2つのみのデータ系列を持つFeiste l構造と異なり、データ系列数(分割数)dが、3, 4・・・等の3以上の任意数のデータ系列を許 した拡張型Feistel構造(GFN:Generalized Feistel Net work)、すなわち、入力としての平文Pを3つの ータ系列P[0],P[1],P[2]に分割してラウンド関数 部に入力する構成や、4つのデータ系列P[0],P[1 ],P[2],P[3]に分割してラウンド関数部に入力す 構成などにおいては、暗号化関数と復号関 を共有できるインボリューション性を保持 せることは困難となる。本発明では、この うな拡張型Feistel構造において、暗号化関数 と復号関数を共有できるインボリューション 性を実現する構成を提案する。

  [3.拡張型Feistel構造(GFN:Generalized Feistel Netw ork)について]
 拡張型Feistel構造(GFN:Generalized Feistel Network) ついて説明する。本発明において取り扱う はSP型のF関数を使う点では上記の2つのデー タ系列を持つFeistel構造と同じであるが、デ タ系列数(分割数)を3以上の任意数:dとした拡 張型Feistel構造(GFN)を対象とする。dは3以上の 数である。

 (3-1)拡散行列切り替え機構(DSM)を持たない拡 張型Feistel構造(GFN)について
 まず、拡散行列切り替え機構(DSM)を持たな 拡張型Feistel構造(GFN)を持つ暗号化処理構成 構成例を図8に示す。なお、図8に示す暗号化 処理構成は、ハードウェアやソフトウェアを 適用して実行可能な暗号化関数に相当する。 前述したように暗号化関数と、復号関数を共 通の関数を適用可能としたインボリューショ ン性を保持する構成とすることで、実装コス トの削減、装置の小型化などのメリットを奏 することが可能となる。

 図8に示す例は、データ系列数(分割数)dを 、d=4とした拡張型Feistel構造(GFN)の暗号化関数 の構成例である。また、拡散行列切り替え機 構(DSM)を持たない構成であるので、各ラウン において適用される線形変換行列は同一の 列であり、各F関数での処理は同じ処理とな る。

 前述したように、拡張型Feistel構造(GFN)の ータ系列数(分割数)は3以上の任意の整数:d 与えることが可能である。以下の実施例で 、データ系列数(分割数)dをd=4とした構成例 ついて説明する。なお、本発明は、d=4に限 ず、3以上の任意のデータ系列数(分割数)を つ拡張型Feistel構造(GFN)において適用可能で る。

 図8に示す暗号化関数の構成において、入力 は、平文Pであり、平文PはP[0],P[1],P[2],P[3]の4 のデータ系列(分割数=4)に分割され、順次、 ラウンドにおいてF関数を適用したデータ変 換が実行されて、rラウンドの変換結果とし 暗号文Cを構成するC[0],C[1],C[2],C[3]を出力する 。各ラウンドのF関数では、図示しない鍵ス ジュール部から供給されるマスター鍵(主鍵) に基づいて生成された拡大鍵の構成要素とし てのラウンド鍵(副鍵)のRK i [0],RK i [1]が入力され、データ変換に適用される。な お、鍵RK i [n]のiはラウンドを示し、nは、同一ラウンド おけるラウンド鍵の識別子を示す。

 図8に示す構成では、n-bitの平文Pをラウンド 鍵RK 1 ,RK 2 ,・・・,RK r が入力されたF関数でr回(r段)処理し、その結 として暗号文Cを得る.平文Pを1/4に分割した のをそれぞれP[0],P[1],P[2],P[3],ラウンド鍵RK1 1/2に分割したものをそれぞれRK 1 [0],RK 1 [1]と表現する。1段目の処理は、まず、デー P[0]とラウンド鍵RK 1 [0]が入力されたF関数での処理結果と、デー P[1]との排他的論理和演算(EXOR)を行い、デー P[2]と、ラウンド鍵RK 1 [1]が入力されたF関数での処理結果と、デー P[3]との排他的論理和演算(EXOR)を行う。

 さらに、それぞれの結果をY 1 [1],Y 1 [3]として、P[0],P[2]をそれぞれY 1 [0],Y 1 [2]とする。1段目の処理結果、つまり2段目の 力値をX 2 [0],X 2 [1],X 2 [2],X 2 [3]とすると、
 X 2 [0]にはY 1 [1]、
 X 2 [1]にはY 1 [2]、
 X 2 [2]にはY 1 [3]、
 X 2 [3]にはY 1 [0]、
 がそれぞれ代入される。このようなデータ 入れ替え処理を「スワップ(入れ替え)関数 と定義する。

 図8に示すように、各ラウンドの切り替え 部分では、各データ系列を入れ替えるスワッ プ処理が実行される。このスワップ処理に適 用する関数がスワップ関数である。スワップ 関数は、暗号化関数の1つの構成要素となる 図8に示すようにスワップ関数201は、各ラウ ドの切り替え時に、各データ系列の出力に して適用され、各データ系列の出力に対応 る次のラウンドにおける入力系列を設定す ための関数である。

 図8において、例えばデータ系列を、図8上 に示すように左からデータ系列0,1,2,3とした き、先行ラウンドの4つの系列の出力と、後 続ラウンドに対する入力系列の入れ替えがス ワップ関数201によって以下のように切り替え られる。
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 このような系列入れ替え処理を実行する関 が暗号化処理において適用されるスワップ 数である。

 図8に示すd=4とした拡張型Feistel構造(GFN)の 暗号化処理構成を適用して暗号化処理を実行 した結果を復号する復号処理構成の構成例を 図9に示す。拡散行列切り替え機構(DSM)を持た ない構成であるので、各ラウンドにおいて適 用される線形変換行列は同一の行列であり、 各F関数での処理は同じ処理となる。

 なお、図9に示す復号処理構成は、ハード ウェアやソフトウェアを適用して実行可能な 復号関数に相当する。前述したように暗号化 関数と、復号関数を共通の関数を適用可能と したインボリューション性を保持する構成と することで、実装コストの削減、装置の小型 化などのメリットを奏することが可能となる 。

 図9に示す復号関数の構成において、入力は 、暗号文Cであり、暗号文CはC[0],C[1],C[2],C[3]の 4つのデータ系列(分割数=4)に分割され、順次 各ラウンドにおいてF関数を適用したデータ 変換が実行されて、rラウンドの変換結果と て平文Pを構成するP[0],P[1],P[2],P[3]を出力する 。各ラウンドのF関数では、図示しない鍵ス ジュール部から供給されるマスター鍵(主鍵) に基づいて生成された拡大鍵の構成要素とし てのラウンド鍵(副鍵)のRK i [0],RK i [1]が入力され、データ変換に適用される。

 図9に示すように、各ラウンドの適用鍵は 、図8に示す暗号化関数の各ラウンドの適用 と逆の順番となる。さらに、図9における復 関数においても、ラウンド切り替え部分で 、各データ系列を入れ替えるスワップ処理 実行される。このスワップ処理は、図8に示 すスワップ処理とは異なる処理となる。図9 示すようにスワップ関数202は、各ラウンド 切り替え時に、各データ系列の出力に対し 適用され、各データ系列の出力に対応する のラウンドにおける入力系列を設定するた の関数である。

 図9において、例えばデータ系列を、図9上 に示すように左からデータ系列0,1,2,3とした き、先行ラウンドの4つの系列の出力と、後 続ラウンドに対する入力系列の入れ替えがス ワップ関数202によって以下のように切り替え られる。
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 このような系列入れ替え処理を実行する関 が復号処理において適用されるスワップ関 となる。

 このように、図8に示す暗号化処理構成に おいて適用されるスワップ関数201と、図9に す復号処理構成において適用するスワップ 数202とは、スワップ処理の態様が異なり、 号化処理と、復号処理によって同じ関数を 通に利用することができない。図1~図4に示 ようなデータ系列数(分割数)d=2のFeistel構造 は、系列の入れ替えはデータ系列0,1の入れ えのみであり、暗号化、復号処理において 様のスワップ関数を共通に利用した処理が 能であるが、データ系列数(分割数)d=3,4,5・ ・等、3以上の任意数のデータ系列数(分割数 )dを持つことが許容される拡張型Feistel構造(GF N)では、各ラウンド間でのスワップ(入れ替え )関数が暗号化関数と復号関数とで異なるこ になり、データ系列数(分割数)d=2に限定され る通常のFeistel構造のように単純に暗号化関 と復号関数は同じ関数を使用することがで ないという問題がある。

 (3-2)拡散行列切り替え機構(DSM)を持つ拡張型 Feistel構造(GFN)について
 次に、拡散行列切り替え機構(DSM)を持つ拡 型Feistel構造(GFN)について説明する。拡散行 切り替え機構(DSM)を持つ拡張型Feistel構造(GFN) を持つ暗号化関数の構成例を図10に示す。図1 0に示す例は、データ系列数(分割数)dを、d=4 した拡散行列切り替え機構(DSM)を持つ拡張型 Feistel構造(GFN)の暗号化関数の構成例である。

 拡散行列切り替え機構(DSM)を持つ拡張型Feist el構造(GFN)は、前述したように、Feistel構造の ウンド関数(F関数)部の線形変換部に2つ以上 の異なる行列を各ラウンド毎に切り替えるよ うに配置する構成としたものである。DSMによ り、差分攻撃や線形攻撃に対する耐性を向上 させることが可能となる。図10に示す例では F関数F 0 と、F関数F 1 とでは、それぞれ異なる線形変換行列を適用 したデータ変換を実行する構成となっている 。なお、これらF関数において適用する線形 換行列は、ある特定の条件を満足する行列 設定することで、差分攻撃や線形攻撃に対 る耐性を大きく向上させることが可能とな 。この構成については、本出願人が先に出 した特願2006-206376号において詳細に説明して いる。

 図10に示す暗号化関数の構成において、入 は、平文Pであり、平文PはP[0],P[1],P[2],P[3]の4 のデータ系列(分割数=4)に分割され、順次、 各ラウンドにおいてF関数F 0 、またはF関数F 1 を適用したデータ変換が実行されて、rラウ ドの変換結果として暗号文Cを構成するC[0],C[ 1],C[2],C[3]を出力する。各ラウンドのF関数F 0 、またはF関数F 1 では、図示しない鍵スケジュール部から供給 されるマスター鍵(主鍵)に基づいて生成され 拡大鍵の構成要素としてのラウンド鍵(副鍵 )のRK i [0],RK i [1]が入力され、データ変換に適用される。な お、鍵RK i [n]のiはラウンドを示し、nは、同一ラウンド おけるラウンド鍵の識別子を示す。

 図10に示すように、拡散行列切り替え機 (DSM)を持つ拡張型Feistel構造(GFN)においても、 各ラウンドの切り替え部分では、各データ系 列を入れ替えるスワップ処理が実行される。 図10に示すようにスワップ関数211は、各ラウ ドの切り替え時に、各データ系列の出力に して適用され、各データ系列の出力に対応 る次のラウンドにおける入力系列を設定す 。

 図10において、データ系列を、図10上段に示 すように左からデータ系列0,1,2,3としたとき 先行ラウンドの4つの系列の出力と、後続ラ ンドに対する入力系列の入れ替えがスワッ 関数211によって以下のように切り替えられ 。
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 このような系列入れ替え処理を実行する関 が暗号化処理において適用されるスワップ 数である。

 図10に示すd=4とした拡散行列切り替え機構(D SM)を持つ拡張型Feistel構造(GFN)の暗号化関数に おいて暗号化処理を実行した結果を復号する 復号関数の構成例を図11に示す。図11に示す 号化関数の構成において、入力は、暗号文C あり、暗号文CはC[0],C[1],C[2],C[3]の4つのデー 系列(分割数=4)に分割され、順次、各ラウン ドにおいてF関数F 0 、またはF関数F 1 を適用したデータ変換が実行されて、rラウ ドの変換結果として平文Pを構成するP[0],P[1], P[2],P[3]を出力する。各ラウンドのF関数F 0 、またはF関数F 1 では、図示しない鍵スケジュール部から供給 されるマスター鍵(主鍵)に基づいて生成され 拡大鍵の構成要素としてのラウンド鍵(副鍵 )のRK i [0],RK i [1]が入力され、データ変換に適用される。

 図11に示すように、各ラウンドの適用鍵 、図10に示す暗号化関数の各ラウンドの適用 鍵と逆の順番となる。さらに、図11における 号関数においても、ラウンド切り替え部分 は、各データ系列を入れ替えるスワップ処 が実行される。このスワップ処理は、図10 示すスワップ処理とは異なる処理となる。 11に示すようにスワップ関数212は、各ラウン ドの切り替え時に、各データ系列の出力に対 して適用され、各データ系列の出力に対応す る次のラウンドにおける入力系列を設定する 。

 図11において、例えばデータ系列を、図11上 段に示すように左からデータ系列0,1,2,3とし とき、先行ラウンドの4つの系列の出力と、 続ラウンドに対する入力系列の入れ替えが ワップ関数212によって以下のように切り替 られる。
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 このような系列入れ替え処理を実行する関 が復号処理において適用されるスワップ関 となる。

 このように、図10に示す暗号化処理構成 おいて適用されるスワップ関数211と、図11に 示す復号処理構成において適用するスワップ 関数212とは、スワップ処理の態様が異なり、 同じ関数を共通に利用することができない。

 上述したように、データ系列数(分割数)d= 3,4,5・・・等、3以上の任意数のデータ系列数 (分割数)dを持つことが許容される拡張型Feiste l構造(GFN)では、拡散行列切り替え機構(DSM)を たない拡張型Feistel構造(GFN)においても、ま 、拡散行列切り替え機構(DSM)を持つ拡張型Fe istel構造(GFN)においても、各ラウンド間での ワップ(入れ替え)関数が暗号化関数と復号関 数とで異なり、データ系列数(分割数)d=2に限 される通常のFeistel構造のように単純に暗号 化関数と復号関数は同じ関数を使用すること ができないという問題がある。

 暗号化処理と復号処理とで同じスワップ 数を適用可能な構成とすれば、暗号処理装 を構成する際、ハードウェア実装において ソフトウェア実装においても、実装コスト 低減することが可能であり、特にハードウ ア実装の場合には装置の小型化の実現につ がる。さらに、検証コストが半減できると うメリットもある。すなわち、関数部の検 として、暗号化関数、復号関数のどちらか 検証するのみでよくなり、ソフトウェアに いてもコードサイズが半減できるなどメリ トが大きい。従って、できる限り暗号化関 と復号関数で同じ関数を使う構成とするこ が望ましい。

 しかし、一般的にブロック暗号は1回の実 行速度が非常に短く、高速に動作することが 要求される。従って、暗号化関数と復号関数 の共有させるために実行速度が低下してしま うといったことは避けたい。このような要求 に応じるため、暗号化関数と復号関数におい て共通に利用可能な関数をより多く設定する とともに、実行速度の低下しない構成が望ま れる。以下では、このような構成について説 明する。

  [4.拡張型Feistel構造(GFN)におけるインボリ ーション性保持構造について]
 以下、拡張型Feistel構造(GFN)において、イン リューション性、すなわち、暗号化処理と 号処理に共通の関数を適用可能とした構成 について説明する。

 暗号化処理と復号処理において、共通の 数を利用するための簡易な手法としては、 ワップ関数部分だけを外部から入力する構 の採用が考えられる。すなわち、暗号化関 と復号関数において、スワップ関数部だけ 切り替える構成とし、その他の関数部分を 通に利用する構成である。

 この構成を用いれば通常のデータ系列数( 分割数)d=2としたFeistel構造と同様にラウンド( 段)ごとにラウンド鍵を入れ替え、さらに、 ウンド切り替え時に適用するスワップ関数 、暗号処理と復号処理において適宜入れ替 て利用するのみで、その他の関数部分は、 号化処理と復号処理とで同じ関数を使用す ことが可能となる。例えばスワップ関数を 号化スワップ関数、復号スワップ関数の2種 作成しておき、この関数を外部から与える うな構成である。

 しかしながら、この手法では暗号化スワ プ関数、復号スワップ関数の呼び出しは、 号化処理、復号処理の実行期間において、 ラウンドの切り替え毎に行なわなければな ないことになり、関数呼び出し処理を繰り し実行しなければならないことになる。こ ような関数呼び出し処理は、時間の消費を 生させ、結果として処理時間を大きくして まうという問題がある。一般的に1回の実行 時間が非常に短いブロック暗号において、こ のような新たな関数呼び出処理を発生させる ことは、実行速度の大幅な低下を招くことに なり、パフォーマンスを低下させることにな る。従って現実的な使用を考慮した場合、こ のようなスワップ関数の呼び出し構成を適用 することは好ましくない。

 実装を考慮した場合、処理速度の低下を発 させない構成が必要であり、スワップ部分 変更せずに暗号化関数と復号関数を共有で ることが望ましい構成である。以下、この うな構成の具体的構成例について説明する 説明は、以下の項目に分けて行なう。
 (4-1)拡散行列切り替え機構(DSM)を持たない拡 張型Feistel構造(GFN)におけるインボリューショ ン性保持構造について
 (4-2)拡散行列切り替え機構(DSM)を持つ拡張型 Feistel構造(GFN)におけるインボリューション性 保持構造について

 なお、以下において説明する拡張型Feistel構 造(GFN)は、
 分割数d≧3で、かつ以下に説明する条件を たす拡張型Feistel構造であり、これを拡張型F eistel構造のタイプ2とする。本発明において 用する拡張型Feistel構造のタイプ2について、 図12を参照して説明する。
 本発明の拡張型Feistel構造タイプ2は、以下 パラメータを有する。
 (a)データ分割数:d(ただしdは4以上の偶数)、
 (b)入出力データ長:dmnビット、
 (c)分割データ長:mnビット、
 (d)1ラウンドあたりのF関数の数:d/2、

 図12に示すように、各ラウンド内では左 から数えて奇数番目にあるmnビットのデータ 系列に対してF関数が適用され、F関数の処理 果は、すぐ隣のデータに出力が排他的論理 される。なお、図においては排他的論理和 演算記号を省略してある。図に示すように 各ラウンドにおいて、F関数に対するデータ 入力を行った左端のデータ系列は、次のラウ ンドでは右端に移動し、それ以外のデータ系 列は左にひとつずつずれる構成をとる。この ような構造を持つ拡張Feistel構造を拡張Feistel 造タイプ2と定義する。

 (4-1)拡散行列切り替え機構(DSM)を持たない拡 張型Feistel構造(GFN)におけるインボリューショ ン性保持構造について
 まず、拡散行列切り替え機構(DSM)を持たな 拡張型Feistel構造(GFN)におけるインボリュー ョン性保持構造について説明する。

 拡散行列切り替え機構(DSM)を持たない拡 型Feistel構造(GFN)において、インボリューシ ン性を保持させる構成とした復号処理構成 を図13に示す。

 図13に示す復号処理構成は、先に図8を参 して説明したデータ系列数(分割数)dを、d=4 した拡散行列切り替え機構(DSM)を持たない 張型Feistel構造(GFN)の暗号化関数の構成例に 応する復号関数の構成例である。すなわち 図8を参照して説明した暗号処理構成におい 生成した暗号文の復号に適用可能な復号処 を実行する構成を示している。なお、図13 示す復号処理構成は、ハードウェアやソフ ウェアを適用して実行可能な復号関数に相 する。前述したように暗号化関数と、復号 数を共通の関数を適用可能としたインボリ ーション性を保持する構成とすることで、 装コストの削減、装置の小型化などのメリ トを奏することが可能となる。

 図8に示す暗号処理構成に対応する復号処 理構成として、先に説明した図9に示した復 処理構成では、適用するスワップ関数が異 るため、暗号関数と復号関数との構成が異 り、インボリューション性を保持できなか たが、図13に示す復号処理構成では、図8に す暗号処理構成において適用するスワップ 数と同じ態様のスワップ処理を行なう構成 している。すなわち暗号化処理と復号処理 で適用するスワップ関数を共通の関数とし 構成を持つ。すなわち、暗号化関数(図8)と 号関数(図13)は、共通の関数を適用可能とし インボリューション性を保持させた構成を 現している。

 ただし、図13に示す復号処理構成は、ラ ンド数rが奇数の場合の復号処理構成である ラウンド数rが偶数の場合の暗号化関数(図8) に対応するインボリューション性を保持した 復号処理構成は図14に示す構成となる。

 まず、ラウンド数rが奇数の場合の復号処理 構成である図13に示す復号関数の構成につい 説明する。図13の復号処理構成において、 力は、暗号文Cであり、暗号文CはC[0],C[1],C[2], C[3]の4つのデータ系列(分割数=4)に分割され、 順次、各ラウンドにおいてF関数を適用した ータ変換が実行されて、rラウンドの変換結 として平文Pを構成するP[0],P[1],P[2],P[3]を出 する。各ラウンドのF関数では、図示しない スケジュール部から供給されるマスター鍵( 主鍵)に基づいて生成された拡大鍵の構成要 としてのラウンド鍵(副鍵)のRK i [0],RK i [1]が入力され、データ変換に適用される。

 図13に示す復号関数において、各ラウン の適用鍵は、図8に示す暗号化関数の各ラウ ドの適用鍵と逆の順番となる。これは、図8 の暗号化関数と図9の復号関数の対応と同様 関係である。

 しかし、図13における復号関数では、ラ ンド切り替え部分の各データ系列入れ替え 理として実行するスワップ処理は、図8に示 スワップ処理と同一のスワップ処理となる 図13に示すようにスワップ関数251は、各ラ ンドの切り替え時に、各データ系列の出力 対して適用され、各データ系列の出力に対 する次のラウンドにおける入力系列を設定 る。

 図13において、例えばデータ系列を、図13上 段に示すように左からデータ系列0,1,2,3とし とき、先行ラウンドの4つの系列の出力と、 続ラウンドに対する入力系列の入れ替えが ワップ関数251によって以下のように切り替 られる。
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 このような系列入れ替え処理を実行する関 がスワップ関数251である。

 このスワップ処理は、先に図8を参照して説 明した暗号化処理におけるスワップ関数と同 一の系列入れ替え処理である。
 従って、図8に示す暗号化処理と、図13に示 復号処理とでは、全く同一のスワップ関数 適用することが可能となる。

 図13に示す復号処理構成では、スワップ関 を暗号化処理と同一の構成とするための工 として、各ラウンドにおけるF関数に対する 力鍵(ラウンド鍵)の入力態様を変更してい 。図13に示す復号処理構成中、図に示す◎の 偶数ラウンドにおいて、各F関数に入力する ウンド鍵の入れ替えを行なっている。図に すように、図13に示す復号処理構成の、上か ら2つのラウンドである第2ラウンドでは、図 示す左側のF関数に対してラウンド鍵RK (r-1) [1]を入力し、右側のF関数に対してラウンド RK (r-1) [0]を入力する構成としている。以下、第4ラ ンド、第6ラウンド・・・各偶数ラウンドに いて、各F関数に入力するラウンド鍵の入れ 替えを行なっている。図9と対比するとその 異が明確となる。図9では、全てのラウンド おいて、左側のF関数にはラウンド鍵RK i [0]を入力し、右側のF関数にはラウンド鍵RK i [1]を入力している。

 このように、図13に示す復号処理構成で 、各偶数ラウンドのF関数に対して入力する ウンド鍵を入れ替えることで、図8に示す暗 号処理構成において適用するスワップ関数と 同一のスワップ関数を適用可能として、暗号 化関数と復号関数のインボリューション性を 実現している。

 図13に示す復号処理構成は、ラウンド数r 奇数の場合の復号処理構成である。ラウン 数rが偶数の場合の暗号化関数(図8)に対応す るインボリューション性を保持した復号処理 構成は図14に示す構成となる。

 図14に示す復号処理構成も、図8に示す暗 処理構成によって暗号化された暗号文を平 に戻す復号処理に適用される復号関数に相 する復号処理構成を示している。図14の構 は、ラウンド数rが奇数である。

 図14に示す復号処理構成も、図13に示す復 号処理構成と同様、図に◎で示す各偶数ラウ ンドに設定されたF関数に対して入力するラ ンド鍵の入れ替えを実行する構成としてい 。さらに、最終ラウンドの処理結果に対す 出力調整処理を実行する構成を持つ。出力 整部262は、最終ラウンドにおける各データ 列の値を入れ替えて、P[0],P[1],P[2],P[3]の最終 力を得るための処理として実行される。こ 部分は、復号関数の実行後の処理として1回 のみ実行すればよく、大きな効率低下を発生 させるものとはならない。

 図14に示す構成におけるスワップ関数261は 図13に示す構成と同様、図8を参照して説明 た暗号化処理構成におけるスワップ関数201 同一のスワップ処理を行なう構成を持つ。 なわち、
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 このような系列入れ替え処理を実行する関 がスワップ関数261である。

 このスワップ処理は、先に図8を参照して説 明した暗号化処理におけるスワップ関数201と 同一の系列入れ替え処理である。
 従って、図8に示す暗号化処理と、図13に示 復号処理とでは、全く同一のスワップ関数 適用することが可能となる。

 図14に示す復号処理構成では、スワップ 数を暗号化処理と同一の構成とするための 夫として、各ラウンドにおけるF関数に対す 入力鍵(ラウンド鍵)の入力態様を変更し、 らに、出力調整部262により、最終ラウンド 処理結果に対する出力調整処理を実行する 成としている。この設定とすることで、図8 示す暗号処理構成において適用するスワッ 関数と同一のスワップ関数を適用可能とし 、暗号化関数と復号関数に共通の関数を適 可能なインボリューション性を実現してい 。

 拡散行列切り替え機構(DSM)を持たない拡張 Feistel構造(GFN)においては、上述した構成に ってインボリューション性を保持した構造 実現することができる。この処理おける暗 化関数、復号関数は、以下のように示すこ ができる。
 (暗号化関数)
 C=E(P,RK 1 ,RK 2 ,RK 3 ,RK 4 ,RK 5 ,・・・,RK r-1 ,RK r )
 (復号関数(r=奇数の場合))
 P=D(P,RK 1 ,RK 2 ,RK 3 ,RK 4 ,RK 5 ,・・・,RK r-1 ,RK r )
  =E(P,RK r ,RK' r-1 ,RK r-2 ,RK' r-3 ,RK r-4 ・・・,RK' 2 ,RK 1 )
 (復号関数(r=偶数の場合))
 P=D(P,RK 1 ,RK 2 ,RK 3 ,RK 4 ,RK 5 ,・・・,RK r-1 ,RK r )
  =HalfSwap(E(P,RK r ,RK' r-1 ,RK r-2 ,RK' r-3 ,RK r-4 ・・・,RK 2 ,RK' 1 ))
 として示すことができ、ラウンド鍵の適切 置換により、暗号化関数と復号関数が共有 きることが分かる。
 ただし、RK 1 =(RK 1 [0]||RK 1 [1])とすると、RK' 1 =(RK 1 [1]||RK 1 [0])であり、HalfSwapは入力値の前後を入れ替え る関数を表す。

 ラウンド数が奇数段の詳細な例として、3段 GFNの暗号化、復号関数を図15に示す。図15の 号化関数(図15(a))は,以下のように処理される 、以降の説明で用いる(+)はビットごとの排他 的論理和を表す.
  [(0段目)]
 X 1 [0]=P[0]
 X 1 [1]=P[1]
 X 1 [2]=P[2]
 X 1 [3]=P[3]
  [1段目]
 X 2 [0]=F(X 1 [0],RK 1 [0])(+)X 1 [1]
 X 2 [1]=X 1 [2]
 X 2 [2]=F(X 1 [2], RK 1 [1])(+)X 1 [3]
 X 2 [3]=X 1 [0]

  [2段目]
 X 3 [0]=F(X 2 [0],RK 2 [0])(+)X 2 [1]
 X 3 [1]=X 2 [2]
 X 3 [2]=F(X 2 [2],RK 2 [2])(+)X 2 [3]
 X 3 [3]=X 2 [0]
  [3段目]
 C[0]=X 3 [0]
 C[1]=F(X 3 [0],RK 3 [0])(+)X 3 [1]
 C[2]=X 3 [2]
 C[3]=F(X 3 [2],RK 3 [1])(+)X 3 [3]

 また、図11の復号関数(図15(b))は以下のよう 処理される.
  [1段目]
 X 3 [0]=C[0]
 X 3 [1]=F(X 3 [0],RK 3 [0])(+)C[1]
 X 3 [2]=C[2]
 X 3 [3]=F(X 3 [2],RK 3 [1])(+)C[3]
  [2段目]
 X 2 [0]=X 3 [3]
 X 2 [1]=F(X 2 [0],RK 2 [0])(+)X 3 [0]
 X 2 [2]=X 3 [1]
 X 2 [3]=F(X 2 [2],RK 2 [1])(+)X 3 [2]

  [3段目]
 X 1 [0]=X 2 [3]
 X 1 [1]=F(X 1 [0],RK 1 [0])(+)X 2 [0]
 X 1 [2]=X 2 [1]
 X 1 [3]=F(X 1 [2],RK 1 [1])(+)X 2 [2]
  [最終段]
 P[0]=X 1 [0]
 P[1]=X 1 [1]
 P[2]=X 1 [2]
 P[3]=X 1 [3]

 上記式より明らかに暗号化関数で暗号化 れたデータは、偶数段のラウンド鍵を適切 入れ替えただけの暗号化関数によって復号 きることが分かる。なお、式を一般化した 合、暗号化関数、復号関数は、それぞれ以 のように表現可能である。

  [GFN暗号化関数(奇数段の場合(r=奇数))]
 X 1 [0]=P[0]
 X 1 [1]=P[1]
 X 1 [2]=P[2]
 X 1 [3]=P[3]
 fori=2tor
  X i [0]=F(X i-1 [0],RK i-1 [0])(+)X i-1 [1]
  X i [1]=X i-1 [2]
  X i [2]=F(X i-1 [2],RK i-1 [2])(+)X i-1 [3]
  X i [3]=X i-1 [0]
 C[0]=X r [0]
 C[1]=F(X r [0],RK r [0])(+)X r [1]
 C[2]=X r [2]
 C[3]=F(X r [2],RK r [1])(+)X r [3]

  [GFN復号関数(奇数段の場合(r=奇数))]
 Xr[0]=C[0]
 Xr[1]=F(X r [0],RK r [0])(+)C[1]
 Xr[2]=C[2]
 Xr[3]=F(X r [2],RK r [1])(+)C[3]
 fori=r-1downto1
  Xi[0]=X i+1 [3]
  Xi[1]=F(X i [0],RK i [0])(+)X i+1 [0]
  Xi[2]=X i+1 [1]
  Xi[3]=F(X i [2],RK i [1])(+)X i+1 [2]
 P[0]=X 1 [0]
 P[1]=X 1 [1]
 P[2]=X 1 [2]
 P[3]=X 1 [3]

 偶数段の例として、4段GFNの暗号化、復号関 数を図16に示す。図16の暗号化関数(図16(a))は, 以下のように処理される。
  [(0段目)]
 X 1 [0]=P[0]
 X 1 [1]=P[1]
 X 1 [2]=P[2]
 X 1 [3]=P[3]
  [1段目]
 X 2 [0]=F(X 1 [0],RK 1 [0])(+)X 1 [1]
 X 2 [1]=X 1 [2]
 X 2 [2]=F(X 1 [2],RK 1 [1])(+)X 1 [3]
 X 2 [3]=X 1 [0]

  [2段目]
 X 3 [0]=F(X 2 [0],RK 2 [0])(+)X 2 [1]
 X 3 [1]=X 2 [2]
 X 3 [2]=F(X 2 [2],RK 2 [2])(+)X 2 [3]
 X 3 [3]=X 2 [0]
  [3段目]
 X 4 [0]=F(X 3 [0],RK 3 [0])(+)X 3 [1]
 X 4 [1]=X 3 [2]
 X 4 [2]=F(X 3 [2],RK 3 [1])(+)X 3 [3]
 X 4 [3]=X 3 [0]
  [4段目]
 C[0]=X 4 [0]
 C[1]=F(X 4 [0],RK 4 [0])(+)X 4 [1]
 C[2]=X 4 [2]
 C[3]=F(X 4 [2],RK 4 [1])(+)X 4 [3]

 また,図16の復号関数(図16(b))は以下のように 処理される.
  [1段目]
 X 4 [0]=C[0]
 X 4 [1]=F(X 4 [0],RK 4 [0])(+)C[1]
 X 4 [2]=C[2]
 X 4 [3]=F(X 4 [2],RK 4 [1])(+)C[3]
  [2段目]
 X 3 [0]=X 4 [3]
 X 3 [1]=F(X 3 [0],RK 3 [0])(+)X 4 [0]
 X 3 [2]=X 4 [1]
 X 3 [3]=F(X 3 [2],RK 3 [1])(+)X 4 [2]

  [3段目]
 X 2 [0]=X 3 [3]
 X 2 [1]=F(X 2 [0],RK 2 [0])(+)X 3 [0]
 X 2 [2]=X 3 [1]
 X 2 [3]=F(X 2 [2],RK 2 [1])(+)X 3 [2]
  [4段目]
 X 1 [0]=X 2 [3]
 X 1 [1]=F(X 1 [0],RK 1 [0])(+)X 2 [0]
 X 1 [2]=X 2 [1]
 X 1 [3]=F(X 1 [2],RK 1 [1])(+)X 2 [2]
  [最終段]
 P[0]=X 1 [2]
 P[1]=X 1 [3]
 P[2]=X 1 [0]
 P[3]=X 1 [1]

 上記式より明らかに暗号化関数で暗号化 れたデータは、ラウンド鍵の順序を入れ替 、最終出力の左右の出力を入れ替えた暗号 関数によって復号できることが分かる。な 、式を一般化した場合、暗号化関数、復号 数はそれぞれ以下のように示すことができ 。

  [GFN暗号化関数(偶数段の場合(r=偶数))]
 X 1 [0]=P[0]
 X 1 [1]=P[1]
 X 1 [2]=P[2]
 X 1 [3]=P[3]
 fori=2tor
  X i [0]=F(X i-1 [0],RK i-1 [0])(+)X i-1 [1]
  X i [1]=X i-1 [2]
  X i [2]=F(X i-1 [2],RK i-1 [2])(+)X i-1 [3]
  X i [3]=X i-1 [0]
 C[0]=X r [0]
 C[1]=F(X r [0],RK r [0])(+)X r [1]
 C[2]=X r [2]
 C[3]=F(X r [2],RK r [1])(+)X r [3]

  [GFN復号関数(偶数段の場合(r=偶数))]
 Xr[0]=C[0]
 Xr[1]=F(X r [0],RK r [0])(+)C[1]
 Xr[2]=C[2]
 Xr[3]=F(X r [2],RK r [1])(+)C[3]
 fori=r-1downto1
  Xi[0]=X i+1 [3]
  Xi[1]=F(X i [0],RK i [0])(+)X i+1 [0]
  Xi[2]=X i+1 [1]
  Xi[3]=F(X i [2],RK i [1])(+)X i+1 [2]
 P[0]=X 1 [2]
 P[1]=X 1 [3]
 P[2]=X 1 [0]
 P[3]=X 1 [1]

 (4-2)拡散行列切り替え機構(DSM)を持つ拡張型 Feistel構造(GFN)におけるインボリューション性 保持構造について
 次に、拡散行列切り替え機構(DSM)を持つ拡 型Feistel構造(GFN)におけるインボリューショ 性保持構造について説明する。

 拡散行列切り替え機構(DSM)を持つ拡張型Fe istel構造(GFN)において、インボリューション を保持させる構成とした復号処理構成例を 17に示す。

 図17に示す復号処理構成は、先に図10を参 照して説明したデータ系列数(分割数)dを、d=4 とした拡散行列切り替え機構(DSM)を持つ拡張 Feistel構造(GFN)の暗号化関数の構成例に対応 る復号関数の構成例である。すなわち、図1 0を参照して説明した拡散行列切り替え機構(D SM)を持つ暗号処理構成において生成した暗号 文の復号に適用可能な復号処理を実行する構 成を示している。なお、図17に示す復号処理 成は、ハードウェアやソフトウェアを適用 て実行可能な復号関数に相当する。前述し ように暗号化関数と、復号関数を共通の関 を適用可能としたインボリューション性を 持する構成とすることで、実装コストの削 、装置の小型化などのメリットを奏するこ が可能となる。

 図10に示す暗号処理構成に対応する復号 理構成として、先に説明した図11に示した復 号処理構成では、適用するスワップ関数が異 なるため、暗号関数と復号関数との構成が異 なり、インボリューション性を保持できなか ったが、図17に示す復号処理構成では、図10 示す暗号処理構成において適用するスワッ 関数と同じ態様のスワップ処理を行なう構 としている。すなわち暗号化処理と復号処 とで適用するスワップ関数を共通の関数と た構成を持つ。すなわち、暗号化関数(図10) 復号関数(図17)は、共通の関数を適用可能と したインボリューション性を保持させた構成 を実現している。

 ただし、図17に示す復号処理構成は、ラ ンド数rが奇数の場合の復号処理構成である ラウンド数rが偶数の場合の暗号化関数(図10 )に対応するインボリューション性を保持し 復号処理構成は図18に示す構成となる。

 まず、ラウンド数rが奇数の場合の復号処理 構成である図17に示す復号関数の構成につい 説明する。図17の復号処理構成において、 力は、暗号文Cであり、暗号文CはC[0],C[1],C[2], C[3]の4つのデータ系列(分割数=4)に分割され、 順次、各ラウンドにおいてF関数F 0 、またはF関数F 1 を適用したデータ変換が実行されて、rラウ ドの変換結果として平文Pを構成するP[0],P[1], P[2],P[3]を出力する。各ラウンドのF関数F 0 とF関数F 1 では、図示しない鍵スケジュール部から供給 されるマスター鍵(主鍵)に基づいて生成され 拡大鍵の構成要素としてのラウンド鍵(副鍵 )のRK i [0],RK i [1]が入力され、データ変換に適用される。

 図17に示す復号関数において、各ラウン の適用鍵は、図10に示す暗号化関数の各ラウ ンドの適用鍵と逆の順番となる。これは、図 10の暗号化関数と図11の復号関数の対応と同 の関係である。

 しかし、図17における復号関数では、ラ ンド切り替え部分の各データ系列入れ替え 理として実行するスワップ処理は、図10に示 すスワップ処理と同一のスワップ処理となる 。図17に示すようにスワップ関数271は、各ラ ンドの切り替え時に、各データ系列の出力 対して適用され、各データ系列の出力に対 する次のラウンドにおける入力系列を設定 る。

 図17において、例えばデータ系列を、図17上 段に示すように左からデータ系列0,1,2,3とし とき、先行ラウンドの4つの系列の出力と、 続ラウンドに対する入力系列の入れ替えが ワップ関数271によって以下のように切り替 られる。
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 このような系列入れ替え処理を実行する関 がスワップ関数271である。

 このスワップ処理は、先に図10を参照して 明した暗号化処理におけるスワップ関数211 同一の系列入れ替え処理である。
 従って、図10に示す暗号化処理と、図17に示 す復号処理とでは、全く同一のスワップ関数 を適用することが可能となる。

 図17に示す復号処理構成では、スワップ関 を暗号化処理と同一の構成とするための工 として、各偶数ラウンドにおけるF関数F 0 とF関数F 1 の入れ替えと、入力鍵(ラウンド鍵)の入れ替 を行なっている。

 図17に示す復号処理構成中、図に示す◎の 数ラウンドにおいて、F関数F 0 とF関数F 1 の入れ替えと、入力鍵(ラウンド鍵)の入れ替 を行なっている。図に示すように、図17に す復号処理構成の、上から2つのラウンドで る第2ラウンドでは、左側にF関数F 1 を設定し、右側にF関数F 0 を設定し、さらに、左側のF関数F 1 に対してラウンド鍵RK (r-1) [1]を入力し、右側のF関数F 0 に対してラウンド鍵RK (r-1) [0]を入力する構成としている。以下、第4ラ ンド、第6ラウンド・・・各偶数ラウンドに いて、各F関数と、F関数に入力するラウン 鍵の入れ替えを行なっている。図11と対比す るとその差異が明確となる。図11では、全て ラウンドにおいて、左側のF関数はF 0 であり、ラウンド鍵RK i [0]を入力する設定であり、右側のF関数はF 1 であり、ラウンド鍵RK i [1]を入力している。

 しかし、上記構成とした場合、図10を参 して説明した暗号化処理構成と、図17に示す 復号処理構成では、F関数の配列が異なるこ になるため、暗号化関数と復号関数の共有 を実現する構成とは言い難い。すなわち、 号処理のみにおいて偶数段のF関数の入れ替 が発生してしまい、暗号関数と同一の関数 実現しているとは言えないことになる。

 暗号化関数と、復号関数において、F関数 部分を別の関数として外部から与えるような 構成としてもよいが、この手法ではスワップ 関数を外部から与える手法と同様、実行速度 の低下を招くことになり好ましい手法とは言 えない。そこで、F関数の入出力結果を表引 (テーブル)実装する構成とする。

 すなわち、図17に示す構成の場合、2つの異 るF関数、すなわち、F関数F 0 とF関数F 1 を適用した構成であり、これらの各F関数の 力値に対応する出力値を予めテーブルとし 用意して、暗号処理装置のメモリに格納す 。各F関数のテーブルは、メモリのテーブル 納位置を示す各アドレスに基づいて取得可 な構成とする。

 このように各F関数F 0 ,F 1 の出力値をメモリに格納したテーブルから取 得可能な構成とし、図17に示す復号処理構成 おける偶数段のF関数の実行部分では、復号 関数に対して、各テーブルのアドレスを外部 から与えてテーブルを取得して各F関数の出 を得る構成とする。すなわち、少なくとも 数段のF関数の実行部分は、暗号関数、復号 数においてテーブルを取得するアドレスに った処理を実行する構成とする。

 一般的に、ソフトウェアによって実行する 理構成とした場合、F関数の内部は表引き( ーブル)で実装されている。表引き(テーブル )実装というのは,実際の演算は行わずに予め 算しておいた演算結果のみをテーブル(置換 表)という形でメモリ空間上に保持しておき それを適時参照することによって求めたい 力値を得る実装手法である。例えば,
 f(x)=x 3
 といった計算を行いたい場合に、以下のよ な値を持つftabというテーブル(置換表)を持 ことにより、実際のx 3 の計算を行わずともftabの中身を参照するこ により、x 3 の結果を得ることが可能になる。
 ftab[0]=0(=0 3 ),
 ftab[1]=1(=1 3 ),
 ftab[2]=8(=2 3 ),
 ftab[3]=27(=3 3 ),
 ftab[4]=64(=4 3 )
  ・・,
 上記は、入力値として0,1,2,3,4があるとき、 力として0,1,8,27,64を取得する構成を持つテ ブルftabの例である。

 このようにF関数が表引き(テーブル)実装 成を適用し、必要となる各F関数の入力値に 対応する出力値を予めテーブルとして用意し て、暗号処理装置のメモリに格納する。各F 数のテーブルは、メモリのテーブル格納位 を示す各アドレスに基づいて取得可能な構 とする。この方法によれば、F関数の入れ替 は実行速度を落とさずに容易に行うことが 能となる。これを応用して、偶数段のF関数 のテーブルのアドレスだけを外部から与える ようにすることで、関数を用いずに暗号化関 数と復号関数の変更が可能になる。

 つまり、DSMを用いたGFNにおいて、暗号化関 と復号関数を共有するためには、
 (1)通常のFeistel型暗号同様,段ごとに拡大鍵 順序を入れ替える
 (2)通常のGFN構造同様,偶数段のF関数ごとに 大鍵の位置を入れ替える
 (3)偶数段のF関数のテーブルのアドレスを暗 号化関数と復号関数で入れ替える
 これらの構成を採用する。
 以上のような方法により実行速度の低下を 小限に抑えつつ暗号化関数と復号関数を共 することが可能になる.

 上述したように、図17に示す復号処理構 では、各偶数ラウンドの入力ラウンド鍵を れ替え、偶数ラウンドの各F関数の処理結果 テーブルから取得する構成として、それぞ のF関数に対応するテーブルのアドレスを適 用した処理を実行させることで、図10に示す 号処理構成において適用するスワップ関数 同一のスワップ関数を適用可能として、暗 化関数と復号関数で共通の関数を用いるこ ができるインボリューション性を実現する とが可能となる。

 図17に示す復号処理構成は、ラウンド数r 奇数の場合の復号処理構成である。ラウン 数rが偶数の場合の暗号化関数(図10)に対応 るインボリューション性を保持した復号処 構成は図18に示す構成となる。

 図18に示す復号処理構成も、図10に示す暗 号処理構成によって暗号化された暗号文を平 文に戻す復号処理に適用される復号関数に相 当する復号処理構成を示している。図18の構 は、ラウンド数rが奇数である。

 図18に示す復号処理構成も、図17に示す復号 処理構成と同様、図に◎で示す各偶数ラウン ドに設定されたF関数F 0 ,F 1 と、各F関数に対して入力するラウンド鍵の れ替えを実行する構成としている。さらに 最終ラウンドの処理結果に対する出力調整 理を実行する構成を持つ。出力調整部282は 最終ラウンドにおける各データ系列の値を れ替えて、P[0],P[1],P[2],P[3]の最終出力を得る めの処理として実行される。この部分は、 号関数の実行後の処理として1回のみ実行す ればよく、大きな効率低下を発生させるもの とはならない。

 図18に示す構成におけるスワップ関数281は 図17に示す構成と同様、図10を参照して説明 た暗号化処理構成におけるスワップ関数211 同一のスワップ処理を行なう構成を持つ。 なわち、
 先行ラウンドのデータ系列0の出力は後続ラ ウンドにおけるデータ系列3の入力として設 される。
 先行ラウンドのデータ系列1の出力は後続ラ ウンドにおけるデータ系列0の入力として設 される。
 先行ラウンドのデータ系列2の出力は後続ラ ウンドにおけるデータ系列1の入力として設 される。
 先行ラウンドのデータ系列3の出力は後続ラ ウンドにおけるデータ系列2の入力として設 される。
 このような系列入れ替え処理を実行する関 がスワップ関数281である。

 このスワップ処理は、先に図10を参照して 明した暗号化処理におけるスワップ関数211 同一の系列入れ替え処理である。
 従って、図10に示す暗号化処理と、図18に示 す復号処理とでは、全く同一のスワップ関数 を適用することが可能となる。

 図18に示す復号処理構成では、スワップ 数を暗号化処理と同一の構成とするための 夫として、各ラウンドにおけるF関数と入力 (ラウンド鍵)の入力態様を変更し、さらに 出力調整部282により、最終ラウンドの処理 果に対する出力調整処理を実行する構成と ている。

 なお、各偶数段におけるF関数の入れ替え は、先に図17を参照して説明した構成例と同 、各F関数の入出力データの対応テーブルを 予めメモリに格納し、各F関数対応のテーブ を取得するためのアドレスによって各F関数 応のテーブルを取得してF関数の処理結果を 取得する構成とすることで、暗号化関数と復 号関数の共通化を実現することが可能である 。

 上記の設定とすることで、図10に示す暗 処理構成において適用するスワップ関数と 一のスワップ関数を適用可能として、暗号 関数と復号関数に共通な関数を適用可能な ンボリューション性が実現される。

  [5.暗号処理装置の構成例]
 最後に、上述した実施例に従った暗号処理 実行する暗号処理装置としてのICモジュー 300の構成例を図19に示す。上述の処理は、例 えばPC、ICカード、リーダライタ、その他、 々な情報処理装置において実行可能であり 図19に示すICモジュール300は、これら様々な 器に構成することが可能である。

 図19に示すCPU(Central processing Unit)301は、 号処理の開始や、終了、データの送受信の 御、各構成部間のデータ転送制御、その他 各種プログラムを実行するプロセッサであ 。メモリ302は、CPU301が実行するプログラム あるいは演算パラメータなどの固定データ 格納するROM(Read-Only-Memory)、CPU301の処理にお て実行されるプログラム、およびプログラ 処理において適宜変化するパラメータの格 エリア、ワーク領域として使用されるRAM(Rand om Access Memory)等からなる。また、メモリ302 暗号処理に必要な鍵データや、暗号処理に いて適用する変換テーブル(置換表)や変換行 列に適用するデータ等の格納領域として使用 可能である。なおデータ格納領域は、耐タン パ構造を持つメモリとして構成されることが 好ましい。

 暗号処理部303は、例えば上述した拡張型F eistel型の共通鍵ブロック暗号処理アルゴリズ ムに従った暗号処理、復号処理を実行する。 なお、ここでは、暗号処理手段を個別モジュ ールとした例を示したが、このような独立し た暗号処理モジュールを設けず、例えば暗号 処理プログラムをROMに格納し、CPU301がROM格納 プログラムを読み出して実行するように構成 してもよい。

 乱数発生器304は、暗号処理に必要となる の生成などにおいて必要となる乱数の発生 理を実行する。

 送受信部305は、外部とのデータ通信を実 するデータ通信処理部であり、例えばリー ライタ等、ICモジュールとのデータ通信を 行し、ICモジュール内で生成した暗号文の出 力、あるいは外部のリーダライタ等の機器か らのデータ入力などを実行する。

 このICモジュール300の暗号処理部303は、 えば、上述した実施例に従って、データ系 数dがd≧3の整数とした拡張型Feistel型暗号処 を実行するデータ処理部として機能する。 の暗号処理部303は、暗号化処理および復号 理に共通のスワップ処理を含むデータ処理 実行し、例えば、暗号化処理と、復号処理 おいて、適用ラウンド鍵の変更を行なうこ で、暗号化処理と復号処理のいずれの処理 おいても前記共通のスワップ処理を含むデ タ処理を実行する。すなわち、暗号化処理 よび復号処理に共通のスワップ関数を含む 通の関数を実行する。

 暗号処理部303は、拡張型Feistel構造を構成 する各ラウンドのF関数において実行する線 変換処理の変換行列を共通の行列に設定し 暗号処理を実行する場合には、先に図13、図 14を参照して説明したように、復号処理の各 ウンドにおいて適用するラウンド鍵の適用 ーケンスを、暗号処理と逆のシーケンスに 定するとともに、偶数ラウンド各々の複数 F関数に入力するラウンド鍵を、暗号化処理 における入力態様と異なる設定としたラウン ド鍵入れ替え処理を行なう。

 また、暗号処理部303は、拡張型Feistel構造 を構成する各ラウンドのF関数中の線形変換 理に適用する変換行列を少なくとも2以上の なる行列の選択適用構成とした拡散行列切 替え機構(DSM:Diffusion Switching Mechanism)を持つ Feistel構造に従った暗号処理を実行する場合 は、先に図17、図18を参照して説明したよう 、復号処理の各ラウンドにおいて適用する ウンド鍵の適用シーケンスを、暗号処理と のシーケンスに設定するとともに、偶数ラ ンド各々の複数のF関数、および該複数のF 数に入力するラウンド鍵を、暗号化処理に ける入力態様と異なる設定とするF関数およ ラウンド鍵入れ替え処理を行なう。この処 の場合には、複数の異なるF関数各々に対応 する入出力対応データを格納したテーブルを 、各ラウンドに対応して指定されるアドレス に従ってメモリから呼び出して各F関数処理 果を算出する処理を実行する。

 さらに、暗号処理部303は、拡張型Feistel構 造を構成するラウンドのラウンド数が偶数で ある場合、先に図14、図18を参照して説明し ように、復号処理の最終ラウンドの出力結 のシーケンス入れ替え処理を行なう出力調 を実行する。

 以上、特定の実施例を参照しながら、本 明について詳解してきた。しかしながら、 発明の要旨を逸脱しない範囲で当業者が該 施例の修正や代用を成し得ることは自明で る。すなわち、例示という形態で本発明を 示してきたのであり、限定的に解釈される きではない。本発明の要旨を判断するため は、特許請求の範囲の欄を参酌すべきであ 。

 なお、明細書中において説明した一連の 理はハードウェア、またはソフトウェア、 るいは両者の複合構成によって実行するこ が可能である。ソフトウェアによる処理を 行する場合は、処理シーケンスを記録した ログラムを、専用のハードウェアに組み込 れたコンピュータ内のメモリにインストー して実行させるか、あるいは、各種処理が 行可能な汎用コンピュータにプログラムを ンストールして実行させることが可能であ 。

 例えば、プログラムは記録媒体としての ードディスクやROM(Read Only Memory)に予め記 しておくことができる。あるいは、プログ ムはフレキシブルディスク、CD-ROM(Compact Disc  Read Only Memory),MO(Magneto optical)ディスク,DVD(D igital Versatile Disc)、磁気ディスク、半導体メ モリなどのリムーバブル記録媒体に、一時的 あるいは永続的に格納(記録)しておくことが きる。このようなリムーバブル記録媒体は いわゆるパッケージソフトウエアとして提 することができる。

 なお、プログラムは、上述したようなリ ーバブル記録媒体からコンピュータにイン トールする他、ダウンロードサイトから、 ンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワー クを介して、コンピュータに有線で転送し、 コンピュータでは、そのようにして転送され てくるプログラムを受信し、内蔵するハード ディスク等の記録媒体にインストールするこ とができる。

 なお、明細書に記載された各種の処理は 記載に従って時系列に実行されるのみなら 、処理を実行する装置の処理能力あるいは 要に応じて並列的にあるいは個別に実行さ てもよい。また、本明細書においてシステ とは、複数の装置の論理的集合構成であり 各構成の装置が同一筐体内にあるものには らない。

 上述したように、本発明の一実施例の構 によれば、データ系列数:dをd≧3の整数とし た拡張型Feistel構造を適用した暗号処理構成 おいて、インボリューション性、すなわち 号化処理と復号処理に共通の関数を適用可 な構成とすることが可能となる。具体的に 、復号処理におけるラウンド鍵の入れ替え F関数の入れ替えを行う構成とすることで、 ワップ関数を暗号化処理と復号処理とにお て同一の処理態様に設定することで共通関 による処理を可能とした。本構成により、 置のコストダウンや小型化が実現される。