説明

復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム

【課題】実装効率および安全性の高い非線形変換処理構成を実現する。
【解決手段】複数の小さなSボックス(S−box)による非線形変換を実行する第1段の非線形変換部と、第1段非線形変換部からの出力をすべて入力して最適拡散変換を行う行列を適用したデータ変換を実行する線形変換部と、線形変換部の出力データを分割した分割データ各々の非線形変換処理を実行する複数の小型非線形変換部からなる第2段非線形変換部を適用したデータ変換を実行する。本構成により、クリティカルパスを過大にすることなく適切なデータ拡散が実現され、実装効率および安全性の高い構成を実現することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、例えば、共通鍵ブロック暗号処理に適用可能な非線形変換処理を行なう拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0002】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【0003】
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
【0004】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【0005】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【0006】
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号であったDES(Data Encryption Standard)アルゴリズム、現在の米国標準暗号であるAES(Advanced Encryption Standard)アルゴリズムなどが知られている。
【0007】
このような、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有する暗号処理部と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジューリング部とによって構成される。鍵スケジューリング部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた拡大鍵を生成し、生成した拡大鍵に基づいて、暗号処理部の各ラウンド関数部で適用するラウンド鍵(副鍵)を生成する。
【0008】
このようなアルゴリズムを実行する具体的な構造として、線形変換部および非線形変換部を有するラウンド関数を繰り返し実行する構造が知られている。例えば代表的な構造にFeistel構造がある。Feistel構造は、データ変換関数としてのラウンド関数(F関数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関数(F関数)においては、線形変換処理および非線形変換処理が実行される。なお、Feistel構造を適用した暗号処理について記載した文献としては、例えば非特許文献1、非特許文献2がある。
【0009】
この共通鍵ブロック暗号処理や、例えばハッシュ関数などでは非線形変換処理によるデータ変換が実行される。非線形変換にはSボックス(S−box)と呼ばれる非線形変換関数が適用可能である。Sボックスは、ブロック暗号やハッシュ関数の構成要素であり、その安全性や実装性能を決定付ける非常に重要な関数である。Sボックスは一般的にはn−bit入力、m−bit出力の非線形変換関数である。入出力ビット数が同数でかつ、入出力が1対1に対応しているSボックスは、全単射型Sボックスと呼ばれる。
【0010】
暗号処理の非線形変換にSボックスを適用する場合、適用するSボックスの性質は、暗号の安全性に大きな影響を与える。すなわち、例えば差分解析、線形解析など、様々な暗号攻撃が知られているが、このような暗号攻撃によって鍵やアルゴリズムが解析される困難性が高いほど安全性が高い。ブロック暗号やハッシュ関数に利用されるSボックスの性質によってこの安全性が大きく異なってくる。
【0011】
例えば、暗号アルゴリズム全体や暗号処理に適用されるラウンド関数自体の厳密な安全性評価は、その入出力サイズが大きい(例えば64ビット、128ビットなど)ことから一般的に困難である。しかし、Sボックスの入出力サイズは一般的には小さい。例えば、8−bit入出力程度であり、厳密な安全性評価が可能となる。暗号アルゴリズム全体の安全性を高くするために、Sボックスには、少なくとも以下のような特性が求められることが知られている。
(1)最大差分確率が十分小さい
(2)最大線形確率が十分小さい
(3)ブール多項式表現を行った際のブール代数次数が十分大きい
(4)入出力を多項式表現した際の項数が十分多い
【0012】
主に、(1)は差分攻撃に対する耐性、(2)は線形攻撃に対する耐性、(3)は高階差分攻撃に対する耐性、(4)は補間攻撃に対する耐性をそれぞれ決定付ける。さらには、Sボックスの入出力のビット相関が低いことや入力を1ビット変化させたときの出力の変化が1/2程度になることなどが安全性を高めるために重要である。
【0013】
また、Sボックスは安全性の要求とは別に高い実装性能も要求される。例えば、ソフトウェアによる暗号処理やハッシュ関数を実行させる実装構成においては通常、入力に対する出力を示すテーブルをメモリに保持して、表引き(テーブル実装)と呼ばれる手法により、非線形変換処理を実行する構成とした実装がなされるため、その実装性能はSボックスの内部構造にはあまり依存しない。しかしながら、ハードウェア実装においては、例えば入力値に基づいて、特定の出力を算出するための回路が構成される。この回路構成は、適用するSボックスにより、構成が大きく変化することになり、回路規模に影響を与えることになる。
【先行技術文献】
【非特許文献】
【0014】
【非特許文献1】K. Nyberg, "Generalized Feistel networks", ASIACRYPT'96, SpringerVerlag, 1996, pp.91--104.
【非特許文献2】Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
【発明の開示】
【発明が解決しようとする課題】
【0015】
本発明は、上記問題点に鑑みてなされたものであり、復号処理などにおいて利用される非線形変換処理を実行するSボックスの構成を改良し、各種の攻撃に対する耐性を高めた構成、すなわち安全性の高めた拡張Feistel型共通鍵ブロック暗号を適用した復号処理を実行する復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明の第1の側面は、
F関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置であって、
F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割部と、
前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算部と、
前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割部と、
前記第2データ分割部で分割されたデータ各々の非線形処理を実行する複数の小型非線形変換部からなる第1非線形変換部と、
前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、
前記線形変換部の出力データを分割する第3データ分割部と、
前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する複数の小型非線形変換部からなる第2非線形変換部と、
を有する復号処理装置にある。
【0017】
さらに、本発明の復号処理装置の一実施態様において、前記線形変換部は、前記第2データ分割部で分割されたデータのビットサイズと同サイズの要素を持つ行列演算によるデータ変換を実行する構成であり、行列がm×mである場合、少なくともm以上の分岐数を有する高分岐数の行列を適用したデータ変換処理を実行する構成である。
【0018】
さらに、本発明の復号処理装置の一実施態様において、前記鍵加算部は排他的論理和演算を行う。
【0019】
さらに、本発明の復号処理装置の一実施態様において、前記入力データがnビットデータである場合、前記第1非線形変換部は、入力データであるnビットデータの分割データであるn/kビットを各々入力して非線形変換処理結果としてのn/kビットを出力するk個の小型非線形変換部から構成され、前記線形変換部は、前記k個の小型非線形変換部の出力する総計nビットのデータを入力して、高分岐数の行列を適用したデータ変換処理によりnビットの出力を生成する構成であり、前記第2非線形変換部は、前記線形変換部から出力されるnビットデータの分割データであるn/kビットを各々入力して非線形変換処理結果としてのn/kビットを出力するk個の小型非線形変換部を有する構成であることを特徴とする。
【0020】
さらに、本発明の復号処理装置の一実施態様において、前記線形変換部は、最適拡散変換(ODM(Optimal Diffusion Mappings))処理を実行するMDS(Maximum Distance Separable)行列を適用したデータ変換処理を実行する構成であることを特徴とする。
【0021】
さらに、本発明の復号処理装置の一実施態様において、前記線形変換部は、前記入力データがnビットデータである場合、
GF(2)上で定義されるn次の既約多項式p(x)によって定義される拡大体GF(2)上の行列を適用したデータ変換処理を実行する構成であることを特徴とする。
【0022】
さらに、本発明の復号処理装置の一実施態様において、前記復号処理装置は、nビット入出力の非線形変換処理を実行するSボックスを有し、前記Sボックスを構成する前記第1非線形変換部と、前記第2非線形変換部に含まれる複数の小型非線形変換部は、nビットより少ないビット数の非線形変換処理を実行する小型のSボックスによって構成されていることを特徴とする。
【0023】
さらに、本発明の復号処理装置の一実施態様において、前記復号処理装置は、非線形変換処理を伴う復号処理を実行する構成であることを特徴とする。
【0024】
さらに、本発明の復号処理装置の一実施態様において、前記復号処理は、共通鍵ブロック暗号を適用した復号処理であることを特徴とする。
【0025】
さらに、本発明の第2の側面は、
プログラムを記憶するメモリと、
前記プログラムを実行するプロセッサと、
前記プロセッサの制御下でF関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理プログラムを実行する復号処理部とを備える情報処理装置であって、
前記復号処理部は、
F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割部と、
前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算部と、
前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割部と、
前記第2データ分割部で分割されたデータ各々の非線形処理を実行する複数の小型非線形変換部からなる第1非線形変換部と、
前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、
前記線形変換部の出力データを分割する第3データ分割部と、
前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する複数の小型非線形変換部からなる第2非線形変換部と、
を有する情報処理装置にある。
【0026】
さらに、本発明の情報処理装置の一実施態様において、前記線形変換部は、前記第2データ分割部で分割されたデータのビットサイズと同サイズの要素を持つ行列演算によるデータ変換を実行する構成であり、行列がm×mである場合、少なくともm以上の分岐数を有する高分岐数の行列を適用したデータ変換処理を実行する構成である。
【0027】
さらに、本発明の情報処理装置の一実施態様において、前記鍵加算部は排他的論理和演算を行う。
【0028】
さらに、本発明の第3の側面は、
F関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置において実行する復号処理方法であって、
第1データ分割部において、F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割ステップと、
鍵加算部において、前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算ステップと、
第2データ分割部において、前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割ステップと、
複数の小型非線形変換部からなる第1非線形変換部において、前記第2データ分割部で分割されたデータ各々の非線形処理を実行する第1非線形変換ステップと、
線形変換部において、前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換ステップと、
第3データ分割部において、前記線形変換部の出力データを分割する第3データ分割ステップと、
複数の小型非線形変換部からなる第2非線形変換部において、前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する第2非線形変換ステップと、
を実行する復号処理方法にある。
【0029】
さらに、本発明の第4の側面は、
F関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置において復号処理を実行させるコンピュータ・プログラムであって、
第1データ分割部において、F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割ステップと、
鍵加算部において、前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算ステップと、
第2データ分割部において、前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割ステップと、
複数の小型非線形変換部からなる第1非線形変換部において、前記第2データ分割部で分割されたデータ各々の非線形処理を実行する第1非線形変換ステップと、
線形変換部において、前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換ステップと、
第3データ分割部において、前記線形変換部の出力データを分割する第3データ分割ステップと、
複数の小型非線形変換部からなる第2非線形変換部において、前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する第2非線形変換ステップと、
を実行させるコンピュータ・プログラムにある。
【0030】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0031】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0032】
本発明の一実施例の構成によれば、例えば、共通鍵ブロック暗号を適用した復号処理などにおいて実行される非線形変換処理を、複数の小さなSボックス(S−box)による非線形変換を実行する第1段の非線形変換部と、第1段非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、線形変換部の出力データを分割した分割データ各々の非線形変換処理を実行する複数の小型非線形変換部からなる第2段非線形変換部とを適用したデータ変換を行う構成とし、線形変換部では、最適拡散変換を行う行列を適用したデータ変換を実行する構成としたので、データの入力から出力に至るクリティカルパスを過大にすることなく、適切なデータ拡散を実現して、各種の暗号攻撃に対する耐性の強い安全性の高いデータ変換を実現することができる。
【図面の簡単な説明】
【0033】
【図1】共通鍵ブロック暗号アルゴリズムの基本構成を示す図である。
【図2】図1に示す共通鍵ブロック暗号処理部E10の内部構成について説明する図である。
【図3】図2に示す暗号処理部12の詳細構成について説明する図である。
【図4】ラウンド関数実行部の一構成例としてのSPN構造ラウンド関数について説明する図である。
【図5】ラウンド関数実行部の一構成例としてのFeistel(フェイステル)構造について説明する図である。
【図6】ラウンド関数実行部の一構成例としての拡張Feistel構造について説明する図である。
【図7】非線形変換処理部の具体例について説明する図である。
【図8】線形変換処理部の具体例について説明する図である。
【図9】CRYPTON ver.0.5のS−boxの構成について説明する図である。
【図10】CRYPTON ver.1.0のS−boxの構成について説明する図である。
【図11】WhirlpoolのS−boxの構成について説明する図である。
【図12】FOXのS−boxの構成について説明する図である。
【図13】本発明の一実施例に係る非線形変換処理構成としてのnビット入出力S−boxの構成例を示す図である。
【図14】本発明の一実施例に係る具体的な8ビット入出力の非線形変換を実行するS−boxの構成例について説明する図である。
【図15】本発明の一実施例に係る具体的な8ビット入出力の非線形変換を実行するS−boxの構成例について説明する図である。
【図16】本発明の一実施例に係る具体的な8ビット入出力の非線形変換を実行するS−boxの構成例について説明する図である。
【図17】本発明の一実施例に係る具体的な8ビット入出力の非線形変換を実行するS−boxの構成例について説明する図である。
【図18】本発明の一実施例に係る非線形変換を実行するS−boxの構成例について説明する図である。
【図19】本発明に係る装置例としての暗号処理装置構成例を示す図である。
【発明を実施するための形態】
【0034】
以下、本発明の詳細について説明する。説明は、以下の項目に従って行なう。
1.共通鍵ブロック暗号の概要
2.暗号攻撃の概要
3.複数の小型Sボックスの組み合わせからなる非線形変換処理構成
(3−1)複数の小型Sボックスの組み合わせからなる非線形変換処理構成の有効性について
(3−2)従来型の複数の小型Sボックスの組み合わせからなる非線形変換処理構成と問題点
(3−3)本発明に係る複数の小型Sボックスの組み合わせからなる非線形変換処理構成
4.暗号処理装置の構成例
【0035】
[1.共通鍵ブロック暗号の概要]
まず、本発明の適用可能な通鍵ブロック暗号の概要について説明する。本明細書において、共通鍵ブロック暗号(以下ではブロック暗号)は、以下に定義するものを指すものとする。
【0036】
ブロック暗号は平文Pと鍵Kを入力し、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼びここではnで示す。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、予め1つに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。
【0037】
鍵のビット長は、kで表す。鍵は任意の整数値を取りうる。共通鍵ブロック暗号アルゴリズムは1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムAはブロックサイズn=128であり、鍵のビット長k=128、またはk=192またはk=256の各種の鍵サイズに対応するという構成もありうる。
平文[P]、暗号文[C]、鍵[K]の各ビットサイズは、以下のように示される。
平文P:nビット
暗号文C:nビット
鍵K:kビット
【0038】
図1にkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムEの図を示す。図1に示すように、共通鍵ブロック暗号処理部E10は、nビットの平文Pと、kビットの鍵Kを入力して、予め定められた暗号アルゴリズムを実行して、nビットの暗号文Cを出力する。なお、図1には平文から暗号文を生成する暗号化処理のみを示している。暗号文から平文を生成する復号処理は、一般的には暗号処理部E10の逆関数が用いられる。ただし、暗号処理部E10の構造によっては、復号処理においても、同様の共通鍵ブロック暗号処理部E10が適用でき、鍵の入力順などのシーケンスの変更によって復号処理が可能となる。
【0039】
図1に示す共通鍵ブロック暗号処理部E10の内部構成について、図2を参照して説明する。ブロック暗号は2つの部分に分けて考えることができる。ひとつは鍵Kを入力とし、ある定められたステップにより入力鍵Kのビット長を拡大して拡大鍵K'(ビット長k')を出力する鍵スケジューリング部11と、平文Pと鍵スケジューリング部11から入力する拡大鍵K'を受け取り、平文Pを入力して、拡大鍵K'を適用した暗号処理を実行して、暗号文Cを生成するためのデータの変換を実行する暗号処理部12である。なお、先に説明したように、暗号処理部12の構造によっては、暗号文を平文に戻すデータ復号処理にも暗号処理部12が適用可能な場合もある。
【0040】
次に、図2に示す暗号処理部12の詳細構成について図3を参照して説明する。暗号処理部12は、図3に示すように、ラウンド関数実行部20を適用したデータ変換を繰り返し実行する構成を持つ。すなわち、暗号処理部12は、ラウンド関数実行部20という処理単位に分割できる。ラウンド関数実行部20は入力として、前段のラウンド関数実行部の出力Xと、拡大鍵に基づいて生成されるラウンド鍵RKの2つのデータを受け取り、内部でデータ変換処理を実行して出力データXi+1を次のラウンド関数実行部に出力する。なお、第1ラウンドでは、入力は、平文または平文に対する初期化処理データである。また最終ラウンドの出力は暗号文となる。
【0041】
図3に示す例では、暗号処理部12は、r個のラウンド関数実行部20を有し、r回のラウンド関数実行部におけるデータ変換を繰り返して暗号文を生成する構成となっている。ラウンド関数の繰り返し回数をラウンド数と呼ぶ。図に示す例では、ラウンド数はrとなる。
【0042】
各ラウンド関数実行部の入力データXは暗号化途中のnビットデータであり、あるラウンドにおけるラウンド関数の出力Xi+1が次のラウンドの入力として供給される。各ラウンド関数実行部のもう一つの入力データは鍵スケジュールから出力された拡大鍵のK'に基づくデータが用いられる。この各ラウンド関数実行部に入力され、ラウンド関数の実行に適用される鍵をラウンド鍵と呼ぶ。図で、iラウンドに適用するラウンド鍵をRKとして示している。拡大鍵K'は、例えば、rラウンド分のラウンド鍵RK〜RKの連結データとして構成される。
【0043】
図3に示す構成は、暗号処理部12の入力側から見て1ラウンド目の入力データをXとし、i番目のラウンド関数から出力されるデータをX、ラウンド鍵をRKとして示した暗号処理部12の構成である。なお、この暗号処理部12の構造によっては、例えば、適用するラウンド鍵の適用シーケンスを、暗号化処理と逆に設定し、暗号文を暗号処理部12に入力することで、復号文を出力する構成にできる。
【0044】
図3に示す暗号処理部12のラウンド関数実行部20は、さまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造(structure)によって分類できる。代表的な構造として、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
がある。以下、これらの具体的構成について、図4〜図6を参照して説明する。
【0045】
(ア)SPN構造ラウンド関数
まず、図4を参照して、ラウンド関数実行部20の一構成例としてのSPN構造ラウンド関数について説明する。SPN構造ラウンド関数実行部20aは、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。図4に示すように、nビットの入力データすべてに対して、ラウンド鍵との排他的論理和(XOR)演算を実行する排他的論理和演算部21、排他的論理和演算部21の演算結果を入力し、入力データの非線形変換を実行する非線形変換処理部22、非線形変換処理部22における非線形変換処理結果を入力し、入力データに対する線形変換処理を実行する線形変換処理部23などによって構成される。線形変換処理部23の線形変換処理結果が、次のラウンドに出力される。最終ラウンドでは暗号文となる。なお、図4に示す例では、排他的論理和演算部21、非線形変換処理部22、線形変換処理部23の処理順を示しているが、これらの処理部の順番は、限定されるものではなく、他のシーケンスで処理を行なう構成としてもよい。
【0046】
(イ)Feistel構造
次に、図5を参照してラウンド関数実行部20の一構成例としてのFeistel(フェイステル)構造について説明する。Feistel構造は、図5に示すように、前ラウンドからの入力(第1ラウンドでは入力文)であるnビットの入力データをn/2ビットの2つのデータに分割して、各ラウンドにおいて入れ替えながら処理を実行する。
【0047】
Feistel構造を持つラウンド関数実行部20bを適用した処理においては、図に示すように、一方のn/2ビットデータとラウンド鍵とがF関数部30に入力される。F関数部30は、上述したSPN構造と同様、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。
【0048】
前ラウンドからのn/2ビットデータとラウンド鍵とがF関数部30の排他的論理和演算部31に入力され排他的論理和(XOR)処理がなされる。さらに、この結果データを非線形変換処理部32に入力して非線形変換を実行し、さらに、この非線形変換結果が線形変換処理部33に入力され線形変換が実行される。この線形変換結果が、F関数処理結果データとして出力する。
【0049】
さらに、このF関数出力と、前ラウンドから入力するもう1つのn/2ビット入力とを、排他的論理和演算部34に入力し、排他的論理和演算(XOR)を実行して、実行結果を、次のラウンドにおけるF関数の入力として設定される。なお、図に示す第iラウンドにおけるF関数入力に設定されたn/2ビットは次のラウンドのF関数出力との排他的論理和演算に適用される。このように、Feistel構造は、各ラウンドにおいて入力を交互に入れ替えながらF関数を適用したデータ変換処理を実行する。
【0050】
(ウ)拡張Feistel構造
次に、図6を参照してラウンド関数実行部20の一構成例としての拡張Feistel構造について説明する。先に、図5を参照して説明したFeistel構造は、nビットの平文を2つに分割してn/2ビットずつに区分して処理を実行していた。すなわち、分割数:d=2とした処理である。なお、この分割数は、データ系列数とも呼ばれる。
【0051】
拡張Feistel構造では、このデータ系列数(分割数)dを3以上の任意の整数とした設定である。データ系列数(分割数)dの値に応じたさまざまな拡張Feistel構造を定義することができる。図6に示す例では、データ系列数(分割数)d=4であり、各系列に対してn/4ビットのデータが入力される。各ラウンドでは、1つ以上のラウンド関数としてのF関数が実行される。図に示す例は、1ラウンドにおいて2つのF関数部によるラウンド演算を行なう構成例である。
【0052】
F関数部41,42の構成は、先に図5を参照して説明したF関数部30の構成と同様であり、ラウンド鍵と入力値との排他的論理和演算と、非線形変換処理、線形変換処理を実行する構成となっている。なお、各F関数部に入力するラウンド鍵は、入力ビットとビット数が一致するように調整される。図に示す例では、各F関数部41,42に入力するラウンド鍵は、n/4ビットとなる。これらの鍵は、拡大鍵を構成するラウンド鍵をさらにビット分割して生成する。なお、データ系列数(分割数)をdとしたとき、各系列に入力されるデータはn/dビットであり、各F関数に入力する鍵のビット数もn/dビットに調整される。
【0053】
なお、図6に示す拡張Feistel構造では、データ系列数(分割数)をdとして、各ラウンドにおいてd/2のF関数を並列に実行する構成例であるが、拡張Feistel構造は、各ラウンドにおいて、1つ以上d/2以下のF関数を実行する構成が可能である。
【0054】
図4〜図6を参照して説明したように、共通鍵ブロック暗号における暗号処理部12のラウンド関数実行部20は、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの構造をとり得る。これらのラウンド関数実行部は、いずれも非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。すなわち、非線形変換処理を実行する非線形変換処理部と、線形変換処理を実行する線形変換処理部とを有する。以下、これらの変換処理構成について説明する。
【0055】
(非線形変換処理部)
非線形変換処理部の具体例について、図7を参照して説明する。図7に示すように、非線形変換処理部50は、具体的には、Sボックス(S−box)51と呼ばれるsビット入力sビット出力の非線形変換テーブルがm個並んだものであり、msビットの入力データがsビットずつ分割されてそれぞれ対応するSボックス(S−box)51に入力されデータが変換される。各Sボックス51では、例えば変換テーブルを適用した非線形変換処理が実行される。
【0056】
入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために、図7に示すように、処理対象データXを複数の単位に分割し、それぞれに対して、非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとしたとき、sビットずつのm個のデータに分割して、m個のSボックス(S−box)51それぞれに対してsビットを入力し、例えば変換テーブルを適用した非線形変換処理を実行して、これらの各Sビット出力m個を合成してmsビットの非線形変換結果を得る。
【0057】
(線形変換処理部)
線形変換処理部の具体例について、図8を参照して説明する。線形変換処理部は、入力値、例えば、Sボックスからの出力データであるmsビットの出力値を入力値Xとして入力し、この入力に対して線形変換を施しmsビットの結果を出力する。線形変換処理は、例えば、入力ビット位置の入れ替え処理などの線形変換処理を実行して、msビットの出力値Yを出力する。線形変換処理は、例えば、入力に対して、線形変換行列を適用して入力ビット位置の入れ替え処理を行なう。この行列の一例が図8に示す線形変換行列である。
【0058】
線形変換処理部において適用する線形変換行列の要素は拡大体:GF(2)の体の要素やGF(2)の要素など、一般的にはさまざまな表現を適用した行列として構成できる。図8は、msビット入出力をもち、GF(2)の上で定義されるm×mの行列により定義される線形変換処理部の1つの構成例を示すものである。
【0059】
[2.暗号攻撃の概要]
上述した共通鍵ブロック暗号に対する暗号攻撃、すなわち、適用している鍵の解析やアルゴリズムの解析手法として様々な手法が知られている。以下、この暗号攻撃の概要について説明する。以下の各攻撃について、順次説明する。
(2−1)差分攻撃
(2−2)線形攻撃
(2−3)高階差分攻撃
(2−4)補間攻撃
【0060】
(2−1)差分攻撃
共通鍵暗号の攻撃法の一つとして差分解読法(Differential Cryptanalysis)がある。差分解読法については、例えば、文献「E.Biham,A.Shamir,"Differential Cryptanalysis of DES−like Cryptosystems,"Journal of Cryptology,Vol.4,No.1,pp.3−72,1991.」に記述されている。
【0061】
この攻撃法はある暗号に対し差分値と呼ばれるデータの伝播を観測し、高確率でその差分値の伝播が起こってしまった場合に攻撃、つまり鍵の推定ができるという攻撃法である。この差分値と呼ばれるデータの伝播の確率のことを差分確率と呼ぶ。
【0062】
nビット入出力の関数fに対して、入力をx(n−bit)、入力差分値をΔx(n−bit)、出力差分値をΔy(n−bit)と定義したとき、関数fに対する入力差分値Δx、出力差分値Δyの差分確率DP(Δx、Δy)は以下のように定義される。
【数1】

【0063】
また、関数fに対する最大差分確率MDPは以下のように定義される。
【数2】

【0064】
これらの値は関数fによって一意に求まる値であり、最大差分確率MDPが大きい関数fは差分攻撃に弱い関数ということになる。よって、暗号を設計する際はできる限りMDPが小さくなるよう関数fを設計することが望ましい。
【0065】
(2−2)線形攻撃
さらに、共通鍵暗号の攻撃法の一つとして線形解読法(Linear Cryptanalysis)がある。線形解読法については、例えば、文献「M.Matsui,"Linear Cryptanalysis Method for DES Cipher,"EUROCRYPT'93,LNCS 765,pp.386−397,1994.」に記述されている。
【0066】
この攻撃法はある暗号に対し、入力の特定ビットの排他的論理和と出力の特定ビットの排他的論理和の間の相関を観測し、強い相関関係が見つかってしまった場合に攻撃、つまり鍵の推定ができるという攻撃法である。この入出力の特定ビットの相関係数のことを線形確率と呼ぶ。
【0067】
nビット入出力の関数fに対して、入力をx(n−bit)、入力マスク値をΓx(n−bit)、出力マスク値をΓy(n−bit)と定義したとき、関数fに対する入力マスク値Γx、出力マスク値Γyの線形確率LP(Γx、Γy)は以下のように定義される。
【数3】

