説明

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

【課題】ラウンド関数を繰り返し実行する暗号処理回路を簡略化して装置の小型化およびコストダウンを実現する。
【解決手段】秘密鍵Kに基づいて生成する複数の異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なう共通鍵ブロック暗号処理構成において、ラウンド関数実行部に第1中間鍵KAに基づいて生成するラウンド鍵KAのみを入力してラウンド関数を実行し、第2中間鍵KBに基づいて生成される鍵KBは、ラウンド関数部におけるF関数に入力することなく、暗号処理対象となる入力データ、またはラウンド関数からの出力データとの排他的論理和演算を実行させる構成とした。本構成により暗号処理回路を簡略化し装置の小型化およびコストダウンを実現した。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0002】
ネットワーク通信、電子商取引、その他のデータ処理分野においてセキュリティ確保は重要な課題である。セキュリティ確保の1つの方法として暗号技術があり、暗号処理は様々な領域で利用されている。例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
【0003】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【0004】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128、256ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【0005】
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号であったDES(Data Encryption Standard)アルゴリズム、現在の米国標準であるAES(Advanced Encryption Standard)アルゴリズムなどが知られている。
【0006】
図1を参照して、共通鍵ブロック暗号処理について説明する。共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有するデータ暗号化部114と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部112とによって構成される。鍵スケジュール部112は数百ビットの秘密鍵(K)111を数千ビット程度の拡大鍵113に拡張して、データ暗号化部114に供給する。拡大鍵113のうち、データ暗号化部114のラウンド関数115で入力される拡大鍵の一部をラウンド鍵と呼ぶ。
【0007】
例えば,r段のラウンド関数を行う構成としたブロック暗号においては,1からr段までのラウンド関数にそれぞれ{RK,RK,…,RKr−1,RK}のラウンド鍵が入力される。また、初期鍵としてIKが最終鍵としてFKが排他的論理和される。
【0008】
データ暗号化部114の代表的な構造にFeistel構造がある。Feistel構造は、データ変換関数としてのラウンド関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関数においては、線形変換処理および非線形変換処理が実行される。なお、Feistel構造を適用した暗号処理について記載した文献としては、例えば非特許文献1、非特許文献2がある。
【0009】
図2にデータ暗号化部114の具体的構成例を示す。ブロック長をnとし、ラウンド関数115をFeistel構造とし、ラウンド鍵のサイズをn/2ビット、ラウンド数rをr=4t+2(tは自然数)とする。このとき、初期鍵IKおよび最終鍵FKもn/2ビットで、Feistel構造により分割されたデータラインの片側にのみ排他的論理和されることにする。
【0010】
図2に示すデータ暗号化部114に入力されるnビットの平文Pは、1/2に分割され、その上位n/2ビットをP、下位n/2ビットをPとする。同様に暗号文Cについても1/2に分割し、上位n/2ビットをC、下位n/2ビットをCとする。
【0011】
図2に示すデータ暗号化部114では、入力平文Pの下位n/2ビットPに初期鍵IKを排他的論理和した後、ラウンド鍵:RK,RK,…,RKr−1,RKがそれぞれ入力されたラウンド関数をr回処理し、最後のラウンド関数から出力される下位n/2ビットに最終鍵FKが排他的論理和されて暗号文Cの下位n/2ビットCが生成される。
【0012】
ラウンド関数115は、F関数およびデータの入れ替え(左右系列の入れ替え)で構成される。F関数の内部構成には様々なタイプのものがあるが、例えば、図2に示すF関数116のように、ラウンド鍵との排他的論理和演算、S−boxと呼ばれる非線形演算、線形変換の処理を行う構成が知られている。
【0013】
図3に、図2と異なる構成を持つデータ暗号化部114の構成例を示す。図3に示すデータ暗号化部114は、各ラウンド関数の構成は図2に示す構成と同様の構成であるが、初期鍵IKと最終鍵FKの入力構成が図2に示す構成とは異なっている。すなわち、図2に示す構成では、入力平文Pの下位n/2ビットPに初期鍵IKを排他的論理和する構成であったが、図3に示す構成では、入力平文Pの上位n/2ビットPに初期鍵IKを排他的論理和した後、RK、RK、…、RKr−1、RKが入力されたF関数および入れ替え関数で構成されるラウンド関数をr回処理し、最後のラウンド関数から出力される上位n/2ビットに最終鍵FKが排他的論理和されて暗号文Cの上位n/2ビットCが生成される構成となっている。
【0014】
図2、図3に示すデータ暗号化部の構成は、nビットの入力平文Pを上位下位n/2ビットずつの2系列に分割して処理を行う構成であるが、nビットの入力平文Pをn/4ビットずつの4系列に分割して処理を行う構成もある。
【0015】
4系列の構成を持つデータ暗号化部の構成例(4系列Type−2一般化Feistel構造)を図4、図5を参照して説明する。図4および図5に示すように、nビット平文Pを1/4に分割したn/4ビットデータをP,P,P,Pとし、nビット暗号文Cを1/4に分割したn/4ビットデータを各々C,C,C,Cとする。
【0016】
本構成では、図4、図5に示すように、各ラウンドにおいて2つのラウンド関数が実行される。各ラウンドにおける2つのラウンド関数では、n/2ビットのラウンド鍵RKを1/2に分割したn/4ビットのラウンド鍵RK[0]、RK[1]を生成して各ラウンド関数に入力する。同様に、n/2ビットの初期鍵IKについても1/2に分割したn/4ビットのIK[0]、IK[1]を4系列中の2つの系列に入力し、n/2ビットの最終鍵FKについても、1/2に分割したn/4ビットのFK[0]、FK[1]を4系列中の2つの系列に入力する構成としている。
【0017】
図4においては、入力平文Pを1/4に分割したn/4ビットデータをP,P,P,P中の、PおよびPに初期鍵IK[0]およびIK[1]を排他的論理和した後、それぞれn/4ビットの分割されたラウンド鍵RK[0],RK[1]が入力されたラウンド関数を行う。
【0018】
以下、各ラウンドにおいて、2つのラウンド関数の各々にラウンド鍵{RK[0],RK[1]},…,{RKr−1[0],RKr−1[1]},{RK[0],RK[1]}を入力して計r回のラウンド関数を実行する。
【0019】
最後に、nビット暗号文Cを1/4に分割したn/4ビットデータを各々C,C,C,Cを構成するCおよびCの出力前段の処理として最終鍵FKをn/4ビットに分割したFK[0]およびFK[1]を排他的論理和する。
【0020】
図5においては、入力平文Pを1/4に分割したn/4ビットデータをP,P,P,P中の、図4の構成とは異なる系列であるPおよびPに初期鍵IK[0]およびIK[1]を排他的論理和した後,同様のラウンド関数をr回繰り返し、最後に図4とは異なる系列であるCおよびCの出力前段の処理として最終鍵FKをn/4ビットに分割したFK[0]およびFK[1]を排他的論理和する。
【0021】
先に図1を参照して説明したように、ラウンド鍵は鍵スケジュール部112において生成される。鍵スケジュール部112は数百ビットの秘密鍵(K)111を数千ビット程度の拡大鍵113に拡張して、データ暗号化部114に供給する。r段のラウンド関数を行う構成としたブロック暗号においては,1からr段までのラウンド関数にそれぞれ{RK,RK,…,RKr−1,RK}のラウンド鍵が秘密鍵(K)111に基づいて生成される。なお、初期鍵IK、最終鍵FKも秘密鍵(K)111に基づいて生成される。
【0022】
データ暗号化部において適用する鍵であるラウンド鍵、初期鍵IK、最終鍵FKの一般的な生成処理例について説明する。例えば、ラウンド鍵は以下のように構成される。まず、kビットの秘密鍵Kに対して非線形変換を行ない、kビットの第1中間鍵KAを作成する。次に、第1中間鍵KAからそれぞれn/2ビットを抜き出し、{KA,KA,…,KAr−1,KA}を構成する。
【0023】
次に、秘密鍵Kからkビットの別のデータを作成し、これを第2中間鍵KBとする。第2中間鍵KBに関しては、
1)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
2)秘密鍵Kに対して線形変換を適用したデータ、
3)秘密鍵Kそのもの
などの設定が考えられる。
第2中間鍵KBから2ラウンドおきにそれぞれn/2ビットを抜き出し,{KB,KB,…,KBr−3,KBr−2}を構成する。
【0024】
ラウンド鍵{RK,RK,…,RKr−1,RK}は、上述した処理によって秘密鍵Kから生成した以下のデータ、
第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA
第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2
これらのデータに基づいて、ラウンド鍵{RK,RK,…,RKr−1,RK}を例えば以下のように設定する。
RK=KA
RK=KA
RK=KA(EXOR)KB
RK=KA(EXOR)KB
RK=KA
・・・・
RKr−4=KAr−4
RKr−3=KAr−3(EXOR)KBr−3
RKr−2=KAr−2(EXOR)KBr−2
RKr−1=KAr−1
RK=KA
とする。なお、上記式において[A(EXOR)B]は、AとBの排他的論理和演算である。
【0025】
また、初期鍵IK、最終鍵FKに関しても、第2中間鍵KBからそれぞれn/2ビットを抜き出してKBおよびKBr+1を構成し、
IK=KB
FK=KBr+1
とする。
【0026】
このような鍵生成構成とすることで、鍵解析の困難性を高めることができるとされている。第1中間鍵KAのみから生成されるn/2ビット鍵KAは、連続する2ラウンドのみで利用され、3ラウンド連続することがない。例えば上記設定では、第1ラウンドと第2ラウンドは、第1中間鍵KAのみから生成されるn/2ビット鍵KAが利用されているが、第3ラウンドと第4ラウンドは、第1中間鍵KAから生成されるn/2ビット鍵KAと第2中間鍵KBから生成されるn/2ビット鍵KBとの排他的論理和演算結果として生成されるデータがラウンド鍵に設定される。このように、元となるデータが異なるものを組み合わせることにより、鍵の解析困難性を高め、安全性の高い暗号処理が実現されることが知られている。
【0027】
先に説明した図2のFeistel構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図6に示す。図6に示す排他的論理和演算部121〜123は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【0028】
先に説明した図3のFeistel構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図7に示す。図7に示す排他的論理和演算部131〜133は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【0029】
先に説明した図4の4系列Type−2一般化Feistel構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図8に示す。図8に示す排他的論理和演算部141〜146は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【0030】
先に説明した図5の4系列Type−2一般化Feistel構造を持つデータ暗号化部に、上記の手法で生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした場合の鍵データの入力構成を図9に示す。図9に示す排他的論理和演算部151〜156は、上述の鍵生成処理のために追加された排他的論理和演算部である。
【0031】
図6〜図9に示すデータ暗号化部を具体的なハードウェアで構成する場合、各ラウンド関数は同じ演算回路であるので、1つのラウンド関数回路を設定して、その1つのラウンド関数回路を繰り返し利用する構成とするのが一般的である。すなわち、1つのラウンド関数回路と、そのラウンド関数回路に対して入力するデータおよび鍵データを順次変更する回路が必要となる。
【0032】
図6に示す2系列のFeistel構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図10に示す。図10に示す暗号処理回路は、1つのラウンド関数回路201と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)202と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)203と、セレクタ1〜3,211〜213と、nビットデータレジスタ214と、排他的論理和演算部215,216を有する。
【0033】
まず、暗号化開始時には、第2鍵生成部(KB生成回路)203において、KBを生成し、セレクタ1,211は平文入力を、セレクタ3,213はKBを選択する設定とする。セレクタ1,211によって選択された平文入力のnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ3,213によって選択されたKBと、排他的論理和演算部216において排他的論理和された後、データレジスタ214に格納される。
【0034】
第1ラウンド目には、第1鍵生成部(KA生成回路)202においてKAを生成し、セレクタ1,211はラウンド関数回路201の出力を選択し、セレクタ2,212は0を選択し、セレクタ3,213は0を選択する設定とする。ラウンド関数回路201にはラウンド鍵としてKAとセレクタ2,212によって選択された0の排他的論理和、つまりKAが入力される。この第1ラウンドにおいて、KAを適用したラウンド関数処理が行われる。これは、図6に示す構成の第1ラウンドの処理に相当する。
【0035】
第1ラウンドで、ラウンド関数回路201にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,211から出力される。セレクタ1,211から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ3,213の出力と排他的論理和演算部216において排他的論理和されるが、セレクタ3,213の出力は0であるため、そのままデータレジスタ214に格納される。
【0036】
第2ラウンド目には、第1鍵生成部(KA生成回路)202においてKAを生成し、セレクタ1,211はラウンド関数回路201の出力を選択し、セレクタ2,212は0を選択し、セレクタ3,213は0を選択する設定とする。
【0037】
ラウンド関数回路201にはラウンド鍵としてKAとセレクタ2,212によって選択された0の排他的論理和、つまりKAが入力される。第2ラウンドで、ラウンド関数回路201にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,211から出力される。セレクタ1,211から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ3,213の出力と排他的論理和演算部216において排他的論理和されるが、セレクタ3,213の出力は0であるため、そのままデータレジスタ214に格納される。
【0038】
第3ラウンド目には、第1鍵生成部(KA生成回路)202においてKAを生成し、さらに、第2鍵生成部(KB生成回路)203においてKBを生成し、セレクタ1,211はラウンド関数回路の出力を選択し、セレクタ2,212はKBを選択し、セレクタ3,213は0を選択する設定とする。
【0039】
この設定により、ラウンド関数回路201にはラウンド鍵としてKAと、セレクタ2,212によって選択されたKBの排他的論理和演算部215における排他的論理和結果[KA(EXOR)KB]がラウンド鍵として入力される。
【0040】
このようにして、第3ラウンドで、ラウンド関数回路201にラウンド鍵[KA(EXOR)KB]が入力されてラウンド関数を実行した結果データはセレクタ1,211から出力される。セレクタ1,211から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ3,213の出力と排他的論理和演算部216において排他的論理和されるが、セレクタ3,213の出力は0であるため、そのままデータレジスタ214に格納される。
上記の処理をラウンド数に応じて繰り返す。
【0041】
第rラウンド目では、第1鍵生成部(KA生成回路)202においてKAを、第2鍵生成部(KB生成回路)203においてKBr+1を生成し、セレクタ1,211はラウンド関数回路201の出力を選択し、セレクタ2,212は0を選択し、セレクタ3,213はKBr+1を選択する設定とする。
【0042】
ラウンド関数回路201にはラウンド鍵としてKAとセレクタ2,212によって選択された0の排他的論理和、つまりKAが入力される。第rラウンドで、ラウンド関数回路201にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,211から出力される。セレクタ1,211から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ3,213の出力と排他的論理和演算部216において排他的論理和される。セレクタ3,213の出力はKBr+1であり、ラウンド関数回路201の出力の下位n/2ビットと、KBr+1との排他的論理和結果がデータレジスタ214に格納される。この処理は、図6に示すrラウンド目の出力とKBr+1との排他的論理和処理を実行する構成に相当する。
【0043】
これらの処理により、データレジスタ214には、暗号文C=C|Cが格納される。
【0044】
図7に示す2系列のFeistel構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図11に示す。図11に示す暗号処理回路も、図10に示す構成とほぼ同様の構成を持つ。
【0045】
1つのラウンド関数回路201と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)202と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)203と、セレクタ1〜2,211,212と、nビットデータレジスタ214と、排他的論理和演算部215、これらの構成は、図10に示す構成と同じである。
【0046】
セレクタ1,211の出力部にある排他的論理和演算部221と、セレクタ3,222が、図10に示す設定とは異なっており、排他的論理和演算部221は、セレクタ1,211の出力の上位n/2ビットと、第2鍵生成部(KB生成回路)203の生成するKBを選択的に入力するセレクタ3,222の出力との排他的論理和演算を行う構成となっている。処理の流れは、図10を参照して説明した処理と同様の処理となる。
【0047】
先に説明した図8の4系列Type−2一般化Feistel構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図12に示す。図12に示す暗号処理回路も、そのほとんどは、図10に示す構成とほぼ同様の構成を持つ。
【0048】
すなわち、1つのラウンド関数回路201と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)202と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)203と、セレクタ1〜2,211,212と、nビットデータレジスタ214と、排他的論理和演算部215、これらの構成は、図10に示す構成と同じである。
【0049】
セレクタ1,211の出力部は、n/4ビットずつの系列に分割する構成とされる。すなわち、セレクタ1,211から出力されるnビットは、上位からn/4ビットの4つのデータに分割される。これは、図8に示すn/4ビットデータの入力系列であるP,P,P,Pに対応する。
【0050】
さらに、これらのn/4ビットデータの入力系列P,P,P,P中の、PおよびPに排他的論理和を実行するための排他的論理和演算部252,253が設定され、第2鍵生成部(KB生成回路)203の生成するKBを選択的に入力するセレクタ3,251の出力との排他的論理和演算を行う構成となっている。処理の流れは、図10を参照して説明した処理とほぼ同様の処理となる。
【0051】
先に説明した図9の4系列Type−2一般化Feistel構造を持つデータ暗号化部のハードウェア構成例としての暗号処理回路構成例を図13に示す。図13に示す暗号処理回路も、そのほとんどは、図10に示す構成とほぼ同様の構成を持つ。
【0052】
すなわち、1つのラウンド関数回路201と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)202と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)203と、セレクタ1〜2,211,212と、nビットデータレジスタ214と、排他的論理和演算部215、これらの構成は、図10に示す構成と同じである。
【0053】
セレクタ1,211の出力部は、図12に示す構成と同様、上位からn/4ビットの4つのデータに分割される。これは、図9に示すn/4ビットデータの入力系列であるP,P,P,Pに対応する。
【0054】
さらに、これらのn/4ビットデータの入力系列P,P,P,P中の、PおよびPに排他的論理和を実行するための排他的論理和演算部272,273が設定され、第2鍵生成部(KB生成回路)203の生成するKBを選択的に入力するセレクタ3,271の出力との排他的論理和演算を行う構成となっている。処理の流れは、図10を参照して説明した処理とほぼ同様の処理となる。
【0055】
図10〜図13を参照して説明したように、複数の中間鍵KAとKBを利用して各ラウンドのラウンド鍵を生成して暗号処理を実行する回路には、多くのセレクタ(3つ)や、第1中間鍵KAベースの鍵KAと第2中間鍵KBベースの鍵KBとの排他的論理和演算回路が必要な構成であり、回路規模が大きくなり、製造コストも高くなるという問題がある。
【非特許文献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
【発明の開示】
【発明が解決しようとする課題】
【0056】
本発明は、上記問題点に鑑みてなされたものであり、複数の中間鍵KAとKBを利用して共通鍵ブロック暗号処理を行う構成において、回路規模を小さくし小型化とコストダウンを実現した暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【0057】
本発明の第1の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
秘密鍵Kに基づいて生成する異なるデータ構成を有する第1中間鍵KA、および第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化部を有し、
前記データ暗号化部は、
ラウンド数rのラウンド関数を実行するラウンド関数実行部であり、前記第1中間鍵KAに基づいて生成されるラウンド鍵KA(ただしiは1〜rの整数)のみを入力鍵としてラウンド関数を実行するラウンド関数実行部と、
前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第2中間鍵KBに基づいて生成される鍵KB(ただしiは0〜r+1の整数)との排他的論理和演算を実行する排他的論理和演算部と、
を有する構成であることを特徴とする暗号処理装置にある。
【0058】
さらに、本発明の暗号処理装置の一実施態様において、前記データ暗号化部は、前記第1中間鍵KAに基づいてラウンド鍵KAの生成処理を実行する第1鍵生成部と、前記第1鍵生成部の生成するラウンド鍵KAのみを入力鍵としてラウンド関数を実行するラウンド関数実行部と、前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第1セレクタと、前記第2中間鍵KBに基づいて鍵KBの生成処理を実行する第2鍵生成部と、前記第2鍵生成部の生成する鍵KBと、値0を含む複数データの選択出力を実行する第2セレクタと、前記第1セレクタの出力データの構成データと、前記第2セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算部と、を有する構成であることを特徴とする。
【0059】
さらに、本発明の暗号処理装置の一実施態様において、前記データ暗号化部は、前記第2鍵生成部の生成する鍵KBを入力し、ビット位置入れ替え処理を実行する入れ替え処理部を有し、前記第2セレクタは、前記第2鍵生成部の生成する鍵KBと、値0と、前記入れ替え処理部の生成データのいずれかを選択出力する構成であることを特徴とする。
【0060】
さらに、本発明の暗号処理装置の一実施態様において、前記第1鍵生成部は、前記第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成し、前記ラウンド関数実行部は、ラウンド1〜rの各ラウンド関数に、前記第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行し、前記第2鍵生成部は、前記第2中間鍵KBに基づいて、前記ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成し、前記排他的論理和演算部は、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データと、前記第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBとの排他的論理和演算を実行する構成であることを特徴とする。
【0061】
さらに、本発明の暗号処理装置の一実施態様において、前記排他的論理和演算部は、前記第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行する構成であることを特徴とする。
【0062】
さらに、本発明の暗号処理装置の一実施態様において、前記排他的論理和演算部は、前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理において、4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行する構成であることを特徴とする。
【0063】
さらに、本発明の暗号処理装置の一実施態様において、前記排他的論理和演算部は、前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第2中間鍵KBに基づいて生成される鍵KBまたは鍵KBの分割鍵との排他的論理和演算を実行する構成であることを特徴とする。
【0064】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド関数実行部は、入力データをnビットとしたとき、n/kビット単位(ただしk≧2)の分割データを入力する構成であり、ラウンド関数実行部に対する入力データと前記ラウンド鍵KAとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成する構成であることを特徴とする。
【0065】
さらに、本発明の暗号処理装置の一実施態様において、前記データ暗号化部は、Feistel構造に従った暗号化処理を実行する構成であることを特徴とする。
【0066】
さらに、本発明の暗号処理装置の一実施態様において、前記第1中間鍵KAは、前記秘密鍵Kに対する非線形変換処理により生成される鍵データであり、前記第2中間鍵KBは、
(a)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
(b)秘密鍵Kに対して線形変換を適用したデータ、
(c)秘密鍵Kそのもの
上記(a)〜(c)のいずれかによって構成されるデータであることを特徴とする。
【0067】
さらに、本発明の第2の側面は、
暗号処理装置において、共通鍵ブロック暗号処理を実行する暗号処理方法であり、
データ暗号化部が、秘密鍵Kに基づいて生成する異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部が、前記第1中間鍵KAに基づいて生成されるラウンド鍵KA(ただしiは1〜rの整数)のみを入力鍵としてラウンド数rのラウンド関数を実行するラウンド関数実行ステップと、
排他的論理和演算部が、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第2中間鍵KBに基づいて生成される鍵KB(ただしiは0〜r+1の整数)との排他的論理和演算を実行する排他的論理和演算ステップと、
を有することを特徴とする暗号処理方法にある。
【0068】
さらに、本発明の暗号処理方法の一実施態様において、前記データ暗号化ステップは、第1鍵生成部が、前記第1中間鍵KAに基づいてラウンド鍵KAの生成処理を実行する第1鍵生成ステップと、ラウンド関数実行部が、前記第1鍵生成部の生成するラウンド鍵KAのみを入力鍵としてラウンド関数を実行するラウンド関数実行ステップと、第1セレクタが、前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第1データ選択ステップと、第2鍵生成部が、前記第2中間鍵KBに基づいて鍵KBの生成処理を実行する第2鍵生成ステップと、第2セレクタが、前記第2鍵生成部の生成する鍵KBと、値0を含む複数データの選択出力を実行する第2データ選択ステップと、排他的論理和演算部が、前記第1セレクタの出力データの構成データと、前記第2セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算ステップとを有することを特徴とする。
【0069】
さらに、本発明の暗号処理方法の一実施態様において、前記データ暗号化ステップは、さらに、入れ替え処理部が、前記第2鍵生成部の生成する鍵KBを入力し、ビット位置入れ替え処理を実行する入れ替え処理ステップを有し、前記第2データ選択ステップは、前記第2鍵生成部の生成する鍵KBと、値0と、前記入れ替え処理部の生成データのいずれかを選択出力するステップであることを特徴とする。
【0070】
さらに、本発明の暗号処理方法の一実施態様において、前記第1鍵生成ステップは、前記第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成し、前記ラウンド関数実行ステップは、ラウンド1〜rの各ラウンド関数に、前記第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行し、前記第2鍵生成ステップは、前記第2中間鍵KBに基づいて、前記ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成し、前記排他的論理和演算ステップは、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データと、前記第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBとの排他的論理和演算を実行するステップであることを特徴とする。
【0071】
さらに、本発明の暗号処理方法の一実施態様において、前記排他的論理和演算ステップは、前記第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行するステップであることを特徴とする。
【0072】
さらに、本発明の暗号処理方法の一実施態様において、前記排他的論理和演算ステップは、前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理において、4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行するステップであることを特徴とする。
【0073】
さらに、本発明の暗号処理方法の一実施態様において、前記排他的論理和演算ステップは、前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第2中間鍵KBに基づいて生成される鍵KBまたは鍵KBの分割鍵との排他的論理和演算を実行するステップであることを特徴とする。
【0074】
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド関数実行ステップは、入力データをnビットとしたとき、n/kビット単位(ただしk≧2)の分割データを入力し、ラウンド関数実行部に対する入力データと前記ラウンド鍵KAとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成するステップであることを特徴とする。
【0075】
さらに、本発明の暗号処理方法の一実施態様において、前記データ暗号化ステップは、Feistel構造に従った暗号化処理を実行するステップであることを特徴とする。
【0076】
さらに、本発明の暗号処理方法の一実施態様において、前記第1中間鍵KAは、前記秘密鍵Kに対する非線形変換処理により生成される鍵データであり、前記第2中間鍵KBは、
(a)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
(b)秘密鍵Kに対して線形変換を適用したデータ、
(c)秘密鍵Kそのもの
上記(a)〜(c)のいずれかによって構成されるデータであることを特徴とする。
【0077】
さらに、本発明の第3の側面は、
暗号処理装置において、共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
データ暗号化部に、秘密鍵Kに基づいて生成する異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なわせるデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部に、前記第1中間鍵KAに基づいて生成されるラウンド鍵KA(ただしiは1〜rの整数)のみを入力鍵としてラウンド関数を実行させるラウンド関数実行ステップと、
排他的論理和演算部に、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第2中間鍵KBに基づいて生成される鍵KB(ただしiは0〜r+1の整数)との排他的論理和演算を実行させる排他的論理和演算ステップと、
を含むことを特徴とするコンピュータ・プログラムにある。
【0078】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0079】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0080】
本発明の一実施例の構成によれば、秘密鍵Kに基づいて生成する複数の異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なう共通鍵ブロック暗号処理構成において、ラウンド関数実行部に第1中間鍵KAに基づいて生成するラウンド鍵KAのみを入力してラウンド関数を実行し、第2中間鍵KBに基づいて生成される鍵KBは、ラウンド関数部におけるF関数に入力することなく、暗号処理対象となる入力データ、またはラウンド関数からの出力データとの排他的論理和演算を実行させる構成とした。本構成により暗号処理回路を簡略化し装置の小型化およびコストダウンを実現することができる。
【発明を実施するための最良の形態】
【0081】
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。本発明の暗号処理装置は、共通鍵ブロック暗号処理を実行する暗号処理装置であり、先に図1を参照して説明したと同様の処理構成を有する。ただし、ラウンド関数等を実行するデータ暗号化部の構成は、先に、図10〜図13を説明した回路構成に比較して簡略化した構成となっている。
【0082】
先に図1を参照して説明したように、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有するデータ暗号化部114と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部112とによって構成される。鍵スケジュール部112は数百ビットの秘密鍵(K)111を数千ビット程度の拡大鍵113に拡張して、データ暗号化部114に供給する。
【0083】
データ暗号化部114では、1からr段までのラウンド関数にそれぞれ{RK,RK,…,RKr−1,RK}のラウンド鍵が入力される。また、初期鍵としてIKが最終鍵としてFKが排他的論理和される。
【0084】
本発明の一実施例に従った暗号処理装置におけるデータ暗号化部において適用する鍵であるラウンド鍵、初期鍵IK、最終鍵FKも、先に説明した処理と同様の処理で生成する。
【0085】
すなわち、kビットの秘密鍵Kに対して非線形変換を行ない、kビットの第1中間鍵KAを作成する。次に、第1中間鍵KAからそれぞれn/2ビットを抜き出し、{KA,KA,…,KAr−1,KA}を構成する。次に、秘密鍵Kからkビットの別のデータを作成し、これを第2中間鍵KBとする。第2中間鍵KBに関しては、
1)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
2)秘密鍵Kに対して線形変換を適用したデータ、
3)秘密鍵Kそのもの
などの設定のいずれかとする。
この第2中間鍵KBから2ラウンドおきにそれぞれn/2ビットを抜き出し,{KB,KB,…,KBr−3,KBr−2}を構成する。
【0086】
ラウンド鍵{RK,RK,…,RKr−1,RK}は、上述した処理によって秘密鍵Kから生成した以下のデータ、
第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA
第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2
これらのデータに基づいて、ラウンド鍵{RK,RK,…,RKr−1,RK}を例えば以下のように設定する。
RK=KA
RK=KA
RK=KA(EXOR)KB
RK=KA(EXOR)KB
RK=KA
・・・・
RKr−4=KAr−4
RKr−3=KAr−3(EXOR)KBr−3
RKr−2=KAr−2(EXOR)KBr−2
RKr−1=KAr−1
RK=KA
とする。なお、上記式において[A(EXOR)B]は、AとBの排他的論理和演算である。初期鍵IK、最終鍵FKに関しても、第2中間鍵KBからそれぞれn/2ビットを抜き出してKBおよびKBr+1を構成し、
IK=KB
FK=KBr+1
とする。
【0087】
前述したように、このような鍵生成構成とすることで、鍵解析の困難性を高め安全性の高い暗号処理が実現される。
【0088】
本願発明の一実施例に従った暗号処理装置は、上記のように複数の鍵(上記の例では、第1中間鍵および第2中間鍵)を混在させてラウンド鍵、初期鍵、最終鍵を生成してデータ暗号処理を行うデータ暗号化部の回路構成の簡略化を実現したものである。
【0089】
本願発明の一実施例においては、簡略化回路構成を実現するため、ラウンド鍵RKの生成に際して選択されたラウンドにおいて入力される第2中間鍵ベースの鍵KBの入力構成を、先に説明した従来構成(図10〜図13)とは異なる構成としている。具体的には、等価変形を用いて、先に説明した従来構成(図10〜図13)とは異なるデータに対して第2中間鍵ベースの鍵KBの排他的論理和演算を行い、結果として、従来と同一の暗号処理アルゴリズムを実行させることを可能としたものである。
【0090】
以下、本願発明に従った暗号処理装置におけるデータ暗号化部の簡略化回路構成の各実施例について説明する。説明は、
(1)実施例1:2系列Feistel構造における第1適用例
(2)実施例2:2系列Feistel構造における第2適用例
(3)実施例3:4系列Feistel構造における第1適用例
(4)実施例4:4系列Feistel構造における第2適用例
【0091】
(1)実施例1:2系列Feistel構造における第1適用例
まず、実施例1として、2系列Feistel構造における第1の適用例について説明する。すなわち、先に図6を参照して説明したnビットの入力平文Pを上位下位n/2ビットずつの2系列に分割して処理を行う2系列のFeistel構造のデータ暗号化部に対応する簡略化回路構成である。なお、図6に示す2系列型の従来の回路構成は図10に示す回路構成である。
【0092】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図17に示す回路構成となるが、この図17に示す回路構成の説明の前に、図14〜図16を参照して、回路の簡略化を実現するための理論的な説明を行う。
【0093】
図6に示す2系列のFeistel構造のデータ暗号化部のラウンド関数に対して入力されるラウンド鍵{RK,RK,…,RKr−1,RK}は、前にも説明したように、
第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA
第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2
これらのデータに基づいて生成され、
第1ラウンド:RK=KA
第2ラウンド:RK=KA
第3ラウンド:RK=KA(EXOR)KB
第4ラウンド:RK=KA(EXOR)KB
第5ラウンド:RK=KA
・・・・
という設定である。
【0094】
例えば第3ラウンドに入力するラウンド鍵、すなわち、
RK=KA(EXOR)KB
この鍵生成のため、図10に示す排他的論理和演算部215が利用されていた。
【0095】
本発明に従った回路(図17参照)では、この図10に示す鍵生成のための排他的論理和演算部215を省略する構成を実現する。この理論について、図14〜図16を参照して説明する。
【0096】
図14は、先に図10を参照して説明した回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。第2ラウンド〜第5ラウンドのラウンド関数のF関数302〜305には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA
第3ラウンド:RK=KA(EXOR)KB
第4ラウンド:RK=KA(EXOR)KB
第5ラウンド:RK=KA
図10に示す回路構成では、これらのラウンド鍵を各ラウンドにおいてラウンド関数回路に入力するため、セレクタ2,212と、排他的論理和演算部215を用いて、各ラウンド鍵の生成を行っている。
【0097】
例えば、図14に示す構成における第3、4ラウンドに示す排他的論理和演算部307,308が、図10に示す排他的論理和演算部215に相当する。第2、第5ラウンドのように、第2中間鍵ベースの鍵KBは使用されないラウンドでは、図10のセレクタ2,212の出力が0に設定され、図10に示す排他的論理和演算部215は、第1中間鍵ベースの鍵KAを変更することなく出力することになる。
【0098】
図15は、本発明に従った図17に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。第2ラウンド〜第5ラウンドのラウンド関数のF関数312〜315には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA
第3ラウンド:RK=KA
第4ラウンド:RK=KA
第5ラウンド:RK=KA
【0099】
さらに、図15に示す構成では、第2ラウンドに入力するnビット中、第2ラウンドのF関数に入力されない側にあるn/2ビット(図に示すデータP)と、第2中間鍵KBベースのn/2ビット鍵KBとの排他的論理和演算を排他的論理和演算部321において実行し、その後、さらに第2ラウンドのF関数312の出力(データQ)と排他的論理和演算部322において、排他的論理和演算を実行して、この結果のn/2ビットデータを第3ラウンドのF関数313の入力として、この入力と第3ラウンドのF関数に入力するラウンド鍵KAとの排他的論理和演算をF関数313内の排他的論理和演算部323において行い、その結果データ(データT')をF関数313内の非線形変換部(Sボックス)に対する入力としている。
【0100】
この図15の構成における第3ラウンドのF関数313内の非線形変換部(Sボックス)に対する入力データ(T')と、図14における第3ラウンドのF関数303内の非線形変換部(Sボックス)に対する入力データ(T)を比較してみる。
【0101】
図14に示す第3ラウンドのF関数内部の非線形演算への入力データ[T]は、図14に示すデータP,Q,KA,KBによる下記の演算結果として表すことができる。
T=P(EXOR)Q(EXOR)KA(EXOR)KB
【0102】
また、図15の構成における第3ラウンドのF関数313内の非線形変換部(Sボックス)に対する入力データ(T')は、図15に示すデータP,Q,KA,KBによる下記の演算結果として表すことができる。なおデータP,Q,KA,KBは、図14に示すデータと同一である。
T'=P(EXOR)KB(EXOR)Q(EXOR)KA
このT'の算出式は、上記Tの算出式と等価である。すなわち、
T'=T
が成立し、図15の構成における第3ラウンドのF関数の非線形変換部に対する入力は、図14の構成における第3ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0103】
このように、第3ラウンドにおけるF関数に入力するラウンド鍵を、
図14の構成では、RK=KA(EXOR)KB
としているが、
図15に示すように、第3ラウンドにおけるF関数に入力するラウンド鍵を、
RK=KA
として、第3ラウンドのF関数に対する入力データの生成段階でKBの排他的論理和演算を実行して、そのデータを第3ラウンドのF関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【0104】
このことは、第4ラウンドについても同様であり、図14の構成では、第4ラウンドにおけるF関数304に入力するラウンド鍵を、排他的論理和演算部308の処理により、
RK=KA(EXOR)KB
として入力しているが、
図15の構成のように、第3ラウンドにおけるF関数314に入力するラウンド鍵を、
RK=KA
として、第4ラウンドのF関数314に対する入力データの生成段階でKBの排他的論理和演算を、排他的論理和演算部324において実行して、そのデータを第4ラウンドのF関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【0105】
次に、図14と図15の構成における第5ラウンドの処理について比較する。
図14は、先に図10を参照して説明した回路を適用した第2ラウンド〜第5ラウンドの処理を説明しており、第2ラウンド〜第5ラウンドのラウンド関数のF関数302〜305には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA
第3ラウンド:RK=KA(EXOR)KB
第4ラウンド:RK=KA(EXOR)KB
第5ラウンド:RK=KA
すなわち、第5ラウンドでは第2中間鍵KBベースの鍵データKBは利用されない。
【0106】
図14に示す第5ラウンドのF関数305の非線形変換部(Sボックス)への入力データ[U]は、図14に示すデータP,Q,R,KAによる下記の演算結果として表すことができる。
U=P(EXOR)Q(EXOR)R(EXOR)KA
【0107】
また、図15の構成における第5ラウンドのF関数315内の非線形変換部(Sボックス)に対する入力データ(U')は、図15に示すデータP,Q,R,KB,KAによる下記の演算結果として表すことができる。なおデータP,Q,R,KB,KAは、図14に示すデータと同一である。
U'=P(EXOR)KB(EXOR)Q(EXOR)KB(EXOR)R(EXOR)KA
このU'の算出式において、同一データである鍵KBについて2回繰り返して排他的論理和演算が実行されている。同じデータを2回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【0108】
従って、上記式は、上記式から鍵KBについての2回の排他的論理和演算を省略した下式、すなわち、
U'=P(EXOR)Q(EXOR)R(EXOR)KA
と同じ結果が得られる。
上記式は、前述の図14を参照して説明した図14に示す第5ラウンドのF関数305の非線形演算への入力データ[U]の算出式、
U=P(EXOR)Q(EXOR)R(EXOR)KA
上記の算出式と同じになる。すなわち、
U'=U
が成立し、図15の構成における第5ラウンドのF関数の非線形変換部に対する入力は、図14の構成における第5ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0109】
このように、従来型の図14に示す構成における第2中間鍵KBベースの鍵データKBが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第1中間鍵KAベースの鍵KAのままに設定して、F関数に対する非入力データ側において、第2中間鍵ベースKBの同一の鍵KBを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【0110】
このような設定は、すべてのラウンドにおいて実現可能である。図15に示すようにラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第1中間鍵KAベースの鍵KAのみとすることができる。具体的には、図16に示すような暗号処理構成が実現される。この図16に示す暗号処理構成は、先に説明した図6に示す暗号処理構成と等価な構成を持つ。すなわち図6に示す暗号処理構成を適用して平文Pを入力して得られる暗号文Cと、図16に示す暗号処理構成を適用して同じ平文Pを入力して得られる暗号文Cとは同一となり、同じ暗号処理が行われることになる。
【0111】
このように、ラウンド関数に対するラウンド鍵を第1中間鍵KAベースの鍵KAのみとして、ラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBの排他的論理和演算を行う構成とすることで、図17に示す簡略化した回路構成を用いた暗号処理が可能となる。
【0112】
すなわち、図17は、図16に示す2系列のFeistel構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図10を参照して説明した図6に示す従来型の2系列のFeistel構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【0113】
図16に示す2系列のFeistel構造を持つデータ暗号化部のハードウェア構成例としての図17に示す暗号処理回路は、1つのラウンド関数回路351と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)352と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)353と、nビットデータレジスタ354と、セレクタ1〜2,355〜356と、排他的論理和演算部357を有する。
【0114】
まず、暗号化開始時には、第2鍵生成部(KB生成回路)353において、KBを生成し、セレクタ1,355は平文入力を、セレクタ2,356はKBを選択する設定とする。セレクタ1,355によって選択された平文入力のnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ2,356によって選択されたKBと、排他的論理和演算部357において排他的論理和された後、データレジスタ354に格納される。この排他的論理和演算部357における排他的論理和処理は、図16に示す構成の第1ラウンドの前の入力データの下位n/2ビット(P)とKBとの排他的論理和演算処理に相当する。
【0115】
第1ラウンド目には、第1鍵生成部(KA生成回路)352においてKAを生成し、第2鍵生成部(KB生成回路)353においてKBを生成し、セレクタ1,355はラウンド関数回路351の出力を選択し、セレクタ2,356はKBを選択する設定とする。ラウンド関数回路351にはラウンド鍵として、第1鍵生成部(KA生成回路)352からKAが入力される。この第1ラウンドにおいて、KAを適用したラウンド関数処理が行われる。これは、図16に示す構成の第1ラウンドの処理に相当する。
【0116】
第1ラウンドで、ラウンド関数回路351にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,355から出力される。セレクタ1,355から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ2,356の出力と排他的論理和演算部357において排他的論理和される。セレクタ2,356の出力は第2鍵生成部(KB生成回路)353において生成されたKBであり、セレクタ1,355から出力される下位n/2と、KBとの排他的論理和演算結果が、データレジスタ354に格納されるnビットデータの下位n/2ビットとなる。データレジスタ354に格納されるnビットデータの上位n/2ビットは、ラウンド関数回路351からセレクタ1,355を介して出力される上位n/2ビットである。
【0117】
第2ラウンド目には、第1鍵生成部(KA生成回路)352においてKAを生成し、第2鍵生成部(KB生成回路)353においてKBを生成し、セレクタ1,355はラウンド関数回路351の出力を選択し、セレクタ2,356は第2鍵生成部(KB生成回路)353において生成されたKBを選択する設定とする。
【0118】
ラウンド関数回路351にはラウンド鍵として、第1鍵生成部(KA生成回路)352において生成されたKAが入力される。第2ラウンドで、ラウンド関数回路351にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,355から出力される。セレクタ1,355から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ2,356の出力と排他的論理和演算部357において排他的論理和される。セレクタ2,356の出力は第2鍵生成部(KB生成回路)353において生成されたKBであるため、セレクタ1,355から出力される下位n/2と、KBとの排他的論理和演算結果が、データレジスタ354に格納されるnビットデータの下位n/2ビットとなる。データレジスタ354に格納されるnビットデータの上位n/2ビットは、ラウンド関数回路351からセレクタ1,355を介して出力される上位n/2ビットである。
【0119】
これらの処理をラウンド数に応じて繰り返す。
第(r−1)ラウンド目には、第1鍵生成部(KA生成回路)352においてKAr−1を生成し、セレクタ1,355はラウンド関数回路351の出力を選択し、セレクタ2,356は0を選択する設定とする。
【0120】
ラウンド関数回路351にはラウンド鍵としてKAr−1が入力される。第(r−1)ラウンドで、ラウンド関数回路351にラウンド鍵[KAr−1]が入力されてラウンド関数を実行した結果データはセレクタ1,355から出力される。セレクタ1,355から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ2,356の出力と排他的論理和演算部357において排他的論理和される。セレクタ2,356の出力は0であり、セレクタ1,355から出力されるnビットがそのままデータレジスタ354に格納される。この処理は、図16に示す(r−1)ラウンドの処理に相当する。図16に示すように最終ラウンドの第rラウンド目に入力する下位n/2ビットには、鍵KBとの排他論理和を行わない構成となっている。
【0121】
最終の第rラウンド目には、第1鍵生成部(KA生成回路)352においてKAを生成し、第2鍵生成部(KB生成回路)353はKBr+1を生成し、セレクタ1,355はラウンド関数回路351の出力を選択し、セレクタ2,356は、第2鍵生成部(KB生成回路)353において生成されたKBr+1を選択する設定とする。
【0122】
ラウンド関数回路351には第1鍵生成部(KA生成回路)352において生成されたラウンド鍵としてKAが入力される。第rラウンドで、ラウンド関数回路351にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,355から出力される。セレクタ1,355から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、下位n/2ビットがセレクタ2,356の出力と排他的論理和演算部357において排他的論理和される。セレクタ2,356の出力はKBr+1であり、ラウンド関数回路351の出力の下位n/2ビットと、KBr+1との排他的論理和結果がデータレジスタ354に格納される。データレジスタ354に格納されるnビットデータの上位n/2ビットは、ラウンド関数回路351からセレクタ1,355を介して出力される上位n/2ビットである。この処理は、図16に示すrラウンド目の出力とKBr+1との排他的論理和処理を実行する構成に相当する。
【0123】
以上の処理により、データレジスタ354には、
暗号文C=C|Cが格納される。
図16に示す暗号化構成の処理を実行する回路として構成される図17に示す回路構成は、先に説明した図6の暗号化構成に対応する図10に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0124】
図17に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第1鍵生成部(KA生成回路)352は、第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成する。
ラウンド関数実行部としてのラウンド関数回路351は、ラウンド1〜rの各ラウンド関数に、第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行する。
第2鍵生成部(KB生成回路)353は、第2中間鍵KBに基づいて、ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成する。
排他的論理和演算部357は、入力データ、またはラウンド関数実行部としてのラウンド関数回路351からの出力データの構成データと、第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBとの排他的論理和演算を実行する。
このような処理構成となる。
【0125】
なお、排他的論理和演算部357は、第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行する。具体的には、4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行する。なお、p+4ラウンド以降も上記のp〜p+3ラウンドと同様、KAを連続2ラウンド、KA(EXOR)KBを連続2ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【0126】
このように図16に示す暗号化構成の処理を実行する図17に示す回路構成は、先に説明した図6の暗号化構成に対応する図10に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0127】
(2)実施例2:2系列Feistel構造における第2適用例
次に、実施例2として、2系列Feistel構造における第2の適用例について説明する。すなわち、先に図7を参照して説明したnビットの入力平文Pを上位下位n/2ビットずつの2系列に分割して処理を行う2系列のFeistel構造のデータ暗号化部に対応する簡略化回路構成である。なお、図7に示す2系列型の従来の回路構成は図11に示す回路構成である。
【0128】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図20に示す回路構成となるが、この図20に示す回路構成の説明の前に、図18〜図19を参照して、回路の簡略化を実現するための理論的な説明を行う。
【0129】
図18は、本発明に従った図20に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。第2ラウンド〜第5ラウンドのラウンド関数のF関数412〜415には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA
第3ラウンド:RK=KA
第4ラウンド:RK=KA
第5ラウンド:RK=KA
【0130】
さらに、図18に示す構成では、第3ラウンドに入力するnビット中、第3ラウンドのF関数に入力するn/2ビットと、第2中間鍵KBベースのn/2ビット鍵KBとの排他的論理和演算を排他的論理和演算部421において実行して、この結果のn/2ビットデータを第3ラウンドのF関数413の入力として、この入力と第3ラウンドのF関数に入力するラウンド鍵KAとの排他的論理和演算をF関数413内の排他的論理和演算部422において行い、その結果データ(データT')をF関数413内の非線形変換部(Sボックス)に対する入力としている。
【0131】
なお、図7に示すFeistel構造と図6に示すFeistel構造とは、初期鍵と最終鍵の入力位置が異なるのみであり、1〜rラウンドのラウンド演算の処理構成は同一であるので、この図18の構成における各ラウンドのF関数に対する入力と、図6、図7のFeistel構造に対応する図14に示す暗号処理構成におけるF関数に対する入力を比較する。図14に示す暗号処理構成は、先に図7に対応する回路構成として説明した図11の回路による暗号処理構成に相当する。
【0132】
図18の構成における第3ラウンドのF関数413内の非線形変換部(Sボックス)に対する入力データ(T')と、図14における第3ラウンドのF関数303内の非線形変換部(Sボックス)に対する入力データ(T)を比較してみる。
【0133】
図14に示す第3ラウンドのF関数内部の非線形演算への入力データ[T]は、先に説明したように、図14に示すデータP,Q,KA,KBによる下記の演算結果として表すことができる。
T=P(EXOR)Q(EXOR)KA(EXOR)KB
【0134】
また、図18の構成における第3ラウンドのF関数413内の非線形変換部(Sボックス)に対する入力データ(T')は、図18に示すデータP,Q,KA,KBによる下記の演算結果として表すことができる。なおデータP,Q,KA,KBは、図14に示すデータと同一である。
T'=P(EXOR)Q(EXOR)KB(EXOR)KA
このT'の算出式は、上記Tの算出式と等価である。すなわち、
T'=T
が成立し、図18の構成における第3ラウンドのF関数の非線形変換部に対する入力は、図14の構成における第3ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0135】
このように、第3ラウンドにおけるF関数に入力するラウンド鍵を、
図14の構成では、RK=KA(EXOR)KB
としているが、
図18に示すように、第3ラウンドにおけるF関数に入力するラウンド鍵を、
RK=KA
として、第3ラウンドのF関数に対する入力データの生成段階でKBの排他的論理和演算を実行して、そのデータを第3ラウンドのF関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【0136】
このことは、第4ラウンドについても同様であり、図14の構成では、第4ラウンドにおけるF関数304に入力するラウンド鍵を、排他的論理和演算部308の処理により、
RK=KA(EXOR)KB
として入力しているが、
図18の構成のように、第3ラウンドにおけるF関数414に入力するラウンド鍵を、
RK=KA
として、第4ラウンドのF関数414に対する入力データの生成段階でKBの排他的論理和演算を、排他的論理和演算部423において実行して、そのデータを第4ラウンドのF関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。
【0137】
次に、図14と図18の構成における第5ラウンドの処理について比較する。
図14は、先に図11を参照して説明した回路を適用した第2ラウンド〜第5ラウンドの処理を説明しており、第2ラウンド〜第5ラウンドのラウンド関数のF関数302〜305には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA
第3ラウンド:RK=KA(EXOR)KB
第4ラウンド:RK=KA(EXOR)KB
第5ラウンド:RK=KA
すなわち、第5ラウンドでは第2中間鍵KBベースの鍵データKBは利用されない。
【0138】
図14に示す第5ラウンドのF関数305の非線形変換部(Sボックス)への入力データ[U]は、図14に示すデータP,Q,R,KAによる下記の演算結果として表すことができる。
U=P(EXOR)Q(EXOR)R(EXOR)KA
【0139】
また、図18の構成における第5ラウンドのF関数415内の非線形変換部(Sボックス)に対する入力データ(U')は、図18に示すデータP,Q,R,KA,KBによる下記の演算結果として表すことができる。なおデータP,Q,R,KA,KBは、図14に示すデータと同一である。
U'=P(EXOR)Q(EXOR)KB(EXOR)R(EXOR)KB(EXOR)KA
このU'の算出式において、同一データである鍵KBについて2回繰り返して排他的論理和演算が実行されている。同じデータを2回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【0140】
従って、上記式は、上記式から鍵KBについての2回の排他的論理和演算を省略した下式、すなわち、
U'=P(EXOR)Q(EXOR)R(EXOR)KA
と同じ結果が得られる。
上記式は、前述の図14を参照して説明した図14に示す第5ラウンドのF関数305の非線形演算への入力データ[U]の算出式、
U=P(EXOR)Q(EXOR)R(EXOR)KA
上記の算出式と同じになる。すなわち、
U'=U
が成立し、図18の構成における第5ラウンドのF関数の非線形変換部に対する入力は、図14の構成における第5ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0141】
このように、従来型の図14に示す構成における第2中間鍵KBベースの鍵データKBが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第1中間鍵KAベースの鍵KAのままに設定して、F関数に対する入力データ側において、第2中間鍵ベースKBの同一の鍵KBを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【0142】
このような設定は、すべてのラウンドにおいて実現可能である。図18に示すようにラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第1中間鍵KAベースの鍵KAのみとすることができる。具体的には、図19に示すような暗号処理構成が実現される。この図19に示す暗号処理構成は、先に説明した図7に示す暗号処理構成と等価な構成を持つ。すなわち図7に示す暗号処理構成を適用して平文Pを入力して得られる暗号文Cと、図19に示す暗号処理構成を適用して同じ平文Pを入力して得られる暗号文Cとは同一となり、同じ暗号処理が行われることになる。
【0143】
このように、ラウンド関数に対するラウンド鍵を第1中間鍵KAベースの鍵KAのみとして、ラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBの排他的論理和演算を行う構成とすることで、図20に示す簡略化した回路構成を用いた暗号処理が可能となる。
【0144】
すなわち、図20は、図19に示す2系列のFeistel構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図11を参照して説明した図7に示す従来型の2系列のFeistel構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【0145】
図20に示す暗号処理回路は、1つのラウンド関数回路451と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)452と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)453と、nビットデータレジスタ454と、セレクタ1〜2,455〜456と、排他的論理和演算部457を有する。
【0146】
まず、暗号化開始時には、第2鍵生成部(KB生成回路)453において、KBを生成し、セレクタ1,455は平文入力を、セレクタ2,456はKBを選択する設定とする。セレクタ1,455によって選択された平文入力のnビットは、上位n/2ビットと下位n/2ビットに分割され、上位n/2ビットがセレクタ2,456によって選択されたKBと、排他的論理和演算部457において排他的論理和された後、データレジスタ454に格納される。この排他的論理和演算部457における排他的論理和処理は、図19に示す構成の第1ラウンドの前の入力データの上位n/2ビット(P)とKBとの排他的論理和演算処理に相当する。
【0147】
第1ラウンド目には、第1鍵生成部(KA生成回路)452においてKAを生成し、セレクタ1,455はラウンド関数回路451の出力を選択し、セレクタ2,456は0を選択する設定とする。ラウンド関数回路451にはラウンド鍵として、第1鍵生成部(KA生成回路)452からKAが入力される。この第1ラウンドにおいて、KAを適用したラウンド関数処理が行われる。これは、図19に示す構成の第1ラウンドの処理に相当する。
【0148】
第1ラウンドで、ラウンド関数回路451にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,455から出力される。セレクタ1,455から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、上位n/2ビットがセレクタ2,456の出力と排他的論理和演算部457において排他的論理和される。セレクタ2,456の出力は0であり、セレクタ1,455から出力されるデータがそのままデータレジスタ454に格納される。
【0149】
第2ラウンド目には、第1鍵生成部(KA生成回路)452においてKAを生成し、セレクタ1,455はラウンド関数回路451の出力を選択し、セレクタ2,456は第2鍵生成部(KB生成回路)453において生成されたKBを選択する設定とする。
【0150】
ラウンド関数回路451にはラウンド鍵として、第1鍵生成部(KA生成回路)452において生成されたKAが入力される。第2ラウンドで、ラウンド関数回路451にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,455から出力される。セレクタ1,455から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、上位n/2ビットがセレクタ2,456の出力と排他的論理和演算部457において排他的論理和される。セレクタ2,456の出力は第2鍵生成部(KB生成回路)453において生成されたKBであるため、セレクタ1,455から出力される上位n/2と、KBとの排他的論理和演算結果が、データレジスタ454に格納されるnビットデータの上位n/2ビットとなる。データレジスタ454に格納されるnビットデータの下位n/2ビットは、ラウンド関数回路451からセレクタ1,455を介して出力される下位n/2ビットである。
【0151】
これらの処理をラウンド数に応じて繰り返す。
第(r−1)ラウンド目には、第1鍵生成部(KA生成回路)452においてKAr−1を生成し、第2鍵生成部(KB生成回路)453ではKBr−2を生成する。セレクタ1,455はラウンド関数回路451の出力を選択し、セレクタ2,456は、第2鍵生成部(KB生成回路)453において生成されたKBr−2を選択する設定とする。
【0152】
ラウンド関数回路451にはラウンド鍵としてKAr−1が入力される。第(r−1)ラウンドで、ラウンド関数回路451にラウンド鍵[KAr−1]が入力されてラウンド関数を実行した結果データはセレクタ1,455から出力される。セレクタ1,455から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、上位n/2ビットがセレクタ2,456の出力と排他的論理和演算部457において排他的論理和される。セレクタ2,456の出力は第2鍵生成部(KB生成回路)453において生成されたKBr−2であり、セレクタ1,455から出力される上位n/2と、KBr−2との排他的論理和演算結果が、データレジスタ454に格納されるnビットデータの上位n/2ビットとなる。データレジスタ454に格納されるnビットデータの下位n/2ビットは、ラウンド関数回路451からセレクタ1,455を介して出力される下位n/2ビットである。この処理は、図19に示す(r−1)ラウンドの処理に相当する。
【0153】
最終の第rラウンド目には、第1鍵生成部(KA生成回路)452においてKAを生成し、第2鍵生成部(KB生成回路)453ではKBr+1を生成する。セレクタ1,455はラウンド関数回路451の出力を選択し、セレクタ2,456は、第2鍵生成部(KB生成回路)453において生成されたKBr+1を選択する設定とする。
【0154】
ラウンド関数回路451には第1鍵生成部(KA生成回路)452において生成されたラウンド鍵としてKAが入力される。第rラウンドで、ラウンド関数回路451にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,455から出力される。セレクタ1,455から出力されるnビットは、上位n/2ビットと下位n/2ビットに分割され、上位n/2ビットがセレクタ2,456の出力と排他的論理和演算部457において排他的論理和される。セレクタ2,456の出力はKBr+1であり、ラウンド関数回路451の出力の上位n/2ビットと、KBr+1との排他的論理和結果がデータレジスタ454に格納される。データレジスタ454に格納されるnビットデータの下位n/2ビットは、ラウンド関数回路451からセレクタ1,455を介して出力される下位n/2ビットである。この処理は、図19に示すrラウンド目の出力とKBr+1との排他的論理和処理を実行する構成に相当する。
【0155】
以上の処理により、データレジスタ454には、
暗号文C=C|Cが格納される。
図19に示す暗号化構成の処理を実行する回路として構成される図20に示す回路構成は、先に説明した図7の暗号化構成に対応する図11に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0156】
図20に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第1鍵生成部(KA生成回路)452は、第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成する。
ラウンド関数実行部としてのラウンド関数回路451は、ラウンド1〜rの各ラウンド関数に、第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行する。
第2鍵生成部(KB生成回路)453は、第2中間鍵KBに基づいて、ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成する。
排他的論理和演算部457は、入力データ、またはラウンド関数実行部としてのラウンド関数回路451からの出力データの構成データと、第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBとの排他的論理和演算を実行する。
このような処理構成となる。
【0157】
なお、排他的論理和演算部457は、第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行する。具体的には、4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行する。なお、p+4ラウンド以降も上記のp〜p+3ラウンドと同様、KAを連続2ラウンド、KA(EXOR)KBを連続2ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【0158】
このように図19に示す暗号化構成の処理を実行する図20に示す回路構成は、先に説明した図7の暗号化構成に対応する図11に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0159】
(3)実施例3:4系列Feistel構造における第1適用例
次に、実施例3として、4系列Feistel構造における第1の適用例について説明する。すなわち、先に図8を参照して説明したnビットの入力平文Pを上位〜下位n/4ビットずつの4系列に分割して処理を行う4系列のFeistel構造のデータ暗号化部に対応する簡略化回路構成である。なお、図8に示す4系列型の従来の回路構成は図12に示す回路構成である。
【0160】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図24に示す回路構成となるが、この図24に示す回路構成の説明の前に、図21〜図23を参照して、回路の簡略化を実現するための理論的な説明を行う。
【0161】
図21は、先に図12を参照して説明した回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。先に説明したように4系列のFeistel構造のデータ暗号化部では、各ラウンドにおいて2つのラウンド関数が実行される。各ラウンドにおける2つのラウンド関数では、n/2ビットのラウンド鍵RKを1/2に分割したn/4ビットのラウンド鍵RK[0]、RK[1]を生成して各ラウンド関数に入力する。同様に、n/2ビットの初期鍵IKについても1/2に分割したn/4ビットのIK[0]、IK[1]を4系列中の2つの系列に入力し、n/2ビットの最終鍵FKについても、1/2に分割したn/4ビットのFK[0]、FK[1]を4系列中の2つの系列に入力する構成としている。
【0162】
図21に示すように、第2ラウンド〜第5ラウンドのラウンド関数のF関数502〜505,512〜515では、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA[0]|KA[1]
第3ラウンド:RK=KA[0](EXOR)KB[0]|KA[1](EXOR)KB[1]
第4ラウンド:RK=KA[0](EXOR)KB[0]|KA[1](EXOR)KB[1]
第5ラウンド:RK=KA[0]|KA[1]
【0163】
図12に示す回路構成では、これらのラウンド鍵を各ラウンドにおいてラウンド関数回路に入力するため、セレクタ2,212と、排他的論理和演算部215を用いて、各ラウンド鍵の生成を行っている。
【0164】
例えば、図21に示す構成における第3、4ラウンドに示す排他的論理和演算部521〜524が、図12に示す排他的論理和演算部215に相当する。第2、第5ラウンドのように、第2中間鍵ベースの鍵KBは使用されないラウンドでは、図12のセレクタ2,212の出力が0に設定され、図12に示す排他的論理和演算部215は、第1中間鍵ベースの鍵KAを変更することなく出力することになる。
【0165】
図22は、本発明に従った図24に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。第2ラウンド〜第5ラウンドのラウンド関数のF関数552〜555,562〜565には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA[0]|KA[1]
第3ラウンド:RK=KA[0]|KA[1]
第4ラウンド:RK=KA[0]|KA[1]
第5ラウンド:RK=KA[0]|KA[1]
【0166】
さらに、図22に示す構成では、各ラウンドに入力するデータのnビット中、各ラウンドのF関数出力側の排他的論理和演算部の前段に排他的論理和部572〜575,582〜585が設定され、各n/4ビットと、第2中間鍵KBベースのn/4ビット鍵KB[0],KB[1]との排他的論理和演算を実行する構成となっている。
【0167】
第2ラウンドでは、
F関数552の出力に対する排他的論理和演算処理の前の排他的論理和部572において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算、
F関数562の出力に対する排他的論理和演算処理の前の排他的論理和部582において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算を実行する構成となっている。
【0168】
第3ラウンドでは、
F関数553の出力に対する排他的論理和演算処理の前の排他的論理和部573において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算、
F関数563の出力に対する排他的論理和演算処理の前の排他的論理和部583において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算を実行する構成となっている。
【0169】
第4ラウンドでは、
F関数554の出力に対する排他的論理和演算処理の前の排他的論理和部574において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算、
F関数564の出力に対する排他的論理和演算処理の前の排他的論理和部584において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算を実行する構成となっている。
【0170】
第5ラウンドでは、
F関数555の出力に対する排他的論理和演算処理の前の排他的論理和部575において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算、
F関数565の出力に対する排他的論理和演算処理の前の排他的論理和部585において、前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算を実行する構成となっている。
【0171】
すなわち、第2ラウンドの開始前に、1ラウンド目のラウンド関数の出力データの(n/4+1)ビット目からn/2ビット目までとKB[0]を排他的論理和し、同様に1ラウンド目のラウンド関数の出力データの(3n/4+1)ビット目からnビット目までとKB[1]を排他的論理和する。
また、第3ラウンドの開始前に、2ラウンド目のラウンド関数の出力データの(n/4+1)ビット目からn/2ビット目までとKB[0]を排他的論理和し、同様に2ラウンド目のラウンド関数の出力データの(3n/4+1)ビット目からnビット目までとKB[1]を排他的論理和する。
【0172】
また、第4ラウンドの開始前に、3ラウンド目のラウンド関数の出力データの(n/4+1)ビット目からn/2ビット目までとKB[1]を排他的論理和し、同様に3ラウンド目のラウンド関数の出力データの(3n/4+1)ビット目からnビット目までとKB[0]を排他的論理和する。
また、第5ラウンドの開始前に、4ラウンド目のラウンド関数の出力データの(n/4+1)ビット目からn/2ビット目までとKB[1]を排他的論理和し、同様に4ラウンド目のラウンド関数の出力データの(3n/4+1)ビット目からnビット目までとKB[0]を排他的論理和する。
【0173】
この図22の構成における第3ラウンドの、
F関数553内の非線形変換部(Sボックス)に対する入力データ(T'[0])、
F関数563内の非線形変換部(Sボックス)に対する入力データ(T'[1])、
と、
図21における第3ラウンドの
F関数503内の非線形変換部(Sボックス)に対する入力データ(T[0])、
F関数513内の非線形変換部(Sボックス)に対する入力データ(T[1])、
を比較してみる。
【0174】
図21における第3ラウンドのF関数503,513の非線形変換部(Sボックス)に対する入力データ:T[0],T[1]は、図21に示すデータP[0],P[1],Q[0],Q[1],KA[0],KA[1],KB[0],KB[1]による下記の演算結果として表すことができる。
T[0]=P[0](EXOR)Q[0](EXOR)KA[0](EXOR)KB[0]
T[1]=P[1](EXOR)Q[1](EXOR)KA[1](EXOR)KB[1]
【0175】
また、図22における第3ラウンドのF関数553,563の非線形変換部(Sボックス)に対する入力データ:T'[0],T'[1]は、図22に示すデータP[0],P[1],Q[0],Q[1],KA[0],KA[1],KB[0],KB[1]による下記の演算結果として表すことができる。なおデータP[0],P[1],Q[0],Q[1],KA[0],KA[1],KB[0],KB[1]は、図21に示すデータと同一である。
T'[0]=P[0](EXOR)KB[0](EXOR)Q[0](EXOR)KA[0]
T'[1]=P[1](EXOR)KB[1](EXOR)Q[1](EXOR)KA[1]
これらのT'[0],T'[1]の算出式は、上記T[0],T[1]の算出式と等価である。すなわち、
T'[0]=T[0]
T'[1]=T[1]
が成立し、図22の構成における第3ラウンドのF関数の非線形変換部に対する入力は、図21の構成における第3ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0176】
このように、第3ラウンドにおける2つのF関数に入力するラウンド鍵を、
図21の構成では、
KA[0](EXOR)KB[0]、およびKA[1](EXOR)KB[1]
としているが、
図22に示すように、第3ラウンドにおけるF関数に入力するラウンド鍵を、
KA[0]とKA[1]、
として、第3ラウンドのF関数に対する入力データの生成段階でKB[0],KB[1]を適用した排他的論理和演算を実行して、そのデータを第3ラウンドのF関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。このことは、第4ラウンドについても同様である。
【0177】
次に、図21と図22の構成における第5ラウンドの処理について比較する。
図21において、第5ラウンドのラウンド関数のF関数505,515には、
第5ラウンド:KA[0],KA[1],
これらの第1中間鍵KAベースの鍵データKAが入力される。すなわち、第5ラウンドでは第2中間鍵KBベースの鍵データKBは利用されない。
【0178】
図21に示す第5ラウンドの2つのF関数505,515の非線形変換部(Sボックス)への入力データU[0],U[1]は、図21に示すデータP[0],P[1],Q[0],Q[1],R[0],R[1],KA[0],KA[1]による下記の演算結果として表すことができる。
U[0]=P[1](EXOR)Q[1](EXOR)R[0](EXOR)KA[0]
U[1]=P[0](EXOR)Q[0](EXOR)R[1](EXOR)KA[1]
【0179】
また、図22における第5ラウンドのF関数555,565の非線形変換部(Sボックス)に対する入力データ:U'[0],U'[1]は、図22に示すデータP[0],P[1],Q[0],Q[1],R[0],R[1],KA[0],KA[1],KB[0],KB[1]による下記の演算結果として表すことができる。なおこれらのデータは、図21に示すデータと同一である。
U'[0]=P[1](EXOR)KB[1](EXOR)Q[1](EXOR)KB[1](EXOR)R[0](EXOR)KA[0]
U'[1]=P[0](EXOR)KB[0](EXOR)Q[0](EXOR)KB[0](EXOR)R[1](EXOR)KA[1]
このU'[0],U'[1]の算出式において、同一データである鍵KB[1]またはKB[0]について2回繰り返して排他的論理和演算が実行されている。同じデータを2回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【0180】
従って、上記式は、上記式から鍵KB[1]またはKB[0]についての2回の排他的論理和演算を省略した下式、すなわち、
U'[0]=P[1](EXOR)Q[1](EXOR)R[0](EXOR)KA[0]
U'[1]=P[0](EXOR)Q[0](EXOR)R[1](EXOR)KA[1]
と同じ結果が得られる。
【0181】
上記式は、前述の図21を参照して説明した図21に示す第5ラウンドのF関数505,515の非線形演算への入力データU[0],U[1]の算出式、
U[0]=P[1](EXOR)Q[1](EXOR)R[0](EXOR)KA[0]
U[1]=P[0](EXOR)Q[0](EXOR)R[1](EXOR)KA[1]
上記の算出式と同じになる。すなわち、
U'[0]=U[0]
U'[1]=U[1]
が成立し、図22の構成における第5ラウンドのF関数の非線形変換部に対する入力は、図21の構成における第5ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0182】
このように、従来型の図21に示す構成における第2中間鍵KBベースの鍵データKBが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第1中間鍵KAベースの鍵KAのままに設定して、F関数に対する非入力データ側において、第2中間鍵ベースKBの同一の鍵KBを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【0183】
このような設定は、すべてのラウンドにおいて実現可能である。図22に示すようにラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第1中間鍵KAベースの鍵KAのみとすることができる。具体的には、図23に示すような暗号処理構成が実現される。この図23に示す暗号処理構成は、先に説明した図8に示す暗号処理構成と等価な構成を持つ。すなわち図8に示す暗号処理構成を適用して平文Pを入力して得られる暗号文Cと、図23に示す暗号処理構成を適用して同じ平文Pを入力して得られる暗号文Cとは同一となり、同じ暗号処理が行われることになる。
【0184】
このように、ラウンド関数に対するラウンド鍵を第1中間鍵KAベースの鍵KAのみによって構成されるKA[0],KA[1]として、ラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBによって構成されるKB[0],KB[1]の排他的論理和演算を行う構成とすることで、図24に示す簡略化した回路構成を用いた暗号処理が可能となる。
【0185】
すなわち、図24は、図23に示す4系列のFeistel構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図12を参照して説明した図8に示す従来型の4系列のFeistel構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【0186】
図24に示す暗号処理回路は、1つのラウンド関数回路601と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)602と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)603と、入れ替え回路604と、nビットデータレジスタ605と、セレクタ1〜2,611〜612と、排他的論理和演算部621,622を有する。入れ替え回路604はn/2ビットの入力の上位n/4ビットと下位n/4ビットを入れ替える回路である。第2鍵生成部(KB生成回路)603の生成する鍵KB[0],KB[1]を入れ替えるために利用される。
【0187】
まず、暗号化開始時には、第2鍵生成部(KB生成回路)603において、KBを生成し、セレクタ1,611は平文入力を、セレクタ2,612はKBを選択する設定とする。セレクタ1,611によって選択された平文入力のnビットは、上位〜下位n/4ビット単位で4分割される。
【0188】
nビット平文データの(n/4+1)ビット目からn/2ビット目までがセレクタ2,612によって選択されたKBの上位n/4ビットであるKB[0]と、排他的論理和演算部621において排他的論理和され、(3n/4+1)ビット目からnビット目までがセレクタ2,612によって選択されたKBの下位n/4ビットであるKB[1]と、排他的論理和演算部622において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ605に格納される。この時点の排他的論理和演算部621,622における排他的論理和処理は、図23に示す構成の第1ラウンドの前の入力データPとKB[0]との排他的論理和演算処理、およびPとKB[1]との排他的論理和演算処理に相当する。
【0189】
第1ラウンド目には、第1鍵生成部(KA生成回路)602においてKAを生成し、第2鍵生成部(KA生成回路)603においてKBを生成し、セレクタ1,611はラウンド関数回路601の出力を選択し、セレクタ2,612はKBを選択する設定とする。ラウンド関数回路601にはラウンド鍵として、第1鍵生成部(KA生成回路)602からKAが入力される。この第1ラウンドにおいて、KAを適用したラウンド関数処理が行われる。これは、図23に示す構成の第1ラウンドの処理に相当する。なお、ラウンド関数回路601では、図23に示すように、2つのF関数の処理、すなわちKA[0]とKA[1]を適用したF関数が実行される。これらのF関数の処理は、並列処理またはシーケンシャル処理のいずれでもよい。なお、以下の説明において、ラウンド鍵[KA]を入力したラウンド関数の処理は、いずれもKA[0]とKA[1]を適用したF関数を実行する処理を含むものである。
【0190】
第1ラウンドで、ラウンド関数回路601にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,611から出力される。セレクタ1,611から出力されるnビットは、n/4ビット単位に分割され、その(n/4+1)ビット目からn/2ビット目までがセレクタ2,612の出力によって選択されたKBの上位n/4ビットであるKB[0]と排他的論理和演算部621において排他的論理和され、(3n/4+1)ビット目からnビット目までがセレクタ2,612の出力によって選択されたKBの下位n/4ビットであるKB[1]と排他的論理和演算部622において排他的論理和され、その他のセレクタ1,611からの出力データはそのままのデータとしてデータレジスタ605に格納される。この時点の排他的論理和演算部621,622における排他的論理和処理は、図23に示す構成の第1ラウンドの出力データとKB[0]、KB[1]との排他的論理和演算処理に相当する。
【0191】
第2ラウンド目には、第1鍵生成部(KA生成回路)602においてKAを生成し、第2鍵生成部(KB生成回路)603においてKBを生成し、セレクタ1,611はラウンド関数回路601の出力を選択し、セレクタ2,612は第2鍵生成部(KB生成回路)603において生成されたKBを選択する設定とする。
【0192】
ラウンド関数回路601にはラウンド鍵として、第1鍵生成部(KA生成回路)602において生成されたKAが入力される。第2ラウンドで、ラウンド関数回路601にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,611から出力される。セレクタ1,611から出力されるnビットは、n/4ビット単位に分割され、その(n/4+1)ビット目からn/2ビット目までがセレクタ2,612の出力によって選択されたKBの上位n/4ビットであるKB[0]と排他的論理和演算部621において排他的論理和され、(3n/4+1)ビット目からnビット目までがセレクタ2,612の出力によって選択されたKBの下位n/4ビットであるKB[1]と排他的論理和演算部622において排他的論理和され、その他のセレクタ1,611からの出力データはそのままのデータとしてデータレジスタ605に格納される。この時点の排他的論理和演算部621,622における排他的論理和処理は、図23に示す構成の第2ラウンドの出力データとKB[0]、KB[1]との排他的論理和演算処理に相当する。
【0193】
第3ラウンド目には、第1鍵生成部(KA生成回路)602においてKAを生成し、第2鍵生成部(KB生成回路)603においてKBを生成し、セレクタ1,611はラウンド関数回路601の出力を選択し、セレクタ2,612は入れ替え回路604の出力を選択する設定とする。入れ替え回路604は、第2鍵生成部(KB生成回路)603において生成されたn/2ビット鍵KBの上位n/4ビットと下位n/4ビットの入れ替えを行う。すなわち、KB[0],KB[1]は入れ替えられてKB[1],KB[0]としてセレクタ2,612から出力される。
【0194】
ラウンド関数回路601にはラウンド鍵として、第1鍵生成部(KA生成回路)602において生成されたKAが入力される。第3ラウンドで、ラウンド関数回路601にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,611から出力される。セレクタ1,611から出力されるnビットは、n/4ビット単位に分割され、その(n/4+1)ビット目からn/2ビット目までがセレクタ2,612の出力によって選択されたKBの入れ替えデータの上位n/4ビットであるKB[1]と排他的論理和演算部621において排他的論理和され、(3n/4+1)ビット目からnビット目までがセレクタ2,612の出力によって選択されたKB[0]と排他的論理和演算部622において排他的論理和され、その他のセレクタ1,611からの出力データはそのままのデータとしてデータレジスタ605に格納される。この時点の排他的論理和演算部621,622における排他的論理和処理は、図23に示す構成の第3ラウンドの出力データとKB[1]、KB[0]との排他的論理和演算処理に相当する。
【0195】
これらの処理をラウンド数に応じて繰り返す。
第(r−1)ラウンド目には、第1鍵生成部(KA生成回路)602においてKAr−1を生成し、セレクタ1,611はラウンド関数回路601の出力を選択し、セレクタ2,612は0を選択する設定とする。
【0196】
ラウンド関数回路601にはラウンド鍵としてKAr−1が入力される。第(r−1)ラウンドで、ラウンド関数回路601にラウンド鍵[KAr−1]が入力されてラウンド関数を実行した結果データはセレクタ1,611から出力される。セレクタ1,611から出力されるnビットは、n/4ビット単位に分割され、その(n/4+1)ビット目からn/2ビット目までがセレクタ2,612の出力によって選択された[0]と排他的論理和演算部621において排他的論理和され、(3n/4+1)ビット目からnビット目までがセレクタ2,612の出力によって選択された[0]と排他的論理和演算部622において排他的論理和される。結果として、セレクタ1,611からの出力データはそのままのデータとしてデータレジスタ605に格納される。この処理は、図23に示す構成の第(r−1)ラウンドの出力処理に相当する。
【0197】
最終の第rラウンド目には、第1鍵生成部(KA生成回路)602においてKAを生成し、第2鍵生成部(KB生成回路)603はKBr+1を生成し、セレクタ1,611はラウンド関数回路601の出力を選択し、セレクタ2,612は、第2鍵生成部(KB生成回路)603において生成されたKBr+1を選択する設定とする。
【0198】
ラウンド関数回路601には第1鍵生成部(KA生成回路)602において生成されたラウンド鍵としてKAが入力される。第rラウンドで、ラウンド関数回路601にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,611から出力される。セレクタ1,611から出力されるnビットは、n/4ビット単位に分割され、その(n/4+1)ビット目からn/2ビット目までがセレクタ2,612の出力によって選択されたKBr+1の上位n/4ビットであるKBr+1[0]と排他的論理和演算部621において排他的論理和され、(3n/4+1)ビット目からnビット目までがセレクタ2,612の出力によって選択されたKBr+1の下位n/4ビットであるKBr+1[1]と排他的論理和演算部622において排他的論理和され、その他のセレクタ1,611からの出力データはそのままのデータとしてデータレジスタ605に格納される。この時点の排他的論理和演算部621,622における排他的論理和処理は、図23に示す構成の第rラウンドの出力データとKBr+1[0]、KBr+1[1]との排他的論理和演算処理に相当する。
【0199】
以上の処理により、データレジスタ605には、
暗号文C=C|C|C|Cが格納される。
図23に示す暗号化構成の処理を実行する回路として構成される図24に示す回路構成は、先に説明した図8の暗号化構成に対応する図12に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0200】
図24に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第1鍵生成部(KA生成回路)602は、第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成する。
ラウンド関数実行部としてのラウンド関数回路601は、ラウンド1〜rの各ラウンド関数に、第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行する。なお、各ラウンドでは、KA[0]とKA[1]を適用したF関数を実行する。
第2鍵生成部(KB生成回路)603は、第2中間鍵KBに基づいて、ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成する。
入れ替え回路604は、第2鍵生成部(KB生成回路)603の生成するn/2ビット鍵KBの上位下位n/4ビットKB[0],KB[1]を入れ替える。
排他的論理和演算部621,622は、入力データ、またはラウンド関数実行部としてのラウンド関数回路601からの出力データの構成データと、第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBの構成データKB[0]とKB[1]との排他的論理和演算を実行する。
このような処理構成となる。
【0201】
なお、排他的論理和演算部621,622は、第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵、具体的には鍵KBの構成データKB[0]とKB[1]を異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行する。具体的には、4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行する。なお、p+4ラウンド以降も上記のp〜p+3ラウンドと同様、KAを連続2ラウンド、KA(EXOR)KBを連続2ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【0202】
なお、各F関数に対する入力する鍵としては、
(a)pラウンドのF関数に鍵KA[0]とKA[1]を入力、
(b)p+1ラウンドにラウンド鍵KAp+1[0]とKAp+1[1]を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2[0](EXOR)KBp+2[0]]と[KAp+2[1](EXOR)KBp+2[1]]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3[0](EXOR)KBp+3[0]]と[KAp+3[1](EXOR)KBp+3[1]]を入力、
このような入力設定と等価となるように排他的論理和演算部621,622において、第2中間鍵KBに基づいて生成される鍵KB[0]とKB[1]を適用した排他的論理和演算を実行する。
【0203】
このように図23に示す暗号化構成の処理を実行する図24に示す回路構成は、先に説明した図8の暗号化構成に対応する図12に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0204】
(4)実施例4:4系列Feistel構造における第2適用例
次に、実施例4として、4系列Feistel構造における第2の適用例について説明する。すなわち、先に図9を参照して説明したnビットの入力平文Pを上位〜下位n/4ビットずつの4系列に分割して処理を行う4系列のFeistel構造のデータ暗号化部に対応する簡略化回路構成である。なお、図9に示す4系列型の従来の回路構成は図13に示す回路構成である。
【0205】
本実施例に係るラウンド関数を実行するデータ暗号化部の回路構成は図27に示す回路構成となるが、この図27に示す回路構成の説明の前に、図25〜図26を参照して、回路の簡略化を実現するための理論的な説明を行う。
【0206】
図25は、本発明に従った図27に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。第2ラウンド〜第5ラウンドのラウンド関数のF関数752〜755,762〜765には、以下のラウンド鍵が入力される。
第2ラウンド:RK=KA[0]|KA[1]
第3ラウンド:RK=KA[0]|KA[1]
第4ラウンド:RK=KA[0]|KA[1]
第5ラウンド:RK=KA[0]|KA[1]
【0207】
さらに、図25に示す構成では、第2ラウンドを除き各ラウンドに入力するデータのnビット中、各ラウンドのF関数入力側の入力データ部の前段に排他的論理和部773〜775,782〜785が設定され、各n/4ビットと、第2中間鍵KBベースのn/4ビット鍵KB[0],KB[1]との排他的論理和演算を実行する構成となっている。
【0208】
第3ラウンドでは、
F関数753に入力する前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算、
F関数763に入力する前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算を実行する構成となっている。
【0209】
第4ラウンドでは、
F関数754に入力する前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算、
F関数764に入力する前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算を実行する構成となっている。
【0210】
第5ラウンドでは、
F関数755に入力する前ラウンドからのn/4ビッデータとn/4ビット鍵KB[1]との排他的論理和演算、
F関数765に入力する前ラウンドからのn/4ビッデータとn/4ビット鍵KB[0]との排他的論理和演算を実行する構成となっている。
【0211】
すなわち、第3ラウンドの開始前に、2ラウンド目のラウンド関数の出力データの1ビット目からn/4ビット目までとKB[0]を排他的論理和し、同様に2ラウンド目のラウンド関数の出力データの(n/2+1)ビット目から3n/4ビット目までとKB[1]を排他的論理和する。
【0212】
さらに、第4ラウンドの開始前に、3ラウンド目のラウンド関数の出力データの1ビット目からn/4ビット目までとKB[0]を排他的論理和し、同様に3ラウンド目のラウンド関数の出力データの(n/2+1)ビット目から3n/4ビット目までとKB[1]を排他的論理和する。
【0213】
さらに、第5ラウンドの開始前に、4ラウンド目のラウンド関数の出力データの1ビット目からn/4ビット目までとKB[1]を排他的論理和し、同様に4ラウンド目のラウンド関数の出力データの(n/2+1)ビット目から3n/4ビット目までとKB[0]を排他的論理和する。
【0214】
なお、図9に示すFeistel構造と図8に示すFeistel構造とは、初期鍵と最終鍵の入力位置が異なるのみであり、1〜rラウンドのラウンド演算の処理構成は同一であるので、この図25の構成における各ラウンドのF関数に対する入力と、図8、図9のFeistel構造に対応する先に説明した図21に示す暗号処理構成におけるF関数に対する入力を比較する。図21に示す暗号処理構成は、先に図9に対応する回路構成として説明した図13の回路による暗号処理構成に相当する。
【0215】
この図25の構成における第3ラウンドの、
F関数753内の非線形変換部(Sボックス)に対する入力データ(T'[0])、
F関数763内の非線形変換部(Sボックス)に対する入力データ(T'[1])、
と、
図21における第3ラウンドの
F関数503内の非線形変換部(Sボックス)に対する入力データ(T[0])、
F関数513内の非線形変換部(Sボックス)に対する入力データ(T[1])、
を比較してみる。
【0216】
図21における第3ラウンドのF関数503,513の非線形変換部(Sボックス)に対する入力データ:T[0],T[1]は、先に説明したように、図21に示すデータP[0],P[1],Q[0],Q[1],KA[0],KA[1],KB[0],KB[1]による下記の演算結果として表すことができる。
T[0]=P[0](EXOR)Q[0](EXOR)KA[0](EXOR)KB[0]
T[1]=P[1](EXOR)Q[1](EXOR)KA[1](EXOR)KB[1]
【0217】
また、図25における第3ラウンドのF関数753,763の非線形変換部(Sボックス)に対する入力データ:T'[0],T'[1]は、図25に示すデータP[0],P[1],Q[0],Q[1],KA[0],KA[1],KB[0],KB[1]による下記の演算結果として表すことができる。なおデータP[0],P[1],Q[0],Q[1],KA[0],KA[1],KB[0],KB[1]は、図21に示すデータと同一である。
T'[0]=P[0](EXOR)Q[0](EXOR)KB[0](EXOR)KA[0]
T'[1]=P[1](EXOR)Q[1](EXOR)KB[1](EXOR)KA[1]
これらのT'[0],T'[1]の算出式は、上記T[0],T[1]の算出式と等価である。すなわち、
T'[0]=T[0]
T'[1]=T[1]
が成立し、図25の構成における第3ラウンドのF関数の非線形変換部に対する入力は、図21の構成における第3ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0218】
このように、第3ラウンドにおける2つのF関数に入力するラウンド鍵を、
図21の構成では、
KA[0](EXOR)KB[0]、およびKA[1](EXOR)KB[1]
としているが、
図25に示すように、第3ラウンドにおけるF関数に入力するラウンド鍵を、
KA[0]とKA[1]、
として、第3ラウンドのF関数に対する入力データの生成段階でKB[0],KB[1]を適用した排他的論理和演算を実行して、そのデータを第3ラウンドのF関数に入力するデータとしても、結果としては同じ暗号処理が行われることになる。このことは、第4ラウンドについても同様である。
【0219】
次に、図21と図25の構成における第5ラウンドの処理について比較する。
図21において、第5ラウンドのラウンド関数のF関数505,515には、
第5ラウンド:KA[0],KA[1],
これらの第1中間鍵KAベースの鍵データKAが入力される。すなわち、第5ラウンドでは第2中間鍵KBベースの鍵データKBは利用されない。
【0220】
図21に示す第5ラウンドの2つのF関数505,515の非線形変換部(Sボックス)への入力データU[0],U[1]は、先に説明したように、図21に示すデータP[0],P[1],Q[0],Q[1],R[0],R[1],KA[0],KA[1]による下記の演算結果として表すことができる。
U[0]=P[1](EXOR)Q[1](EXOR)R[0](EXOR)KA[0]
U[1]=P[0](EXOR)Q[0](EXOR)R[1](EXOR)KA[1]
【0221】
また、図25における第5ラウンドのF関数755,765の非線形変換部(Sボックス)に対する入力データ:U'[0],U'[1]は、図25に示すデータP[0],P[1],Q[0],Q[1],R[0],R[1],KA[0],KA[1],KB[0],KB[1]による下記の演算結果として表すことができる。なおこれらのデータは、図21に示すデータと同一である。
U'[0]=P[1](EXOR)Q[1](EXOR)KB[1](EXOR)R[0](EXOR)KB[1](EXOR)KA[0]
U'[1]=P[0](EXOR)Q[0](EXOR)KB[0](EXOR)R[1](EXOR)KB[0](EXOR)KA[1]
このU'[0],U'[1]の算出式において、同一データである鍵KB[1]またはKB[0]について2回繰り返して排他的論理和演算が実行されている。同じデータを2回繰り返して排他的論理和演算を行う処理は、その排他的論理和演算を実行しないのと同じ処理となる。
【0222】
従って、上記式は、上記式から鍵KB[1]またはKB[0]についての2回の排他的論理和演算を省略した下式、すなわち、
U'[0]=P[1](EXOR)Q[1](EXOR)R[0](EXOR)KA[0]
U'[1]=P[0](EXOR)Q[0](EXOR)R[1](EXOR)KA[1]
と同じ結果が得られる。
【0223】
上記式は、前述の図21を参照して説明した図21に示す第5ラウンドのF関数505,515の非線形演算への入力データU[0],U[1]の算出式、
U[0]=P[1](EXOR)Q[1](EXOR)R[0](EXOR)KA[0]
U[1]=P[0](EXOR)Q[0](EXOR)R[1](EXOR)KA[1]
上記の算出式と同じになる。すなわち、
U'[0]=U[0]
U'[1]=U[1]
が成立し、図25の構成における第5ラウンドのF関数の非線形変換部に対する入力は、図21の構成における第5ラウンドのF関数の非線形変換部に対する入力と同一となる。
【0224】
このように、従来型の図21に示す構成における第2中間鍵KBベースの鍵データKBが利用されないラウンドにおいても、そのラウンドに対して入力するラウンド鍵は、第1中間鍵KAベースの鍵KAのままに設定して、F関数に対する入力データ側において、第2中間鍵ベースKBの同一の鍵KBを偶数回繰り返して排他的論理和演算を行わせる設定とすることで、結果としては同じ暗号処理が行われることになる。
【0225】
このような設定は、すべてのラウンドにおいて実現可能である。図25に示すようにラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBの排他的論理和演算を行う構成とすることで、各ラウンドにおいて適用するラウンド鍵を第1中間鍵KAベースの鍵KAのみとすることができる。具体的には、図26に示すような暗号処理構成が実現される。この図26に示す暗号処理構成は、先に説明した図9に示す暗号処理構成と等価な構成を持つ。すなわち図9に示す暗号処理構成を適用して平文Pを入力して得られる暗号文Cと、図26に示す暗号処理構成を適用して同じ平文Pを入力して得られる暗号文Cとは同一となり、同じ暗号処理が行われることになる。
【0226】
このように、ラウンド関数に対するラウンド鍵を第1中間鍵KAベースの鍵KAのみによって構成されるKA[0],KA[1]として、ラウンド関数に対する入力データに対して第2中間鍵KBベースの鍵KBによって構成されるKB[0],KB[1]の排他的論理和演算を行う構成とすることで、図27に示す簡略化した回路構成を用いた暗号処理が可能となる。
【0227】
すなわち、図27は、図26に示す4系列のFeistel構造を持つデータ暗号化部のハードウェア構成である。この構成は、先に図13を参照して説明した図9に示す従来型の4系列のFeistel構造を持つデータ暗号化部のハードウェア構成に比較してセレクタ数が削減され、また排他論理和演算部も削減された簡略化した回路構成となっている。
【0228】
図27に示す暗号処理回路は、1つのラウンド関数回路801と、秘密鍵Kに基づいて例えば非線形変換によって生成される第1中間鍵KAから、第1中間鍵KAベースのn/2ビット鍵{KA,KA,…,KAr−1,KA}を生成する第1鍵生成部(KA生成回路)802と、秘密鍵Kに基づいて例えば異なる非線形変換によって生成される第2中間鍵KBから、第2中間鍵KBベースのn/2ビット鍵{KB,KB,…,KBr−3,KBr−2}を生成する第2鍵生成部(KB生成回路)803と、入れ替え回路804と、nビットデータレジスタ805と、セレクタ1〜2,811〜812と、排他的論理和演算部821,822を有する。入れ替え回路804はn/2ビットの入力の上位n/4ビットと下位n/4ビットを入れ替える回路である。第2鍵生成部(KB生成回路)803の生成する鍵KB[0],KB[1]を入れ替えるために利用される。
【0229】
まず、暗号化開始時には、第2鍵生成部(KB生成回路)803において、KBを生成し、セレクタ1,811は平文入力を、セレクタ2,812はKBを選択する設定とする。セレクタ1,811によって選択された平文入力のnビットは、上位〜下位n/4ビット単位で4分割される。
【0230】
nビット平文データの1ビット目からn/4ビット目までがセレクタ2,812によって選択されたKBの上位n/4ビットであるKB[0]と、排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812によって選択されたKBの下位n/4ビットであるKB[1]と、排他的論理和演算部822において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第1ラウンドの前の入力データPとKB[0]との排他的論理和演算処理、およびPとKB[1]との排他的論理和演算処理に相当する。
【0231】
第1ラウンド目には、第1鍵生成部(KA生成回路)802においてKAを生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812は[0]を選択する設定とする。ラウンド関数回路801にはラウンド鍵として、第1鍵生成部(KA生成回路)802からKAが入力される。この第1ラウンドにおいて、KAを適用したラウンド関数処理が行われる。これは、図26に示す構成の第1ラウンドの処理に相当する。なお、ラウンド関数回路801では、図26に示すように、2つのF関数の処理、すなわちKA[0]とKA[1]を適用したF関数が実行される。これらのF関数の処理は、並列処理またはシーケンシャル処理のいずれでもよい。なお、以下の説明において、ラウンド鍵[KA]を入力したラウンド関数の処理は、いずれもKA[0]とKA[1]を適用したF関数を実行する処理を含むものである。
【0232】
第1ラウンドで、ラウンド関数回路801にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,811から出力される。セレクタ1,811から出力されるnビットは、n/4ビット単位に分割され、その1ビット目からn/4ビット目と、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812の出力と排他的論理和演算部821、排他的論理和演算部822において排他的論理和されるが、セレクタ2,812の出力は[0]であり、セレクタ1,811からの出力データはそのままのデータとしてデータレジスタ805に格納される。この時点の処理は、図26に示す構成の第1ラウンドの処理に相当する。
【0233】
第2ラウンド目には、第1鍵生成部(KA生成回路)802においてKAを生成し、第2鍵生成部(KB生成回路)803において、KBを生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812はKBを選択する設定とする。セレクタ1,811によって選択されたラウンド関数回路801の出力のnビットは、上位〜下位n/4ビット単位で4分割される。
【0234】
ラウンド関数回路801の出力nビットデータの1ビット目からn/4ビット目までがセレクタ2,812によって選択されたKBの上位n/4ビットであるKB[0]と、排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812によって選択されたKBの下位n/4ビットであるKB[1]と、排他的論理和演算部822において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第2ラウンドの出力データとKB[0]、KB[1]との排他的論理和演算処理に相当する。
【0235】
第3ラウンド目には、第1鍵生成部(KA生成回路)802においてKAを生成し、第2鍵生成部(KB生成回路)803において、KBを生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812はKBを選択する設定とする。セレクタ1,811によって選択されたラウンド関数回路801の出力のnビットは、上位〜下位n/4ビット単位で4分割される。
【0236】
ラウンド関数回路801の出力nビットデータの1ビット目からn/4ビット目までがセレクタ2,812によって選択されたKBの上位n/4ビットであるKB[0]と、排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812によって選択されたKBの下位n/4ビットであるKB[1]と、排他的論理和演算部822において排他的論理和され、その他の平文データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第3ラウンドの出力データとKB[0]、KB[1]との排他的論理和演算処理に相当する。
【0237】
第4ラウンド目には、第1鍵生成部(KA生成回路)802においてKAを生成し、第2鍵生成部(KB生成回路)803において、KBを生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812は入れ替え回路804の出力を選択する設定とする。入れ替え回路804は、第2鍵生成部(KB生成回路)803において生成されたn/2ビット鍵KBの上位n/4ビットと下位n/4ビットの入れ替えを行う。すなわち、KB[0],KB[1]は入れ替えられてKB[1],KB[0]としてセレクタ2,812から出力される。
【0238】
ラウンド関数回路801にはラウンド鍵として、第1鍵生成部(KA生成回路)802において生成されたKAが入力される。第4ラウンドで、ラウンド関数回路801にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,811から出力される。セレクタ1,811から出力されるnビットは、n/4ビット単位に分割され、その1ビット目からn/4ビット目までがセレクタ2,812の出力によって選択されたKBの入れ替えデータの上位n/4ビットであるKB[1]と排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812の出力によって選択されたKB[0]と排他的論理和演算部822において排他的論理和され、その他のセレクタ1,811からの出力データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第4ラウンドの出力データとKB[1]、KB[0]との排他的論理和演算処理に相当する。
【0239】
第5ラウンド目には、第1鍵生成部(KA生成回路)802においてKAを生成し、第2鍵生成部(KB生成回路)803において、KBを生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812は入れ替え回路804の出力を選択する設定とする。入れ替え回路804は、第2鍵生成部(KB生成回路)803において生成されたn/2ビット鍵KBの上位n/4ビットと下位n/4ビットの入れ替えを行う。すなわち、KB[0],KB[1]は入れ替えられてKB[1],KB[0]としてセレクタ2,812から出力される。
【0240】
ラウンド関数回路801にはラウンド鍵として、第1鍵生成部(KA生成回路)802において生成されたKAが入力される。第5ラウンドで、ラウンド関数回路801にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,811から出力される。セレクタ1,811から出力されるnビットは、n/4ビット単位に分割され、その1ビット目からn/4ビット目までがセレクタ2,812の出力によって選択されたKBの入れ替えデータの上位n/4ビットであるKB[1]と排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812の出力によって選択されたKB[0]と排他的論理和演算部822において排他的論理和され、その他のセレクタ1,811からの出力データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第5ラウンドの出力データとKB[1]、KB[0]との排他的論理和演算処理に相当する。
【0241】
上記をラウンド数に応じて繰り返す。
第(r−1)ラウンド目には、第1鍵生成部(KA生成回路)802においてKAr−1を生成し、第2鍵生成部(KB生成回路)803において、KBr−2を生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812は入れ替え回路804の出力を選択する設定とする。入れ替え回路804では、第2鍵生成部(KB生成回路)803において生成したn/2ビット鍵:KBr−2を入力し、KBr−2の上位n/4ビットと下位n/4ビットが入れ替えられ、セレクタ2,812は上位n/4ビットがKBr−2[1]、下位n/4ビットがKBr−2[0]の鍵を出力する。
【0242】
ラウンド関数回路801にはラウンド鍵として、第1鍵生成部(KA生成回路)802において生成されたKAr−1が入力される。第(r−1)ラウンドで、ラウンド関数回路801にラウンド鍵[KAr−1]が入力されてラウンド関数を実行した結果データはセレクタ1,811から出力される。セレクタ1,811から出力されるnビットは、n/4ビット単位に分割され、その1ビット目からn/4ビット目までがセレクタ2,812の出力によって選択されたKBr−2の入れ替えデータの上位n/4ビットであるKBr−2[1]と排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812の出力によって選択されたKBr−2[0]と排他的論理和演算部822において排他的論理和され、その他のセレクタ1,811からの出力データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第(r−1)ラウンドの出力データとKBr−2[1]、KBr−2[0]との排他的論理和演算処理に相当する。
【0243】
第rラウンド目には、第1鍵生成部(KA生成回路)802においてKAを生成し、第2鍵生成部(KB生成回路)803において、KBr+1を生成し、セレクタ1,811はラウンド関数回路801の出力を選択し、セレクタ2,812は第2鍵生成部(KB生成回路)803において生成されるKBr+1を選択する設定とする。
【0244】
ラウンド関数回路801にはラウンド鍵として、第1鍵生成部(KA生成回路)802において生成されたKAが入力される。第rラウンドで、ラウンド関数回路801にラウンド鍵[KA]が入力されてラウンド関数を実行した結果データはセレクタ1,811から出力される。セレクタ1,811から出力されるnビットは、n/4ビット単位に分割され、その1ビット目からn/4ビット目までがセレクタ2,812の出力によって選択されたKBr+1の上位n/4ビットであるKBr+1[0]と排他的論理和演算部821において排他的論理和され、(n/2+1)ビット目から3n/4ビット目までがセレクタ2,812の出力によって選択されたKBr+1[1]と排他的論理和演算部822において排他的論理和され、その他のセレクタ1,811からの出力データはそのままのデータとしてデータレジスタ805に格納される。この時点の排他的論理和演算部821,822における排他的論理和処理は、図26に示す構成の第rラウンドの出力データとKBr+1[0]、KBr+1[1]との排他的論理和演算処理に相当する。
【0245】
以上の処理により、データレジスタ805には、
暗号文C=C|C|C|Cが格納される。
図26に示す暗号化構成の処理を実行する回路として構成される図27に示す回路構成は、先に説明した図9の暗号化構成に対応する図13に示す回路構成と比較して簡略化された構成である、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0246】
図27に示す暗号処理回路の各構成部の実行する処理をまとめると以下のようになる。
第1鍵生成部(KA生成回路)802は、第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成する。
ラウンド関数実行部としてのラウンド関数回路801は、ラウンド1〜rの各ラウンド関数に、第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行する。なお、各ラウンドでは、KA[0]とKA[1]を適用したF関数を実行する。
第2鍵生成部(KB生成回路)803は、第2中間鍵KBに基づいて、ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成する。
入れ替え回路804は、第2鍵生成部(KB生成回路)803の生成するn/2ビット鍵KBの上位下位n/4ビットKB[0],KB[1]を入れ替える。
排他的論理和演算部821,822は、入力データ、またはラウンド関数実行部としてのラウンド関数回路801からの出力データの構成データと、第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBの構成データKB[0]とKB[1]との排他的論理和演算を実行する。
このような処理構成となる。
【0247】
なお、排他的論理和演算部821,822は、第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵、具体的には鍵KBの構成データKB[0]とKB[1]を異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行する。具体的には、4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行する。なお、p+4ラウンド以降も上記のp〜p+3ラウンドと同様、KAを連続2ラウンド、KA(EXOR)KBを連続2ラウンドに入力した設定と等価となるように排他的論理和演算処理を実行する。
【0248】
なお、各F関数に対する入力する鍵としては、
(a)pラウンドのF関数に鍵KA[0]とKA[1]を入力、
(b)p+1ラウンドにラウンド鍵KAp+1[0]とKAp+1[1]を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2[0](EXOR)KBp+2[0]]と[KAp+2[1](EXOR)KBp+2[1]]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3[0](EXOR)KBp+3[0]]と[KAp+3[1](EXOR)KBp+3[1]]を入力、
このような入力設定と等価となるように排他的論理和演算部821,822において、第2中間鍵KBに基づいて生成される鍵KB[0]とKB[1]を適用した排他的論理和演算を実行する。
【0249】
このように図26に示す暗号化構成の処理を実行する図27に示す回路構成は、先に説明した図9の暗号化構成に対応する図13に示す回路構成と比較して簡略化された構成、すなわちセレクタ回路および排他的論理和回路が一つずつ削減され、回路の小型化およびコスト削減が可能となる。
【0250】
[暗号処理装置としてのICモジュール構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール900の構成例を図28に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図28に示すICモジュール900は、これら様々な機器に構成することが可能である。
【0251】
図28に示すCPU(Central processing Unit)901は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ902は、CPU901が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU901の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ902は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。暗号処理部903は、例えば上述した各種の暗号処理構成、例えば、Feistel構造に従った共通鍵ブロック暗号処理アルゴリズムを実行する。
【0252】
また、暗号処理部903は、上述した各実施例において説明したように、秘密鍵Kに基づく第1中間鍵KA、第2中間鍵KBを生成して、ラウンド関数を実行する。第1中間鍵KAは、秘密鍵Kに対する非線形変換処理により生成される鍵データであり、第2中間鍵KBは、
(a)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
(b)秘密鍵Kに対して線形変換を適用したデータ、
(c)秘密鍵Kそのもの
上記(a)〜(c)のいずれかによって構成されるデータである。
【0253】
暗号処理部903は、これらの第1中間鍵KA、第2中間鍵KBをベースとする鍵KA,KBを生成する。中間鍵ベースの鍵KAのみがラウンド関数におけるラウンド関数鍵として適用され、中間鍵ベースの鍵KBは、ラウンド関数の入出力データとの排他的論理和演算に利用される。
【0254】
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU901がROM格納プログラムを読み出して実行するように構成してもよい。
【0255】
乱数発生器904は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【0256】
送受信部905は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【0257】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【0258】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0259】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0260】
上述したように、本発明の一実施例の構成によれば、秘密鍵Kに基づいて生成する複数の異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なう共通鍵ブロック暗号処理構成において、ラウンド関数実行部に第1中間鍵KAに基づいて生成するラウンド鍵KAのみを入力してラウンド関数を実行し、第2中間鍵KBに基づいて生成される鍵KBは、ラウンド関数部におけるF関数に入力することなく、暗号処理対象となる入力データ、またはラウンド関数からの出力データとの排他的論理和演算を実行させる構成とした。本構成により暗号処理回路を簡略化し装置の小型化およびコストダウンを実現することができる。
【図面の簡単な説明】
【0261】
【図1】共通鍵ブロック暗号アルゴリズムの基本構成を示す図である。
【図2】共通鍵ブロック暗号におけるデータ暗号化部の構成例について説明する図である。
【図3】共通鍵ブロック暗号におけるデータ暗号化部の構成例について説明する図である。
【図4】共通鍵ブロック暗号における4系列の構成を持つデータ暗号化部の構成例について説明する図である。
【図5】共通鍵ブロック暗号における4系列の構成を持つデータ暗号化部の構成例について説明する図である。
【図6】図2のFeistel構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図7】図3のFeistel構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図8】図4のFeistel構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図9】図5のFeistel構造を持つデータ暗号化部に、複数の異なる鍵に基づいて生成するラウンド鍵および初期鍵、最終鍵を用いる構成とした例について説明する図である。
【図10】図6に示す2系列のFeistel構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図11】図7に示す2系列のFeistel構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図12】図8に示す4系列のFeistel構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図13】図9に示す4系列のFeistel構造を持つデータ暗号化部の暗号処理回路構成例を示す図である。
【図14】図10を参照して説明した回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。
【図15】本発明の一実施例に従った図17に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。
【図16】本発明の一実施例に従った図17に示す回路を適用した場合の暗号処理構成を説明する図である。
【図17】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図18】本発明に従った図20に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。
【図19】本発明の一実施例に従った図20に示す回路を適用した場合の暗号処理構成を説明する図である。
【図20】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図21】図12を参照して説明した回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。
【図22】本発明に従った図24に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。
【図23】本発明の一実施例に従った図24に示す回路を適用した場合の暗号処理構成を説明する図である。
【図24】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図25】本発明に従った図27に示す回路を適用した第2ラウンド〜第5ラウンドの処理を説明する図である。
【図26】本発明の一実施例に従った図27に示す回路を適用した場合の暗号処理構成を説明する図である。
【図27】本発明の一実施例に従った暗号処理回路の構成例について説明する図である。
【図28】本発明に係る暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
【符号の説明】
【0262】
111 秘密鍵
112 暗号化鍵スケジュール部
113 拡大鍵
114 データ暗号化部
115 ラウンド関数
116 F関数
121〜123 排他的論理和演算部
131〜133 排他的論理和演算部
151〜156 排他的論理和演算部
201 ラウンド関数回路
202 第1鍵生成部(KA生成回路)
203 第2鍵生成部(KB生成回路)
211〜213 セレクタ
214 データレジスタ
215〜216 排他的論理和演算部
221 排他的論理和演算部
222 セレクタ
251 セレクタ
252〜253 排他的論理和演算部
271 セレクタ
272〜273 排他的論理和演算部
302〜305 F関数
307〜308 排他的論理和演算部
312〜315 F関数
321〜324 排他的論理和演算部
351 ラウンド関数回路
352 第1鍵生成部(KA生成回路)
353 第2鍵生成部(KB生成回路)
354 データレジスタ
355〜356 セレクタ
357 排他的論理和演算部
412〜415 F関数
421〜423 排他的論理和演算部
451 ラウンド関数回路
452 第1鍵生成部(KA生成回路)
453 第2鍵生成部(KB生成回路)
454 データレジスタ
455〜456 セレクタ
457 排他的論理和演算部
502〜505 F関数
512〜515 F関数
521〜524 排他的論理和演算部
552〜555 F関数
562〜565 F関数
521〜524 排他的論理和演算部
572〜575 排他的論理和演算部
581〜585 排他的論理和演算部
601 ラウンド関数回路
602 第1鍵生成部(KA生成回路)
603 第2鍵生成部(KB生成回路)
604 入れ替え回路
605 データレジスタ
611〜612 セレクタ
621〜622 排他的論理和演算部
752〜755 F関数
762〜765 F関数
773〜775 排他的論理和演算部
782〜785 排他的論理和演算部
581〜585 排他的論理和演算部
801 ラウンド関数回路
802 第1鍵生成部(KA生成回路)
803 第2鍵生成部(KB生成回路)
804 入れ替え回路
805 データレジスタ
811〜812 セレクタ
821〜822 排他的論理和演算部
900 ICモジュール
901 CPU(Central processing Unit)
902 メモリ
903 暗号処理部
904 乱数発生器
905 送受信部

【特許請求の範囲】
【請求項1】
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
秘密鍵Kに基づいて生成する異なるデータ構成を有する第1中間鍵KA、および第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化部を有し、
前記データ暗号化部は、
ラウンド数rのラウンド関数を実行するラウンド関数実行部であり、前記第1中間鍵KAに基づいて生成されるラウンド鍵KA(ただしiは1〜rの整数)のみを入力鍵としてラウンド関数を実行するラウンド関数実行部と、
前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第2中間鍵KBに基づいて生成される鍵KB(ただしiは0〜r+1の整数)との排他的論理和演算を実行する排他的論理和演算部と、
を有する構成であることを特徴とする暗号処理装置。
【請求項2】
前記データ暗号化部は、
前記第1中間鍵KAに基づいてラウンド鍵KAの生成処理を実行する第1鍵生成部と、
前記第1鍵生成部の生成するラウンド鍵KAのみを入力鍵としてラウンド関数を実行するラウンド関数実行部と、
前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第1セレクタと、
前記第2中間鍵KBに基づいて鍵KBの生成処理を実行する第2鍵生成部と、
前記第2鍵生成部の生成する鍵KBと、値0を含む複数データの選択出力を実行する第2セレクタと、
前記第1セレクタの出力データの構成データと、前記第2セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算部と、
を有する構成であることを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記データ暗号化部は、
前記第2鍵生成部の生成する鍵KBを入力し、ビット位置入れ替え処理を実行する入れ替え処理部を有し、
前記第2セレクタは、
前記第2鍵生成部の生成する鍵KBと、値0と、前記入れ替え処理部の生成データのいずれかを選択出力する構成であることを特徴とする請求項2に記載の暗号処理装置。
【請求項4】
前記第1鍵生成部は、
前記第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成し、
前記ラウンド関数実行部は、
ラウンド1〜rの各ラウンド関数に、前記第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行し、
前記第2鍵生成部は、
前記第2中間鍵KBに基づいて、前記ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成し、
前記排他的論理和演算部は、
前記入力データ、または前記ラウンド関数実行部からの出力データの構成データと、前記第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBとの排他的論理和演算を実行する構成であることを特徴とする請求項2に記載の暗号処理装置。
【請求項5】
前記排他的論理和演算部は、
前記第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行する構成であることを特徴とする請求項4に記載の暗号処理装置。
【請求項6】
前記排他的論理和演算部は、
前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理において、
4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行する構成であることを特徴とする請求項5に記載の暗号処理装置。
【請求項7】
前記排他的論理和演算部は、
前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第2中間鍵KBに基づいて生成される鍵KBまたは鍵KBの分割鍵との排他的論理和演算を実行する構成であることを特徴とする請求項1〜6いずれかに記載の暗号処理装置。
【請求項8】
前記ラウンド関数実行部は、
入力データをnビットとしたとき、n/kビット単位(ただしk≧2)の分割データを入力する構成であり、ラウンド関数実行部に対する入力データと前記ラウンド鍵KAとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成する構成であることを特徴とする請求項1〜7いずれかに記載の暗号処理装置。
【請求項9】
前記データ暗号化部は、Feistel構造に従った暗号化処理を実行する構成であることを特徴とする請求項1〜8いずれかに記載の暗号処理装置。
【請求項10】
前記第1中間鍵KAは、前記秘密鍵Kに対する非線形変換処理により生成される鍵データであり、
前記第2中間鍵KBは、
(a)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
(b)秘密鍵Kに対して線形変換を適用したデータ、
(c)秘密鍵Kそのもの
上記(a)〜(c)のいずれかによって構成されるデータであることを特徴とする請求項1〜9いずれかに記載の暗号処理装置。
【請求項11】
暗号処理装置において、共通鍵ブロック暗号処理を実行する暗号処理方法であり、
データ暗号化部が、秘密鍵Kに基づいて生成する異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なうデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部が、前記第1中間鍵KAに基づいて生成されるラウンド鍵KA(ただしiは1〜rの整数)のみを入力鍵としてラウンド数rのラウンド関数を実行するラウンド関数実行ステップと、
排他的論理和演算部が、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第2中間鍵KBに基づいて生成される鍵KB(ただしiは0〜r+1の整数)との排他的論理和演算を実行する排他的論理和演算ステップと、
を有することを特徴とする暗号処理方法。
【請求項12】
前記データ暗号化ステップは、
第1鍵生成部が、前記第1中間鍵KAに基づいてラウンド鍵KAの生成処理を実行する第1鍵生成ステップと、
ラウンド関数実行部が、前記第1鍵生成部の生成するラウンド鍵KAのみを入力鍵としてラウンド関数を実行するラウンド関数実行ステップと、
第1セレクタが、前記入力データまたは前記ラウンド関数実行部からの出力データのいずれかを選択出力する第1データ選択ステップと、
第2鍵生成部が、前記第2中間鍵KBに基づいて鍵KBの生成処理を実行する第2鍵生成ステップと、
第2セレクタが、前記第2鍵生成部の生成する鍵KBと、値0を含む複数データの選択出力を実行する第2データ選択ステップと、
排他的論理和演算部が、前記第1セレクタの出力データの構成データと、前記第2セレクタの出力データとの排他的論理和演算を実行する排他的論理和演算ステップと、
を有することを特徴とする請求項11に記載の暗号処理方法。
【請求項13】
前記データ暗号化ステップは、さらに、
入れ替え処理部が、前記第2鍵生成部の生成する鍵KBを入力し、ビット位置入れ替え処理を実行する入れ替え処理ステップを有し、
前記第2データ選択ステップは、
前記第2鍵生成部の生成する鍵KBと、値0と、前記入れ替え処理部の生成データのいずれかを選択出力するステップであることを特徴とする請求項12に記載の暗号処理方法。
【請求項14】
前記第1鍵生成ステップは、
前記第1中間鍵KAに基づいて、ラウンド1〜rの各ラウンド関数に各々入力するr個のラウンド鍵KA〜KAを生成し、
前記ラウンド関数実行ステップは、
ラウンド1〜rの各ラウンド関数に、前記第1中間鍵KAに基づいて生成されるr個のラウンド鍵KA〜KAを順次入力してラウンド関数を実行し、
前記第2鍵生成ステップは、
前記第2中間鍵KBに基づいて、前記ラウンド関数の開始前において適用する初期鍵KBと、rラウンドの最終ラウンド関数の開始後において適用する最終鍵KBr+1と、連続2ラウンドおきのラウンドに対応する鍵KB,KB,・・・KBr−3,KBr−2を生成し、
前記排他的論理和演算ステップは、
前記入力データ、または前記ラウンド関数実行部からの出力データの構成データと、前記第2中間鍵KBに基づいて生成される鍵KB,KB,KB,・・・KBr−3,KBr−2,KBr+1から選択した鍵KBとの排他的論理和演算を実行するステップであることを特徴とする請求項12に記載の暗号処理方法。
【請求項15】
前記排他的論理和演算ステップは、
前記第2中間鍵KBに基づいて生成される鍵KB,KB,・・・KBr−3,KBr−2から選択した同一鍵を、異なるラウンドのラウンド関数実行部からの出力データに対して2回繰り返して利用した排他的論理和演算を実行するステップであることを特徴とする請求項14に記載の暗号処理方法。
【請求項16】
前記排他的論理和演算ステップは、
前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理において、
4つの連続するラウンド関数に対する入力ラウンド鍵を下記の設定とした場合と等価な設定、すなわち、4連続ラウンドp〜p+3に対して、
(a)pラウンドにラウンド鍵KAを入力、
(b)p+1ラウンドにラウンド鍵KAp+1を入力、
(c)p+2ラウンドにラウンド鍵[KAp+2(EXOR)KBp+2]を入力、
(d)p+3ラウンドにラウンド鍵[KAp+3(EXOR)KBp+3]を入力、
上記(a)〜(d)のラウンド鍵の入力処理と等価な処理になるように前記鍵KBから選択した同一鍵を2回繰り返して利用した排他的論理和演算処理を実行するステップであることを特徴とする請求項15に記載の暗号処理方法。
【請求項17】
前記排他的論理和演算ステップは、
前記入力データ、または前記ラウンド関数実行部からの出力データを複数に分割した分割データの一部の分割データに対して、前記第2中間鍵KBに基づいて生成される鍵KBまたは鍵KBの分割鍵との排他的論理和演算を実行するステップであることを特徴とする請求項11〜16いずれかに記載の暗号処理方法。
【請求項18】
前記ラウンド関数実行ステップは、
入力データをnビットとしたとき、n/kビット単位(ただしk≧2)の分割データを入力し、ラウンド関数実行部に対する入力データと前記ラウンド鍵KAとの排他的論理和演算を実行し、さらに非線形変換および線形変換を実行して出力データを生成するステップであることを特徴とする請求項11〜17いずれかに記載の暗号処理方法。
【請求項19】
前記データ暗号化ステップは、Feistel構造に従った暗号化処理を実行するステップであることを特徴とする請求項11〜18いずれかに記載の暗号処理方法。
【請求項20】
前記第1中間鍵KAは、前記秘密鍵Kに対する非線形変換処理により生成される鍵データであり、
前記第2中間鍵KBは、
(a)秘密鍵Kに対して、第1中間鍵KAと異なる非線形変換を適用したデータ、
(b)秘密鍵Kに対して線形変換を適用したデータ、
(c)秘密鍵Kそのもの
上記(a)〜(c)のいずれかによって構成されるデータであることを特徴とする請求項11〜19いずれかに記載の暗号処理方法。
【請求項21】
暗号処理装置において、共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
データ暗号化部に、秘密鍵Kに基づいて生成する異なるデータ構成を有する第1中間鍵KAと第2中間鍵KBを適用して、複数のラウンド関数を繰り返し実行して入力データのデータ変換処理を行なわせるデータ暗号化ステップを有し、
前記データ暗号化ステップは、
ラウンド関数実行部に、前記第1中間鍵KAに基づいて生成されるラウンド鍵KA(ただしiは1〜rの整数)のみを入力鍵としてラウンド関数を実行させるラウンド関数実行ステップと、
排他的論理和演算部に、前記入力データ、または前記ラウンド関数実行部からの出力データの構成データに対して前記第2中間鍵KBに基づいて生成される鍵KB(ただしiは0〜r+1の整数)との排他的論理和演算を実行させる排他的論理和演算ステップと、
を含むことを特徴とするコンピュータ・プログラム。

【図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

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate