暗号処理装置及び復号処理装置及びプログラム
【課題】テーブル参照により暗号処理を行う際に、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせる方法を実現する。
【解決手段】初期鍵加算処理101〜103又は鍵加算処理110〜112等において、鍵スケジュール部において暗号鍵から生成された拡大鍵及び入力データを入力するとともに、拡大鍵及び入力データに対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理、加算処理後のデータの単射変換処理等を1回のテーブル参照で行うことができ、これにより、暗号鍵ごとのテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【解決手段】初期鍵加算処理101〜103又は鍵加算処理110〜112等において、鍵スケジュール部において暗号鍵から生成された拡大鍵及び入力データを入力するとともに、拡大鍵及び入力データに対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理、加算処理後のデータの単射変換処理等を1回のテーブル参照で行うことができ、これにより、暗号鍵ごとのテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号アルゴリズムを処理する装置に関する。
【背景技術】
【0002】
暗号をシステム上で実行する場合、実行中のシステムの消費電力の変化を観測し、暗号処理に使われている秘密情報である暗号鍵を推測する方法がある(例えば非特許文献1)。
この手法は電力解析と呼ばれている。
電力解析に対して、解析を行われても、暗号鍵を推測できないように暗号を実装する必要がある。
【0003】
このような解析への対策法として、いくつかの方法が提案されている(たとえば特許文献1、2)。
また、電力解析に弱い部分をテーブル参照のみで構築するテーブルネットワーク実装がある(例えば非特許文献2)。
テーブルに設計者のみが知り得る変換処理を施すことで従来の電力差分解析に対して耐性を持たせることができる。
【特許文献1】特開2005−134477号公報
【特許文献2】特開2002−311826号公報
【非特許文献1】P. Kocher, J. Jaffe, B. Jun, ”Differential Power Analysis”, Advances in Cryptology: Proceedings of CRYPTO’99 Springer−Verlag, pp.388−397, 1999
【非特許文献2】S.Chow, P. Eisen, H. Johnson, P.C. Oorschot, ”White−Box Cryptography and an AES Implementation”, Advances in Cryptology: Proceedings of SAC 2002 Springer−Verlag, 2002
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1や2によれば、あらかじめ複数のスクランブル処理を用意し、暗号処理の過程で、乱数や暗号鍵によって、適用するスクランブル処理を切り替えている。
この場合、用意するスクランブル回路分だけ、冗長なリソースが必要となる。また、解析の困難さは用意するテーブルの種類にのみ依存し、要するリソースの割には、十分な複雑さを得ることはできない。
【0005】
一方、テーブルネットワーク実装では、設計者が一定の条件の下で任意にテーブルを設計でき、かつ設計可能なテーブルの種類が十分大きいため、従来の電力解析を困難にできる。
しかし、従来のテーブルネットワーク実装では、拡大鍵の生成処理もテーブルに含まれているため、全拡大鍵に対して異なるテーブルを用意する必要があるため、大量のメモリを消費する。
【0006】
また、異なる秘密鍵が利用されるたびにテーブルを構築しなおす必要があり、演算に多大なコストがかかる。さらに、テーブル構築過程を攻撃することで、秘密鍵や設計者のみが知り得る変換処理が解析される恐れがある。
【0007】
本発明は、上記のような課題を解決することを主な目的の一つとしており、秘密鍵によるテーブルの再構築を必要とせずに、かつ設計者のみが知り得る変換処理を入れ込んで従来の電力差分解析に対して耐性を持たせる方法を実現することを主な目的の一つとする。
【課題を解決するための手段】
【0008】
本発明に係る暗号処理装置は、
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする。
【発明の効果】
【0009】
本発明では、外部において暗号鍵から生成された拡大鍵を入力するとともに、拡大鍵に対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理等を1回のテーブル参照で行うことができ、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【発明を実施するための最良の形態】
【0010】
実施の形態1.
図1は、本実施の形態に係る暗号処理の全体の流れを示す。
図1では、SPN(Substitution Permutation Network)構造の暗号の例を示しているが、後述する各処理を組み合わせることで、Feistel構造の暗号を含む、任意の暗号に適用可能である。
【0011】
図1に示す暗号処理の前提として、鍵スケジュール処理によって、あらかじめ暗号鍵から拡大鍵123〜131が生成される。
【0012】
また、m×nビットの平文データ122(以下、単に平文ともいう)はnビットずつに分解され、各々の平文と拡大鍵123〜125は初期鍵加算処理101〜103に入力される。
初期鍵加算処理101〜103の出力は非線形変換処理104〜106に入力される。
線形変換処理107〜109は複数の非線形変換処理104〜106の出力を入力として、nビットの出力を求める。
線形変換処理107〜109の出力は鍵加算処理110〜112に入力され、拡大鍵126〜128と加算される。
以降、非線形変換処理、線形変換処理、鍵加算処理を繰り返す。最終の鍵加算処理116〜118の出力は最終変換処理119〜121に入力され、その出力を連接したものが暗号文データ132(以下、単に暗号文ともいう)となる。
【0013】
図14は、図1に示す各処理を実現する暗号処理装置1の機能ブロックを示す。
【0014】
図14において、鍵スケジュール部11は、暗号鍵から拡大鍵123〜131を生成する。
本実施の形態では、鍵スケジュール部11における拡大鍵123〜131の生成方法は、どのようなものであってもよい。
なお、鍵スケジュール部11が生成する拡大鍵123〜131は、nビットのビット長(分割後の平文と同じビット長)である。
【0015】
暗号処理部12は、図1に示される暗号処理を実施する。
つまり、暗号処理部12に含まれる各要素が図1の処理順序に従って各処理を繰り返すことで暗号処理が実施される。
【0016】
平文分割部1210は、入力されたm×nビットの平文122をnビットずつに分割する。
【0017】
初期鍵加算処理部1220は、図1の初期鍵加算処理101〜103を実施する。
初期鍵加算処理部1220は、図1に示すように、鍵スケジュール部11において暗号鍵から生成された拡大鍵123〜125を入力し、分割された平文を入力データとして入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データ(分割された平文)を拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、分割拡大鍵と分割入力データ(以下、単に分割入力ともいう)との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
初期鍵加算処理部1220の詳細は、図2を参照して後述する。
なお、初期鍵加算処理部1220は、入力データが平文であり、全単射逆変換処理が含まれないが、拡大鍵の分割を行う点、入力データの分割を行う点、加算処理及び単射逆変換処理を1回のテーブル参照で行う点で後述する鍵加算処理部1250と共通しており、初期鍵加算処理部1220は、鍵加算処理部の一例である。
【0018】
非線形変換処理部1230は、初期鍵加算処理部1220又は後述する鍵加算処理部1250から出力されたデータを入力し、入力したデータに対する初期鍵加算処理部1220又は鍵加算処理部1250の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを1回のテーブル参照により行う。
より具体的には、非線形変換処理部1230は、逆変換処理と、非線形変換処理と、非線形変換処理後のデータを初期鍵加算処理部1220又は鍵加算処理部1250における拡大鍵及び入力データの分割位置と同じ分割位置で分割する処理と、分割後の各データに対する全単射変換処理と、全単射逆変換処理後の各データを連接する処理とを1回のテーブル参照により行う。
また、非線形変換処理部1230が行う全単射変換処理は、排他的論理和演算に対して加法性のある全単射変換処理である。
非線形変換処理部1230の詳細は、図3を参照して後述する。
【0019】
線形変換処理部1240は、非線形変換処理部1230から出力されたデータを入力とし、入力データに対して線形変換処理を行って、鍵加算処理部1250に線形変換処理後のデータを出力する。
線形変換処理部1240の詳細は、図4を参照して後述する。
【0020】
鍵加算処理部1250は、線形変換処理部1240から出力されたデータを入力し、また、拡大鍵126〜127等を入力する。
線形変換処理部1240から入力した入力データは、非線形変換処理部1230により全単射変換処理が行われた後のデータである。
そして、鍵加算処理部1250は、入力データに対して非線形変換処理部1230による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
より具体的には、鍵加算処理部1250は、同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、更に、分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
鍵加算処理部1250の詳細は、図5を参照して後述する。
【0021】
最終変換処理部1260は、鍵加算処理部1250から出力されたデータを入力し、入力したデータに対して鍵加算処理部1250の単射変換処理の逆変換処理を行い、逆変換処理後のデータを分割された暗号文データ(nビット)として出力する。
最終変換処理部1260の詳細は、図6を参照して後述する。
【0022】
暗号文連結部1270は、最終変換処理部1260から出力されたnビットの暗号文データを連結してm×nビットの暗号文データとし、m×nビットの暗号文データを出力する。
【0023】
図2は初期鍵加算処理部1220の構成を示す。
図2では、入力205と拡大鍵206との加算を行う(鍵加算)。
加算処理の内容は暗号アルゴリズムにより決定される。加算処理は、例えば、排他論理和演算である。
さらに、出力に対し単射変換処理を行う。
【0024】
まず、初期鍵加算処理部1220は、nビットの入力205及び拡大鍵206を分割する。
分割する個数及びサイズは、その合計がnビットになるようであれば任意に分割してよい。
但し、対になる分割入力と分割拡大鍵は同じサイズである必要がある。
図2では、n1ビットの分割入力207及び分割拡大鍵209とn2ビットの分割入力208及び分割拡大鍵210に分割した例を示す。
【0025】
分割入力207及び分割拡大鍵209をテーブル201に入力し、テーブル出力211を得る。
同様に、分割入力208及び分割拡大鍵210をテーブル202に入力し、テーブル出力212を得る。
加算処理215により、テーブル出力211とテーブル出力212とを加算し、出力216を得る。
【0026】
テーブル201の内容について説明する。テーブル202の内容はテーブル201と同様である。
テーブル201について、分割入力207と分割拡大鍵209は加算処理213によって加算され、その出力が単射変換処理203によって、nビットのテーブル出力211となる。
テーブル201及びテーブル202は、分割入力と分割拡大鍵に対応させて事前に計算しておき、初期鍵加算処理部1220に対応付けて記憶領域に格納する。
つまり、分割入力と分割拡大鍵の対の各パターンに対して事前に出力値を計算しておき、計算結果をテーブル201及びテーブル202に記述して、初期鍵加算処理部1220に対応づけて記憶領域に格納する。
例えば、平文データ(m×nビット)が32ビットである場合に、m=4とした場合は、n=8ビットとなり、n1=n2=4ビットとした場合には、4ビットの分割拡大鍵と4ビットの分割入力における全組合せに対する出力値を計算して、テーブル201及びテーブル202に記述するようにする。
なお、単射変換処理203は、n1ビットを入力とし、所定のnビット出力を出す。
【0027】
単射変換処理203、単射変換処理204、加算処理215の条件について、単射変換処理203の入力をx1、出力をf1(x1)、単射変換処理204の入力をx2、出力をf2(x2)、加算処理215を“+”と表示した場合、x=x1||x2の写像f(x)=f1(x1)+f2(x2)が全単射写像になるように決定する。ただし、“||”はデータの連接を示す。
【0028】
前記単射変換処理203、単射変換処理204、加算処理215の例を以下に示す。
【0029】
例1:
GF(2)上のn×n正則行列Zを与え、数式1を満たすn1×nの行列Aとn2×nの行列Bを生成する。また、nビットの固定値c1、c2も生成する。
単射変換処理203は数式2により出力yを求め、単射変換処理204は数式3により出力yを求める。
加算処理215はビット単位の排他的論理和とする。
【0030】
【数1】
【0031】
例2:
n1×n1の全単射変換Eとn2×n2の全単射変換Fを与える。また、n2ビットの定数c3及びn1ビットの定数c4を与える。
単射変換処理203は数式4により出力yを求め、単射変換処理204は数式5により出力yを求める。
加算処理215はビット単位の排他的論理和とする。
【0032】
【数2】
【0033】
なお、例1と例2を組み合わせてもよい。
例えば、テーブル201の単射変換処理203は、例1の数式2を用いて行い、テーブル202の単射変換処理204は、例2の数式5を用いて行うようにしてもよい。
また、テーブル201の単射変換処理203は、例2の数式4を用いて行い、テーブル202の単射変換処理204は、例1の数式3を用いて行うようにしてもよい。
【0034】
このように、初期鍵加算処理部1220では、鍵スケジュール部11で生成された拡大鍵を入力し、入力した拡大鍵を分割した分割拡大鍵と分割入力の組合せに対して予め用意しているテーブルを利用して、加算処理、単射変換処理を行う。
つまり、拡大鍵の生成処理は外部である鍵スケジュール部11で行われ、初期鍵加算処理部1220が参照するテーブルには拡大鍵生成処理が含まれていないので、暗号鍵に対応させてテーブルを更新する必要がない。
【0035】
図3に非線形変換処理部1230の構成を示す。図3は、暗号の非線形変換処理である。
【0036】
入力306はテーブル301に入力され、出力307を得る。
【0037】
テーブル301の内容について説明する。
入力データは逆変換処理302により変換される。
逆変換処理302は、初期鍵加算処理部1220の単射変換処理203及び単射変換処理204(又は、鍵加算処理部1250の単射変換処理505及び単射変換処理506)に対応し、図2の出力216(又は図5の出力509)に対する逆変換を求める。以下に前記例1及び例2に対する逆変換を示す。
【0038】
例1の逆変換:
逆変換処理302では、数式6を計算する。ただし、Z−1は数式1に示す行列Zの逆行列である。
【0039】
【数3】
【0040】
例2の逆変換:
逆変換処理302では、数式7を計算する。ただし、E−1,F−1は全単射変換E,F逆行列とする。“>>n2”はn2ビットの左シフト、“・n1”はデータの下位n1ビットの抽出を示す。
【0041】
【数4】
【0042】
逆変換処理302の出力は非線形変換処理303に入力される。非線形変換処理303は暗号アルゴリズムにより決定される。
【0043】
非線形変換処理303の出力は複数に分割され、各々について全単射変換処理が施される。全単射変換処理f1(x1),f2(x2),・・・,fn(xn)は、図1の線形変換処理107〜109に対して加法性を満たすように選択する。
具体的には、線形変換処理をy=y1‖y2‖・・・‖yn=fL(x1,x2,・・・,xn)とした場合、数式8を満たすように選択する。
ただし、yiは数式9を満たすものとする。数式9で|yi|はyiのビット長を示す。
全単射変換処理されたデータは連結されて出力される。
テーブル301は、事前に計算しておき、非線形変換処理部1230に対応付けて記憶領域に格納する。
つまり、入力データの各パターンに対して事前に出力値を計算しておき、計算結果をテーブル301に記述して、非線形変換処理部1230に対応付けて記憶領域に格納する。
【0044】
【数5】
【0045】
線形変換処理107〜109をビット単位の排他的論理和とした場合の、全単射変換処理304、全単射変換処理305の例を以下に示す。
【0046】
例1:
GF(2)上のn1×n1の正則行列Gとn2×n2の正則行列Hを生成する。また、n1ビットの固定値c1,及びn2ビットの固定値c2も生成する。全単射変換処理304は数式10により出力yを求め、全単射変換処理305は数式11により出力yを求める。
【0047】
【数6】
【0048】
例2:
ガロア拡大体GF(2n1)の元k,lおよびGF(2n2)の元m,nを与える。全単射変換処理204では数式12により出力yを求め、全単射変換処理205では数式13により出力yを求める。ただし、“・”はガロア拡大体上の乗算を示し、“+”はガロア拡大体上の加算を示す。
【0049】
【数7】
【0050】
例3:
正整数p(1≦p<n1),q(1≦q<n2)を与える。全単射変換処理204では数式14により出力yを求め、全単射変換処理205では数式15により出力yを求める。
【0051】
【数8】
【0052】
なお、例1〜例3を組み合わせてもよい。
次に、図4に線形変換処理部1240の構成を示す。
線形変換処理401の内容は暗号アルゴリズムにより決定される。複数のnビット入力402〜404を得て、nビット出力405を生成する。
線形変換処理401は、例えば、排他論理和演算である。
【0053】
図5に鍵加算処理部1250の構成を示す。
図5では、入力507と拡大鍵508と加算を行う(鍵加算)。加算処理の内容は暗号アルゴリズムにより決定される。加算処理は、例えば、排他論理和演算処理である。
さらに、出力に対し単射変換処理を行う。
【0054】
まず、nビットの入力507及び拡大鍵508をそれぞれ分割入力509、分割入力510及び分割拡大鍵511、分割拡大鍵512に分割する。
分割法は図3における分割法と同一である。
【0055】
分割入力509、分割拡大鍵511をテーブル501に入力し、テーブル出力513を得る。
同様に、分割入力510、分割拡大鍵512をテーブル502に入力し、テーブル出力514を得る。
加算処理517により、テーブル出力513とテーブル出力514とを加算し、出力509を得る。
【0056】
テーブル501の内容について説明する。テーブル502の内容はテーブル501と同様である。
テーブル501について、分割入力509は全単射逆変換処理503に入力される。全単射逆変換処理503は図3の全単射変換処理304の逆変換処理である。
全単射逆変換処理503の出力と分割拡大鍵511は加算処理515によって加算され、その出力が単射変換処理505によって、nビットのテーブル出力513となる。
単射変換処理505は図2の単射変換処理203と同値である。
テーブル501及びテーブル502は、分割入力と分割拡大鍵に対応させて事前に計算しておき、鍵加算処理部1250に対応付けて記憶領域に格納する。
つまり、分割入力と分割拡大鍵の対の各パターンに対して事前に出力値を計算しておき、計算結果をテーブル501及びテーブル502に記述して、鍵加算処理部1250に対応づけて記憶領域に格納する。
【0057】
このように、鍵加算処理部1250では、鍵スケジュール部11で生成された拡大鍵を入力し、入力した拡大鍵を分割した分割拡大鍵と分割入力の組合せに対して予め用意しているテーブルを利用して、全単射逆変換処理、加算処理、単射変換処理を行う。
つまり、拡大鍵の生成処理は外部である鍵スケジュール部11で行われ、鍵加算処理部1250が参照するテーブルには拡大鍵生成処理が含まれていないので、暗号鍵に対応させてテーブルを更新する必要がない。
【0058】
図6に最終変換処理の構成を示す。この処理は暗号文を出力する直前に行う。
【0059】
入力603はテーブル601に入力され、出力604を得る。
逆変換処理602は図3の逆変換処理302と同じである。
テーブル601は、事前に計算しておき最終変換処理部1260に対応付けて格納する。
【0060】
復号処理も前記暗号処理と同様に行うことができる。ただし、拡大鍵123〜131(図1)、加算処理213,214(図2)、非線形変換処理303(図3)、線形変換処理401(図4) 加算処理515,516(図5)は、復号アルゴリズムに準拠する。また復号時は、図1において、入力が暗号文となり、平文を出力する。
つまり、本実施の形態で説明した手順及び図1〜図6、図14に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0061】
ここで、本実施の形態に係る効果の一例について説明する。
図2、3、5、6における単射変換処理ならびに全単射変換処理は、所定の条件を満たす範囲で、設計者が任意に選択できる。
よって、攻撃者が暗号アルゴリズムを知っていたとしても、各々のコンポーネントの出力までは予想できない。これにより、従来の電力差分解析に対して耐性を持たせることができる。
【0062】
また、従来のように、暗号鍵によるテーブルの再計算を必要としないため、その分の演算コストを抑えることができる。
さらに、鍵加算部において、入力を分割することにより、テーブルサイズを抑えることができる。
【0063】
このように、本実施の形態に係る暗号処理装置によれば、外部において暗号鍵から生成された拡大鍵を入力するとともに、拡大鍵に対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理等を1回のテーブル参照で行うことができ、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【0064】
実施の形態2.
実施の形態1において、鍵加算は分割入力と分割拡大鍵とを連結してテーブル参照を行っているが、本実施の形態では、分割入力と分割拡大鍵とを連結しないでテーブル参照する方法を示す。
【0065】
図7は、図2におけるテーブル201における実施例を示す。
テーブル202についても同様に実施できる。
テーブル701はテーブル201と等価なテーブルである。
具体的には、テーブル701において、分割拡大鍵209を上位ビットに、分割入力207を下位ビットに連結してテーブルを作成する。
つまり、本実施の形態に係る初期鍵加算処理部1220が利用するテーブル701は、複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルである。
なお、単射変換処理702は図2の単射変換処理203と同じである。
また、加算処理708は図2の加算処理213と同じである。
【0066】
アドレス計算処理703は分割拡大鍵705を入力として、参照テーブルアドレス707(テーブルアドレスの上位ビット)を計算する。具体的には、分割拡大鍵705をn1ビット左シフトし、その結果とテーブル701の先頭アドレスとを加算し、その結果を参照テーブルアドレス707とする。
アドレス計算処理703は鍵スケジュールの段階で計算してもよい。
【0067】
また、分割入力704をテーブルアドレスの下位ビットとし、参照テーブルアドレス707を元に、該当するテーブルアドレスのテーブル値を参照し、テーブル出力706を得る。
具体的には参照テーブルアドレス707と分割入力704とを連結し、結果のアドレスのテーブル値を参照する。
【0068】
このように、本実施の形態では、初期鍵加算処理部1220は、分割拡大鍵をテーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データからいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果をテーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
【0069】
図8は図5におけるテーブル501における実施例を示す。
テーブル502についても同様に実施できる。
テーブル801はテーブル501と等価なテーブルである。
具体的には、テーブル801において、分割拡大鍵511を上位ビットに、分割入力509を下位ビットに連結してテーブルを作成する。
つまり、本実施の形態に係る鍵加算処理部1250が利用するテーブル801は、複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルである。
なお、全単射逆変換処理802は図5の全単射逆変換処理503と同じである。
また、単射変換処理803は図3の単射変換処理505と同じである。
また、加算処理809は図5の加算処理515と同じである。
【0070】
アドレス計算処理804は分割拡大鍵805を入力として、参照テーブルアドレス807(テーブルアドレスの上位ビット)を計算する。
具体的には、分割拡大鍵805をn1ビット左シフトし、その結果とテーブル801の先頭アドレスとを加算し、その結果を参照テーブルアドレス807とする。
アドレス計算処理804は鍵スケジュールの段階で計算してもよい。
【0071】
また、分割入力806をテーブルアドレスの下位ビットとし、参照テーブルアドレス807を元に、該当するテーブルアドレスのテーブル値を参照し、テーブル出力808を得る。
具体的には参照テーブルアドレス807と分割入力806とを連結し、結果のアドレスのテーブル値を参照する。
【0072】
このように、本実施の形態では、鍵加算処理部1250は、分割拡大鍵をテーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データからいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果をテーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
【0073】
復号時の鍵加算処理部も前記暗号時の鍵加算処理部1250と同様に行うことができる。ただし、分割拡大鍵805、加算処理809(図8)は、復号アルゴリズムに準拠する。
つまり、本実施の形態で説明した手順及び図7、図8、図14に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0074】
ここで、本実施の形態に係る効果の一例について説明する。
本実施の形態では、実施の形態1に示した効果を得られるだけでなく、暗号鍵に依存する計算を、鍵スケジュール部に組み込むことができる。
また、暗号演算過程で暗号鍵本体を用いることがないため、より安全な暗号演算を実施できる。
【0075】
実施の形態3.
実施の形態1および2では、鍵加算処理用に4種類(テーブル201、テーブル202、テーブル501、テーブル502)を用意したが、本実施の形態では3種類のテーブルで済ませる方法を示す。
【0076】
図9は、本実施の形態に係る暗号処理の全体の流れを示す。
図9では、SPN構造の暗号の例を示しているが、後述する各処理を組み合わせることで、Feistel構造の暗号を含む、任意の暗号に適用可能である。
図9では、図1の初期鍵加算処理101〜103が、初期変換処理933〜935となっている点が、図1との主な相違点である。
他の処理は、図1に示したものと同様である。
【0077】
図9では、あらかじめ鍵スケジュール処理によって、暗号鍵から拡大鍵923〜931を生成させている。
【0078】
また、m×nビットの平文122はnビットずつに分解され、各々の平文は初期変換処理933〜935に入力される。
その出力と拡大鍵923〜925は鍵加算処理901〜903に入力される。
鍵加算処理901〜903の出力は非線形変換処理904〜906に入力される。
線形変換処理907〜909は複数の非線形変換処理904〜906の出力を入力として、nビットの出力を求める。
線形変換処理907〜909の出力は鍵加算処理910〜912に入力され、拡大鍵926〜928と加算される。以降、非線形変換処理、線形変換処理、鍵加算処理を繰り返す。
最終の鍵加算処理916〜918の出力は最終変換処理919〜921に入力され、その出力を連接したものが暗号文932となる。
【0079】
図15は、本実施の形態に係る暗号処理装置1の構成例を示す、
初期変換処理部1280は、図9に示す初期変換処理933〜935を行う。
初期変換処理部1280の処理の詳細は後述するが、初期変換処理部1280は、平文データを入力し、入力した平文データを分割する処理と、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを1回のテーブル参照により行う。
そして、初期変換処理部1280が行う全単射変換処理は、排他的論理和演算に対して加法性のある全単射変換処理である。
図15では、初期鍵加算処理部1220の代わりに初期変換処理部1280が配置されている点以外は、図14に示した構成と同じである。
【0080】
図10に初期変換処理部1280の構成例を示す。
図10の初期変換処理部1280は、暗号化の初期処理として平文を変換する。
【0081】
入力1004はテーブル1001によって、出力1009に変換される。
【0082】
テーブル1001の内容について説明する。
入力1004はn1ビットの分割入力1005とn2ビットの分割入力1006に分割される。
分割法は鍵加算処理と同じである。
全単射変換処理1002は分割入力1005よりテーブル出力1007を出力する。全単射変換処理1003は分割入力1006よりテーブル出力1008を出力する。テーブル出力1007とテーブル出力1008は連接されて出力1009となる。
【0083】
鍵加算処理、非線形変換処理、線形変換処理、最終変換処理は実施の形態1と同じである。
【0084】
復号処理も前記暗号処理と同様に行うことができる。ただし、拡大鍵923〜931(図9)、非線形変換処理303(図3)、線形変換処理401(図4)加算処理515,516(図5)は、復号アルゴリズムに準拠する。また復号時は、図9において、入力が暗号文となり、平文を出力する。
つまり、本実施の形態で説明した手順及び図9、図10、図15に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0085】
ここで、本実施の形態に係る効果の一例について説明する。
図10の初期変換処理を行うことにより、実施の形態1に示す効果を得られるだけでなく、実施の形態1では、初期鍵加算処理と鍵加算処理に合計4つのテーブルを必要としたが、本実施の形態では、初期変換処理と鍵加算処理に合計3つのテーブルで実装可能である。
よって、トータルでテーブルが1つ削減でき、メモリ使用量を削減できる。
【0086】
実施の形態4.
実施の形態1〜3では、スケジュール後の拡大鍵には、何の変換処理も施されていないが、本実施の形態では、鍵スケジュール時に拡大鍵に変換を施す手法を示す。
本実施の形態は実施の形態1〜3と組み合わせて用いる。
【0087】
図11は本実施の形態における鍵スケジュール部11を示す。
鍵スケジュール処理1101は、暗号鍵1108から拡大鍵1109〜1111を生成する。
鍵スケジュール処理1101は実装する暗号アルゴリズムに準拠する。
各拡大鍵1109〜1111は分割され、各々について、全単射変換処理1102〜1107によって変換される。変換された拡大鍵は結合され、変換拡大鍵1112〜1114となる。
【0088】
このように、本実施の形態に係る鍵スケジュール部11は、暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する。
【0089】
なお、図11では、鍵スケジュール処理と全単射変換処理を分けて記載しているが、同様の効果を有するように、鍵スケジュール処理の中に全単射変換処理を組み込んでもよい。
【0090】
図12に本実施の形態における初期鍵加算処理部1220を示す。
図12では、全単射逆変換処理1216、1217が付加される以外は図2と同様である。
全単射逆変換処理1216、1217は、本実施の形態の鍵スケジュール部11において、変換拡大鍵1206が生成された際の全単射変換処理に対する逆変換である。
【0091】
すなわち、本実施の形態では、初期鍵加算処理部1220は、鍵スケジュール部11から変換拡大鍵1206を入力し、また、平文を入力データ1205として入力する。
また、変換拡大鍵1206を所定の分割位置で分割して2以上の分割拡大鍵とし、入力データ1205を変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとする。
そして、分割拡大鍵に対して鍵スケジュール部11による全単射変換処理の逆変換を行う全単射逆変換処理1216、1217と、全単射逆変換処理後の分割変換拡大鍵と分割入力データとの加算処理1213、1214と単射変換処理1203、1204を1回のテーブル参照により行う。
【0092】
図13に本実施の形態における鍵加算処理部1250を示す。
図13では、全単射逆変換処理1318、1319が付加される以外は図5と同様である。
全単射逆変換処理1318、1319は、本実施の形態の鍵スケジュール部11において、変換拡大鍵1308が生成された際の全単射変換処理に対する逆変換である。
【0093】
すなわち、本実施の形態では、鍵加算処理部1250は、鍵スケジュール部11から変換拡大鍵1308を入力し、また、入力データ1307を入力する。
また、変換拡大鍵1308を所定の分割位置で分割して2以上の分割拡大鍵とし、入力データ1307を変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとする。
そして、分割拡大鍵に対して鍵スケジュール部11による全単射変換処理の逆変換を行う全単射逆変換処理1318、1319(第1の全単射逆変換処理)と、分割入力データに対して非線形変換処理部1230による全単射変換処理の逆変換を行う全単射逆変換処理1303、1304(第2の全単射逆変換処理)と、全単射逆変換処理1318、1319後の分割拡大鍵と全単射逆変換処理1303、1304後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
【0094】
復号処理時の初期鍵加算処理部及び鍵加算処理部は、前記暗号処理時の初期鍵加算処理部1220及び鍵加算処理部1250と同様に行うことができる。ただし、変換拡大鍵1206(図12)、変換拡大鍵1308(図13)、加算処理1213・1214(図12)、加算処理1315・1316(図13)は、復号アルゴリズムに準拠する。
つまり、本実施の形態で説明した手順及び図11〜図13に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0095】
ここで、本実施の形態に係る効果の一例について説明する。
実施の形態1〜3に示す効果に加え、さらに、拡大鍵を推定不可能にできる。
よって、攻撃者が暗号アルゴリズムを知っていたとしても、拡大鍵の値を予想できない。これにより、鍵スケジュール処理に対しても、従来の電力差分解析に対して耐性を持たせることができる。
【0096】
次に、実施の形態1〜4に示した暗号処理装置及び暗号処理方法の主な特徴を記す。
【0097】
実施の形態1〜4では、暗号をソフトウェアによって実行する暗号処理装置及び暗号処理方法であって、入力と暗号鍵との加算処理(鍵加算処理)をテーブル参照によって実現するにあたり、入力と暗号鍵を各々同じビット列で分割し、分割された入力と暗号鍵とを入力として、テーブル参照によって加算処理を実現し、分割した各々の入力及び暗号鍵に対するテーブル出力を加算する暗号処理装置及び暗号処理方法を説明した。
【0098】
また、実施の形態1〜4では、鍵加算処理におけるテーブルについて、以下の処理を1回のテーブル参照によって行う暗号処理装置及び暗号処理方法を説明した。
A)入力と暗号鍵とを本来の暗号の仕様に則り加算する。
B)前記A)の出力を単射変換する。
【0099】
また、実施の形態1〜4では、前記分割された暗号鍵(復号鍵)と、前記テーブル本体とから、参照アドレスを計算し、前記参照アドレスと前記分割された入力とからテーブル出力を求める暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0100】
また、実施の形態1〜4では、加算処理の後に実行する非線形変換処理において、以下の処理を1回のテーブル参照によって行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
C)前記鍵加算処理において実行した単射変換に対する逆変換処理を行う。
D)前記C)の出力に対し、本来の暗号の仕様に則り非線形処理を行う。
E)前記D)の出力を分割し、分割された各々の出力に対して、全単射変換を行う。
【0101】
また、実施の形態1〜4では、非線形変換処理における全単射変換において、排他的論理和演算に対して加法性のある全単射変換を用いる暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0102】
また、実施の形態1〜4では、非線形変換の後に実行する鍵加算処理において、前記E)と同様に分割し、分割された入力と暗号鍵(復号鍵)とを入力として、テーブル参照によって加算処理を実現し、分割した各々の入力及び暗号鍵(復号鍵)に対するテーブル出力を加算する暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0103】
また、実施の形態1〜4では、鍵加算処理におけるテーブルについて、入力を前記E)と同様に分割した上で、以下の処理を1回のテーブル参照によって行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
F)分割された各々の入力に対し、前記E)で行った全単射変換の逆変換を行う。
G)前記F)の出力と暗号鍵(復号鍵)とを本来の暗号の仕様に則り加算する。
H)前記G)の出力を単射変換する。
【0104】
また、実施の形態1〜4では、分割された暗号鍵(復号鍵)と、前記テーブル本体とから、アドレスを計算し、前記アドレスと前記分割された入力とからテーブル出力を求める暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0105】
また、実施の形態1〜4では、暗号終了時に前記C)に示す逆変換を行い、その結果を暗号文として出力する暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0106】
また、実施の形態1〜4では、暗号(復号)開始時に以下の処理を1回のテーブル参照で行い、その後に鍵加算処理を行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
I)入力を分割し、分割された各々の入力に対し、前記E)で行った全単射変換を行う。
J)前記I)の出力を連接する。
【0107】
また、実施の形態1〜4では、鍵スケジュールの段階で全単射変換を施し、鍵加算の段階で以下の処理を行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
K)暗号鍵(復号鍵)に対して鍵スケジュールで行った全単射変換に対する逆変換を行う。
L)入力とK)の出力とを本来の暗号の仕様に則り加算する。
M)前記L)の出力を単射変換する。
【0108】
また、実施の形態1〜4では、鍵スケジュールの段階で全単射変換を施し、鍵加算の段階で以下の処理を行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
N)暗号鍵(復号鍵)に対して鍵スケジュールで行った全単射変換に対する逆変換を行う。
O)分割された各々の入力に対し、前記E)で行った全単射変換の逆変換を行う。
P)前記N)の出力とO)の出力を本来の暗号の仕様に則り加算する。
Q)前記P)の出力を単射変換する。
【0109】
最後に、実施の形態1〜4に示した暗号処理装置1のハードウェア構成例について説明する。
図16は、実施の形態1〜4に示す暗号処理装置1のハードウェア資源の一例を示す図である。
なお、図16の構成は、あくまでも暗号処理装置1のハードウェア構成の一例を示すものであり、暗号処理装置1のハードウェア構成は図16に記載の構成に限らず、他の構成であってもよい。
また、復号処理装置も、例えば、図16のハードウェア構成により実現可能である。以下の説明において、「暗号処理装置1」を「復号処理装置」と読み替えることが可能である。
【0110】
図16において、暗号処理装置1は、プログラムを実行するCPU1911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU1911は、バス1912を介して、例えば、ROM(Read Only Memory)1913、RAM(Random Access Memory)1914、磁気ディスク装置1920と接続され、これらのハードウェアデバイスを制御する。
また、CPU1911は、通信ボード1915、表示装置1901、キーボード1902、マウス1903と接続されていてもよい。
更に、CPU1911は、FDD1904(Flexible Disk Drive)、コンパクトディスク装置1905(CDD)、プリンタ装置1906、スキャナ装置1907と接続していてもよい。また、磁気ディスク装置1920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM1914は、揮発性メモリの一例である。ROM1913、FDD1904、CDD1905、磁気ディスク装置1920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード1915、キーボード1902、マウス1903、スキャナ装置1907、FDD1904などは、入力装置の一例である。
また、通信ボード1915、表示装置1901、プリンタ装置1906などは、出力装置の一例である。
【0111】
通信ボード1915は、ネットワークに接続されている。例えば、通信ボード1915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されていても構わない。
【0112】
磁気ディスク装置1920には、オペレーティングシステム1921(OS)、ウィンドウシステム1922、プログラム群1923、ファイル群1924が記憶されている。
プログラム群1923のプログラムは、CPU1911がオペレーティングシステム1921、ウィンドウシステム1922を利用しながら実行する。
例えば、プログラム群1923には、実施の形態1〜4の暗号処理装置1に含まれる各要素(「〜部」として示した要素)の機能を実現するプログラムが格納されている。プログラムは、CPU1911により読み出され実行される。
また、ファイル群1924には、暗号処理装置1に含まれる各要素(「〜部」として示した要素)が参照するテーブルが磁気ディスク装置1920に格納されている。
【0113】
また、RAM1914には、CPU1911に実行させるオペレーティングシステム1921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM1914には、CPU1911による処理に必要な各種データが格納される。
例えば、暗号処理装置1に含まれる各要素(「〜部」として示した要素)をプログラムとする場合に、各要素の機能を実現するプログラムがRAM1914にロードされる。
また、暗号処理装置1に含まれる各要素(「〜部」として示した要素)が参照するテーブルがRAM1914にロードされる。
【0114】
また、ROM1913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置1920にはブートプログラムが格納されている。
暗号処理装置1の起動時には、ROM1913のBIOSプログラム及び磁気ディスク装置1920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム1921が起動される。
【0115】
また、ファイル群1924には、実施の形態1〜4の説明において、「〜処理」の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU1911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているデータフローの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM1914のメモリ、FDD1904のフレキシブルディスク、CDD1905のコンパクトディスク、磁気ディスク装置1920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス1912や信号線やケーブルその他の伝送媒体によりオンライン伝送される場合がある。
【0116】
また、実施の形態1〜4の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM1913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU1911により読み出され、CPU1911により実行される。すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
【0117】
このように、実施の形態1〜4に示す暗号処理装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0118】
【図1】実施の形態1に係る暗号処理の全体の流れを示す図。
【図2】実施の形態1に係る初期鍵加算処理部の構成例を示す図。
【図3】実施の形態1に係る非線形変換処理部の構成例を示す図。
【図4】実施の形態1に係る線形変換処理部の構成例を示す図。
【図5】実施の形態1に係る鍵加算処理部の構成例を示す図。
【図6】実施の形態1に係る最終変換処理部の構成例を示す図。
【図7】実施の形態2に係る初期鍵加算処理部の構成例を示す図。
【図8】実施の形態2に係る鍵加算処理部の構成例を示す図。
【図9】実施の形態3に係る暗号処理の全体の流れを示す図。
【図10】実施の形態3に係る初期変換処理部の構成例を示す図。
【図11】実施の形態4に係る鍵スケジュール部の構成例を示す図。
【図12】実施の形態4に係る初期鍵加算処理部の構成例を示す図。
【図13】実施の形態4に係る初期鍵加算処理部の構成例を示す図。
【図14】実施の形態1に係る暗号処理装置の構成例を示す図。
【図15】実施の形態3に係る暗号処理装置の構成例を示す図。
【図16】実施の形態1〜4に係る暗号処理装置のハードウェア構成例を示す図。
【符号の説明】
【0119】
1 暗号処理装置、11 鍵スケジュール部、12 暗号処理部、1210 平文分割部、1220 初期鍵加算処理部、1230 非線形変換処理部、1240 線形変換処理部、1250 鍵加算処理部、1260 最終変換処理部、1270 暗号文連結部、1280 初期変換処理部。
【技術分野】
【0001】
本発明は、暗号アルゴリズムを処理する装置に関する。
【背景技術】
【0002】
暗号をシステム上で実行する場合、実行中のシステムの消費電力の変化を観測し、暗号処理に使われている秘密情報である暗号鍵を推測する方法がある(例えば非特許文献1)。
この手法は電力解析と呼ばれている。
電力解析に対して、解析を行われても、暗号鍵を推測できないように暗号を実装する必要がある。
【0003】
このような解析への対策法として、いくつかの方法が提案されている(たとえば特許文献1、2)。
また、電力解析に弱い部分をテーブル参照のみで構築するテーブルネットワーク実装がある(例えば非特許文献2)。
テーブルに設計者のみが知り得る変換処理を施すことで従来の電力差分解析に対して耐性を持たせることができる。
【特許文献1】特開2005−134477号公報
【特許文献2】特開2002−311826号公報
【非特許文献1】P. Kocher, J. Jaffe, B. Jun, ”Differential Power Analysis”, Advances in Cryptology: Proceedings of CRYPTO’99 Springer−Verlag, pp.388−397, 1999
【非特許文献2】S.Chow, P. Eisen, H. Johnson, P.C. Oorschot, ”White−Box Cryptography and an AES Implementation”, Advances in Cryptology: Proceedings of SAC 2002 Springer−Verlag, 2002
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1や2によれば、あらかじめ複数のスクランブル処理を用意し、暗号処理の過程で、乱数や暗号鍵によって、適用するスクランブル処理を切り替えている。
この場合、用意するスクランブル回路分だけ、冗長なリソースが必要となる。また、解析の困難さは用意するテーブルの種類にのみ依存し、要するリソースの割には、十分な複雑さを得ることはできない。
【0005】
一方、テーブルネットワーク実装では、設計者が一定の条件の下で任意にテーブルを設計でき、かつ設計可能なテーブルの種類が十分大きいため、従来の電力解析を困難にできる。
しかし、従来のテーブルネットワーク実装では、拡大鍵の生成処理もテーブルに含まれているため、全拡大鍵に対して異なるテーブルを用意する必要があるため、大量のメモリを消費する。
【0006】
また、異なる秘密鍵が利用されるたびにテーブルを構築しなおす必要があり、演算に多大なコストがかかる。さらに、テーブル構築過程を攻撃することで、秘密鍵や設計者のみが知り得る変換処理が解析される恐れがある。
【0007】
本発明は、上記のような課題を解決することを主な目的の一つとしており、秘密鍵によるテーブルの再構築を必要とせずに、かつ設計者のみが知り得る変換処理を入れ込んで従来の電力差分解析に対して耐性を持たせる方法を実現することを主な目的の一つとする。
【課題を解決するための手段】
【0008】
本発明に係る暗号処理装置は、
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする。
【発明の効果】
【0009】
本発明では、外部において暗号鍵から生成された拡大鍵を入力するとともに、拡大鍵に対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理等を1回のテーブル参照で行うことができ、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【発明を実施するための最良の形態】
【0010】
実施の形態1.
図1は、本実施の形態に係る暗号処理の全体の流れを示す。
図1では、SPN(Substitution Permutation Network)構造の暗号の例を示しているが、後述する各処理を組み合わせることで、Feistel構造の暗号を含む、任意の暗号に適用可能である。
【0011】
図1に示す暗号処理の前提として、鍵スケジュール処理によって、あらかじめ暗号鍵から拡大鍵123〜131が生成される。
【0012】
また、m×nビットの平文データ122(以下、単に平文ともいう)はnビットずつに分解され、各々の平文と拡大鍵123〜125は初期鍵加算処理101〜103に入力される。
初期鍵加算処理101〜103の出力は非線形変換処理104〜106に入力される。
線形変換処理107〜109は複数の非線形変換処理104〜106の出力を入力として、nビットの出力を求める。
線形変換処理107〜109の出力は鍵加算処理110〜112に入力され、拡大鍵126〜128と加算される。
以降、非線形変換処理、線形変換処理、鍵加算処理を繰り返す。最終の鍵加算処理116〜118の出力は最終変換処理119〜121に入力され、その出力を連接したものが暗号文データ132(以下、単に暗号文ともいう)となる。
【0013】
図14は、図1に示す各処理を実現する暗号処理装置1の機能ブロックを示す。
【0014】
図14において、鍵スケジュール部11は、暗号鍵から拡大鍵123〜131を生成する。
本実施の形態では、鍵スケジュール部11における拡大鍵123〜131の生成方法は、どのようなものであってもよい。
なお、鍵スケジュール部11が生成する拡大鍵123〜131は、nビットのビット長(分割後の平文と同じビット長)である。
【0015】
暗号処理部12は、図1に示される暗号処理を実施する。
つまり、暗号処理部12に含まれる各要素が図1の処理順序に従って各処理を繰り返すことで暗号処理が実施される。
【0016】
平文分割部1210は、入力されたm×nビットの平文122をnビットずつに分割する。
【0017】
初期鍵加算処理部1220は、図1の初期鍵加算処理101〜103を実施する。
初期鍵加算処理部1220は、図1に示すように、鍵スケジュール部11において暗号鍵から生成された拡大鍵123〜125を入力し、分割された平文を入力データとして入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データ(分割された平文)を拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、分割拡大鍵と分割入力データ(以下、単に分割入力ともいう)との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
初期鍵加算処理部1220の詳細は、図2を参照して後述する。
なお、初期鍵加算処理部1220は、入力データが平文であり、全単射逆変換処理が含まれないが、拡大鍵の分割を行う点、入力データの分割を行う点、加算処理及び単射逆変換処理を1回のテーブル参照で行う点で後述する鍵加算処理部1250と共通しており、初期鍵加算処理部1220は、鍵加算処理部の一例である。
【0018】
非線形変換処理部1230は、初期鍵加算処理部1220又は後述する鍵加算処理部1250から出力されたデータを入力し、入力したデータに対する初期鍵加算処理部1220又は鍵加算処理部1250の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを1回のテーブル参照により行う。
より具体的には、非線形変換処理部1230は、逆変換処理と、非線形変換処理と、非線形変換処理後のデータを初期鍵加算処理部1220又は鍵加算処理部1250における拡大鍵及び入力データの分割位置と同じ分割位置で分割する処理と、分割後の各データに対する全単射変換処理と、全単射逆変換処理後の各データを連接する処理とを1回のテーブル参照により行う。
また、非線形変換処理部1230が行う全単射変換処理は、排他的論理和演算に対して加法性のある全単射変換処理である。
非線形変換処理部1230の詳細は、図3を参照して後述する。
【0019】
線形変換処理部1240は、非線形変換処理部1230から出力されたデータを入力とし、入力データに対して線形変換処理を行って、鍵加算処理部1250に線形変換処理後のデータを出力する。
線形変換処理部1240の詳細は、図4を参照して後述する。
【0020】
鍵加算処理部1250は、線形変換処理部1240から出力されたデータを入力し、また、拡大鍵126〜127等を入力する。
線形変換処理部1240から入力した入力データは、非線形変換処理部1230により全単射変換処理が行われた後のデータである。
そして、鍵加算処理部1250は、入力データに対して非線形変換処理部1230による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
より具体的には、鍵加算処理部1250は、同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、更に、分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
鍵加算処理部1250の詳細は、図5を参照して後述する。
【0021】
最終変換処理部1260は、鍵加算処理部1250から出力されたデータを入力し、入力したデータに対して鍵加算処理部1250の単射変換処理の逆変換処理を行い、逆変換処理後のデータを分割された暗号文データ(nビット)として出力する。
最終変換処理部1260の詳細は、図6を参照して後述する。
【0022】
暗号文連結部1270は、最終変換処理部1260から出力されたnビットの暗号文データを連結してm×nビットの暗号文データとし、m×nビットの暗号文データを出力する。
【0023】
図2は初期鍵加算処理部1220の構成を示す。
図2では、入力205と拡大鍵206との加算を行う(鍵加算)。
加算処理の内容は暗号アルゴリズムにより決定される。加算処理は、例えば、排他論理和演算である。
さらに、出力に対し単射変換処理を行う。
【0024】
まず、初期鍵加算処理部1220は、nビットの入力205及び拡大鍵206を分割する。
分割する個数及びサイズは、その合計がnビットになるようであれば任意に分割してよい。
但し、対になる分割入力と分割拡大鍵は同じサイズである必要がある。
図2では、n1ビットの分割入力207及び分割拡大鍵209とn2ビットの分割入力208及び分割拡大鍵210に分割した例を示す。
【0025】
分割入力207及び分割拡大鍵209をテーブル201に入力し、テーブル出力211を得る。
同様に、分割入力208及び分割拡大鍵210をテーブル202に入力し、テーブル出力212を得る。
加算処理215により、テーブル出力211とテーブル出力212とを加算し、出力216を得る。
【0026】
テーブル201の内容について説明する。テーブル202の内容はテーブル201と同様である。
テーブル201について、分割入力207と分割拡大鍵209は加算処理213によって加算され、その出力が単射変換処理203によって、nビットのテーブル出力211となる。
テーブル201及びテーブル202は、分割入力と分割拡大鍵に対応させて事前に計算しておき、初期鍵加算処理部1220に対応付けて記憶領域に格納する。
つまり、分割入力と分割拡大鍵の対の各パターンに対して事前に出力値を計算しておき、計算結果をテーブル201及びテーブル202に記述して、初期鍵加算処理部1220に対応づけて記憶領域に格納する。
例えば、平文データ(m×nビット)が32ビットである場合に、m=4とした場合は、n=8ビットとなり、n1=n2=4ビットとした場合には、4ビットの分割拡大鍵と4ビットの分割入力における全組合せに対する出力値を計算して、テーブル201及びテーブル202に記述するようにする。
なお、単射変換処理203は、n1ビットを入力とし、所定のnビット出力を出す。
【0027】
単射変換処理203、単射変換処理204、加算処理215の条件について、単射変換処理203の入力をx1、出力をf1(x1)、単射変換処理204の入力をx2、出力をf2(x2)、加算処理215を“+”と表示した場合、x=x1||x2の写像f(x)=f1(x1)+f2(x2)が全単射写像になるように決定する。ただし、“||”はデータの連接を示す。
【0028】
前記単射変換処理203、単射変換処理204、加算処理215の例を以下に示す。
【0029】
例1:
GF(2)上のn×n正則行列Zを与え、数式1を満たすn1×nの行列Aとn2×nの行列Bを生成する。また、nビットの固定値c1、c2も生成する。
単射変換処理203は数式2により出力yを求め、単射変換処理204は数式3により出力yを求める。
加算処理215はビット単位の排他的論理和とする。
【0030】
【数1】
【0031】
例2:
n1×n1の全単射変換Eとn2×n2の全単射変換Fを与える。また、n2ビットの定数c3及びn1ビットの定数c4を与える。
単射変換処理203は数式4により出力yを求め、単射変換処理204は数式5により出力yを求める。
加算処理215はビット単位の排他的論理和とする。
【0032】
【数2】
【0033】
なお、例1と例2を組み合わせてもよい。
例えば、テーブル201の単射変換処理203は、例1の数式2を用いて行い、テーブル202の単射変換処理204は、例2の数式5を用いて行うようにしてもよい。
また、テーブル201の単射変換処理203は、例2の数式4を用いて行い、テーブル202の単射変換処理204は、例1の数式3を用いて行うようにしてもよい。
【0034】
このように、初期鍵加算処理部1220では、鍵スケジュール部11で生成された拡大鍵を入力し、入力した拡大鍵を分割した分割拡大鍵と分割入力の組合せに対して予め用意しているテーブルを利用して、加算処理、単射変換処理を行う。
つまり、拡大鍵の生成処理は外部である鍵スケジュール部11で行われ、初期鍵加算処理部1220が参照するテーブルには拡大鍵生成処理が含まれていないので、暗号鍵に対応させてテーブルを更新する必要がない。
【0035】
図3に非線形変換処理部1230の構成を示す。図3は、暗号の非線形変換処理である。
【0036】
入力306はテーブル301に入力され、出力307を得る。
【0037】
テーブル301の内容について説明する。
入力データは逆変換処理302により変換される。
逆変換処理302は、初期鍵加算処理部1220の単射変換処理203及び単射変換処理204(又は、鍵加算処理部1250の単射変換処理505及び単射変換処理506)に対応し、図2の出力216(又は図5の出力509)に対する逆変換を求める。以下に前記例1及び例2に対する逆変換を示す。
【0038】
例1の逆変換:
逆変換処理302では、数式6を計算する。ただし、Z−1は数式1に示す行列Zの逆行列である。
【0039】
【数3】
【0040】
例2の逆変換:
逆変換処理302では、数式7を計算する。ただし、E−1,F−1は全単射変換E,F逆行列とする。“>>n2”はn2ビットの左シフト、“・n1”はデータの下位n1ビットの抽出を示す。
【0041】
【数4】
【0042】
逆変換処理302の出力は非線形変換処理303に入力される。非線形変換処理303は暗号アルゴリズムにより決定される。
【0043】
非線形変換処理303の出力は複数に分割され、各々について全単射変換処理が施される。全単射変換処理f1(x1),f2(x2),・・・,fn(xn)は、図1の線形変換処理107〜109に対して加法性を満たすように選択する。
具体的には、線形変換処理をy=y1‖y2‖・・・‖yn=fL(x1,x2,・・・,xn)とした場合、数式8を満たすように選択する。
ただし、yiは数式9を満たすものとする。数式9で|yi|はyiのビット長を示す。
全単射変換処理されたデータは連結されて出力される。
テーブル301は、事前に計算しておき、非線形変換処理部1230に対応付けて記憶領域に格納する。
つまり、入力データの各パターンに対して事前に出力値を計算しておき、計算結果をテーブル301に記述して、非線形変換処理部1230に対応付けて記憶領域に格納する。
【0044】
【数5】
【0045】
線形変換処理107〜109をビット単位の排他的論理和とした場合の、全単射変換処理304、全単射変換処理305の例を以下に示す。
【0046】
例1:
GF(2)上のn1×n1の正則行列Gとn2×n2の正則行列Hを生成する。また、n1ビットの固定値c1,及びn2ビットの固定値c2も生成する。全単射変換処理304は数式10により出力yを求め、全単射変換処理305は数式11により出力yを求める。
【0047】
【数6】
【0048】
例2:
ガロア拡大体GF(2n1)の元k,lおよびGF(2n2)の元m,nを与える。全単射変換処理204では数式12により出力yを求め、全単射変換処理205では数式13により出力yを求める。ただし、“・”はガロア拡大体上の乗算を示し、“+”はガロア拡大体上の加算を示す。
【0049】
【数7】
【0050】
例3:
正整数p(1≦p<n1),q(1≦q<n2)を与える。全単射変換処理204では数式14により出力yを求め、全単射変換処理205では数式15により出力yを求める。
【0051】
【数8】
【0052】
なお、例1〜例3を組み合わせてもよい。
次に、図4に線形変換処理部1240の構成を示す。
線形変換処理401の内容は暗号アルゴリズムにより決定される。複数のnビット入力402〜404を得て、nビット出力405を生成する。
線形変換処理401は、例えば、排他論理和演算である。
【0053】
図5に鍵加算処理部1250の構成を示す。
図5では、入力507と拡大鍵508と加算を行う(鍵加算)。加算処理の内容は暗号アルゴリズムにより決定される。加算処理は、例えば、排他論理和演算処理である。
さらに、出力に対し単射変換処理を行う。
【0054】
まず、nビットの入力507及び拡大鍵508をそれぞれ分割入力509、分割入力510及び分割拡大鍵511、分割拡大鍵512に分割する。
分割法は図3における分割法と同一である。
【0055】
分割入力509、分割拡大鍵511をテーブル501に入力し、テーブル出力513を得る。
同様に、分割入力510、分割拡大鍵512をテーブル502に入力し、テーブル出力514を得る。
加算処理517により、テーブル出力513とテーブル出力514とを加算し、出力509を得る。
【0056】
テーブル501の内容について説明する。テーブル502の内容はテーブル501と同様である。
テーブル501について、分割入力509は全単射逆変換処理503に入力される。全単射逆変換処理503は図3の全単射変換処理304の逆変換処理である。
全単射逆変換処理503の出力と分割拡大鍵511は加算処理515によって加算され、その出力が単射変換処理505によって、nビットのテーブル出力513となる。
単射変換処理505は図2の単射変換処理203と同値である。
テーブル501及びテーブル502は、分割入力と分割拡大鍵に対応させて事前に計算しておき、鍵加算処理部1250に対応付けて記憶領域に格納する。
つまり、分割入力と分割拡大鍵の対の各パターンに対して事前に出力値を計算しておき、計算結果をテーブル501及びテーブル502に記述して、鍵加算処理部1250に対応づけて記憶領域に格納する。
【0057】
このように、鍵加算処理部1250では、鍵スケジュール部11で生成された拡大鍵を入力し、入力した拡大鍵を分割した分割拡大鍵と分割入力の組合せに対して予め用意しているテーブルを利用して、全単射逆変換処理、加算処理、単射変換処理を行う。
つまり、拡大鍵の生成処理は外部である鍵スケジュール部11で行われ、鍵加算処理部1250が参照するテーブルには拡大鍵生成処理が含まれていないので、暗号鍵に対応させてテーブルを更新する必要がない。
【0058】
図6に最終変換処理の構成を示す。この処理は暗号文を出力する直前に行う。
【0059】
入力603はテーブル601に入力され、出力604を得る。
逆変換処理602は図3の逆変換処理302と同じである。
テーブル601は、事前に計算しておき最終変換処理部1260に対応付けて格納する。
【0060】
復号処理も前記暗号処理と同様に行うことができる。ただし、拡大鍵123〜131(図1)、加算処理213,214(図2)、非線形変換処理303(図3)、線形変換処理401(図4) 加算処理515,516(図5)は、復号アルゴリズムに準拠する。また復号時は、図1において、入力が暗号文となり、平文を出力する。
つまり、本実施の形態で説明した手順及び図1〜図6、図14に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0061】
ここで、本実施の形態に係る効果の一例について説明する。
図2、3、5、6における単射変換処理ならびに全単射変換処理は、所定の条件を満たす範囲で、設計者が任意に選択できる。
よって、攻撃者が暗号アルゴリズムを知っていたとしても、各々のコンポーネントの出力までは予想できない。これにより、従来の電力差分解析に対して耐性を持たせることができる。
【0062】
また、従来のように、暗号鍵によるテーブルの再計算を必要としないため、その分の演算コストを抑えることができる。
さらに、鍵加算部において、入力を分割することにより、テーブルサイズを抑えることができる。
【0063】
このように、本実施の形態に係る暗号処理装置によれば、外部において暗号鍵から生成された拡大鍵を入力するとともに、拡大鍵に対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理等を1回のテーブル参照で行うことができ、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【0064】
実施の形態2.
実施の形態1において、鍵加算は分割入力と分割拡大鍵とを連結してテーブル参照を行っているが、本実施の形態では、分割入力と分割拡大鍵とを連結しないでテーブル参照する方法を示す。
【0065】
図7は、図2におけるテーブル201における実施例を示す。
テーブル202についても同様に実施できる。
テーブル701はテーブル201と等価なテーブルである。
具体的には、テーブル701において、分割拡大鍵209を上位ビットに、分割入力207を下位ビットに連結してテーブルを作成する。
つまり、本実施の形態に係る初期鍵加算処理部1220が利用するテーブル701は、複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルである。
なお、単射変換処理702は図2の単射変換処理203と同じである。
また、加算処理708は図2の加算処理213と同じである。
【0066】
アドレス計算処理703は分割拡大鍵705を入力として、参照テーブルアドレス707(テーブルアドレスの上位ビット)を計算する。具体的には、分割拡大鍵705をn1ビット左シフトし、その結果とテーブル701の先頭アドレスとを加算し、その結果を参照テーブルアドレス707とする。
アドレス計算処理703は鍵スケジュールの段階で計算してもよい。
【0067】
また、分割入力704をテーブルアドレスの下位ビットとし、参照テーブルアドレス707を元に、該当するテーブルアドレスのテーブル値を参照し、テーブル出力706を得る。
具体的には参照テーブルアドレス707と分割入力704とを連結し、結果のアドレスのテーブル値を参照する。
【0068】
このように、本実施の形態では、初期鍵加算処理部1220は、分割拡大鍵をテーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データからいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果をテーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
【0069】
図8は図5におけるテーブル501における実施例を示す。
テーブル502についても同様に実施できる。
テーブル801はテーブル501と等価なテーブルである。
具体的には、テーブル801において、分割拡大鍵511を上位ビットに、分割入力509を下位ビットに連結してテーブルを作成する。
つまり、本実施の形態に係る鍵加算処理部1250が利用するテーブル801は、複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルである。
なお、全単射逆変換処理802は図5の全単射逆変換処理503と同じである。
また、単射変換処理803は図3の単射変換処理505と同じである。
また、加算処理809は図5の加算処理515と同じである。
【0070】
アドレス計算処理804は分割拡大鍵805を入力として、参照テーブルアドレス807(テーブルアドレスの上位ビット)を計算する。
具体的には、分割拡大鍵805をn1ビット左シフトし、その結果とテーブル801の先頭アドレスとを加算し、その結果を参照テーブルアドレス807とする。
アドレス計算処理804は鍵スケジュールの段階で計算してもよい。
【0071】
また、分割入力806をテーブルアドレスの下位ビットとし、参照テーブルアドレス807を元に、該当するテーブルアドレスのテーブル値を参照し、テーブル出力808を得る。
具体的には参照テーブルアドレス807と分割入力806とを連結し、結果のアドレスのテーブル値を参照する。
【0072】
このように、本実施の形態では、鍵加算処理部1250は、分割拡大鍵をテーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データからいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果をテーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
【0073】
復号時の鍵加算処理部も前記暗号時の鍵加算処理部1250と同様に行うことができる。ただし、分割拡大鍵805、加算処理809(図8)は、復号アルゴリズムに準拠する。
つまり、本実施の形態で説明した手順及び図7、図8、図14に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0074】
ここで、本実施の形態に係る効果の一例について説明する。
本実施の形態では、実施の形態1に示した効果を得られるだけでなく、暗号鍵に依存する計算を、鍵スケジュール部に組み込むことができる。
また、暗号演算過程で暗号鍵本体を用いることがないため、より安全な暗号演算を実施できる。
【0075】
実施の形態3.
実施の形態1および2では、鍵加算処理用に4種類(テーブル201、テーブル202、テーブル501、テーブル502)を用意したが、本実施の形態では3種類のテーブルで済ませる方法を示す。
【0076】
図9は、本実施の形態に係る暗号処理の全体の流れを示す。
図9では、SPN構造の暗号の例を示しているが、後述する各処理を組み合わせることで、Feistel構造の暗号を含む、任意の暗号に適用可能である。
図9では、図1の初期鍵加算処理101〜103が、初期変換処理933〜935となっている点が、図1との主な相違点である。
他の処理は、図1に示したものと同様である。
【0077】
図9では、あらかじめ鍵スケジュール処理によって、暗号鍵から拡大鍵923〜931を生成させている。
【0078】
また、m×nビットの平文122はnビットずつに分解され、各々の平文は初期変換処理933〜935に入力される。
その出力と拡大鍵923〜925は鍵加算処理901〜903に入力される。
鍵加算処理901〜903の出力は非線形変換処理904〜906に入力される。
線形変換処理907〜909は複数の非線形変換処理904〜906の出力を入力として、nビットの出力を求める。
線形変換処理907〜909の出力は鍵加算処理910〜912に入力され、拡大鍵926〜928と加算される。以降、非線形変換処理、線形変換処理、鍵加算処理を繰り返す。
最終の鍵加算処理916〜918の出力は最終変換処理919〜921に入力され、その出力を連接したものが暗号文932となる。
【0079】
図15は、本実施の形態に係る暗号処理装置1の構成例を示す、
初期変換処理部1280は、図9に示す初期変換処理933〜935を行う。
初期変換処理部1280の処理の詳細は後述するが、初期変換処理部1280は、平文データを入力し、入力した平文データを分割する処理と、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを1回のテーブル参照により行う。
そして、初期変換処理部1280が行う全単射変換処理は、排他的論理和演算に対して加法性のある全単射変換処理である。
図15では、初期鍵加算処理部1220の代わりに初期変換処理部1280が配置されている点以外は、図14に示した構成と同じである。
【0080】
図10に初期変換処理部1280の構成例を示す。
図10の初期変換処理部1280は、暗号化の初期処理として平文を変換する。
【0081】
入力1004はテーブル1001によって、出力1009に変換される。
【0082】
テーブル1001の内容について説明する。
入力1004はn1ビットの分割入力1005とn2ビットの分割入力1006に分割される。
分割法は鍵加算処理と同じである。
全単射変換処理1002は分割入力1005よりテーブル出力1007を出力する。全単射変換処理1003は分割入力1006よりテーブル出力1008を出力する。テーブル出力1007とテーブル出力1008は連接されて出力1009となる。
【0083】
鍵加算処理、非線形変換処理、線形変換処理、最終変換処理は実施の形態1と同じである。
【0084】
復号処理も前記暗号処理と同様に行うことができる。ただし、拡大鍵923〜931(図9)、非線形変換処理303(図3)、線形変換処理401(図4)加算処理515,516(図5)は、復号アルゴリズムに準拠する。また復号時は、図9において、入力が暗号文となり、平文を出力する。
つまり、本実施の形態で説明した手順及び図9、図10、図15に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0085】
ここで、本実施の形態に係る効果の一例について説明する。
図10の初期変換処理を行うことにより、実施の形態1に示す効果を得られるだけでなく、実施の形態1では、初期鍵加算処理と鍵加算処理に合計4つのテーブルを必要としたが、本実施の形態では、初期変換処理と鍵加算処理に合計3つのテーブルで実装可能である。
よって、トータルでテーブルが1つ削減でき、メモリ使用量を削減できる。
【0086】
実施の形態4.
実施の形態1〜3では、スケジュール後の拡大鍵には、何の変換処理も施されていないが、本実施の形態では、鍵スケジュール時に拡大鍵に変換を施す手法を示す。
本実施の形態は実施の形態1〜3と組み合わせて用いる。
【0087】
図11は本実施の形態における鍵スケジュール部11を示す。
鍵スケジュール処理1101は、暗号鍵1108から拡大鍵1109〜1111を生成する。
鍵スケジュール処理1101は実装する暗号アルゴリズムに準拠する。
各拡大鍵1109〜1111は分割され、各々について、全単射変換処理1102〜1107によって変換される。変換された拡大鍵は結合され、変換拡大鍵1112〜1114となる。
【0088】
このように、本実施の形態に係る鍵スケジュール部11は、暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する。
【0089】
なお、図11では、鍵スケジュール処理と全単射変換処理を分けて記載しているが、同様の効果を有するように、鍵スケジュール処理の中に全単射変換処理を組み込んでもよい。
【0090】
図12に本実施の形態における初期鍵加算処理部1220を示す。
図12では、全単射逆変換処理1216、1217が付加される以外は図2と同様である。
全単射逆変換処理1216、1217は、本実施の形態の鍵スケジュール部11において、変換拡大鍵1206が生成された際の全単射変換処理に対する逆変換である。
【0091】
すなわち、本実施の形態では、初期鍵加算処理部1220は、鍵スケジュール部11から変換拡大鍵1206を入力し、また、平文を入力データ1205として入力する。
また、変換拡大鍵1206を所定の分割位置で分割して2以上の分割拡大鍵とし、入力データ1205を変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとする。
そして、分割拡大鍵に対して鍵スケジュール部11による全単射変換処理の逆変換を行う全単射逆変換処理1216、1217と、全単射逆変換処理後の分割変換拡大鍵と分割入力データとの加算処理1213、1214と単射変換処理1203、1204を1回のテーブル参照により行う。
【0092】
図13に本実施の形態における鍵加算処理部1250を示す。
図13では、全単射逆変換処理1318、1319が付加される以外は図5と同様である。
全単射逆変換処理1318、1319は、本実施の形態の鍵スケジュール部11において、変換拡大鍵1308が生成された際の全単射変換処理に対する逆変換である。
【0093】
すなわち、本実施の形態では、鍵加算処理部1250は、鍵スケジュール部11から変換拡大鍵1308を入力し、また、入力データ1307を入力する。
また、変換拡大鍵1308を所定の分割位置で分割して2以上の分割拡大鍵とし、入力データ1307を変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとする。
そして、分割拡大鍵に対して鍵スケジュール部11による全単射変換処理の逆変換を行う全単射逆変換処理1318、1319(第1の全単射逆変換処理)と、分割入力データに対して非線形変換処理部1230による全単射変換処理の逆変換を行う全単射逆変換処理1303、1304(第2の全単射逆変換処理)と、全単射逆変換処理1318、1319後の分割拡大鍵と全単射逆変換処理1303、1304後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行う。
【0094】
復号処理時の初期鍵加算処理部及び鍵加算処理部は、前記暗号処理時の初期鍵加算処理部1220及び鍵加算処理部1250と同様に行うことができる。ただし、変換拡大鍵1206(図12)、変換拡大鍵1308(図13)、加算処理1213・1214(図12)、加算処理1315・1316(図13)は、復号アルゴリズムに準拠する。
つまり、本実施の形態で説明した手順及び図11〜図13に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【0095】
ここで、本実施の形態に係る効果の一例について説明する。
実施の形態1〜3に示す効果に加え、さらに、拡大鍵を推定不可能にできる。
よって、攻撃者が暗号アルゴリズムを知っていたとしても、拡大鍵の値を予想できない。これにより、鍵スケジュール処理に対しても、従来の電力差分解析に対して耐性を持たせることができる。
【0096】
次に、実施の形態1〜4に示した暗号処理装置及び暗号処理方法の主な特徴を記す。
【0097】
実施の形態1〜4では、暗号をソフトウェアによって実行する暗号処理装置及び暗号処理方法であって、入力と暗号鍵との加算処理(鍵加算処理)をテーブル参照によって実現するにあたり、入力と暗号鍵を各々同じビット列で分割し、分割された入力と暗号鍵とを入力として、テーブル参照によって加算処理を実現し、分割した各々の入力及び暗号鍵に対するテーブル出力を加算する暗号処理装置及び暗号処理方法を説明した。
【0098】
また、実施の形態1〜4では、鍵加算処理におけるテーブルについて、以下の処理を1回のテーブル参照によって行う暗号処理装置及び暗号処理方法を説明した。
A)入力と暗号鍵とを本来の暗号の仕様に則り加算する。
B)前記A)の出力を単射変換する。
【0099】
また、実施の形態1〜4では、前記分割された暗号鍵(復号鍵)と、前記テーブル本体とから、参照アドレスを計算し、前記参照アドレスと前記分割された入力とからテーブル出力を求める暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0100】
また、実施の形態1〜4では、加算処理の後に実行する非線形変換処理において、以下の処理を1回のテーブル参照によって行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
C)前記鍵加算処理において実行した単射変換に対する逆変換処理を行う。
D)前記C)の出力に対し、本来の暗号の仕様に則り非線形処理を行う。
E)前記D)の出力を分割し、分割された各々の出力に対して、全単射変換を行う。
【0101】
また、実施の形態1〜4では、非線形変換処理における全単射変換において、排他的論理和演算に対して加法性のある全単射変換を用いる暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0102】
また、実施の形態1〜4では、非線形変換の後に実行する鍵加算処理において、前記E)と同様に分割し、分割された入力と暗号鍵(復号鍵)とを入力として、テーブル参照によって加算処理を実現し、分割した各々の入力及び暗号鍵(復号鍵)に対するテーブル出力を加算する暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0103】
また、実施の形態1〜4では、鍵加算処理におけるテーブルについて、入力を前記E)と同様に分割した上で、以下の処理を1回のテーブル参照によって行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
F)分割された各々の入力に対し、前記E)で行った全単射変換の逆変換を行う。
G)前記F)の出力と暗号鍵(復号鍵)とを本来の暗号の仕様に則り加算する。
H)前記G)の出力を単射変換する。
【0104】
また、実施の形態1〜4では、分割された暗号鍵(復号鍵)と、前記テーブル本体とから、アドレスを計算し、前記アドレスと前記分割された入力とからテーブル出力を求める暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0105】
また、実施の形態1〜4では、暗号終了時に前記C)に示す逆変換を行い、その結果を暗号文として出力する暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
【0106】
また、実施の形態1〜4では、暗号(復号)開始時に以下の処理を1回のテーブル参照で行い、その後に鍵加算処理を行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
I)入力を分割し、分割された各々の入力に対し、前記E)で行った全単射変換を行う。
J)前記I)の出力を連接する。
【0107】
また、実施の形態1〜4では、鍵スケジュールの段階で全単射変換を施し、鍵加算の段階で以下の処理を行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
K)暗号鍵(復号鍵)に対して鍵スケジュールで行った全単射変換に対する逆変換を行う。
L)入力とK)の出力とを本来の暗号の仕様に則り加算する。
M)前記L)の出力を単射変換する。
【0108】
また、実施の形態1〜4では、鍵スケジュールの段階で全単射変換を施し、鍵加算の段階で以下の処理を行う暗号処理装置及び暗号処理方法(復号処理装置及び復号処理方法)を説明した。
N)暗号鍵(復号鍵)に対して鍵スケジュールで行った全単射変換に対する逆変換を行う。
O)分割された各々の入力に対し、前記E)で行った全単射変換の逆変換を行う。
P)前記N)の出力とO)の出力を本来の暗号の仕様に則り加算する。
Q)前記P)の出力を単射変換する。
【0109】
最後に、実施の形態1〜4に示した暗号処理装置1のハードウェア構成例について説明する。
図16は、実施の形態1〜4に示す暗号処理装置1のハードウェア資源の一例を示す図である。
なお、図16の構成は、あくまでも暗号処理装置1のハードウェア構成の一例を示すものであり、暗号処理装置1のハードウェア構成は図16に記載の構成に限らず、他の構成であってもよい。
また、復号処理装置も、例えば、図16のハードウェア構成により実現可能である。以下の説明において、「暗号処理装置1」を「復号処理装置」と読み替えることが可能である。
【0110】
図16において、暗号処理装置1は、プログラムを実行するCPU1911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU1911は、バス1912を介して、例えば、ROM(Read Only Memory)1913、RAM(Random Access Memory)1914、磁気ディスク装置1920と接続され、これらのハードウェアデバイスを制御する。
また、CPU1911は、通信ボード1915、表示装置1901、キーボード1902、マウス1903と接続されていてもよい。
更に、CPU1911は、FDD1904(Flexible Disk Drive)、コンパクトディスク装置1905(CDD)、プリンタ装置1906、スキャナ装置1907と接続していてもよい。また、磁気ディスク装置1920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM1914は、揮発性メモリの一例である。ROM1913、FDD1904、CDD1905、磁気ディスク装置1920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード1915、キーボード1902、マウス1903、スキャナ装置1907、FDD1904などは、入力装置の一例である。
また、通信ボード1915、表示装置1901、プリンタ装置1906などは、出力装置の一例である。
【0111】
通信ボード1915は、ネットワークに接続されている。例えば、通信ボード1915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されていても構わない。
【0112】
磁気ディスク装置1920には、オペレーティングシステム1921(OS)、ウィンドウシステム1922、プログラム群1923、ファイル群1924が記憶されている。
プログラム群1923のプログラムは、CPU1911がオペレーティングシステム1921、ウィンドウシステム1922を利用しながら実行する。
例えば、プログラム群1923には、実施の形態1〜4の暗号処理装置1に含まれる各要素(「〜部」として示した要素)の機能を実現するプログラムが格納されている。プログラムは、CPU1911により読み出され実行される。
また、ファイル群1924には、暗号処理装置1に含まれる各要素(「〜部」として示した要素)が参照するテーブルが磁気ディスク装置1920に格納されている。
【0113】
また、RAM1914には、CPU1911に実行させるオペレーティングシステム1921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM1914には、CPU1911による処理に必要な各種データが格納される。
例えば、暗号処理装置1に含まれる各要素(「〜部」として示した要素)をプログラムとする場合に、各要素の機能を実現するプログラムがRAM1914にロードされる。
また、暗号処理装置1に含まれる各要素(「〜部」として示した要素)が参照するテーブルがRAM1914にロードされる。
【0114】
また、ROM1913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置1920にはブートプログラムが格納されている。
暗号処理装置1の起動時には、ROM1913のBIOSプログラム及び磁気ディスク装置1920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム1921が起動される。
【0115】
また、ファイル群1924には、実施の形態1〜4の説明において、「〜処理」の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU1911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているデータフローの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM1914のメモリ、FDD1904のフレキシブルディスク、CDD1905のコンパクトディスク、磁気ディスク装置1920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス1912や信号線やケーブルその他の伝送媒体によりオンライン伝送される場合がある。
【0116】
また、実施の形態1〜4の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM1913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU1911により読み出され、CPU1911により実行される。すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
【0117】
このように、実施の形態1〜4に示す暗号処理装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0118】
【図1】実施の形態1に係る暗号処理の全体の流れを示す図。
【図2】実施の形態1に係る初期鍵加算処理部の構成例を示す図。
【図3】実施の形態1に係る非線形変換処理部の構成例を示す図。
【図4】実施の形態1に係る線形変換処理部の構成例を示す図。
【図5】実施の形態1に係る鍵加算処理部の構成例を示す図。
【図6】実施の形態1に係る最終変換処理部の構成例を示す図。
【図7】実施の形態2に係る初期鍵加算処理部の構成例を示す図。
【図8】実施の形態2に係る鍵加算処理部の構成例を示す図。
【図9】実施の形態3に係る暗号処理の全体の流れを示す図。
【図10】実施の形態3に係る初期変換処理部の構成例を示す図。
【図11】実施の形態4に係る鍵スケジュール部の構成例を示す図。
【図12】実施の形態4に係る初期鍵加算処理部の構成例を示す図。
【図13】実施の形態4に係る初期鍵加算処理部の構成例を示す図。
【図14】実施の形態1に係る暗号処理装置の構成例を示す図。
【図15】実施の形態3に係る暗号処理装置の構成例を示す図。
【図16】実施の形態1〜4に係る暗号処理装置のハードウェア構成例を示す図。
【符号の説明】
【0119】
1 暗号処理装置、11 鍵スケジュール部、12 暗号処理部、1210 平文分割部、1220 初期鍵加算処理部、1230 非線形変換処理部、1240 線形変換処理部、1250 鍵加算処理部、1260 最終変換処理部、1270 暗号文連結部、1280 初期変換処理部。
【特許請求の範囲】
【請求項1】
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする暗号処理装置。
【請求項2】
前記鍵加算処理部は、
拡大鍵と入力データの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項1又は2に記載の暗号処理装置。
【請求項4】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項3に記載の暗号処理装置。
【請求項5】
前記鍵加算処理部は、
分割拡大鍵を前記テーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出することを特徴とする請求項4に記載の暗号処理装置。
【請求項6】
前記鍵加算処理部は、
入力データとして平文データを入力することを特徴とする請求項1〜5のいずれかに記載の暗号処理装置。
【請求項7】
前記暗号処理装置は、更に、
データに対して全単射変換処理を行う非線形変換処理部を有し、
前記鍵加算処理部は、
前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理とをテーブル参照により行うことを特徴とする請求項1に記載の暗号処理装置。
【請求項8】
前記鍵加算処理部は、
入力データに対する全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項7に記載の暗号処理装置。
【請求項9】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項7又は8に記載の暗号処理装置。
【請求項10】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項9に記載の暗号処理装置。
【請求項11】
前記鍵加算処理部は、
分割拡大鍵を前記テーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出することを特徴とする請求項10に記載の暗号処理装置。
【請求項12】
前記鍵加算処理部は、
拡大鍵及び入力データをn(n≧2)個の分割拡大鍵及びn個の分割入力データに分割し、単射変換処理の入力をx1〜xnとし、単射変換処理の出力をf(x1)〜f(xn)とし、x1〜xnの連接をxとした場合に、
xの写像f(x)(f(x)はf(x1)〜f(xn)を加算処理した後の値に相当)が全単射写像となる単射変換処理をテーブル参照により行うことを特徴とする請求項2又は8に記載の暗号処理装置。
【請求項13】
前記鍵加算処理部は、
テーブル参照によるテーブル出力データを分割数分得て、各テーブル出力データの加算処理を行い、加算処理後のデータを前記非線形変換処理部に出力し、
前記非線形変換処理部は、
前記鍵加算処理部から出力されたデータを入力し、
入力したデータに対する前記鍵加算処理部の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項8〜11のいずれかに記載の暗号処理装置。
【請求項14】
前記非線形変換処理部は、
前記逆変換処理と、前記非線形変換処理と、前記非線形変換処理後のデータを前記鍵加算処理部における拡大鍵及び入力データの分割位置と同じ分割位置で分割する処理と、分割後の各データに対する全単射変換処理と、全単射逆変換処理後の各データを連接する処理とを1回のテーブル参照により行うことを特徴とする請求項13に記載の暗号処理装置。
【請求項15】
前記非線形変換処理部は、
排他的論理和演算に対して加法性のある全単射変換処理を行うことを特徴とする請求項7、13及び14のいずれかに記載の暗号処理装置。
【請求項16】
前記暗号処理装置は、更に、
前記鍵加算処理部から出力されたデータを入力し、
入力したデータに対して前記鍵加算処理部の単射変換処理の逆変換処理を行い、前記逆変換処理後のデータを暗号文データとして出力する最終変換処理部を有することを特徴とする請求項8〜11のいずれかに記載の暗号処理装置。
【請求項17】
前記暗号処理装置は、更に、
平文データを入力し、
入力した平文データを分割する処理、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを1回のテーブル参照により行う初期変換処理部を有することを特徴とする請求項1に記載の暗号処理装置。
【請求項18】
前記初期変換処理部は、
排他的論理和演算に対して加法性のある全単射変換処理を行うことを特徴とする請求項17に記載の暗号処理装置。
【請求項19】
暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール部を有することを特徴とする暗号処理装置。
【請求項20】
前記暗号処理装置は、更に、
前記鍵スケジュール部から変換拡大鍵を入力し、入力データを入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理とをテーブル参照により行う鍵加算処理部を有することを特徴とする請求項19に記載の暗号処理装置。
【請求項21】
前記鍵加算処理部は、
変換拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項20に記載の暗号処理装置。
【請求項22】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、分割拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項20又は21に記載の暗号処理装置。
【請求項23】
前記暗号処理装置は、更に、
全単射変換処理を行う非線形変換処理部と、
前記鍵スケジュール部から変換拡大鍵を入力し、前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う第1の全単射逆変換処理と、入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理とをテーブル参照により行うことを特徴とする請求項19に記載の暗号処理装置。
【請求項24】
前記鍵加算処理部は、
第1の全単射逆変換処理と、第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項23に記載の暗号処理装置。
【請求項25】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵に対する第1の全単射逆変換処理と、分割入力データに対する第2の全単射逆変換処理と、第1の全単射逆変換処理後の分割拡大鍵と第2の全単射逆変換処理後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項23又は24に記載の暗号処理装置。
【請求項26】
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理手順をコンピュータに実行させることを特徴とするプログラム。
【請求項27】
暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール手順をコンピュータに実行させることを特徴とするプログラム。
【請求項28】
外部において復号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする復号処理装置。
【請求項29】
前記鍵加算処理部は、
拡大鍵と入力データの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項28に記載の復号処理装置。
【請求項30】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項28又は29に記載の復号処理装置。
【請求項31】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項30に記載の復号処理装置。
【請求項32】
前記復号処理装置は、更に、
データに対して全単射変換処理を行う非線形変換処理部を有し、
前記鍵加算処理部は、
前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理とをテーブル参照により行うことを特徴とする請求項28に記載の復号処理装置。
【請求項33】
前記鍵加算処理部は、
入力データに対する全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項32に記載の復号処理装置。
【請求項34】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項32又は33に記載の復号処理装置。
【請求項35】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項34に記載の復号処理装置。
【請求項36】
前記復号処理装置は、更に、
平文データを入力し、
入力した平文データを分割する処理、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを1回のテーブル参照により行う初期変換処理部を有することを特徴とする請求項28に記載の復号処理装置。
【請求項37】
復号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール部を有することを特徴とする復号処理装置。
【請求項38】
前記復号処理装置は、更に、
前記鍵スケジュール部から変換拡大鍵を入力し、入力データを入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理とをテーブル参照により行う鍵加算処理部を有することを特徴とする請求項37に記載の復号処理装置。
【請求項39】
前記鍵加算処理部は、
変換拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項38に記載の復号処理装置。
【請求項40】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、分割拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項38又は39に記載の復号処理装置。
【請求項41】
前記復号処理装置は、更に、
全単射変換処理を行う非線形変換処理部と、
前記鍵スケジュール部から変換拡大鍵を入力し、前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う第1の全単射逆変換処理と、入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理とをテーブル参照により行うことを特徴とする請求項37に記載の復号処理装置。
【請求項42】
前記鍵加算処理部は、
第1の全単射逆変換処理と、第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項41に記載の復号処理装置。
【請求項43】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵に対する第1の全単射逆変換処理と、分割入力データに対する第2の全単射逆変換処理と、第1の全単射逆変換処理後の分割拡大鍵と第2の全単射逆変換処理後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項41又は42に記載の復号処理装置。
【請求項44】
外部において復号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理手順をコンピュータに実行させることを特徴とするプログラム。
【請求項45】
復号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール手順をコンピュータに実行させることを特徴とするプログラム。
【請求項1】
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする暗号処理装置。
【請求項2】
前記鍵加算処理部は、
拡大鍵と入力データの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項1又は2に記載の暗号処理装置。
【請求項4】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項3に記載の暗号処理装置。
【請求項5】
前記鍵加算処理部は、
分割拡大鍵を前記テーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出することを特徴とする請求項4に記載の暗号処理装置。
【請求項6】
前記鍵加算処理部は、
入力データとして平文データを入力することを特徴とする請求項1〜5のいずれかに記載の暗号処理装置。
【請求項7】
前記暗号処理装置は、更に、
データに対して全単射変換処理を行う非線形変換処理部を有し、
前記鍵加算処理部は、
前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理とをテーブル参照により行うことを特徴とする請求項1に記載の暗号処理装置。
【請求項8】
前記鍵加算処理部は、
入力データに対する全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項7に記載の暗号処理装置。
【請求項9】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項7又は8に記載の暗号処理装置。
【請求項10】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項9に記載の暗号処理装置。
【請求項11】
前記鍵加算処理部は、
分割拡大鍵を前記テーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出することを特徴とする請求項10に記載の暗号処理装置。
【請求項12】
前記鍵加算処理部は、
拡大鍵及び入力データをn(n≧2)個の分割拡大鍵及びn個の分割入力データに分割し、単射変換処理の入力をx1〜xnとし、単射変換処理の出力をf(x1)〜f(xn)とし、x1〜xnの連接をxとした場合に、
xの写像f(x)(f(x)はf(x1)〜f(xn)を加算処理した後の値に相当)が全単射写像となる単射変換処理をテーブル参照により行うことを特徴とする請求項2又は8に記載の暗号処理装置。
【請求項13】
前記鍵加算処理部は、
テーブル参照によるテーブル出力データを分割数分得て、各テーブル出力データの加算処理を行い、加算処理後のデータを前記非線形変換処理部に出力し、
前記非線形変換処理部は、
前記鍵加算処理部から出力されたデータを入力し、
入力したデータに対する前記鍵加算処理部の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項8〜11のいずれかに記載の暗号処理装置。
【請求項14】
前記非線形変換処理部は、
前記逆変換処理と、前記非線形変換処理と、前記非線形変換処理後のデータを前記鍵加算処理部における拡大鍵及び入力データの分割位置と同じ分割位置で分割する処理と、分割後の各データに対する全単射変換処理と、全単射逆変換処理後の各データを連接する処理とを1回のテーブル参照により行うことを特徴とする請求項13に記載の暗号処理装置。
【請求項15】
前記非線形変換処理部は、
排他的論理和演算に対して加法性のある全単射変換処理を行うことを特徴とする請求項7、13及び14のいずれかに記載の暗号処理装置。
【請求項16】
前記暗号処理装置は、更に、
前記鍵加算処理部から出力されたデータを入力し、
入力したデータに対して前記鍵加算処理部の単射変換処理の逆変換処理を行い、前記逆変換処理後のデータを暗号文データとして出力する最終変換処理部を有することを特徴とする請求項8〜11のいずれかに記載の暗号処理装置。
【請求項17】
前記暗号処理装置は、更に、
平文データを入力し、
入力した平文データを分割する処理、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを1回のテーブル参照により行う初期変換処理部を有することを特徴とする請求項1に記載の暗号処理装置。
【請求項18】
前記初期変換処理部は、
排他的論理和演算に対して加法性のある全単射変換処理を行うことを特徴とする請求項17に記載の暗号処理装置。
【請求項19】
暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール部を有することを特徴とする暗号処理装置。
【請求項20】
前記暗号処理装置は、更に、
前記鍵スケジュール部から変換拡大鍵を入力し、入力データを入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理とをテーブル参照により行う鍵加算処理部を有することを特徴とする請求項19に記載の暗号処理装置。
【請求項21】
前記鍵加算処理部は、
変換拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項20に記載の暗号処理装置。
【請求項22】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、分割拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項20又は21に記載の暗号処理装置。
【請求項23】
前記暗号処理装置は、更に、
全単射変換処理を行う非線形変換処理部と、
前記鍵スケジュール部から変換拡大鍵を入力し、前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う第1の全単射逆変換処理と、入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理とをテーブル参照により行うことを特徴とする請求項19に記載の暗号処理装置。
【請求項24】
前記鍵加算処理部は、
第1の全単射逆変換処理と、第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項23に記載の暗号処理装置。
【請求項25】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵に対する第1の全単射逆変換処理と、分割入力データに対する第2の全単射逆変換処理と、第1の全単射逆変換処理後の分割拡大鍵と第2の全単射逆変換処理後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項23又は24に記載の暗号処理装置。
【請求項26】
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理手順をコンピュータに実行させることを特徴とするプログラム。
【請求項27】
暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール手順をコンピュータに実行させることを特徴とするプログラム。
【請求項28】
外部において復号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする復号処理装置。
【請求項29】
前記鍵加算処理部は、
拡大鍵と入力データの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項28に記載の復号処理装置。
【請求項30】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項28又は29に記載の復号処理装置。
【請求項31】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項30に記載の復号処理装置。
【請求項32】
前記復号処理装置は、更に、
データに対して全単射変換処理を行う非線形変換処理部を有し、
前記鍵加算処理部は、
前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理とをテーブル参照により行うことを特徴とする請求項28に記載の復号処理装置。
【請求項33】
前記鍵加算処理部は、
入力データに対する全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項32に記載の復号処理装置。
【請求項34】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項32又は33に記載の復号処理装置。
【請求項35】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項34に記載の復号処理装置。
【請求項36】
前記復号処理装置は、更に、
平文データを入力し、
入力した平文データを分割する処理、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを1回のテーブル参照により行う初期変換処理部を有することを特徴とする請求項28に記載の復号処理装置。
【請求項37】
復号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール部を有することを特徴とする復号処理装置。
【請求項38】
前記復号処理装置は、更に、
前記鍵スケジュール部から変換拡大鍵を入力し、入力データを入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理とをテーブル参照により行う鍵加算処理部を有することを特徴とする請求項37に記載の復号処理装置。
【請求項39】
前記鍵加算処理部は、
変換拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の変換拡大鍵と入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項38に記載の復号処理装置。
【請求項40】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、分割拡大鍵に対する全単射逆変換処理と、全単射逆変換処理後の分割拡大鍵と分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項38又は39に記載の復号処理装置。
【請求項41】
前記復号処理装置は、更に、
全単射変換処理を行う非線形変換処理部と、
前記鍵スケジュール部から変換拡大鍵を入力し、前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う第1の全単射逆変換処理と、入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理とをテーブル参照により行うことを特徴とする請求項37に記載の復号処理装置。
【請求項42】
前記鍵加算処理部は、
第1の全単射逆変換処理と、第2の全単射逆変換処理と、第1の全単射逆変換処理後の変換拡大鍵と第2の全単射逆変換処理後の入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項41に記載の復号処理装置。
【請求項43】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して2以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して2以上の分割入力データとし、
分割拡大鍵に対する第1の全単射逆変換処理と、分割入力データに対する第2の全単射逆変換処理と、第1の全単射逆変換処理後の分割拡大鍵と第2の全単射逆変換処理後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを1回のテーブル参照により行うことを特徴とする請求項41又は42に記載の復号処理装置。
【請求項44】
外部において復号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理手順をコンピュータに実行させることを特徴とするプログラム。
【請求項45】
復号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール手順をコンピュータに実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2009−169287(P2009−169287A)
【公開日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願番号】特願2008−9636(P2008−9636)
【出願日】平成20年1月18日(2008.1.18)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願日】平成20年1月18日(2008.1.18)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]