ただし、上記式において[・]はnビットベクトル同士の内積演算を表す。
【数4】

【0068】
また、関数fに対する最大線形確率MLPは以下のように定義される。
【数5】

【0069】
これらの値は関数fによって一意に求まる値であり、最大線形確率MLPが大きい関数fは線形攻撃に弱い関数ということになる。よって、暗号を設計する際はできる限りMLPが小さくなるよう関数fを設計することが望ましい。
【0070】
(2−3)高階差分攻撃
さらに、共通鍵暗号の攻撃法の一つとして高階差分攻撃法(Higher Order Differential Attack)がある。高階差分攻撃法については、例えば、文献「L.R.Knudsen、"Truncated and Higher Order Differentials,"FSE '94、 LNCS 1008,pp.196−211」に記述されている。
【0071】
この攻撃法は、暗号アルゴリズムの持つ代数的性質を利用した攻撃法であり、暗号文を平文の全ビットでブール多項式表現した際に、そのブール代数次数が平文の特定数ビットに対し、ある次数より小さくなっているような場合に攻撃、つまり鍵の推定ができるという攻撃法である。
【0072】
(2−4)補間攻撃
さらに、共通鍵暗号の攻撃法の一つとして補間攻撃法(Interpolation Attack)がある。補間攻撃については、例えば、文献「T.Jakobsen and L.R.Knudsen,"The Interpolation Attack on Block Cipher,"FSE'97,LNCS 1267,pp.28−40,1997.」に記述されている。
【0073】
この攻撃法は、暗号アルゴリズムの持つ代数的性質を利用した攻撃法であり、暗号化関数を多項式関数として表現した際のその項数が少ない場合に、鍵値を含んだ暗号化関数を復元することで攻撃を行う攻撃法である。
【0074】
[3.複数の小型Sボックスの組み合わせからなる非線形変換処理構成]
(3−1)複数の小型Sボックスの組み合わせからなる非線形変換処理構成の有効性について
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を行なう構成である。この共通鍵ブロック暗号処理は、ラウンド関数を繰り返し実行する構成であり、ラウンド関数では、線形変換処理、および非線形変換処理が実行される。非線形変換処理においては、例えば、図7を参照して説明したように、S−box(Sボックス)を適用した非線形変換処理が実行される。上述した共通鍵ブロック暗号処理の他にも、例えばハッシュ関数などのデータ変換においても非線形変換処理にSボックスが適用可能である。
【0075】
先に、説明したように、このSボックスの入出力サイズは一般的には小さく、厳密な安全性評価が可能であり、暗号やハッシュアルゴリズム全体の安全性を高くするためにSボックスに求められる特性として以下の特性が知られている。
(1)最大差分確率が十分小さい
(2)最大線形確率が十分小さい
(3)ブール多項式表現を行った際のブール代数次数が十分大きい
(4)入出力を多項式表現した際の項数が十分多い
【0076】
主に、(1)は差分攻撃に対する耐性、(2)は線形攻撃に対する耐性、(3)は高階差分攻撃に対する耐性、(4)は補間攻撃に対する耐性をそれぞれ決定付ける。さらには、Sボックスの入出力のビット相関が低いことや入力を1ビット変化させたときの出力の変化が1/2程度になることなどが安全性を高めるために重要である。
【0077】
また、S−boxは安全性の要求とは別に高い実装性能も要求される。例えば、ソフトウェアによる暗号処理やハッシュ関数を実行させる実装構成においては通常、入力に対する出力を示すテーブルをメモリに保持して、表引き(テーブル実装)と呼ばれる手法により、非線形変換処理を実行する構成とした実装がなされるため、その実装性能はS−boxの内部構造にはあまり依存しない。しかしながら、ハードウェア実装においては、例えば入力値に基づいて、特定の出力を算出するための回路が構成される。この回路構成は、適用するS−boxにより、構成が大きく変化することになり、回路規模に影響を与えることになる。
【0078】
暗号アルゴリズムやハッシュアルゴリズムの安全性維持のためにS−boxに求められる特性として、前述したように、
(1)最大差分確率が十分小さい
(2)最大線形確率が十分小さい
(3)ブール多項式表現を行った際のブール代数次数が十分大きい
(4)入出力を多項式表現した際の項数が十分多い
これらの特性があるが、このような要求を満たすS−boxを効率よく生成する手法として、拡大体上のべき乗関数を用いる方法がよく知られている。この手法で拡大体の次数とべき乗の乗数を適切に選べば、非常に特性の良いS−boxが生成できる。
【0079】
実際にn−bit入出力S−boxの入力をx、出力をyとして、それぞれが拡大体GF(2)の元だとした場合、
y=f(x)が、
【数6】

【0080】
で与えられる場合、最大差分確率、最大線形確率の点で最適なS−boxが構成できることがよく知られている。
【0081】
このような手法で構成されたS−boxの例としては、AES、Camellia、MISTYにおいて適用されているS−boxなどが挙げられる。
AESやCamelliaのS−boxはGF((2)上の逆元関数としてS−boxを構成することもできるため、安全性の観点からも特性が非常に良く、さらに非常に高いハードウェア実装性能も持つと言える。
【0082】
しかしながら、近年このようなS−boxに関しても、その特徴的な代数的性質を利用した攻撃法や、そのあまりに均一的な拡散性に関する問題点などが指摘されるようになった。
【0083】
このような点から、特徴的な代数的性質を持たないS−boxの構成法が考えられ、強い代数的構造を持たないように、ランダム、もしくはそれに準ずるような手法で要素を選択する手法によりS−boxを生成する方法が考えられた。このような手法でS−boxを生成すると、多くの場合、特徴的な代数的構造は持たず、さらに拡大体上のべき乗関数のような均一的な拡散はしないため、上記のような問題に関しては対策がされていると言うことができる。
【0084】
しかしながら、n−bit入出力の全単射S−boxの数は、2の階乗個存在するため、実際にn−bit入出力のS−boxをランダムに生成し、その特性をひとつひとつチェックするような手法ではnがある程度大きくなると効率的に特性の良いS−boxを生成することは難しくなる。
【0085】
また、S−boxの要素を完全にランダムに選択した場合、ハードウェアで実装する際も主にテーブル実装と呼ばれる手法しか用いることができなくなってしまうため、実装効率が大きく低下する。
【0086】
このような問題から、小さなサイズの入出力を持つS−boxをランダムに生成して、それらを複数個組み合わせて、より大きなS−boxを生成するという試みがなされている。例えば、
CRYPTON ver.0.5、
CRYPTON ver.1.0、
Whirlpool、
FOX
などのS−boxなどがこのような手法に基づいて生成されたS−boxだと考えることができる。以下、これらの具体的な構成例およびその問題点について説明する。
【0087】
(3−2)従来型の複数の小型Sボックスの組み合わせからなる非線形変換処理構成と問題点
以下、従来型の複数の小型Sボックスの組み合わせからなる非線形変換処理構成と問題点について、以下の各構成について説明する。
(a)CRYPTON ver.0.5、
(b)CRYPTON ver.1.0、
(c)Whirlpool、
(d)FOX
【0088】
(a)CRYPTON ver.0.5、
例えば、CRYPTON ver.0.5のS−boxは、図9に示す構造を持つ。S−box[S4]101、S−box[S4]102、S−box[S4]103は、4ビット入出力のS−boxであり、これらの3つのS−boxと、排他的論理和演算部111〜113が組み合わされて、入力8ビットを非線形変換して、出力8ビットを得る構成を持つ。なお、図に示すS−boxの表記[S4]において、4は4ビット入出力のSボックスであることを示し、nは、S−boxの識別子である。S−box[S4]101、S−box[S4]102、S−box[S4]103は、すべて4ビット入出力のS−boxであり、それぞれ異なる非線形変換処理を実行する異なるS−boxである。
【0089】
この構造は、いわゆる3段Feistel構造を採用しているためブール代数次数が低くなってしまい、さらにクリティカルパスが長い。すなわち、入力から最終出力を得るまでには3つの小さなS−boxを通過しなければいけない構成となっている。従って、実装性能があまり高くないという特徴を持つ。
【0090】
(b)CRYPTON ver.1.0、
また、CRYPTON ver.1.0のS−boxは図10に示す構造を持つ。S−box[S4]121、S−box[S4]122と、S−box[S4]122の逆変換を実行するS−box[S4−1]123、S−box[S4]121の逆変換を実行するS−box[S4−1]124と、ビット演算による線形変換処理を実行するビット演算部131,132から構成される。
【0091】
入力8ビットの上位4ビットをS−box[S4]121において、非線形変換を実行した後、ビット演算部131に入力した線形変換を行い、その結果をS−box[S4−1]123に入力して非線形変換結果を出力する。下位4ビットについては、S−box[S4]122において、非線形変換を実行した後、ビット演算部131に入力した線形変換を行い、その結果をS−box[S4−1]123に入力して非線形変換結果を出力する。
【0092】
この構造は、中間で用いているビット演算部131におけるビット演算を1−bit要素8x8の行列、つまり64ビットの空間から選択しなければいけないため、その選択が難しくなってしまう。すなわち、非線形変換では、基本的に非線形変換対象の入力8ビットから、各入力8ビットに対応する非線形変換結果としての出力8ビットを偏りのない出力が得られる構成とすることが要求され、中段のビット演算部131,132において適用する行列を、この要求を満足する行列とするための選択が困難になるという問題がある。
【0093】
(c)Whirlpool、
また、WhirlpoolのS−boxは図11のような構造をしている。S−box[S4]141、144,S−box[S4]の逆変換を実行するS−box[S4−1]142,145と、S−box[S4]143を用い、排他論理和演算部151〜153によって、これらのS−boxを結合した構成を持つ。
【0094】
この構造では、必要な小さなS−boxの数が5個と多く、さらにクリティカルパスが長い。すなわち、入力から最終出力に至るまでには3つの小さなS−boxを通過しなければいけない構成であり、実装性能があまり高くないという問題がある。
【0095】
(d)FOX
さらに、FOXのS−boxは図12に示す構成をしている。3種類の4ビット入出力S−box161〜163と、4ビット入出力OR回路171,172を用い、これらを排他的論理和演算部によって接続した構成を持つ。
【0096】
この構造では、必要な小さなS−boxの数は3個と少ないが、全体的に排他的論理和演算部(XOR)の数が多く、クリティカルパスも長い。入力から最終出力を得るためには3つの小さなS−boxを通過しなければいけない。このため、実装性能があまり高くないという問題がある。
【0097】
(3−3)本発明に係る複数の小型Sボックスの組み合わせからなる非線形変換処理構成
次に、本発明に係る複数の小型Sボックスの組み合わせからなる非線形変換処理構成について説明する。上述したように、複数の小型Sボックスの組み合わせからなる非線形変換処理構成については、すでに複数のタイプが提案されているが、それぞれクリティカルパスが長いという問題点や、線形変換行列の設定の困難性等の問題点を有している。
【0098】
まず、以下の本発明に従った非線形変換処理構成の理解に必要となる以下の用語について説明する。
(a)分岐数および最適拡散層
(b)拡大体上の行列演算
【0099】
(a)分岐数および最適拡散層
まず、分岐数、および最適拡散変換(Optimal Diffusion Mappings)について説明する。
【0100】
n×aビットデータからn×bビットデータへの写像
θ:{0,1}na→{0,1}nb
に対して分岐数Bn(θ)を次のように定義する。
【数7】

【0101】
ただし、minα≠0{Xα}はα≠0を満たすすべてのXαのうちの最小値を表すものとし、hw(Y)はビット列Yをnビットごとに区切って表したときにnビットのデータすべてが0ではない(非ゼロ)要素の数を返す関数とする。このとき、分岐数B(θ)がb+1であるような写像θを最適拡散変換(Optimal Diffusion Mappings)と定義する。また、以降ではODMを満たす行列をMDS(Maximum Distance Separable)行列と定義する。
【0102】
(b)拡大体上の行列演算
基礎体GF(2)上で定義されるn次の既約多項式p(x)によって作られる拡大体GF(2)上で行われる行列演算を拡大体上の行列演算と呼ぶ。
例えば、
【数8】

上記の行列演算を考える。
上記の行列演算において、出力y,yはそれぞれ、
=a0,0+a0,1
=a1,0+a1,1
と表現される。
【0103】
このときa0,0,xなどといった変数を全て、拡大体GF(2)上の元だと考え、演算を全て拡大体GF(2)上で行う。このような方法で行列演算を行う手法を拡大体上の行列演算と呼ぶ。
【0104】
本発明に係る非線形変換処理構成は、上述した従来の複数の小型Sボックスの組み合わせからなる非線形変換処理構成における問題点、すなわち、クリティカルパスが長いという問題点や、線形変換行列の設定の困難性等の問題点を解決した非線形変換処理構成を実現する。
【0105】
本発明の構成では、拡大体GF(2)上で簡単な表現を行うことが難しく、かつ高い実装性能(特にハードウェア)を持つn−bit入出力の全単射S−boxを効率よく生成するために、小さなS−boxの組み合わせ位置に分岐数の高い小さなS−boxの入出力サイズと同サイズの要素を持つ行列演算を組み合わせて、大きなS−boxとしての非線形変換処理構成を実現するものである。具体的に分岐数の高い行列演算というのは,m×m行列に対して、m以上の分岐数を持つ行列を表す。
【0106】
分岐数の高い行列として、例えば、前述した最適拡散変換を実行するMDS(Maximum Distance Separable)行列を選択する。MDS行列は、行列を構成する任意の小行列が正則行列となる行列である。なお、正則行列は、逆行列を持つ行列であり、行列をAとし、逆行列をA−1とすると、
AA−1=A−1A=E、
ただしEは単位行列、
上記式が成立する逆行列A−1を持つ行列Aが正則行列である。
【0107】
本発明の一実施例に係る非線形変換処理構成としてのnビット入出力S−boxの構成例を図13に示す。図13に示す構成は、4つのn/2ビット入出力の全単射S−box201〜204と、拡大体GF(2n/2)において定義される2×2MDS(Maximum Distance Separable)行列からなる線形変換処理部211から構成されるnビット入出力の非線形変換処理を実行する構成である。
【0108】
入力nビットは、上位n/2ビット、下位n/2ビットずつ、それぞれn/2ビット入出力の全単射S−box[S]201,S−box[S]202に入力され、それぞれのS−boxにおいて非線形変換処理がなされた後、拡大体GF(2n/2)において定義される2×2MDS行列からなる線形変換処理部211に入力されMDS行列に基づく線形変換処理がなされた後、線形変換結果のnビットの上位n/2ビット、下位n/2ビットずつ、それぞれn/2ビット入出力の全単射S−box[S]203,S−box[S]204に入力され、それぞれのS−boxにおいて非線形変換処理がなされて出力結果としてのnビットを得る構成となっている。
【0109】
図13に示す線形変換処理部211において適用されるMDS行列のように分岐数の高い拡散変換行列を利用すると、前段の小さなS−box[S]201,S−box[S]202の出力が後段の小さなS−box[S]203,S−box[S]204の入力にバランスよく配置されることが保証されるため、全体として特性の良い大きなS−boxが生成できる。また、線形変換処理部211において適用される拡散変換行列に相当するMDS行列の要素のサイズは小さなS−boxの入出力サイズ(n/2)によって一意に決まるため、大きなS−boxの入出力サイズ(n)が大きくなったとしても選択できる行列の空間は限られるため、容易にその行列の分岐数をチェックすることができる。
【0110】
図13に示す構成における線形変換処理部211において適用される拡散変換行列としてのMDS行列の要素のサイズはn/2ビットであり、2×2の行列であるため、要素の数は4つとなり、全行列を調べたとしてもその数は、2n/2×4種程度であるため、容易に全行列を調べることが可能である。ただし、行列演算はGF(2)上で定義されるn次の既約多項式p(x)によって作られる拡大体GF(2)上の行列演算とする。
【0111】
この手法でS−boxを生成すると、簡易な代数表現が可能なのは、図13に示す構成中の入出力サイズn/2ビットの小さなS−box201〜204に限られると考えられるため、拡大体GF(2)上での要素はランダムのように見える。よって、GF(2)上で単純な代数的表現を行うことは難しいと考えることができる。また、拡大体上でのべき乗演算のように均一的な拡散はしないことが期待される。
【0112】
さらに、行列を適切に選択すれば、簡易な演算と短いパスで構成することが可能なため、n−bitでランダムに生成されたS−boxや、従来の小さなS−boxを組み合わせて構成したS−boxよりもより実装効率は高いと言える。
【0113】
図13に示す構成を適用した具体的な8ビット入出力の非線形変換を実行するS−boxの構成例について、図14〜図17を参照して説明する。
【0114】
図14(a)、図15(a)に示す構成は同一であり、図13に示す構成を適用した具体的な8ビット入出力の非線形変換を実行するS−boxの一構成例としての8ビットS−box300の構成を示す図である。図14(b)は、図14(a)に示す8ビットS−box300の構成要素である4つの4ビット入出力S−box301〜304の変換テーブルを示している。このテーブルで用いている数値は16進数である。入力:x=0〜F(16進数)に対する各S−box301〜304の出力値を示すテーブルである。また、図15(c)には、図15(a)(=図14(a))に示す線形変換処理部311として分岐数の高い拡散変換、具体的には最適拡散変換[ODM]であるMDS行列(matrix)311を使用した具体例を示している。
【0115】
図14(a)に示す8ビット入出力の非線形変換を実行するS−boxの処理について説明する。まず、8ビットS−box300の入力であるx(8−bit)は1/2、つまり4−bitごとにx[0],x[1]に分割される。次にx[0]は4−bit入出力のS−box[S4]301へ入力され、x[1]は4−bit入出力のS−box[S4]302へそれぞれ入力され、各S−box301,302における非線形変換結果としての出力w[0],w[1]を得る。S−box[S4]301、S−box[S4]302は、ランダムに選択した4ビットS−boxであり、非線形変換は、図14(b)のテーブルに従った変換処理として実行される。
【0116】
なお、S−box[S4]301、S−box[S4]302は、最大差分確率が十分低いことや最大線形確率が十分低いことなどS−boxが満たすべきあらゆる性質を満たすようなS−boxである。また、これらのS−boxは4−bit入出力なので、このような性質を満たすS−boxを探索することが現実的に可能である。
【0117】
S−box[S4]301、S−box[S4]302の出力w[0],w[1]は、最適拡散変換[ODM]であるMDS行列(matrix)による線形変換を実行する線形変換処理部311に入力され、MDS行列(matrix)による線形変換結果として、z[0],z[1]を出力する。線形変換処理部311では、GF(2)上で定義される4次の既約多項式:p(x)=x+x+1によって作られる拡大体GF(2)上の行列演算による線形変換が実行され、z[0],z[1]を出力する。線形変換処理部311としてのMDS行列(matrix)は、GF(2)上の4次の既約多項式で定義される拡大体GF(2)上の元を要素として持つ2×2の4要素からなる行列に基づく線形変換処理を実行する。
【0118】
行列演算の具体的処理を図15(c)に示す。図15(c)に示す2×2のMDS行列を適用した場合、入力w[0],w[1]に基づいて、出力z[0],z[1]は、以下のように算出される。
z[0]=w[0](XOR)w[1]×2
z[1]=w[0]×2(XOR)w[1]
【0119】
最適拡散変換[ODM]であるMDS行列(matrix)による線形変換結果として得られた8ビットデータ中の上位4ビットz[0]は4−bit入出力のS−box[S4]303へ、下位4ビットz[1]は4−bit入出力のS−box[S4]304へそれぞれ入力され、これらの4ビットS−boxにおいて非線形変換が実行され、出力y[0],y[1]を得る。S−box[S4]303、S−box[S4]304は、S−box[S4]301、S−box[S4]302と同様,それぞれランダムに選択した特性のよい4ビットS−boxであり、図14(b)に示すテーブルに従ったデータ変換を実行する。最終的に、S−box[S4]303、S−box[S4]304の出力する4ビットデータy[0]とy[1]を結合した8ビットデータを、8ビット入出のS−box300の最終的な出力y(8−bit)とする。
【0120】
図16(a)に示す構成は、図14(a)に示す構成と同様、図13に示す構成を適用した具体的な8ビット入出力の非線形変換を実行する8ビットS−box320の一構成例であり、図16(b)は、図16(a)に示す8ビットS−box320の構成要素である4つの4ビット入出力S−box321〜324の変換テーブルを示している。このテーブルで用いている数値は16進数である。入力:x=0〜F(16進数)に対する各S−box321〜324の出力値を示すテーブルである。また、図17(c)には、図17(a)(=図16(a))に示す線形変換処理部331として最適拡散変換[ODM]であるMDS行列(matrix)331を用いた具体例を示している。
【0121】
図16、図17に示す構成例は、
4ビット入出力S−box321〜324が、図16(b)に示すテーブルに従った非線形変換を実行すること、
線形変換処理部331が、図17(c)に従った変換処理を行なうこと、
これらの処理が異なっている。
【0122】
線形変換処理部331では、GF(2)上で定義される4次の既約多項式:p(x)=x+x+1によって作られる拡大体GF(2)上の行列演算による線形変換が実行され、z[0],z[1]を出力する。線形変換処理部311としてのMDS行列(matrix)は、4次の既約多項式で定義される2の拡大体GF(2)上の元を要素として持つ2×2の4要素からなる行列に基づく線形変換処理を実行する。
【0123】
行列演算の具体的処理を図17(c)に示す。図17(c)に示す2×2のMDS行列を適用した場合、入力w[0],w[1]に基づいて、出力z[0],z[1]は、以下のように算出される。
z[0]=w[0](XOR)w[1]
z[1]=w[0](XOR)w[1]×2
【0124】
図14〜図17に示す例は、8ビット入出力方の非線形変換処理を実行するSボックスであり、いずれも線形変換処理部311,331において適用されるMDS行列の要素のサイズはn/2ビットであり、2×2の行列であるため、要素の数は4つとなり、全行列を調べたとしてもその数は、2n/2×4種程度であるため、容易に全行列を調べることが可能であり、前述したように、この手法でS−boxを生成すると、簡易な代数表現が可能なのは小さなS−boxに限られると考えられるため、拡大体GF(2)上での要素はランダムのように見え、GF(2)上で単純な代数的表現を行うことは難しいと考えることができる。また、拡大体上でのべき乗演算のように均一的な拡散はしない。また、入力から出力を得るためのパスには小さなS−boxが2つあるのみであり、行列を適切に選択すれば、簡易な演算と短いパスで構成することが可能なため、n−bitでランダムに生成されたS−boxや、従来の小さなS−boxを組み合わせて構成したS−boxよりもより実装効率は高くなる。
【0125】
図13〜図17に示した構成例では、入力nビットを2分割して上位n/2ビット、下位n/2ビットずつを、それぞれn/2ビット入出力のS−boxに入力する構成であり、また、線形変換処理部からの出力nビットの上位n/2ビット、下位n/2ビットずつ、それぞれn/2ビット入出力のS−box[S]に入力して非線形変換処理結果を得る構成であるが、入力ビットを分割して入力する小さなS−boxの数は、2に限らず、この他の数でもよい。図18に、入力nビットを4分割してn/4ビットずつの非線形変換処理を行なう小さなn/4ビット入出力S−boxを利用したnビットS−box400の構成例を示す。
【0126】
図18に示すnビットS−box400の構成は、8つのn/4ビット入出力の全単射S−box401〜408と、分岐数の高い拡散変換として最適拡散変換[ODM]である拡大体GF(2n/4)において定義される4×4MDS(Maximum Distance Separable)行列からなる線形変換処理部421から構成されるnビット入出力の非線形変換処理を実行する構成である。
【0127】
入力nビットは、n/4ビットずつ分割されて、それぞれn/4ビット入出力の全単射S−box[S]401,S−box[S]402,S−box[S]403,S−box[S]404に入力され、それぞれのS−boxにおいて非線形変換処理がなされた後、拡大体GF(2n/4)において定義される4×4MDS行列からなる線形変換処理部421に入力されMDS行列に基づく線形変換処理がなされた後、線形変換結果のnビットのn/4ビットずつが、それぞれn/4ビット入出力のS−box[S]405,S−box[S]406,S−box[S]407,S−box[S]408に入力され、それぞれのS−boxにおいて非線形変換処理がなされて出力結果としてのnビットを得る構成となっている。
【0128】
図18に示す線形変換処理部421において適用される拡散変換も最適拡散変換[ODM]であるMDS行列であり、前段の小さな4つのS−boxの出力が後段の小さなS−boxの入力にバランスよく配置されることが保証されるため、全体として特性の良い大きなS−boxが生成できる。
【0129】
上述した本発明に従った非線形変換処理を実行するSボックスによって構成されるデータ変換装置の構成について要約する。本発明のデータ変換装置は、以下のような構成を有することが特徴である。すなわち、
入力データを分割した分割データ各々の非線形変換処理を実行する複数の小型非線形変換部(小さなSボックス)からなる第1段非線形変換部と、
第1段非線形変換部を構成する複数の小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、
線形変換部の出力データを分割した分割データ各々の非線形変換処理を実行する複数の小型非線形変換部(小さなSボックス)からなる第2段非線形変換部とを有し、
線形変換部は、入力データのビットサイズと同サイズの要素を持つ行列演算によるデータ変換を実行する構成であり、行列がm×m行列である場合、少なくともm以上の分岐数を有する高分岐数の行列を適用したデータ変換処理を実行する構成である。
【0130】
具体的には、入力データがnビットデータである場合、第1非線形変換部は、入力データであるnビットデータの分割データであるn/kビットを各々入力して非線形変換処理結果としてのn/kビットを出力するk個の小型非線形変換部から構成され、線形変換部は、k個の小型非線形変換部の出力する総計nビットのデータを入力して、高分岐数の行列を適用したデータ変換処理によりnビットの出力を生成する構成であり、第2非線形変換部は、線形変換部から出力されるnビットデータの分割データであるn/kビットを各々入力して非線形変換処理結果としてのn/kビットを出力するk個の小型非線形変換部を有する構成である。
【0131】
ここで、線形変換部は、分岐数がm以上である拡散変換、例えば最適拡散変換ODM(Optimal Diffusion Mappings)を実行するMDS(Maximum Distance Separable)行列を適用したデータ変換処理を実行する構成であり、さらに、具体的には、入力データがnビットデータである場合、GF(2)上で定義されるn次の既約多項式p(x)によって定義される拡大体GF(2)上の行列を適用したデータ変換処理を実行する構成である。
【0132】
なお、本発明に係るデータ変換装置は、先に説明したような共通鍵ブロック暗号処理を実行する装置として具現化可能であり、例えば、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの構造を適用した暗号処理を行なう装置における非線形変換部に適用可能である。なお、本発明の構成は、暗号処理以外にもハッシュ関数など、非線形変換を行う演算装置において適用可能である。
【0133】
[4.暗号処理装置の構成例]
最後に、上述した実施例に従ったデータ変換処理を実行する装置例として暗号処理装置としてのICモジュール700の構成例を図19に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図19に示すICモジュール700は、これら様々な機器に構成することが可能である。
【0134】
図19に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【0135】
暗号処理部703は、例えば上述した各種の暗号処理構成、すなわち、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの各構成のいずれかの構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理、さらに、ハッシュ関数を適用した演算処理などを実行する。
【0136】
また、暗号処理部703は、上述した実施例に対応した非線形変換処理を実行する構成、すなわち、nビット入出力S−boxの構成として、nより小さな入出力ビットの非線形変換を実行する小さなS−boxによる非線形変換を実行し、その結果を、MDS行列などの分岐数の高い拡散変換行列に入力して行列を適用した変換を実行し、その変換結果をさらに、nより小さな入出力ビットの非線形変換を実行する小さなS−boxを適用して非線形変換を実行させてnビットの非線形変換結果を得る非線形変換処理を実行する構成を持つ。
【0137】
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。
【0138】
乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【0139】
送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【0140】
このICモジュール700は、上述した実施例に従った非線形変換処理部としてのS−boxを適用した処理、すなわち、図13〜図18を参照して説明した構成を持つS−boxを適用した非線形変換処理を実行する構成を持つ。
【0141】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【0142】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【0143】
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【0144】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0145】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0146】
上述したように、本発明の一実施例の構成によれば、例えば、共通鍵ブロック暗号を適用した復号処理などにおいて実行される非線形変換処理を、複数の小さなSボックス(S−box)による非線形変換を実行する第1段の非線形変換部と、第1段非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、線形変換部の出力データを分割した分割データ各々の非線形変換処理を実行する複数の小型非線形変換部からなる第2段非線形変換部とを適用したデータ変換を行う構成とし、線形変換部では、最適拡散変換を行う行列を適用したデータ変換を実行する構成としたので、データの入力から出力に至るクリティカルパスを過大にすることなく、適切なデータ拡散を実現して、各種の暗号攻撃に対する耐性の強い安全性の高いデータ変換を実現することができる。
【符号の説明】
【0147】
10 共通鍵ブロック暗号処理部E
11 鍵スケジューリング部
12 暗号処理部
20 ラウンド関数実行部
21 排他的論理和演算部
22 非線形変換処理部
23 線形変換処理部
30 F関数部
31 排他的論理和演算部
32 非線形変換処理部
33 線形変換処理部
34 排他的論理和演算部
41,42 F関数部
50 非線形変換処理部
51 Sボックス
101〜103 Sボックス(S−box)
111〜113 排他的論理和演算部
121〜124 Sボックス(S−box)
131 ビット演算部
141〜145 Sボックス(S−box)
151〜153 排他的論理和演算部
161〜163 Sボックス(S−box)
171,172 OR回路
200 Sボックス(S−box)
201〜204 Sボックス(S−box)
211 線形変換処理部
200 Sボックス(S−box)
301〜304 Sボックス(S−box)
311 線形変換処理部
320 Sボックス(S−box)
321〜324 Sボックス(S−box)
331 線形変換処理部
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 暗号処理部
704 乱数発生器
705 送受信部

【特許請求の範囲】
【請求項1】
F関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置であって、
F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割部と、
前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算部と、
前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割部と、
前記第2データ分割部で分割されたデータ各々の非線形処理を実行する複数の小型非線形変換部からなる第1非線形変換部と、
前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、
前記線形変換部の出力データを分割する第3データ分割部と、
前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する複数の小型非線形変換部からなる第2非線形変換部と、
を有する復号処理装置。
【請求項2】
前記線形変換部は、
前記第2データ分割部で分割されたデータのビットサイズと同サイズの要素を持つ行列演算によるデータ変換を実行する構成であり、行列がm×mである場合、少なくともm以上の分岐数を有する高分岐数の行列を適用したデータ変換処理を実行する構成である、請求項1に記載の復号処理装置。
【請求項3】
前記鍵加算部は排他的論理和演算を行う、請求項1または2に記載の復号処理装置。
【請求項4】
前記入力データがnビットデータである場合、
前記第1非線形変換部は、入力データであるnビットデータの分割データであるn/kビットを各々入力して非線形変換処理結果としてのn/kビットを出力するk個の小型非線形変換部から構成され、
前記線形変換部は、前記k個の小型非線形変換部の出力する総計nビットのデータを入力して、高分岐数の行列を適用したデータ変換処理によりnビットの出力を生成する構成であり、
前記第2非線形変換部は、前記線形変換部から出力されるnビットデータの分割データであるn/kビットを各々入力して非線形変換処理結果としてのn/kビットを出力するk個の小型非線形変換部を有する構成であることを特徴とする請求項1に記載の復号処理装置。
【請求項5】
前記線形変換部は、最適拡散変換(ODM(Optimal Diffusion Mappings))処理を実行するMDS(Maximum Distance Separable)行列を適用したデータ変換処理を実行する構成であることを特徴とする請求項1に記載の復号処理装置。
【請求項6】
前記線形変換部は、
前記入力データがnビットデータである場合、
GF(2)上で定義されるn次の既約多項式p(x)によって定義される拡大体GF(2)上の行列を適用したデータ変換処理を実行する構成であることを特徴とする請求項1に記載の復号処理装置。
【請求項7】
前記復号処理装置は、
nビット入出力の非線形変換処理を実行するSボックスを有し、
前記Sボックスを構成する前記第1非線形変換部と、前記第2非線形変換部に含まれる複数の小型非線形変換部は、nビットより少ないビット数の非線形変換処理を実行する小型のSボックスによって構成されていることを特徴とする請求項1に記載の復号処理装置。
【請求項8】
前記復号処理装置は、
非線形変換処理を伴う復号処理を実行する構成であることを特徴とする請求項1〜7いずれかに記載の復号処理装置。
【請求項9】
前記復号処理は、共通鍵ブロック暗号を適用した復号処理であることを特徴とする請求項8に記載の復号処理装置。
【請求項10】
プログラムを記憶するメモリと、
前記プログラムを実行するプロセッサと、
前記プロセッサの制御下でF関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理プログラムを実行する復号処理部とを備える情報処理装置であって、
前記復号処理部は、
F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割部と、
前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算部と、
前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割部と、
前記第2データ分割部で分割されたデータ各々の非線形処理を実行する複数の小型非線形変換部からなる第1非線形変換部と、
前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換部と、
前記線形変換部の出力データを分割する第3データ分割部と、
前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する複数の小型非線形変換部からなる第2非線形変換部と、
を有する情報処理装置。
【請求項11】
前記線形変換部は、
前記第2データ分割部で分割されたデータのビットサイズと同サイズの要素を持つ行列演算によるデータ変換を実行する構成であり、行列がm×mである場合、少なくともm以上の分岐数を有する高分岐数の行列を適用したデータ変換処理を実行する構成である、請求項10に記載の情報処理装置。
【請求項12】
前記鍵加算部は排他的論理和演算を行う、請求項10または11に記載の情報処理装置。
【請求項13】
F関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置において実行する復号処理方法であって、
第1データ分割部において、F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割ステップと、
鍵加算部において、前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算ステップと、
第2データ分割部において、前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割ステップと、
複数の小型非線形変換部からなる第1非線形変換部において、前記第2データ分割部で分割されたデータ各々の非線形処理を実行する第1非線形変換ステップと、
線形変換部において、前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換ステップと、
第3データ分割部において、前記線形変換部の出力データを分割する第3データ分割ステップと、
複数の小型非線形変換部からなる第2非線形変換部において、前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する第2非線形変換ステップと、
を実行する復号処理方法。
【請求項14】
F関数を複数ラウンド繰り返し実行する拡張Feistel型共通鍵ブロック暗号を適用した復号処理装置において復号処理を実行させるコンピュータ・プログラムであって、
第1データ分割部において、F関数の各ラウンドのラウンド鍵のビット数と同じビット数を有するように暗号文データを分割する第1データ分割ステップと、
鍵加算部において、前記第1データ分割部で分割されたデータに前記ラウンド鍵の鍵加算を実行する鍵加算ステップと、
第2データ分割部において、前記鍵加算部で鍵加算された前記分割データをさらに分割する第2データ分割ステップと、
複数の小型非線形変換部からなる第1非線形変換部において、前記第2データ分割部で分割されたデータ各々の非線形処理を実行する第1非線形変換ステップと、
線形変換部において、前記第1非線形変換部を構成する小型非線形変換部からの出力をすべて入力して線形変換を実行する線形変換ステップと、
第3データ分割部において、前記線形変換部の出力データを分割する第3データ分割ステップと、
複数の小型非線形変換部からなる第2非線形変換部において、前記第3データ分割部で分割したデータ各々の非線形変換を前記線形変換の直後に実行する第2非線形変換ステップと、
を実行させるコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2012−143011(P2012−143011A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2012−102624(P2012−102624)
【出願日】平成24年4月27日(2012.4.27)
【分割の表示】特願2006−238227(P2006−238227)の分割
【原出願日】平成18年9月1日(2006.9.1)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】