JP3917357B2 - Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device - Google Patents

Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device Download PDF

Info

Publication number
JP3917357B2
JP3917357B2 JP2000309676A JP2000309676A JP3917357B2 JP 3917357 B2 JP3917357 B2 JP 3917357B2 JP 2000309676 A JP2000309676 A JP 2000309676A JP 2000309676 A JP2000309676 A JP 2000309676A JP 3917357 B2 JP3917357 B2 JP 3917357B2
Authority
JP
Japan
Prior art keywords
data
bit
conversion
bits
linear
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000309676A
Other languages
Japanese (ja)
Other versions
JP2002116691A (en
Inventor
充 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2000309676A priority Critical patent/JP3917357B2/en
Publication of JP2002116691A publication Critical patent/JP2002116691A/en
Application granted granted Critical
Publication of JP3917357B2 publication Critical patent/JP3917357B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
この発明は、例えば、暗号及び復号に用いられる非線形変換方法及び非線形変換装置に関するものである。特に、非線形変換を高速に行うソフトウェア(プログラム)に関するものである。
【0002】
【従来の技術】
以下、図において、数値「8」はデータのビット数を示している。また、図において、丸印の中に「+」を記入した記号は、排他的論理和回路又は排他的論理和演算を示している。また、以下の説明で、「+」は排他的論理和演算を意味するものとする。また、「‖」は連結(コンカティネーション)を意味するものとする。例えば、Aを8ビットのデータとし、Bを8ビットのデータとすると、A‖Bは、データAの後にデータBをつなげた16ビットのデータを意味する。
【0003】
従来例1.
図29は、従来の非線形変換装置を示す図である。
図29に示す非線形変換装置は、左入力データに第1の非線形変換をし、該第1の非線形変換された変換データと、上記右入力データとの排他的論理和を第1の右中間データとして出力し、かつ、上記右入力データを第1の左中間データとして出力する第1の副変換処理部と、上記第1の左中間データを入力し、第2の非線形変換をし、該第2の非線形変換された変換データと、上記第1の右中間データとの排他的論理和を第2の右中間データとして出力し、かつ、上記第1の右中間データを第2の左中間データとして出力する第2の副変換処理部とを備え、上記第1の副変換処理部を1段とし、上記第2の副変換処理部を次の1段として交互にn段(図においては、3段)接続して、第1から第nの副変換処理部を形成し、非線形変換を行い、第nの副変換処理部から出力される左中間データと右中間データを、データ変換されたAデータとBデータとして出力することを特徴とするデータ変換装置を示している。このデータ変換装置は、第1の副変換処理部の非線形変換処理の終了以前に、第2副変換処理部の非線形変換処理を開始するものである。
【0004】
図29においては、16ビットの入力データは、8ビットずつに分割される。分割された8ビットのデータは、交互に非線形変換テーブルT1,非線形変換テーブルT2,非線形変換テーブルT3により非線形変換を施され、最後に16ビットの出力データとなる。ここで、8ビットに分割された一方のデータをデータAとし、非線形変換テーブルT1により非線形変換されたデータをデータBとする。データAは、非線形変換テーブルT2により変換データ[T2(A)]81に変換される。変換データ[T2(A)]81は、排他的論理和回路X2により変換データ[T2(A)+B’]84になる。一方、データBは、非線形変換テーブルT3により変換データ[T3(B)]83になる。変換データ[T3(B)]83は、排他的論理和回路X3により変換データ[T3(B)+T2(A)”+B”]85になる。最後に、変換データ[T2(A)+B’]84と変換データ[T3(B)+T2(A)”+B”]85が連結され、16ビットのデータCとなる。即ち、データCは、変換データ[(T2(A)+B’)‖(T3(B)+T2(A)”+B”)]89となる。
【0005】
図30は、図29のY部分のハードウェア構成図である。
図30に示すように、8ビットのデータAと8ビットのデータBを連結(コンカティネート)して16ビットのデータCとする場合には、単に8本のラインと8本のラインを束ねて16本のラインにすればよい。このため、連結に必要な時間は、一切かからない。
【0006】
図31は、図29に示したデータAとデータBの非線形変換をプログラムを用いて行う場合のソースコードである。
図31に示すソースコードに用いられているプログラミング言語は、仮想のものである。また、予め非線形変換テーブルT1、非線形変換テーブルT2、非線形変換テーブルT3は、プログラムから参照できるような状態でメモリに存在しているものとする。
まず、S1において、データAを用いて非線形変換テーブルT2を検索し、変換データ[T2(A)]81を得る。次に、S2において、データAとデータBの排他的論理和演算を行い、変換データ[T2(A)+B’]84を得る。次に、データBを用いて非線形変換テーブルT3を検索し、変換データ[T3(B)]83を得る。次に、S4において、データBとデータAの排他的論理和演算を行い、変換データ[T3(B)+T2(A)”+B”]85を得る。次に、S5において、データAを8ビット左側にシフトする。図32のS5は、データAを8ビット左側にシフトした場合を示している。
次に、S6において、データAとデータBの排他的論理和演算を行い、変換データ[(T2(A)+B’)‖(T3(B)+T2(A)”+B”)]89を得る。図32のS6は、データAとデータBの排他的論理和演算をした結果、8ビットのデータAと8ビットのデータBから16ビットのデータCを得た場合を示している。
このように、ソフトウェア(プログラム)を用いて8ビットのデータと8ビットのデータBとを連結する場合には、S5に示したように、データAを左側に8ビットシフトしてからでなければ、連結処理を行うことができない。
以上のように、6ステップで処理が完了する。
【0007】
次に、非線形変換テーブルのテーブルサイズについて説明する。
図33に示すように、Nビットのデータを用いてテーブルを検索し、Mビットのデータを出力する場合には、2N ×Mビットのサイズが必要である。例えば、図34に示すように、2ビットのデータを用いて4ビットのデータを出力する場合には、22 ×4=16ビットのテーブルサイズが必要となる。図29及び図31に示す非線形変換テーブルT1、非線形変換テーブルT2、非線形変換テーブルT3は、8ビットのデータを入力し、8ビットのデータを出力するテーブルであるから、図35に示すように、28 ×8=256×8ビット=256バイトとなり、各テーブルが256バイトのテーブルサイズを持つ。従って、図29及び図31に示す3つのテーブルの合計サイズは、256バイト×3=768バイトである。
【0008】
一方、図29に示す装置を、図36に示すように、1つのテーブルで実現することも可能である。即ち、16ビットを入力し、非線形変換した16ビットのデータを出力するテーブルを1つだけ設けるようにすることも可能である。図36に示すテーブルによるデータ変換をソフトウェアで行う場合には、1回のテーブル検索により非線形変換が完了することになる。この場合には、図36に示すように、テーブルサイズは、216×16ビット=128キロバイトとなる。テーブルを図36のように1つにまとめた場合には、図29及び図31に示したように、3つのテーブルで行う場合に比べて、テーブルサイズが約170倍(128キロバイト÷768バイト=170.666)となる。
【0009】
従来例2.
図37は、16ビットの入力データを9ビットと7ビットに分割して非線形変換を行う場合を示している。
図38は、9ビットのデータの非線形変換を行う非線形変換テーブルT1の構成図である。非線形変換テーブルT3も非線形変換テーブルT1と同じ構成である。
また、図39は、7ビットのデータの非線形変換を行う非線形変換テーブルT2の構成図である。
コンピュータは、8ビット、16ビット、32ビット、64ビットのように、8ビット単位(1バイト単位)にデータ処理を行うようになっている。従って、図38と図39に示すように、通常は、テーブルも8ビット単位に構成する。図38の場合には、9ビットのデータを入力して、有効ビット数が9ビットのデータを出力するものである。しかし、図38に示すように、1レコードを16ビットで構成するため、上位7ビットのには0をパディングしてある。このため、テーブルサイズは、29 ×16ビット=1キロバイトとなる。
また、図39の場合は、7ビットのデータを入力して、有効ビット数が7ビットのデータを出力する。しかし、1レコードを8ビットに構成している。即ち、上位1ビットには、0がパディングしてある。このため、テーブルサイズは、27 ×8ビット=128バイトとなる。
【0010】
図40は、図37に示したデータAとデータBとの非線形変換を実行するプログラムのソースコードを示す図である。
まず、S1において、変換データ[T2(A)]81を得る。次に、S2において、7ビットのデータAと9ビットのデータBの排他的論理和演算を行い、図41のS2に示すように、9ビットのデータAを得る。次に、S21において、データAを7ビットのデータにするために、図41のS21に示すように、上位2ビットを削除(トランケート)するための7ビットのマスク処理を行う。ここで、データAの上位2ビットはトランケートされ、7ビットのデータAとなる。即ち、S2とS21により変換データ[T2(A)+B’]84が得られる。ここで、データB’は、9ビットのデータBの上位2ビットがトランケートされた7ビットのデータをいう。次に、S3において、変換データ[T3(B)]83を得る。次に、S4において、9ビットのデータBと7ビットのデータAに2ビットの0が上位に付加された9ビットのデータとを用いて、図41のS4に示すように、排他的論理和演算を行い、9ビットのデータBを得る。即ち、変換データ[T3(B)+T2(A)”+B”]85を得る。ここで、T2(A)”は、7ビットのデータT2(A)の先頭に2ビットの0を付加した9ビットのデータである。また、B”は、7ビットのデータB’の先頭に2ビットの0を付加した9ビットのデータである。即ち、B”は、9ビットのデータBの上位2ビットを0にしたものである。次に、S5において、データAを9ビット左側にシフトし、S6においてデータBと連結し、16ビットのデータCを得る。
【0011】
図31の場合には、6ステップであったが、図40に示す場合は、S21に示すマスク処理が追加されており、7ステップの処理となる。
【0012】
図42は、図37の処理に対して更に鍵データを用いた変換が追加された場合を示している。
即ち、排他的論理和回路X4において、変換データ[T2(A)+B’]84と7ビットの鍵データKI111とが排他的論理和演算されている。また、排他的論理和回路X5において、データBと9ビットの鍵データKI112とが排他的論理和演算されている。
【0013】
図43は、図42の鍵データを用いた場合のソースコードを示している。
まず、S1において、変換データ[T2(A)]81を得る。次に、S2において、変換データ[T2(A)+B]を得る。次に、S21において、データAを9ビットから7ビットのデータにするために、7ビットのマスク処理を行う。こうして、変換データ[T2(A)+B’]84が得られる。次に、S22において、鍵データKI111との排他的論理和演算が行われ、変換データ[T2(A)+B’+KI111]86を得る。次に、S23において、鍵データKI112の排他的論理和演算を行い、変換データ[B+KI112]82を得る。次に、S3において、非線形変換テーブルT3により変換データ[T3(B+KI112)]87を得る。次に、S4において、データAとの排他的論理和演算を行い、変換データ[T3(B+KI112)+T2(A)”+B”+(00‖KI111)]88を得る。そして、S5において、データAを左側に9ビットシフトし、S6において、データAとデータBの連結を行い、16ビットのデータCを得る。データCは、変換データ[(T2(A)+B’+KI111)‖(T3(B+KI112)+T2(A)”+B”+(00‖KI111))]99となる。
【0014】
鍵データを用いる場合には、図40に示したソースコードに比べてS21とS23とが追加され、9ステップにより非線形変換が行われる。
【0015】
従来例3.
図44は、従来の他の非線形変換回路を示す図である。
8ビットのデータAは、非線形変換テーブルT2により変換データ[T2(A)]81になる。変換データ[T2(A)]81は、排他的論理和回路X2により変換データ[T2(A)+B’]84となる。変換データ[T2(A)+B’]84は、非線形変換テーブルT3により変換データ[T3(T2(A)+B)]97になる。変換データ[T3(T2(A)+B)]97は、排他的論理和回路X3により変換データ[T3(T2(A)+B)+A]98となる。そして、データCは、[(T3(T2(A)+B)+A)‖(T2(A)+B)]199となる。
【0016】
【発明が解決しようとする課題】
コンピュータに用いられる中央処理装置は、キャッシュメモリ及びメインメモリを用いてデータ処理を行う。キャッシュメモリは、メインメモリに比べて高速なアクセスを行うことができる。従って、前述した非線形変換テーブルは、できるだけキャッシュメモリに常駐できるようにすることが望ましい。キャッシュメモリのサイズが16キロバイト、或いは、32キロバイトのように限られている場合には、テーブルサイズが限られてしまう。図36に示したように、1つのテーブルにより非線形変換を行う場合には、128キロバイトのキャッシュメモリサイズが必要になる。1つのテーブルを用いて変換をする場合には、テーブル検索が1回で済み、ハードウェア処理及びソフトウェア処理のいずれの場合においても高速処理が可能になる。しかし、キャッシュメモリのサイズが128キロバイト未満の中央処理装置を用いる場合には、図36に示したような128キロバイトという大容量のテーブルをキャッシュメモリに常駐させることはできず、処理が遅くなってしまう。
【0017】
また、図30に示したように、NビットとLビットのデータをハードウェアで連結してMビットのデータ作成する場合には、特別なオペレーションは必要ないが、図31に示したように、ソフトウェアでNビットとLビットのデータを連結する場合には、シフト処理が必要になり、ソフトウェアの処理の高速化が図りにくいという課題がある。
【0018】
この発明は、非線形変換処理を高速に行えるようにすることを目的とする。また、テーブルサイズを大容量にすることなく、非線形変換テーブルをキャッシュメモリに記憶させることによりテーブルへの高速アクセスを実現することを目的とする。また、非線形変換処理をプログラムで行う場合に、プログラムの処理速度を高速化することを目的とする。
【0019】
【課題を解決するための手段】
この発明に係る非線形変換方法は、NビットのデータAとLビットのデータBとをそれぞれ非線形変換して、M(M≠N,M≠L)ビットのデータCを出力する非線形変換方法において、
NビットのデータAを非線形変換して、Mビットの変換データAとする第1の非線形変換工程と、
LビットのデータBを非線形変換して、Mビットの変換データBとする第2の非線形変換工程と、
上記Mビットの変換データAと上記Mビットの変換データBとを演算してMビットの変換データCを出力する演算工程と
を備えたことを特徴とする。
【0020】
上記非線形変換方法は、Mビットの変換データを入力し、Mビットの変換データをNビットのデータとLビットのデータとに分割して(M=L+N)、分割したNビットのデータとLビットのデータとを複数段にわたり非線形変換して、非線形変換したNビットのデータとLビットのデータとを連結して非線形変換したMビットとデータを出力する非線形変換方法であることを特徴とする。
【0021】
上記第1の非線形変換工程と第2の非線形変換工程と演算工程とは、NビットのデータとLビットのデータとをそれぞれ非線形変換する最後の段の代わりに実行することを特徴とする。
【0022】
上記非線形変換方法は、
第1の非線形変換工程において、非線形変換テーブルを用いてNビットのデータからMビットの変換データを生成し、
第2の非線形変換工程において、非線形変換テーブルを用いてLビットのデータからMビットの変換データを生成し、
演算工程により上記2つのMビットの変換データのMビット演算をしてMビットのデータを出力することにより、
NビットのデータとLビットのデータとを連結するオペレーションを実行しないことを特徴とする。
【0023】
この発明に係る非線形変換方法は、Nビット=Lビットであり、かつ、Mビット=Nビット+Lビットであり、
上記第1の非線形変換工程は、NビットのデータAをNビットのデータに非線形変換したNビットの変換データを2つ連結したMビットの変換データAを出力し、
上記第2の非線形変換工程は、
LビットのデータBと、
LビットのデータBをLビットのデータに非線形変換したLビットの変換データとLビットのデータBとを論理演算したLビットの変換データと
を連結したMビットの変換データBを出力することを特徴とする。
【0024】
上記第1の非線形変換工程は、
NビットのデータAから第1の非線形変換テーブルTaを用いてMビットの変換データA[A=Ta(A)‖Ta(A)](「‖」は連結を示す)を出力し、
上記第2の非線形変換工程は、
LビットのデータBから第2の非線形変換テーブルTbを用いてMビットの変換データB[B=B‖(Tb(B)+B)](「+」は排他的論理和演算を示す)を出力し、
上記演算工程は、
上記Mビットの変換データA[A=Ta(A)‖Ta(A)]と上記Mビットの変換データB[B=B‖(Tb(B)+B)]との排他的論理和演算を行い、Mビットの変換データC[C=(Ta(A)+B)‖(Tb(B)+Ta(A)+B)]を出力することを特徴とする。
【0025】
上記第1の非線形変換テーブルTaと上記第2の非線形変換テーブルTbとの少なくともいずれか一方は、鍵データに基づく非線形変換を実行する非線形変換テーブルであることを特徴とする。
【0026】
この発明に係る非線形変換方法は、Nビット<Lビットであり、かつ、Mビット=Nビット+Lビットであり、
第1の非線形変換工程は、
NビットのデータAをNビットのデータに非線形変換したNビットの変換データと、
(L−N)ビットのパディングデータと、
NビットのデータAをNビットのデータに非線形変換したNビットの変換データと
を連結したMビットの変換データAを出力し、
第2の非線形変換工程は、
LビットのデータBの上位(L−N)ビットがトランケートされたNビットのデータB’と、
LビットのデータBをLビットのデータに非線形変換したLビットの変換データとLビットのデータBとを論理演算したLビットの変換データと
を連結したMビットの変換データを出力することを特徴とする。
【0027】
上記第1の非線形変換工程は、
NビットのデータAから第1の非線形変換テーブルTaを用いてMビットの変換データA[A=Ta(A)‖(L−N)ビット分の0‖Ta(A)](「‖」は連結を示す)を出力し、
上記第2の非線形変換工程は、
LビットのデータBから第2の非線形変換テーブルTbを用いてMビットの変換データB[B=B’‖(Tb(B)+B”)](B’はLビットのデータBの下位Nビットのデータを意味する。「+」は、排他的論理和演算を示す。B”はLビットのデータBの上位(L−N)ビット分を0にしたLビットのデータを示す。)を出力し、
上記演算工程は、
上記Mビットの変換データA[A=Ta(A)‖(L−N)ビット分の0‖Ta(A)]と上記Mビットの変換データB[B=B’‖(Tb(B)+B”)]との排他的論理和演算を行い、Mビットの変換データC[C=(Ta(A)+B’)‖(Tb(B)+Ta(A)”+B”)](ここで、Ta(A)”は[(L−N)ビット分の0‖Ta(A)]を示す。)を出力することを特徴とする。
【0028】
上記第1の非線形変換テーブルTaと上記第2の非線形変換テーブルTbとの少なくともいずれか一方は、鍵データに基づく非線形変換を実行する非線形変換テーブルであることを特徴とする。
【0029】
また、この発明は、上記非線形変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0030】
また、この発明に係る非線形変換装置は、NビットのデータAを入力してNビットのデータAをMビットのデータに非線形変換して、非線形変換したMビットのデータをMビットの変換データAとして出力する第1の非線形変換回路と、
LビットのデータBを入力してLビットのデータBをMビットのデータに非線形変換して、非線形変換したMビットのデータをMビットの変換データBとして出力する第2の非線形変換回路と、
上記第1の非線形変換回路から出力されたMビットの変換データAと、上記第2の非線形変換回路から出力されたMビットの変換データBとを論理演算してMビットの変換データCを出力する演算器と
を備えたことを特徴とする。
【0031】
【発明の実施の形態】
実施の形態1.
図1は、この実施の形態の非線形変換方法が用いられる環境を示す図である。この実施の形態の非線形変換は、図1に示した各種の電子機器との間で通信されるデータの暗号化又は復号化に用いることができる。例えば、携帯電話と基地局(BS)との間の通信、サーバとパーソナルコンピュータ(PC)との間の通信等に用いられる暗号化、復号化に用いることができる。
【0032】
図2は、図1に示した各種電子機器の一般的なシステム構成図である。
各種電子機器の内部には、中央処理装置(CPU)、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、キーボード(K/B)、通信制御装置(COM)、ディスク装置等が設けられている。これらは、バスにより接続されている。また、CPUは、キャッシュメモリを有しており、キャッシュメモリにあるデータを高速アクセスすることが可能である。また、暗号ユニット100がバスに接続され、CPUから供給されるデータの非線形変換を行い、データの暗号化又は復号化を行い、バスを介してデータをCPUに転送する。暗号ユニット100は、バスに接続されたハードウェアとして実現することもできるが、暗号プログラム101によりソフトウェアとして実現することも可能である。暗号プログラム101は、ディスク等の記録媒体に記憶されており、CPUにより読み出され実行されることにより、暗号ユニット100と同一の機能を提供することができる。
【0033】
図3は、暗号ユニット100の構成図である。
暗号ユニット100は、非線形変換回路FOを8段縦続接続したものである。
【0034】
図4は、非線形変換回路FO1の構成図である。
非線形変換回路FO2〜非線形変換回路FO8も、非線形変換回路FO1と同じ構成である。非線形変換回路FO1は、非線形変換回路FI1から非線形変換回路FI3までを3つ縦続接続したものである。
【0035】
図3と図4は、ともに左入力データに第1の非線形変換をし、該第1の非線形変換された変換データと、上記右入力データとの排他的論理和を第1の右中間データとして出力し、かつ、上記右入力データを第1の左中間データとして出力する第1の副変換処理部と、上記第1の左中間データを入力し、第2の非線形変換をし、該第2の非線形変換された変換データと、上記第1の右中間データとの排他的論理和を第2の右中間データとして出力し、かつ、上記第1の右中間データを第2の左中間データとして出力する第2の副変換処理部とを備え、上記第1の副変換処理部を1段とし、上記第2の副変換処理部を次の1段として交互にn段(図においては、3段)接続して、第1から第nの副変換処理部を形成し、非線形変換を行い、第nの副変換処理部から出力される左中間データと右中間データを、データ変換されたAデータとBデータとして出力することを特徴とするデータ変換装置を示している。このデータ変換装置は、第1の副変換処理部の非線形変換処理の終了以前に、第2副変換処理部の非線形変換処理を開始するものである。
【0036】
図5は、非線形変換回路FI1の構成図である。図5は、図29と同じ処理結果を得るものである。
非線形変換回路FI2と非線形変換回路FI3も、非線形変換回路FI1と同じ構成である。
図5において、数値「8」,「16」は、ビット数を示している。
16ビット(M=16)のデータは、8ビット(Lビット)のデータと8ビット(Nビット)のデータに分割される(M=L+N,L=N)。非線形変換テーブルT1は、8ビットのデータを入力して非線形変換を施し、8ビットのデータを出力する。この8ビットのデータに対して排他的論理和回路X1において、8ビット(Nビット)のデータAで排他的論理和演算を行うことにより、8ビット(Lビット)のデータBが生成される。ここでは、データAもデータBも8ビットのデータである。非線形変換テーブルT4は、8ビットのデータAを入力して非線形変換を行い、16ビットのデータを出力する。非線形変換テーブルT5は、8ビットのデータBを入力して非線形変換を行い、16ビットのデータを出力する。排他的論理和回路X9は、非線形変換テーブルT4から出力された16ビットのデータと非線形変換テーブルT5から出力された16ビットのデータとの排他的論理和演算を行い、16ビット(Mビット)のデータCを出力する。
【0037】
図6は、非線形変換テーブルT4の構成図である。
非線形変換テーブルT4は、2つの非線形変換テーブルT2を連結したものである。非線形変換テーブルT2は、データAを入力してデータAに対して非線形変換を行い、変換データ[T2(A)]66を出力するものである。従って、非線形変換テーブルT4は、データAを入力して変換データ[T2(A)‖T2(A)]61を出力する。ここで、「‖」は、連結を示す。以下、同じ。
非線形変換テーブルT4のサイズは、28 ×16ビット=512バイトとなる。
【0038】
図7は、非線形変換テーブルT5の構成図である。
非線形変換テーブルT5は、テーブルT6と非線形変換テーブルT7を連結したものである。テーブルT6は、図8に示すように、0〜255までのデータBが記憶されたテーブルである。非線形変換テーブルT7は、図9に示すように、非線形変換テーブルT3とテーブルT6を用いて生成することができる。テーブルT6は、図8に示したものと同じテーブルである。非線形変換テーブルT3は、データBを入力し、データBを非線形変換し、変換データ[T3(B)]64を出力するテーブルである。この非線形変換テーブルT3とテーブルT6のテーブルを排他的論理和演算を行った結果生成されるのが、非線形変換テーブルT7である。この結果、非線形変換テーブルT7には、変換データ[T3(B)+B]65が記憶されていることになる。ここで、「+」は、排他的論理和演算を意味する。以下、同じ。図7に示したように、非線形変換テーブルT5は、データBを入力し、変換データ[B‖(T3(B)+B)]63を出力するものである。
非線形変換テーブルT5のテーブルサイズは、28 ×16ビット=512バイトとなる。
【0039】
図10は、図5に示した8ビット(N=8)のデータAと8ビット(L=8,L=N)のデータBの非線形変換を行う仮想のプログラミング言語によるプログラムソースコードである。Fで示された枠内の3ステップ(S1〜S3の左側)がプログラムソースコードである。S1〜S3の右側は、各ステップの意味を示す記述であり、プログラムソースコードではない(以下、同じ)。
S1において、非線形変換テーブルT4によりデータAを非線形変換し、変換データ[T2(A)‖T2(A)]61を得る。S2において、データBを非線形変換テーブルT5において非線形変換し、変換データ[B‖(T3(B)+B)]63を得る。S3において、データAとデータBの排他的論理和演算を行い、16ビット(M=16,M=L+N)のデータCを得る。データCは、変換データ[(T2(A)+B)‖(T3(B)+T2(A)+B)]69となる。
図31に示した場合は、6ステップ必要であったが、図10に示す場合は、3ステップとなる。図10においては、非線形変換テーブルが16ビットの変換データを出力するので、図31のS5に示すシフト処理が不要になる。また、図31のS2とS4に示した8ビットの排他的論理和演算も不要になる。
【0040】
図11は、図10に示した3ステップをFとした場合、このFを入れ子構造にしたプログラムを示す図である。
Fの前後にプリプロセス3とホストプロセス3を実行することにより、非線形変換回路FIと同一の処理を実行することができる。この非線形変換回路FIと同一の処理を変数L2を用いて3回実行することにより、図4に示した非線形変換回路FI1、非線形変換回路FI2、非線形変換回路FI3と同一の処理を実行することができる。そして、プリプロセス2とホストプロセス2を実行することにより、非線形変換回路FOと同一の処理を実行することができる。そして、変数L1により非線形変換回路FOと同一の処理を8回実行することにより、非線形変換回路FO1から非線形変換回路FO8までの処理と同一の処理を実行することができる。このように、図10に示したFは、3重のループ処理の中で24回実行されるものである。従って、図10に示したプログラムのステップ数を1ステップ減少させるということは、24ステップ減少させることに等しくなる。即ち、プログラムの高速化が図れる。
【0041】
図12は、図29と図31で用いたテーブルのサイズと図5と図10で用いたテーブルのサイズとの比較図である。
非線形変換テーブルT4は、非線形変換テーブルT2の2倍のサイズになり、非線形変換テーブルT5は、非線形変換テーブルT3の2倍のサイズになる。そして、3テーブルのトータルのテーブルサイズは、従来が786バイトであったのに対して、この実施の形態では1280バイトとなる。キャッシュメモリのサイズが32キロバイト程度である場合には、この程度のテーブルサイズの増加は何ら問題とならず、全てのテーブルをキャッシュメモリに常駐させることができる。
【0042】
図5に示す構成は、図29に示す構成の代わりに用いることができる。図5に示す構成は、データCの上位8ビットが[T2(A)+B]であり、データAとデータBとの分離変換が可能である。また、データCの下位8ビットが[T3(B)+T2(A)+B]であり、データAとデータBとの分離変換が可能である。即ち、データAから[T2(A)‖T2(A)]を生成すればよい。また、データBから[B‖(T3(B)+B)]を生成すればよい。
このように、データBを無視してデータAのみの分離変換をするのが非線形変換テーブルT4である。また、データAを無視してデータBのみの分離変換をするのが非線形変換テーブルT5である。
一方、図5に示す構成は、図44に示す構成の代わりに用いることはできない。なぜなら、データCの上位8ビットが[T3(T2(A)+B)+A]であり、データAとデータBの分離変換ができないからである。即ち、非線形変換テーブルT3には、[T2(A)+B]を入力させる必要があり、非線形変換テーブルT3の変換をデータAの変換とデータBの変換に分離できないからである。
【0043】
実施の形態2.
図13は、図5に示した非線形変換回路FI1の他の構成を示す図である。図13は、図37と同じ処理結果を得るものである。
暗号ユニット100及び非線形変換回路FO1から非線形変換回路FO8の構成は、図3,図4と同じである。また、非線形変換回路FI2と非線形変換回路FI3は、非線形変換回路FI1と同じ構成である。図13に示す非線形変換回路FI1は、16ビット(Mビット)のデータを9ビット(Lビット)のデータと7ビット(Nビット)のデータに分割して非線形変換を行うものである(M=L+N,L>N)。
【0044】
図14は、非線形変換テーブルT4の構成図である。
非線形変換テーブルT4は、非線形変換テーブルT2’と非線形変換テーブルT2を連結したものである。
【0045】
図15は、非線形変換テーブルT4の詳細図である。
非線形変換テーブルT4は、非線形変換テーブルT2’と非線形変換テーブルT2から生成される。非線形変換テーブルT2は、1レコードが8ビットで構成されており、上位1ビットには、0がパディングされている。非線形変換テーブルT2は、7ビットのデータを入力し、8ビットのデータを出力するテーブルである。非線形変換テーブルT4は、1レコードを16ビットにしたテーブルである。非線形変換テーブルT4は、16ビットの後ろ8ビットに、非線形変換テーブルT2の8ビットのデータをそのまま用いる。また、16ビットの上位7ビットに、非線形変換テーブルT2の下位7ビットを用いている。更に、非線形変換テーブルT4の16ビットデータの上位から8ビット目は、非線形変換テーブルT2の上位1ビット目のパディングされた0を配置している。即ち、非線形変換テーブルT2’は、非線形変換テーブルT2をサイクリックに1ビット左側にローテーションシフトさせたものである。
図14に示すように、非線形変換テーブルT4は、データAを入力し、2ビット(9−7ビット=L−Nビット)の0が挿入された変換データ[T2(A)‖00‖T2(A)]67を出力する。
非線形変換テーブルT4のテーブルサイズは、27 ×16ビット=256キロバイトである。
【0046】
図16は、非線形変換テーブルT5の構成図である。
非線形変換テーブルT5は、テーブルT6’と非線形変換テーブルT7’を連結したものである。
【0047】
図17は、テーブルT6と非線形変換テーブルT7から非線形変換テーブルT5を生成する図である。
テーブルT6は、9ビットのデータBを記録したテーブルである。テーブルT6の上位7ビットには、0がパディングしてある。非線形変換テーブルT7は、変換データ[T3(B)+B”]165を記録したテーブルである。ここで、データB”は、データBの上位2ビット(L−Nビット)を0にしたものである。非線形変換テーブルT7の上位7ビットには、0がパディングしてある。図17に示した非線形変換テーブルT7は、図9の変換テーブルT6の代わりとなるデータB”のテーブルと図9の変換テーブルT3とを用いて、図9に示した方法と同じ方法で作成することができる。異なる点は、図9が8ビットデータを用いている点に対して、図17の非線形変換テーブルT7を生成する場合には、有効ビット数が9ビットのデータ(即ち、7ビットの0が上位にパディングされている16ビットのデータ)を用いている点である。
テーブルT6の下位7ビットをテーブルT6’として非線形変換テーブルT5の上位7ビットに配置する。また、非線形変換テーブルT7の下位9ビットを非線形変換テーブルT7’として非線形変換テーブルT5の下位9ビットに配置する。このようにして、テーブルT6’と非線形変換テーブルT7’から非線形変換テーブルT5が生成される。非線形変換テーブルT5の上位7ビットは、データBの上位2ビット(9−7ビット=L−Nビット)を削除(トランケート)した下位7ビット(Nビット)のみのデータであり、このデータBの下位7ビットのデータを7ビットデータB’とする。図16に示すように、非線形変換テーブルT5は、データBを入力し、16ビットの変換データ[B’‖(T3(B)+B”)]163を出力する。
非線形変換テーブルT5のテーブルサイズは、29 ×16ビット=1キロバイトである。
【0048】
図18は、7ビット(N=7)のデータAと9ビット(L=9,L>N)のデータBの非線形変換を行うプログラムのソースコードを示す図である。
S1において、非線形変換テーブルT4を用いてデータAを非線形変換し、変換データ[T2(A)‖00‖T2(A)]67を得る。S2において、非線形変換テーブルT5を用いてデータBを非線形変換し、変換データ[B’‖(T3(B)+B”)]163を得る。S3において、データAとデータBの排他的論理和演算を行い、16ビット(M=16,M=L+N)のデータCを得る。データCは、変換データ[(T2(A)+B’)‖(T3(B)+T2(A)”+B”)]169である。ここで、T2(A)”は、2ビット(L−Nビット)の0とT2(A)とを連結した9ビットのデータ[00‖T2(A)]を示す。
【0049】
図19は、非線形変換テーブルT4から得られた変換データ[T2(A)‖00‖T2(A)]67と非線形変換テーブルT5から得られた変換データ[B’‖(T3(B)+B”)]163をS3により排他的論理和演算を行い、変換データ[(T2(A)+B’)‖(T3(B)+T2(A)”+B”)]169を得る場合を示している。
変換データ[T3(B)+B”]165と上位2ビットに0がおかれた変換データ[T2(A)]66とが排他的論理和演算され、変換データ[T3(B)+T2(A)”+B”]73となる。また、データBから上位2ビットを削除した7ビットデータB’と変換データ[T2(A)]66との排他的論理和演算が行われ、変換データ[T2(A)+B’]71が得られる。
【0050】
図18に示す場合も、3ステップで処理が完了するので、処理の高速化が図れる。図18の場合は、図10の場合に比べて、更に、非線形変換テーブルT5が9ビットデータBをマスクした7ビットデータB’を出力するので、図40のS21に示した7ビットマスク処理が不要になる。
【0051】
実施の形態3.
図20は、暗号ユニット100の他の例を示す図である。
暗号ユニット100は、鍵生成部110を有している。鍵生成部110は、非線形変換回路FOと非線形変換回路FIに必要な鍵データKOと鍵データKIを生成して出力する。
【0052】
図21は、鍵生成部110の鍵データKIの生成手順を示す図である。
鍵生成部110は、128ビットの鍵データKから16ビットの鍵データK1から鍵データK8の8つの鍵データを作り出し、鍵スケジュールに則り、16ビットの8つの鍵データK1’から鍵データK8’を生成する。
一方、鍵データKI1から鍵データKI8は、図20に示すように、非線形変換回路FO1から非線形変換回路FO8に配布される。更に、鍵データKI1は、鍵データKI11、鍵データKI12、鍵データKI13に分割され、図22に示すように、非線形変換回路FI1、非線形変換回路FI2、非線形変換回路FI3に配布される。そして、鍵データKI11は、データAと排他的論理和演算が行われる鍵データKI111とデータBと排他的論理和演算が行われる鍵データKI112に分割される。図21に示す鍵データKI11から鍵データKI83は、16ビットの鍵であり、合計24の鍵データである。それに対して、生成された鍵データは、鍵データK1’から鍵データK8’までの8つの鍵データである。この8つの鍵データは、24個の鍵データに重複して用いられる。例えば、図21において、鍵データK1’は、鍵データKI11と鍵データKI82の両方に用いられている。
このように、鍵の配布先は、鍵生成部110により定められており、かつ、その種類は8種類である。従って、鍵データが含まれているテーブルを8種類用意しておき、いずれか1つのテーブルを選択して使用することにより、鍵データが反映された非線形変換を行うことが可能になる。例えば、図21において、鍵データK1’は、鍵データKI11に用いられており、図22の非線形変換回路FI1には、鍵データKI11が配布されている。従って、非線形変換回路FI11の非線形変換処理に用いるテーブルは、鍵データK1’から鍵データK8’までの鍵データがそれぞれ反映された8種類のテーブルの中から鍵データK1’が反映されたテーブルを選択して、非線形変換を行えばよい。また、図21において、鍵データK3’は、鍵データKI12に用いられており、図22において、非線形変換回路FI2には、鍵データKI12が配布されているので、非線形変換回路FI2における非線形変換を実施する場合には、鍵データK3’が反映されたテーブルを選択して、非線形変換を行えばよい。
【0053】
図22の非線形変換回路FI1は、任意の2つのA入力データとB入力データに対し、上記A入力データを第1の鍵パラメータ111で第1の非線形変換をし、該第1の非線形変換された出力データと上記B入力データとの排他的論理和を第1のA中間データとして出力し、上記B入力データを第1のB中間データとして出力する第1の副変換処理部121と、上記第1のB中間データを第2の鍵パラメータ112で第2の非線形変換をし、該第2の非線形変換された出力データと上記第1のA中間データとの排他的論理和を第2のB中間データとして出力し、上記第1のA中間データを第2のA中間データとして出力する第2の副変換処理部122とをn段(図では、3段)備えたデータ変換装置を示している。
【0054】
図23は、鍵データK1’から鍵データK8’までの8つの鍵データの下位9ビットがそれぞれ反映された非線形変換テーブルT51から非線形変換テーブルT58の8つのテーブルが用意された非線形変換回路FI1(FI2,FI3)を示す図である。
図23は、図42に示した回路と同一の非線形変換結果を得るものである。
非線形変換テーブルT4は、実施の形態2に示したものと同一のものである。非線形変換テーブルT51は、鍵データK1’の下位9ビットを反映した非線形変換データを出力するテーブルである。同様に、非線形変換テーブルT52〜非線形変換テーブルT58は、鍵データK2’から鍵データK8’の下位9ビットをそれぞれ反映した非線形変換データを出力するテーブルである。図23において、非線形変換テーブルT4は、データAを入力し、変換データ[T2(A)‖00‖T2(A)]67を出力する。そして、図23に示す非線形変換回路FIが鍵データKI11を入力する非線形変換回路FO1の非線形変換回路FI1である場合には、非線形変換テーブルT51を選択し、非線形変換テーブルT51によりデータBを入力して変換データ[B’‖(T3(B+KI112)+B”)]76を出力する。排他的論理和回路X9により変換データ[T2(A)‖00‖T2(A)]67と変換データ[B’‖(T3(B+KI112)+B”)]76との排他的論理和演算を行い、変換データ[(T2(A)+B’)‖(T3(B+KI112)+T2(A)”+B”)]78を得る。そして、排他的論理和回路X8により変換データ[(T2(A)+B’)‖(T3(B+KI112)+T2(A)”+B”)]78と鍵データ[KI111‖00‖KI111](データD)との排他的論理和演算を行い、変換データ[(T2(A)+B’+KI111)‖(T3(B+KI112)+T2(A)”+B”+(00‖KI111))]79を得る。
【0055】
図24は、データAとデータBとの非線形変換を行うソースプログラムを示す図である。
まず、S0において、変数Jにいずれの鍵データを用いるかを示す値を代入する。即ち、鍵データK1’から鍵データK8’のいずれの鍵データがこの非線形変換回路FIにおいて用いられるかを示す値を代入する。ここでは、非線形変換回路FO1の非線形変換回路FI1が鍵データK1’を用いるものとしてJに1を代入している。次に、S1において、データAを非線形変換テーブルT4により非線形変換し、変換データ[T2(A)‖00‖T2(A)]67を得る。次に、S2において、非線形変換テーブルT51を用いてデータBの非線形変換を行い、変換データ[B’‖(T3(B+KI112)+B”)]76を得る。次に、S3において、データAとデータBの排他的論理和演算を行い、変換データ[(T2(A)+B’)‖(T3(B+KI112)+T2(A)”+B”)]78を得る。次に、S4において、データCと鍵データ[KI111‖00‖KI111](データD)の排他的論理和演算を行い、変換データ[(T2(A)+B’+KI111)‖(T3(B+KI112)+T2(A)”+B”+(00‖KI111))]79を得る。
【0056】
実施の形態4.
図25は、図23に示した非線形変換回路FIの他の構成を示す図である。図25は、図42と同じ処理結果を得るものである。
図25においては、図23の非線形変換テーブルT4と排他的論理和回路X8の代わりに、非線形変換テーブルT41から非線形変換テーブルT48を用いる場合を示している。非線形変換テーブルT41は、鍵データK1’の上位7ビットを反映した非線形変換データを出力する。同様に、非線形変換テーブルT42から非線形変換テーブルT48は、鍵データK2’から鍵データK8’の上位7ビットを反映した非線形変換データを出力する。
【0057】
図26は、図25のデータAとデータBとを非線形変換するソースプログラムを示す図である。
まず、S0において、Jに1を代入する。ここでは、図25に示す非線形変換回路FIが非線形変換回路FO1の非線形変換回路FI1に対して、鍵データK1’を用いて非線形変換する場合を示している。次に、S1において、非線形変換テーブルT41を用いてデータAを変換データ[(T2(A)+KI111)‖00‖(T2(A)+KI111)]77に変換する。次に、S2において、非線形変換テーブルT51を用いてデータBを変換データ[B’‖(T3(B+KI112)+B”)]76に変換する。次に、S3において、データAとデータBの排他的論理和演算を行い、データCを出力する。データCは、変換データ[(T2(A)+B’+KI111)‖(T3(B+KI112)+T2(A)”+B”+(00‖KI111))]79である。
【0058】
図27は、実施の形態2,3,4に用いたテーブルのテーブルサイズと図37に示したテーブルのテーブルサイズとの比較図である。
実施の形態2の合計テーブルサイズは、従来とほとんど変わらない。また、実施の形態3に示した場合は、8個のキーデータに対応した8個のテーブルを設けるため、合計テーブルサイズが約9キロバイトになっている。また、実施の形態4の場合には、8個の鍵データに対して、それぞれテーブルを2つずつ設け、16個のテーブルが必要となるため、合計17キロバイトのテーブルサイズが必要となる。いずれの場合も、32キロバイトのキャッシュメモリがあれば全てのテーブルをキャッシュメモリに常駐させることができる。
なお、実施の形態3及び実施の形態4において、鍵データの種類が8個ではなく、16個や32個とを増加した場合には、その増加数に従ってテーブルの数も増やさなければならず、キャッシュメモリサイズをオーバーしてしまう場合もある。そのような場合には、実施の形態4ではなく、実施の形態3のように、鍵データを全てテーブルに反映するのではなく、鍵データの一部分をテーブルに反映するような形にして、全てのテーブルをキャッシュメモリに常駐させるようにすればよい。
【0059】
図28は、前述した実施の形態の非線形変換を多段接続したものである。(a)に、この実施の形態の多段縦続接続した場合の一例(2段縦続接続の場合)を示している。(b)の場合は、(a)と等価な場合であって、従来の4段縦続接続による非線形変換の場合を示している。
従来の2段の縦続接続をまとめて1段の変換にすることができる。
【0060】
【発明の効果】
前述した実施の形態1から実施の形態4によれば、非線形変換処理を高速に行うことができる。特に、非線形変換処理をソフトウェア(プログラム)により行う場合には、ステップ数を減少させることができ、高速処理を行うことができる。
【0061】
また、マスク処理をしたテーブルを用いているので、プログラムでマスク処理を行う必要がない。
【0062】
また、テーブルを検索することにより、最終的に出力するビット数と同一ビット数の非線形変換データを非線形変換テーブルから出力しているので、データの連結処理を行う必要がない。
【0063】
また、全ての非線形変換テーブルをキャッシュメモリに配置することができ、高速なテーブル検索を行うことができる。
【図面の簡単な説明】
【図1】 実施の形態1の非線形変換が用いられる環境を示す図。
【図2】 実施の形態1の非線形変換が動作する構成図。
【図3】 暗号ユニット100の構成図。
【図4】 非線形変換回路FO1の構成図。
【図5】 非線形変換回路FI1の構成図。
【図6】 非線形変換テーブルT4の構成図。
【図7】 非線形変換テーブルT5の構成図。
【図8】 テーブルT6の構成図。
【図9】 非線形変換テーブルT7の構成図。
【図10】 プログラムのソースコードを示す図。
【図11】 暗号プログラム101の概略構成図。
【図12】 テーブルサイズの比較図。
【図13】 実施の形態2のFI1の構成図。
【図14】 非線形変換テーブルT4の構成図。
【図15】 非線形変換テーブルT4の詳細図。
【図16】 非線形変換テーブルT5の構成図。
【図17】 非線形変換テーブルT5の詳細図。
【図18】 プログラムのソースコードを示す図。
【図19】 データAとデータBの演算を示す図。
【図20】 実施の形態3の暗号ユニット100の構成図。
【図21】 鍵生成部110の動作図。
【図22】 非線形変換回路FO1の構成図。
【図23】 非線形変換回路FIの構成図。
【図24】 プログラムのソースコードを示す図。
【図25】 実施の形態4の非線形変換回路FIを示す図。
【図26】 プログラムのソースコードを示す図。
【図27】 テーブルサイズの比較図。
【図28】 その他の実施の形態を示す図。
【図29】 従来例1の非線形変換回路を示す図。
【図30】 図29のY部分の拡大図。
【図31】 従来のプログラムのソースコードを示す図。
【図32】 データAとデータBの連結動作を示す図。
【図33】 テーブルサイズの説明図。
【図34】 テーブルサイズの説明図。
【図35】 テーブルサイズの説明図。
【図36】 テーブルサイズの説明図。
【図37】 従来例2の非線形変換回路を示す図。
【図38】 非線形変換テーブルT1の構成図。
【図39】 非線形変換テーブルT2の構成図。
【図40】 従来のプログラムのソースコードを示す図。
【図41】 従来の動作を説明する図。
【図42】 従来の非線形変換回路を示す図。
【図43】 従来のプログラムのソースコードを示す図。
【図44】 従来の非線形変換回路を示す図。
【符号の説明】
61 変換データ[T2(A)‖T2(A)]、63 変換データ[B‖(T3(B)+B)]、64 変換データ[T3(B)]、65 変換データ[T3(B)+B]、66 変換データ[T2(A)]、67 変換データ[T2(A)‖00‖T2(A)]、69 変換データ[(T2(A)+B)‖(T3(B)+T2(A)+B)]、71 変換データ[T2(A)+B’]、73 変換データ[T3(B)+T2(A)”+B”]、76 変換データ[B’‖(T3(B+KI112)+B”)]、77 変換データ[(T2(A)+KI111)‖00‖(T2(A)+KI111)]、78 変換データ[(T2(A)+B’)‖(T3(B+KI112)+T2(A)”+B”)]、79 変換データ[(T2(A)+B’+KI111)‖(T3(B+KI112)+T2(A)”+B”+(00‖KI111))]、81 変換データ[T2(A)]、83 変換データ[T3(B)]、84 変換データ[T2(A)+B’]、85変換データ[T3(B)+T2(A)”+B”]、86 変換データ[T2(A)+B’+KI111]、87 変換データ[T3(B+KI112)]、88 変換データ[T3(B+KI112)+T2(A)”+B”+(00‖KI111)]、89 変換データ[(T2(A)+B’)‖(T3(B)+T2(A)”+B”)]、99 変換データ[(T2(A)+B’+KI111)‖(T3(B+KI112)+T2(A)”+B”+(00‖KI111))]、100 暗号ユニット、101 暗号プログラム、110 鍵生成部、163 変換データ[B’‖(T3(B)+B”)]、165 変換データ[T3(B)+B”]、169 変換データ[(T2(A)+B’)‖(T3(B)+T2(A)”+B”)]、A,B,C データ、B’ 7ビットデータ、D 鍵データ[KI111‖00‖KI111]、FI,FO 非線形変換回路、KI,KO 鍵データ、T1,T2,T3,T4,T5,T7,T8,T9 非線形変換テーブル、T6 テーブル、X 排他的論理和回路。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a nonlinear conversion method and a nonlinear conversion device used for encryption and decryption, for example. In particular, the present invention relates to software (program) that performs nonlinear conversion at high speed.
[0002]
[Prior art]
Hereinafter, in the figure, the numerical value “8” indicates the number of bits of data. In the figure, a symbol in which “+” is entered in a circle indicates an exclusive OR circuit or an exclusive OR operation. In the following description, “+” means an exclusive OR operation. Further, “‖” means concatenation. For example, if A is 8-bit data and B is 8-bit data, A‖B means 16-bit data in which data B is connected after data A.
[0003]
Conventional Example 1
FIG. 29 is a diagram illustrating a conventional nonlinear conversion device.
The nonlinear transformation device shown in FIG. 29 performs first nonlinear transformation on the left input data, and obtains an exclusive OR of the first nonlinear transformation data and the right input data as the first right intermediate data. A first sub-conversion processing unit that outputs the right input data as first left intermediate data, and inputs the first left intermediate data, performs a second non-linear conversion, 2 is output as second right intermediate data, and the first right intermediate data is output as second left intermediate data. A second sub-conversion processing unit that outputs the first sub-conversion processing unit as one stage, and the second sub-conversion processing unit as the next one stage. (3 stages) are connected to form the first to nth sub-conversion processing units and perform non-linear conversion. Shows a data conversion apparatus and outputs the left intermediate data and right intermediate data output from the sub-transformation unit of the n, as A data and B data to data conversion. This data conversion apparatus starts the non-linear conversion process of the second sub-conversion processing unit before the end of the non-linear conversion process of the first sub-conversion processing unit.
[0004]
In FIG. 29, 16-bit input data is divided into 8 bits. The divided 8-bit data is subjected to non-linear conversion alternately by the non-linear conversion table T1, the non-linear conversion table T2, and the non-linear conversion table T3, and finally becomes 16-bit output data. Here, one data divided into 8 bits is set as data A, and the data nonlinearly converted by the non-linear conversion table T1 is set as data B. Data A is converted into converted data [T2 (A)] 81 by the non-linear conversion table T2. The converted data [T2 (A)] 81 becomes converted data [T2 (A) + B ′] 84 by the exclusive OR circuit X2. On the other hand, the data B becomes converted data [T3 (B)] 83 by the nonlinear conversion table T3. The converted data [T3 (B)] 83 becomes converted data [T3 (B) + T2 (A) "+ B"] 85 by the exclusive OR circuit X3. Finally, the conversion data [T2 (A) + B ′] 84 and the conversion data [T3 (B) + T2 (A) ″ + B ″] 85 are connected to form 16-bit data C. That is, the data C is converted data [(T2 (A) + B ′) ‖ (T3 (B) + T2 (A) ″ + B ″)] 89.
[0005]
FIG. 30 is a hardware configuration diagram of a Y portion in FIG.
As shown in FIG. 30, when 8 bits of data A and 8 bits of data B are concatenated to form 16 bits of data C, only 8 lines and 8 lines are bundled. 16 lines can be used. For this reason, the time required for connection is not taken at all.
[0006]
FIG. 31 is a source code in the case of performing non-linear conversion of data A and data B shown in FIG. 29 using a program.
The programming language used for the source code shown in FIG. 31 is virtual. Further, it is assumed that the nonlinear conversion table T1, the nonlinear conversion table T2, and the nonlinear conversion table T3 exist in the memory in a state that can be referred to from a program in advance.
First, in S1, the nonlinear conversion table T2 is searched using the data A, and converted data [T2 (A)] 81 is obtained. Next, in S2, exclusive OR operation of data A and data B is performed to obtain converted data [T2 (A) + B ′] 84. Next, the nonlinear conversion table T3 is searched using the data B, and converted data [T3 (B)] 83 is obtained. Next, in S4, an exclusive OR operation of data B and data A is performed to obtain converted data [T3 (B) + T2 (A) "+ B"] 85. Next, in S5, the data A is shifted to the left by 8 bits. S5 in FIG. 32 shows a case where data A is shifted to the left by 8 bits.
Next, in S6, exclusive OR operation of data A and data B is performed to obtain converted data [(T2 (A) + B ′) ‖ (T3 (B) + T2 (A) ″ + B ″)] 89. S6 in FIG. 32 shows a case where 16-bit data C is obtained from 8-bit data A and 8-bit data B as a result of the exclusive OR operation of data A and data B.
Thus, when 8-bit data and 8-bit data B are concatenated using software (program), data A must be shifted 8 bits to the left as shown in S5. , Can not be connected.
As described above, the process is completed in six steps.
[0007]
Next, the table size of the nonlinear conversion table will be described.
As shown in FIG. 33, when searching a table using N-bit data and outputting M-bit data, 2 N A size of × M bits is required. For example, as shown in FIG. 34, when 2-bit data is used to output 4-bit data, 2 2 X4 = A table size of 16 bits is required. The non-linear conversion table T1, the non-linear conversion table T2, and the non-linear conversion table T3 shown in FIGS. 29 and 31 are tables that input 8-bit data and output 8-bit data, as shown in FIG. 2 8 × 8 = 256 × 8 bits = 256 bytes, and each table has a table size of 256 bytes. Therefore, the total size of the three tables shown in FIGS. 29 and 31 is 256 bytes × 3 = 768 bytes.
[0008]
On the other hand, the apparatus shown in FIG. 29 can be realized by a single table as shown in FIG. That is, it is possible to provide only one table for inputting 16 bits and outputting 16-bit data subjected to nonlinear conversion. When data conversion using the table shown in FIG. 36 is performed by software, nonlinear conversion is completed by one table search. In this case, the table size is 2 as shown in FIG. 16 X 16 bits = 128 kilobytes. When the tables are combined into one as shown in FIG. 36, the table size is about 170 times (128 kilobytes ÷ 768 bytes = compared with the case of using three tables as shown in FIGS. 29 and 31). 170.666).
[0009]
Conventional Example 2
FIG. 37 shows a case where 16-bit input data is divided into 9 bits and 7 bits to perform nonlinear conversion.
FIG. 38 is a configuration diagram of a nonlinear conversion table T1 for performing nonlinear conversion of 9-bit data. The nonlinear conversion table T3 has the same configuration as the nonlinear conversion table T1.
FIG. 39 is a configuration diagram of a nonlinear conversion table T2 for performing nonlinear conversion of 7-bit data.
The computer performs data processing in units of 8 bits (1 byte unit) such as 8 bits, 16 bits, 32 bits, and 64 bits. Therefore, as shown in FIGS. 38 and 39, the table is usually configured in units of 8 bits. In the case of FIG. 38, 9-bit data is input, and data having an effective bit number of 9 bits is output. However, as shown in FIG. 38, since one record is composed of 16 bits, the upper 7 bits are padded with 0. For this reason, the table size is 2 9 X 16 bits = 1 kilobyte.
In the case of FIG. 39, 7-bit data is input, and data having a valid bit number of 7 bits is output. However, one record is composed of 8 bits. That is, 0 is padded in the upper 1 bit. For this reason, the table size is 2 7 X 8 bits = 128 bytes.
[0010]
FIG. 40 is a diagram showing source code of a program that performs nonlinear conversion between data A and data B shown in FIG.
First, in S1, conversion data [T2 (A)] 81 is obtained. Next, in S2, the exclusive OR operation of the 7-bit data A and the 9-bit data B is performed to obtain 9-bit data A as shown in S2 of FIG. Next, in S21, in order to make data A into 7-bit data, as shown in S21 of FIG. 41, 7-bit mask processing for deleting (truncating) the upper 2 bits is performed. Here, the upper 2 bits of data A are truncated to become 7-bit data A. That is, converted data [T2 (A) + B ′] 84 is obtained by S2 and S21. Here, data B ′ refers to 7-bit data obtained by truncating the upper 2 bits of 9-bit data B. Next, in S3, conversion data [T3 (B)] 83 is obtained. Next, in S4, as shown in S4 of FIG. 41, exclusive OR is performed using 9-bit data B and 9-bit data in which 2-bit 0 is added to 7-bit data A. An operation is performed to obtain 9-bit data B. That is, conversion data [T3 (B) + T2 (A) "+ B"] 85 is obtained. Here, T2 (A) ″ is 9-bit data obtained by adding 2 bits of 0 to the head of 7-bit data T2 (A). B ″ is the head of 7-bit data B ′. 9-bit data with 2-bit 0 added. That is, B ″ is the upper 2 bits of 9-bit data B set to 0. Next, in S5, data A is shifted to the left by 9 bits, concatenated with data B in S6, and 16-bit Data C is obtained.
[0011]
In the case of FIG. 31, there are 6 steps, but in the case shown in FIG. 40, the mask processing shown in S <b> 21 is added, resulting in 7 steps.
[0012]
FIG. 42 shows a case where conversion using key data is further added to the processing of FIG.
That is, in the exclusive OR circuit X4, the converted data [T2 (A) + B ′] 84 and the 7-bit key data KI111 are subjected to an exclusive OR operation. Further, in the exclusive OR circuit X5, the data B and the 9-bit key data KI112 are subjected to an exclusive OR operation.
[0013]
FIG. 43 shows a source code when the key data of FIG. 42 is used.
First, in S1, conversion data [T2 (A)] 81 is obtained. Next, in S2, conversion data [T2 (A) + B] is obtained. Next, in S21, a 7-bit mask process is performed to change the data A from 9 bits to 7 bits. In this way, conversion data [T2 (A) + B ′] 84 is obtained. Next, in S22, an exclusive OR operation with the key data KI111 is performed to obtain converted data [T2 (A) + B ′ + KI111] 86. Next, in S23, an exclusive OR operation is performed on the key data KI112 to obtain converted data [B + KI112] 82. Next, in S3, conversion data [T3 (B + KI112)] 87 is obtained from the nonlinear conversion table T3. Next, in S4, an exclusive OR operation with the data A is performed to obtain conversion data [T3 (B + KI112) + T2 (A) "+ B" + (00‖KI111)] 88. In S5, the data A is shifted to the left by 9 bits, and in S6, the data A and the data B are concatenated to obtain 16-bit data C. The data C is converted data [(T2 (A) + B ′ + KI111) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″ + (00‖KI111))] 99.
[0014]
When key data is used, S21 and S23 are added compared to the source code shown in FIG. 40, and nonlinear transformation is performed in 9 steps.
[0015]
Conventional Example 3
FIG. 44 is a diagram showing another conventional nonlinear conversion circuit.
The 8-bit data A becomes converted data [T2 (A)] 81 by the nonlinear conversion table T2. The converted data [T2 (A)] 81 becomes converted data [T2 (A) + B ′] 84 by the exclusive OR circuit X2. The converted data [T2 (A) + B ′] 84 becomes converted data [T3 (T2 (A) + B)] 97 by the nonlinear conversion table T3. The converted data [T3 (T2 (A) + B)] 97 becomes converted data [T3 (T2 (A) + B) + A] 98 by the exclusive OR circuit X3. The data C becomes [(T3 (T2 (A) + B) + A) A (T2 (A) + B)] 199.
[0016]
[Problems to be solved by the invention]
A central processing unit used in a computer performs data processing using a cache memory and a main memory. The cache memory can be accessed faster than the main memory. Therefore, it is desirable that the nonlinear conversion table described above can be resident in the cache memory as much as possible. When the cache memory size is limited to 16 kilobytes or 32 kilobytes, the table size is limited. As shown in FIG. 36, when nonlinear conversion is performed using one table, a cache memory size of 128 kilobytes is required. When conversion is performed using one table, the table search is performed once, and high-speed processing is possible in both hardware processing and software processing. However, when a central processing unit having a cache memory size of less than 128 kilobytes is used, a large-capacity table of 128 kilobytes as shown in FIG. 36 cannot be made resident in the cache memory, which slows down the processing. End up.
[0017]
In addition, as shown in FIG. 30, when N-bit and L-bit data are concatenated by hardware to create M-bit data, no special operation is required, but as shown in FIG. When N-bit and L-bit data are linked by software, a shift process is required, and it is difficult to increase the speed of the software process.
[0018]
An object of the present invention is to enable nonlinear conversion processing to be performed at high speed. It is another object of the present invention to realize high-speed access to a table by storing a nonlinear conversion table in a cache memory without increasing the table size. Another object of the present invention is to increase the processing speed of a program when nonlinear conversion processing is performed by a program.
[0019]
[Means for Solving the Problems]
The nonlinear conversion method according to the present invention is a nonlinear conversion method in which N-bit data A and L-bit data B are nonlinearly converted to output M (M ≠ N, M ≠ L) -bit data C.
A first non-linear conversion step for converting N-bit data A into M-bit conversion data A by non-linear conversion;
A second non-linear conversion step of converting L-bit data B into M-bit conversion data B by non-linear conversion;
A calculation step of calculating the M-bit conversion data A and the M-bit conversion data B and outputting the M-bit conversion data C;
It is provided with.
[0020]
In the nonlinear conversion method, M-bit conversion data is input, the M-bit conversion data is divided into N-bit data and L-bit data (M = L + N), and the divided N-bit data and L bits are divided. The non-linear conversion method is characterized in that non-linear conversion is performed over a plurality of stages and N-bit data and L-bit data subjected to non-linear conversion are connected to output M bit and data subjected to non-linear conversion.
[0021]
The first non-linear conversion step, the second non-linear conversion step, and the calculation step are performed in place of the last stage for performing non-linear conversion on N-bit data and L-bit data, respectively.
[0022]
The above nonlinear conversion method is
In the first non-linear conversion step, M-bit conversion data is generated from N-bit data using a non-linear conversion table,
In the second non-linear conversion step, M-bit conversion data is generated from the L-bit data using the non-linear conversion table,
By performing an M-bit operation on the above two M-bit conversion data through an operation step and outputting M-bit data,
An operation for linking N-bit data and L-bit data is not executed.
[0023]
In the nonlinear conversion method according to the present invention, N bits = L bits, M bits = N bits + L bits,
The first non-linear conversion step outputs M-bit conversion data A obtained by connecting two N-bit conversion data obtained by non-linear conversion of N-bit data A into N-bit data,
The second non-linear conversion step includes
L-bit data B;
L-bit conversion data obtained by performing a logical operation on L-bit conversion data obtained by nonlinearly converting L-bit data B into L-bit data and L-bit data B;
M-bit conversion data B obtained by concatenating the two is output.
[0024]
The first nonlinear conversion step includes
M-bit conversion data A [A = Ta (A) ‖Ta (A)] (“‖” indicates concatenation) is output from the N-bit data A using the first nonlinear conversion table Ta.
The second non-linear conversion step includes
M-bit conversion data B [B = B‖ (Tb (B) + B)] (“+” indicates exclusive OR operation) is output from the L-bit data B using the second nonlinear conversion table Tb. And
The calculation process is as follows:
An exclusive OR operation is performed on the M-bit conversion data A [A = Ta (A) ‖Ta (A)] and the M-bit conversion data B [B = B‖ (Tb (B) + B)]. , M-bit conversion data C [C = (Ta (A) + B) T (Tb (B) + Ta (A) + B)] is output.
[0025]
At least one of the first non-linear conversion table Ta and the second non-linear conversion table Tb is a non-linear conversion table for executing non-linear conversion based on key data.
[0026]
In the nonlinear conversion method according to the present invention, N bits <L bits and M bits = N bits + L bits,
The first nonlinear conversion step is
N-bit conversion data obtained by nonlinearly converting N-bit data A into N-bit data;
(LN) bits of padding data;
N-bit converted data obtained by nonlinearly converting N-bit data A into N-bit data;
M-bit conversion data A concatenated with
The second nonlinear conversion step is
N-bit data B ′ in which the upper (L−N) bits of the L-bit data B are truncated;
L-bit conversion data obtained by performing a logical operation on L-bit conversion data obtained by nonlinearly converting L-bit data B into L-bit data and L-bit data B;
M-bit conversion data obtained by concatenating the data is output.
[0027]
The first nonlinear conversion step includes
Using the first non-linear conversion table Ta from the N-bit data A, M-bit conversion data A [A = Ta (A) ‖ (L−N) bits of 0‖Ta (A)] (“‖” is Output)
The second non-linear conversion step includes
M-bit conversion data B [B = B′‖ (Tb (B) + B ″)] (B ′ is the lower N bits of L-bit data B using the second nonlinear conversion table Tb from L-bit data B “+” Indicates an exclusive OR operation, and B ″ indicates L-bit data in which the upper (L−N) bits of L-bit data B are 0. And
The calculation process is as follows:
The M-bit conversion data A [A = Ta (A) ‖ (L−N) bits of 0‖Ta (A)] and the M-bit conversion data B [B = B′‖ (Tb (B) + B ")], And M-bit conversion data C [C = (Ta (A) + B ') ‖ (Tb (B) + Ta (A)" + B ")] (where Ta (A) ″ indicates [(L−N) bits of 0‖Ta (A)]).
[0028]
At least one of the first non-linear conversion table Ta and the second non-linear conversion table Tb is a non-linear conversion table for executing non-linear conversion based on key data.
[0029]
The present invention also provides a computer-readable recording medium on which a program for causing a computer to execute the nonlinear conversion method is recorded.
[0030]
The nonlinear conversion device according to the present invention inputs N-bit data A, nonlinearly converts N-bit data A into M-bit data, and converts the M-bit data nonlinearly converted into M-bit conversion data A. A first nonlinear conversion circuit that outputs as
A second non-linear conversion circuit that inputs L-bit data B, performs non-linear conversion of L-bit data B into M-bit data, and outputs non-linearly converted M-bit data as M-bit conversion data B;
M-bit conversion data A output from the first non-linear conversion circuit and M-bit conversion data B output from the second non-linear conversion circuit are logically operated to output M-bit conversion data C With a calculator
It is provided with.
[0031]
DETAILED DESCRIPTION OF THE INVENTION
Embodiment 1 FIG.
FIG. 1 is a diagram showing an environment in which the nonlinear conversion method of this embodiment is used. The non-linear transformation of this embodiment can be used for encryption or decryption of data communicated with various electronic devices shown in FIG. For example, it can be used for encryption and decryption used for communication between a mobile phone and a base station (BS), communication between a server and a personal computer (PC), and the like.
[0032]
FIG. 2 is a general system configuration diagram of the various electronic devices shown in FIG.
Various electronic devices are provided with a central processing unit (CPU), a read-only memory (ROM), a random access memory (RAM), a keyboard (K / B), a communication control unit (COM), a disk unit, and the like. Yes. These are connected by a bus. The CPU has a cache memory, and can access data in the cache memory at high speed. The encryption unit 100 is connected to the bus, performs non-linear conversion of data supplied from the CPU, encrypts or decrypts the data, and transfers the data to the CPU via the bus. The encryption unit 100 can be realized as hardware connected to the bus, but can also be realized as software by the encryption program 101. The encryption program 101 is stored in a recording medium such as a disk, and can be provided with the same function as the encryption unit 100 by being read and executed by the CPU.
[0033]
FIG. 3 is a configuration diagram of the cryptographic unit 100.
The cryptographic unit 100 is a cascade connection of eight stages of nonlinear conversion circuits FO.
[0034]
FIG. 4 is a configuration diagram of the nonlinear conversion circuit FO1.
The non-linear conversion circuits FO2 to FO8 have the same configuration as the non-linear conversion circuit FO1. The nonlinear conversion circuit FO1 is formed by cascading three nonlinear conversion circuits FI1 to FI3.
[0035]
3 and 4 both perform a first non-linear conversion on the left input data, and an exclusive OR of the first non-linear conversion data and the right input data is used as the first right intermediate data. A first sub-conversion processing unit that outputs and outputs the right input data as first left intermediate data; inputs the first left intermediate data; performs second nonlinear conversion; Of the non-linearly transformed data and the first right intermediate data is output as second right intermediate data, and the first right intermediate data is used as second left intermediate data. A second sub-conversion processing unit for outputting, wherein the first sub-conversion processing unit is one stage, and the second sub-conversion processing unit is the next one stage. ) To form first to nth sub-conversion processing units, perform non-linear transformation, and The left intermediate data and right intermediate data output from the conversion processing section, shows a data conversion apparatus and outputs as an A data and B data to data conversion. This data conversion apparatus starts the non-linear conversion process of the second sub-conversion processing unit before the end of the non-linear conversion process of the first sub-conversion processing unit.
[0036]
FIG. 5 is a configuration diagram of the nonlinear conversion circuit FI1. FIG. 5 obtains the same processing result as FIG.
The non-linear conversion circuit FI2 and the non-linear conversion circuit FI3 have the same configuration as the non-linear conversion circuit FI1.
In FIG. 5, numerical values “8” and “16” indicate the number of bits.
The 16-bit (M = 16) data is divided into 8-bit (L-bit) data and 8-bit (N-bit) data (M = L + N, L = N). The nonlinear conversion table T1 inputs 8-bit data, performs nonlinear conversion, and outputs 8-bit data. The exclusive OR circuit X1 performs an exclusive OR operation on the 8-bit data with the 8-bit (N-bit) data A to generate 8-bit (L-bit) data B. Here, both data A and data B are 8-bit data. The non-linear conversion table T4 receives 8-bit data A, performs non-linear conversion, and outputs 16-bit data. The nonlinear conversion table T5 inputs 8-bit data B, performs nonlinear conversion, and outputs 16-bit data. The exclusive OR circuit X9 performs an exclusive OR operation on the 16-bit data output from the non-linear conversion table T4 and the 16-bit data output from the non-linear conversion table T5 to obtain a 16-bit (M-bit) Data C is output.
[0037]
FIG. 6 is a configuration diagram of the nonlinear conversion table T4.
The nonlinear conversion table T4 is obtained by connecting two nonlinear conversion tables T2. The non-linear conversion table T2 receives data A, performs non-linear conversion on the data A, and outputs converted data [T2 (A)] 66. Therefore, the nonlinear conversion table T4 inputs the data A and outputs the converted data [T2 (A) ‖T2 (A)] 61. Here, “‖” indicates connection. same as below.
The size of the non-linear conversion table T4 is 2 8 X 16 bits = 512 bytes.
[0038]
FIG. 7 is a configuration diagram of the nonlinear conversion table T5.
The nonlinear conversion table T5 is obtained by connecting the table T6 and the nonlinear conversion table T7. The table T6 is a table in which data B from 0 to 255 is stored as shown in FIG. As shown in FIG. 9, the non-linear conversion table T7 can be generated using the non-linear conversion table T3 and the table T6. The table T6 is the same table as shown in FIG. The non-linear conversion table T3 is a table that receives data B, performs non-linear conversion on the data B, and outputs converted data [T3 (B)] 64. A nonlinear conversion table T7 is generated as a result of performing an exclusive OR operation on the tables of the nonlinear conversion table T3 and the table T6. As a result, conversion data [T3 (B) + B] 65 is stored in the nonlinear conversion table T7. Here, “+” means an exclusive OR operation. same as below. As shown in FIG. 7, the non-linear conversion table T5 inputs data B and outputs conversion data [B‖ (T3 (B) + B)] 63.
The table size of the non-linear conversion table T5 is 2 8 X 16 bits = 512 bytes.
[0039]
FIG. 10 shows program source code in a virtual programming language that performs non-linear conversion between the 8-bit (N = 8) data A and 8-bit (L = 8, L = N) data B shown in FIG. Three steps (left side of S1 to S3) in the frame indicated by F are program source codes. The right side of S1 to S3 is a description indicating the meaning of each step, and is not a program source code (hereinafter the same).
In S1, the data A is nonlinearly transformed by the nonlinear transformation table T4 to obtain transformed data [T2 (A) ‖T2 (A)] 61. In S2, the data B is nonlinearly converted in the nonlinear conversion table T5 to obtain conversion data [B‖ (T3 (B) + B)] 63. In S3, exclusive OR operation of data A and data B is performed to obtain 16-bit (M = 16, M = L + N) data C. The data C is converted data [(T2 (A) + B) ‖ (T3 (B) + T2 (A) + B)] 69.
In the case shown in FIG. 31, 6 steps are required, but in the case shown in FIG. 10, 3 steps are required. In FIG. 10, since the non-linear conversion table outputs 16-bit conversion data, the shift process shown in S5 of FIG. 31 becomes unnecessary. Further, the 8-bit exclusive OR operation shown in S2 and S4 of FIG. 31 is also unnecessary.
[0040]
FIG. 11 is a diagram showing a program in which F is nested in the case where the three steps shown in FIG. 10 are F.
By executing the preprocess 3 and the host process 3 before and after F, the same processing as that of the non-linear conversion circuit FI can be performed. By executing the same process as the nonlinear conversion circuit FI three times using the variable L2, the same process as the nonlinear conversion circuit FI1, the nonlinear conversion circuit FI2, and the nonlinear conversion circuit FI3 shown in FIG. 4 can be executed. it can. Then, by executing the pre-process 2 and the host process 2, the same processing as that of the nonlinear conversion circuit FO can be executed. Then, the same processing as that from the nonlinear conversion circuit FO1 to the nonlinear conversion circuit FO8 can be executed by executing the same processing as the nonlinear conversion circuit FO eight times by the variable L1. As described above, F shown in FIG. 10 is executed 24 times in the triple loop processing. Therefore, reducing the number of steps of the program shown in FIG. 10 by one step is equivalent to reducing the number of steps by 24 steps. That is, the program can be speeded up.
[0041]
FIG. 12 is a comparison diagram of the table size used in FIGS. 29 and 31 and the table size used in FIGS.
The non-linear conversion table T4 is twice the size of the non-linear conversion table T2, and the non-linear conversion table T5 is twice the size of the non-linear conversion table T3. The total table size of the three tables is 786 bytes in this embodiment, compared with 786 bytes in the prior art. When the size of the cache memory is about 32 kilobytes, this increase in the table size does not cause any problem, and all the tables can be made resident in the cache memory.
[0042]
The configuration shown in FIG. 5 can be used instead of the configuration shown in FIG. In the configuration shown in FIG. 5, the upper 8 bits of data C are [T2 (A) + B], and data A and data B can be separated and converted. Further, the lower 8 bits of the data C are [T3 (B) + T2 (A) + B], and the data A and the data B can be separated and converted. That is, [T2 (A) ‖T2 (A)] may be generated from the data A. Further, [BT (T3 (B) + B)] may be generated from the data B.
In this way, the non-linear conversion table T4 performs the separation conversion of only the data A while ignoring the data B. Further, the non-linear conversion table T5 performs the separation conversion of only the data B while ignoring the data A.
On the other hand, the configuration shown in FIG. 5 cannot be used in place of the configuration shown in FIG. This is because the upper 8 bits of data C are [T3 (T2 (A) + B) + A], and data A and data B cannot be separated and converted. That is, it is necessary to input [T2 (A) + B] to the nonlinear conversion table T3, and the conversion of the nonlinear conversion table T3 cannot be separated into the conversion of data A and the conversion of data B.
[0043]
Embodiment 2. FIG.
FIG. 13 is a diagram showing another configuration of the nonlinear conversion circuit FI1 shown in FIG. FIG. 13 obtains the same processing result as FIG.
The configurations of the cryptographic unit 100 and the nonlinear conversion circuit FO1 to the nonlinear conversion circuit FO8 are the same as those in FIGS. The nonlinear conversion circuit FI2 and the nonlinear conversion circuit FI3 have the same configuration as the nonlinear conversion circuit FI1. The non-linear conversion circuit FI1 shown in FIG. 13 performs non-linear conversion by dividing 16-bit (M-bit) data into 9-bit (L-bit) data and 7-bit (N-bit) data (M = L + N, L> N).
[0044]
FIG. 14 is a configuration diagram of the nonlinear conversion table T4.
The nonlinear conversion table T4 is obtained by connecting the nonlinear conversion table T2 ′ and the nonlinear conversion table T2.
[0045]
FIG. 15 is a detailed view of the nonlinear conversion table T4.
The non-linear conversion table T4 is generated from the non-linear conversion table T2 ′ and the non-linear conversion table T2. In the non-linear conversion table T2, one record is composed of 8 bits, and 0 is padded in the upper 1 bit. The nonlinear conversion table T2 is a table that inputs 7-bit data and outputs 8-bit data. The non-linear conversion table T4 is a table in which one record is 16 bits. The non-linear conversion table T4 uses the 8-bit data of the non-linear conversion table T2 as it is as the 8 bits after the 16 bits. Further, the lower 7 bits of the non-linear conversion table T2 are used as the upper 7 bits of 16 bits. Furthermore, the padded 0 of the upper first bit of the non-linear conversion table T2 is arranged in the upper eight bits of the 16-bit data of the non-linear conversion table T4. That is, the non-linear conversion table T2 ′ is obtained by cyclically shifting the non-linear conversion table T2 to the left by one bit.
As shown in FIG. 14, the nonlinear conversion table T4 receives the data A, and the converted data [T2 (A) ‖00‖T2 () in which 2 bits (9-7 bits = LN bits) 0 are inserted. A)] 67 is output.
The table size of the non-linear conversion table T4 is 2 7 X 16 bits = 256 kilobytes.
[0046]
FIG. 16 is a configuration diagram of the nonlinear conversion table T5.
The nonlinear conversion table T5 is obtained by connecting the table T6 ′ and the nonlinear conversion table T7 ′.
[0047]
FIG. 17 is a diagram for generating a nonlinear conversion table T5 from the table T6 and the nonlinear conversion table T7.
The table T6 is a table in which 9-bit data B is recorded. In the upper 7 bits of the table T6, 0 is padded. The non-linear conversion table T7 is a table in which conversion data [T3 (B) + B ″] 165 is recorded. Here, the data B ″ is obtained by setting the upper 2 bits (L−N bits) of the data B to 0. is there. In the upper 7 bits of the non-linear conversion table T7, 0 is padded. The nonlinear conversion table T7 shown in FIG. 17 is created by the same method as shown in FIG. 9 using the data B ″ table instead of the conversion table T6 in FIG. 9 and the conversion table T3 in FIG. 9 differs from the fact that FIG. 9 uses 8-bit data in the case where the nonlinear conversion table T7 of FIG. This is a point of using 16-bit data padded on the upper side.
The lower 7 bits of the table T6 are arranged in the upper 7 bits of the nonlinear conversion table T5 as a table T6 ′. Further, the lower 9 bits of the nonlinear conversion table T7 are arranged as the lower 9 bits of the nonlinear conversion table T5 as a nonlinear conversion table T7 ′. In this way, the nonlinear conversion table T5 is generated from the table T6 ′ and the nonlinear conversion table T7 ′. The upper 7 bits of the nonlinear conversion table T5 are data of only the lower 7 bits (N bits) obtained by deleting (truncating) the upper 2 bits (9-7 bits = LN bits) of the data B. The lower 7-bit data is defined as 7-bit data B ′. As shown in FIG. 16, the non-linear conversion table T5 inputs data B and outputs 16-bit conversion data [B′T (T3 (B) + B ″)] 163.
The table size of the non-linear conversion table T5 is 2 9 X 16 bits = 1 kilobyte.
[0048]
FIG. 18 is a diagram showing source code of a program that performs non-linear conversion between 7-bit (N = 7) data A and 9-bit (L = 9, L> N) data B.
In S1, the data A is nonlinearly converted using the nonlinear conversion table T4 to obtain conversion data [T2 (A) ‖00‖T2 (A)] 67. In S2, the data B is nonlinearly transformed using the nonlinear transformation table T5 to obtain transformed data [B′‖ (T3 (B) + B ″)] 163. In S3, an exclusive OR operation of data A and data B is performed. To obtain 16-bit (M = 16, M = L + N) data C. The data C is converted data [(T2 (A) + B ′) ‖ (T3 (B) + T2 (A) ″ + B ″)]. Here, T2 (A) "indicates 9-bit data [00‖T2 (A)] obtained by concatenating 2-bit (L-N bits) 0 and T2 (A).
[0049]
FIG. 19 shows conversion data [T2 (A) ‖00‖T2 (A)] 67 obtained from the nonlinear conversion table T4 and conversion data [B′‖ (T3 (B) + B ″) obtained from the nonlinear conversion table T5. )] 163 is subjected to an exclusive OR operation in S3 to obtain conversion data [(T2 (A) + B ′) ‖ (T3 (B) + T2 (A) ″ + B ″)] 169.
The converted data [T3 (B) + B ″] 165 and the converted data [T2 (A)] 66 in which the upper 2 bits are set to 0 are subjected to an exclusive OR operation, and the converted data [T3 (B) + T2 (A) "+ B"] 73. Also, an exclusive OR operation is performed on the converted data [T2 (A)] 66 and the 7-bit data B 'obtained by deleting the upper 2 bits from the data B, and the converted data [T2 ( A) + B ′] 71 is obtained.
[0050]
Also in the case shown in FIG. 18, the processing is completed in three steps, so that the processing speed can be increased. In the case of FIG. 18, compared with the case of FIG. 10, the nonlinear conversion table T5 further outputs 7-bit data B ′ in which the 9-bit data B is masked. Therefore, the 7-bit mask process shown in S21 of FIG. It becomes unnecessary.
[0051]
Embodiment 3 FIG.
FIG. 20 is a diagram illustrating another example of the cryptographic unit 100.
The encryption unit 100 has a key generation unit 110. The key generation unit 110 generates and outputs key data KO and key data KI necessary for the nonlinear conversion circuit FO and the nonlinear conversion circuit FI.
[0052]
FIG. 21 is a diagram illustrating a generation procedure of the key data KI of the key generation unit 110.
The key generation unit 110 generates eight key data from the 128-bit key data K to the 16-bit key data K1 to the key data K8, and according to the key schedule, from the 16-bit eight key data K1 ′ to the key data K8 ′. Is generated.
On the other hand, the key data KI1 to key data KI8 are distributed from the nonlinear conversion circuit FO1 to the nonlinear conversion circuit FO8 as shown in FIG. Further, the key data KI1 is divided into key data KI11, key data KI12, and key data KI13, and is distributed to the non-linear conversion circuit FI1, the non-linear conversion circuit FI2, and the non-linear conversion circuit FI3 as shown in FIG. The key data KI11 is divided into key data KI111 that is subjected to an exclusive OR operation with data A and key data KI112 that is subjected to an exclusive OR operation with data B. Key data KI11 to key data KI83 shown in FIG. 21 are 16-bit keys, and a total of 24 key data. On the other hand, the generated key data is eight key data from key data K1 ′ to key data K8 ′. These eight key data are used redundantly for 24 key data. For example, in FIG. 21, key data K1 ′ is used for both key data KI11 and key data KI82.
Thus, the key distribution destinations are determined by the key generation unit 110, and there are eight types. Accordingly, by preparing eight types of tables including key data and selecting and using any one table, it is possible to perform nonlinear conversion reflecting the key data. For example, in FIG. 21, the key data K1 ′ is used as the key data KI11, and the key data KI11 is distributed to the nonlinear conversion circuit FI1 in FIG. Therefore, the table used for the non-linear conversion processing of the non-linear conversion circuit FI11 is a table reflecting the key data K1 ′ from eight types of tables reflecting the key data from the key data K1 ′ to the key data K8 ′. Select and perform non-linear transformation. In FIG. 21, the key data K3 ′ is used for the key data KI12. In FIG. 22, since the key data KI12 is distributed to the non-linear conversion circuit FI2, non-linear conversion in the non-linear conversion circuit FI2 is performed. In the case of implementation, nonlinear conversion may be performed by selecting a table reflecting the key data K3 ′.
[0053]
The non-linear conversion circuit FI1 of FIG. 22 performs a first non-linear conversion on arbitrary two A input data and B input data by using the first key parameter 111 to convert the A input data into the first non-linear conversion circuit. A first sub-conversion processing unit 121 that outputs an exclusive OR of the output data and the B input data as first A intermediate data, and outputs the B input data as first B intermediate data; The first B intermediate data is subjected to a second nonlinear transformation with the second key parameter 112, and an exclusive OR of the second nonlinear transformed output data and the first A intermediate data is obtained as a second 2 shows a data conversion apparatus including n stages (three stages in the figure) of a second sub-conversion processing unit 122 that outputs B intermediate data and outputs the first A intermediate data as second A intermediate data. ing.
[0054]
FIG. 23 shows a nonlinear conversion circuit FI1 (8) including a nonlinear conversion table T51 to a nonlinear conversion table T58 in which the lower 9 bits of the eight key data from the key data K1 ′ to the key data K8 ′ are reflected. FIG. 2 shows FI2, FI3).
FIG. 23 obtains the same non-linear conversion result as the circuit shown in FIG.
The nonlinear conversion table T4 is the same as that shown in the second embodiment. The non-linear conversion table T51 is a table that outputs non-linear conversion data reflecting the lower 9 bits of the key data K1 ′. Similarly, the non-linear conversion table T52 to the non-linear conversion table T58 are tables that output non-linear conversion data reflecting the lower 9 bits of the key data K2 ′ to the key data K8 ′. In FIG. 23, the nonlinear conversion table T4 receives data A and outputs converted data [T2 (A) ‖00‖T2 (A)] 67. If the nonlinear conversion circuit FI shown in FIG. 23 is the nonlinear conversion circuit FI1 of the nonlinear conversion circuit FO1 that inputs the key data KI11, the nonlinear conversion table T51 is selected, and the data B is input by the nonlinear conversion table T51. Converted data [B′‖ (T3 (B + KI112) + B ″)] 76. The exclusive OR circuit X9 outputs the converted data [T2 (A) ‖00‖T2 (A)] 67 and the converted data [B ′. XOR operation with ‖ (T3 (B + KI112) + B ″)] 76 is performed to obtain conversion data [(T2 (A) + B ′) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″)] 78. . Then, the exclusive OR circuit X8 converts the converted data [(T2 (A) + B ′) K (T3 (B + KI112) + T2 (A) ″ + B ″)] 78 and the key data [KI111‖00‖KI111] (data D). To obtain converted data [(T2 (A) + B ′ + KI111) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″ + (00‖KI111))] 79.
[0055]
FIG. 24 is a diagram illustrating a source program that performs nonlinear conversion between data A and data B.
First, in S0, a value indicating which key data is used is substituted for the variable J. That is, a value indicating which of the key data K1 ′ to key data K8 ′ is used in the nonlinear conversion circuit FI is substituted. Here, 1 is substituted for J on the assumption that the nonlinear conversion circuit FI1 of the nonlinear conversion circuit FO1 uses the key data K1 ′. Next, in S1, the data A is nonlinearly transformed by the nonlinear transformation table T4 to obtain transformed data [T2 (A) ‖00‖T2 (A)] 67. Next, in S2, nonlinear conversion of data B is performed using the nonlinear conversion table T51 to obtain converted data [B′‖ (T3 (B + KI112) + B ″)] 76. Next, in S3, data A and data An exclusive OR operation of B is performed to obtain conversion data [(T2 (A) + B ′) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″)]] 78. Next, in S4, data C and the key are obtained. An exclusive OR operation is performed on the data [KI111‖00‖KI111] (data D), and the converted data [(T2 (A) + B ′ + KI111) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″ + (00‖ KI111))] 79 is obtained.
[0056]
Embodiment 4 FIG.
FIG. 25 is a diagram showing another configuration of the nonlinear conversion circuit FI shown in FIG. FIG. 25 obtains the same processing result as FIG.
FIG. 25 shows a case where the nonlinear conversion table T41 to the nonlinear conversion table T48 are used instead of the nonlinear conversion table T4 and the exclusive OR circuit X8 of FIG. The nonlinear conversion table T41 outputs nonlinear conversion data reflecting the upper 7 bits of the key data K1 ′. Similarly, the non-linear conversion table T42 to the non-linear conversion table T48 output non-linear conversion data reflecting the upper 7 bits of the key data K2 ′ to the key data K8 ′.
[0057]
FIG. 26 is a diagram showing a source program for nonlinearly converting data A and data B in FIG.
First, 1 is substituted for J in S0. Here, a case is shown in which the nonlinear transformation circuit FI shown in FIG. 25 performs nonlinear transformation on the nonlinear transformation circuit FI1 of the nonlinear transformation circuit FO1 using the key data K1 ′. Next, in S1, the data A is converted into converted data [(T2 (A) + KI111) ‖00‖ (T2 (A) + KI111)] 77 using the nonlinear conversion table T41. Next, in S2, the data B is converted into converted data [B′‖ (T3 (B + KI112) + B ″)] 76 using the nonlinear conversion table T51. Next, in S3, the exclusive of the data A and the data B is converted. Perform logical OR operation and output data C. Data C is converted data [(T2 (A) + B ′ + KI111) 111 (T3 (B + KI112) + T2 (A) ″ + B ″ + (00‖KI111))] 79. It is.
[0058]
FIG. 27 is a comparison diagram of the table size of the table used in Embodiments 2, 3, and 4 and the table size of the table shown in FIG.
The total table size of the second embodiment is almost the same as the conventional one. In the case of the third embodiment, since eight tables corresponding to eight key data are provided, the total table size is about 9 kilobytes. In the case of the fourth embodiment, two tables are provided for each of the eight pieces of key data, and 16 tables are required, so a total table size of 17 kilobytes is required. In either case, if there is a 32 kilobyte cache memory, all tables can be made resident in the cache memory.
In the third and fourth embodiments, when the number of types of key data is increased from 16 to 32 instead of 8, the number of tables must be increased according to the increased number. In some cases, the cache memory size may be exceeded. In such a case, instead of reflecting the key data all in the table as in the third embodiment instead of the fourth embodiment, a part of the key data is reflected in the table. This table may be made resident in the cache memory.
[0059]
FIG. 28 shows a multistage connection of the nonlinear transformations of the above-described embodiment. (A) shows an example (in the case of two-stage cascade connection) of the multi-stage cascade connection of this embodiment. The case of (b) is a case equivalent to (a) and shows the case of the conventional nonlinear conversion by the four-stage cascade connection.
The conventional two-stage cascade connection can be combined into one-stage conversion.
[0060]
【The invention's effect】
According to the first to fourth embodiments described above, the nonlinear conversion process can be performed at high speed. In particular, when the non-linear conversion process is performed by software (program), the number of steps can be reduced and high-speed processing can be performed.
[0061]
In addition, since a table subjected to mask processing is used, it is not necessary to perform mask processing by a program.
[0062]
Also, by searching the table, the nonlinear conversion data having the same number of bits as the final output is output from the nonlinear conversion table, so there is no need to perform data concatenation processing.
[0063]
Further, all nonlinear conversion tables can be arranged in the cache memory, and high-speed table search can be performed.
[Brief description of the drawings]
FIG. 1 is a diagram showing an environment in which nonlinear transformation according to Embodiment 1 is used.
FIG. 2 is a configuration diagram in which the nonlinear conversion according to the first embodiment operates.
FIG. 3 is a configuration diagram of a cryptographic unit 100. FIG.
FIG. 4 is a configuration diagram of a nonlinear conversion circuit FO1.
FIG. 5 is a configuration diagram of a nonlinear conversion circuit FI1.
FIG. 6 is a configuration diagram of a nonlinear conversion table T4.
FIG. 7 is a configuration diagram of a nonlinear conversion table T5.
FIG. 8 is a configuration diagram of a table T6.
FIG. 9 is a configuration diagram of a nonlinear conversion table T7.
FIG. 10 is a view showing source code of a program.
11 is a schematic configuration diagram of an encryption program 101. FIG.
FIG. 12 is a comparison diagram of table sizes.
FIG. 13 is a configuration diagram of FI1 according to the second embodiment.
FIG. 14 is a configuration diagram of a nonlinear conversion table T4.
FIG. 15 is a detailed view of a nonlinear conversion table T4.
FIG. 16 is a configuration diagram of a nonlinear conversion table T5.
FIG. 17 is a detailed view of a nonlinear conversion table T5.
FIG. 18 is a diagram showing source code of a program.
FIG. 19 is a diagram showing calculation of data A and data B.
FIG. 20 is a configuration diagram of the cryptographic unit 100 according to the third embodiment.
FIG. 21 is an operation diagram of the key generation unit 110.
FIG. 22 is a configuration diagram of a nonlinear conversion circuit FO1.
FIG. 23 is a configuration diagram of a nonlinear conversion circuit FI.
FIG. 24 is a diagram showing source code of a program.
25 shows a nonlinear conversion circuit FI of Embodiment 4. FIG.
FIG. 26 shows a program source code.
FIG. 27 is a comparison diagram of table sizes.
FIG. 28 is a diagram showing another embodiment.
FIG. 29 is a diagram showing a nonlinear conversion circuit of Conventional Example 1;
30 is an enlarged view of a Y portion in FIG. 29. FIG.
FIG. 31 is a diagram showing source code of a conventional program.
FIG. 32 is a diagram showing a concatenation operation of data A and data B.
FIG. 33 is an explanatory diagram of a table size.
FIG. 34 is an explanatory diagram of a table size.
FIG. 35 is an explanatory diagram of a table size.
FIG. 36 is an explanatory diagram of a table size.
FIG. 37 is a diagram showing a nonlinear conversion circuit of Conventional Example 2;
FIG. 38 is a configuration diagram of a nonlinear conversion table T1.
FIG. 39 is a configuration diagram of a nonlinear conversion table T2.
FIG. 40 is a diagram showing source code of a conventional program.
FIG. 41 is a diagram for explaining a conventional operation.
FIG. 42 is a diagram showing a conventional nonlinear conversion circuit.
FIG. 43 shows a source code of a conventional program.
FIG. 44 is a diagram showing a conventional nonlinear conversion circuit.
[Explanation of symbols]
61 Conversion data [T2 (A) ‖T2 (A)], 63 Conversion data [B‖ (T3 (B) + B)], 64 Conversion data [T3 (B)], 65 Conversion data [T3 (B) + B] , 66 Conversion data [T2 (A)], 67 Conversion data [T2 (A) ‖00‖T2 (A)], 69 Conversion data [(T2 (A) + B) ‖ (T3 (B) + T2 (A) + B ] Conversion data [T2 (A) + B ′], 73 Conversion data [T3 (B) + T2 (A) ″ + B ″], 76 Conversion data [B′‖ (T3 (B + KI112) + B ″)]], 77 Conversion data [(T2 (A) + KI111) ‖00‖ (T2 (A) + KI111)], 78 Conversion data [(T2 (A) + B ′) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″)], 79 Conversion data [(T2 (A) + B ′ + KI111) ‖ (T (B + KI112) + T2 (A) ″ + B ″ + (00‖KI111))], 81 conversion data [T2 (A)], 83 conversion data [T3 (B)], 84 conversion data [T2 (A) + B ′] 85 conversion data [T3 (B) + T2 (A) "+ B"], 86 conversion data [T2 (A) + B '+ KI111], 87 conversion data [T3 (B + KI112)], 88 conversion data [T3 (B + KI112) + T2 (A) "+ B" + (00‖KI111)], 89 conversion data [(T2 (A) + B ') ‖ (T3 (B) + T2 (A) "+ B")], 99 conversion data [(T2 (A ) + B ′ + KI111) ‖ (T3 (B + KI112) + T2 (A) ″ + B ″ + (00‖KI111))], 100 cryptographic unit, 101 cryptographic program, 110 key generation unit, 163 conversion data [B ′ (T3 (B) + B ″)], 165 conversion data [T3 (B) + B ″], 169 conversion data [(T2 (A) + B ′) ‖ (T3 (B) + T2 (A) ″ + B ″)], A, B, C data, B ′ 7-bit data, D key data [KI111‖00‖KI111], FI, FO nonlinear transformation circuit, KI, KO key data, T1, T2, T3, T4, T5, T7, T8 , T9 Non-linear conversion table, T6 table, X exclusive OR circuit.

Claims (12)

上位Nビット(Nは正の整数)がNビットのデータを非線形変換したNビットの変換データであり、中位(L−N)ビット(LはN以上の整数)が0であり、下位Nビットが上位Nビットと同一のデータである(N+L)ビットのデータを、上記Nビットのデータと対応させて記憶する第1の非線形変換テーブルと、The upper N bits (N is a positive integer) is N-bit converted data obtained by nonlinear conversion of N-bit data, the middle (L-N) bits (L is an integer equal to or greater than N) is 0, and the lower N A first non-linear conversion table that stores (N + L) -bit data, the bit of which is the same as the upper N bits, in association with the N-bit data;
上位NビットがLビットのデータの下位Nビットであり、下位Lビットが上記Lビットのデータを非線形変換したLビットのデータと上記Lビットのデータの上位(L−N)ビットを0にしたデータとの排他的論理和である(N+L)ビットのデータを、上記Lビットのデータと対応させて記憶する第2の非線形変換テーブルとを備える非線形変換装置が、  The upper N bits are the lower N bits of the L bit data, and the lower L bits are L-bit data obtained by nonlinear conversion of the L bit data and the upper (L-N) bits of the L bit data are set to 0. A non-linear conversion device including a second non-linear conversion table that stores (N + L) -bit data that is an exclusive OR with data in association with the L-bit data.
NビットのデータAを入力し、  Input N bits of data A,
上記第1の非線形変換テーブルを用いて、入力したNビットのデータAに対応する(N+L)ビットのデータを取得して、変換データAとし、  Using the first non-linear conversion table, (N + L) -bit data corresponding to the input N-bit data A is acquired as converted data A,
LビットのデータBを入力し、  Input L-bit data B,
上記第2の非線形変換テーブルを用いて、入力したLビットのデータBに対応する(N+L)ビットのデータを取得して、変換データBとし、  Using the second non-linear conversion table, (N + L) -bit data corresponding to the input L-bit data B is obtained as converted data B,
上記変換データAと上記変換データBとの排他的論理和を演算し、  An exclusive OR of the conversion data A and the conversion data B is calculated,
演算した排他的論理和の演算結果を、データCとして出力する  The operation result of the calculated exclusive OR is output as data C.
ことを特徴とする非線形変換方法。A non-linear conversion method characterized by that.
上位Nビット(Nは正の整数)がNビットのデータを非線形変換したNビットの変換データであり、下位Nビットが上位Nビットと同一のデータである2Nビットのデータを、上記Nビットのデータと対応づけて記憶する第1の非線形変換テーブルと、The upper N bits (N is a positive integer) is N-bit converted data obtained by nonlinear conversion of N-bit data, and the 2N-bit data whose lower N bits are the same data as the upper N bits A first non-linear conversion table stored in association with data;
上位NビットがNビットのデータと同一のデータであり、下位Nビットが上記Nビットのデータを非線形変換したNビットの変換データと上記Nビットのデータとの排他的論理和である2Nビットのデータを、上記Nビットのデータと対応づけて記憶した第2の非線形変換テーブルとを備える非線形変換装置が、  The upper N bits are the same data as the N bit data, and the lower N bits are 2N bits which are exclusive OR of the N bit conversion data obtained by nonlinear conversion of the N bit data and the N bit data. A non-linear conversion device comprising a second non-linear conversion table storing data in association with the N-bit data,
NビットのデータAを入力し、  Input N bits of data A,
上記第1の非線形変換テーブルを用いて、入力したNビットのデータAに対応する2Nビットのデータを取得して、変換データAとし、  Using the first non-linear conversion table, 2N-bit data corresponding to the input N-bit data A is acquired as converted data A,
NビットのデータBを入力し、  Input N-bit data B,
上記第2の非線形変換テーブルを用いて、入力したNビットのデータBに対応する2Nビットのデータを取得して、変換データBとし、  Using the second non-linear conversion table, 2N-bit data corresponding to the input N-bit data B is acquired as converted data B,
上記変換データAと上記変換データBとの排他的論理和を演算し、  An exclusive OR of the conversion data A and the conversion data B is calculated,
演算した排他的論理和の演算結果を、データCとして出力する  The operation result of the calculated exclusive OR is output as data C.
ことを特徴とする非線形変換方法。A nonlinear conversion method characterized by the above.
上位Nビット(Nは正の整数)がNビットのデータを非線形変換したNビットの変換データであり、中位(L−N)ビット(LはN以上の整数)が0であり、下位Nビットが上位Nビットと同一のデータである(N+L)ビットのデータを、上記Nビットのデータと対応させて記憶する第1の非線形変換テーブルを備える非線形変換装置が、The upper N bits (N is a positive integer) is N-bit converted data obtained by nonlinearly converting N-bit data, the middle (L-N) bits (L is an integer equal to or greater than N) is 0, and the lower N A non-linear conversion device including a first non-linear conversion table that stores (N + L) -bit data whose bits are the same as the upper N bits in association with the N-bit data.
(N+L)ビットの鍵データK’を入力し、  Input (N + L) -bit key data K ′,
Lビットのデータについて、入力した鍵データK’の下位Lビットと、上記Lビットのデータとの排他的論理和を演算し、  For the L-bit data, an exclusive OR of the lower L bits of the input key data K ′ and the L-bit data is calculated.
演算した排他的論理和の演算結果を非線形変換してLビットの変換データを取得し、  Non-linear conversion of the calculated exclusive OR operation result to obtain L-bit conversion data,
取得したLビットの変換データと、上記Lビットのデータの上位(L−N)ビットを0にしたデータとの排他的論理和を演算し、  Calculating an exclusive OR of the acquired L-bit conversion data and data in which the upper (LN) bits of the L-bit data are set to 0;
上位Nビットが上記Lビットのデータの下位Nビットであり、下位Lビットが演算した排他的論理和の演算結果である(N+L)ビットのデータを生成し、  The upper N bits are the lower N bits of the L bit data, and (N + L) bit data that is the result of the exclusive OR operation performed by the lower L bits is generated.
生成した(N+L)ビットのデータを、上記Lビットのデータと対応づけて記憶して、  The generated (N + L) bit data is stored in association with the L bit data, 第2の非線形変換テーブルとし、As a second nonlinear conversion table,
上位Nビットが入力した鍵データK’の上位Nビットであり、中位(L−N)ビットが0であり、下位Nビットが上位Nビットと同一のデータである(N+L)ビットのデータを生成して、鍵データDとし、  The upper N bits are the upper N bits of the input key data K ′, the middle (L−N) bit is 0, and the lower N bits are the same data as the upper N bits. Generate key data D,
NビットのデータAを入力し、  Input N-bit data A,
上記第1の非線形変換テーブルを用いて、入力したNビットのデータAに対応する(N+L)ビットのデータを取得して、変換データAとし、  Using the first non-linear conversion table, (N + L) -bit data corresponding to the input N-bit data A is acquired as converted data A,
LビットのデータBを入力し、  Input L-bit data B,
上記第2の非線形変換テーブルを用いて、入力したLビットのデータBに対応する(N+L)ビットのデータを取得して、変換データBとし、  Using the second non-linear conversion table, (N + L) -bit data corresponding to the input L-bit data B is obtained as converted data B,
上記変換データAと、上記変換データBとの排他的論理和を演算し、  An exclusive OR of the conversion data A and the conversion data B is calculated,
演算した変換データAと変換データBとの排他的論理和と、上記鍵データDとの排他的論理和を演算し、  An exclusive OR of the calculated conversion data A and conversion data B and an exclusive OR of the key data D are calculated,
演算した排他的論理和と鍵データDとの排他的論理和を、データCとして出力する  The exclusive OR of the calculated exclusive OR and key data D is output as data C
ことを特徴とする非線形変換方法。A non-linear conversion method characterized by that.
非線形変換装置が、Non-linear converter
(N+L)ビット(Nは正の整数、LはN以上の整数)の鍵データK’を入力し、  Input key data K ′ of (N + L) bits (N is a positive integer, L is an integer greater than or equal to N),
Nビットのデータについて、上記Nビットのデータを非線形変換したNビットの変換データを取得し、  For N-bit data, obtain N-bit conversion data obtained by nonlinearly converting the N-bit data,
入力した鍵データK’の上位Nビットと、取得したNビットの変換データとの排他的論理和を演算し、  An exclusive OR of the upper N bits of the input key data K ′ and the obtained N-bit conversion data is calculated,
上位Nビットが演算した排他的論理和の演算結果であり、中位(L−N)ビットが0であり、下位Nビットが上位Nビットと同一のデータである(N+L)ビットのデータを生成し、  This is the result of the exclusive OR operation with the upper N bits, generating (N + L) bits of data with the middle (L-N) bits being 0 and the lower N bits being the same data as the upper N bits. And
生成した(N+L)ビットのデータを、上記Nビットのデータと対応づけて記憶して、第1の非線形変換テーブルとし、  The generated (N + L) -bit data is stored in association with the N-bit data to form a first nonlinear conversion table,
Lビットのデータについて、入力した鍵データK’の下位Lビットと、上記Lビットのデータとの排他的論理和を演算し、  For L-bit data, an exclusive OR of the lower L bits of the input key data K ′ and the L-bit data is calculated.
演算した排他的論理和の演算結果を非線形変換してLビットの変換データを取得し、  Non-linear conversion of the calculated exclusive OR operation result to obtain L-bit conversion data,
取得したLビットの変換データと、上記Lビットのデータの上位(L−N)ビットを0にしたデータとの排他的論理和を演算し、  Calculating an exclusive OR of the acquired L-bit conversion data and data in which the upper (LN) bits of the L-bit data are set to 0;
上位Nビットが上記Lビットのデータの下位Nビットであり、下位Lビットが演算した排他的論理和の演算結果である(N+L)ビットのデータを生成し、  The upper N bits are the lower N bits of the L bit data, and (N + L) bit data that is the result of the exclusive OR operation performed by the lower L bits is generated.
生成した(N+L)ビットのデータを、上記Lビットのデータと対応づけて記憶して、第2の非線形変換テーブルとし、  The generated (N + L) -bit data is stored in association with the L-bit data to form a second nonlinear conversion table,
NビットのデータAを入力し、  Input N-bit data A,
上記第1の非線形変換テーブルを用いて、入力したNビットのデータAに対応する(N+L)ビットのデータを取得して、変換データAとし、  Using the first non-linear conversion table, (N + L) -bit data corresponding to the input N-bit data A is acquired as converted data A,
LビットのデータBを入力し、  Input L-bit data B,
上記第2の非線形変換テーブルを用いて、入力したLビットのデータBに対応する(N+L)ビットのデータを取得して、変換データBとし、  Using the second non-linear conversion table, (N + L) -bit data corresponding to the input L-bit data B is obtained as converted data B,
上記変換データAと、上記変換データBとの排他的論理和を演算し、  An exclusive OR of the conversion data A and the conversion data B is calculated,
演算した排他的論理和の演算結果を、データCとして出力する  The operation result of the calculated exclusive OR is output as data C.
ことを特徴とする非線形変換方法。A nonlinear conversion method characterized by the above.
上記非線形変換方法は、更に、The nonlinear conversion method further includes:
鍵データKを入力し、  Enter key data K,
入力した鍵データKに基づいて、(N+L)ビットの鍵データK’を生成し、  Based on the input key data K, (N + L) -bit key data K ′ is generated,
生成した鍵データK’を、上記鍵データK’として入力する  The generated key data K ′ is input as the key data K ′.
ことを特徴とする請求項3または請求項4記載の非線形変換方法。5. The nonlinear conversion method according to claim 3, wherein the nonlinear conversion method is performed.
NビットのデータAとLビットのデータBとをそれぞれ非線形変換して、M(M≠N,M≠L)ビットのデータCを出力する非線形変換方法において、
NビットのデータAを非線形変換して、Mビットの変換データAとする第1の非線形変換工程と、
LビットのデータBを非線形変換して、Mビットの変換データBとする第2の非線形変換工程と、
上記Mビットの変換データAと上記Mビットの変換データBとを排他的論理和演算してMビットのデータCとして出力する演算工程と
を備え
Nビット≦Lビットであり、かつ、Mビット=Nビット+Lビットであり、
第1の非線形変換工程は、
NビットのデータAをNビットのデータに非線形変換したNビットの変換データと、
(L−N)ビットのパディングデータと、
NビットのデータAをNビットのデータに非線形変換したNビットの変換データと
を連結したMビットの変換データAを出力する第1の非線形変換テーブルを用いて、非線形変換し、
第2の非線形変換工程は、
LビットのデータBの上位(L−N)ビットがトランケートされたNビットのデータB’と、
LビットのデータBをLビットのデータに非線形変換したLビットの変換データとLビットのデータBの上位(L−N)ビットを0としたデータとを排他的論理和演算したLビットの変換データと
を連結したMビットの変換データを出力する第2の非線形変換テーブルを用いて、非線形変換することを特徴とする非線形変換方法。
In a non-linear conversion method in which N-bit data A and L-bit data B are non-linearly converted to output M (M ≠ N, M ≠ L) -bit data C,
A first non-linear conversion step for converting N-bit data A into M-bit conversion data A by non-linear conversion;
A second non-linear conversion step of converting L-bit data B into M-bit conversion data B by non-linear conversion;
And an arithmetic step of outputting as the data C of the M bits by exclusive Kazu演 calculation and conversion data B of the conversion data A and the M bits of the M bit,
N bits ≦ L bits, and M bits = N bits + L bits,
The first nonlinear conversion step is
N-bit conversion data obtained by nonlinearly converting N-bit data A into N-bit data;
(LN) bits of padding data;
N-bit converted data obtained by nonlinearly converting N-bit data A into N-bit data;
Using the first non-linear conversion table that outputs M-bit conversion data A concatenated with
The second non-linear transformation step is
N-bit data B ′ in which the upper (L−N) bits of the L-bit data B are truncated;
L-bit conversion obtained by performing an exclusive OR operation on L-bit conversion data obtained by nonlinear conversion of L-bit data B into L-bit data and data in which the upper (LN) bits of L-bit data B are 0 Data and
A non-linear conversion method, characterized in that non-linear conversion is performed using a second non-linear conversion table that outputs M-bit conversion data obtained by concatenating .
上記第1の非線形変換工程は、
NビットのデータAからMビットの変換データA[A=Ta(A)‖(L−N)ビット分の0‖Ta(A)](「Ta」は非線形変換を示す。「‖」は連結を示す)を出力する第1の非線形変換テーブルを用いて、非線形変換し
上記第2の非線形変換工程は、
LビットのデータBからMビットの変換データB[B=B’‖(Tb(B)+B”)](B’はLビットのデータBの下位Nビットのデータを意味する。「Tb」は非線形変換を示す。「+」は、排他的論理和演算を示す。B”はLビットのデータBの上位(L−N)ビット分を0にしたLビットのデータを示す。)を出力する第2の非線形変換テーブルを用いて、非線形変換し
上記演算工程は、
上記Mビットの変換データA[A=Ta(A)‖(L−N)ビット分の0‖Ta(A)]と上記Mビットの変換データB[B=B’‖(Tb(B)+B”)]との排他的論理和演算を行い、Mビットの変換データC[C=(Ta(A)+B’)‖(Tb(B)+Ta(A)”+B”)](ここで、Ta(A)”は[(L−N)ビット分の0‖Ta(A)]を示す。)を出力することを特徴とする請求項記載の非線形変換方法。
The first nonlinear conversion step includes
Conversion data A [A = Ta (A) ‖ (L-N) of bits 0‖Ta (A)] of the data A to M bits of N-bit ( "Ta" indicates the non-linear transformation. "||" is using a first nonlinear conversion table to output the showing the connection), and non-linear transformation,
The second non-linear conversion step includes
L-bit data B or et M bits of conversion data B [B = B'‖ (Tb ( B) + B ")] (B ' denotes the data of the lower N bits of the data B of L bits." Tb " Indicates non-linear transformation, “ +” indicates exclusive OR operation, and B ″ indicates L-bit data in which the upper (L−N) bits of L-bit data B are 0. Using the second non-linear conversion table to be converted ,
The calculation process is as follows:
The M-bit conversion data A [A = Ta (A) ‖ (L−N) bits of 0‖Ta (A)] and the M-bit conversion data B [B = B′‖ (Tb (B) + B ")], And M-bit conversion data C [C = (Ta (A) + B ') ‖ (Tb (B) + Ta (A)" + B ")] (where Ta 7. The nonlinear conversion method according to claim 6, wherein (A) ″ indicates [(L−N) bits of 0‖Ta (A)].).
NビットのデータAとLビットのデータBとをそれぞれ非線形変換して、M(M≠N,M≠L)ビットのデータCを出力する非線形変換方法において、
NビットのデータAを非線形変換して、Mビットの変換データAとする第1の非線形変換工程と、
LビットのデータBを非線形変換して、Mビットの変換データBとする第2の非線形変換工程と、
上記Mビットの変換データAと上記Mビットの変換データBとを排他的論理和演算してMビットのデータCとして出力する演算工程と
を備え、
ビット=Lビットであり、かつ、Mビット=Nビット+Lビットであり、
上記第1の非線形変換工程は、NビットのデータAをNビットのデータに非線形変換したNビットの変換データを2つ連結したMビットの変換データAを出力する第1の非線形変換テーブルを用いて、非線形変換し
上記第2の非線形変換工程は、
LビットのデータBと、
LビットのデータBをLビットのデータに非線形変換したLビットの変換データとLビットのデータBとを排他的論理和演算したLビットの変換データと
を連結したMビットの変換データBを出力する第2の非線形変換テーブルを用いて、非線形変換することを特徴とする非線形変換方法。
In a non-linear conversion method in which N-bit data A and L-bit data B are non-linearly converted to output M (M ≠ N, M ≠ L) -bit data C,
A first non-linear conversion step for converting N-bit data A into M-bit conversion data A by non-linear conversion;
A second non-linear conversion step of converting L-bit data B into M-bit conversion data B by non-linear conversion;
A calculation step of performing an exclusive OR operation on the M-bit conversion data A and the M-bit conversion data B and outputting the result as M-bit data C;
With
N bit = L bit and M bit = N bit + L bit,
Said first nonlinear transformation step, a first non-linear conversion table for output the converted data A M-bit data A of the N-bit converted data of N bits which is non-linear transformation to the N-bit data two linked Using non-linear transformation ,
The second non-linear conversion step includes
L-bit data B;
M-bit conversion data B obtained by concatenating L-bit conversion data obtained by non-linear conversion of L-bit data B into L-bit data and L-bit conversion data obtained by exclusive-ORing L-bit data B is output. using the second nonlinear conversion table you, non linear transformation way to said that you nonlinear conversion.
上記第1の非線形変換工程は、
NビットのデータAからMビットの変換データA[A=Ta(A)‖Ta(A)](「Ta」は非線形変換を示す。「‖」は連結を示す)を出力する第1の非線形変換テーブルを用いて、非線形変換し
上記第2の非線形変換工程は、
LビットのデータBからMビットの変換データB[B=B‖(Tb(B)+B)](「Tb」は非線形変換を示す。「+」は排他的論理和演算を示す)を出力する第2の非線形変換テーブルを用いて、非線形変換し
上記演算工程は、
上記Mビットの変換データA[A=Ta(A)‖Ta(A)]と上記Mビットの変換データB[B=B‖(Tb(B)+B)]との排他的論理和演算を行い、Mビットの変換データC[C=(Ta(A)+B)‖(Tb(B)+Ta(A)+B)]を出力することを特徴とする請求項記載の非線形変換方法。
The first nonlinear conversion step includes
N-bit data A to M-bit conversion data A [A = Ta (A) ‖Ta (A)] ( "Ta" indicates the non-linear transformation. "||" indicates concatenation) first to output the Using the nonlinear conversion table of
The second non-linear conversion step includes
L-bit data B or et M bits of conversion data B [B = B‖ (Tb ( B) + B)] ( "Tb" indicates a non-linear transformation. "+" Indicates an exclusive OR operation) out of the Using the second non-linear conversion table to be converted ,
The calculation process is as follows:
An exclusive OR operation is performed on the M-bit conversion data A [A = Ta (A) ‖Ta (A)] and the M-bit conversion data B [B = B‖ (Tb (B) + B)]. 9. The nonlinear conversion method according to claim 8 , wherein M-bit conversion data C [C = (Ta (A) + B) ‖ (Tb (B) + Ta (A) + B)] is output.
上記第1の非線形変換テーブルと上記第2の非線形変換テーブルとの少なくともいずれか一方は、鍵データに基づく非線形変換を実行する非線形変換テーブルであることを特徴とする請求項7または請求項9記載の非線形変換方法。Said at least one of the first non-linear transformation tables and the second nonlinear conversion table is claim 7 or claim characterized in that it is a non-linear conversion table for performing non-linear transformation based on key data 10. The nonlinear conversion method according to 9 . 上記請求項1乃至請求項10のいずれかに記載された非線形変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。A computer-readable recording medium recording a program for causing a computer to execute the nonlinear conversion method according to any one of claims 1 to 10 . Nビット(Nは正の整数)のデータAをNビットのデータに非線形変換したNビットの変換データと、(L−N)ビット(LはN以上の整数)のパディングデータと、NビットのデータAをNビットのデータに非線形変換したNビットの変換データとを連結したMビット(M=N+L)の変換データAを記憶する第1の非線形変換テーブルと、
LビットのデータBの上位(L−N)ビットがトランケートされたNビットのデータB’と、LビットのデータBをLビットのデータに非線形変換したLビットの変換データとLビットのデータBの上位(L−N)ビットを0にしたデータとを排他的論理和演算したLビットの変換データとを連結したMビットの変換データを記憶する第2の非線形変換テーブルと、
ビットのデータAを入力し、上記第1の非線形変換テーブルを用いてNビットのデータAをMビットのデータに非線形変換して、非線形変換したMビットのデータをMビットの変換データAとして出力する第1の非線形変換回路と、
LビットのデータBを入力し、上記第2の非線形変換テーブルを用いてLビットのデータBをMビットのデータに非線形変換して、非線形変換したMビットのデータをMビットの変換データBとして出力する第2の非線形変換回路と、
上記第1の非線形変換回路から出力されたMビットの変換データAと、上記第2の非線形変換回路から出力されたMビットの変換データBとを排他的論理和演算してMビットの変換データCを出力する演算器と
を備えたことを特徴とする非線形変換装置。
N-bit converted data obtained by nonlinear conversion of N-bit (N is a positive integer) data A into N-bit data, (L−N) -bit (L is an integer equal to or greater than N) padding data, N-bit data A first nonlinear conversion table for storing M-bit (M = N + L) conversion data A obtained by concatenating N-bit conversion data obtained by nonlinear conversion of data A into N-bit data;
N-bit data B ′ obtained by truncating the upper (L−N) bits of L-bit data B, L-bit conversion data obtained by nonlinear conversion of L-bit data B into L-bit data, and L-bit data B A second non-linear conversion table for storing M-bit conversion data obtained by concatenating L-bit conversion data obtained by performing an exclusive OR operation on data in which the upper (L-N) bits are set to 0;
N- bit data A is input , N-bit data A is nonlinearly converted to M-bit data using the first non-linear conversion table, and the non-linearly converted M-bit data is used as M-bit conversion data A. A first nonlinear conversion circuit for outputting;
L-bit data B is input , L-bit data B is nonlinearly converted to M-bit data using the second nonlinear conversion table, and the nonlinearly-converted M-bit data is used as M-bit conversion data B A second non-linear conversion circuit for outputting;
The M-bit conversion data A is obtained by performing an exclusive OR operation on the M-bit conversion data A output from the first non-linear conversion circuit and the M-bit conversion data B output from the second non-linear conversion circuit. A non-linear conversion apparatus comprising an arithmetic unit that outputs C.
JP2000309676A 2000-10-10 2000-10-10 Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device Expired - Fee Related JP3917357B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000309676A JP3917357B2 (en) 2000-10-10 2000-10-10 Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000309676A JP3917357B2 (en) 2000-10-10 2000-10-10 Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device

Publications (2)

Publication Number Publication Date
JP2002116691A JP2002116691A (en) 2002-04-19
JP3917357B2 true JP3917357B2 (en) 2007-05-23

Family

ID=18789793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000309676A Expired - Fee Related JP3917357B2 (en) 2000-10-10 2000-10-10 Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device

Country Status (1)

Country Link
JP (1) JP3917357B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479016B2 (en) * 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
JP5387295B2 (en) 2009-09-29 2014-01-15 富士通株式会社 Cryptographic apparatus and method

Also Published As

Publication number Publication date
JP2002116691A (en) 2002-04-19

Similar Documents

Publication Publication Date Title
AU767323B2 (en) Block encryption device using auxiliary conversion
US5103451A (en) Parallel cyclic redundancy check circuit
JP5000365B2 (en) Hash value generation device, program, and hash value generation method
JP3180836B2 (en) Cryptographic communication device
JP2746109B2 (en) Huffman code decoding circuit
JP5241475B2 (en) Hash value calculation device, hash value calculation method, and hash value calculation program
JP3917357B2 (en) Non-linear conversion method, computer-readable recording medium storing program, and non-linear conversion device
KR20010041202A (en) Method for the block-encryption of discrete data
JP4120193B2 (en) Encryption / decryption circuit
US7039186B2 (en) Encryption key generation circuit
JP3277894B2 (en) Information processing apparatus and code generation method
US8634551B2 (en) Cryptographic apparatus and method
JP2945029B2 (en) Data compression device
JPH06102820A (en) Cyphering device
JPH1078864A (en) Random number generator
JPH06102821A (en) Cyphering device
JP2000194261A (en) Data randomizer
JP2004245988A (en) Device, method and program for data processing, linear conversion circuit and enciphering circuit
JPH08101639A (en) Data diffusing method

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040517

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040614

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060919

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070208

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3917357

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100216

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110216

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140216

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees