JP6292107B2 - 暗号処理装置、および暗号処理方法、並びにプログラム - Google Patents
暗号処理装置、および暗号処理方法、並びにプログラム Download PDFInfo
- Publication number
- JP6292107B2 JP6292107B2 JP2014242845A JP2014242845A JP6292107B2 JP 6292107 B2 JP6292107 B2 JP 6292107B2 JP 2014242845 A JP2014242845 A JP 2014242845A JP 2014242845 A JP2014242845 A JP 2014242845A JP 6292107 B2 JP6292107 B2 JP 6292107B2
- Authority
- JP
- Japan
- Prior art keywords
- round
- data
- unit
- processing
- replacement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Description
さらに、暗号処理装置に求められる要素として、高速処理性能や、実装性能、すなわち過度な複雑性を持たないハードウェア実装やソフトウェア実装が可能であることが求められる。
入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、
前記暗号処理部は、
入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する初期置換部と、
前記初期置換部の出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行部と、
前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換部を有し、
前記メイン処理関数実行部は、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する構成を有する暗号処理装置にある。
暗号処理装置において実行する暗号処理方法であり、
暗号処理部が、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行し、
前記暗号処理ステップは、
初期置換部が、入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する初期置換処理ステップと、
メイン処理関数実行部が、前記初期置換部が出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行ステップと、
最終置換部が、前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換処理ステップを有し、
前記メイン処理関数実行ステップにおいては、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する処理を実行する暗号処理方法にある。
暗号処理装置において暗号処理を実行させるプログラムであり、
暗号処理部に、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行させ、
前記プログラムは、前記暗号処理ステップにおいて、
初期置換部に、入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成させ、
メイン処理関数実行部に、前記初期置換部が出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行させ、
最終置換部に、前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成させ、
前記メイン処理関数実行ステップにおいては、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する処理を実行させるプログラムにある。
具体的には、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有する。暗号処理部は、各ラインの入力データの再分割データ単位の置換処理を実行する初期置換部と、初期置換部の出力に対してラウンド演算を繰り返し実行するメイン処理関数実行部と、メイン処理関数実行部の出力データに対する再分割データ単位の置換を実行する最終置換部を有する。メイン処理関数実行部は、前段のラウンド関数実行部の出力の置換処理を行なわず後段のラウンド関数実行部に出力する。
本構成により、安全性が高く、かつ高速処理の可能な暗号処理構成が実現される。
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、また付加的な効果があってもよい。
1.共通鍵ブロック暗号の概要
2.Feistel構造および拡張Feistel構造(GFN)の具体的構成例について
3.拡散(diffusion)特性の概要について
4.拡散(diffusion)特性を向上させるラウンド間置換(RP:RoundP Permutation)を適用した構成例について
5.初期置換と最終置換を設定してラウンド間置換を省略し高速処理を可能とした構成例について
6.暗号処理装置の構成例について
7.本開示の構成のまとめ
まず、共通鍵ブロック暗号の概要について説明する。
(1−1.共通鍵ブロック暗号)
ここでは共通鍵ブロック暗号(以下ではブロック暗号と呼ぶ場合がある)は以下に定義するものを指すものとする。
ブロック暗号は入力として平文Pと鍵Kを取り、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼び、例えばブロックサイズ=nとする。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、あらかじめひとつに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。
平文P:nビット
暗号文C:nビット
鍵K:kビット
暗号化アルゴリズムEに対応する復号アルゴリズムDは暗号化アルゴリズムEの逆関数E−1と定義でき、入力として暗号文Cと鍵Kを受け取り,平文Pを出力する。図2に図1に示した暗号アルゴリズムEに対応する復号アルゴリズムDの図を示す。
ブロック暗号は2つの部分に分けて考えることができる。ひとつは秘密鍵Kを入力とし、ある定められたステップにより暗号処理部の各ラウンドで適用するラウンド鍵を出力する「鍵スケジュール部」と、もうひとつは平文Pと鍵スケジュール部からラウンド鍵を入力してデータ変換を行い暗号文Cを出力する「暗号処理部」である。
2つの部分の関係は図3に示される。
なお、暗号処理部は、暗号文Cを入力して平文Pを出力する復号処理も実行可能な構成である場合が多い。この場合も、鍵スケジュール部から供給されるラウンド鍵を適用した復号処理を実行する。
2つの部分の関係は図3に示される。
以下の実施例において用いる暗号処理部はラウンド関数という処理単位に分割できるものとする。ラウンド関数は入力データに対して所定のデータ変換を施し、変換データを出力する。ラウンド関数に対する入力データは、例えば暗号化途中のnビットデータである。あるラウンドにおけるラウンド関数の出力が次のラウンドの入力として供給される構成となる。また、ラウンド関数の一構成として、鍵スケジュール部から出力された鍵に基づいて生成されるラウンド鍵との演算構成が含まれる。具体的には暗号化途中のnビットデータとラウンド鍵との排他的論理和演算が行われる。
またラウンド関数の総数は総ラウンド数と呼ばれ、暗号アルゴリズムごとにあらかじめ定められている値である。
ブロック暗号アルゴリズムによってラウンド関数はさまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造(structure)によって分類できる。代表的な構造としてここではSPN(Substitution−Permutation Network)構造、Feistel構造(Basic Feistel Network)、拡張Feistel構造(GFN:General Feistel Network)を例示する。
nビットの入力データすべてに対して、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理などが適用される構成。各演算の順番は特に決まっていない。図5にSPN構造のラウンド関数の例を示す。線形変換部をP層(Permutation−layer)と呼ぶこともある。
nビットの入力データはn/2ビットの2つのデータに分割される。うち片方のデータとラウンド鍵を入力として持つ関数(F関数)が適用され、出力がもう片方のデータに排他的論理和される。そののちデータの左右を入れ替えたものを出力データとする。F関数の内部構成にもさまざまなタイプのものがあるが、基本的にはSPN構造同様にラウンド鍵データとの排他的論理和演算、非線形演算、線形変換の組み合わせで実現される。図6にFeistel構造のラウンド関数の一例を示す。
拡張Feistel構造(GFN:General Feistel Network)はFeistel構造(Basic Feistel Network)ではデータ分割数が2であったものを,3以上に分割する形に拡張したものである。分割数をdとすると、dによってさまざまな拡張Feistel構造を定義することができる。F関数の入出力のサイズが相対的に小さくなるため、小型実装に向いているとされる。図7にd=4でかつ、ひとつのラウンド内に2つのF関数が並列に適用される場合の拡張Feistel構造の一例を示す。また,図8にd=8でかつ,ひとつのラウンド内に1つのF関数が適用される場合の拡張Feistel構造の一例を示す。
非線形変換部は、入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために対象データを複数の単位に分割し、それぞれに対して非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとして、それらをsビットずつのm個のデータに分割して、それぞれに対してsビット入出力を持つ非線形変換を行う構成である。それらのsビット単位の非線形変換実行部をSボックス(S−box)と呼ぶ。Sボックス(S−box)の例を図9に示す。
線形変換部はその性質上、行列として定義することが可能である。行列の要素は拡大体GF(28)の体の要素やGF(2)の要素など、一般的にはさまざまな表現ができる。図10にmsビット入出力をもち、GF(2s)の上で定義されるm×mの行列により定義される線形変換部の例を示す。
次に、Feistel構造および拡張Feistel構造(GFN)の具体的構成例について説明する。
図11〜図14に以下の各構成例を示す。
(a)図11:SPN型のF関数を持つFeistel構造(Basic Feistel Network)
(b)図12:SPS型のF関数を持つFeistel構造(Basic Feistel Network)
(c)図13:SPS型のF関数を持つFeistel構造(Basic Feistel Network)であり、ラウンド鍵の入力位置を変更した構成
(d)図14:分割数d=4とした拡張Feistel構造(GFN:General Feistel Network)
暗号処理対象となるnビットの平文Pは、各々が(n/2)ビットのP[0]とP[1]の2つのデータに分割される。
データP[0]にラウンド鍵RKが入力されるラウンド関数Fを適用し、その結果と、データP[1]とを、ビット単位で排他的論理和(XOR)演算を実行する。
この結果を次のラウンドの左入力とし、P[0]を右入力とする。以降規定の回数(r回)ラウンド関数を繰り返し適用し、最終出力Cを得る。この構成では全てのラウンドでラウンド関数(F関数)は同じものを用いる。
各sビットデータを、それぞれx1、x2、・・・、xmとする。
X=x1||x2||・・・||xm
である。
Z=z1||z2||・・・||zm
である。
Zは、線形変換部を構成するm×m行列Mに入力され、ここで、行列Mを適用した行列演算による線形変換処理が実行される。
この線形変換結果が、(n/2)ビットの最終出力Yとなる。
Y=y1||y2||・・・||ym
である。
暗号処理対象となるnビットの平文Pは、各々が(n/2)ビットのP[0]とP[1]の2つのデータに分割される。
データP[0]にラウンド鍵RKが入力されるラウンド関数Fを適用し、その結果と、データP[1]とを、ビット単位で排他的論理和(XOR)演算を実行する。
この結果を次のラウンドの左入力とし、P[0]を右入力とする。以降規定の回数(r回)ラウンド関数を繰り返し適用し、最終出力Cを得る。この構成では全てのラウンドでラウンド関数(F関数)は同じものを用いる。
各sビットデータを、それぞれx1、x2、・・・、xmとする。
X=x1||x2||・・・||xm
である。
Z=z1||z2||・・・||zm
である。
Zは、線形変換部を構成するm×m行列Mに入力され、ここで、行列Mを適用した行列演算による線形変換処理が実行される。
各sビットデータが、それぞれsビット入出力の非線形変換部S(Sボックス)に入力される。非線形変換部Sの出力の連結データが(n/2)ビットの最終出力Yとなる。
Y=y1||y2||・・・||ym
である。
暗号処理対象となるnビットの平文Pは、各々が(n/2)ビットのP[0]とP[1]の2つのデータに分割される。
データP[0]にラウンド鍵RKが入力されないラウンド関数Fを適用し、その結果と、データP[1]と、ラウンド鍵を、ビット単位で排他的論理和(XOR)演算を実行する。
この結果を次のラウンドの左入力とし、P[0]を右入力とする。以降規定の回数(r回)ラウンド関数を繰り返し適用し、最終出力Cを得る。この構成では全てのラウンドでラウンド関数(F関数)は同じものを用いる。
各sビットデータを、それぞれx1、x2、・・・、xmとする。
X=x1||x2||・・・||xm
である。
Z=z1||z2||・・・||zm
である。
Zは、線形変換部を構成するm×m行列Mに入力され、ここで、行列Mを適用した行列演算による線形変換処理が実行される。
各sビットデータが、それぞれsビット入出力の非線形変換部S(Sボックス)に入力される。非線形変換部Sの出力の連結データが(n/2)ビットの最終出力Yとなる。
Y=y1||y2||・・・||ym
である。
この構造はFeistel構造(Basic Feistel Network)を拡張したものである。図11〜図13を参照して説明したFeistel構造(Basic Feistel Network)では暗号処理対象となるデータ系列を1/2に分割するが、拡張Feistel構造(GFN)では任意の数(ここでは4)に分割する。
F関数の内部構造としては様々な構造を利用可能であり、例えば、前述した図11〜13に示すF関数の構成等を利用することができる。
本開示の暗号処理の説明の前に拡散(diffusion)特性の概要について説明する。
ブロック暗号の安全性を評価する指標のひとつとしてdiffusion(拡散)特性と呼ばれるものがある。この特性は入力データの変化を出力データに波及させる(拡散させる)特性と考えることができ、安全なブロック暗号にはこのような入力データの変化の影響をできるだけ速く出力データに伝えることが求められる。
ある出力ビットを入力ビットの関係式として記述して以下の条件を満たす場合,その出力ビットは「diffusion状態」になっていると定義する。
(条件1)全入力ビットが関係式に含まれる。
(条件2)全入力ビットが少なくとも1度はラウンド関数(F関数)を通過している。
全出力ビットが拡散(diffusion)状態になっていることを「全拡散(full diffusion)状態」と定義する。
この全拡散(full diffusion)状態を満たすために最低限必要なラウンド数(繰り返し数)を「全拡散(full diffusion)ラウンド数」と定義する。
Xi+2 1=F(RKi+1 1,Xi+1 1)(+)Xi+1 2=F(RKi+1 1,F(RKi 1,Xi 1)(+)Xi 2)(+)Xi 1
Xi+3 1=F(RKi+2 1,Xi+2 1)(+)Xi+2 2=F(RKi+2 1,F(RKi+1 1,Xi+1 1)(+)Xi+1 2)(+)Xi+2 2
=F(RKi+2 1,F(RKi+1 1,F(RKi 1,Xi 1)(+)Xi 2 )(+)Xi 1)(+)F(RKi 1,Xi 1)(+)Xi 2
Xi+2 2=Xi+1 1=F(RKi 1,Xi 1)(+)Xi 2
Xi+3 2=Xi+2 1=F(RKi+1 1,Xi+1 1)(+)Xi+1 2=F(RKi+1 1,F(RKi 1,Xi 1)(+)Xi 2 )(+)Xi 1
F(K,X)はデータXをパラメータKを用いてF関数で変換したデータを表し、
(+)はビット毎の排他的論理和を表す。
図19に第iラウンド目のn−bit入力Xiをn/4−bitずつ4つに分割し、その4番目のn/4−bitデータ(Xi 4と表記)の一部のみに変化を与えた場合のその影響の波及を示す。
次に、これまでに提案されている拡散(diffusion)特性を考慮した処理構成についての概要を説明する。
(n/d)ビット毎d個に分割したデータそれぞれについてラウンド間の配線を変更するラウンド間置換を実行することで分割数dが6以上の場合に、従来の構成より全拡散(full diffusion)ラウンド数を少なくできる。
この構成で達成している全拡散(full diffusion)ラウンド数はd=6,8,10,12,14,16の場合にそれぞれ5,6,7,8,8,8ラウンドとなっており、通常の構成のd+1ラウンドより良い拡散(diffusion)特性が得られていることが分かる。しかしながら、この構成ではd=4の場合には効果がなく、またこれ以上全拡散(full diffusion)ラウンド数を削減することはできない。
次に、拡散(diffusion)特性を向上させるラウンド間置換(RoundP Permutation)を適用した構成例について説明する。
なお、以下において説明する構成は、本出願人の先の特許出願である特願2011−207702(特開2012−215813号公報)に記載されている構成である。
拡張Feistel構造において,実装コストを増大させずにより高い拡散(diffusion)特性を得られるような構成として、ラウンド間置換(RoundP Permutation)を適用した構成例である。
F関数に入力されるデータ系列をF関数入力側データ系列,
排他的論理和されるデータ系列を排他的論理和側データ系列、
と呼ぶ。
その後、各系列(各ライン)において転送される(n/d)ビットデータ各々について、さらに再分割する(この際の分割は等分割でなくても良い)。
各系列(各ライン)各々で再分割されたデータを次のルールにしたがって分配する(図24:ステップ2)。
(2)排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する
(3)再分割されたデータ系列は次のラウンド関数のデータ系列にそれぞれ重複なく分配する
これを必要回数繰り返す。
このように構成した場合、データの分割数dによらず全拡散(full diffusion)ラウンド数4を実現することが可能になる。
(1)第iラウンドのあらゆる入力データの変化は第i+1ラウンド目の少なくとも1つのF関数に影響を与える。
(2)第i+1ラウンド目の排他的論理和側データ系列のうち少なくとも1つはdiffusion状態となっている。
(3)第i+1ラウンド目の排他的論理和側データ系列で拡散(diffusion)状態となっているデータはさらに分割され,第i+2ラウンド目の全F関数に影響を与える。そのため第i+2ラウンド目の全ての排他的論理和側データ系列は拡散(diffusion)状態になる。
(4)第i+2ラウンド目の排他的論理和側データ系列は第i+3ラウンド目のF関数入力側データ系列となるため、第i+3ラウンド目のF関数入力側データ系列は全て拡散(diffusion)状態となる。また、これら拡散(diffusion)状態であるデータは第i+3ラウンド目の全てのF関数に入力されるため,その出力と排他的論理和される排他的論理和側データ系列も全て拡散(diffusion)状態となる。
第iラウンド入力Xi 1に対応する第iラウンド出力の2分割データをそれぞれYi 1L,Yi 1Rとし,同様にXi 2,Xi 3,Xi 4についても対応する各分割データをYi 2L,Yi 2R,Yi 3L,Yi 3R,Yi 4L,Yi 4Rとする。これら分割データのサイズは等分割した際はn/8ビットとなる。
各ラインのビット数は、n/d=256/4=64ビットとなり、この再分割データは等分割すれば32ビットとなり、2つの32ビットデータが生成される。
しかし、等分割することは必須ではなく、64ビットのデータから生成する再分割データを20ビットと44ビット等、任意の組み合わせに分割してもよい。
ただし、次のラウンド演算部に入力する際には、異なるラインにおいて分割された20ビットと44ビットとの組み合わせによって分割数であるd=4個の64ビット単位のデータを再構成して各分割ラインに入力する。
このラウンド演算の繰り返し処理に際して、ラウンド演算の出力データを有するラインの(n/d)ビットデータをd/2個に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個の(n/d)ビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する。
(1)F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する
(2)排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する
(3)各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配する
このような条件を満たす処理を行う。
(条件1)全入力ビットが関係式に含まれる。
(条件2)全入力ビットが少なくとも1度はラウンド関数(F関数)を通過している。
さらに、全出力ビットが拡散(diffusion)状態になっている場合が「全拡散(full diffusion)状態」である。
これは、全拡散(full diffusion)を実現するための最小ラウンド数=4を実現するための設定である。
図29に分割数d:d=6の場合に各ラインで転送される(n/d)ビットデータ(n/6ビットデータ)を2分割、すなわちd/12ビットに分割してラウンド間の転送を行う構成例を示す。
入力nビットの分割数:dと、
各ライン各々の分割数:pと、
全拡散(full diffusion)を実現するためのラウンド数、
これらの対応関係を示す図を図30に示す。
適切にデータ系列を分配すれば、全拡散(full diffusion)ラウンド数は、以下の式で算出できる。
ラウンド数=3+[logp(d/2)]
ただし、[x]はx以上の最小の整数とする。
図31に示す構成は、
分割数d:d=6の場合に、
(d/2)=3本のF関数入力側データ系列ラインについては、2分割、
(d/2)=3本の排他的論理和側系列ラインについては、3分割した例である。
このような構成としても、適切にデータ系列を分配すれば、全拡散(full diffusion)ラウンド数は4とすることが可能である。
図25においては、拡大鍵(ラウンド鍵)を各F関数に挿入して適用している。
これに対して、図32に示す構成では、拡大鍵(ラウンド鍵)をF関数出力と排他的論理和側データ系列との排他的論理和演算な部に挿入している。
このような構成においても、前述の各ラウンド間のデータの再分割処理による転送構成によって、全拡散(full diffusion)ラウンド数の削減が実現される。
上述した各ラウンド間において、データの再分割処理を伴うラウンド間置換(RP)を実行する構成、すなわち、ラウンド演算の出力データを有するラインの(n/d)ビットデータを、さらに複数に再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個の(n/d)ビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する構成では、データ分割を伴わないラウンド置換処理より、さらに拡散性能を高めた処理が可能となる。
この構成をハードウェア実装する場合は、配線の変更のみでデータ分割を伴うラウンド間置換(RP)を実現できるため、実装コストはかからない。
しかしながら、ソフトウェアで実装する場合には、ラウンド間置換(RP)処理の実装コストが高くなるという問題がある。具体的には、複雑な処理アルゴリズムを実行することが必要となり、アルゴリズム構築のコストや、処理時間の増大をもたらすという問題がある。
以下、これらの問題を解決した構成について説明する。
具体的には、初期置換と最終置換を設定してラウンド間置換を省略し高速処理を可能とした構成例である。
すなわち、ラウンド演算の出力データを有するラインの(n/d)ビットデータを再分割し、該再分割データを再度組み合わせて、前段のラウンド演算の出力データと異なるd個の(n/d)ビットデータを再構成して、次段のラウンド演算の入力データとして設定する処理を実行する構成について、図33〜図35を参照してまとめて説明する。
図33に示す構成は、F関数にラウンド鍵を入力する構成である。
図34に示す構成は、F関数後の排他的論理和(XOR)部においてラウンド鍵を入力する構成である。
図35の構成では、ラウンド鍵入力処理を省略して示しているが、図33に示すようにF関数に対する入力、あるいは、図34に示すようにF関数後の入力、いずれかの態様でラウンド鍵の入力が実行される。
図33〜図35に示すようにラウンド間でデータの再分割を伴うラウンド間置換(RP)を実行することによって、安全性を飛躍的に高めることが可能である。
以下に詳細を説明する。
第iラウンド出力(x0(i+1),x1(i+1),x2(i+1),x3(i+1))
を得るために必要な演算の一例を以下に示す。
X0(i)〜X3(i)は、第iラウンド入力を構成する4分割データ中の各分割データ、左端0〜右端3の各分割データを示す。
X0(i+1)〜X3(i+1)は、第iラウンド出力(=第(i+1)ラウンド入力)を構成する4分割データ中の各分割データ、左端0〜右端3の各分割データを示す。
A(+)B
は、AとBのビット毎の排他的論理和(XOR)演算、
F(X0(i))
は、データX0(i)に対するF関数の適用演算、
を表すものとする。
(1)データ再分割を伴わない従来型のラウンド間置換
(2)データ再分割を伴うラウンド間置換
まず、データ再分割を伴わない従来型のラウンド間置換を実行する場合の演算処理について説明する。
第iラウンド入力を、(x0(i),x1(i),x2(i),x3(i))、
第iラウンド出力を、(x0(i+1),x1(i+1),x2(i+1),x3(i+1))
とする。
x0(i+1)←F(x0(i))(+)x1(i)
x1(i+1)←x2(i)
x2(i+1)←F(x2(i))(+)x3(i)
x3(i+1)←x0(i)
F関数演算=2回、
排他的論理和(XOR)演算=2回
である。
次に、データ分割を伴うラウンド間置換を実行する場合の演算処理について説明する。
第iラウンド入力を、(x0(i),x1(i),x2(i),x3(i))、
第iラウンド出力を、(x0(i+1),x1(i+1),x2(i+1),x3(i+1))
とする。
t0←F(x0(i))(+)x1(i)
t1←F(x2(i))(+)x3(i)
x0(i+1)←(t0 & maskH)(+)(t1 & maskL)
x1(i+1)←(x2(i) & maskH)(+)(x0(i) & maskL)
x2(i+1)←(t1 & maskH)(+)(t0 & maskL)
x3(i+1)←(x0(i) & maskH)(+)(x2(i) & maskL)
&は、AND演算、
maskHは、n/4ビット中の上位n/8ビットのみ1としたデータ(残りは0)
maskLは、n/4ビット中の下位n/8ビットのみ1としたデータ(残りは0)
である。
F関数演算=2回、
排他的論理和(XOR)演算=6回、
AND演算=8回
である。
従って、ソフトウェアで実装する場合の実装コストが高くなる。具体的には、複雑な処理アルゴリズムを実行することが必要となり、アルゴリズム構築のコストや、処理時間の増大をもたらすという問題がある。
図36は、上記問題を解決した暗号処理装置の暗号処理部全体構成を説明する図である。
暗号処理部は、拡張Feistel(GFN)構成を有し、図36に示すように、以下の各構成要素を有する。
初期置換部(IP)301、
メイン処理関数実行部(GR)302、
最終置換部(FP(T))303、
総ラウンド数R=4S+T
である。
ただし、T<4、すなわちT=0〜3のいずれかである。
これらのRラウンドは、すべてメイン処理関数実行部(GR)302に含まれる。
メイン処理関数実行部(GR)302は、後述する基本4ラウンドをS回、繰り返し、さらにTラウンド、総計R(=4S+T)ラウンドのラウンド演算を実行する。
初期置換部(IP)301は、暗号処理対象データであるnビットを入力して、初期置換(IP:Initial Permutation)を実行して、初期置換結果としてのnビットを生成して、メイン処理関数実行部(GR)302に入力する。
最終置換部(FP(T))303は、メイン処理関数実行部(GR)302からのnビット出力に対して、最終置換(FP:Final Permutation)を実行して、最終置換結果としてのnビットを生成して出力する。
なお、最終置換部(FP(T))303の実行する置換処理は、メイン処理関数実行部(GR)302の実行するラウンド演算数、具体的にはTの数に応じて異なる設定となる。
T=0〜3の各T値に応じた4種類の置換が実行される。
なお、以下に説明する例は、図36に示す暗号処理部が、分割数d=4の拡張Feistel(GFN)構成を有する場合の構成例である。
初期置換部(IP)301の入力を、(x0,x1,x2,x3)、
初期置換部(IP)301の出力を、(y0,y1,y2,y3)
とする。
y0←(x2 & maskH)(+)(x0 & maskL)
y1←(x0 & maskH)(+)(x2 & maskL)
y2←x1
y3←x3
(+)は排他的論理和(XOR)演算、
&は、AND演算、
maskHは、n/4ビット中の上位n/8ビットのみ1としたデータ(残りは0)
maskLは、n/4ビット中の下位n/8ビットのみ1としたデータ(残りは0)
である。
排他的論理和(XOR)演算=2回、
AND演算=4回
である。
図36に示す暗号処理部の例は、nビット入力、nビット出力の暗号処理部であり、総ラウンド数はRである。
総ラウンド数R=4S+T
である。
ただし、T<4、すなわちT=0〜3のいずれかである。
これらのRラウンドは、すべてメイン処理関数実行部(GR)302に含まれる。
T=0の場合は、図38に示す基本4ラウンドをS回繰り返す。
T=1の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドを実行する。
T=2の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドと基本第2ラウンドを実行する。
T=3の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドと、基本第2ラウンドと、基本第3ラウンドを実行する。
すなわち、メイン処理関数実行部(GR)302において実行するR(=4S+T)回のラウンド演算において、ラウンド間の入出力データの置換処理は行われない。
このため、置換処理の処理コストが全く発生しない。具体的には、例えばソフトウェア実装した場合に、ラウンド間の置換処理演算が不要となり、高速処理が実現されることになる。
基本4ラウンド演算の入力を、(x0,x1,x2,x3)、
基本4ラウンド演算の出力を、(y0,y1,y2,y3)、
とする。
また、第2基本ラウンドの出力(=第3基本ラウンドの入力)を、(z0,z1,z2,z3)とする。
z0←F((x1 & maskH)(+)(x0 & maskL))(+)x2、
z1←F((x0 & maskH)(+)(x1 & maskL))(+)x3、
z2←F((z0 & maskH)(+)(z1 & maskL))(+)x0、
z3←F((z1 & maskH)(+)(z0 & maskL))(+)x1、
y0←F((y2 & maskH)(+)(y3 & maskL))(+)z2、
y1←F((y3 & maskH)(+)(y2 & maskL))(+)z3
y2←F((z3 & maskH)(+)(z2 & maskL))(+)y0、
y3←F((z2 & maskH)(+)(z3 & maskL))(+)y1、
(+)は排他的論理和(XOR)演算、
&は、AND演算、
Fは、F関数演算
maskHは、n/4ビット中の上位n/8ビットのみ1としたデータ(残りは0)
maskLは、n/4ビット中の下位n/8ビットのみ1としたデータ(残りは0)
である。
F関数演算=8回
排他的論理和(XOR)演算=16回、
AND演算=16回
である。
T=0の場合は、図38に示す基本4ラウンドをS回繰り返す。
T=1の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドを実行する。
T=2の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドと基本第2ラウンドを実行する。
T=3の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドと、基本第2ラウンドと、基本第3ラウンドを実行する。
ラウンド数=11
ラウンド数=12
ラウンド数=13
これらの各ラウンド数の設定とした暗号処理部におけるメイン処理関数実行部(GR)302の構成例を示す。
T=3の場合、図38に示す基本4ラウンドを2回繰り返した後、図38に示す基本第1ラウンドと、基本第2ラウンドと、基本第3ラウンドを実行する。
T=0の場合、図38に示す基本4ラウンドを3回繰り返す構成となる。
T=1の場合、図38に示す基本4ラウンドを3回繰り返した後、図38に示す基本第1ラウンドを実行する。
最終置換部(FP(T))303は、メイン処理関数実行部(GR)302からのnビット出力に対して、最終置換(FP:Final Permutation)を実行して、最終置換結果としてのnビットを生成して出力する。
なお、最終置換部(FP(T))303の実行する置換処理は、メイン処理関数実行部(GR)302の実行するラウンド演算数、具体的にはTの数に応じて異なる設定となる。
T=R mod 4=0〜3の各値に応じた4種類の置換を実行する。
(a)T=0(R mod 4=0)の場合の最終置換部(FP(0))303の構成
(b)T=1(R mod 4=1)の場合の最終置換部(FP(1))303の構成
(c)T=2(R mod 4=2)の場合の最終置換部(FP(2))303の構成
(d)T=3(R mod 4=3)の場合の最終置換部(FP(3))303の構成
最終置換部(FP(T))303の出力を、(y0,y1,y2,y3)
とする。
以下、図40〜図41に示す各構成における最終置換部(FP(T))303の出力(y0,y1,y2,y3)の各々を出力する演算について説明する。
(a)T=0の場合の最終置換部(FP(0))303の構成
において、最終置換部(FP(0))303の出力(y0,y1,y2,y3)の各々を出力する演算は、以下の演算となる。
y1←(x1 & maskH)(+)(x0 & maskL)
y2←(x3 & maskH)(+)(x2 & maskL)
y3←(x2 & maskH)(+)(x1 & maskL)
(+)は排他的論理和(XOR)演算、
&は、AND演算、
maskHは、n/4ビット中の上位n/8ビットのみ1としたデータ(残りは0)
maskLは、n/4ビット中の下位n/8ビットのみ1としたデータ(残りは0)
である。
上記演算において、必要な演算は、
排他的論理和(XOR)演算=4回、
AND演算=8回
である。
(b)T=1の場合の最終置換部(FP(1))303の構成
において、最終置換部(FP(1))303の出力(y0,y1,y2,y3)の各々を出力する演算は、以下の演算となる。
y1←(x0 & maskH)(+)(x2 & maskL)
y2←(x1 & maskH)(+)(x1 & maskL)
y3←(x3 & maskH)(+)(x3 & maskL)
排他的論理和(XOR)演算=4回、
AND演算=8回
である。
(c)T=2の場合の最終置換部(FP(2))303の構成
において、最終置換部(FP(2))303の出力(y0,y1,y2,y3)の各々を出力する演算は、以下の演算となる。
y1←(x2 & maskH)(+)(x1 & maskL)
y2←(x0 & maskH)(+)(x3 & maskL)
y3←(x1 & maskH)(+)(x0 & maskL)
排他的論理和(XOR)演算=4回、
AND演算=8回
である。
(d)T=3の場合の最終置換部(FP(3))303の構成
において、最終置換部(FP(3))303の出力(y0,y1,y2,y3)の各々を出力する演算は、以下の演算となる。
y1←(x3 & maskH)(+)(x3 & maskL)
y2←(x2 & maskH)(+)(x0 & maskL)
y3←(x0 & maskH)(+)(x2 & maskL)
排他的論理和(XOR)演算=4回、
AND演算=8回
である。
本開示の暗号処理装置の暗号処理部は、図36を参照して説明したように、拡張Feistel(GFN)構成を有し、以下の各構成要素を有する。
初期置換部(IP)301、
メイン処理関数実行部(GR)302、
最終置換部(FP(T))303、
初期置換部(IP)301は、図37を参照して説明した構成を有する。
ラウンド数を、
R=4S+T
とした場合、
メイン処理関数実行部(GR)302は、図38に示す基本4ラウンドをS回、繰り返し、さらに、Tラウンド、総計R(=4S+T)ラウンドのラウンド演算を実行する。
T=0の場合は、図38に示す基本4ラウンドをS回繰り返す。
T=1の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドを実行する。
T=2の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドと基本第2ラウンドを実行する。
T=3の場合は、図38に示す基本4ラウンドをS回繰り返した後、図38に示す基本第1ラウンドと、基本第2ラウンドと、基本第3ラウンドを実行する。
(1)ラウンド数R=25
(2)ラウンド数R=31
初期置換部(IP)301、
ラウンド数R=25のメイン処理関数実行部(GR=G25)302、
最終置換部(FP(T)=FP(1))303、
これらの構成を持つ。
であり、T=R mod 4=1となる。
メイン処理関数実行部(GR=G25)302は、図38に示す基本4ラウンドを6回繰り返した後、図38に示す基本第1ラウンドを実行する。
また、最終置換部(FP(T)=FP(1))303は、図40(b)に示す構成を持つ。
また、図42(1)に示す構成は、Piccolo−80と同様の入出力が可能な暗号処理アルゴリズムとなる。
Piccolo−80では、初期置換や、最終置換を実行せず、図35を参照して説明したラウンド間置換を実行する構成である。従って、ソフトウェア実装とした場合、ラウンド間置換処理の処理時間が大きくなってしまうという欠点がある。
本開示の構成は、図42(1)に示す構成であり、ラウンド間置換のないラウンド数R=25のメイン処理関数実行部(GR)302と、初期置換部(IP)301と最終置換部(FP(1))302からなる構成である。
1ラウンドにおいて必要となる演算は、先に図35を参照して説明したように、
第iラウンド入力を、(x0(i),x1(i),x2(i),x3(i))、
第iラウンド出力を、(x0(i+1),x1(i+1),x2(i+1),x3(i+1))
とした場合、以下の演算処理となる。
t0←F(x0(i))(+)x1(i)
t1←F(x2(i))(+)x3(i)
x0(i+1)←(t0 & maskH)(+)(t1 & maskL)
x1(i+1)←(x2(i) & maskH)(+)(x0(i) & maskL)
x2(i+1)←(t1 & maskH)(+)(t0 & maskL)
x3(i+1)←(x0(i) & maskH)(+)(x2(i) & maskL)
&は、AND演算、
maskHは、n/4ビット中の上位n/8ビットのみ1としたデータ(残りは0)
maskLは、n/4ビット中の下位n/8ビットのみ1としたデータ(残りは0)
である。
F関数演算=2回、
排他的論理和(XOR)演算=6回、
AND演算=8回
である。
F関数演算=2回×25=50回、
排他的論理和(XOR)演算=6回×25=130回、
AND演算=8回×25=200回
である。
y0←(x2 & maskH)(+)(x0 & maskL)
y1←(x0 & maskH)(+)(x2 & maskL)
y2←x1
y3←x3
上記演算において、必要な演算は、
排他的論理和(XOR)演算=2回、
AND演算=4回
である。
先に図38を参照して説明した4ラウンド分の演算において、必要な演算は、
F関数演算=8回
排他的論理和(XOR)演算=16回、
AND演算=16回
である。
F関数演算=8回×6.25=50回
排他的論理和(XOR)演算=16回×6.25=100回、
AND演算=16回×6.25=100回
である。
y0←(x2 & maskH)(+)(x0 & maskL)
y1←(x0 & maskH)(+)(x2 & maskL)
y2←(x1 & maskH)(+)(x1 & maskL)
y3←(x3 & maskH)(+)(x3 & maskL)
排他的論理和(XOR)演算=4回、
AND演算=8回
である。
(1)初期置換部(IP)301において必要となる演算
排他的論理和(XOR)演算=2回、
AND演算=4回
(2)ラウンド数25の設定としたメイン処理関数実行部(GR)302において必要となる演算、
F関数演算=8回×6.25=50回
排他的論理和(XOR)演算=16回×6.25=100回、
AND演算=16回×6.25=100回
(3)最終置換部(FP(1))303において必要となる演算
排他的論理和(XOR)演算=4回、
AND演算=8回
F関数演算=50回、
排他的論理和(XOR)演算=2+100+4=106回、
AND演算=4+100+8=112回
F関数演算=2回×25=50回、
排他的論理和(XOR)演算=6回×25=130回、
AND演算=8回×25=200回
である。
この結果として、暗号処理演算の高速化、特にソフトウェアウ実装した場合の演算ステップ数の減少による高速化が実現される。
(2)ラウンド数R=31の暗号処理部は、
初期置換部(IP)301、
ラウンド数R=31のメイン処理関数実行部(GR=G31)302、
最終置換部(FP(T)=FP(3))303、
これらの構成を持つ。
であり、T=R mod 4=3となる。
メイン処理関数実行部(GR=G31)302は、図38に示す基本4ラウンドを7回繰り返した後、図38に示す基本第1ラウンド〜基本第3ラウンドを実行する。
また、最終置換部(FP(T)=FP(1))303は、図41(d)に示す構成を持つ。
また、図42(2)に示す構成は、Piccolo−128と同様の入出力が可能な暗号処理アルゴリズムとなる。
Piccolo−128では、初期置換や、最終置換を実行せず、図35を参照して説明したラウンド間置換を実行する構成である。従って、ソフトウェア実装とした場合、ラウンド間置換処理の処理時間が大きくなってしまうという欠点がある。
本開示の構成は、図42(2)に示す構成であり、ラウンド間置換のないラウンド数R=31のメイン処理関数実行部(GR)302と、初期置換部(IP)301と最終置換部(FP(1))302からなる構成である。
すなわち、
F関数演算=2回×31=62回、
排他的論理和(XOR)演算=6回×31=186回、
AND演算=8回×31=248回
である。
排他的論理和(XOR)演算=2回、
AND演算=4回
である。
従って、以下の演算処理が必要となる。
F関数演算=8回×7.75=62回
排他的論理和(XOR)演算=16回×7.75=124回、
AND演算=16回×7.75=124回
である。
排他的論理和(XOR)演算=4回、
AND演算=8回
である。
(1)初期置換部(IP)301において必要となる演算
排他的論理和(XOR)演算=2回、
AND演算=4回
(2)ラウンド数31の設定としたメイン処理関数実行部(GR)302において必要となる演算、
F関数演算=8回×7.75=62回
排他的論理和(XOR)演算=16回×7.75=124回、
AND演算=16回×7.75=124回
(3)最終置換部(FP(1))303において必要となる演算
排他的論理和(XOR)演算=4回、
AND演算=8回
F関数演算=62回、
排他的論理和(XOR)演算=2+124+4=130回、
AND演算=4+124+8=136回
F関数演算=2回×31=62回、
排他的論理和(XOR)演算=6回×31=186回、
AND演算=8回×31=248回
である。
この結果として、暗号処理演算の高速化、特にソフトウェアウ実装した場合の演算ステップ数の減少による高速化が実現される。
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の構成例について説明する。
上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康・医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な機器において利用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
また、図44に示すスマートフォン900に図43に示すICモジュール800を搭載し、上述した実施例に従った暗号処理をICモジュール800において実行する構成としてもよい。
以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
(1) 入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、
前記暗号処理部は、
入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する初期置換部と、
前記初期置換部の出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行部と、
前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換部を有し、
前記メイン処理関数実行部は、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する構成を有する暗号処理装置。
kラウンドからなる基本ラウンドをS回繰り返し実行し、前記kラウンドからなる基本ラウンドを先行ラウンドから、Tラウンド分、実行する(1)〜(3)いずれかに記載の暗号処理装置。
各基本ラウンドは、異なるライン上のデータの一部を組み合わせた合成データを入力するF関数実行部を有する構成である(1)〜(5)いずれかに記載の暗号処理装置。
入力データとしての平文を暗号文に変換する暗号化処理、または、
入力データとしての暗号文を平文に変換する復号処理を実行する(1)〜(10)いずれかに記載の暗号処理装置。
暗号処理部が、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行し、
前記暗号処理ステップは、
初期置換部が、入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する初期置換処理ステップと、
メイン処理関数実行部が、前記初期置換部が出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行ステップと、
最終置換部が、前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換処理ステップを有し、
前記メイン処理関数実行ステップにおいては、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する処理を実行する暗号処理方法。
暗号処理部に、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行させ、
前記プログラムは、前記暗号処理ステップにおいて、
初期置換部に、入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成させ、
メイン処理関数実行部に、前記初期置換部が出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行させ、
最終置換部に、前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成させ、
前記メイン処理関数実行ステップにおいては、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する処理を実行させるプログラム。
具体的には、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有する。暗号処理部は、各ラインの入力データの再分割データ単位の置換処理を実行する初期置換部と、初期置換部の出力に対してラウンド演算を繰り返し実行するメイン処理関数実行部と、メイン処理関数実行部の出力データに対する再分割データ単位の置換を実行する最終置換部を有する。メイン処理関数実行部は、前段のラウンド関数実行部の出力の置換処理を行なわず後段のラウンド関数実行部に出力する。
本構成により、安全性が高く、かつ高速処理の可能な暗号処理構成が実現される。
302 メイン処理関数実行部
303 最終置換部
700 暗号処理装置
720 鍵スケジュール部
721 ラウンド鍵供給部
722 鍵レジスタ
723 鍵変換部
725 定数供給部
750 暗号処理部
751 排他的論理和部
752 非線形変換部
753 線形変換部
800 ICモジュール
801 CPU(Central processing Unit)
802 メモリ
803 暗号処理部
804 乱数生成部
805 送受信部
900 スマートフォン
901 プロセッサ
902 メモリ
903 ストレージ
904 外部接続インタフェース
906 カメラ
907 センサ
908 マイクロフォン
909 入力デバイス
910 表示デバイス
911 スピーカ
913 無線通信インタフェース
914 アンテナスイッチ
915 アンテナ
917 バス
918 バッテリー
919 補助コントローラ
Claims (10)
- 入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理部を有し、
前記暗号処理部は、
入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する初期置換部と、
前記初期置換部の出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行部と、
前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換部を有し、
前記メイン処理関数実行部は、kラウンドからなる基本ラウンドを繰り返し実行する構成であり、
各基本ラウンドは、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する構成を有し、異なるライン上のデータの一部を組み合わせた合成データを入力するF関数実行部を有する構成であり、
前記最終置換部は、前記メイン処理関数実行部において実行するラウンド数に応じて異なる置換処理を実行する構成である暗号処理装置。 - 前記メイン処理関数実行部は、メイン処理関数実行部において実行するラウンド数Rを、R=Sk+Tとしたとき、
kラウンドからなる基本ラウンドをS回繰り返し実行し、前記kラウンドからなる基本ラウンドを先行ラウンドから、Tラウンド分、実行する請求項1に記載の暗号処理装置。 - 前記最終置換部は、前記メイン処理関数実行部において実行するラウンド数T=R mod kに応じて異なる置換処理を実行する構成である請求項2に記載の暗号処理装置。
- 前記F関数実行部は、線形変換部と非線形変換部を有する構成である請求項1に記載の暗号処理装置。
- 前記メイン処理関数実行部は、前記F関数実行部からの出力と、ライン上のデータとの排他的論理和(XOR)演算部を有する構成である請求項1に記載の暗号処理装置。
- 前記メイン処理関数実行部は、前記F関数実行部、または前記排他的論理和(XOR)演算部において、ラウンド鍵との演算を実行する構成である請求項5に記載の暗号処理装置。
- 前記暗号処理部は、拡張Feistel構造(GFN:Generalized Feistel Network)を有する請求項1に記載の暗号処理装置。
- 前記暗号処理部は、
入力データとしての平文を暗号文に変換する暗号化処理、または、
入力データとしての暗号文を平文に変換する復号処理を実行する請求項1に記載の暗号処理装置。 - 暗号処理装置において実行する暗号処理方法であり、
暗号処理部が、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行し、
前記暗号処理ステップは、
初期置換部が、入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する初期置換処理ステップと、
メイン処理関数実行部が、前記初期置換部が出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行ステップと、
最終置換部が、前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換処理ステップを有し、
前記メイン処理関数実行ステップにおいては、
kラウンドからなる基本ラウンドを繰り返し実行し、
各基本ラウンドにおいて、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する処理を実行するとともに、異なるライン上のデータの一部を組み合わせた合成データをF関数実行部に入力してデータ変換を行い、
前記最終置換処理ステップにおいては、
前記メイン処理関数実行ステップにおいて実行するラウンド数に応じて異なる置換処理を実行する暗号処理方法。 - 暗号処理装置において暗号処理を実行させるプログラムであり、
暗号処理部に、入力データを複数ラインに分割し、各ラインのデータに対してラウンド関数を適用したデータ変換処理を繰り返して実行する暗号処理ステップを実行させ、
前記プログラムは、前記暗号処理ステップにおいて、
初期置換部に、入力データであるnビットデータをライン数に相当する分割数dで分割したd個の(n/d)ビットデータを、さらに再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成させ、
メイン処理関数実行部に、前記初期置換部が出力するd個の(n/d)ビットデータをd本のライン各々に入力して、ラウンド関数を適用したデータ変換処理を含む演算をラウンド演算として繰り返し実行するメイン処理関数実行ステップを実行させ、
最終置換部に、前記メイン処理関数実行部の出力するd個の(n/d)ビットデータを、再分割して、再分割データ単位の置換処理を実行して、新たなd個の(n/d)ビットデータを生成する最終置換処理ステップを実行させ、
前記メイン処理関数実行ステップにおいては、
kラウンドからなる基本ラウンドを繰り返し実行させ、
各基本ラウンドにおいて、前段のラウンド関数実行部の出力するd個の(n/d)ビットデータに対する置換処理を行なうことなく、そのまま後段のラウンド関数実行部のd本の入力ラインに出力する処理を実行させるとともに、異なるライン上のデータの一部を組み合わせた合成データをF関数実行部に入力してデータ変換を行わせ、
前記最終置換処理ステップにおいては、
前記メイン処理関数実行ステップにおいて実行するラウンド数に応じて異なる置換処理を実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014242845A JP6292107B2 (ja) | 2014-12-01 | 2014-12-01 | 暗号処理装置、および暗号処理方法、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014242845A JP6292107B2 (ja) | 2014-12-01 | 2014-12-01 | 暗号処理装置、および暗号処理方法、並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016105123A JP2016105123A (ja) | 2016-06-09 |
JP6292107B2 true JP6292107B2 (ja) | 2018-03-14 |
Family
ID=56102730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014242845A Active JP6292107B2 (ja) | 2014-12-01 | 2014-12-01 | 暗号処理装置、および暗号処理方法、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6292107B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3012732B2 (ja) * | 1992-02-20 | 2000-02-28 | 富士通エフ・アイ・ピー株式会社 | ブロック暗号処理装置 |
JP3492988B2 (ja) * | 2000-07-12 | 2004-02-03 | 日本電信電話株式会社 | データ変換装置及びそのプログラム記録媒体 |
JP4882598B2 (ja) * | 2006-07-28 | 2012-02-22 | ソニー株式会社 | 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム |
JP5682525B2 (ja) * | 2011-03-28 | 2015-03-11 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにプログラム |
-
2014
- 2014-12-01 JP JP2014242845A patent/JP6292107B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016105123A (ja) | 2016-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6406350B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
US9363074B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
US8165288B2 (en) | Cryptographic processing apparatus and cryptographic processing method, and computer program | |
US10205589B2 (en) | Encryption processing device and encryption processing method | |
JP5682525B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
US8396210B2 (en) | Cryptographic processing apparatus and cryptographic processing method, and computer program | |
US9515818B2 (en) | Multi-block cryptographic operation | |
JP5268609B2 (ja) | 暗号処理装置及び演算方法 | |
US9083507B2 (en) | Data processing device, data processing method, and program | |
JP2008058830A (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
JP2012215816A (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP5652363B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
WO2015146430A1 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP6287785B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
WO2016059870A1 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP5680016B2 (ja) | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム | |
JP6292107B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
WO2015146432A1 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
US20180054307A1 (en) | Encryption device | |
JP5772934B2 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
Kalpana et al. | VLSI implementation of scalable encryption algorithm for different text and processor size |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171025 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171114 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171226 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180129 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6292107 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |