JP4004805B2 - 非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム - Google Patents
非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム Download PDFInfo
- Publication number
- JP4004805B2 JP4004805B2 JP2002016285A JP2002016285A JP4004805B2 JP 4004805 B2 JP4004805 B2 JP 4004805B2 JP 2002016285 A JP2002016285 A JP 2002016285A JP 2002016285 A JP2002016285 A JP 2002016285A JP 4004805 B2 JP4004805 B2 JP 4004805B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- conversion
- input
- concatenated
- register
- 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
Links
Images
Description
【発明の属する技術分野】
この発明は、非線形変換装置及び非線形変換方法に関するものである。特に、非線形変換を高速に行う処理に関するものである。
【0002】
【従来の技術】
従来例1.
従来例1では、従来行われていた非線形変換装置について説明する。
図7は、非線形変換装置1300の概要図である。
1000は、イニシャル値IVを格納する記憶領域を示す。イニシャル値IVは固定値である。1200は、通信によって任意の者から他の者へ送信されるメッセージMを格納する記憶領域である。1310は、任意のアルゴリズム関数を用いてイニシャル値IVとメッセージMとから変換データを求める変換部である。変換部1310で用いられるアルゴリズムには、ハッシュ値を求めるためのハッシュ関数や平文を暗号化するためのブロック暗号があり、図7ではハッシュ関数F1(Function 1)が挙げられている。ハッシュ関数の例としては、SHA−1やMD−5などがあげられる。非線形変換装置1300の変換部1310でハッシュ関数F1により変換された変換データは、ハッシュ値として出力される。1100は変換後の変換データを格納する記憶領域である。
【0003】
次に、詳細を説明する。
1001〜1010、1101〜1110、1201〜1210は、全て32ビット領域のレジスタである。
イニシャル値IVは、IV(1)、IV(2)、IV(3)、・・・、IV(K)というように32ビットのイニシャル値に分割される。IV(1)、IV(2)、IV(3)、・・・、IV(K)は、入力部I1350によって、各々、レジスタ1001、レジスタ1002、レジスタ1003、・・・、レジスタ1010に格納される。
メッセージMも同様に、M(1)、M(2)、M(3)、・・・、M(K)というように32ビットデータに分割され、入力部M1360によって、各々、レジスタ1201、レジスタ1202、レジスタ1203、・・・、レジスタ1210に格納される。
【0004】
非線形変換装置1300の変換部1310では、レジスタ1001に格納されたIV(1)とレジスタ1201に格納されたM(1)とから非線形変換がなされ、変換結果としてS(1)を出力する。出力したS(1)は、レジスタ1101に格納される。
次に、変換部1310により、レジスタ1002に格納されたIV(2)とレジスタ1202に格納されたM(2)を入力データとしてF1によって非線形変換がなされ、変換結果としてS(2)が出力され、レジスタ1102に格納される。
以下同様にして、逐次的にS(3)、・・・、S(K)が出力され、レジスタ1103、・・・、レジスタ1110に格納される。
格納されたレジスタ1101〜レジスタ1110中のS(1)〜S(K)は、出力部1370によって連結されてハッシュ値1100が出力される。
【0005】
上記に示した非線形変換装置1300が行う非線形変換の逐次的処理について、さらに詳細に説明する。図8は、非線形変換装置1300が逐次的に行う非線形変換の処理工程(第1非線形変換工程〜第K非線形変換工程)を示した図である。図8の横軸は、時間tを表しており、第1非線形変換工程から第K非線形変換工程までの工程が、第1非線形変換工程から順に逐次的に行われていることを示している。
第1非線形変換工程1300aは、非線形変換装置1300によって第1に実行される非線形変換処理の工程を示す。第2非線形変換工程1300bは、第1非線形変換工程1300aの処理後に実行される非線形変換処理の工程を示す。同様にして、第2非線形変換工程1300bの実行後に、第3非線形変換工程1300cが行われ、最後に、第K非線形変換工程1300kが実行される。
【0006】
第1非線形変換工程.
第1非線形変換工程1300aでは、レジスタ1001に格納されたIV(1)とレジスタ1201に格納されたM(1)とから変換部1310の有するハッシュ関数F1によって非線形変換がなされる。即ち、IV(1)とM(1)とをハッシュ関数F1に基づいて非線形変換し、非線形変換後のデータとIV(1)とを用いてXOR(XOR:EXCLUSIVE OR)1320が排他的論理和演算を行い結果としてS(1)を出力する。出力されたS(1)は、レジスタ1101に格納される。
第2非線形変換工程.
第2非線形変換工程1300bでは、入力値としてIV(2)、M(2)及びS(1)を用いる。まず、変換部1310は、IV(2)とM(2)とをハッシュ関数F1により非線形変換する。XOR1320は、変換した結果である変換値と第1非線形変換工程1300aの出力結果であるS(1)との排他的論理和演算を行い、その結果であるS(2)をレジスタ1102に出力する。
第3非線形変換工程〜第K非線形変換工程.
第3非線形変換工程1300c〜第K非線形変換工程1300kについても、逐次的に上記第1非線形変換工程1300aと同様の演算を行い、出力データとして、S(3)〜S(K)をレジスタ1103〜レジスタ1110に出力する。このように、非線形変換装置1300では、第2非線形変換工程1300bは、第1非線形変換工程1300aにおいて出力されたS(1)を用いなければならない。同様に、第3非線形変換工程1300cの変換工程においても第2非線形変換工程1300bの出力結果であるS(2)が必要であり、第K非線形変換工程1300kにおいても第K非線形変換工程1300kの前の変換工程における出力データであるS(k−1)が必要である。従って、第1非線形変換工程1300aから第K非線形変換工程1300kで行われる非線形変換処理自体はすべて同様の処理であっても、前で行われた変換結果を用いて次の変換工程を経なければならないため、第1非線形変換工程1300aから第K非線形変換工程1300kの各工程は、逐次的に行わなければならなかった。そのため、大量の入力データに対しては、同様の非線形変換処理を大量の入力データ分、ループ処理として繰り返さなければならず、複数のデータの並行処理が行えないために全体の総処理時間の増大が問題となっていた。
【0007】
従来例2.
従来例2は、任意のアルゴリズムを実行する場合に、従来行われていた加算処理方法について示すものである。
図9は、2Jビット長のデータの加算処理の動作を示している。図9に示すように、レジスタ802に格納されたデータ(1)とメモリ800中の任意の領域801に格納されたデータ(2)とを加算器815によって加算している。
ここで、単一に2Jビット長のデータの加算命令が存在せず、Jビット長のデータの加算命令しかできない場合には、図9のように、単純にデータ(1)とデータ(2)とを加算することは不可能となる。そこで、代替方法としてデータ(1)とデータ(2)とを、各々上位Jビットと下位Jビットに分け、それぞれの単位で加算演算を行うことによって2Jビット長のデータの加算処理を実現する方法がある。
図10は、上位と下位のJビットずつを加算処理単位として加算演算を行う従来の加算方法を示す図である。
レジスタ802に格納された2Jビット長のデータ(1)は、上位Jビットと下位Jビットのデータに分割し、レジスタ804とレジスタ803にそれぞれ格納される。レジスタ804に格納されたデータをデータH(1)、レジスタ803に格納されたデータをデータL(1)とする。
まず、レジスタ803に格納されたデータL(1)とメモリ800の任意の領域801の下位Jビットに格納されたデータL(2)との加算を行う。その後、レジスタ804に格納されたデータH(1)とメモリ800の任意の領域801の上位Jビットに格納されたデータH(2)との加算を行う。上記のようにして行われた加算結果を加算データとしてレジスタ807に転送する。以上のような加算処理では、下位Jビットの加算時に桁上がりが発生した場合には、桁上がりをキャリーとしてレジスタ810に格納し、上位Jビットの加算時にキャリーの値をも加算する。
【0008】
上記に示した加算処理の詳細を図11のフローチャートに示す。
まず、2Jビット長レジスタであるレジスタ802に格納されたデータ(1)を上位JビットのデータH(1)と下位JビットのデータL(1)に分割する(S120)。
レジスタ802の下位Jビットに格納されたデータL(1)をレジスタ803に格納し、上位Jビットに格納されたデータH(1)をレジスタ804に格納する(S121)。
レジスタ803に格納されたデータL(1)とメモリ800の任意の領域801の下位Jビットに格納されたデータL(2)とを加算器815により加算し、加算した結果を領域801の下位JビットにデータL(2)として格納する。このとき、桁上がりが発生した場合には、桁上がりの値をレジスタ810にキャリーとして格納する(S122)。
次に、上位Jビットの加算を行う。即ち、レジスタ804に格納されたデータH(1)とメモリ800の任意の領域801の上位Jビットに格納されたデータH(2)とキャリーが存在する場合にはレジスタ810に格納されたキャリーとを加算器815により加算し、加算した結果を領域801の上位JビットにデータH(2)として格納する(S123)。
メモリ800の領域801に格納された2Jビットのデータは、レジスタ807に転送される(S124)。
【0009】
このようにして、2Jビット長の加算が単一の命令で実現できないために、その代わりとして上位、下位のJビット単位で加算演算を行う場合、この演算によって得られた結果が格納されたメモリ上の任意の領域から演算結果を2Jビットの値としてCPUが読み出し、レジスタ807に転送する際に読み出し時間に莫大な時間がかかるため、全体の処理時間が遅延し、演算速度が著しく低下し、全体の処理時間が遅延するという問題が生じていた。
【0010】
【発明が解決しようとする課題】
例えば、甲から乙にネットワークを通じて送信されたメッセージが改ざんされていないメッセージであることを認証する認証情報を作成する暗号アプリケーションにおいて、非線形変換処理を汎用的なマイクロプロセッサを搭載したコンピュータ上のソフトウエアで実現する場合、図8に示すように、第一の非線形変換工程から第Kの非線形変換工程は逐次的に行わなければならなかった。
本発明の目的は、非線形変換処理を並列に処理し、従来より高速な演算方法を得ることにある。
【0011】
また、本発明の目的は、データのアクセス方法によって演算の遅延を起こす場合がある従来の要因を回避し、高速な演算方法を得ることを目的とする。
【0012】
【課題を解決するための手段】
この発明に係る非線形変換装置は、所定長のデータを記憶する記憶部と、
互いに関連しない複数のデータを連結し、連結した所定長の連結データを上記記憶部に入力する入力部と、
上記入力部により上記記憶部に入力された所定長の連結データを入力して、同一のアルゴリズムにより連結前の複数のデータを並行して非線形変換し、複数の変換データを取得する変換部とを備えることを特徴とする。
【0013】
上記入力部は、複数のデータIVPの各データIVPと複数のデータIVQの各データIVQとを各々連結データIVとして連結し、連結した複数の連結データIVを上記記憶部に入力し、複数のデータMAの各データMAと複数のデータMBの各データMBとを各々連結データMとして連結し、連結した複数の連結データMを上記記憶部に入力し、
上記変換部は、上記入力部によって上記記憶部に入力された複数の連結データIVと連結データMとから1の連結データIVと連結データMとを順次選択し、選択した連結データIV中のデータIVPと連結データM中のデータMAとを入力データとして上記アルゴリズムにより非線形変換し変換データHSを取得する処理とともに、並行して、選択した連結データIV中のデータIVQと連結データM中のデータMBとを入力データとして上記非線形変換に用いたアルゴリズムと同一のアルゴリズムにより非線形変換し変換データHTを取得する処理を、順次選択された連結データIVと連結データMについて逐次的に繰り返すことを特徴とする。
【0014】
上記記憶部は、2Jビット長のレジスタと2Jビット長のメモリの少なくともいずれかであり、
上記入力部は、Jビット長である各データIVPとJビット長である各データIVQとを上記記憶部であるレジスタあるいはメモリの上位Jビット領域と下位Jビット領域に各々入力し、Jビット長である各データMAとJビット長である各データMBとを上記記憶部であるレジスタあるいはメモリの上位Jビット領域と下位Jビット領域に各々入力することを特徴とする。
【0015】
上記入力部は、複数のデータIVRと複数のデータMCとを連結させずに上記記憶部に入力し、
上記変換部は、非線形変換により変換データHSと変換データHTとを並行して取得する上記2つの処理に並行して、上記入力部によって上記記憶部に入力された複数のデータIVRと複数のデータMCとから1のデータIVRとデータMCとを順次選択し、選択したデータIVRとデータMCとを任意のアルゴリズムにより非線形変換し変換データHUを取得する処理を順次選択されたデータIVRとデータMCについて逐次的に繰り返すことを特徴とする。
【0016】
上記記憶部は、複数の種類あるいは複数の長さから構成されるレジスタあるいはメモリであることを特徴とする。
【0017】
上記変換部は、非線形変換するためのアルゴリズムに平文を暗号化するためのブロック暗号あるいハッシュ値を求めるためのハッシュ関数を使用することを特徴とする。
【0018】
上記非線形変換装置は、さらに、上記変換部が取得した変換データを連結して上記記憶部に出力する出力部を備えることを特徴とする。
【0019】
この発明に係る非線形変換方法は、所定長のデータを記憶部に記憶し、
互いに関連しない複数のデータを連結し、連結した所定長の連結データを上記記憶部に入力し、
上記記憶部に入力された所定長の連結データを入力して、同一のアルゴリズムにより連結前の複数のデータを並行して非線形変換し、複数の変換データを取得することを特徴とする。
【0020】
この発明に係る非線形変換プログラムは、所定長のデータを記憶部に記憶する処理、
互いに関連しない複数のデータを連結し、連結した所定長の連結データを上記記憶部に入力する処理、
上記記憶部に入力された所定長の連結データを入力して、同一のアルゴリズムにより連結前の複数のデータを並行して非線形変換し、複数の変換データを取得する処理とをコンピュータに実行させることを特徴とする。
【0021】
この発明に係る加算方法は、2Jビット長のデータ(1)と2Jビット長のデータ(2)とを2Jビット長のデータのまま単一に加算する命令が存在しない計算機の加算方法において、
2Jビット長のデータ(1)を上位JビットのデータからなるデータH(1)と下位JビットのデータからなるデータL(1)に分割し、
2Jビット長のデータ(2)を上位JビットのデータからなるデータH(2)と下位JビットのデータからなるデータL(2)に分割し、
上記分割されたデータL(1)とデータL(2)とを加算し、加算された結果桁上がりが発生した場合には、加算された結果中、下位Jビットを加算データLとして格納し、上記桁上がりをキャリーとして格納し、加算された結果桁上がりが発生しない場合には、加算された結果を加算データLとして格納し、
上記分割されたデータH(1)とデータH(2)とを加算し、上記キャリーが格納されている場合には、上記データH(1)とデータH(2)との加算結果にキャリーを加算し、加算された結果を加算データHとして格納し、
上記格納された加算データLと加算データHとを2Jビット長からなる2つの記録領域の下位Jビットに各々転送し、
上記転送された加算データHを上位ビット、加算データLを下位ビットとして連結し、2Jビット長となった加算データを記録領域へ転送することを特徴とする。
【0022】
【発明の実施の形態】
実施の形態1.
本実施の形態では、非線形変換を並列に処理する非線形変換装置について説明する。
図1は、非線形変換装置の概要図である。
300は、非線形変換装置を示す。310は、非線形変換装置300の有する変換部である。
図1において、101、102、103、・・・、110、201、202、203、・・・、210、401、402、403、・・・、410は、すべて64ビット長のレジスタを示す。各レジスタは図示されていないが記録部によって記憶可能なデバイスの一例である。
101H、102H、103H、・・・、110H、201H、202H、203H、・・・、210H、401H、402H、403H、・・・、410Hは、それぞれ101、102、103、・・・、110、201、202、203、・・・、210、401、402、403、・・・、410の上位32ビット部分を示し、101L、102L、103L、・・・、110L、201L、202L、203L、・・・、210L、401L、402L、403L、・・・、410Lは、それぞれ101、102、103、・・・、110、201、202、203、・・・、210、401、402、403、・・・、410の下位32ビット部分を示す。
F2は、変換部310で使用されるアルゴリズムであるハッシュ関数を示す。このF2を用いて非線形変換処理が行われる。
【0023】
200Hは、送信者から受信者へネットワークによって送信されるメッセージMAを格納したレジスタである。メッセージMAは、MA(1)、MA(2)、・・・、MA(k)まで32ビット単位に分割される。200Lも同様にメッセージMBを格納したレジスタであり、メッセージMBは、MB(1)、・・・、MB(K)まで32ビット単位に分割される。
100Hは、初期値であるイニシャル値IVPを格納したレジスタである。レジスタ100Hに格納されたイニシャル値IVPは、IVP(1)からIVP(K)まで32ビット単位に分割される。100Lも同様にイニシャル値IVQを格納したレジスタであり、イニシャル値IVQは、IVQ(1)からIVQ(K)まで32ビット単位に分割される。
400Hは、メッセージMAとイニシャル値IVPとを入力データとしてこれらのデータを用いて非線形変換装置300によって変換された変換データであるHS(1)〜HS(K)を格納するレジスタである。HS(1)〜HS(K)まで32ビット単位のデータは連結後、ハッシュ値HSとしてレジスタ400Hに格納される。
400Lは、メッセージMBとイニシャル値IVQとを入力データとして非線形変換された変換データであるHT(1)〜HT(K)を格納するレジスタである。HT(1)〜HT(K)までの32ビットデータは連結後、ハッシュ値HTとしてレジスタ400Lに格納される。
【0024】
上記メッセージMA、メッセージMB、イニシャル値IVP、イニシャル値IVQは、すべて非線形変換装置300への入力データであり、ハッシュ値HS、ハッシュ値HTは、すべて非線形変換装置300からの出力データである。
【0025】
次に、非線形変換装置300が行う処理の動作について、図1を用いて説明する。
前処理.
まず、第1のイニシャル値であるレジスタ100H中のIVP(1)と第2のイニシャル値である100L中のIVQ(1)は、入力部I350によって、それぞれレジスタ101の上位32ビット領域101Hとレジスタ101の上位32ビット領域101Lに転送され、それによりレジスタ101において64ビットの長さに連結される。同様にして、IVP(2)とIVQ(2)、IVP(3)とIVQ(3)、・・・、IVP(K)とIVQ(K)とが、各々連結され、レジスタ102、レジスタ103、レジスタ110に格納される。連結された各データを連結データIVとする。
ハッシュ関数F2へのもう一方からの入力データとなるメッセージMAとメッセージMBは、入力部M360によって、イニシャル値IVPやイニシャル値IVQと同様な連結手段によって連結される。すなわち、レジスタ200H中のMA(1)とレジスタ200L中のMB(1)は、それぞれレジスタ201の上位32ビット領域201Hと下位32ビット領域201Lに転送され、それによりレジスタ201において64ビットの長さに連結される。同様にして、MA(2)とMB(2)、MA(3)とMB(3)、MA(K)とMB(K)とが連結され、それぞれレジスタ202、レジスタ203、レジスタ210に格納される。連結された各データを連結データMとする。
以上の動作を行う入力部I350と入力部M360とは、互いに関連しない複数のデータを連結し、連結した所定長の連結データをレジスタ等から構成される記憶部に入力する入力部の一例である。
【0026】
非線形変換処理.
前述のような入力データの連結手段によって、連結された個々の64ビット長の連結データIVと連結データMとは、変換部310の有するハッシュ関数F2によって、その内部において、64ビット単位で演算される。このとき、各レジスタにおいて連結手段によって連結された連結データIVと連結データMの上位32ビットと下位32ビットのデータは、相互に独立性が保たれたまま、同時に処理が実行される。例えば、連結データIVの上位32ビットであるIVP(1)と連結データMの上位32ビットであるMAとを入力データとして非線形変換し変換データHSを取得する処理と、連結データIVの下位32ビットであるIVQ(1)と連結データMの下位32ビットであるMBとを入力データとして非線形変換し変換データHTを取得する処理とが、変換部310によって並行して行われる。
このようにして、変換部310は、複数の連結データIVと連結データMとから1の連結データIVと連結データMとを順次選択し、選択した連結データIV中のデータIVP(IVP(1)〜IVP(K)のいずれか)と連結データM中のデータMA(MA(1)〜MA(K)のいずれか)とを入力データとして任意のアルゴリズムにより非線形変換し変換データHS(HS(1)〜HS(K)のいずれか)を取得するとともに、並行して、選択した連結データIV中のデータIVQ(IVQ(1)〜IVQ(K)のいずれか)と連結データM中のデータMB(MB(1)〜MB(K)のいずれか)とを入力データとして上記非線形変換に用いたアルゴリズムと同一のアルゴリズムにより非線形変換し変換データHT(HT(1)〜HT(K)のいずれか)を取得する処理を、順次選択された連結データIVと連結データMについて逐次的に繰り返す。
このように実行することによって、非線形変換装置300の変換部310は、ハッシュ関数F2を用いて、イニシャル値IVPとメッセージMAを入力データとして非線形変換する処理とイニシャル値IVQとメッセージMBを入力データとして非線形変換する処理を並列に、同時に実行することができる。
【0027】
後処理.
変換部310のハッシュ関数F2によって変換された変換データであるHS(1)はレジスタ401の上位32ビット領域401Hに格納される。また、変換部310のハッシュ関数F2によって変換された変換データHT(1)はレジスタ401の下位32ビット領域401Lに格納される。HS(2)とHT(2)も同様にレジスタ402に格納される。他の変換データも同様に各レジスタに格納される。
次に、レジスタ401〜レジスタ410の各々上位32ビット部分401H〜410Hに格納されたHS(1)、HS(2)、・・・、HS(K)は、出力部370によってそれぞれ切り出され、連結する手段によって連結され、レジスタ400Hに出力される。
同様にして、レジスタ401〜レジスタ410の下位部分401L〜410Lに格納されたHT(1)、HT(2)、・・・、HT(K)は、それぞれ切り出され、それらを連結する手段によって連結され、レジスタ400Lに格納される。
【0028】
次に、非線形変換工程について、図2を用いて詳細に説明する。
第1非線形変換工程300a.
第1非線形変換工程300aでは、レジスタ101の上位32ビットに格納されたIVP(1)とレジスタ201の上位32ビットに格納されたMA(1)とは、変換部310のハッシュ関数F2を用いて非線形変換される。即ち、IVP(1)とMA(1)とからハッシュ関数F2に基づいてデータを非線形変換し、非線形変換後のデータとIVP(1)とを用いてXOR320が排他的論理和演算を行い、行った結果をHS(1)として出力する。出力されたHS(1)は、レジスタ401の上位32ビット領域401Hに格納される。
第1非線形変換工程300aでは、上記HS(1)を出力するための非線形変換処理と同時に、並行して以下に記すHT(1)を出力するための非線形変換処理が行われる。
すなわち、レジスタ101の下位32ビットに格納されたIVQ(1)とレジスタ201の下位32ビットに格納されたMB(1)とが、変換部310のハッシュ関数F2を用いて上記処理と同時に、非線形変換される。即ち、IVQ(1)とMB(1)とからハッシュ関数F2に基づいてデータを非線形変換し、非線形変換後のデータとIVQ(1)とを用いてXOR320が排他的論理和演算を行い、行った結果をHT(1)として出力する処理がHS(1)を出力する処理と並行して行われる。出力されたHT(1)は、レジスタ401の下位32ビット領域401Lに格納される。
上記で説明したデータの流れを図3に示す。図3に示すように、レジスタ201に格納されたMA(1)とレジスタ101に格納されたIVP(1)とから非線形変換がなされ、XOR320によって排他的論理和がとられ、変換されたでーたをレジスタ401にHS(1)として出力する処理と並行して、レジスタ201に格納されたMB(1)とレジスタ101に格納されたIVQ(1)とから非線形変換がなされ、XOR320によって排他的論理和がとられ、変換されたでーたをレジスタ401にHT(1)として出力する処理が行われる。
【0029】
第2非線形変換工程300b.
第2非線形変換工程300bでは、レジスタ102とレジスタ202の上位ビットの処理と下位ビットの処理が同時に、並行して行われる。ただし、いずれの処理も第1非線形変換工程300aの出力データを必要とするため、第1非線形変換工程300aを経た後でなければ実行できない。
第2非線形変換工程300bでは、レジスタ102とレジスタ202の上位ビットの処理に、入力値としてIVP(2)、MA(2)及びHS(1)を用いる。まず、変換部310は、IVP(2)とMA(2)とを入力データとしてハッシュ関数F2を用いて非線形変換を行う。XOR320は、変換した結果である変換値と第1非線形変換工程300aの出力結果であるHS(1)との排他的論理和演算を行い、その結果をS(2)として出力する。
第2非線形変換工程300bにおいても、上記HS(2)を出力するための非線形変換処理と同時に、並行してHT(2)を出力するための同一の非線形変換処理が行われる。
【0030】
第3非線形変換工程〜第K非線形変換工程.
第3非線形変換工程300c〜第K非線形変換工程300kについても、逐次的に上記第1非線形変換工程300a等と同様の演算を行い、出力データとして、HS(3)〜HS(K)及びHT(3)〜HT(K)をそれぞれ出力するための並行処理が行われる。
【0031】
このように、上位32ビットの演算処理と下位32ビットの演算処理は、独立に、かつ、並列に処理され、それぞれ独立に処理結果を得ることができる。このため、非線形変換処理は、従来の2倍の処理速度を実現することができる。すなわち、同一のアルゴリズムに基づく同一の命令に従って、メッセージMAとイニシャル値IVPとの処理とメッセージMBとイニシャル値IVQとの処理とを並列処理することで、単精度(32ビット長)と倍精度(64ビット長)の演算がすべて同じサイクル数で実行可能であれば、1メッセージ当たりの演算効率は2倍に向上し、高速化が実現できる。
【0032】
本実施の形態では、入力データであるイニシャル値IVP,イニシャル値IVQ,メッセージMA,メッセージMBをそれぞれ32ビット単位に分割した例を図1に示したが、各入力データを分割する単位は32ビットに限らず、8、16、64、128ビット等の値がとれる。それらに対応して図1に示すレジスタの格納可能ビット数は、倍制度のデータ長、即ち、16,32,128,256ビットとなる。このようにレジスタの格納可能ビット数は2xで(X≧1)であれば、どのようなビット数をとることもできる。
【0033】
以上のように、非線形変換装置300を用いることによって互いに関連しない複数のデータについて並列して同時に非線形変換処理を行うことができ、高速に変換データを出力することが可能となる。したがって、例えば、入力データであるメッセージに対し、そのメッセージが正当であることを認証するデジタル署名情報として変換データを用いる場合にも、高速な認証情報を生成できる。このようなデジタル署名においては、大量の通信メッセージに対し、高速に認証情報を生成する必要があるため、従来に比べ、本実施の形態のように並列して複数のデータを同時に非線形変換処理行うことで、非線形変換処理スピードを複数倍にできる効果は今後のネット通信市場において大きな意味をもつものである。
【0034】
実施の形態2.
実施の形態2では、実施の形態1に更に第3の入力データであるイニシャル値IVRとそれに対応する入力データであるメッセージMCとに対する処理が付加され、これらを並列処理することにより、非線形変換をより高速に処理することを実現する実施の形態である。
例えば、ペンティアム(ペンティアムは登録商標。以下、同様。)3では、64ビット長のレジスタを8個と32ビット長のレジスタを8個、CPU中に保持している。従って、64ビット長のレジスタを実施の形態1に示す処理にて利用し、32ビット長のレジスタを第3の入力データであるイニシャル値IVRとメッセージMCに対する処理に用いることが可能である。
【0035】
図4は、実施の形態1に更に第3のイニシャル値IVRとメッセージMCとに対する処理を付加した非線形変換装置300の概念図である。
IVRは、イニシャル値を示し、レジスタ500に格納され、IVR(1)からIVR(K)まで32ビット単位に分割される。
MCも同様にメッセージを示し、レジスタ600に格納され、MC(1)からMC(K)まで32ビット単位に分割される。
HUは、非線形変換後の出力データであるハッシュ値を示す。HU(1)からHU(K)は、連結されてハッシュ値HUとしてレジスタ700に格納される。
【0036】
図4に基づいて動作を説明する。
まず、IVR(1)は、実施の形態1の場合と同様に、レジスタ501に転送される。IVR(2)からIVR(K)も同様に、レジスタ502〜レジスタ510に転送される。ここで、レジスタ501〜レジスタ510は図示はしていないが記録部によって記憶可能なデバイスの一例である。
MC(1)も、実施の形態1の場合と同様に、レジスタ601に転送される。MC(2)からMC(K)も同様に、レジスタ602〜レジスタ610に転送される。なお、レジスタ601〜レジスタ610は記録部によって記憶可能なデバイスの一例である。
ここで、変換部310は、64ビット長のレジスタを使用して、実施の形態1と同様の非線形変換処理を行うために使用するアルゴリズムとしてF2というハッシュ関数を用い、32ビット長のレジスタを使用して、前記F2を使用した処理と並列に処理するためのアルゴリズムとしてF3というハッシュ関数を使用する。
【0037】
実施の形態1で説明したように、非線形変換装置300の変換部310は、レジスタ101Hに転送されたIVP(1)とレジスタ201Hに転送されたMA(1)とからハッシュ関数F2によって、非線形変換処理を行う。変換後、変換部310は、レジスタ401Hに出力データとしてHS(1)を出力する。上記処理と同時に、非線形変換装置300の変換部310は、レジスタ101Lに転送されたIVQ(1)とレジスタ201Lに転送されたMB(1)を入力データとして非線形変換処理を行い、レジスタ401LにHT(1)を出力する処理を並行に行う。
さらに、本実施の形態では、次の非線形変換処理が上記2つの処理と並行に行われる。即ち、レジスタ501に転送されたIVR(1)とレジスタ601に転送されたMC(1)を入力データとして非線形変換装置300の変換部がF3をハッシュ関数として使用して非線形変換処理を行い、出力データであるHU(1)を601に出力する。
【0038】
上記に説明した3つの非線形変換並行処理の詳細について図5を使用して説明する。図5は、本実施の形態の非線形変換装置300によって実行される3つの並行処理である非線形変換処理の工程を表した図である。
第1非線形変換工程300a.
第1非線形変換工程300aでは、以下に示す並列処理1と並列処理2と並列処理3が並列に処理される。
(1)並列処理1.
第1非線形変換工程300aでは、レジスタ101上位ビットに転送されたIVP(1)とレジスタ201の上位ビットに転送されたMA(1)を入力データとして、入力データは、ハッシュ関数F2により変換され、出力データとしてHS(1)がレジスタ401の上位32ビットに出力される。
(2)並列処理2.
この処理に並行して、第1非線形変換工程300aでは次の処理が実行される。即ち、レジスタ101下位ビットに転送されたIVQ(1)とレジスタ201の下位ビットに転送されたMB(1)を入力データとして、入力データは、ハッシュ関数F2により変換され、出力データとしてHT(1)がレジスタ401の下位32ビットに出力される。
(3)並列処理3.
更に、これらの処理と並行して、第1非線形変換工程300aでは次の処理が実行される。即ち、レジスタ501に転送されたIVR(1)とレジスタ601に転送されたMC(1)を入力データとして、入力データは、ハッシュ関数F3により変換され、出力データとしてHU(1)がレジスタ701に出力される。
【0039】
第1非線形変換工程300aでは、以上の3つの処理を並行に行うことができる。同様に、第2非線形変換工程300b、第3非線形変換工程300c〜第K非線形変換工程300kの各工程においても3つのイニシャル値と3つのメッセージを入力データとして、各アルゴリズムにより非線形変換処理を並行して行い、その結果、3つの出力データをハッシュ値として同時に出力することが可能となる。
【0040】
このように、64ビット長のレジスタと32ビット長のレジスタを同時に、並行して使用することにより、3つの変換処理を並行して行い、それぞれの命令を記述したコードを、ペンティアム3のようなCPU内部において命令レベルで並列実行可能なようにマージすることによって、3つの独立なデータブロックを並列に演算することができる。
このように、異なる種類のレジスタを組み合わせることによって複数の独立なデータを並列に演算することが可能となるため、並列できる処理数が多ければ多いほど高速に出力データを得ることができる。今後、大量の通信データに対し、デジタル署名や暗号化の必要性が増大することに鑑みれば、上記のように、より高速なデータ処理を実現することはこれから、ますます加速するIT社会に大きな貢献を果たすものである。
【0041】
また、以上の実施の形態では、例としてレジスタを使用したが、レジスタでなく、メモリを使用してもよい。この場合には、メモリ間で演算処理がなされる。また、レジスタとメモリを混在させて使用してもよい。
なお、変換部310は、ソフトウェアによって実現されていてもよいし、ハードウェアによって実現さていてもよい。
【0042】
実施の形態3.
実施の形態3では、単一の2Jビット長の加算命令が存在しない計算機において、Jビットずつの演算処理を行う場合に、データのアクセス方法によって演算の遅延を起こす場合がある従来の要因を回避し、高速な演算方法を得る方法について説明する。
図6は、レジスタ802に格納されたデータ(1)とメモリ800の任意の領域801に格納されたの値との加算演算を示す図である。
【0043】
データの加算処理は、次の手順によって行われる。
まず、レジスタ802に格納されたデータ(1)の上位Jビットは、レジスタ804にデータH(1)として転送され、レジスタ802に格納されたデータ(1)の下位Jビットは、レジスタ803にデータL(1)として転送される(S1)。
次に、レジスタ803に転送されたデータL(1)とメモリ800の任意の領域801の下位Jビットに格納されたデータL(2)とが、加算器815によって加算される。加算された結果は、レジスタ803に加算データLとして格納される(S2)。このとき、桁上がりが発生した場合には、桁上がりをレジスタ810にキャリーとして格納する。
次に、レジスタ804の上位Jビットに格納されたデータH(1)と領域801の上位Jビットに格納されたデータH(2)とキャリーが存在する場合にはレジスタ810に格納されたキャリーとが、加算器815によって加算され、加算された結果をレジスタ804に加算データHとして格納する(S3)。
レジスタ803とレジスタ804に格納された各データは、それぞれ、レジスタ805とレジスタ806の下位Jビットに転送される(S4)。
その後、レジスタ806に格納された加算データHを上位ビット、レジスタ805に転送された加算データLを下位ビットとして連結する。連結後、2Jビット長となった加算データをレジスタ807へ転送する(S5)。
その後、レジスタ807をメモリ800の領域801へ転送する。
【0044】
このように、単一の2Jビット長の加算命令が存在しない場合に、従来方法のようなメモリ書き込みと読み出しを行わないため、演算の遅延を起こすような要因を排除して、高速な演算を可能にすることができる。従って、従来に比して全体の処理のスピードを向上させることができる。
【0045】
【発明の効果】
本発明によれば、非線形変換処理を高速に行うことができる。特に、非線形変換処理をソフトウェア(プログラム)により行う場合には、サイクル数を減少させることができ、高速処理を行うことができる。
【0046】
また、本発明によれば、演算の遅延を起こすような要因を排除して、高速な演算を可能にすることができる。
【図面の簡単な説明】
【図1】 実施の形態1における非線形変換装置の構成図。
【図2】 実施の形態1における非線形変換装置の動作図。
【図3】 データ間の加算処理動作を示す図。
【図4】 実施の形態2における非線形変換装置の構成図。
【図5】 実施の形態2における非線形変換装置の動作図。
【図6】 実施の形態3の加算方法を示す図。
【図7】 従来の非線形変換処理図。
【図8】 従来の非線形変換処理工程図。
【図9】 従来のメモリとレジスタとの間の加算処理の一例を示す図。
【図10】 従来の加算方法動作を示す図。
【図11】 従来の加算方法動作を示すフローチャート。
【符号の説明】
100H,100L,500,1000 イニシャル値を格納したレジスタ、200H,200L,600,1200 メッセージを格納したレジスタ、300,1300 非線形変換装置、300a,1300a 第1非線形変換工程、300b,1300b 第2非線形変換工程、300c,1300c 第3非線形変換工程、300k,1300k 第K非線形変換工程、310,1310 変換部、320,1320 XOR、350 入力部I、360 入力部M、370 出力部、400H,400L,700,1100 ハッシュ値を格納したレジスタ、800 メモリ、101〜110,201〜210,401〜410,501〜510,601〜610,1001〜1010,1101〜1110,1201〜1210,802〜807,810 レジスタ、815 加算器。
Claims (9)
- データを記憶領域に記憶する記憶部と、
第1のイニシャル値から分割された複数のデータIVPの各々と第2のイニシャル値から分割された複数のデータIVQの各々とが分割の順序に従って連結された複数の連結データIVを上記記憶部に入力し、第1のメッセージから分割された複数のデータMAの各々と第2のメッセージから分割された複数のデータMBの各々とが分割の順序に従って連結された複数の連結データMを上記記憶部に入力する入力部と、
上記入力部によって上記記憶部に入力された複数の連結データIVと複数の連結データMとから1の連結データIVと1の連結データMとを順次選択し、選択した連結データIV中のデータIVPと連結データM中のデータMAとを入力データとして所定のアルゴリズムにより非線形変換し変換データHSを取得する処理とともに、並行して、選択した連結データIV中のデータIVQと連結データM中のデータMBとを入力データとして上記非線形変換に用いたアルゴリズムと同一のアルゴリズムにより非線形変換し変換データHTを取得する処理を、順次選択された連結データIVと連結データMについて逐次的に繰り返す変換部と
を備えることを特徴とする非線形変換装置。 - 上記記憶部は、複数の2Jビット領域を有する連結データIV用の記憶領域と複数の2Jビット領域を有する連結データM用の記憶領域とを有し、
上記入力部は、Jビット長である各データIVPとJビット長である各データIVQとを上記連結データIV用の記憶領域の有する2Jビット領域の上位Jビット領域と下位Jビット領域に各々入力し、Jビット長である各データMAとJビット長である各データMBとを上記連結データM用の記憶領域の有する2Jビット領域の上位Jビット領域と下位Jビット領域に各々入力する
ことを特徴とする請求項1に記載された非線形変換装置。 - 上記記憶部は、2Jビット長のレジスタと2Jビット長のメモリとの少なくともいずれかより構成されることを特徴とする請求項1または2に記載の非線形変換装置。
- 上記入力部は、複数のデータIVRと複数のデータMCとを連結させずに上記記憶部に入力し、
上記変換部は、非線形変換により変換データHSと変換データHTとを並行して取得する上記2つの処理に並行して、上記入力部によって上記記憶部に入力された複数のデータIVRと複数のデータMCとから1のデータIVRとデータMCとを順次選択し、選択したデータIVRとデータMCとを任意のアルゴリズムにより非線形変換し変換データHUを取得する処理を順次選択されたデータIVRとデータMCについて逐次的に繰り返すことを特徴とする請求項1に記載された非線形変換装置。 - 上記記憶部は、レジスタ長の異なる複数のレジスタあるいは記憶容量の異なる複数のメモリから構成されることを特徴とする請求項4に記載された非線形変換装置。
- 上記変換部は、非線形変換するためのアルゴリズムに平文を暗号化するためのブロック暗号あるいハッシュ値を求めるためのハッシュ関数を使用することを特徴とする請求項1に記載された非線形変換装置。
- 上記非線形変換装置は、さらに、上記変換部が取得した変換データを連結して上記記憶部に出力する出力部を備えることを特徴とする請求項1に記載された非線形変換装置。
- 記憶部が、データを記憶領域に記憶し、
入力部が、第1のイニシャル値から分割された複数のデータIVPの各々と第2のイニシャル値から分割された複数のデータIVQの各々とが分割の順序に従って連結された複数の連結データIVを上記記憶部に入力し、第1のメッセージから分割された複数のデータMAの各々と第2のメッセージから分割された複数のデータMBの各々とが分割の順序に従って連結された複数の連結データMを上記記憶部に入力し、
変換部が、上記入力部によって上記記憶部に入力された複数の連結データIVと複数の連結データMとから1の連結データIVと1の連結データMとを順次選択し、選択した連結データIV中のデータIVPと連結データM中のデータMAとを入力データとして所定のアルゴリズムにより非線形変換し変換データHSを取得する処理とともに、並行して、選択した連結データIV中のデータIVQと連結データM中のデータMBとを入力データとして上記非線形変換に用いたアルゴリズムと同一のアルゴリズムにより非線形変換し変換データHTを取得する処理を、順次選択された連結データIVと連結データMについて逐次的に繰り返す
ことを特徴とする非線形変換装置の非線形変換方法。 - 記憶部が、データを記憶領域に記憶する処理と、
入力部が、第1のイニシャル値から分割された複数のデータIVPの各々と第2のイニシャル値から分割された複数のデータIVQの各々とが分割の順序に従って連結された複数の連結データIVを上記記憶部に入力し、第1のメッセージから分割された複数のデータMAの各々と第2のメッセージから分割された複数のデータMBの各々とが分割の順序に従って連結された複数の連結データMを上記記憶部に入力する処理と、
変換部が、上記入力部によって上記記憶部に入力された複数の連結データIVと複数の連結データMとから1の連結データIVと1の連結データMとを順次選択し、選択した連結データIV中のデータIVPと連結データM中のデータMAとを入力データとして所定のアルゴリズムにより非線形変換し変換データHSを取得する処理とともに、並行して、選択した連結データIV中のデータIVQと連結データM中のデータMBとを入力データとして上記非線形変換に用いたアルゴリズムと同一のアルゴリズムにより非線形変換し変換データHTを取得する処理を、順次選択された連結データIVと連結データMについて逐次的に繰り返す処理とをコンピュータに実行させることを特徴とする非線形変換プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002016285A JP4004805B2 (ja) | 2002-01-25 | 2002-01-25 | 非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002016285A JP4004805B2 (ja) | 2002-01-25 | 2002-01-25 | 非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216025A JP2003216025A (ja) | 2003-07-30 |
JP4004805B2 true JP4004805B2 (ja) | 2007-11-07 |
Family
ID=27652398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002016285A Expired - Fee Related JP4004805B2 (ja) | 2002-01-25 | 2002-01-25 | 非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4004805B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9209968B2 (en) | 2012-03-02 | 2015-12-08 | Sony Corporation | Information processing apparatus, information processing method, and program |
JP5835458B2 (ja) | 2012-03-02 | 2015-12-24 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム |
EP2822215A1 (en) * | 2012-03-02 | 2015-01-07 | Sony Corporation | Information processing device, information processing method, and programme |
-
2002
- 2002-01-25 JP JP2002016285A patent/JP4004805B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003216025A (ja) | 2003-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6298136B1 (en) | Cryptographic method and apparatus for non-linearly merging a data block and a key | |
JP5000365B2 (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
KR101324351B1 (ko) | 암호 기반 메시지 인증 코드를 생성하는 방법 | |
JPH08248879A (ja) | 2つの鍵を使用して暗号化する方法および装置 | |
JP2001324924A (ja) | 暗号化装置及び暗号化方法、復号装置及び復号方法並びに演算装置 | |
JPWO2009075337A1 (ja) | 暗号化方法及び復号化方法、装置並びにプログラム | |
CN110880967B (zh) | 采用分组对称密钥算法对多消息并行加解密方法 | |
CN108833117B (zh) | 一种私钥存储和读取方法、装置及硬件设备 | |
KR101942030B1 (ko) | 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법 | |
JP2009175197A (ja) | 暗号装置、復号装置、鍵生成装置及びプログラム | |
US20070277043A1 (en) | Methods for Generating Identification Values for Identifying Electronic Messages | |
JP2000295212A (ja) | 暗号データの復号化処理方法および装置 | |
JP5480828B2 (ja) | 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム | |
JP4004805B2 (ja) | 非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム | |
US7181009B1 (en) | Generating message digests according to multiple hashing procedures | |
CN108270565A (zh) | 一种数据混合加密方法 | |
JP2825205B2 (ja) | 暗号装置 | |
US20030198342A1 (en) | System and method for implementing a hash algorithm | |
JP2000075785A (ja) | 高速暗号処理回路および処理方法 | |
JP2004004603A (ja) | 拡大鍵生成装置、暗号化装置および暗号化システム | |
JP5354914B2 (ja) | 暗号処理装置及び復号処理装置及びプログラム | |
Thirer | A pipelined FPGA implementation of an encryption algorithm based on genetic algorithm | |
Kambali et al. | Secure Cloud Storage Using Hybrid Cryptography | |
KR100546777B1 (ko) | Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 | |
CN116915405B (zh) | 基于隐私保护的数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040518 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041025 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070724 |
|
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: 20070821 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070822 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4004805 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100831 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110831 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110831 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120831 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120831 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130831 Year of fee payment: 6 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |