JP2002215386A - 剰余演算装置、剰余演算方法、および、べき乗剰余演算方法 - Google Patents
剰余演算装置、剰余演算方法、および、べき乗剰余演算方法Info
- Publication number
- JP2002215386A JP2002215386A JP2001011300A JP2001011300A JP2002215386A JP 2002215386 A JP2002215386 A JP 2002215386A JP 2001011300 A JP2001011300 A JP 2001011300A JP 2001011300 A JP2001011300 A JP 2001011300A JP 2002215386 A JP2002215386 A JP 2002215386A
- Authority
- JP
- Japan
- Prior art keywords
- basis
- processing
- sum
- remainder
- product
- 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.)
- Granted
Links
Abstract
処理を実現するための剰余演算装置を提供する。 【解決手段】剰余演算機能を有する積和回路[1]と積和
回路[2]で構成される積和ユニットと、剰余演算に用い
られる補正項を計算する補正項計算ユニット[1]と補正
項計算ユニット[2]とを備えた剰余演算装置において、
前記積和回路[1]と前記補正項計算ユニット[1]は基底変
換[1]を処理し、前記積和回路[2]と前記補正項計算ユニ
ット[2]は基底変換[2]を処理することで、基底変換の二
重処理を行なう。
Description
き大きな整数の演算を並列処理により高速に計算する剰
余演算処理装置及び方法に関する。
法として剰余演算系(Modular ArithmeticまたはResidue
Number Systems)が知られている。剰余演算系(以下RN
Sと書く)は、互いに素な比較的小さな整数の組[a1,
a2, , an]を用意し、これらの整数で割った余りの組と
して大きな整数を表現する方法である。以降、この整数
の組をRNSの基底、要素数nを基底サイズと称する。例え
ば、整数xを基底[a1, a2,, an]で表現すると[x1, x2, ,
xn]となる。ここでxi = x mod ai (i = 1, , n)として
いる。この時、基底要素の積をA (= a1a2…an)として、
xがx<Aを満たす正整数であれば、xと[x1, x2, , xn]は
一対一対応となり、xは基底[a1, a2, , an]で一意に表
現される。なおRNSは、加算・減算・乗算が基底ごとに
独立に実行可能であるという特徴を持っている。
装法として、Montgomeryによって提案された剰余付き乗
算(P. L. Montgomery, Mathematics of Computation,
Vol.44, No. 170, pp. 519521, April, 1985)を繰返し
実行する方法がある。このモンゴメリ乗算は剰余付き乗
算を加算と乗算で代替えして実行する手法であるため、
加減乗算の並列処理を可能にするRNSと組み合わせるこ
とで、べき乗剰余算の高速並列処理の実現が期待でき
る。
C. Posch and R. Posch, IEEE Transaction on Parall
el and Distributed Systems, Vol. 6, No. 5, May 199
5, pp.449454)や、先発明の特願2000-334978による方法
が提案されている。
リ乗算と略称する)では、基底変換と呼ぶ処理が2回実
行される。ここで基底変換とは、RNSのある基底で表さ
れた数をその基底と互いに素な別の基底で表現し直すこ
とをいう。モンゴメリ乗算では基底変換以外の処理も行
なうが、基底変換以外の処理は演算量が少ないため、基
底変換の処理時間によってモンゴメリ乗算の処理性能が
決まる。さらに、モンゴメリ乗算の繰返し処理によって
べき乗剰余算が実現されるため、基底変換の処理時間が
べき乗剰余算の処理性能も決めることになる。このた
め、基底変換の処理の効率化はべき乗剰余算の処理性能
向上に直結するものである。
効率化については、既に様々な取り組みがなされてい
る。しかし、モンゴメリ乗算で実行する2回の基底変換
同士を並列処理するという試みは行なわれていない。こ
れは、従来法のモンゴメリ乗算のアルゴリズムでは、1
回目の基底変換で得られる結果を用いて2回目の基底変
換を開始する必要があるために、2つの基底変換は逐次
処理されねばならず、並列処理が不可能になっているこ
とによる。
ることで処理性能の向上を図るものであるが、最も高い
処理性能が得られる並列ユニット数uは、RNSの基底サイ
ズをnとしてu=nであり、nが並列度に関する上限値とな
る。すなわち従来法は、ユニット数が1≦u≦nの範囲内
で処理性能の向上が得られるものであり、nを超えるユ
ニット数を用意してもu=nでの処理性能を上回ることは
できない。
変換の並列処理(二重処理)を可能とするであることを
特徴とするRNSモンゴメリ乗算の処理方式を提供するこ
とを目的とする。
算系で表現し、これを演算処理する剰余演算装置であっ
て、剰余演算機能を有する第1の積和回路と第2の積和回
路とを具備する積和演算ユニットと、前記第1の積和回
路の剰余演算に用いられる補正項を求め、これを前記第
1の積和回路へ供給する第1の補正項計算ユニットと、
前記第2の積和回路の剰余演算に用いられる補正項を求
め、これを前記第2の積和回路へ供給する第2の補正項
計算ユニットとを備えた。
数個備えているようにしてもよい。
積和回路とに接続される記憶手段を更に備えているよう
にしてもよい。
剰余演算系の第1中間変数を基底変換し、第1の基底と
異なる第2の基底に基づく剰余演算系の中間変数を得る
第1基底変換処理と、該第1の基底で表現された剰余演
算系の、第1中間変数とは異なる第2中間変数を基底変
換し、該第2の基底に基づく剰余演算系の中間変数を得
る第2基底変換処理とを備えたモンゴメリ乗算を、基底
変換を処理可能な第1の積和演算手段と第2の積和演算
手段とを備えた剰余演算装置を利用して、演算処理させ
る剰余演算方法であって、前記第1基底変換処理を前記
第1の積和演算手段にて、前記第2基底変換処理を前記
第2の積和演算手段にて並列実行させるよう制御するよ
うにした。
剰余演算系の第1中間変数を基底変換し、第1の基底と
異なる第2の基底に基づく剰余演算系の中間変数を得る
第1基底変換処理と、該第1の基底で表現された剰余演
算系の、第1中間変数とは異なる第2中間変数を基底変
換し、該第2の基底に基づく剰余演算系の中間変数を得
る第2基底変換処理とを備えたモンゴメリ乗算を、基底
変換を処理可能な第1の積和演算手段と第2の積和演算
手段とを備えた剰余演算装置を利用して、演算処理させ
る剰余演算方法であって、第1の基底または第2の基底
のうちの何れか一方の基底によって表現される値を入力
するステップと、k回目の第1基底変換処理と(k―
1)回目の第2基底変換処理とを並列実行するよう制御
するステップと、前記第1の基底または前記第2の基底
のうちの他方の基底によって表現される値を出力するス
テップとを備えた。
Bの剰余演算系で表現し、該基底Aに基づいて求められ
た値を該基底Bに基づいて表される値へ基底変換を行う
第1基底変換処理と、該基底Bに基づいて求められた値
を該基底Aに基づいて表される値へ基底変換を行う第2
基底変換処理と、を含む1回の剰余付き乗算を繰り返す
ことにより、演算結果を得るべき乗剰余演算方法であっ
て、k回目の第1基底変換処理と(k+1)回目の第1
基底変換処理とを並列実行するよう制御する第1ステッ
プと、(k+1)回目の第2基底変換処理と(k+2)
回目の第2基底変換処理とを並列実行するよう制御する
第2ステップと、を繰り返し実行してべき乗剰余演算を
行うようにした。
乗算の繰り返し処理で実装する場合のループ処理内の、
最初のモンゴメリ乗算に入力される第3の中間変数の係
数が各ループ処理で等しくなるように、該ループ処理内
の最後のモンゴメリ乗算において中間変数と掛け合わせ
る定数の係数を設定するようにした。
ゴメリ乗算1回当たりの処理時間を約1/2に短縮できる
ようになった。
る範囲内に対しても処理性能の向上を実現する。そし
て、RNSモンゴメリ乗算を適用することで、RSA暗号の処
理等に用いられる高速な剰余演算装置、剰余演算方法お
よび、べき剰余演算方法を実現することができるように
なった。
て、図面を参照しつつ詳細に説明する。 (第1実施形態)RSA暗号で用いるべき乗剰余算 C = Me
mod N を、モンゴメリ乗算を繰返し実行して実現する
方法が知られている。このモンゴメリ乗算(MM)は、整数
x, y, Nの入力に対し、w = xyB1 mod N ないし xyB1 m
od N + N を出力するアルゴリズムであり、次の5つの
ステップで与えられる。ここでBはNより大きく、Nと互
いに素な任意の整数である。 MM (1)s ← x・y (2)t ← [s・(N)1] mod B (3)u ← t・N (4)v ← s + u (5)w ← v/B このモンゴメリ乗算を剰余演算系(RNS)表現を用いて実
行する方法として、Poschらによる次の処理が提案され
ている。 MM[A,B→A,B] (1)sB ← xB・yB (1')sA ← xA・yA (2)tB ← [sB・(NB)1] mod B (3)基底変換BT1: tB ⇒ tA (4)uA ← tA・NA (5)vA ← sA + uA (6)wA ← vA・BA 1 (7)基底変換BT2: wA ⇒ wB 添え字AないしBをつけた記号は、それぞれ剰余演算系の
基底A=[a1, a2, , an]ないし基底B=[b1, b2, , bm]によ
って表現された数を表す。例えばxAは、基底Aの各要素
でxを割った余りの組[x1, x2, , xn]、ここでxi = x mo
d ai (i = 1, ,n)、を表す。基底Aのサイズnと基底Bの
サイズmは一般には異なるが、基底Aを処理する演算ユニ
ットと基底Bを処理する演算ユニットとの共有が可能なn
=mの場合について本実施例では説明を行なう。次に、基
底変換とはある基底で表された数をその基底と互いに素
な別の基底で表現しなおすことをいい、例えばwA ⇒ wB
は、基底Aで表されたwAを用いて基底Bで表されるwBを求
めることを意味する。なお、RNSモンゴメリ乗算の必要
条件はN<A, N<Bであり、この条件からxとyは基底Aの
み、あるいは、基底Bのみで一意に表現できる数になっ
ている。しかし、例えば処理の過程で扱うsはxとyとの
積であり、値の範囲が0≦s<N2であるため、sを一意に
表現するには基底としてA・Bを用いる必要がある。以
下、本実施例ではRNSモンゴメリ乗算を簡略してモンゴ
メリ乗算と呼ぶ。
算において、(3)と(7)の基底変換がその処理時間の大半
を占めるため、ステップ(3)と(7)の効率的処理を行なう
ことで、モンゴメリ乗算の高速化、ひいては、べき乗剰
余算の高速化が期待できる。以下、その方法について考
察する。
入力に対してwA, wBが出力される。繰返し処理を行なう
場合は、得られたwAおよびwBをそれぞれ入力データの
xA, yAおよびxB, yBとして次のモンゴメリ乗算を実行す
る(正確には、二乗を行なう場合はxA, xB ← wA, wBお
よびyA, yB ← wA, wBとし、定数fとの積を求める場合
は、例えばxA, xB ← wA, wBおよびyA, yB ← fA, fBと
する)。すなわち従来法でのモンゴメリ乗算では、2種
類の基底A, Bに関する入力データを用意した後に処理を
開始し、処理の終了時には2種類の基底A, Bに関する出
力データが得られていることになる。
は特に基底変換について処理の流れを図示したものであ
る。今、モンゴメリ乗算をK回繰り返し実行するとし
て、k回目(k=1, ..., K)の処理に着目する。モンゴメリ
乗算1回あたり基底変換を2回行うため、もしも基底変
換BT1(k)とBT2(k)とを並列処理できるならば、モンゴメ
リ乗算の処理時間の短縮が可能になる。しかし、基底変
換BT2(k)の実行には基底変換BT1(k)の結果であるtAが必
要になるため、BT1(k)とBT2(k)は逐次的に実行されねば
ならず、並列処理は不可能であることが分かる。すなわ
ち、従来法によるモンゴメリ乗算は基底変換の並列処理
(二重処理)ができないアルゴリズムになっている。
(k+1)という組み合わせで二重処理を実現することを考
える。まず説明を分かり易くするため、図3の従来法に
よる繰り返し手順を変形した仮想的な手順を想定する。
図4に示したこの仮想的な手順では、モンゴメリ乗算MM
[A,B→A,B]とA, Bを入れ替えた関係にあるMM[B,A→B,A]
を導入し、MM[A,B→A,B]とMM[B,A→B,A]とを交互に実行
することを想定する。
k+2p+1回目でMM[B,A→B,A]を実行する(pは任意の整数
である)。ここで、MM[A,B→A,B]とMM[B,A→B,A]はA, B
を入れ替えただけであるため、図3と図4は処理の手順
やステップ数は全く同じものであることに留意された
い。図4において基底変換BT2(k)とBT1(k+1)とを比較し
た場合、どちらの基底変換も実行に必要な変数はxA, yA
(すなわちwA)であることが分かる。これはBT2(k)とBT
1(k+1)との並列処理が可能であることを意味するもので
ある。そのため本発明では、BT2(k)をk回目のモンゴメ
リ乗算ではなくk+1回目のモンゴメリ乗算において実行
することで、基底変換BT2(k)とBT1(k+1)との二重処理を
実現するアルゴリズムを以下のように提案する。
乗算を考慮する。 MM[B→A] (1)sB ← xB・yB (2)tB ← [sB・(NB)1] mod B (3)基底変換BT1: tB ⇒ tA , 基底変換BT2: xB ,
yB ⇒ xA , yA (4)uA ← tA・NA (4')sA ← xA・yA (5)vA ← sA + uA (6)wA ← vA・BA 1 MM[A→B] (1)sA ← xA・yA (2)tA ← [sA・(NA)1] mod A (3)基底変換BT1: tA ⇒ tB , 基底変換BT2: xA ,
yA ⇒ xB , yB (4)uB ← tB・NB (4')sB ← xB・yB (5)vB ← sB + uB (6)wB ← vB・AB 1 上記において、MM[B→A]とMM[A→B]はA, Bを入れ替えた
関係にあり、本発明はこのMM[B→A]とMM[A→B]を交互に
実行することで繰返し処理を実現することを特徴とす
る。
理を、基底変換の取扱いが分かるように図3および図4
に対比させて示したものが図5である。本図では、繰り
返し処理のk+2p回目でMM[B→A]を、k+2p+1回目でMM[A→
B]を実行するとしている。図5を図4と比較した場合、
基底変換BT2(k)がk回目の処理からk+1回目の処理に移動
し、BT1(k+1)と並列に処理される。そのため、モンゴメ
リ乗算1回当たりの基底変換に要する処理時間が2回分
から1回分に減り、またモンゴメリ乗算の処理時間の大
半が基底変換で費やされることから、約1/2の処理時間
の短縮を見込むことができる。
⇒ wBと、図5でのBT2(k): xA, yA⇒ xB, yBとは全く同
じ処理であることを補足説明しておく。図5では処理の
流れを分かり易くするためにx, yという表記を用いた
が、k+1回目の処理でのx, yとはk回目の処理でのwのこ
とであり、すなわち図5のBT2(k)はwA ⇒ wBを行うもの
である。同様に、上記したMM[B→A]とMM[A→B]のステッ
プ(3)での基底変換BT2に関しても、BT2: xξ, yξ ⇒ x
ζ, yζ という表記は、従来法でのステップ(7)のBT2:
wξ ⇒ wζと全く同じ処理を意味している。ここでξ,
ζはAまたはBを表す。
いた基底変換BT1とBT2を並列処理していることを明示す
るために、BT1とBT2を横に書き並べて表した。図3〜図
5のモンゴメリ乗算処理を表すボックスは、縦方向が処
理時間に、横方向がハードウェアの規模に対応すると考
えられたい。本発明は、基底変換の二重処理を実現する
ために、回路規模を2倍にして約1/2の処理時間短縮を
図るものであるが、これは通常の並列演算ユニットの増
設による高速化のように自明な技術ではなく、これまで
説明してきたように、モンゴメリ乗算の手順を変更する
ことで初めて可能になったものである。
ついて説明する。図5から、BT1(k+ 1)とBT2(k)との並列
処理が実現されたことにともない、MM[A→B]では入力デ
ータとして基底A, B両方に関するRNS表現は必要なく、x
A, yAのみを入力すればよいことが分かる。これは、xB,
yBがMM[A→B]の処理中に基底変換BT2によってxA, y Aか
ら求められることによっている。一方、出力データとし
ては、入力データと逆の表現であるwBが得られる。すな
わちMM[A→B]およびMM[B→A]は、入力データと出力デー
タの表現がAとBに関して逆になるという性質を持つ。こ
の性質のため、MM[A→B]のみ、あるいはMM[B→A]のみで
繰返し処理を行なおうとした場合、出力データを次の入
力データとして用いる単純な繰返し処理ができないこと
になる。この不都合を回避する方法が、本発明によるア
ルゴリズムの特徴であるMM[B→A]とMM[A→B]とを交互に
実行する繰返し処理である。
処理ステップを具体的な処理手順とともに説明する。図
5に示したようにk回目の処理でMM[B→A]を実行する場
合、k1回目のMM[A→B]が終了した時点でwBが得られてお
り、これがk回目のMM[B→A]の入力データxB, yBとな
る。
入力データxB, yBを用いて、ステップ(1)と(2)からtBを
得る。ステップ(3)で基底変換BT1によってtBからtAを求
める際、同時にxB, yBから同じく基底変換BT2にてxA, y
Aを求める。このステップ(3)で得られたtAおよびxA, yA
を用いて、続くステップ(4)でuAを、ステップ(4')でs A
を求める。そしてステップ(5)と(6)によってuA, sAから
wAを得る。従来法のMM[A,B→A,B]との違いは、ステップ
(7)の基底変換BT2(正確には、1つ前のモンゴメリ乗算
での基底変換BT2)を、ステップ(3)において基底変換BT
1と並列に処理する点である。また従来法ではステップ
(1')で計算していたsAをステップ(4')にて求めている。
上述したMM[B→A]においてAとBを完全に入れ替えた処理
を行なう。得られた出力データwBを入力データxB, yBと
して、k+2回目のMM[B→A]に接続することができる。
説明を行なう。上述した処理手順では、説明を分かり易
くするために基底変換BT2をステップ(3)において基底変
換BT1と並列に処理するとしているが、BT2の処理は必ず
しもBT1と同時に行なう必要はない。BT2は、BT2の結果
を用いて計算されるsAないしsB(MM[B→A]の場合はsA、
MM[A→B]の場合はsB)を使用するステップ(5)までに処
理が完了されればよい。すなわち、基底変換BT2は、ス
テップ(1)から(4)を実行中にそれらと並列に処理すれば
よい。同様の理由で、ステップ(4')のsAないしsBの計算
も、BT2の後、ステップ(5)の前までに実行すればよい。
ただし基底変換BT2に関しては、基底変換BT1と同時に実
行する場合に、基底変換を二重処理するための制御部で
の処理の増加分を最小限に抑えられるという利点があ
る。
→A]とMM[A→B]を交互に実行することで、 繰返し 処理 入力データ 出力データ : k回目 MM[B→A] xB, yB wA k+1回目 MM[A→B] xA, yA wB k+2回目 MM[B→A] xB, yB wA : という繰返し処理が実現される。比較のために従来法に
ついて同様な表を書くと次のようになる。 繰返し 処理 入力データ 出力データ : k回目 MM[A,B→A,B] xA, yA, xB, yB wA, wB k+1回目 MM[A,B→A,B] xA, yA, xB, yB wA, wB k+2回目 MM[A,B→A,B] xA, yA, xB, yB wA, wB : 両者を比較すると、本発明による方法では入出力におい
て1種類の基底に関するデータしか扱わないため、計算
上(特にRNS表現として)問題があるように一見される
かもしれない。しかし、前述したようにRNSモンゴメリ
乗算での必要条件N<A, N<Bがあるために、xやy(すなわ
ちw)は基底Aのみあるいは基底Bのみで一意に表現され
る数となっており、どちらか1種類の基底に関するデー
タが得られていれば問題ないことが保証されている。ま
た本発明は従来法の処理の順番を入れ替えているだけで
あり、処理の途中においては従来法と同様にA, B両方の
基底に関する計算を行なっているため、その他の中間変
数に関しても計算上の問題は生じない。
し処理を実現するためのハードウェア構成について説明
する。まず図2に従来法での剰余演算装置のハードウェ
ア構成を示す。RNS表現の基底要素ごとの演算を並列処
理するための同一構成のユニットu個と、基底変換での
補正項の計算を行なう補正項計算ユニット210から構成
される。
路201、RAM221、ROM231で構成される。補正項計算ユニ
ット210に関しては、ビット選択部やROM等を要する場
合、それらも含めて補正項計算ユニットとしている。こ
こで、並列ユニット数uは基底サイズnと1≦u≦nという
関係にあり、ユニット数uがnの約数である場合に、効率
的な並列処理が可能である。uがnより小さい場合は1つ
のユニットが2個以上の基底要素に関する演算を担うこ
とになるため、処理時間はuに反比例して増減する。し
かし、並列度を最も高くした場合がu=nであり、従来法
ではユニット数をnより増やしても処理速度の向上は得
られない。
ウェア構成を示す。剰余演算機能付き積和回路[1]101
1、積和回路[2]1012、RAM1210、ROM1310で構成されるu
個のユニットと、補正項計算ユニット[1]1101と補正項
計算ユニット[2]1102から構成される。剰余演算装置の
全体構成、および、積和回路[1]1011、RAM1210、ROM131
0、補正項計算ユニット[1]1101の構成としては、先発明
の特願2000-334978での構成、および先発明での変形
例、あるいは、先発明での従来法の構成を適用すること
ができる。さらに、本発明に基づいてべき乗剰余演算装
置を構成する場合も、先発明での構成を適用することが
できる。
装置に積和回路[2]1012および補正項計算ユニット[2]11
02が追加された点であり、二重処理を行なう基底変換の
一方の処理をこれらによって実行する。すなわち、例え
ば基底変換BT1を積和回路[1]と補正項計算ユニット[1]
で、基底変換BT2を積和回路[2]と補正項計算ユニット
[2]で行なうことで、基底変換BT1とBT2の並列処理を実
現する。そのために、積和回路[2]1012および補正項計
算ユニット[2]1102は、それぞれ積和回路[1]1011および
補正項計算ユニット[1]1101と同じ構成を有する。そし
て、補正項計算ユニット[1]1101は積和回路[1]と接続さ
れ、補正項計算ユニット[2]1102は積和回路[2]と接続さ
れる。
210とROM1310を共有する。 本発明では、積和回路[2]を
増設して基底変換の二重処理を行なうために、RAMない
しROMのサイズを従来法の2倍にする必要はない。積和
回路[1]1011と積和回路[2]1012間でのデータ転送に関し
ては、バスで相互接続してもよいし、RAM1210を介して
行なったのでもよい。積和回路[1]1011と積和回路[2]10
12による構成ユニットを便宜的に積和ユニット1010と称
する。
回路[1]と積和回路[2]にどう分担させるかに応じて、積
和回路[2]の構成を変えることができるためそれについ
て補足しておく。例えば、積和回路[1]で基底変換BT1と
基底変換以外の全処理を行なうとし、積和回路[2]では
基底変換BT2のみを行うとした場合は、積和回路[2]1012
については、剰余演算機能付き積和回路として基本的な
構成要素である乗算器、加算器、剰余演算部、レジス
タ、および、スイッチを有していれば、積和回路[1]101
1と全く同じ構成にする必要はなく、よりシンプルな構
成にすることも可能である。
る剰余演算装置と比較した場合、両者で並列ユニット数
が同じであれば、基底変換の二重処理を行なう本発明は
約2倍の処理性能を有することになる。図1の並列度を
uではなく2uであると見なすならば、本発明による剰余
演算装置はユニット数が2nに相当する処理性能まで高速
化が可能であるといえる。これは、従来法においてnで
あった並列度の上限を2nまで引き上げたことに相当す
る。
算を交互に実行してべき乗剰余算を行なう手順につい
て、図7のフローチャートに従って説明する。本フロー
チャートは、入力されたRNS表現の値xをe乗し、Nで割っ
た余りを求める処理を表す。その際、Nは既知と仮定
し、Nおよび後述する定数f, g, hのRNS表現を求めるな
どの処理については事前に計算してあるものとして図7
には示していない。なお、Nや定数を外部入力とし、そ
れらのRNS表現を求めるなどの処理をその都度行なうよ
うに構成しても良い。
略記する)とべき指数eが入力されると、まずxと定数f
とをモンゴメリ乗算MM[B→A]によって掛け合わすことで
x'を得る。ここでf = (AB) mod Nとしている。MM[B→A]
への入出力データは、入力データがxのB表現、出力デー
タがx'の基底Aに関するRNS表現(以下、A表現と略記)
である。その際、定数fについてはA, B両方の基底に関
する値(fA, fB)が入力データとして必要になる。これ
は、MM[B→A]の処理中に基底変換BT2によってA表現から
B表現に変換されるのは変数xのみであるため、xと定数
とを掛け合わせる場合、定数についてはA, B両方の基底
に関する値を事前に計算しておく必要があるためであ
る。
算MM[A→B]に入力し、中間変数cのB表現を得る。ここ
でg = B mod Nとしている。またMM[A→B]の処理の過程
において、基底変換BT2によってx'Aからx'Bが得られて
いることを明記するため、図7では(, x'B)という表記
を付加している。x'Aとx'Bは続く処理にて使用する。
で、ループ変数iはλ1から1まで変化する。さらに、外
部入力されたべき指数eは2進数表現されており、そのビ
ット数をλ、各ビットをeiとしている。eλは最上位ビ
ットであり、ここでは1とする。また、λは2以上の値と
する。
相当する値を計算するために、モンゴメリ乗算MM[B→A]
にcBを入力し、出力結果(例えばc'A)を改めてcAとす
る。
eiが0か1かを判定し、1の場合はcとx'とを、0の場合はc
と定数hとをモンゴメリ乗算MM[A→B]によって掛け合わ
せる処理を行なう。ここでh = A mod Nとしている。
でなければループの開始点に戻り、1であればループ処
理を抜ける。
ゴメリ乗算MM[B→A]によって掛け合わせ、演算結果yのA
表現を得る。
することができる。既に述べたように、RNSモンゴメリ
乗算の入出力データは、基底Aのみ、あるいは、基底Bの
みで一意に表現される数であるため、yAからyを求める
ことに問題は生じない。
図6と比較した場合、ei=0の時もモンゴメリ乗算を実行
する点が異なっており、その分の処理時間が増加するよ
うに思われる。しかし実際の実装においては、暗号解析
に対する耐性を向上させるために、従来法においてもei
=0の場合にモンゴメリ乗算を実行することで、ei=0とei
=1での処理時間を同じにするという処置が行なわれるた
め、必ずしも図7が図6と比較して処理時間に関してデ
メリットを持つわけではない。なお、図6で定数dはB2
mod Nを表す。
は、べき乗指数eを1ビットずつサーチしながら乗算を
繰り返すことでべき乗剰余算を実現する方法(バイナリ
法)であるが、例えばeをqビットずつサーチする方法
(qビットウィンドウ法)に対して本発明によるモンゴ
メリ乗算を適用してもよい。
の処理に関して、さらに詳しく説明する。まず、ループ
内の処理を次のようステップ(a)とステップ(b)に分けて
考える。 ステップ(a) c'A ←MM[B→A](cB, cB) ステップ(b) c'B ←MM[A→B](cA, (jA, jB)) 説明を分かり易くするために、上記では演算結果をc'で
表している。また、jはe iに応じて定まる定数であり、e
i=1の場合はj=x'、ei=0の場合はj=hである。ここで、x'
とhはループ処理の前に事前計算される値であるため、
x'およびh(すなわちj)を定数と称している。ステップ
(a)は入力変数の二乗を計算し、ステップ(b)は入力変数
に定数を掛ける処理である。
には ステップ(a) c'A = [c・c・B1 mod N]A or [c・c・B
1 mod N + N]A ステップ(b) c'B = [c・j・A1 mod N]B or [c・j・A
1 mod N + N]B となっている。ここで、c'AにはB1 が、c'BにはA1 が、
それぞれ係数として掛かることに注目されたい。これは
本実施例の冒頭で述べたモンゴメリ乗算の性質によるも
のである。
[A→B]においてはA1 が、それぞれ係数として演算結果
に掛かるという性質があることから、MM[B→A]、MM[A→
B]を交互に繰返し実行するために、中間変数の係数を制
御する必要が生じ、以下、その方法について説明する。
その際、ループ処理に入る直前の中間変数cの係数を仮
定して説明を行なう必要がある(これは係数の初期値を
定めることを意味する)。図7に示した例ではループに
入る直前のcはB・x mod Nであり、すなわち係数の初期
値はBである。本実施例では初期値としてこの係数Bを例
にとって説明を行なう。なお、ここでいう係数とは、φ
とψを任意の整数として、Aφ・Bψで表される数であ
る。また係数の初期値のとり方は任意であり、B以外で
もよい。
ープ内の処理を考察する。まず、ループi=λ1のステッ
プ(a)では、係数がBである中間変数の二乗にB1を掛ける
処理が行なわれる。そのため、演算結果の係数は同じく
Bとなる。続くステップ(b)は、中間変数に定数を掛ける
処理であり、それにA1が掛かるため、演算結果の係数は
B・J・A1となる。ここで定数の係数をJとしている。こ
の演算結果を入力データとして、続くループi=λ2のス
テップ(a)に戻ってループ処理を続行するには、係数B・
J・A1が初期値と同じBである必要がある。この条件は、
各ループで同じ処理を行ないながらステップ(a)とステ
ップ(b)を繰返し実行するために必要なもので、この条
件B・J・A1 = BからJ = Aが得られる。実際、図7に示
した例では、x'とhは共に係数はAになっている。
してべき乗剰余算のループ処理を実行する際、ステップ
(a)のモンゴメリ乗算に入力される中間変数cの係数が、
各ループで同じである必要があることを示している。本
発明は、この係数の制御を実現するため、ステップ(b)
のモンゴメリ乗算で中間変数と掛け合わされる定数の係
数を、上記に示した方法で選ぶものである。
係数の制御法を説明する。qビットウィンドウ法では、
ステップ(a)において中間変数cの二乗計算をq回行なう
必要があり、そのためモンゴメリ乗算をq回実行した後
に、ステップ(b)へと処理が移る。ステップ(b)での処理
は基本的に図7のバイナリ法と同じであるが、qビット
ウィンドウ法ではべき指数eをqビットずつサーチするた
め、eiに関する分岐が2通りではなく、qビットで表さ
れる数の個数分に分岐して処理されることになる(例え
ば、4ビットの場合は0〜15の16通りである)。ただし、
ステップ(b)でのモンゴメリ乗算の回数は各分岐とも図
7と同じ1回であり、かつ、バイナリ法と同様に中間変
数cに定数を掛け合わせる処理が行なわれる。そのためq
ビットウィンドウ法においても、ステップ(b)のモンゴ
メリ乗算(すなわち、ループ処理内の最後のモンゴメリ
乗算)において中間変数と掛け合わせる定数の係数を、
上述したバイナリ法での説明と同様な方法で選ぶこと
で、ステップ(a)の1番目のモンゴメリ乗算(すなわ
ち、ループ処理内の最初のモンゴメリ乗算)に入力する
中間変数の係数が各ループで等しくなるように制御する
ことが可能である。
数が、係数の初期値と一致するように定数の係数を定め
る。これによって、MM[B→A], MM[A→B]を交互に実行し
て、べき乗剰余算のループ処理をqビットウィンドウ法
に対しても実現することができる。
必要な場合があり、それについて補足する。qが奇数の
場合(例えばバイナリ法)は、上述した方法をそのまま
適用することができるが、qが偶数である場合、次のよ
うな処置を行なう必要がある。ここでは4ビットウィン
ドウ法を例に挙げて説明する。
モンゴメリ乗算を4回、ステップ(b)でモンゴメリ乗算
を1回行うため、ループ1回あたりのモンゴメリ乗算の
回数は計5回の奇数となる。このために、例えばi番目
のループでの最初のモンゴメリ乗算がMM[B→A]であった
場合、次のi1番目のループでの最初のモンゴメリ乗算は
MM[A→B]となり、周期性がループ1回ではなくループ2
回になることが分かる。これを受けて、qが偶数の場合
は、ループ2回で1周期と見なした次のような係数の制
御を行なう。 : ループi ステップ(a) c'A = [c・c・B1 mod N]A or [c・c・B1 mod N + N]A c'B = [c・c・A1 mod N]B or [c・c・A1 mod N + N]B c'A = [c・c・B1 mod N]A or [c・c・B1 mod N + N]A c'B = [c・c・A1 mod N]B or [c・c・A1 mod N + N]B ステップ(b) c'A = [c・j1・B1 mod N]A or [c・j1・B1 mod N + N]A ループi1 ステップ(a) c'B = [c・c・A1 mod N]B or [c・c・A1 mod N + N]B c'A = [c・c・B1 mod N]A or [c・c・B1 mod N + N]A c'B = [c・c・A1 mod N]B or [c・c・A1 mod N + N]B c'A = [c・c・B1 mod N]A or [c・c・B1 mod N + N]A ステップ(b) c'B = [c・j1・A1 mod N]B or [c・j2・A1 mod N + N]B : 上記したようにqが偶数の場合、2種類の定数j1とj2を
導入する。そして、j1の係数J1とj2の係数J2が基底A, B
を入れ換えた関係にあり、かつ、ステップ(a)の最初の
モンゴメリ乗算に入力される中間変数の係数が各周期で
等しくなるようにJ1とJ2を定める。すなわち、ループi
の最初のモンゴメリ乗算に入力される中間変数cの係数
をBと仮定した場合、j2と掛け合わせた演算結果の係数
がBになるようにJ2を定める。同様にJ1については、j1
と掛け合わせた演算結果の係数がAになるようにJ1を定
める。このような方法によって、qが偶数の場合も、ル
ープ2回を1周期とみなして係数を制御することで、MM
[B→A], MM[A→B]を交互に実行して、べき乗剰余算のル
ープ処理を実現することができる。
る高速化率について考察する。まず、基底AおよびBの基
底サイズをnとして、基底変換に要するステップ数はn2
である。これをu個の並列演算ユニットで並列処理する
ため、1ユニットあたりのステップ数はn2/uとなる。効
率的な並列処理が可能なユニット数uはnの約数であるこ
とから、ここでp=n/uを仮定すると、1ユニットあたり
の基底変換のステップ数はn2/u = npと書き換えられ
る。以下では、ユニット数が同じu個である場合に、1
ユニットあたりのステップ数について、従来法と本発明
による方法との比較を行なう。
ち、p=1の場合から説明する。基底変換のステップ数がn
であるため、モンゴメリ乗算で基底変換を2回行なう従
来法では、1ユニットあたりのモンゴメリ乗算のステッ
プ数は2n+αで表される。ここで基底変換以外に要する
ステップ数をαとしている。そして、べき乗剰余算のほ
とんどの処理時間がモンゴメリ乗算で費やされる(99%
前後)ため、Kをモンゴメリ乗算の繰返し回数として、
(2n+α)Kをべき乗剰余算に要する従来法での1ユニット
あたりのステップ数と見積ることができる。一方、本発
明によるモンゴメリ乗算を適用する場合、モンゴメリ乗
算の繰返し回数Kは変わらないが、基底変換に要する処
理時間が2回分から1回分に減るため、べき乗剰余算に
要する1ユニットあたりのステップ数は(n+α)Kとな
る。ここで通常αは従来法での値から若干異なるが、変
化分は無視できる範囲内である。以上より、本発明によ
る高速化率は(2n+α)/(n+α)となる。具体的な数値とし
て、例えば鍵長1024ビットに対してn=33、α=14を想定
することができ、この場合、本発明によって1.7倍の処
理性能の向上が得られる。また鍵長を長くする場合、通
常、それに比例して基底サイズnを増加する必要がある
が、その際αの値は不変となる。そのため、長い鍵長で
のRSA暗号処理ほど本発明によるモンゴメリ乗算の適用
が効果的であり、高速化率が2倍に近づくことが分か
る。
し処理が入るため、べき乗剰余算に要する1ユニットあ
たりのステップ数は、従来法が(2np+α)pK、本発明によ
る方法が(np+α)pKとなる。そのため、本発明による高
速化率として(2np+α)/(np+α)という見積りが得られ
る。(第2実施形態) 第2の実施形態では、図5に示した本発明によるモンゴ
メリ乗算の繰返し処理の変形例を示す。
は、基底変換の逐次処理を行なうものであり、基底A,
Bに関して表現した2種類のデータが入力され、基底A,
Bに関して表現された2種類のデータが出力される。こ
こでMM[A,B→A,B]の手順を改めて見直すと、 a)xB, yBはステップ(1)の前に入力される必要がある
が、xA, yAはステップ(5)までに入力されればよい、 b)出力データのwA, wBは、ステップ(6)が終了した時
点で片方のwAの計算が終了している、という特徴がある
ことが分かる。この2つの特徴のために、次のような手
順によって基底変換の二重処理を行なうことが可能であ
る。
基底変換BT2を開始すると同時に、ステップ(6)で既に計
算されているwAを入力データとしてモンゴメリ乗算[2]
を開始する。これによって、モンゴメリ乗算[1]の基底
変換BT2とモンゴメリ乗算[2]の基底変換BT1を同時実行
することができる。次に、モンゴメリ乗算[1]のステッ
プ(7)が終了した時点で、基底変換BT2の結果wBをモンゴ
メリ乗算[2]に入力する。そして、モンゴメリ乗算[2]で
は、入力されたwB(すなわちxB, yB)を用いて基底変換
BT2を開始する。それと同時に、モンゴメリ乗算[1]では
繰返し処理の次の処理に移り、モンゴメリ乗算[2]のス
テップ(6)で得られているwBを入力データとして基底変
換BT1を実行する。これによって、モンゴメリ乗算[2]の
基底変換BT2とモンゴメリ乗算[1]の基底変換BT1とが同
時に処理されることになる。
4で説明したMM[B,A→B,A]を導入し、上述のモンゴメリ
乗算[1]がMM[A,B→A,B]に、モンゴメリ乗算[2]がMM[B,A
→B,A]に対応している。MM[B,A→B,A]は、MM[A,B→A,B]
の手順で基底A, Bを入れ換えた従来法によるモンゴメリ
乗算である。図8に示した手順は、基底変換の逐次処理
を行なう2種類のモンゴメリ乗算を2分の1ずつずらし
ながら並列処理を行なうことを特徴としている。
(k)とk回目のMM[B,A→B,A]のBT1(k)が並列処理され、k
+1回目のMM[A,B→A,B]のBT1(k+1)とk回目のMM[B,A→B,
A]のBT2(k)が並列処理されることになる。その際、MM
[A,B→A,B]の処理を図1の積和回路[1]で、MM[B,A→B,
A]の処理を図1の積和回路[2]で行なう(または、この
逆でもよい)。以上説明したように、図8に示した手順
によれば、基底変換の逐次処理を行なうモンゴメリ乗算
を用いても基底変換の二重処理が可能であり、約1/2の
時間短縮を図ることができる。
底変換の二重処理を実現することでモンゴメリ乗算の約
2倍の高速処理が可能となり、RSA暗号処理の高速化を
実現できる。その際、通常の並列演算ユニットの単純な
増設による高速化とは異なり、次のような特徴を持つ。
従来法では並列ユニット数uの増加に伴う処理性能の向
上が1≦u≦nの範囲に限られるのに対し、本発明はn<u
≦2nに相当する範囲に対しても並列ユニットの増設を有
効にし、処理性能の向上を図ることができる。すなわ
ち、並列化による処理性能向上の上限を従来法の約2倍
に引き上げることが可能である。
示す図。
示す図。
変形した仮想的な処理を示す図。
し処理を示す図。
ャート。
フローチャート。
し処理の変形例を示す図。
リ) 1310, 1320, , 13u0 … ROM(リードオンリーメモリ) 201〜20u … 積和回路 210 … 補正項計算ユニット 221〜22u … RAM(ランダムアクセスメモリ) 231〜23u … ROM(リードオンリーメモリ)
Claims (7)
- 【請求項1】 整数を剰余演算系で表現し、これを演算
処理する剰余演算装置であって、 剰余演算機能を有する第1の積和回路と第2の積和回路と
を具備する積和演算ユニットと、 前記第1の積和回路の剰余演算に用いられる補正項を求
め、これを前記第1の積和回路へ供給する第1の補正項
計算ユニットと、 前記第2の積和回路の剰余演算に用いられる補正項を求
め、これを前記第2の積和回路へ供給する第2の補正項
計算ユニットと、を備えたことを特徴とする剰余演算装
置。 - 【請求項2】 整数を剰余演算系で表現し、これを演算
処理する剰余演算装置であって、 剰余演算機能を有する第1の積和回路と第2の積和回路と
を具備する複数の積和演算ユニットと、 前記第1の積和回路の剰余演算に用いられる補正項を求
め、これを前記第1の積和回路へそれぞれ供給する第1
の補正項計算ユニットと、 前記第2の積和回路の剰余演算に用いられる補正項を求
め、これを前記第2の積和回路へそれぞれ供給する第2
の補正項計算ユニットと、を備えたことを特徴とする剰
余演算装置。 - 【請求項3】 前記第1の積和回路と第2の積和回路と
に接続される記憶手段を更に備えたことを特徴とする請
求項1または請求項2の何れかに記載の剰余演算装置。 - 【請求項4】 第1の基底で表現された剰余演算系の第
1中間変数を基底変換し、第1の基底と異なる第2の基
底に基づく剰余演算系の中間変数を得る第1基底変換処
理と、 該第1の基底で表現された剰余演算系の、第1中間変数
とは異なる第2中間変数を基底変換し、該第2の基底に
基づく剰余演算系の中間変数を得る第2基底変換処理と
を備えたモンゴメリ乗算を、基底変換を処理可能な第1
の積和演算手段と第2の積和演算手段とを備えた剰余演
算装置を利用して、演算処理させる剰余演算方法であっ
て、 前記第1基底変換処理を前記第1の積和演算手段にて、
前記第2基底変換処理を前記第2の積和演算手段にて並
列実行させるよう制御することを特徴とする剰余演算方
法。 - 【請求項5】 整数を基底Aおよび基底Bの剰余演算系
で表現し、該基底Aに基づいて求められた値を該基底B
に基づいて表される値へ基底変換を行う第1基底変換処
理と、該基底Bに基づいて求められた値を該基底Aに基
づいて表される値へ基底変換を行う第2基底変換処理
と、を含む1回の剰余付き乗算を繰り返すことにより、
演算結果を得るべき乗剰余演算方法であって、 k回目の第1基底変換処理と(k+1)回目の第1基底
変換処理とを並列実行するよう制御する第1ステップ
と、 (k+1)回目の第2基底変換処理と(k+2)回目の
第2基底変換処理とを並列実行するよう制御する第2ス
テップと、を繰り返し実行してべき乗剰余演算を行うこ
とを特徴とするべき乗剰余演算方法。 - 【請求項6】 べき乗剰余演算をモンゴメリ乗算の繰り
返し処理で実装する場合のループ処理内の、最初のモン
ゴメリ乗算に入力される第3の中間変数の係数が各ルー
プ処理で等しくなるように、該ループ処理内の最後のモ
ンゴメリ乗算において中間変数と掛け合わせる定数の係
数を設定することを特徴とする請求項5記載のべき乗剰
余演算方法。 - 【請求項7】 第1の基底で表現された剰余演算系の第
1中間変数を基底変換し、第1の基底と異なる第2の基
底に基づく剰余演算系の中間変数を得る第1基底変換処
理と、 該第1の基底で表現された剰余演算系の、第1中間変数
とは異なる第2中間変数を基底変換し、該第2の基底に
基づく剰余演算系の中間変数を得る第2基底変換処理と
を備えたモンゴメリ乗算を、基底変換を処理可能な第1
の積和演算手段と第2の積和演算手段とを備えた剰余演
算装置を利用して、演算処理させる剰余演算方法であっ
て、 第1の基底または第2の基底のうちの何れか一方の基底
によって表現される値を入力するステップと、 k回目の第1基底変換処理と(k―1)回目の第2基底
変換処理とを並列実行するよう制御するステップと、 前記第1の基底または前記第2の基底のうちの他方の基
底によって表現される値を出力するステップとを備えた
ことを特徴とする剰余演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001011300A JP3540280B2 (ja) | 2001-01-19 | 2001-01-19 | べき乗剰余演算方法、および、剰余演算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001011300A JP3540280B2 (ja) | 2001-01-19 | 2001-01-19 | べき乗剰余演算方法、および、剰余演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002215386A true JP2002215386A (ja) | 2002-08-02 |
JP3540280B2 JP3540280B2 (ja) | 2004-07-07 |
Family
ID=18878449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001011300A Expired - Fee Related JP3540280B2 (ja) | 2001-01-19 | 2001-01-19 | べき乗剰余演算方法、および、剰余演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3540280B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007080652A1 (ja) * | 2006-01-13 | 2007-07-19 | Fujitsu Limited | モンゴメリ法用乗算剰余計算装置 |
WO2020194594A1 (ja) * | 2019-03-27 | 2020-10-01 | Tdk株式会社 | ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 |
-
2001
- 2001-01-19 JP JP2001011300A patent/JP3540280B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007080652A1 (ja) * | 2006-01-13 | 2007-07-19 | Fujitsu Limited | モンゴメリ法用乗算剰余計算装置 |
JP4783382B2 (ja) * | 2006-01-13 | 2011-09-28 | 富士通株式会社 | モンゴメリ法用乗算剰余計算装置 |
US8352529B2 (en) | 2006-01-13 | 2013-01-08 | Fujitsu Limited | Modular multiplication calculation apparatus used for montgomery method |
WO2020194594A1 (ja) * | 2019-03-27 | 2020-10-01 | Tdk株式会社 | ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 |
US11681498B2 (en) | 2019-03-27 | 2023-06-20 | Tdk Corporation | Neural network arithmetic processing device and neural network arithmetic processing method |
Also Published As
Publication number | Publication date |
---|---|
JP3540280B2 (ja) | 2004-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6049815A (en) | Method and apparatus for finite field multiplication | |
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
JP4980834B2 (ja) | 算術プロセッサ | |
JP2722413B2 (ja) | モンゴメリ法によるモジュラ乗算の実施方法 | |
JP3939658B2 (ja) | モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
JP2004534266A (ja) | ハードウェアにおいて算術演算を効率的に行う方法および装置 | |
CN115344237A (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
JP2722412B2 (ja) | モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法 | |
US6598061B1 (en) | System and method for performing modular multiplication | |
US20010054053A1 (en) | Method and apparatus for finite field multiplication | |
JP2004258141A (ja) | モンゴメリ乗算剰余の多倍長演算のための演算装置 | |
JP3068138B2 (ja) | ベクトル演算処理装置 | |
JP3540280B2 (ja) | べき乗剰余演算方法、および、剰余演算方法 | |
JP4182226B2 (ja) | 剰余系の計算方法及び装置並びにプログラム | |
JP3660075B2 (ja) | 除算装置 | |
WO2017095652A1 (en) | Method and system for efficient quantum ternary arithmetic | |
JP4850884B2 (ja) | べき乗剰余演算器 | |
KR100954843B1 (ko) | 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체 | |
JP2004226516A (ja) | べき乗剰余演算方法及びそのプログラム | |
Monfared et al. | A new multiplicative inverse architecture in normal basis using novel concurrent serial squaring and multiplication | |
WO2003096182A1 (en) | “emod” a fast modulus calculation for computer systems | |
KR100386979B1 (ko) | 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기 | |
CN114510273A (zh) | 一种实现椭圆曲线密码的标量乘运算的处理器和方法 | |
JP4341889B2 (ja) | 楕円積和演算計算方法、楕円積和演算計算装置、プログラム及び記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040113 |
|
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: 20040323 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040324 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080402 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090402 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100402 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100402 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110402 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |