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
Application number
JP2001011300A
Other languages
English (en)
Other versions
JP3540280B2 (ja
Inventor
Hanae Nozaki
華恵 野崎
Atsushi Shinpo
淳 新保
Shinichi Kawamura
信一 川村
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001011300A priority Critical patent/JP3540280B2/ja
Publication of JP2002215386A publication Critical patent/JP2002215386A/ja
Application granted granted Critical
Publication of JP3540280B2 publication Critical patent/JP3540280B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】モンゴメリ乗算で行なう2回の基底変換の並列
処理を実現するための剰余演算装置を提供する。 【解決手段】剰余演算機能を有する積和回路[1]と積和
回路[2]で構成される積和ユニットと、剰余演算に用い
られる補正項を計算する補正項計算ユニット[1]と補正
項計算ユニット[2]とを備えた剰余演算装置において、
前記積和回路[1]と前記補正項計算ユニット[1]は基底変
換[1]を処理し、前記積和回路[2]と前記補正項計算ユニ
ット[2]は基底変換[2]を処理することで、基底変換の二
重処理を行なう。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、剰余演算系に基づ
き大きな整数の演算を並列処理により高速に計算する剰
余演算処理装置及び方法に関する。
【0002】
【従来の技術】大きな整数を効率良く演算するための手
法として剰余演算系(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は、加算・減算・乗算が基底ごとに
独立に実行可能であるという特徴を持っている。
【0003】一方、RSA暗号で用いるべき乗剰余算の実
装法として、Montgomeryによって提案された剰余付き乗
算(P. L. Montgomery, Mathematics of Computation,
Vol.44, No. 170, pp. 519521, April, 1985)を繰返し
実行する方法がある。このモンゴメリ乗算は剰余付き乗
算を加算と乗算で代替えして実行する手法であるため、
加減乗算の並列処理を可能にするRNSと組み合わせるこ
とで、べき乗剰余算の高速並列処理の実現が期待でき
る。
【0004】そのような試みとして、Poschらの方式(K.
C. Posch and R. Posch, IEEE Transaction on Parall
el and Distributed Systems, Vol. 6, No. 5, May 199
5, pp.449454)や、先発明の特願2000-334978による方法
が提案されている。
【0005】このRNSモンゴメリ乗算(以下、モンゴメ
リ乗算と略称する)では、基底変換と呼ぶ処理が2回実
行される。ここで基底変換とは、RNSのある基底で表さ
れた数をその基底と互いに素な別の基底で表現し直すこ
とをいう。モンゴメリ乗算では基底変換以外の処理も行
なうが、基底変換以外の処理は演算量が少ないため、基
底変換の処理時間によってモンゴメリ乗算の処理性能が
決まる。さらに、モンゴメリ乗算の繰返し処理によって
べき乗剰余算が実現されるため、基底変換の処理時間が
べき乗剰余算の処理性能も決めることになる。このた
め、基底変換の処理の効率化はべき乗剰余算の処理性能
向上に直結するものである。
【0006】
【発明が解決しようとする課題】基底変換の処理自体の
効率化については、既に様々な取り組みがなされてい
る。しかし、モンゴメリ乗算で実行する2回の基底変換
同士を並列処理するという試みは行なわれていない。こ
れは、従来法のモンゴメリ乗算のアルゴリズムでは、1
回目の基底変換で得られる結果を用いて2回目の基底変
換を開始する必要があるために、2つの基底変換は逐次
処理されねばならず、並列処理が不可能になっているこ
とによる。
【0007】また従来法は、並列演算ユニットを増設す
ることで処理性能の向上を図るものであるが、最も高い
処理性能が得られる並列ユニット数uは、RNSの基底サイ
ズをnとしてu=nであり、nが並列度に関する上限値とな
る。すなわち従来法は、ユニット数が1≦u≦nの範囲内
で処理性能の向上が得られるものであり、nを超えるユ
ニット数を用意してもu=nでの処理性能を上回ることは
できない。
【0008】上述した点に鑑み、本発明は、2回の基底
変換の並列処理(二重処理)を可能とするであることを
特徴とするRNSモンゴメリ乗算の処理方式を提供するこ
とを目的とする。
【0009】
【課題を解決するための手段】本発明は、整数を剰余演
算系で表現し、これを演算処理する剰余演算装置であっ
て、剰余演算機能を有する第1の積和回路と第2の積和回
路とを具備する積和演算ユニットと、前記第1の積和回
路の剰余演算に用いられる補正項を求め、これを前記第
1の積和回路へ供給する第1の補正項計算ユニットと、
前記第2の積和回路の剰余演算に用いられる補正項を求
め、これを前記第2の積和回路へ供給する第2の補正項
計算ユニットとを備えた。
【0010】好ましくは、上記積和演算ユニットは、複
数個備えているようにしてもよい。
【0011】好ましくは、前記第1の積和回路と第2の
積和回路とに接続される記憶手段を更に備えているよう
にしてもよい。
【0012】また、本発明は、第1の基底で表現された
剰余演算系の第1中間変数を基底変換し、第1の基底と
異なる第2の基底に基づく剰余演算系の中間変数を得る
第1基底変換処理と、該第1の基底で表現された剰余演
算系の、第1中間変数とは異なる第2中間変数を基底変
換し、該第2の基底に基づく剰余演算系の中間変数を得
る第2基底変換処理とを備えたモンゴメリ乗算を、基底
変換を処理可能な第1の積和演算手段と第2の積和演算
手段とを備えた剰余演算装置を利用して、演算処理させ
る剰余演算方法であって、前記第1基底変換処理を前記
第1の積和演算手段にて、前記第2基底変換処理を前記
第2の積和演算手段にて並列実行させるよう制御するよ
うにした。
【0013】また、本発明は、第1の基底で表現された
剰余演算系の第1中間変数を基底変換し、第1の基底と
異なる第2の基底に基づく剰余演算系の中間変数を得る
第1基底変換処理と、該第1の基底で表現された剰余演
算系の、第1中間変数とは異なる第2中間変数を基底変
換し、該第2の基底に基づく剰余演算系の中間変数を得
る第2基底変換処理とを備えたモンゴメリ乗算を、基底
変換を処理可能な第1の積和演算手段と第2の積和演算
手段とを備えた剰余演算装置を利用して、演算処理させ
る剰余演算方法であって、第1の基底または第2の基底
のうちの何れか一方の基底によって表現される値を入力
するステップと、k回目の第1基底変換処理と(k―
1)回目の第2基底変換処理とを並列実行するよう制御
するステップと、前記第1の基底または前記第2の基底
のうちの他方の基底によって表現される値を出力するス
テップとを備えた。
【0014】また、本発明は、整数を基底Aおよび基底
Bの剰余演算系で表現し、該基底Aに基づいて求められ
た値を該基底Bに基づいて表される値へ基底変換を行う
第1基底変換処理と、該基底Bに基づいて求められた値
を該基底Aに基づいて表される値へ基底変換を行う第2
基底変換処理と、を含む1回の剰余付き乗算を繰り返す
ことにより、演算結果を得るべき乗剰余演算方法であっ
て、k回目の第1基底変換処理と(k+1)回目の第1
基底変換処理とを並列実行するよう制御する第1ステッ
プと、(k+1)回目の第2基底変換処理と(k+2)
回目の第2基底変換処理とを並列実行するよう制御する
第2ステップと、を繰り返し実行してべき乗剰余演算を
行うようにした。
【0015】好ましくは、べき乗剰余演算をモンゴメリ
乗算の繰り返し処理で実装する場合のループ処理内の、
最初のモンゴメリ乗算に入力される第3の中間変数の係
数が各ループ処理で等しくなるように、該ループ処理内
の最後のモンゴメリ乗算において中間変数と掛け合わせ
る定数の係数を設定するようにした。
【0016】上記のようにした本発明により、RNSモン
ゴメリ乗算1回当たりの処理時間を約1/2に短縮できる
ようになった。
【0017】また、並列ユニット数がn<u≦2nに相当す
る範囲内に対しても処理性能の向上を実現する。そし
て、RNSモンゴメリ乗算を適用することで、RSA暗号の処
理等に用いられる高速な剰余演算装置、剰余演算方法お
よび、べき剰余演算方法を実現することができるように
なった。
【0018】
【発明の実施の形態】以下、本発明の実施形態につい
て、図面を参照しつつ詳細に説明する。 (第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モンゴメリ乗算を簡略してモンゴ
メリ乗算と呼ぶ。
【0019】上記7ステップで実現されるモンゴメリ乗
算において、(3)と(7)の基底変換がその処理時間の大半
を占めるため、ステップ(3)と(7)の効率的処理を行なう
ことで、モンゴメリ乗算の高速化、ひいては、べき乗剰
余算の高速化が期待できる。以下、その方法について考
察する。
【0020】モンゴメリ乗算ではxA, yA, xB, yB, Nの
入力に対して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に関する出
力データが得られていることになる。
【0021】この繰り返し処理を図3に示した。この図
は特に基底変換について処理の流れを図示したものであ
る。今、モンゴメリ乗算をK回繰り返し実行するとし
て、k回目(k=1, ..., K)の処理に着目する。モンゴメリ
乗算1回あたり基底変換を2回行うため、もしも基底変
換BT1(k)とBT2(k)とを並列処理できるならば、モンゴメ
リ乗算の処理時間の短縮が可能になる。しかし、基底変
換BT2(k)の実行には基底変換BT1(k)の結果であるtAが必
要になるため、BT1(k)とBT2(k)は逐次的に実行されねば
ならず、並列処理は不可能であることが分かる。すなわ
ち、従来法によるモンゴメリ乗算は基底変換の並列処理
(二重処理)ができないアルゴリズムになっている。
【0022】そこで本発明では、基底変換BT2(k)とBT1
(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]とを交互に実行
することを想定する。
【0023】具体的には、k+2p回目でMM[A,B→A,B]を、
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)との二重処理を
実現するアルゴリズムを以下のように提案する。
【0024】まず、本発明では次の2種類のモンゴメリ
乗算を考慮する。 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]を交互に
実行することで繰返し処理を実現することを特徴とす
る。
【0025】本発明によるモンゴメリ乗算の繰り返し処
理を、基底変換の取扱いが分かるように図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の処理時間
の短縮を見込むことができる。
【0026】ここで、図3および図4でのBT2(k): wA
⇒ 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を表す。
【0027】なお図5では、従来法で逐次的に処理して
いた基底変換BT1とBT2を並列処理していることを明示す
るために、BT1とBT2を横に書き並べて表した。図3〜図
5のモンゴメリ乗算処理を表すボックスは、縦方向が処
理時間に、横方向がハードウェアの規模に対応すると考
えられたい。本発明は、基底変換の二重処理を実現する
ために、回路規模を2倍にして約1/2の処理時間短縮を
図るものであるが、これは通常の並列演算ユニットの増
設による高速化のように自明な技術ではなく、これまで
説明してきたように、モンゴメリ乗算の手順を変更する
ことで初めて可能になったものである。
【0028】次にMM[B→A]とMM[A→B]の入出力データに
ついて説明する。図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]とを交互に
実行する繰返し処理である。
【0029】それでは、上記したMM[B→A]とMM[A→B]の
処理ステップを具体的な処理手順とともに説明する。図
5に示したようにk回目の処理でMM[B→A]を実行する場
合、k1回目のMM[A→B]が終了した時点でwBが得られてお
り、これがk回目のMM[B→A]の入力データxB, yBとな
る。
【0030】以下、MM[B→A]での処理を説明する。まず
入力データ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')にて求めている。
【0031】同様に、続くk+1回目でのMM[A→B]では、
上述したMM[B→A]においてAとBを完全に入れ替えた処理
を行なう。得られた出力データwBを入力データxB, yB
して、k+2回目のMM[B→A]に接続することができる。
【0032】ここでMM[B→A], MM[A→B]についての補足
説明を行なう。上述した処理手順では、説明を分かり易
くするために基底変換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と同時に実
行する場合に、基底変換を二重処理するための制御部で
の処理の増加分を最小限に抑えられるという利点があ
る。
【0033】以上説明してきたように、本発明ではMM[B
→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両方の
基底に関する計算を行なっているため、その他の中間変
数に関しても計算上の問題は生じない。
【0034】以下、本発明によるモンゴメリ乗算の繰返
し処理を実現するためのハードウェア構成について説明
する。まず図2に従来法での剰余演算装置のハードウェ
ア構成を示す。RNS表現の基底要素ごとの演算を並列処
理するための同一構成のユニットu個と、基底変換での
補正項の計算を行なう補正項計算ユニット210から構成
される。
【0035】並列ユニットは、剰余演算機能付き積和回
路201、RAM221、ROM231で構成される。補正項計算ユニ
ット210に関しては、ビット選択部やROM等を要する場
合、それらも含めて補正項計算ユニットとしている。こ
こで、並列ユニット数uは基底サイズnと1≦u≦nという
関係にあり、ユニット数uがnの約数である場合に、効率
的な並列処理が可能である。uがnより小さい場合は1つ
のユニットが2個以上の基底要素に関する演算を担うこ
とになるため、処理時間はuに反比例して増減する。し
かし、並列度を最も高くした場合がu=nであり、従来法
ではユニット数をnより増やしても処理速度の向上は得
られない。
【0036】図1に本発明による剰余演算装置のハード
ウェア構成を示す。剰余演算機能付き積和回路[1]101
1、積和回路[2]1012、RAM1210、ROM1310で構成されるu
個のユニットと、補正項計算ユニット[1]1101と補正項
計算ユニット[2]1102から構成される。剰余演算装置の
全体構成、および、積和回路[1]1011、RAM1210、ROM131
0、補正項計算ユニット[1]1101の構成としては、先発明
の特願2000-334978での構成、および先発明での変形
例、あるいは、先発明での従来法の構成を適用すること
ができる。さらに、本発明に基づいてべき乗剰余演算装
置を構成する場合も、先発明での構成を適用することが
できる。
【0037】本発明の特徴は、従来技術による剰余演算
装置に積和回路[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]と接続さ
れる。
【0038】積和回路[1]1011と積和回路[2]1012はRAM1
210とROM1310を共有する。 本発明では、積和回路[2]を
増設して基底変換の二重処理を行なうために、RAMない
しROMのサイズを従来法の2倍にする必要はない。積和
回路[1]1011と積和回路[2]1012間でのデータ転送に関し
ては、バスで相互接続してもよいし、RAM1210を介して
行なったのでもよい。積和回路[1]1011と積和回路[2]10
12による構成ユニットを便宜的に積和ユニット1010と称
する。
【0039】ここで基底変換BT1、BT2以外の処理を積和
回路[1]と積和回路[2]にどう分担させるかに応じて、積
和回路[2]の構成を変えることができるためそれについ
て補足しておく。例えば、積和回路[1]で基底変換BT1と
基底変換以外の全処理を行なうとし、積和回路[2]では
基底変換BT2のみを行うとした場合は、積和回路[2]1012
については、剰余演算機能付き積和回路として基本的な
構成要素である乗算器、加算器、剰余演算部、レジス
タ、および、スイッチを有していれば、積和回路[1]101
1と全く同じ構成にする必要はなく、よりシンプルな構
成にすることも可能である。
【0040】本発明による剰余演算装置を従来技術によ
る剰余演算装置と比較した場合、両者で並列ユニット数
が同じであれば、基底変換の二重処理を行なう本発明は
約2倍の処理性能を有することになる。図1の並列度を
uではなく2uであると見なすならば、本発明による剰余
演算装置はユニット数が2nに相当する処理性能まで高速
化が可能であるといえる。これは、従来法においてnで
あった並列度の上限を2nまで引き上げたことに相当す
る。
【0041】次に、本発明による2種類のモンゴメリ乗
算を交互に実行してべき乗剰余算を行なう手順につい
て、図7のフローチャートに従って説明する。本フロー
チャートは、入力されたRNS表現の値xをe乗し、Nで割っ
た余りを求める処理を表す。その際、Nは既知と仮定
し、Nおよび後述する定数f, g, hのRNS表現を求めるな
どの処理については事前に計算してあるものとして図7
には示していない。なお、Nや定数を外部入力とし、そ
れらのRNS表現を求めるなどの処理をその都度行なうよ
うに構成しても良い。
【0042】xの基底Bに関するRNS表現(以下、B表現と
略記する)とべき指数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両方の基底
に関する値を事前に計算しておく必要があるためであ
る。
【0043】次に、x'のA表現と定数gとをモンゴメリ乗
算MM[A→B]に入力し、中間変数cのB表現を得る。ここ
でg = B mod Nとしている。またMM[A→B]の処理の過程
において、基底変換BT2によってx'Aからx'Bが得られて
いることを明記するため、図7では(, x'B)という表記
を付加している。x'Aとx'Bは続く処理にて使用する。
【0044】次のステップではループ処理に入る。ここ
で、ループ変数iはλ1から1まで変化する。さらに、外
部入力されたべき指数eは2進数表現されており、そのビ
ット数をλ、各ビットをeiとしている。eλは最上位ビ
ットであり、ここでは1とする。また、λは2以上の値と
する。
【0045】ループ内では、まず、中間変数cの2乗に
相当する値を計算するために、モンゴメリ乗算MM[B→A]
にcBを入力し、出力結果(例えばc'A)を改めてcAとす
る。
【0046】続いて、ループ変数iに対応するeのビット
eiが0か1かを判定し、1の場合はcとx'とを、0の場合はc
と定数hとをモンゴメリ乗算MM[A→B]によって掛け合わ
せる処理を行なう。ここでh = A mod Nとしている。
【0047】次に、ループ変数iが1か否かを判定し、1
でなければループの開始点に戻り、1であればループ処
理を抜ける。
【0048】最終ステップでは、得られたcと1とをモン
ゴメリ乗算MM[B→A]によって掛け合わせ、演算結果yのA
表現を得る。
【0049】以上の手順によって、y = xe mod Nを計算
することができる。既に述べたように、RNSモンゴメリ
乗算の入出力データは、基底Aのみ、あるいは、基底Bの
みで一意に表現される数であるため、yAからyを求める
ことに問題は生じない。
【0050】図7を従来法でのフローチャートを示した
図6と比較した場合、ei=0の時もモンゴメリ乗算を実行
する点が異なっており、その分の処理時間が増加するよ
うに思われる。しかし実際の実装においては、暗号解析
に対する耐性を向上させるために、従来法においてもei
=0の場合にモンゴメリ乗算を実行することで、ei=0とei
=1での処理時間を同じにするという処置が行なわれるた
め、必ずしも図7が図6と比較して処理時間に関してデ
メリットを持つわけではない。なお、図6で定数dはB2
mod Nを表す。
【0051】また上述した図7による繰返し処理の手順
は、べき乗指数eを1ビットずつサーチしながら乗算を
繰り返すことでべき乗剰余算を実現する方法(バイナリ
法)であるが、例えばeをqビットずつサーチする方法
(qビットウィンドウ法)に対して本発明によるモンゴ
メリ乗算を適用してもよい。
【0052】ここで、図7のべき乗剰余算のループ内で
の処理に関して、さらに詳しく説明する。まず、ループ
内の処理を次のようステップ(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)は入力変数
に定数を掛ける処理である。
【0053】上記においてc'A, c'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 が、
それぞれ係数として掛かることに注目されたい。これは
本実施例の冒頭で述べたモンゴメリ乗算の性質によるも
のである。
【0054】このように、MM[B→A]においてはB1が、MM
[A→B]においてはA1 が、それぞれ係数として演算結果
に掛かるという性質があることから、MM[B→A]、MM[A→
B]を交互に繰返し実行するために、中間変数の係数を制
御する必要が生じ、以下、その方法について説明する。
その際、ループ処理に入る直前の中間変数cの係数を仮
定して説明を行なう必要がある(これは係数の初期値を
定めることを意味する)。図7に示した例ではループに
入る直前のcはB・x mod Nであり、すなわち係数の初期
値はBである。本実施例では初期値としてこの係数Bを例
にとって説明を行なう。なお、ここでいう係数とは、φ
とψを任意の整数として、Aφ・Bψで表される数であ
る。また係数の初期値のとり方は任意であり、B以外で
もよい。
【0055】以下、係数に着目して、べき乗剰余算のル
ープ内の処理を考察する。まず、ループ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になっている。
【0056】以上は、MM[B→A]とMM[A→B]を交互に実行
してべき乗剰余算のループ処理を実行する際、ステップ
(a)のモンゴメリ乗算に入力される中間変数cの係数が、
各ループで同じである必要があることを示している。本
発明は、この係数の制御を実現するため、ステップ(b)
のモンゴメリ乗算で中間変数と掛け合わされる定数の係
数を、上記に示した方法で選ぶものである。
【0057】ここで、qビットウィンドウ法についても
係数の制御法を説明する。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番目のモンゴメリ乗算(すなわ
ち、ループ処理内の最初のモンゴメリ乗算)に入力する
中間変数の係数が各ループで等しくなるように制御する
ことが可能である。
【0058】具体的には、ステップ(b)の演算結果の係
数が、係数の初期値と一致するように定数の係数を定め
る。これによって、MM[B→A], MM[A→B]を交互に実行し
て、べき乗剰余算のループ処理をqビットウィンドウ法
に対しても実現することができる。
【0059】上記処理において、qの値によって注意が
必要な場合があり、それについて補足する。qが奇数の
場合(例えばバイナリ法)は、上述した方法をそのまま
適用することができるが、qが偶数である場合、次のよ
うな処置を行なう必要がある。ここでは4ビットウィン
ドウ法を例に挙げて説明する。
【0060】4ビットウィンドウ法では、ステップ(a)で
モンゴメリ乗算を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]を交互に実行して、べき乗剰余算のル
ープ処理を実現することができる。
【0061】最後に、本発明によるモンゴメリ乗算によ
る高速化率について考察する。まず、基底AおよびBの基
底サイズをnとして、基底変換に要するステップ数はn2
である。これをu個の並列演算ユニットで並列処理する
ため、1ユニットあたりのステップ数はn2/uとなる。効
率的な並列処理が可能なユニット数uはnの約数であるこ
とから、ここでp=n/uを仮定すると、1ユニットあたり
の基底変換のステップ数はn2/u = npと書き換えられ
る。以下では、ユニット数が同じu個である場合に、1
ユニットあたりのステップ数について、従来法と本発明
による方法との比較を行なう。
【0062】まず説明を簡単にするため、u=n、すなわ
ち、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倍に近づくことが分か
る。
【0063】次にp=n/u≧2の場合は、pに関する繰り返
し処理が入るため、べき乗剰余算に要する1ユニットあ
たりのステップ数は、従来法が(2np+α)pK、本発明によ
る方法が(np+α)pKとなる。そのため、本発明による高
速化率として(2np+α)/(np+α)という見積りが得られ
る。(第2実施形態) 第2の実施形態では、図5に示した本発明によるモンゴ
メリ乗算の繰返し処理の変形例を示す。
【0064】従来法でのモンゴメリ乗算MM[A,B→A,B]
は、基底変換の逐次処理を行なうものであり、基底A,
Bに関して表現した2種類のデータが入力され、基底A,
Bに関して表現された2種類のデータが出力される。こ
こでMM[A,B→A,B]の手順を改めて見直すと、 a)xB, yBはステップ(1)の前に入力される必要がある
が、xA, yAはステップ(5)までに入力されればよい、 b)出力データのwA, wBは、ステップ(6)が終了した時
点で片方のwAの計算が終了している、という特徴がある
ことが分かる。この2つの特徴のために、次のような手
順によって基底変換の二重処理を行なうことが可能であ
る。
【0065】まず、モンゴメリ乗算[1]でステップ(7)の
基底変換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とが同
時に処理されることになる。
【0066】以上の手順を図8に示した。本図では、図
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ずつずらし
ながら並列処理を行なうことを特徴としている。
【0067】これによって、k回目のMM[A,B→A,B]のBT2
(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の
時間短縮を図ることができる。
【0068】
【発明の効果】以上説明したように本発明によれば、基
底変換の二重処理を実現することでモンゴメリ乗算の約
2倍の高速処理が可能となり、RSA暗号処理の高速化を
実現できる。その際、通常の並列演算ユニットの単純な
増設による高速化とは異なり、次のような特徴を持つ。
従来法では並列ユニット数uの増加に伴う処理性能の向
上が1≦u≦nの範囲に限られるのに対し、本発明はn<u
≦2nに相当する範囲に対しても並列ユニットの増設を有
効にし、処理性能の向上を図ることができる。すなわ
ち、並列化による処理性能向上の上限を従来法の約2倍
に引き上げることが可能である。
【図面の簡単な説明】
【図1】本発明の実施形態に係る剰余演算装置の構成を
示す図。
【図2】従来技術に係る剰余演算装置の構成を示す図。
【図3】従来技術に係るモンゴメリ乗算の繰返し処理を
示す図。
【図4】従来技術に係るモンゴメリ乗算の繰返し処理を
変形した仮想的な処理を示す図。
【図5】本発明の実施形態に係るモンゴメリ乗算の繰返
し処理を示す図。
【図6】従来技術に係るべき乗剰余演算の処理フローチ
ャート。
【図7】本発明の実施形態に係るべき乗剰余演算の処理
フローチャート。
【図8】本発明の実施形態に係るモンゴメリ乗算の繰返
し処理の変形例を示す図。
【符号の説明】
1010, 1020, , 10u0 … 積和ユニット 1011, 1021, , 10u1 … 積和回路[1] 1012, 1022, , 10u2 … 積和回路[2] 1101 … 補正項計算ユニット[1] 1102 … 補正項計算ユニット[2] 1210, 1220, , 12u0 … RAM(ランダムアクセスメモ
リ) 1310, 1320, , 13u0 … ROM(リードオンリーメモリ) 201〜20u … 積和回路 210 … 補正項計算ユニット 221〜22u … RAM(ランダムアクセスメモリ) 231〜23u … ROM(リードオンリーメモリ)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川村 信一 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 Fターム(参考) 5J104 AA18 AA20 AA21 JA23 NA17

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 整数を剰余演算系で表現し、これを演算
    処理する剰余演算装置であって、 剰余演算機能を有する第1の積和回路と第2の積和回路と
    を具備する積和演算ユニットと、 前記第1の積和回路の剰余演算に用いられる補正項を求
    め、これを前記第1の積和回路へ供給する第1の補正項
    計算ユニットと、 前記第2の積和回路の剰余演算に用いられる補正項を求
    め、これを前記第2の積和回路へ供給する第2の補正項
    計算ユニットと、を備えたことを特徴とする剰余演算装
    置。
  2. 【請求項2】 整数を剰余演算系で表現し、これを演算
    処理する剰余演算装置であって、 剰余演算機能を有する第1の積和回路と第2の積和回路と
    を具備する複数の積和演算ユニットと、 前記第1の積和回路の剰余演算に用いられる補正項を求
    め、これを前記第1の積和回路へそれぞれ供給する第1
    の補正項計算ユニットと、 前記第2の積和回路の剰余演算に用いられる補正項を求
    め、これを前記第2の積和回路へそれぞれ供給する第2
    の補正項計算ユニットと、を備えたことを特徴とする剰
    余演算装置。
  3. 【請求項3】 前記第1の積和回路と第2の積和回路と
    に接続される記憶手段を更に備えたことを特徴とする請
    求項1または請求項2の何れかに記載の剰余演算装置。
  4. 【請求項4】 第1の基底で表現された剰余演算系の第
    1中間変数を基底変換し、第1の基底と異なる第2の基
    底に基づく剰余演算系の中間変数を得る第1基底変換処
    理と、 該第1の基底で表現された剰余演算系の、第1中間変数
    とは異なる第2中間変数を基底変換し、該第2の基底に
    基づく剰余演算系の中間変数を得る第2基底変換処理と
    を備えたモンゴメリ乗算を、基底変換を処理可能な第1
    の積和演算手段と第2の積和演算手段とを備えた剰余演
    算装置を利用して、演算処理させる剰余演算方法であっ
    て、 前記第1基底変換処理を前記第1の積和演算手段にて、
    前記第2基底変換処理を前記第2の積和演算手段にて並
    列実行させるよう制御することを特徴とする剰余演算方
    法。
  5. 【請求項5】 整数を基底Aおよび基底Bの剰余演算系
    で表現し、該基底Aに基づいて求められた値を該基底B
    に基づいて表される値へ基底変換を行う第1基底変換処
    理と、該基底Bに基づいて求められた値を該基底Aに基
    づいて表される値へ基底変換を行う第2基底変換処理
    と、を含む1回の剰余付き乗算を繰り返すことにより、
    演算結果を得るべき乗剰余演算方法であって、 k回目の第1基底変換処理と(k+1)回目の第1基底
    変換処理とを並列実行するよう制御する第1ステップ
    と、 (k+1)回目の第2基底変換処理と(k+2)回目の
    第2基底変換処理とを並列実行するよう制御する第2ス
    テップと、を繰り返し実行してべき乗剰余演算を行うこ
    とを特徴とするべき乗剰余演算方法。
  6. 【請求項6】 べき乗剰余演算をモンゴメリ乗算の繰り
    返し処理で実装する場合のループ処理内の、最初のモン
    ゴメリ乗算に入力される第3の中間変数の係数が各ルー
    プ処理で等しくなるように、該ループ処理内の最後のモ
    ンゴメリ乗算において中間変数と掛け合わせる定数の係
    数を設定することを特徴とする請求項5記載のべき乗剰
    余演算方法。
  7. 【請求項7】 第1の基底で表現された剰余演算系の第
    1中間変数を基底変換し、第1の基底と異なる第2の基
    底に基づく剰余演算系の中間変数を得る第1基底変換処
    理と、 該第1の基底で表現された剰余演算系の、第1中間変数
    とは異なる第2中間変数を基底変換し、該第2の基底に
    基づく剰余演算系の中間変数を得る第2基底変換処理と
    を備えたモンゴメリ乗算を、基底変換を処理可能な第1
    の積和演算手段と第2の積和演算手段とを備えた剰余演
    算装置を利用して、演算処理させる剰余演算方法であっ
    て、 第1の基底または第2の基底のうちの何れか一方の基底
    によって表現される値を入力するステップと、 k回目の第1基底変換処理と(k―1)回目の第2基底
    変換処理とを並列実行するよう制御するステップと、 前記第1の基底または前記第2の基底のうちの他方の基
    底によって表現される値を出力するステップとを備えた
    ことを特徴とする剰余演算方法。
JP2001011300A 2001-01-19 2001-01-19 べき乗剰余演算方法、および、剰余演算方法 Expired - Fee Related JP3540280B2 (ja)

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)

* Cited by examiner, † Cited by third party
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株式会社 ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
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