JP3785044B2 - べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 - Google Patents
べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 Download PDFInfo
- Publication number
- JP3785044B2 JP3785044B2 JP2001013565A JP2001013565A JP3785044B2 JP 3785044 B2 JP3785044 B2 JP 3785044B2 JP 2001013565 A JP2001013565 A JP 2001013565A JP 2001013565 A JP2001013565 A JP 2001013565A JP 3785044 B2 JP3785044 B2 JP 3785044B2
- Authority
- JP
- Japan
- Prior art keywords
- mod
- representation
- rns
- remainder
- residue
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/729—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、対象データC及び独立パラメータp、q、dについてm=C^d mod p*qを求めるためのべき乗剰余計算装置及びべき乗剰余計算方法に関する。
【0002】
【従来の技術】
整数演算(加減乗算)の並列処理が可能となる剰余系(Residue Number System:RNS)表現をベースに、公開鍵暗号のアルゴリズム(べき乗剰余演算)を実現するための基本要素となる剰余乗算を、モンゴメリ乗算と融合させて実現するアルゴリズムおよびそのハードウェア構成が提案されている。これをRNSモンゴメリ乗算と呼ぶことにする。
【0003】
ここで、RNS表現(剰余系表現)について説明する。RSA暗号などの公開鍵暗号の多くでは多倍長整数を利用して変換を行うが、多倍長整数の表現に通常利用されるのは基数を2とした記数法(Radix representation)、いわゆる2進数表現である。これとは別の方法に、複数の法a1 ,a2 ,…,an を用意し、整数xをそれらの法による剰余値x1 ,x2 ,…,xn の組で表現する方法がある。すなわち、以下の式による。
x1 =x mod a1 ,x2 =x mod a2 ,…,xn =x mod an
この表現法はRNS表現と呼ばれる。
【0004】
以下では、RNS表現で用いる法の集合を、基底(base)と呼ぶものとする。また、基底の要素数nを基底サイズと呼ぶものとする。基底サイズnの基底aは、次のように表される。
a={a1 ,a2 ,…,an }
RNS表現では、各基底の要素は、通常、互いに素な正整数を用い、中国剰余定理により“基底の要素の積”未満の正整数はRNS表現により一意に表現できることが保証される。すなわち、
基底a={a1 ,a2 ,…,an }
基底aの要素の積A=a1 *a2 *…*an
としたときに、基底aを用いたRNS表現によりA未満の正整数を表現できる。
【0005】
以下では、基底aを用いてRNS表現された整数xを、<x>_aで表すものとする(基底を省略して<x>で表すこともある)。すなわち、
である。
【0006】
なお、以下の演算で、2種類の基底を用いる場合に、基底a={a1 ,a2 ,…,an1 }と基底b={b1 ,b2 ,…,bn2 }について、aUbは、{a1 ,a2 ,…,an1 }と{b1 ,b2 ,…,bn2 }の結合を表し、<x>_aUbは、基底aUbによるxのRNS表現を表す(すなわち、<x>_aUbは、<x>_a=(x mod a1 , x mod a2 ,…, x mod an1 )と<x>_b=(x mod b1 , x mod b2 ,…, x mod bn2 )の結合を表す)。また、この場合に、2種類の基底n1=n2=nとして説明する。
【0007】
RNS表現の利点は、基底の全要素の積Aを法とした加算、減算、乗算が簡単に計算できることである。すなわち、以下のように各要素をそれぞれの法によって独立に加算、減算、乗算した結果が、所望の結果となる。
<x>_a+<y>_a (mod A)=(x1 +y1 (mod a1 ), x2 +y2 (mod a2 ),…, xn +yn (mod an ))
<x>_a−<y>_a (mod A)=(x1 −y1 (mod a1 ), x2 −y2 (mod a2 ),…, xn −yn (mod an ))
<x>_a *<y>_a (mod A)=(x1 *y1 (mod a1 ), x2 *y2 (mod a2 ),…, xn *yn (mod an ))
なお、上記の演算を、それぞれ、RNS加算、RNS減算、RNS乗算と呼ぶものとする。
【0008】
従って、n個の演算はすべて並列に処理可能であるため、n個の演算ユニットを用意すればすべてを並列に処理して高速な処理が行えるし、用意する演算ユニットがn個に満たなくても1個からn個まで増やす程それに比例して演算速度を向上できる。
【0009】
次に、RNSモンゴメリ乗算およびRNSモンゴメリべき乗について説明する。
【0010】
RNSモンゴメリ乗算は、法pでの剰余付き乗算(<x>*<y> (modN))に関し、モンゴメリ乗算と呼ばれる手法をRNS表現での演算に応用する手法であり、概ね以下の手順で計算される。
【0011】
[RNSモンゴメリ乗算:MM( <x>_aUb, <y>_aUb, N, aUb )]
入力:<x>_aUb, <y>_aUb, N
ただし、x,y < 2N
基底:a,b
ただし、x,y,N < A,B
出力:<w>_aUb
ただし、w=x*y*B^(-1) mod N
<処理内容>
Step-M-0: <(−N^(-1))>_bを計算する。
Step-M-1: <s>_a=<x>_a * <y>_aを計算する。
Step-M-2: <s>_b=<x>_b * <y>_bを計算する。
Step-M-3: <t>_b=<s>_b * <(−N^(-1))>_bを計算する。
Step-M-4: <t>_bを<t>_aへ基底変換する。
Step-M-5: <u>_a=<t>_a * <N>_aを計算する。
Step-M-6: <v>_a=<s>_a + <u>_aを計算する。
Step-M-7: <w>_a=<v>_a * <B^(-1)>_aを計算する。
Step-M-8: <w>_aを<w>_bへ基底変換する。
【0012】
なお、上記の手順のうちStep-M-4やStep-M-8の基底変換は、ある基底によるRNS表現に対応するある整数(例えば、基底bによるRNS表現<t>_bに対応する整数t)の、他の基底によるRNS表現(例えば、基底aによるRNS表現<t>_a)を求める処理である。
【0013】
RNSモンゴメリ乗算器も並列に処理を行う演算ユニットを増加させることにより、高速処理が可能となる。
【0014】
また、RNSモンゴメリ乗算を繰り返し行うことで(RNSモンゴメリ乗算器を繰り返し利用することで)べき乗計算を行うことによりRSA暗号の暗号処理を構成する方法が提案されている。このべき乗計算法をRNSモンゴメリべき乗と呼ぶものとする。RNSモンゴメリべき乗は、概ね以下の手順で計算される。
【0015】
[RNSモンゴメリべき乗:MEXP( <x>_aUb, d, N, aUb )]
入力:<x>_aUb, 指数d=(d_k, d_k−1, …, d_1)_2、法N
ただし、x < 2N
基底:a,b
ただし、x,N < A,B
出力:<y>_aUb
ただし、y=x^d*B^(-(d-1)) mod N
<処理内容>
Step-E-1: i=kとする。<y>_aUb=<B>_aUbとする。
Step-E-2: <y>_aUb=MM(<y>_aUb,<y>_aUb,N,aUb)を計算する。
Step-E-3: d_i=1ならば、<y>_aUb=MM(<y>_aUb,<x>_aUb,N,aUb)を計算する。d_i≠1ならば、なにもしない(nop)。
Step-E-4: i=i−1とする。
Step-E-5: i=0ならば、終了する。i≠0ならば、Step-E-2へ戻る。
【0016】
なお、上記の手順のうち、Step-E-2やStep-E-3でのMM( )は、先に説明したRNSモンゴメリ乗算を表す。
【0017】
次に、CRTべき乗剰余計算について説明する。
【0018】
RSA暗号は、公開鍵(N、e)、秘密鍵(d、p、q)に対し、C=m^emod Nで平文mを暗号文Cに暗号変換し、m=C^d mod Nで暗号文Cを平文mに復号変換する。ここで、公開鍵である法Nの秘密素因数p、qを利用して復号変換をより効率的に実行する計算法である、中国剰余定理(Chinese Remainder Theorem:CRT)を利用したべき乗計算法が知られている。このようなべき乗計算法を、CRTべき乗剰余計算と呼ぶものとする。
【0019】
なお、上記の手順において、dp、dq、(q^(-1) mod p)、(p^(-1) mod q)といったパラメータは秘密鍵のみに依存するので、事前に計算し、秘密鍵の一部として記憶しておくことが一般的である。
【0020】
CRTべき乗剰余計算の計算量は、その支配的な部分が(Step-C-3)のべき乗剰余計算2回であり、べき乗剰余計算は法のサイズの3乗に比例することに注意すると、2進表現でのべき乗剰余計算とCRTべき乗剰余計算の計算量は約1/4であることが分かる。なお、(Step-C-3)のべき乗計算を2つの計算回路で同時に実行すれば計算時間は約1/8にできる。
【0021】
しかしながら、RNSモンゴメリ乗算によるRSA暗号装置においてCRTべき乗剰余計算の具体的な手順は示されておらず、RSA復号変換(秘密変換)を同装置でより短時間に計算することはできなかった。
【0022】
【発明が解決しようとする課題】
従来、RNSモンゴメリ乗算によるCRTべき乗剰余計算の具体的な手順が知られていなかったため、RSA復号変換(秘密変換)のような大きな整数のべき乗剰余計算をより高速化することが困難であった。
【0023】
本発明は、上記事情を考慮してなされたもので、べき乗剰余計算をより効率良く実行可能にしたべき乗剰余計算装置及びべき乗剰余計算方法を提供することを目的とする。
【0024】
【課題を解決するための手段】
本発明は、対象データC及び独立パラメータp、q、dについて、複数の整数の組からなる第1の基底及び第2の基底による剰余系表現を利用して(ただし、両基底に含まれる全整数は互いに素、且つ、第1の基底の全整数の積A>p,q、且つ、第2の基底の全整数の積B>p,q、且つ、A*B>Cとする)、計算結果m=C^d mod p*qを求めるためのべき乗剰余計算装置であって、前記データCのpによる剰余値Cp(=C mod p)の剰余系表現とB^2 mod pの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(p−1)による剰余値dp(=d mod (p−1))とするRNSモンゴメリべき乗を行うことによって、(Cp^dp)*B mod p又はこれにpが加えられた値の剰余系表現を求めるための第1の処理手段と、前記データCのqによる剰余値Cq(=C mod q)の剰余系表現とB^2 mod qの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(q−1)による剰余値dq(=d mod (q−1))とするRNSモンゴメリべき乗を行うことによって、(Cq^dq)*B mod q又はこれにqが加えられた値の剰余系表現を求めるための第2の処理手段と、前記第1の処理手段により得られた前記剰余系表現と前記パラメータqの法pにおける逆元qinv(=q^(−1) mod p)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータqの剰余系表現とのRNS乗算を行うとともに、前記第2の処理手段により得られた前記剰余系表現と前記パラメータpの法qにおける逆元pinv(=p^(−1) mod q)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータpの剰余系表現とのRNS乗算を行い、これらにより得られた両RNS乗算の結果のRNS加算を行うことによって、前記法p*qの元でC^dと合同である整数m’の剰余系表現を求めるための第3の処理手段と、前記第3の処理手段により求められた前記剰余系表現を2進数表現に変換して得られた前記整数m’の値に基づき、前記計算結果mを求めるための第4の処理手段とを備えたことを特徴とする。
【0027】
好ましくは、前記第1の処理手段及び第2の処理手段はそれらの処理の少なくとも一部を同時に実行するようにしてもよい。
【0028】
好ましくは、前記第1の処理手段及び第2の処理手段は前記基底の要素ごとに行う演算につき該要素の数に相当する演算の全部または一部を同時に実行するようにしてもよい。
【0029】
好ましくは、前記第4の処理手段は、前記第3の処理手段により求められた前記整数m’の剰余系表現を2進数表現に変換するための手段と、この手段により得られたp*q未満の前記整数m’の値又はp*q以上の前記整数m’から所定回数p*qを減じることによって得たp*q未満の値を、m=C^d mod p*qとするための手段とを含むようにしてもよい。
【0031】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【0032】
本発明によれば、中国剰余定理を利用した演算と剰余系を利用した演算とモンゴメリ演算とを融合させることによって、べき乗剰余計算をより効率良く実行することができる。例えば、剰余系表現を利用したべき乗剰余演算装置にてRSA暗号の復号変換に中国剰余定理を利用した効率の良い実装が可能となり、同復号変換を約1/8の処理量に削減できる。
【0033】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0034】
図1に、本発明の一実施形態に係る計算装置の機能的な構成図を示す。
【0035】
本計算装置1は、RNS表現された整数を演算するRNS演算器12、2進数表現での補助的な演算を行う演算部と、外部との入出力を行うための入出力部11と、全体を制御する制御部13で構成される。
RNS演算器12には、RNS逆元計算部(INV)122、RNSモンゴメリ乗算部(MM)123、RNSモンゴメリべき乗部(MEXP)124、RNS乗算部(MUL)125、RNS加算部(ADD)126、第1の表現変換部(2進数表現→RNS表現変換部)127、第2の表現変換部(RNS表現変換部→2進数表現)128、記憶部121が存在する。
2進数表現での補助的な演算部としては、剰余計算部129と加減算部130が存在する。
以上の各演算部のうち規模面で大半はRNS演算器12である。
【0036】
記憶部121は、例えばRNS表現で利用する基底や事前に計算し装置内に記憶されるパラメータ等を記憶する。
【0037】
RNSモンゴメリ乗算部123は、先に説明したRNSモンゴメリ乗算(MM)を行う。
RNSモンゴメリべき乗部124は、先に説明したRNSモンゴメリべき乗(MEXP)を行う。
RNS乗算部125は、先に説明したRNS乗算(MUL)を行う。
RNS加算126は、先に説明したRNS加算(ADD)を行う。
第1の表現変換部127は、2進数表現からRNS表現への変換を行う。
第2の表現変換部128は、RNS表現から2進数表現への変換を行う。
なお、これらについては、例えば、文献「小池,佐野,川村, “Cox−Rowerアーキテクチャによる高速な並列モンゴメリ乗算法”, SCIS2000, B22, 2000」に詳しい。
【0038】
RNS逆元計算部(INV)122は、<x>_aを入力として<−x^(-1)>_aを計算する。すなわち、<x>_aの各基底ai および要素xi について、xi (mod ai )から、−xi ^(-1) (mod ai )を計算する。具体的には、例えば次の手順で実行する。
<基底ai における逆元計算>
(Step0) 基底ai に対するCarmichael関数λ(ai )を計算し、記憶部(ROM)に保存しておく。Carmichael関数λの具体的な計算式は例えば“岡本龍明、山本博資著、「現代暗号」、産業図書、p.16”に示されている。λ(ai )のビットサイズはai のビットサイズ以下である。 法ai と互いに素な全てのx(<ai )に対して、x^λ(ai )=1 (mod ai )になる。ここでは入力xとしてRSA暗号の秘密鍵p,q(素数)もしくはその積N(2素数の積)を想定しているため、これらは必ず法ai と互いに素になる。
(Step1) xi ^(-1)=xi ^(λ(ai )−1) (mod ai )を演算ユニットでの剰余乗算により計算する。
(Step2) −xi ^(-1)=ai −xi ^(-1)により計算する。
以上の計算のうち、(Step1)はCarmichael関数λ(ai )のビットサイズがai のビットサイズ以下であるため、演算ユニットのワード数を32ビットとすると、64回以下のワードサイズの剰余乗算に相当する。
【0039】
剰余計算部129は、2進数表現の被除数xと除数yを入力して、x (mod y)を計算する。この計算手順は通常の除算で実行可能であり、例えば“Knuth著、中川圭介訳、「準数値算法/算術演算」、サイエンス社、p.90”に示されている。概ね、x1*x2と同じ計算量である。
加減算部130は、2進数の加減算等を行う。
本計算装置1は、次のRNS演算を組み合わせてCRTべき乗を実行する。
・RNSモンゴメリ乗算<z>=MM(<x>_aUb,<y>_aUb,p,aUb)
ここで、z=x*y*A^(-1) mod p or z=(x*y*A^(-1) mod p)+pに相当する。
・RNSモンゴメリべき乗<z>=MEXP(<x>_aUb,e,p,aUb)
ここで、z=x^e*A^(-(e-1)) mod p or z=(x^e*A^(-(e-1)) mod p)+pに相当する。
・RNS乗算<z>=MUL(<x>_aUb,<y>_aUb,a)
ここで、z=x*y mod A(基底aでのxとyの乗算)に相当する。
・RNS加算<z>=ADD(<x>_aUb,<y>_aUb,a)
ここで、z=x+y mod A(基底aでのxとyの加算)に相当する。
【0040】
上記RNS演算における最後の引数(aやaUbなど)は、RNS表現で利用される基底を表す。基底aの要素の積の値をA、基底bの要素の積の値をBとすると、基底aUbの要素の積の値はABになる。RNSモンゴメリ乗算とRNSモンゴメリべき乗の出力はz<A,Bとなる。
【0041】
上記のようにRNSモンゴメリ乗算およびRNSモンゴメリべき乗においては、モンゴメリ乗算の性質から、モジュラスpの値だけ結果が大きい場合がある。すなわち、MM(<x>,<y>,p,aUb)<2pである。法pを固定した場合、RNSモンゴメリ乗算とRNSモンゴメリべき乗の出力はいずれも2p未満であるが、これらの出力はそのままRNSモンゴメリ乗算およびRNSモンゴメリべき乗に入力可能である。
【0042】
本計算装置1内には、次のパラメータは、予め記憶しておくものとする。
事前登録パラメータ:基底a、基底b、基底aの要素の積A、基底bの要素の積B、基底aおよび基底bの全要素の積AB、B^2
なお、基底a,bとCRTべき乗におけるパラメータサイズの関係として、少なくとも、 p,q<A 、かつ、 p,q<B が必要である。この結果、N=p*qに対し、少なくともN<ABとなる。
【0043】
CRTべき乗を実行するために外部から本計算装置1へ入力するパラメータは、ここでは、以下の通りとする。
外部入力パラメータ:暗号文C、dp=d mod (p−1)、dq=d mod (q−1)、N(=p*q)、p、q、pの法qにおける逆元pinv=p^(−1) mod q、qの法pにおける逆元qinv=q^(-1) mod p
図2に、本計算装置1におけるCRTべき乗の処理手順の一例を示す。また、図3に、本計算装置1の各演算部に関する内部構成例を示す。
【0044】
(ステップS0):外部入力パラメータC、dp、dq、N、p、q、pinv、qinvを入力する。
【0045】
以下の手順のうち、ステップS1−p〜S9−pと、ステップS1−q〜S9−qとでは、いずれの対応するステップSi−pとステップSi−qにおいても、Nの2つの素因数であるpとqに関する同様の演算を実行している。
【0046】
(ステップS1−p)
第1の表現変換部127を利用して、2進数表現pを、基底aUbによるRNS表現<p>(=<p>_a U <p>_b={p mod a1 ,p mod a2 ,…,p mod an } U {p mod b1 ,p mod b2 ,…,p mod bn })に変換する。
【0047】
(ステップS1−q)
第1の表現変換部127を利用して、2進数表現qを、基底aUbによるRNS表現<q>(=<q>_a U <q>_b={q mod a1 ,q mod a2 ,…,q mod an } U {q mod b1 ,q mod b2 ,…,q mod bn })に変換する。
【0048】
(ステップS2−p)
RNS逆元計算部122を利用して、(ステップS1−pで求められた)<p>_bから、<−p^(-1)>_bを計算する。
【0049】
(ステップS2−q)
RNS逆元計算部122を利用して、(ステップS1−qで求められた)<q>_bから、<−q^(-1)>_bを計算する。
【0050】
(ステップS3−p)
剰余計算部129を利用して、bp=B^2 mod pを計算し、第1の表現変換部127を利用して、bpを2進数表現から基底aUbによるRNS表現<bp>に変換する。
【0051】
(ステップS3−q)
剰余計算部129を利用して、bq=B^2 mod qを計算し、第1の表現変換部127を利用して、bqを2進数表現から基底aUbによるRNS表現<bq>に変換する。
【0052】
(ステップS4−p)
第1の表現変換部127を利用して、pinvを2進数表現から基底aUbによるRNS表現<pinv>に変換する。
【0053】
(ステップS4−q)
第1の表現変換部127を利用して、qinvを2進数表現から基底aUbによるRNS表現<qinv>に変換する。
【0054】
(ステップS5−p)
剰余計算部129を利用して、Cp=C mod pを計算し、第1の表現変換部127を利用して、Cpを2進数表現から基底aUbによるRNS表現<Cp>に変換する。
【0055】
(ステップS5−q)
剰余計算部129を利用して、Cq=C mod qを計算し、第1の表現変換部127を利用して、Cqを2進数表現から基底aUbによるRNS表現<Cq>に変換する。
【0056】
(ステップS6−p)
RNSモンゴメリ乗算部123を利用して、<Cp’>=MM(<Cp>, <bp>, p, aUb)を計算する。
<先に説明したアルゴリズムを利用する場合の処理内容>
Step-M-1: <s>_a=<Cp>_a * <bp>_aを計算する。
Step-M-2: <s>_b=<Cp>_b * <bp>_bを計算する。
Step-M-3: <t>_b=<s>_b * <(−p^(-1))>_bを計算する。
Step-M-4: <t>_bを<t>_aへ基底変換する。
Step-M-5: <u>_a=<t>_a * <p>_aを計算する。
Step-M-6: <v>_a=<s>_a + <u>_aを計算する。
Step-M-7: <Cp’>_a=<v>_a * <B^(-1)>_aを計算する。
Step-M-8: <Cp’>_aを<Cp’>_bへ基底変換する。
これにより、Cp’=C*B mod pまたはCp’=(C*B mod p)+pのいずれかに対応するRNS表現<Cp’>が求められる。
【0057】
(ステップS6−q)
RNSモンゴメリ乗算部123を利用して、<Cq’>=MM(<Cq>, <bq>, q, aUb)を計算する。なお、先に説明したアルゴリズムを利用する場合の処理内容は、ステップS6−pの処理内容において、pとqを入れ替えたものである。
これにより、Cq’=C*B mod qまたはCq’=(C*B mod q)+qのいずれかに対応するRNS表現<Cp’>が求められる。
【0058】
(ステップS7−p)
RNSモンゴメリべき乗部124を利用して、<mp’>=MEXP(<Cp’>, dp, p, aUb)を計算する。
<先に説明したアルゴリズムを利用する場合の処理内容>
Step-E-1: i=kとする。<y>_aUb=<B>_aUbとする。
Step-E-2: <y>_aUb=MM(<y>_aUb,<y>_aUb,N,aUb)を計算する。
Step-E-3: dp_i=1ならば、<y>_aUb=MM(<y>_aUb, <Cp’>_aUb,p,aUb)を計算する。dp_i≠1ならば、なにもしない(nop)。
ここで、dp_iは、dpの2進表現(dp_k, dp_k−1,…,dp_1)における下位からiビット目の値である。
Step-E-4: i=i−1とする。
Step-E-5: i=0ならば、終了する。i≠0ならば、Step-E-2へ戻る。
これにより、mp’=(Cp^dp)*B mod pまたはmp’=((Cp^dp)*B mod p)+pのいずれかに対応するRNS表現<mp’>が求められる。
【0059】
(ステップS7−q)
RNSモンゴメリべき乗部124を利用して、<mq’>=MEXP(<Cq’>, dq, q, aUb)を計算する。なお、先に説明したアルゴリズムを利用する場合の処理内容は、ステップS7−pの処理内容において、pとqを入れ替えたものである。
これにより、mq’=(Cq^dq)*B mod q またはmq’=((Cq^dq)*B mod q)+qのいずれかに対応するRNS表現<mq’>が求められる。
【0060】
(ステップS8−p)
RNSモンゴメリ乗算部123を利用して、<tp>=MM(<mp’>, <q^(−1) mod p>, p, aUb)を計算する。
<先に説明したアルゴリズムを利用する場合の処理内容>
Step-M-1: <s>_a=<mp’>_a * <qinv>_aを計算する。
Step-M-2: <s>_b=<mp’>_b * <qinv>_bを計算する。
Step-M-3: <t>_b=<s>_b * <(−p^(-1))>_bを計算する。
Step-M-4: <t>_bを<t>_aへ基底変換する。
Step-M-5: <u>_a=<t>_a * <p>_aを計算する。
Step-M-6: <v>_a=<s>_a + <u>_aを計算する。
Step-M-7: <tp>_a=<v>_a * <B^(-1)>_aを計算する。
Step-M-8: <tp>_aを<tp>_bへ基底変換する。
これにより、tp=(Cp^dp)q^(−1) mod pまたはtp=((Cp^dp)q^(−1) mod p)+pのいずれかに対応するRNS表現<tp>が求められる。
【0061】
(ステップS8−q)
RNSモンゴメリ乗算部123を利用して、<tq>=MM(<mq’>, <p^(−1) mod q>, p, aUb)を計算する。なお、先に説明したアルゴリズムを利用する場合の処理内容は、ステップS8−pの処理内容において、pとqを入れ替えたものである。
これにより、tq=(Cq^dq)p^(−1) mod qまたはtq=((Cq^dq)p^(−1) mod q)+qのいずれかに対応するRNS表現<tq>が求められる。
【0062】
(ステップS9−p)
RNS乗算部125を利用して、<up>=MUL(<tp>, <q>, aUb)を計算する。
これにより、up=tp*q mod ABに対応するRNS表現<up>が求められる。
【0063】
(ステップS9−q)
RNS乗算部125を利用して、<uq>=MUL(<tq>, <p>, aUb)を計算する。
これにより、uq=tq*p mod ABに対応するRNS表現<uq>が求められる。
【0064】
(ステップS10)
RNS加算126を利用して、<m’>=ADD(<up>, <uq>, aUb)を計算する。
これにより、m’=up+uq mod ABに対応するRNS表現<m’>が求められる。
【0065】
(ステップS11)
第2の表現変換部128を利用して、<m’>をRNS表現(基底aUb)から2進数表現m’に変換する。
ここで、m’はN以上である場合があるので、加減算部130は、m’がN以上であれば、これをN未満の値にするための処理を行う。
(ステップS12)
m’をmにコピーする(待避させる)。
(ステップS13)
m’=m’−Nを計算する。
(ステップS14)
m’<0であるか否か判定する。m’<0でなければ、ステップS12へ戻る。m’<0であるならば、ループを抜けて、ステップS15へ移る。
(ステップS15)
mを出力して、終了する。
なお、ステップS12〜ステップS15は、例えば図4のステップS21〜ステップS24など、他の手順でもかまわない。
【0066】
また、Nは、外部から入力せずに、加減算部130がp*qにより求めるようにしても良い。
【0067】
上記手順において、ステップS5−p,S6−pおよびステップS5−q,S6−qでは、Cp’=C*B mod p(+p)およびCq’=C*B mod q(+q)を計算しており、先に説明した通常のCRTべき乗での(Step-C-2)の処理に対応している。
ステップS7−pおよびステップS7−qは、通常のCRTべき乗での(Step-C-3)の処理に対応している。
ステップS8−p、S9−p、S8−q、S9−q、S10は、先に説明した通常のCRTべき乗での(Step-C-4)の処理に対応している。ここでは、(Step-C-4)の処理が次のように変形できることを利用している。
ステップS11の結果であるm’は、RNSモンゴメリ乗算でのpおよびqの加算誤差と、加算誤差が無いとしてもCRTべき乗剰余計算ではm’<2Nであることから、加算誤差を考慮するとm’<4Nとなる。従って、最大でm’から3Nを引く必要があり、このために必要な補正をステップS12からステップS14で行っている。m’は2進数に変換してあるので正負の判定は容易である。この処理が積に説明した通常のCRTべき乗での(Step-C-4)の処理における法Nでの剰余値を求める手順に相当する。
【0068】
本CRTべき乗剰余計算での各計算ステップはRNS演算器で実行可能な演算機能を用いて実行可能である。特にステップS7−pとステップS7−qのRNSモンゴメリべき乗が計算処理の大半を占めるが、これらは法p、qよりわずかに大きな基底A、Bを用いた和集合AUBを基底として利用できることが重要である。
RNSモンゴメリ乗算の計算量は、その内部で実行する基底変換の計算量で評価できる。この処理では、1つの基底要素について見た場合にワードサイズでの乗算を基底サイズnのオーダだけ必要とし、さらにこれを変換元の基底における全ての基底要素について実行する。従って、RNSモンゴメリ乗算の計算量は、基底サイズnの2乗のオーダとなる。また、RNSモンゴメリべき乗の計算量は、RNSモンゴメリ乗算を指数のビットサイズL_eだけ繰り返す処理に相当する。よって、RNSモンゴメリべき乗の計算量はO(n^2*L_e)となる。
具体的に、例えば、1024ビットのRSA暗号を想定する。この場合、秘密鍵d、N、暗号文Cはいずれも1024ビットになる。従って、これを、従来のようにRNS表現でのモンゴメリべき乗で実行する場合、利用する基底a’(およびb’)は最低でも要素数33(=1024/32(ワードサイズ)+1)となる。一方、本実施形態のようにCRTべき乗で利用する秘密鍵dp、dq、p、q、Cを法p、qで縮小した値Cp、Cqはいずれも512ビットであるため、利用する基底a(およびb)は最低で要素数17(=512/32(ワードサイズ)+1)となる。最低の基底要素数を利用するのが処理時間の面で最も効率的であるので、この前提でCRTによるべき乗剰余計算とCRTによらないべき乗剰余計算の計算量を比較してみる。RNSモンゴメリ乗算については、その計算量は、CRTを用いる場合は、CRTを用いない場合の1/4となる。べき指数のサイズについては、CRTを用いる場合にはCRTを用いない場合の1/2になるが、CRTを用いる場合にはRNSモンゴメリべき乗を2回計算する必要がある。よって、全体としては、本CRTべき乗剰余計算によれば、従来のRNSモンゴメリべき乗に比べて、約1/4の処理量でRSA復号変換が実現できる。また、RNSモンゴメリべき乗を2つの回路で同時に実行すれば、従来のRNSモンゴメリべき乗に比べて、約1/8の処理量でRSA復号変換が実現できる。
【0069】
以下では、本実施形態のバリエーションについて説明する。
【0070】
図2の手順のうち、ステップS1−p〜S5−pの手順は、ステップS2−pがステップS1−pの後になる制約がある以外、どのような順番で行ってもかまわない(剰余計算部129や表現変換部127を並列処理可能にして、それらの全部または一部を並列処理してもよい)。
【0071】
また、図2の手順のうち、ステップS1−p〜S9−pと、ステップS1−q〜S9−qとでは、いずれも対応するステップSi−pとステップSi−qでNの2つの素因数であるpとqに関する同様の演算を実行している。ステップS1−p〜S9−p、S1−q〜S9−qの演算は、pパートとqパートを逐次的に行っても良いし、全てのpパートを実行後に全てのqパートを実行するようにしても良い。後者の方が、中間変数のメモリへの退避・復旧が減る分、効率が良くなる可能性がある。
また、pパートとqパートをパイプライン的に処理することも可能である。
また、該当する演算部の全部または一部を並列処理可能にしてpパートとqパートとを並列的に実行することも可能である。pパートとqパートとを別々に記述した場合の計算装置1の各演算部に関する内部構成例を図5に示す。
また、例えば、RNSモンゴメリ乗算部123、RNSモンゴメリべき乗部124、RNS乗算部125、RNS加算部126の全部、あるいはそれらのうちRNSモンゴメリ乗算部123およびRNSモンゴメリべき乗部124のみ、あるいはそれらのうちRNSモンゴメリべき乗部124のみを、並列処理可能にしてpパートとqパートとを並列的に実行することも可能である。
もちろん、各演算部は、RNS演算に由来する並列計算を行って高速化を図ることが可能である。この場合に、基底の全ての要素に対する演算を同時に実行するように構成することも可能であるし、基底の一部(例えば、基底サイズの整数分の一に相当する個数)の要素に対する演算を同時に実行するように構成することも可能である。
【0072】
また、これまで説明した構成例では、pinv=p^(−1) mod q、qinv=q^(-1) mod pを外部から入力する例を示したが、それらをp、qから計算するようにしてもよい。この場合には、図5に示すように、2進数表現での補助的な演算部として、剰余計算部129と加減算部130の他に、さらに逆元計算部131を設ければよい。
逆元計算部131では、2進数表現の整数xと法の値yを入力して、x^(-1)(mod y)を計算する。この計算は拡張ユークリッドの互除法と呼ばれるアルゴリズムで実行されることが多い。例えば、“Knuth著、中川圭介訳、「準数値算法/算術演算」、サイエンス社、p.162”に示されている。概ね、yのサイズの剰余乗算10回分程度の計算量である。
【0073】
また、これまで説明した構成例では、dp=d mod (p−1)、dq=d mod (q−1)を外部から入力する例を示したが、それらをp、qから計算するようにしてもよい。この計算は、剰余計算部129により行うことができる。
【0074】
pinv、qinv、dp、dqをp、qから計算するようにした場合の計算装置1の各演算部に関する内部構成例を図6に示す。
【0075】
また、外部入力パラメータ(暗号文C、dp=d mod (p−1)、dq=d mod (q−1)、N(=p*q)、p、q、pinv=p^(−1)mod q、qinv=q^(-1) mod p)のうち暗号文C以外のものは、RSAの秘密鍵に相当するパラメータであり、それらの全部または一部を本計算装置1内部に記憶しておくことも可能である。この場合には、外部からは、暗号文Cと本演算装置1内部の鍵パラメータ群を選択するのに必要な鍵識別情報を入力するようにすればよい。
【0076】
また、図2のステップS1−p〜S4−pおよびステップS1−q〜S4−qで示される計算は、RSAの秘密鍵(p,q,pinv,qinv)のみに依存した計算であるが、RSAによる暗号文Cはセッション毎に異なるのに対し、RSA秘密鍵はそれほど変更されないことが多い(RSA秘密鍵が不変のシステムもあり得る)。
そこで、ステップS1−p〜ステップS4−qまで実行した結果を保存しておき、以後同じRSA秘密鍵が用いられる限り、ステップS1−p〜ステップS4−qまでスキップし、先に保存しておいた結果を利用してステップS5−p以降の処理を行うとともに、RSA秘密鍵が変更されたときに改めてステップS1−p〜ステップS4−qまで実行するようにしてもよい。
また、RSA秘密鍵を鍵識別情報で管理する場合には、鍵識別情報に対応付けて、上記結果を保存しておくようにしてもよい。
【0077】
また、RSA秘密鍵が唯一不変の場合には、外部からはCのみを入力するものとし、RSA秘密鍵のみに依存するデータ(p、q、N、<p>、<q>、<−p^(-1)>_b、<−q^(-1)>_b、<bp>、<bq>、<pinv>、<qinv>、<bp>、<bq>)は、予め記憶部に記憶しておくようにしてもよい。
また、RSA秘密鍵が複数ある場合には、外部からはCおよび鍵識別情報のみを入力するものとし、RSA秘密鍵のみに依存するデータ(p、q、N、<p>、<q>、<−p^(-1)>_b、<−q^(-1)>_b、<bp>、<bq>、<pinv>、<qinv>、<bp>、<bq>)を鍵識別情報に対応付けて予め記憶部に記憶しておき、外部から入力された鍵識別情報に対応するものを記憶部から読み出して用いるようにしてもよい。
【0078】
また、2種類の基底を用いる場合に、基底a={a1 ,a2 ,…,an1 }と基底b={b1 ,b2 ,…,bn2 }について、n1=n2=nとして説明したが、n1≠n2とすることも可能である。
【0079】
なお、以上では、本発明を図8のような復号変換に適用した場合について説明したが、暗号変換(C=m^e mod N)は復号変換(m=C^d modN)と同様の計算式により表現されるので、もちろん、本発明は暗号変換にも適用可能である(例えば、秘密鍵を持つ装置が、暗号変換するケース)。この場合には、これまでの説明において、暗号文Cの代わりに平文mを入力とし、指数dの代わりに指数eを用いればよい。
【0080】
ここで、本計算装置のハードウェア、ソフトウェア構成について説明する。
本実施の形態では、本計算装置(復号化装置あるいは暗号化装置)をハードウェアにより実現することを想定して説明したが、ソフトウェアとして実現することも可能である。
ハードウェアとして構成する場合、例えば、半導体装置として形成し、演算ボードあるいは演算カードとして、パーソナル・コンピュータなどの計算機に装備する形態がある。計算機がOSを用いる場合には、この演算デバイス用のドライバをOSに組み込んで用いる形態もある。また、例えば、半導体装置として形成し、AV機器や家電機器等の装置に備えることも可能である。
ソフトウェアで実現する場合、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することができ、また該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することができる。もちろん、マルチプロセッサやパイプライン処理などの種々の高速化技術を利用することも可能である。
【0081】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0082】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0083】
【発明の効果】
本発明によれば、中国剰余定理を利用した演算と剰余系を利用した演算とモンゴメリ演算とを融合させることによって、べき乗剰余計算をより効率良く実行することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る計算装置の構成例を示す図
【図2】同実施形態に係る計算装置の処理手順の一例を示すフローチャート
【図3】同実施形態に係る計算装置の各演算部に関する内部構成例を示す図
【図4】同実施形態に係る計算装置の処理手順の他の例を示すフローチャート
【図5】同実施形態に係る計算装置の各演算部に関する内部構成の他の例を示す図
【図6】同実施形態に係る計算装置の他の構成例を示す図
【図7】同実施形態に係る計算装置の各演算部に関する内部構成のさらに他の例を示す図
【図8】同実施形態に係る計算装置の適用例について説明するための図
【符号の説明】
1…計算装置
11…入出力部
12…RNS演算器
13…制御部
121…記憶部
122…RNS逆元計算部
123…RNSモンゴメリ乗算部
124…RNSモンゴメリべき乗部
125…RNS乗算部
126…RNS加算部
127…第1の表現変換部
128…第2の表現変換部
129…剰余計算部
130…加減算部
131…逆元計算部
Claims (14)
- 対象データC及び独立パラメータp、q、dについて、複数の整数の組からなる第1の基底及び第2の基底による剰余系表現を利用して(ただし、両基底に含まれる全整数は互いに素、且つ、第1の基底の全整数の積A>p,q、且つ、第2の基底の全整数の積B>p,q、且つ、A*B>Cとする)、計算結果m=C^d mod p*qを求めるためのべき乗剰余計算装置であって、
前記データCのpによる剰余値Cp(=C mod p)の剰余系表現とB^2 mod pの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(p−1)による剰余値dp(=d mod (p−1))とするRNSモンゴメリべき乗を行うことによって、(Cp^dp)*B mod p又はこれにpが加えられた値の剰余系表現を求めるための第1の処理手段と、
前記データCのqによる剰余値Cq(=C mod q)の剰余系表現とB^2 mod qの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(q−1)による剰余値dq(=d mod (q−1))とするRNSモンゴメリべき乗を行うことによって、(Cq^dq)*B mod q又はこれにqが加えられた値の剰余系表現を求めるための第2の処理手段と、
前記第1の処理手段により得られた前記剰余系表現と前記パラメータqの法pにおける逆元qinv(=q^(−1) mod p)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータqの剰余系表現とのRNS乗算を行うとともに、前記第2の処理手段により得られた前記剰余系表現と前記パラメータpの法qにおける逆元pinv(=p^(−1) mod q)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータpの剰余系表現とのRNS乗算を行い、これらにより得られた両RNS乗算の結果のRNS加算を行うことによって、前記法p*qの元でC^dと合同である整数m’の剰余系表現を求めるための第3の処理手段と、
前記第3の処理手段により求められた前記剰余系表現を2進数表現に変換して得られた前記整数m’の値に基づき、前記計算結果mを求めるための第4の処理手段とを備えたことを特徴とするべき乗剰余計算装置。 - 前記パラメータp、q及びdをもとに、前記剰余値dp=d mod (p−1)及び前記剰余値dq=d mod (q−1)を求めるための手段を更に備えたことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記パラメータp及び前記パラメータq並びに前記逆元pinv及び前記逆元qinvをそれぞれ2進数表現から剰余系表現に変換するための手段を更に備えたことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記パラメータp及びqをもとに、前記逆元pinv=p^(−1) modq及び前記パラメータqの法pにおける逆元qinv=q^(−1) modpを求めるための手段を更に備えたことを特徴とする請求項3に記載のべき乗剰余計算装置。
- 前記データC並びに前記パラメータp及びqをもとに、前記剰余値Cp=C mod p及び前記剰余値Cq=C mod qを求めるための手段を更に備えたことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記パラメータp、q、dのみに依存する剰余系表現のデータを予め記憶しておくための記憶手段を更に備えたことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記パラメータを識別する識別情報iと、該識別情報iに対応するパラメータpi、qi、diのみに依存する剰余系表現のデータとを対応付けて予め記憶しておくための記憶手段を更に備えたことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記第1の処理手段及び第2の処理手段はそれらの処理の少なくとも一部を同時に実行することを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記第1の処理手段及び第2の処理手段は前記基底の要素ごとに行う演算につき該要素の数に相当する演算の全部または一部を同時に実行することを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記第4の処理手段は、前記第3の処理手段により求められた前記整数m’の剰余系表現を2進数表現に変換するための手段と、この手段により得られたp*q未満の前記整数m’の値又はp*q以上の前記整数m’から所定回数p*qを減じることによって得たp*q未満の値を、m=C^d mod p*qとするための手段とを含むことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 前記第1の基底の要素数と前記第2の基底の要素数とを同一にしたことを特徴とする請求項1に記載のべき乗剰余計算装置。
- 入力手段及び出力手段並びに第1乃至第 4 の処理手段を備え、対象データC及び独立パラメータp、q、dについて、複数の整数の組からなる第1の基底及び第2の基底による剰余系表現を利用して(ただし、両基底に含まれる全整数は互いに素、且つ、第1の基底の全整数の積A>p,q、且つ、第2の基底の全整数の積B>p,q、且つ、A*B>Cとする)、計算結果m=C^d mod p*qを求めるためのべき乗剰余計算装置におけるべき乗剰余計算方法であって、
前記入力手段により、少なくとも前記データCを入力する入力ステップと、
前記第1の処理手段により、前記データCのpによる剰余値Cp(=C mod p)の剰余系表現とB^2 mod pの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(p−1)による剰余値dp(=d mod (p−1))とするRNSモンゴメリべき乗を行うことによって、(Cp^dp)*B mod p又はこれにpが加えられた値の剰余系表現を求める第1の処理ステップと、
前記第2の処理手段により、前記データCのqによる剰余値Cq(=C mod q)の剰余系表現とB^2 mod qの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(q−1)による剰余値dq(=d mod (q−1))とするRNSモンゴメリべき乗を行うことによって、(Cq^dq)*B mod q又はこれにqが加えられた値の剰余系表現を求める第2の処理ステップと、
前記第3の処理手段により、前記第1の処理ステップにおいて前記第1の処理手段により求められた前記剰余系表現と前記パラメータqの法pにおける逆元qinv(=q^(−1) mod p)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータqの剰余系表現とのRNS乗算を行うとともに、前記第2の処理ステップにおいて前記第2の処理手段により求められた前記剰余系表現と前記パラメータpの法qにおける逆元pinv(=p^(−1) mod q)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータpの剰余系表現とのRNS乗算を行い、これらにより得られた両RNS乗算の結果のRNS加算を行うことによって、前記法p*qの元でC^dと合同である整数m’の剰余系表現を求める第3の処理ステップと、
前記第4の処理手段により、前記第3の処理ステップにおいて前記第3の処理手段により求められた前記剰余系表現を2進数表現に変換して得られた前記整数m’の値に基づき、前記計算結果mを求める第 4 の処理ステップと、
前記出力手段により、前記第4の処理ステップにおいて前記第4の処理手段により求められた前記計算結果mを出力する出力ステップとを有することを特徴とするべき乗剰余計算方法。 - 入力手段及び出力手段並びに第1乃至第 4 の処理手段を備え、対象データC及び独立パラメータp、q、dについて、複数の整数の組からなる第1の基底及び第2の基底による剰余系表現を利用して(ただし、両基底に含まれる全整数は互いに素、且つ、第1の基底の全整数の積A>p,q、且つ、第2の基底の全整数の積B>p,q、且つ、A*B>Cとする)、計算結果m=C^d mod p*qを求めるためのべき乗剰余計算装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体であって、
前記入力手段により、少なくとも前記データCを入力する入力ステップと、
前記第1の処理手段により、前記データCのpによる剰余値Cp(=C mod p)の剰余系表現とB^2 mod pの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(p−1)による剰余値dp(=d mod (p−1))とするRNSモンゴメリべき乗を行うことによって、(Cp^dp)*B mod p又はこれにpが加えられた値の剰余系表現を求める第1の処理ステップと、
前記第2の処理手段により、前記データCのqによる剰余値Cq(=C mod q)の剰余系表現とB^2 mod qの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(q−1)による剰余値dq(=d mod (q−1))とするRNSモンゴメリべき乗を行うことによって、(Cq^dq)*B mod q又はこれにqが加えられた値の剰余系表現を求める第2の処理ステップと、
前記第3の処理手段により、前記第1の処理ステップにおいて前記第1の処理手段により求められた前記剰余系表現と前記パラメータqの法pにおける逆元qinv(=q^(−1) mod p)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータqの剰余系表現とのRNS乗算を行うとともに、前記第2の処理ステップにおいて前記第2の処理手段により求められた前記剰余系表現と前記パラメータpの法qにおける逆元pinv(=p^(−1) mod q)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータpの剰余系表現とのRNS乗算を行い、これらにより得られた両RNS乗算の結果のRNS加算を行うことによって、前記法p*qの元でC^dと合同である整数m’の剰余系表現を求める第3の処理ステップと、
前記第4の処理手段により、前記第3の処理ステップにおいて前記第3の処理手段により求められた前記剰余系表現を2進数表現に変換して得られた前記整数m’の値に基づき、前記計算結果mを求める第 4 の処理ステップと、
前記出力手段により、前記第4の処理ステップにおいて前記第4の処理手段により求められた前記計算結果mを出力する出力ステップとをコンピュータに実行させるためのプログラムを記録したコンピュータ読取り可能な記録媒体。 - 入力手段及び出力手段並びに第1乃至第 4 の処理手段を備え、対象データC及び独立パラメータp、q、dについて、複数の整数の組からなる第1の基底及び第2の基底による剰余系表現を利用して(ただし、両基底に含まれる全整数は互いに素、且つ、第1の基底の全整数の積A>p,q、且つ、第2の基底の全整数の積B>p,q、且つ、A*B>Cとする)、計算結果m=C^d mod p*qを求めるためのべき乗剰余計算装置としてコンピュータを機能させるためのプログラムであって、
前記入力手段により、少なくとも前記データCを入力する入力ステップと、
前記第1の処理手段により、前記データCのpによる剰余値Cp(=C mod p) の剰余系表現とB^2 mod pの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(p−1)による剰余値dp(=d mod (p−1))とするRNSモンゴメリべき乗を行うことによって、(Cp^dp)*B mod p又はこれにpが加えられた値の剰余系表現を求める第1の処理ステップと、
前記第2の処理手段により、前記データCのqによる剰余値Cq(=C mod q)の剰余系表現とB^2 mod qの剰余系表現とのRNSモンゴメリ乗算を行い、これにより得られた剰余系表現について指数部を前記パラメータdの(q−1)による剰余値dq(=d mod (q−1))とするRNSモンゴメリべき乗を行うことによって、(Cq^dq)*B mod q又はこれにqが加えられた値の剰余系表現を求める第2の処理ステップと、
前記第3の処理手段により、前記第1の処理ステップにおいて前記第1の処理手段により求められた前記剰余系表現と前記パラメータqの法pにおける逆元qinv(=q^(−1) mod p)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータqの剰余系表現とのRNS乗算を行うとともに、前記第2の処理ステップにおいて前記第2の処理手段により求められた前記剰余系表現と前記パラメータpの法qにおける逆元pinv(=p^(−1) mod q)の剰余系表現とのRNSモンゴメリ乗算を行い、これによって得られた剰余系表現と前記パラメータpの剰余系表現とのRNS乗算を行い、これらにより得られた両RNS乗算の結果のRNS加算を行うことによって、前記法p*qの元でC^dと合同である整数m’の剰余系表現を求める第3の処理ステップと、
前記第4の処理手段により、前記第3の処理ステップにおいて前記第3の処理手段により求められた前記剰余系表現を2進数表現に変換して得られた前記整数m’の値に基づき、前記計算結果mを求める第 4 の処理ステップと、
前記出力手段により、前記第4の処理ステップにおいて前記第4の処理手段により求められた前記計算結果mを出力する出力ステップとをコンピュータに実行させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001013565A JP3785044B2 (ja) | 2001-01-22 | 2001-01-22 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
US10/051,276 US20020126838A1 (en) | 2001-01-22 | 2002-01-22 | Modular exponentiation calculation apparatus and modular exponentiation calculation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001013565A JP3785044B2 (ja) | 2001-01-22 | 2001-01-22 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002215020A JP2002215020A (ja) | 2002-07-31 |
JP3785044B2 true JP3785044B2 (ja) | 2006-06-14 |
Family
ID=18880397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001013565A Expired - Fee Related JP3785044B2 (ja) | 2001-01-22 | 2001-01-22 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20020126838A1 (ja) |
JP (1) | JP3785044B2 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003241659A (ja) * | 2002-02-22 | 2003-08-29 | Hitachi Ltd | 情報処理方法 |
DE10220262A1 (de) * | 2002-05-06 | 2003-11-27 | Giesecke & Devrient Gmbh | Berechnung des modularen Inversen eines Wertes |
US7187770B1 (en) | 2002-07-16 | 2007-03-06 | Cisco Technology, Inc. | Method and apparatus for accelerating preliminary operations for cryptographic processing |
US7532720B2 (en) * | 2003-10-15 | 2009-05-12 | Microsoft Corporation | Utilizing SIMD instructions within montgomery multiplication |
US8229109B2 (en) * | 2006-06-27 | 2012-07-24 | Intel Corporation | Modular reduction using folding |
US7925011B2 (en) * | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
EP2015171A1 (fr) * | 2007-06-29 | 2009-01-14 | Gemplus | Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée |
US8005210B2 (en) * | 2007-06-30 | 2011-08-23 | Intel Corporation | Modulus scaling for elliptic-curve cryptography |
US8042025B2 (en) * | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
US20090285387A1 (en) * | 2008-05-15 | 2009-11-19 | Chiou-Haun Lee | Symmetric encryption/decryption method of variable length and application thereof |
JP5407352B2 (ja) * | 2009-01-19 | 2014-02-05 | 富士通株式会社 | 復号処理装置、復号処理プログラム、復号処理方法 |
JP5573964B2 (ja) * | 2010-12-27 | 2014-08-20 | 富士通株式会社 | 暗号処理装置および方法 |
EP2779519A1 (en) * | 2013-03-11 | 2014-09-17 | Thomson Licensing | A method and a device for fault-resistant exponentiation in cryptographic systems |
US9985784B2 (en) | 2014-12-23 | 2018-05-29 | Nxp B.V. | Efficient smooth encodings for modular exponentiation |
US9906368B2 (en) | 2014-12-23 | 2018-02-27 | Nxp B.V. | General encoding functions for modular exponentiation encryption schemes |
US9904516B2 (en) | 2014-12-23 | 2018-02-27 | Nxp B.V. | Modular exponentiation using look-up tables |
US10033801B2 (en) * | 2015-02-12 | 2018-07-24 | Mellanox Technologies, Ltd. | Associative summing for high performance computing |
US9652200B2 (en) * | 2015-02-18 | 2017-05-16 | Nxp B.V. | Modular multiplication using look-up tables |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5321752A (en) * | 1991-09-05 | 1994-06-14 | Canon Kabushiki Kaisha | Method of and apparatus for encryption and decryption of communication data |
US6691143B2 (en) * | 2000-05-11 | 2004-02-10 | Cyberguard Corporation | Accelerated montgomery multiplication using plural multipliers |
US6763365B2 (en) * | 2000-12-19 | 2004-07-13 | International Business Machines Corporation | Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements |
-
2001
- 2001-01-22 JP JP2001013565A patent/JP3785044B2/ja not_active Expired - Fee Related
-
2002
- 2002-01-22 US US10/051,276 patent/US20020126838A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2002215020A (ja) | 2002-07-31 |
US20020126838A1 (en) | 2002-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3785044B2 (ja) | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US7904498B2 (en) | Modular multiplication processing apparatus | |
JP3796993B2 (ja) | 楕円曲線暗号実行方法及び装置並びに記録媒体 | |
Knezevic et al. | Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods | |
US7908641B2 (en) | Modular exponentiation with randomized exponent | |
US8977668B2 (en) | Calculating unit for reducing an input number with respect to a modulus | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
US20070198824A1 (en) | Cryptography system and elliptic curve operation method | |
US8548161B2 (en) | Crytographically transforming data text | |
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
JP2006276786A (ja) | 計算方法、計算装置及びコンピュータプログラム | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
US8417760B2 (en) | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
JP3542278B2 (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
KR101154845B1 (ko) | 스칼라 배산기 및 스칼라 배산프로그램 | |
KR20040067779A (ko) | 정보 처리방법 | |
JP2011512556A (ja) | 楕円曲線上の多数の点を計算する装置及び方法 | |
US6609141B1 (en) | Method of performing modular inversion | |
JP4616169B2 (ja) | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム | |
KR102006222B1 (ko) | 타원곡선 암호와 rsa 공개키 암호를 통합 구현하기 위한 연산장치 및 방법 | |
JP3137190B2 (ja) | メッセージ変換方法 | |
JP4664514B2 (ja) | 素数生成装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051107 |
|
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: 20060314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060316 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100324 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100324 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110324 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |