JP4223819B2 - べき乗剰余演算装置及びそのプログラム - Google Patents

べき乗剰余演算装置及びそのプログラム Download PDF

Info

Publication number
JP4223819B2
JP4223819B2 JP2003011941A JP2003011941A JP4223819B2 JP 4223819 B2 JP4223819 B2 JP 4223819B2 JP 2003011941 A JP2003011941 A JP 2003011941A JP 2003011941 A JP2003011941 A JP 2003011941A JP 4223819 B2 JP4223819 B2 JP 4223819B2
Authority
JP
Japan
Prior art keywords
value
calculation
variable
algorithm
storage area
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
JP2003011941A
Other languages
English (en)
Other versions
JP2004226516A (ja
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003011941A priority Critical patent/JP4223819B2/ja
Publication of JP2004226516A publication Critical patent/JP2004226516A/ja
Application granted granted Critical
Publication of JP4223819B2 publication Critical patent/JP4223819B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、暗号演算で用いられるべき乗剰余演算を高速にかつ低コストで実行する技術に関する。
【0002】
【従来の技術】
まず本発明の基礎となっているモンゴメリ乗算アルゴリズムについて説明する。 モンゴメリ乗算アルゴリズムは、RSA暗号、DSS、DH(Diffie-Hellman)鍵交換等の演算で用いるべき乗剰余計算、y=xemodm(y,x,e及びmは整数で、鍵長がnのときm<2nとする)、を高速に処理するアルゴリズムとして広く知られている。モンゴメリ乗算に関しては、例えばHandbook of Applied Cryptography, Alfred J. Menezes, Paul C. van Oorshot, Scott A. Vanstone(非特許文献1)に記述されている。 まずここではRSA演算アルゴリズムへのモンゴメリ乗算アルゴリズムの適用について述べることにする。
【0003】
事前準備として本明細書で用いる表記方法の説明を行っておく。整数mをb進数、n桁で表わすと、
m = mn-1・bn-1 + … + m1・b1 + m0・b0(m0,m1 … mn-1は整数で、0≦ m0,m1 … mn-1<b)となるが、これを
m = (mn-1 … m1 m0)b と表わすことにする。
また本明細書ではアルゴリズムの表記をC言語の表記方法にしたがって示す。
【0004】
RSA演算で行うべき乗剰余演算(y=xemodm、ここでy,x,e及びmは整数、鍵長がnとする)は剰余定理によって以下のように展開できる。
Figure 0004223819
これに対しモンゴメリ乗算アルゴリズムを適用するために、上記の(x*y)modmあるいは(x*x)modmの計算に対し以下のように変形を加える。
Figure 0004223819
【0005】
ここでy=(x*y)R-1modm(もしくはx=(x*x)R-1modm)の部分に対しモンゴメリ乗算アルゴリズムを適用すると以下となる。
Figure 0004223819
上記のアルゴリズム3で、bとしては通常2のべき乗数が選ばれることが多い。これは計算機内での数値が2進法で表わされているため、bを2のべき乗にすることで上記の(1)や(2)式でのbに関わる計算部分が簡単になるためである。bを2のべき乗とするとgcd(m,b)=1の条件からmは奇数であることが必要条件となるが、例えばRSA演算では鍵の強度の観点からmを大きな素数の積とするため、実用上は奇数と考えてよい。またDiffie−Hellman鍵交換アルゴリズムにおいても、mには大きな素数を選択するため、mが偶数となることは実質的に有り得ないため、この必要条件が問題となることはない。
【0006】
ここで上記のアルゴリズム3でb=2n (ここでのnとはm<2nなる整数)の場合には以下のようになる。
Figure 0004223819
図9は、上記アルゴリズム3−1をハードウェアで実装した場合の計算の手順を示す図である。図9で例えばY,Xを各々被乗数、乗数とすると、乗数Xを下位から一定の長さで分割し、乗算器によって順にYに乗算して得た値を縦方向に同じ桁が並ぶように配列すると、図示するような平行四辺形で表現される。まずY・x0,Y・x1,・・・,Y・xn-1の乗算結果をCSA(carry save adder)によって加算すると、X・Yが得られる。ここでx0,y0は最下位桁の値、xn-1,yn-1は最上位桁の値を示す。このX・Yの演算結果の下位半分のみを取り出したものをLとする。Lにm’を乗算してその演算結果の下位半分のみを取り出したものがUとなる。Uにmを乗算した結果にX・Yを加算し、上位半分のみを取り出すと新しいYが得られる。最後にY≧mであればY=Y−mの剰余演算を行って目的のYが得られる。
【0007】
RSAの鍵長は、512ビットあるいは1024ビット以上と長いため、上記アルゴリズムの乗算部分を1マシンサイクルで実行するのはゲート数の観点から困難であり、数サイクルに分割して実行される。また上記計算手順によれば乗算が3回行われるが、2回目および3回目の乗算はいずれも以前の乗算の結果と固定値との乗算となっている。したがって前者を乗数、後者を被乗数とすることによって、1つ前の乗算が実行開始されて最下位桁から順に結果が出力されていくと、その結果を用いて順次次に続く乗算を開始することができる。このため乗算器の個数を十分に用意すると、いわゆるパイプライン実行することが可能となり性能を向上させることができる。
【0008】
またモンゴメリ乗算の特徴の1つとして、演算の準備段階でm’=−m-1modbなるm’を求める処理が必要となる。この処理内容は、bの値の選び方により計算方法は大きく変わる。上述したように、実用的にはbは2のべき乗としてよいから、例えばb=2の場合が最も簡単であり、m’=1の固定値となる。ただしgcd(m,b)=1からmは奇数でなくてはならない。しかしb=2nとしてnがある程度小さいうちは、b=2の場合の拡張となり、計算なしに求めることも可能である。すなわちmのb進数での最下位桁の値とm’の値の対応表を予め作成しておき、計算時にこの対応表から値を引いてくるといった方法をとることができる。しかしnがある程度大きい値となると、計算を行ってm’を求めることになる。この計算の方法として、例えば特開平10−207689号公報「逆元計算装置及び逆元計算方法」(特許文献1)がある。これはb=2の場合の逆元を求めておき、これを繰り返し計算によってb=2nへと拡張していく方法である。この計算のための専用演算器をもつと、演算自体は加算におけるキャリーの伝播を排除することができ、高速に実行することができる。
【0009】
【特許文献1】
特開平10−207689号公報
【非特許文献1】
Handbook of Applied Cryptography, Alfred J. Menezes他, CRC Press, October 16, 1996, p600〜603
【0010】
【発明が解決しようとする課題】
本発明が解決しようとする課題は2つある。まず第1の課題について述べる。従来の技術で引用した特許文献1の技術は、キャリーの伝播を排除することができる方式であるが、この利点を十分に発揮するためには専用演算器が必要である。この専用演算器は、実はアルゴリズム3で比較的bを小さくした場合の(1)及び(2)式を実行するための専用演算器と似ており、ゲートの共有化をはかることができる。しかしこの技術が大きな効果を発揮するのは、逆元の計算量が多くなる場合、すなわちbが大きい場合であって、この場合にはアルゴリズム3の(1)及び(2)式を実行するための専用演算器とは構成が大きく異なるため、ゲートの共有化は困難となる。専用演算器を用いないとすると汎用的な加算器を用いることになり、この場合には、繰り返し計算の中で1回ごとにキャリーの伝播を伴う計算を必要とするため、この発明の性能上の効果は小さくなる。なおここでいうbが小さい場合とは、あらかじめ逆元の対応表を作成しておけるぐらい小さいことを意味する。
【0011】
ところでbが大きい場合、例えばアルゴリズム3−1のようなb=2nの場合であって、この場合、同アルゴリズムの(1)式、(2)式から明確なように乗算器が必要となる。RSA演算はデータ幅が512ビット、あるいは1024ビット以上と大きいが、実際の演算器のインプリメンテーションでは適切なゲート数におさえるため、128ビットあるいは256ビット幅のようにより幅の狭い乗算器を実装することになる。このような状況にあって、さらに逆元を求めるための専用演算器を別途追加するのは実装上、ゲート数の増大をまねき困難である。それよりその分のゲート数を乗算器のビット幅を広げるために使用した方が性能が向上する。このような観点から特許文献1の技術は、そのアルゴリズムに関しては優れているが、RSA演算器への適用を考えた場合に実装上の実効的効果は小さいといえる。
【0012】
本発明の第1の目的は、逆元専用演算器を用いないで高速に逆元を計算する技術を提供することにある。
【0013】
次に第2の課題について述べる。従来の技術でも述べたように、アルゴリズム3−1において、(1)式および(2)式の3回分の乗算は、データ依存があるものの、最下位桁から順次、次の乗算を開始することができ、乗算器等の必要なハードウエアがあればパイプライン実行をおこなうことができ、性能を向上させることができる。ここでさらに3回の乗算を実行した後についても考える。アルゴリズム3−1は、アルゴリズム2の(2)式ないし(3)式に相当するが、これらの式の計算を行った結果の間には以下のような依存関係がある。ここでアルゴリズム2の(2)式はif文の条件の成立/不成立により実行するかどうか決まるため、以下の3とおりとなる。
(a)(2)式→(3)式:データ依存関係なく並列実行が可能
(b)(3)式→(2)式:xでデータ依存関係あり、yはデータ依存関係なし
(c)(3)式→(3)式:xでデータ依存関係あり
上記の3項目のうち、(a)はデータの依存関係がないため並列実行が可能である。つまりパイプライン実行が可能である。(c)はxでデータ依存関係があり、しかもアルゴリズム3−1の(3)式からyがm以上であるかどうかによってyが決まる。y≧mのような大小関係の比較は、yからmを減じ、符号が負かどうかの判定をおこなう必要があるため、ここで行いたいような最下位桁から順次計算を行いながら次の計算にその結果を使用していくようなことはできない。つまりパイプライン実行ができないのである。(b)についても同様の問題があるが、(2)式を実行するのはj[i]==1の場合であって、実行的にはforループによる繰り返し計算において、2回に1回程度しか(2)式は実行されないと考えられる。したがってデータ依存関係があって、しかもforループによる繰り返しで毎回計算が必要な(3)式の計算によって、RSA演算の性能は決まるのである。
【0014】
本発明の第2の目的は、(c)に関わるパイプライン実行を阻む問題を解決し、モンゴメリ乗算を用いたべき乗剰余演算の性能を向上できる計算技術を提供することにある。
【0015】
【課題を解決するための手段】
第1の課題を解決するための本発明は、m’=−m-1modbを計算する技術であり、
(1)初期値として、変数m’を格納する第1の記憶手段に定数1を設定し、変数kを格納する第2の記憶手段に入力された値mを設定するステップと、
(2)変数kに2を加えたk+2の値に変数m’を乗ずる演算をbをモジュラスとする剰余演算の下で行って得られた値を第1の記憶手段上の変数m’に設定するステップと、
(3)上記(2)で得られたk+2の値に変数kを乗ずる演算をbをモジュラスとする剰余演算の下で行って得られた値を第2の記憶手段上の変数kに設定するステップと、
(4)上記(2)及び(3)のステップをパラメータf=log2n+1回まで行った後に得られた値m’を出力するステップと
を有するべき乗剰余演算技術を特徴とする。
【0016】
第2の課題を解決するための本発明は、上記xyR-1modmの計算について、
u=xym’modbを計算し、
もしxy>0であればy=(xy+um)/b−mを計算し、
xy<0であればy=(xy+um)/b+mを計算し、y=0ならばそのままとし、
得られたx及びyの値を次のeのビット値についての計算の入力として用い、eの全ビット値について上記計算を行った後にy>0ならばyの最終結果を目的の計算結果とし、y≦0ならばy=y+mの値を目的の計算結果とし、1つのxyR-1modm演算と次のxyR-1modm演算とを並列演算するように構成したべき乗剰余演算技術を特徴とする。
【0017】
【発明の実施の形態】
(1)第1の課題を解決するための実施形態
まず第1の課題を解決するためのアルゴリズムについて説明する。まずモンゴメリ乗算アルゴリズムで用いる逆元とはm’=−m-1modbであるから、mm’modb=b−1となるm’を求めるアルゴリズムを考える。RSA演算、Deffie−Hellman鍵交換アルゴリズムを計算機上で実装する場合には、bは2のべき乗でmは奇数としてよい。そうするとm=k−1とすると
m ( m + 2 ) = k2 - 1、さらにm ( m + 2 ) { m ( m + 2 ) + 2 } = k4 - 1
となり、同様な操作を繰り返すと最終的に、
m ( m + 2 ) { m ( m + 2 ) + 2 } ・・・ = k2^n - 1
とできる。m=k−1でmは奇数であるからkは偶数、つまりk=2iと表わせるから、
m ( m + 2 ) { m ( m + 2 ) + 2 } ・・・ mod b = { (2i)2^n - 1 } mod b = b - 1
となる。つまりm' = ( m + 2 ) { m ( m + 2 ) + 2 } ・・・ mod bとすればよい。
【0018】
図1は、第1の課題を解決するためのアルゴリズムをC言語の表記方法で表現したものである。このアルゴリズムでb=2n(nは鍵長)とすると、nが2のべき乗数であれば、
f=log2n+1
となり、整数となる。
【0019】
図2は、このアルゴリズムを実行する計算機のプログラムの処理の流れを示すフローチャートである。この計算機は、プロセッサとメモリを有し、プログラムはメモリに格納されており、またプロセッサは、このプログラム中の命令を解読して実行する機構、データを格納するレジスタ、加算器及び乗算器を備える汎用計算機とする。計算機は、まず定数n,mの値を入力あるいは他の呼出元プログラムから受け取る(ステップ51)。mはnビット長の数値とする。次にパラメータf=log2n+1の計算を行い、その計算結果のfの値をデータレジスタ又はメモリに格納する(ステップ52)。次にデータレジスタ又はメモリ上の第1の記憶領域上の変数m’に1の値を設定し、データレジスタ又はメモリ上の第2の記憶領域上の変数kに入力されたmの値を設定し、データレジスタ又はメモリ上のループカウンタiを0に設定する(ステップ53)。ここで第1の記憶領域及び第2の記憶領域は、各々nビット長の記憶領域とする。
【0020】
次にデータレジスタ上でk+2の加算を行った値に変数m’を乗算しその下半分のnビットのみを取り出して新しいm’として第1の記憶領域に保存し、データレジスタ上のk+2の値に第2の記憶領域上の変数kを乗算しその下半分のnビットのみを取り出して新しいkとして第2の記憶領域に保存する(ステップ54)。次にループカウンタiに1を加える(ステップ55)。次にiとfを比較し、i<fであれば(ステップ56Yes)、ステップ54に戻る。i<fでなければ(ステップ56No)、計算結果のm’の値を出力あるいは呼出元プログラムに返す(ステップ57)。ただしステップ54の最終回のk=k(k+2)modbの計算は実行しなくともよい。
【0021】
上記アルゴリズムが実行する計算は、乗算、加算および剰余演算から成っており、アルゴリズム3−1の(1)式及び(2)式を計算できる汎用計算機があれば実行可能である。すなわち追加の専用演算器は必要とされない。
【0022】
次に第1の課題を解決するためのアルゴリズムを汎用的なプロセッサで実行した場合の実施例の効果について述べる。上記プログラムを実行する際には、ステップ54において2log2n回の乗算とlog2n回の加算が必要である。従来技術として、例えば特許文献1の技術ではn回の加算が必要である。乗算と加算のコストの比較を一般化するのは困難であるが、まずオーダとして本発明がlog2n、従来技術ではnであるので、回数が大幅に削減できることは明白である。通常nは512,1024,2048が多く用いられるが、n=1024で両者の比較を定量的に行うと以下のようになる。
【0023】
一般的なプロセッサは64ビットの乗算器と加算器を持っており、これらの実行時間比は通常2対1である。n=1024の場合、1024ビットデータの乗算、加算が必要となるが、各々64ビット乗算が256回、64ビット加算が16回となる。ここで用いる乗算では、乗算結果に対し剰余演算(modb)の計算を行うために、乗算結果の上位半分は不要となるので、実際には64ビット乗算は16×16/2+16=136回となる。従って性能比は以下となる
従来技術/本発明 = (n*16) /(2log 2 n *2*136 + log 2 n *16)=〜 3
つまり本実施例によれば、従来技術に比べて3倍程度性能向上するという効果がある。暗号強度の観点から鍵長が長くなる傾向にあるため、本発明の効果はより大きくなっていくことになる。専用演算器を用いればさらに高速になるが、本発明は、逆元を求めるだけのために専用演算器を置かないことを特徴とするので、専用演算器の構成及び効果について言及しない。
(2)第2の課題を解決するための実施形態
次に第2の課題を解決するためのアルゴリズムについて説明する。アルゴリズム3−1を前提として、ここの(3)式でy(以下では入力のyと区別するためYとする)に入力される値の大きさは以下のようになる。
u = xym' mod b から 0 <= u < bであるから、
0 < Y = (xy + um) / b < (xy + bm)/b = xy/b + m ---- (1)
ここで0 <= x,y < m < bであるから、0 <= xy/b < m ---- (2)
したがって、(1)と(2)から0 < Y < 2mとなる。
【0024】
Y−mの範囲は、上記の(1)式から−m<Y−m<xy/bであるから、|Y−m|<mである。ここでアルゴリズム3−1の(3)式で、y≧mでもy<mでもyの大きさに関係なくy=y−mを演算したとすると次の演算でどうなるかを考える。Y=(xy+um)/bであり、|x|<m,|y|<mであるから、以下のようになる。
xy > 0 ならば、0 < Y = (xy + um) / b < (xy + bm)/b = xy/b + m < 2mであり、| Y-m | <= mである。
xy < 0 ならば、-2m < (xy - bm)/b = xy/b - m < Y = (xy + um) / b < 0であり、| Y+m | < mである。
(xy=0の場合は、Y=0)
つまりxもyもモンゴメリ乗算開始時の入力データであるから、入力データの符号を見て同符号であればy−mを、異符号であればy+mを結果として出力すれば、結果は常にその絶対値がmより小さくなり発散していくことはない。これによってアルゴリズム3−1の(3)式に相当する部分は入力データの符号により確定的に演算を行うことができるようになる。つまりこれによって、前のxyR-1modm演算と並列に次のxyR-1modm演算を実行できるようになるのである。
【0025】
図3は、第2の課題を解決するためのアルゴリズムをC言語の表記方法で表現したものである。ここでb=2nであり、m’は上記のようにm’=−m-1modbを計算した結果である。図3の(2)、(3)式は入力データの符号のみで、実行の要否を決定することができ、yの下位桁から出力される結果をそれより上位の桁の結果を待たずに次の演算に用いることが可能となる。最終的な結果yは|y|<mとなるため、アルゴリズム2を以下のようにする必要がある。
Figure 0004223819
次に図3のアルゴリズムとアルゴリズム2−2を用いた専用演算器の実施例について説明する。図4は、図3のアルゴリズムとアルゴリズム2−2を用いた専用演算器の例である。この専用演算器は、3つの演算器、すなわちX2-1modmの演算を行う演算器40、XYR-1modmの演算を行う演算器41および演算器42を含んでいる。10,11,12はセレクタ、20はラッチ、30はシフタである。TRGはトリガである。アルゴリズム2−2のX=(X*R)modmの計算は、汎用演算器を用いて行っておくものとする。
【0026】
演算器40の内部は、鍵長の1/4倍のデータ幅の乗算器8個、加算器、データラッチおよびそれらを制御する回路から成る。演算器40内部の動作を説明する図が図5である。これは図3のアルゴリズムを実行しているにすぎないが、異なる点が2点ある。図3でいうxyは、図5ではXXであるため、常に図3の(2)式が実行されることになる。図5は図9の従来例と同様に乗算の演算部分を平行四辺形の形で表わしている。その中に記載した数字は、n/4ビットのサイズをもつ各部分を実行するマシンサイクルの順序番号を示している。()で囲んだサイクル番号は、同じサイクル番号の上の結果と同じになるので計算の必要がないことを示す。計算は下位桁から順に上位の桁の方に向けて実行される。すなわちX2-1modmの計算を行うために13サイクル要し、3つの乗算(XX,m’L,mU)が1サイクルずれでパイプライン実行できるような実行順序となっている。さらに10サイクル目以降は実行結果を下の桁から順次出力するが、その結果がまた演算器40に入力されて次のX2-1modm演算の実行が開始される。
【0027】
また演算器41の内部は、鍵長の1/4倍のデータ幅の乗算器8個、加算器、データラッチおよびそれらを制御する回路から成る。演算器41内部の動作を説明する図が図6である。図6は図5と同様に平行四辺形の中に記載した数字は各部分を実行するサイクルを示している。すなわちXYR-1modmの計算を行うために13サイクル要し、3つの乗算(XY,m’L,mU)が1サイクルずれでパイプライン実行できるような実行順序となっている。XYR-1modmは、アルゴリズム2−2でj[i]==1の場合のみ実行される。これは演算器41内部でYからの入力データを保持しているラッチをTRG=1の場合のみ更新し、それ以外の場合は更新しないという方法で実現できる。
【0028】
図4の専用演算器によって演算が開始されるとき、演算器のラッチがリセットされ、セレクタ10,11,12は各々e,x,1を選択し、各々ラッチ20あるいは演算器40、41に入力する。mとRは演算中は固定値となるので、外部から同じ信号が演算器に入力されつづける。なおm’はあらかじめ演算器40と演算器41内部のラッチに保持されているとする。こうして演算器の各ラッチに初期値が設定されると、演算が開始される。セレクタ10,11,12は、各々シフタ30、演算器40、演算器41内部の信号を選択するように切り替えられ、演算器40,41が1回のモンゴメリ乗算を行うごとにラッチ20の内容は右に1ビットシフトした値に設定される。ラッチ20の最下位ビットは演算器41のTRG信号として入力し、1であれば計算結果を演算器内部にあるYの値を保持しているラッチの値にセットし、次の演算でこの値をYとして使用するようにする。こうして鍵長分の演算が行われると、最後に演算器41の出力結果が演算器42に入力し、値が負ならmが加算され、そうでないならその演算を行わないで値を出力する。この値がべき乗剰余演算の結果となる。なお演算器42は、1回しか使用されないから、その計算を汎用演算器で実施してもよい。
【0029】
次にこれら演算器40,41のパイプライン動作の様子を図7に示す。各四角内部の数字は各演算器の実行サイクル番号を示しており、図5と図6の平行四辺形の内部に書いた数字に対応するものである。X2-1modmもXYR-1modmも、実行を開始してから10サイクル目で結果の最下位桁から出力しはじめ、この結果を使用して次の演算が開始される。この場合は10サイクルピッチでモンゴメリ乗算が行われていく。比較のために従来技術を使用した場合を図8に示す。従来技術によれば、X2-1modmもXYR-1modmも最後の全加算の結果からさらに剰余演算を行う必要があるが、ここでは全加算と同時に剰余演算を実行している。結果は13サイクル目で確定するため、13サイクルピッチでモンゴメリ乗算が行われることになる。このことから、本発明の性能は、従来技術に比べて23%向上することになる。
【0030】
言い換えれば、演算器40,41への入力データの符号により、計算を確定的に行うことができ、演算結果の下位桁から出力される結果を順次、次の演算に使用することができ、性能向上をはかることができる。
【0031】
ここでは鍵長の1/4の乗算器と加算器をベースにして説明したが、本発明はこれに限定されないことは明白であろう。本発明の本質はモンゴメリ乗算の最後に行われる加減算の演算とオーバラップして次の演算を開始できることになる。これによって、加減算の演算は次演算で必要とするデータピッチに合わせて結果を出力すればよいので、大きなビット幅としなくても性能を劣化させることはないし、その部分の演算時間を隠すことができるため、ゲート削減効果と性能向上という2通りの効果を発揮させることができる。
【0032】
【発明の効果】
以上述べたように第1の課題を解決するための本発明によれば、逆元の計算の性能向上を図ることができる。また第2の課題を解決するための本発明によれば、べき乗剰余演算を高速に実行することができる。
【図面の簡単な説明】
【図1】実施形態の逆元をもとめるアルゴリズムを示す図である。
【図2】実施形態の逆元をもとめるアルゴリズムを実行するプログラムの処理手順を示すフローチャートである。
【図3】実施形態のパイプライン実行を可能にするモンゴメリ乗算アルゴリズムを示す図である。
【図4】実施形態のRSA演算を行う演算器の構成を示す図である。
【図5】実施形態の演算器の内部動作を説明する図である。
【図6】実施形態の演算器の内部動作を説明する図である。
【図7】実施形態のRSA演算器の並列動作の様子を示す図である。
【図8】従来技術によるRSA演算器の動作の様子を示す図である。
【図9】従来技術によるモンゴメリ乗算の内部動作を示す図である。
【符号の説明】
10,11,12・・・セレクタ、20・・・ラッチ、30・・・シフタ、40,41,42・・・演算器

Claims (2)

  1. 乗算及び加算が可能な演算手段を有するプロセッサとメモリとを備え、b=2とし、n,mを整数とするとき、m’=−m−1modbを計算するべき乗剰余演算装置において、
    (1)前記n,mを入力する手段と、
    (2)初期値として、変数m’を格納する前記メモリの第1の記憶領域に定数1を設定し、変数kを格納する前記メモリの第2の記憶領域に入力された値mを設定する手段と、
    (3)前記第1,2の記憶領域上のm’,kを参照し、前記演算手段を用いて、変数kに2を加えたk+2の値に前記変数m’を乗ずる演算を前記bをモジュラスとする剰余演算の下で行って得られた値を前記第1の記憶領域に保存する手段と、
    (4)前記第2の記憶領域上のkを参照し、前記演算手段を用いて、上記(3)で得られたk+2の値に変数kを乗ずる演算を前記bをモジュラスとする剰余演算の下で行って得られた値を前記第2の記憶領域に保存する手段と、
    (5)上記(3)及び(4)手段による処理をパラメータf=logn+1回まで行った後に得られた値m’を出力する手段とを有することを特徴とするべき乗剰余演算装置
  2. 乗算及び加算が可能な演算手段とメモリとを有する計算機に、b=2とし、n,mを整数とするとき、m’=−m−1modbを計算させるプログラムであって、前記計算機
    (1)前記n,mを入力する手段と、
    (2)初期値として、変数m’を格納する前記メモリの第1の記憶領域に定数1を設定し、変数kを格納する前記メモリの第2の記憶領域に入力された値mを設定する手段と、
    (3)前記第1,2の記憶領域上のm’,kを参照し、前記演算手段を用いて、変数kに2を加えたk+2の値に前記変数m’を乗ずる演算を前記bをモジュラスとする剰余演算の下で行って得られた値を前記第1の記憶領域に保存する手段と、
    (4)前記第2の記憶領域上のkを参照し、前記演算手段を用いて、上記(3)で得られたk+2の値に変数kを乗ずる演算を前記bをモジュラスとする剰余演算の下で行って得られた値を前記第2の記憶領域に保存する手段と、
    (5)上記(3)及び(4)手段による処理をパラメータf=logn+1回まで行った後に得られた値m’を出力する手段として機能させるためのプログラム。
JP2003011941A 2003-01-21 2003-01-21 べき乗剰余演算装置及びそのプログラム Expired - Fee Related JP4223819B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003011941A JP4223819B2 (ja) 2003-01-21 2003-01-21 べき乗剰余演算装置及びそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003011941A JP4223819B2 (ja) 2003-01-21 2003-01-21 べき乗剰余演算装置及びそのプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008257078A Division JP4850884B2 (ja) 2008-10-02 2008-10-02 べき乗剰余演算器

Publications (2)

Publication Number Publication Date
JP2004226516A JP2004226516A (ja) 2004-08-12
JP4223819B2 true JP4223819B2 (ja) 2009-02-12

Family

ID=32900695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003011941A Expired - Fee Related JP4223819B2 (ja) 2003-01-21 2003-01-21 べき乗剰余演算装置及びそのプログラム

Country Status (1)

Country Link
JP (1) JP4223819B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2884005B1 (fr) * 2005-04-01 2007-06-01 Thales Sa Methode d'implementation de la multiplication modulaire de montgomery et son dispositif
KR101548174B1 (ko) 2008-12-02 2015-09-07 삼성전자주식회사 모듈러스의 음의 역원을 구하는 방법
KR101321259B1 (ko) * 2013-05-23 2013-10-29 목포대학교산학협력단 몽고메리 역원 알고리즘을 위한 뺄셈 연산 장치 및 그 방법
KR101980448B1 (ko) * 2017-10-27 2019-05-20 인하대학교 산학협력단 Rsa 알고리즘 용 몽고메리 알고리즘 파라미터 계산 방법

Also Published As

Publication number Publication date
JP2004226516A (ja) 2004-08-12

Similar Documents

Publication Publication Date Title
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
Shieh et al. A new modular exponentiation architecture for efficient design of RSA cryptosystem
TW550498B (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
Kaihara et al. A hardware algorithm for modular multiplication/division
JP4201980B2 (ja) マルチプレシジョン整数演算用の装置
JP2004501396A (ja) 整数の計算フィールド範囲の拡張
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
JP2004534266A (ja) ハードウェアにおいて算術演算を効率的に行う方法および装置
Liu et al. High performance modular multiplication for SIDH
KR101103893B1 (ko) 몽고메리 곱셈 내에서의 simd 명령어들의 사용
JP4302640B2 (ja) 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体
Koç et al. Fast algorithm for modular reduction
US8781112B2 (en) Signed montgomery arithmetic
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
KR20040060445A (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
KR102496446B1 (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
JP2008535011A (ja) モンゴメリーのモジュラー乗算を実行する方法及びそのための装置
JP4223819B2 (ja) べき乗剰余演算装置及びそのプログラム
JPH0628155A (ja) 除算方法および除算装置
JP4850884B2 (ja) べき乗剰余演算器
Wang et al. New VLSI architectures of RSA public-key cryptosystem
JP3660075B2 (ja) 除算装置
US7167885B2 (en) Emod a fast modulus calculation for computer systems
WO2023043467A1 (en) A method and architecture for performing modular addition and multiplication sequences

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050804

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081002

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: 20081028

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081120

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111128

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees