JP3626315B2 - 剰余算装置、情報処理装置及び剰余算方法 - Google Patents
剰余算装置、情報処理装置及び剰余算方法 Download PDFInfo
- Publication number
- JP3626315B2 JP3626315B2 JP05649597A JP5649597A JP3626315B2 JP 3626315 B2 JP3626315 B2 JP 3626315B2 JP 05649597 A JP05649597 A JP 05649597A JP 5649597 A JP5649597 A JP 5649597A JP 3626315 B2 JP3626315 B2 JP 3626315B2
- Authority
- JP
- Japan
- Prior art keywords
- integer
- remainder
- mod
- value
- calculation
- 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
Landscapes
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、x2 mod nあるいはx・u mod nの形の演算を高速に実行する剰余算装置、情報処理装置及び剰余算方法に関する。
【0002】
【従来の技術】
RSA暗号は有力な公開鍵暗号の一方式であるが、より高速な暗号化と復号が望まれる。RSA暗号が比較的低速であるのは、巨大数のべき乗剰余算Me mod n、Cd mod nの演算が低速なためである。なお、RSA暗号は例えば文献1(R.Rivest,A.Shamir and L.Adleman:“A Method for Obtaining Digital Signatures and Public Key Cryptosystem”,Comm.ACM,Vol.21,No.2,pp.120−126,1978.)に詳しい。
【0003】
この高速化が望まれる点は、RSA暗号以外の方式でも同様であり、RSA暗号と同じ構造、すなわちck mod nの構造を持つ暗号方式でも全く同様の問題を有している。なお、暗号方式とは、いわゆる暗号方式の他に、署名方式あるいは鍵配送方式など、同様のアルゴリズムを種々の目的のために用いる場合における各方式も含むものとする。
【0004】
この問題を解決するため、1つの方法としてck mod nの形の演算をab を求めることなしに実現する方法がいくつか提案されている。例えば、べき乗算は単純な乗算の反復ではd−1回の乗算が必要であるが、dの2進展開に基づく平方と乗算の組合せで2log2 d程度にまで乗算回数を減らした方法がある。さらに加算鎖などの乗算回数を減らす方法がある。また別の方法として、予備計算により計算の一部を表検索で代行する方法も実用上の有力な方法である。また、例えばRSA暗号の復号過程のように、法の素因数分解が既知の場合にのみ適用できる方法もある。これらの方法は、例えば文献2(D.E.Knuth:The Art of Computer Programming Vol.2,2nd ed.,Chapter 4,1980)、文献3(伊東利哉,佐古和恵:“有限体上のアルゴリズムと多倍長・剰余演算の高速算法”,情報処理,Vol.34,No.2,pp.170−179,1993)、文献4(森田光:“暗号技術と高速算法”,情報処理,Vol.34,No.3,pp.336−342,1993)に詳しい。
【0005】
【発明が解決しようとする課題】
しかし従来の方法ではまだ十分な演算速度を得ることができず、さらなる演算速度の高速化が望まれている。
【0006】
本発明は、上記事情を考慮してなされたもので、x2 mod nあるいはx・u mod nの形の演算を高速に実行可能な剰余算装置、情報処理装置及び剰余算方法を提供することを目的とする。
【0007】
また、より高速に剰余乗算を行うことにより復号演算を高速化した復号装置および復号方法を提供することを目的とする。
【0008】
【課題を解決するための手段】
本発明は、整数nと整数X(0≦X≦(n−1)2 )について剰余Y=X mod nを求める剰余算装置であって、前記整数Xについて、y1=X mod (n+1)により、整数y1を求める第1の処理手段と、前記整数Xについて、y2=X mod (n+2)により、整数y2を求める第2の処理手段と、求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとする第3の処理手段とを備えたことを特徴とする。
好ましくは、前記整数Xは、x2(ただしxは0≦x<nを満たす整数)またはx・u(ただしxは0≦x<nを満たす整数かつuは0≦u<nを満たす整数)であるようにしてもよい。
好ましくは、前記第1の処理手段は、剰余の法とすべき値n+1を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含み、前記第2の処理手段は、剰余の法とすべき値n+2を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含むようにしてもよい。
好ましくは、前記剰余算装置は、所定の暗号方式に基づく処理を行う処理装置に含まれるものであり、前記整数nは、前記所定の暗号方式における鍵として与えられるものであるようにしてもよい。
好ましくは、前記処理装置は、暗号化装置、復号装置、署名装置、認証装置又は鍵配送装置であるようにしてもい。
また、本発明は、整数kと整数nの対を鍵としcを変換前のデータまたは該鍵に対応する鍵による変換後のデータとして、ck mod nの値を、剰余Y=x2 mod n(ここでxは0≦x<nを満たす整数)の形の演算を実行する第1の演算手段と剰余Y´=x・u mod n(ここでxは0≦x<nを満たす整数かつuは0≦u<nを満たす整数)の形の演算を実行する第2の演算手段とを適宜繰り返し実行させることにより求める情報処理装置において、前記第1の演算手段は、整数x2 について、y1=x2 mod (n+1)により、整数y1を求める第1の処理手段と、整数x2 について、y2=x2 mod (n+2)により、整数y2を求める第2の処理手段と、求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとする第3の処理手段とを備え、前記第2の演算手段は、整数x・u について、y1´=x・u mod (n+1)により、整数y1´を求める第4の処理手段と、整数x・u について、y2´=x・u mod (n+2)により、整数y2´を求める第5の処理手段と、求められた前記整数y1´及び前記整数y2´につき、y1´=y2´の場合には前記整数nを法としてy1´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´>y2´の場合には前記整数nを法として2・y1´−y2´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´<y2´の場合には前記整数nを法として2・y1´−y2´+2と合同である0以上n未満の整数値を求めて、これを剰余Y´とする第6の処理手段とを備えたことを特徴とする。
好ましくは、前記第1の処理手段及び前記第4の処理手段は、それぞれ、剰余の法とすべき値n+1を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含み、前記第2の処理手段及び前記第5の処理手段は、それぞれ、剰余の法とすべき値n+2を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含むようにしてもよい。
好ましくは、前記情報処理装置は、暗号化装置、復号装置、署名装置、認証装置又は鍵配送装置であるようにしてもよい。
また、本発明は、第1乃至第3の処理手段を備え、整数nと整数X(0≦X≦(n−1)2 )について剰余Y=X mod nを求める剰余算装置における剰余算方法であって、前記第1の処理手段により、前記整数Xについて、y1=X mod (n+1)により、整数y1を求めるステップと、前記第2の処理手段により、前記整数Xについて、y2=X mod (n+2)により、整数y2を求めるステップと、前記第3の処理手段により、求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとするステップとを有することを特徴とする。
また、本発明は、整数kと整数nの対を鍵としcを変換前のデータまたは該鍵に対応する鍵による変換後のデータとして、ck mod nの値を、剰余Y=x2 mod n(ここでxは0≦x<nを満たす整数)の形の演算を実行する第1の演算手段と剰余Y´=x・u mod n(ここでxは0≦x<nを満たす整数かつuは0≦u<nを満たす整数)の形の演算を実行する第2の演算手段とを適宜繰り返し実行させることにより求める情報処理装置における剰余算方法において、前記第1の演算手段において、整数x2 について、y1=x2 mod (n+1)により、整数y1を求めるステップと、前記第1の演算手段において、整数x2 について、y2=x2 mod (n+2)により、整数y2を求めるステップと、記第1の演算手段において、求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとするステップと、前記第2の演算手段において、整数x・u について、y1´=x・u mod (n+1)により、整数y1´を求めるステップと、前記第2の演算手段において、整数x・u について、y2´=x・u mod (n+2)により、整数y2´を求めるステップと、前記第2の演算手段において、求められた前記整数y1´及び前記整数y2´につき、y1´=y2´の場合には前記整数nを法としてy1´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´>y2´の場合には前記整数nを法として2・y1´−y2´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´<y2´の場合には前記整数nを法として2・y1´−y2´+2と合同である0以上n未満の整数値を求めて、これを剰余Y´とするステップとを有することを特徴とする。
【0038】
本発明(請求項15)は、kとnの対を鍵としaを変換前のデータまたは該鍵に対応する鍵による変換後のデータとして、ck mod nの値を、x2 mod n(ここで0≦x<n)の形の演算とy・u mod n(ここで0≦y<n,0≦u<n)の形の演算とを適宜繰り返し実行させることにより求める情報処理装置における剰余算方法であって、前記x2 mod nの値を求めるにあたっては、aを0以外の整数として、x2 mod (n−a)を求めるとともに、これと前後してまたは並行して、bを0以外の整数かつa≠bとして、x2 mod (n−b)を求め、求められたx2 mod (n−a)の値と求められたx2 mod (n−b)の値とをもとにしてx2 mod nの値を求め、前記y・u mod nの値を求めるにあたっては、x・u mod (n−a)を求めるとともに、これと前後してまたは並行して、x・u mod (n−b)を求め、求められたx・u mod (n−a)の値と求められたx・u mod (n−b)の値とをもとにしてx・u mod nの値を求めることを特徴とする。
【0039】
なお、以上の各装置に係る発明は方法に係る説明としても成立し、以上の各方法に係る発明は装置に係る説明としても成立する。
【0040】
また、上記の発明は、相当する手順あるいは手段をコンピュータに実行させるためのプログラムを記録した機械読取り可能な媒体としても成立する。
【0041】
本発明によれば、X(Xは例えばx2 あるいはx・u) mod nの値を、Xについてn+1とn+2をそれぞれ法として得た剰余から求めるようにしたので、X mod nの形の演算を高速に実行することができる。例えば、法をnとする剰余を、n+1とn+2をそれぞれ法として得られる剰余をもとにした演算で表すとともに、nは素因数分解困難または不可能であってもn+1とn+2は容易に素因数分解または幾つかの互いに素な整数の積に分解できるようにnを選択してX mod (n+1)とX mod (n+2)を中国剰余定理の援用により高速に演算可能とすることにより、X mod nの演算速度を高速化することができる。これによって、例えば、x2 mod nとx・u mod nの繰り返しによって実現できる「べき乗剰余乗算」を、より高速化することができる。
【0044】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0045】
本発明は、概略的には、X=x2 またはX=x・u(0≦x<n、0≦u<n、x,u,nは整数)として、X mod nをX mod (n−a)とX mod (n−b)の簡単な関数で表すとともに(a,bは0以外の正整数または負整数;例えばa=1,b=2)、nは素因数分解困難または不可能であってもn−aとn−bはそれぞれ容易に素因数分解または幾つかの互いに素な整数の積に分解できるようにnを選択してX mod (n−a)とX mod (n−b)を中国剰余定理の援用により高速に演算可能とすることにより、X mod nの演算速度を高速化するようにしたものである。
【0046】
以下では、y =n aという表記は、nを法としてxとaが合同であることを示す。また、y =n aを求めるとは、nを法としてaと合同であるy(0≦y<n)を求めることを意味するものとする。
【0047】
まず、本発明の一実施形態に係る剰余算アルゴリズムの一例を図2に示す。ここでは、法nでのXの剰余y=X mod nの1つの計算法を示す。暗号方式では、0≦x<nを満すxと0≦u<nを満すuに対するx2 mod nやx・u mod nなどの計算を用いるので、0≦X≦(n−1)2 であるとする。また、y1 =X mod (n−1),y2 =X mod (n−2)である(x2 mod nを求める場合、y1 =x2 mod (n−1),y2 =x2 mod (n−2)であり、x・u mod nを求める場合、y1 =x・u mod (n−1),y2 =x・u mod (n−2)である)。
【0048】
まず、Xとnを入力する(ステップS1)。
【0049】
ここで、0≦X≦(n−1)2 である。なお、x2 mod nを求める場合、X=x2 であり、x・u mod nを求める場合、X=x・uである。
【0050】
次に、Xの値により条件分岐し、
X<nならば y=Xを出力し(ステップS2)、
X=(n−1)2 ならばy=1を出力し(ステップS3)、
X=n(n−2)ならばy=0を出力する(ステップS4)。
【0051】
また、
n≦X≦n2 −2n−1ならば、まず、y1 =X mod (n−1)とy2 =X mod (n−2)を求め(ステップS5)、ここでも条件分岐し、
y1 ≧y2 ならばy=n 2y1 −y2 +2を求め、yを出力し(ステップS6)、
y1 <y2 ならばy=n 2y1 −y2 を求め、yを出力する(ステップS7)。
【0052】
ここで、図2の算法Redの適用例を図3に示す。図3に示す一覧はn=37×61=2257の場合に、幾つかのXの値に対するy,y1 ,y2 の値を示している。
【0053】
さて、RSA暗号を始めとする種々の暗号方式における暗号化と復号等の演算にはべき乗剰余算が必要となり、これは平方剰余算と乗算剰余算、すなわち、
x2 mod n
x・u mod n
からなる。
【0054】
しかして前述の通り、y=x2 mod nをy1 =x2 mod (n−1),y2 =x2 mod (n−2)から簡単な計算で求めることができ、同様にy=x・u mod nをy1 =x・u mod (n−1),y2 =x・umod (n−2)から簡単な計算で求めることができる。そして、詳しくは後述するようにy1 ,y2 の計算は中国剰余定理の利用により並列化が可能となり、時間計算量を減らすことができる。したがって、x2 mod n やx・umod nを高速に求めることができる。
【0055】
なお、後述するように、x2 mod nを求める場合、y1 =x2 mod(n−1)とy2 =x2 mod (n−2)は、それぞれ図4と図5の手順により、x・u mod nを求める場合、y1 =x・u mod (n−1)とy2 =x・u mod (n−2)は、それぞれ図8と図9の手順により高速に求めることができる。
【0056】
次に、本発明の一実施形態に係る平方剰余算装置について説明する。
【0057】
図1に示すように、本平方剰余算装置2は、nとx(0≦x<n)について、x2 mod nを求めて出力する装置である。
【0058】
本平方剰余算装置2は、前述した図2と、図4および図5の手順により、x2 mod nを求める。
【0059】
ここでは、X=x2 、y1 =x2 mod (n−1),y2 =x2 mod(n−2)である。
【0060】
まず、xとnを入力する(ステップS1)。
【0061】
ここで、0≦x<nである。
【0062】
次に、x2 の値により条件分岐し、
x2 <nならば y=x2 を出力し(ステップS2)、
x2 =(n−1)2 ならばy=1を出力し(ステップS3)、
x2 =n(n−2)ならばy=0を出力する(ステップS4)。
【0063】
また、
n≦x2 ≦n2 −2n−1ならば、まず、y1 =x2 mod (n−1)とy2 =x2 mod (n−2)を求め(ステップS5)、ここでも条件分岐し、
y1 ≧y2 ならばy=n 2y1 −y2 +2を求め、yを出力し(ステップS6)、
y1 <y2 ならばy=n 2y1 −y2 を求め、yを出力する(ステップS7)。
【0064】
次に、図4を参照して、上記のステップS5においてy1 =x2 mod (n−1)を求める手順について説明する。
【0065】
まず、予備計算として、次式のようにn−1を互いに素な整数の積に分解する。なお、必ずしも素因数分解でなくとも良い。この分解には、試行除算法や2次ふるい法など、種々の方法を用いることができる。
n−1=Πi=1 h pi
あるいは、nが例えばRSA暗号などにおける公開鍵であるとき、n−1を因数分解の形で公開して、この予備計算を不要としても良い。
【0066】
p1 …ph が得られたら、次に、
xi =x mod pi , i=1,…,hを計算する(ステップS11)。
【0067】
次に、
ai =xi 2 , i=1,…,hを計算する(ステップS12)。
【0068】
次に、
ai =ai mod pi , i=1,…,hを計算(ステップS13)。なお、ai =ai mod pi は、ai mod pi をai に代入することを意味する。
【0069】
そして、中国剰余定理を用いて次の連立合同式を解く(ステップS14)。
y1 =p1 a1
y1 =p2 a2
…
y1 =pn ah
なお、中国剰余定理を利用した連立合同式の解法は、例えば岩波講座、現代数学への道、山本芳彦著「数論入門1」、岩波書店に詳しい。
【0070】
この連立合同式の解によって、y1 =x2 mod (p1 ・p2 …ph−1 ・ph )=x2 mod (n−1)が得られる。
【0071】
次に、図5を参照して、y2 =x2 mod (n−2)を求める手順について説明する。
【0072】
n−1の場合と同様に、まず、予備計算として、次式のようにn−2を互いに素な整数の積に分解する。なお、必ずしも素因数分解でなくとも良い。もちろん、この場合も、分解には、試行除算法や2次ふるい法など、種々の方法を用いることができる。
n−2=Πi=1 m qi
なお、前述のようにn−1を因数分解の形で公開する場合には、n−2も併せて因数分解の形で公開して、この予備計算を不要とする。
【0073】
q1 …qm が得られたら、次に、
xi =x mod qi , i=1,…,mを計算する(ステップS21)。
【0074】
次に、
ai =xi 2 , i=1,…,mを計算する(ステップS22)。
【0075】
次に、
ai =ai mod qi , i=1,…,mを計算(ステップS23)。なお、ai =ai mod qi は、ai mod qi をai に代入することを意味する。
【0076】
そして、中国剰余定理を用いて次の連立合同式を解く(ステップS24)。
y2 =q1 a1
y2 =q2 a2
…
y2 =qm am
この連立合同式の解によって、y2 =x2 mod (q1 ・q2 …qm−1 ・qm )=x2 mod (n−2)が得られる。
【0077】
ここで、n=37×61=2257の場合についてy1 とy2 の計算例を示す。
【0078】
まず、予備計算としてn−1,n−2を分解する。
n−1=2256=24 ×3×47=47×48
n−2=2255=5×11×41=41×55
と分解して、p1 =47,p2 =48,q1 =41,q2 =55とするものとする。
【0079】
ここでは、x=1065のときx2 mod nを計算するものとする。
【0080】
まず、y1 =x2 mod (n−1)を計算する。
【0081】
ステップS11では次のような結果になる。
x1 =1065 mod 47=31
x2 =1065 mod 48=9
ステップS12では次のような結果になる。
a1 =312 =961
a2 =92 =81
ステップS13では次のような結果になる。
a1 =961 mod 47=21
a2 =81 mod 48=33
そして、ステップS14で、中国剰余定理を用いて次の連立合同式を解くことにより、
y1 =47 21
y1 =48 33
y1 =x2 mod (n−1)=1713を得ることができる。
【0082】
なお、y1 は次の連立合同式の解になっている。
【0083】
y1 =47 ((1065mod47)2 )mod47=21
y1 =48 ((1065mod48)2 )mod48=33
次に、y2 =x2 mod (n−2)を計算する。
【0084】
ステップS21では次のような結果になる。
x1 =1065 mod 41=40
x2 =1065 mod 55=20
ステップS22では次のような結果になる。
a1 =402 =1600
a2 =202 =400
ステップS23では次のような結果になる。
a1 =1600 mod 41=1
a2 =400 mod 55=15
そして、ステップS24で、中国剰余定理を用いて次の連立合同式を解くことにより、
y2 =41 1
y2 =55 15
y2 =x2 mod (n−2)=2215を得ることができる。
【0085】
なお、y2 は次の連立合同式の解になっている。
y2 =41 ((1065mod41)2 )mod41=1
y2 =55 ((1065mod55)2 )mod55=15
最後に、y1 =1713,y2 =2215であることから、ステップS7において、
y=2×y1 −y2 =2×1713−2215=1211となる。
【0086】
すなわち、y=10652 mod 2257=1211となる。
【0087】
ここで、x2 mod nをy1 =x2 mod (n−1)とy2 =x2 mod (n−2)とから求める構成をブロック図で表すと、図6のようになる。
【0088】
図6において、12−1〜12−hは、図4のステップS11〜S13に相当し、14は図4のステップS14に相当し、16−1〜16−mは、図5のステップS21〜S23に相当し、18は図5のステップS24に相当し、19は図2のS6およびS7に相当する。
【0089】
p1 〜ph がそれぞれ同程度の大きさであるとすれば、12−1〜12−hの各計算の速度は、x2 mod (n−1)に対して1/h2 のオーダーで高速化される(二乗計算の所要時間は、ほぼ桁数の二乗に比例するため)。
【0090】
従って、1つのCPUで12−1〜12−hの各計算を順番に実行した場合、1/h2 ×h=1/hより、x2 mod (n−1)に対して1/hのオーダーで計算速度が高速化される。
【0091】
また、12−1〜12−hの各計算は並列実行可能であるので、もしh個のCPUで12−1〜12−hの各計算を同時に実行した場合、1/h2 のオーダーで計算速度が高速化される。
【0092】
以上の点は、16−1〜16−mの各計算についても同様であり、1/m2 〜1/mの高速化ができる。
【0093】
さらには、h+m個のCPUを用いて12−1〜12−hの各計算と16−1〜16−mの各計算をすべて同時に実行することもできる。この場合が最も高速で、x2 mod (n−1)に対してmin(1/h2 ,1/m2 )のオーダーで計算速度が高速化される。
【0094】
また、1個のCPUを用いて12−1〜12−hの各計算と16−1〜16−mの各計算をすべて順番に計算した場合でも、x2 mod (n−1)に対して1/h+1/m(h=mの場合、2/h)のオーダーで計算速度が高速化される。
【0095】
次に、14と18の合同計算式を解く計算は、良く知られた中国剰余定理を用いることにより高速に計算できる。14の計算と18の計算は、同時実行可能である。
【0096】
さらに、19の演算は簡単な判断と計算だけであり、これも高速に計算できる。
【0097】
従って、図6のブロック図で示されるように、x2 mod nを、直接計算せずに、y1 =x2 mod (n−1)とy2 =x2 mod (n−2)とから求める構成にした場合、x2 mod nの値を高速に求めることができることがわかる。
【0098】
次に、本発明の一実施形態に係る乗算剰余算装置について説明する。
【0099】
図7に示すように、本乗算剰余算装置4は、nとx(0≦x<n)とu(0≦u<n)について、x・u mod nを求めて出力する装置である。
【0100】
本乗算剰余算装置4は、前述した図2と、図8および図9の手順により、x・u mod nを求める。
【0101】
ここでは、X=x・u、y1 =x・u mod (n−1),y2 =x・u mod (n−2)である。
【0102】
まず、xとuとnを入力する(ステップS1)。
【0103】
ここで、0≦x<n、0≦u<nである。
【0104】
次に、x・uの値により条件分岐し、
x・u<nならば y=x・uを出力し(ステップS2)、
x・u=(n−1)2 ならばy=1を出力し(ステップS3)、
x・u=n(n−2)ならばy=0を出力する(ステップS4)。
【0105】
また、
n≦x・u≦n2 −2n−1ならば、まず、y1 =x・u mod (n−1)とy2 =x・u mod (n−2)を求め(ステップS5)、ここでも条件分岐し、
y1 ≧y2 ならばy=n 2y1 −y2 +2を求め、yを出力し(ステップS6)、
y1 <y2 ならばy=n 2y1 −y2 を求め、yを出力する(ステップS7)。
【0106】
次に、図8を参照して、上記のステップS5においてy1 =x・u mod (n−1)を求める手順について説明する。
【0107】
まず、予備計算として、次式のようにn−1を互いに素な整数の積に分解する。なお、必ずしも素因数分解でなくとも良い。図4の場合と同様に、この分解には、試行除算法や2次ふるい法など、種々の方法を用いることができる。
n−1=Πi=1 h pi
あるいは、図4の場合と同様に、nが例えばRSA暗号などにおける公開鍵であるとき、n−1を因数分解の形で公開して、この予備計算を不要としても良い。
【0108】
p1 …ph が得られたら、次に、
xi =x mod pi , i=1,…,hと、
ui =u mod pi , i=1,…,hを計算する(ステップS31)。
【0109】
次に、
ai =xi ×ui , i=1,…,hを計算する(ステップS32)。
【0110】
次に、
ai =ai mod pi , i=1,…,hを計算(ステップS33)。なお、ai =ai mod pi は、ai mod pi をai に代入することを意味する。
【0111】
そして、中国剰余定理を用いて次の連立合同式を解く(ステップS34)。
y1 =p1 a1
y1 =p2 a2
…
y1 =pn ah
この連立合同式の解によって、y1 =x・u mod (p1 ・p2 …ph−1 ・ph )=x・u mod (n−1)が得られる。
【0112】
次に、図9を参照して、y2 =x・u mod (n−2)を求める手順について説明する。
【0113】
n−1の場合と同様に、まず、予備計算として、次式のようにn−2を互いに素な整数の積に分解する。なお、必ずしも素因数分解でなくとも良い。もちろん、この場合も、試行除算法や2次ふるい法など、種々の方法を用いることができる。
n−2=Πi=1 m qi
なお、前述のようにn−1を因数分解の形で公開する場合には、n−2も併せて因数分解の形で公開して、この予備計算を不要とする。
【0114】
q1 …qm が得られたら、次に、
xi =x mod qi , i=1,…,mと、
ui =u mod qi , i=1,…,mを計算する(ステップS41)。
【0115】
次に、
ai =xi ×ui , i=1,…,mを計算する(ステップS42)。
【0116】
次に、
ai =ai mod qi , i=1,…,mを計算(ステップS23)。なお、ai =ai mod qi は、ai mod qi をai に代入することを意味する。
【0117】
そして、中国剰余定理を用いて次の連立合同式を解く(ステップS44)。
y2 =q1 a1
y2 =q2 a2
…
y2 =qm am
この連立合同式の解によって、y2 =x2 mod (q1 ・q2 …qm−1 ・qm )=x2 mod (n−2)が得られる。
【0118】
ここで、n=37×61=2257の場合についてy1 とy2 の計算例を示す。
【0119】
まず、予備計算としてn−1,n−2を分解する。
【0120】
n−1=2256=24 ×3×47=47×48
n−2=2255=5×11×41=41×55
と分解して、p1 =47,p2 =48,q1 =41,q2 =55とするものとする。
【0121】
ここでは、x=639、u=1775のときx・u mod nを計算するものとする。
【0122】
まず、y1 =x・u mod (n−1)を計算する。
【0123】
ステップS31では次のような結果になる。
x1 =639 mod 47=28
x2 =639 mod 48=15
u1 =1775 mod 47=36
u2 =1775 mod 48=47
ステップS32では次のような結果になる。
a1 =28×36=1064
a2 =15×47=705
ステップS33では次のような結果になる。
a1 =1008 mod 47=21
a2 =705 mod 48=33
そして、ステップS34で、中国剰余定理を用いて次の連立合同式を解くことにより、
y1 =47 21
y1 =48 33
y1 =x2 mod (n−1)=1713を得ることができる。
【0124】
なお、y1 は次の連立合同式の解になっている。
【0125】
y1 =47 ((639mod47)×(1775mod47))mod47=21
y1 =48 ((639mod48)×(1775mod48))mod47=33
次に、y2 =x・u mod (n−2)を計算する。
【0126】
ステップS41では次のような結果になる。
x1 =639 mod 41=24
x2 =639 mod 55=34
u1 =1775 mod 41=12
u2 =1775 mod 55=15
ステップS42では次のような結果になる。
a1 =24×12=288
a2 =34×15=510
ステップS43では次のような結果になる。
a1 =288 mod 41=1
a2 =510 mod 55=15
そして、ステップS24で、中国剰余定理を用いて次の連立合同式を解くことにより、
y2 =41 1
y2 =55 15
y2 =x2 mod (n−2)=2215を得ることができる。
【0127】
なお、y2 は次の連立合同式の解になっている。
y2 =41 ((639mod41)×(1775mod41))mod41=1
y2 =55 ((639mod55)×(1775mod55))mod55=15
最後に、y1 =1713,y2 =2215であることから、ステップS7において、
y=2×y1 −y2 =2×1713−2215=1211となる。
【0128】
すなわち、y=639×1775 mod 2257=1211となる。
【0129】
ここで、x・u mod nをy1 =x・u mod (n−1)とy2 =x・u mod (n−2)とから求める構成をブロック図で表すと、図10のようになる。
【0130】
図10において、22−1〜22−hは、図8のステップS31〜S33に相当し、24は図8のステップS34に相当し、26−1〜26−mは、図9のステップS41〜S43に相当し、28は図9のステップS44に相当し、29は図2のS6およびS7に相当する。
【0131】
この場合も、図6の場合と同様で、22−1〜22−hの各計算と24−1〜24−mの各計算は、個々の計算の速度自体がx・u mod (n−1)より高速であり、また複数のCPUを用いて処理の並列化を行うことによりさら計算速度を高速化することができる。
【0132】
また、前述と同様に24と28の合同計算式を解く計算は、良く知られた中国剰余定理を用いることにより高速に計算でき、さらに14の計算と18の計算を同時実行することもできる。
【0133】
さらに、29の演算は簡単な判断と計算だけであり、これも高速に計算できる。
【0134】
従って、図10のブロック図で示されるように、x・u mod nを、直接計算せずに、y1 =x・u mod (n−1)とy2 =x・u mod (n−2)とから求める構成にした場合、x・u mod nの値を高速に求めることができることがわかる。
【0135】
次に、図11は、図2と等価な手順である。
【0136】
この手順に従って図1の平方剰余算装置2がx2 mod nを求める場合、先の場合と同様にy1 =x2 mod (n−1)、y2 =x2 mod (n−2)である。
【0137】
まず、xとnを入力する(ステップS101)。
【0138】
ここで、0≦x<nである。
【0139】
次に、y1 =x2 mod (n−1)とy2 =x2 mod (n−2)を求める(ステップS102)。
【0140】
y1 =x2 mod (n−1)を求める手順は、図4の手順であり、y2 =x2 mod (n−2)を求める手順は、図5の手順である。なお、p1 …ph 、q1 …qm の求め方は、前述と同様で、計算で求める方式にしても良いし、外部から与える方式にしても良い。
【0141】
ここで条件分岐し、
y1 =2 ならばy=n y1 となり(ステップS103)、
y1 >y2 ならばy=n 2y1 −y2 +2となり(ステップS104)、
y1 <y2 ならばy=n 2y1 −y2 となる(ステップS105)。
【0142】
ここで、x2 mod nを、直接計算せずに、y1 =x2 mod (n−1)とy2 =x2 mod (n−2)とから求める構成をブロック図で表すと、図6のようになり、前述したようにx2 mod nの値を高速に求めることができることがわかる。
【0143】
一方、この手順に従って図7の乗算剰余算装置4がx・u mod nを求める場合、先の場合と同様にy1 =x・u mod (n−1)、y2 =x・u mod (n−2)である。
【0144】
まず、xとuとnを入力する(ステップS101)。
【0145】
ここで、0≦x<n、0≦u<nである。
【0146】
次に、y1 =x・u mod (n−1)とy2 =x・u mod (n−2)を求める(ステップS102)。
【0147】
y1 =x2 mod (n−1)を求める手順は、図8の手順であり、y2 =x2 mod (n−2)を求める手順は、図9の手順である。なお、p1 …ph 、q1 …qm の求め方は、前述と同様で、計算で求める方式にしても良いし、外部から与える方式にしても良い。
【0148】
ここで条件分岐し、
y1 =2 ならばy=n y1 となり(ステップS103)、
y1 >y2 ならばy=n 2y1 −y2 +2となり(ステップS104)、
y1 <y2 ならばy=n 2y1 −y2 となる(ステップS105)。
【0149】
ここで、x・u mod nを、直接計算せずに、y1 =x・u mod (n−1)とy2 =x・u mod (n−2)とから求める構成をブロック図で表すと、図10のようになり、前述したようにx・u mod nの値を高速に求めることができることがわかる。
【0150】
ところで、これまではnの剰余を求めるのに、n−1の剰余とn−2の剰余を利用したが、2以上の整数の積に容易に分解できるものであれば、n−1の剰余とn−2の剰余でなくても、一般にn−aの剰余を使うことができる。例えば、n−1,n+1の剰余を利用する方法など、種々の方法が考えられる。
【0151】
例えば、nの剰余を求めるのに、n+1の剰余とn+2の剰余を利用しても構わない。この場合、x2 mod nあるいはx・u mod nを、x2 mod (n+1)とx2 mod (n+2)あるいはx・u mod (n+1)とx・u mod (n+2)を用いて求める手順として、図12のような手順が得られる。
【0152】
図12の手順に従って図1の平方剰余算装置2がx2 mod nを求める場合、y1 =x2 mod (n+1)、y2 =x2 mod (n+2)となる。
【0153】
まず、xとnを入力する(ステップS201)。
【0154】
ここで、0≦x<nである。
【0155】
次に、y1 =x2 mod (n+1)とy2 =x2 mod (n+2)を求める(ステップS202)。
【0156】
y1 =x2 mod (n+1)を求める手順は、図4の手順であり、y2 =x2 mod (n+2)を求める手順は、図5の手順である。
ただし、n+1=Πi=1 h pi 、n+2=Πi=1 m qi である。なお、p1 …ph 、q1 …qm の求め方は、前述と同様で、計算で求める方式にしても良いし、外部から与える方式にしても良い。
【0157】
ここで条件分岐し、
y1 =2 ならばy=n y1 となり(ステップS203)、
y1 <y2 ならばy=n 2y1 −y2 +2となり(ステップS204)、
y1 >y2 ならばy=n 2y1 −y2 となる(ステップS205)。
【0158】
ここで、x2 mod nを、直接計算せずに、y1 =x2 mod (n+1)とy2 =x2 mod (n+2)とから求める構成をブロック図で表すと、図6のようになる。ただし、図6において、14の出力がy1 =x2 mod(n+1)になり、18の出力がy2 =x2 mod (n+2)になる。この場合も、前述したようにx2 mod nの値を高速に求めることができることがわかる。
【0159】
一方、図12の手順に従って図7の乗算剰余算装置4がx・u mod nを求める場合、y1 =x・u mod (n+1)、y2 =x・u mod (n+2)となる。
【0160】
まず、xとuとnを入力する(ステップS201)。
【0161】
ここで、0≦x<n、0≦u<nである。
【0162】
次に、y1 =x2 mod (n+1)とy2 =x2 mod (n+2)を求める(ステップS202)。
【0163】
y1 =x・u mod (n+1)を求める手順は、図8の手順であり、y2 =x・u mod (n+2)を求める手順は、図9の手順である。
ただし、n+1=Πi=1 h pi 、n+2=Πi=1 m qi である。なお、p1 …ph 、q1 …qm の求め方は、前述と同様で、計算で求める方式にしても良いし、外部から与える方式にしても良い。
【0164】
ここで条件分岐し、
y1 =2 ならばy=n y1 となり(ステップS203)、
y1 <y2 ならばy=n 2y1 −y2 +2となり(ステップS204)、
y1 >y2 ならばy=n 2y1 −y2 となる(ステップS205)。
【0165】
ここで、x・u mod nを、直接計算せずに、y1 =x・u mod (n+1)とy2 =x・u mod (n+2)とから求める構成をブロック図で表すと、図10のようになる。ただし、図10において、24の出力がy1 =x・u mod (n+1)になり、28の出力がy2 =x・u mod (n+2)になる。この場合も、前述したようにx・u mod nの値を高速に求めることができることがわかる。
【0166】
なお、上記の他にも、n−1,n−2,n−3の剰余を利用する方法、n−1,n+1の剰余を利用する方法など、種々の方法が考えられる。
【0167】
なお、本発明は再帰的に適用することも可能である。例えば、以上の各実施形態において、合同連立式の右辺を計算する際の剰余算(n−aを分解した値、例えば前述のp1 等を法とする剰余算)に適用することもでき、さらなる高速化が期待できる。
【0168】
以下では、平方剰余算、乗算剰余算の通常の直接法と本方法を並列計算が可能という前提で比較する。乗算と除算の計算量を素朴なアルゴリズムのビット計算量で考える。すなわち、それぞれの計算量を次の通りとする。
【0169】
M(k,j)=j(k+j)=kビット数とjビット数の乗算のビット計算量
D(k,j)=j(k−j)=kビット数をjビット数で割る除算のビット計算量
以下において、nはkビット,pi ,qi ,i=1,…,h,の最大数はjビットとする。
【0170】
従来の通常の直接法では、kビット数同士の乗算と、2kビット数割るkビット数の除算を要する。従って、その計算量は
T0 =M(k,k)+D(2k,k)=3k2
である。
【0171】
本方法では、連立合同式の右辺の値を求めるために、kビット数割るjビット数の除算と、jビット数同士の乗算と、2jビット数割るjビット数の除算を要する。以上よりその計算量は、
となる。
【0172】
連立合同式の解の計算は、jビット数とkビット数の乗算と、k+jビット数割るkビット数の除算を要する。以上よりその計算量は、
となる。
【0173】
従って、本方法の計算量は、
T=3j(k+j)
となる。
【0174】
特に先の数値例のようにj=k/2のときは、T=9/4・k2 であり、直接法の3/4である。さらに一般にj=k/Kの場合には、
である。例えばK=4なら計算量を約30%にできる。
【0175】
ところで、本方法の有効性はn−1,n−2などが、どの程度小さな素因数に分解されるかに強く依存する。r以下のタンダムに選んだ整数xの最大素因数は約50%の確率でr0.6 以下である(文献2)。つまり、rのビット数kに対しr以下の乱数の最大素因数は高々0.6kビットであることが半分の確率で期待できる。さらに数値例で示したように、3個以上の素因数に分解するようにnを設定し計算量を減らすことができよう。
【0176】
次に、本発明を暗号方式に基づく処理を行う装置の演算に適用する場合について説明する。
【0177】
本発明は、Y=ck mod nの形で表される演算を行う装置に適用が可能であり、その典型的なものが暗号方式、署名方式、鍵配送方式等に基づいてY=ck mod nの形の演算処理を行う装置である。そのような装置には、暗号化装置、復号装置、署名装置(署名をする装置、署名を認証する装置)、鍵配送装置などがある。
【0178】
例えば図13はRSA暗号方式による暗号化装置101および復号装置102を示す図であり、暗号化装置101は平文に相当するMを暗号化して暗号文に相当するCを出力し、このCが通信媒体や記録媒体等の所定の伝送媒体を通じて復号装置102に渡され、復号装置102では暗号文に相当するCを復号して平文に相当するMを出力する。
【0179】
暗号化装置101は、鍵e,nと入力Mが与えられると、
C=Me mod nを計算する。
【0180】
一方、復号装置102は、鍵d,nと入力Cが与えられると、
M=Cd mod nを計算する。
【0181】
なお、上記からわかるように、暗号化装置101と復号装置102は、同一の構造を持っている。
【0182】
さて、通常、Me mod nの形の計算を行う場合、まずZ=Me を計算し、次にZ mod nを計算するような方法は用いられない。
【0183】
ここで、mod nに関しては、mod nは計算の途中で取っても最後に1回だけ取っても同じであるという性質がある。例えば、
a2 mod n=(a mod n)2 mod n
あるいは
a×b mod n=((a mod n)×(b mod n)) mod n
となる。
【0184】
この性質を利用して、Me mod nの形の計算を行う場合、mod nを計算の途中で取って、扱う数を大きくしないようにしあるいは演算の回数を減らすようにして実行速度を高速化する方法が良く取られる。
【0185】
例えば、良く知られているように、Me mod nは、x2 mod nとx・u mod n(0≦x<n,0≦u<n)の2種類の演算の繰り返しで高速に実現することができる。
【0186】
その1つの手順を図14に示す。
【0187】
まず、eを2進展開し、e=(ek−1 ,ek−2 ,…,e0 )2 とする。そして、C=1,i=kと初期設定する(ステップS301)。
【0188】
以降、iから1を減じ(ステップS302)、C=C×C mod nを計算し(ステップS304)、ei =1ならばC=C×M mod nを計算し(ステップS305,S306)、ステップS302に戻る手順を、ステップS303でi<0となってループを抜け出すまで繰り返す。
【0189】
ここで、ステップ304の平方剰余算に前述したような本発明の平方剰余算を適用し、ステップ306の乗算剰余算に前述したような本発明の乗算剰余算を適用することにより、図14の計算を高速に実行することができる。
【0190】
図14は暗号装置側の手順であるが、復号装置側の手順も図14と同様であり(MとCを入れ替えかつeをdに代えたもの)、同様に、本発明の平方剰余算および乗算剰余算を適用することにより、復号演算を高速に実行することができる。
【0191】
また、Y=ck mod nの形の計算を、図14とは異なる手順で行うアルゴリズムも種々存在するが、どのような手順の場合であっても、その手順にx2 mod nおよび/またはx・u mod nの計算の部分が含まれているならば、その部分に同様に本発明を適用可能である。
【0192】
したがって本発明は、RSA暗号方式による暗号化装置、復号装置だけではなく、Y=ck mod nの形で表される演算を行う、あるいはx2 mod nおよび/またはx・u mod nの形で表される演算を行ういかなる装置にも適用が可能である。
【0193】
例えば、Rabin暗号方式あるいはESIGN暗号方式(署名方式)による装置はいずれもY=ck mod nの形で表される演算を行う装置であり、本発明を適用可能である。
【0194】
また、例えば、Elgamal暗号方式(署名方式)、Schnorr暗号方式(署名方式)、DSS暗号方式(署名方式)、Fiat−Shamir暗号方式(署名方式)、DH暗号方式(鍵配送方式)、3−pass purotocol暗号方式(鍵配送方式)はいずれもY=ck mod nの形で表される演算を行う装置であり、本発明を適用可能である。なお、これらのものについてはnは素数であるが、nの前後の値が容易に分解可能であるようなnを選ぶようにすれば、本発明は何等修正することなくそのまま適用可能である。
【0195】
また、本発明は、他の方法と、例えばモンゴメリ演算法と組合せて使用することも可能である。
【0196】
また、本発明は、従来からある手法と、例えば文献1〜4に開示された手法と組合せて使用することも可能である。
【0197】
なお、以上の各機能は、ソフトウェアとしても実現可能である。また、上記した各手順あるいは手段をコンピュータに実行させるためのプログラムを記録した機械読取り可能な媒体として実施することもできる。
【0198】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0199】
【発明の効果】
本発明によれば、X(Xは例えばx2 あるいはx・u) mod nの値を、Xについてn+1とn+2をそれぞれ法として得た剰余から求めるようにしたので、X mod nの形の演算を高速に実行することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る平方剰余算装置を示す図
【図2】本発明の実施の形態に係る剰余算アルゴリズムの一例を示すフローチャート
【図3】図2の手順を適用して得た数値の具体例を示す図
【図4】x2 mod (n−1)を求める手順の一例を示すフローチャート
【図5】x2 mod (n−2)を求める手順の一例を示すフローチャート
【図6】x2 mod nを求める構成を示すブロック図
【図7】本発明の実施の形態に係る乗算剰余算装置を示す図
【図8】x・u mod (n−1)を求める手順の一例を示すフローチャート
【図9】x・u mod (n−2)を求める手順の一例を示すフローチャート
【図10】x・u mod nを求める構成を示すブロック図
【図11】本発明の実施の形態に係る剰余算アルゴリズムの一例を示すフローチャート
【図12】本発明の実施の形態に係る剰余算アルゴリズムの一例を示すフローチャート
【図13】本発明を適用する暗号化装置および復号装置を示す図
【図14】Me mod nをx2 mod nとx・u mod nの2種類の演算の繰り返しで求める手順に一例を示すフローチャート
【符号の説明】
2…平方剰余算装置
4…乗算剰余算装置
12−1〜12−h…x2 mod pi の演算
16−1〜16−m…x2 mod qi の演算
14,18,24,28…連立合同式の解を求める演算
19…合成演算
22−1〜22−h…x・u mod pi の演算
26−1〜26−m…x・u mod qi の演算
19,29…合成演算
Claims (10)
- 整数nと整数X(0≦X≦(n−1)2 )について剰余Y=X mod nを求める剰余算装置であって、
前記整数Xについて、y1=X mod (n+1)により、整数y1を求める第1の処理手段と、
前記整数Xについて、y2=X mod (n+2)により、整数y2を求める第2の処理手段と、
求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとする第3の処理手段とを備えたことを特徴とする剰余算装置。 - 前記整数Xは、x2(ただしxは0≦x<nを満たす整数)またはx・u(ただしxは0≦x<nを満たす整数かつuは0≦u<nを満たす整数)であることを特徴とする請求項1に記載の剰余算装置。
- 前記第1の処理手段は、剰余の法とすべき値n+1を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含み、
前記第2の処理手段は、剰余の法とすべき値n+2を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含んだことを特徴とする請求項1または2に記載の剰余算装置。 - 前記剰余算装置は、所定の暗号方式に基づく処理を行う処理装置に含まれるものであり、
前記整数nは、前記所定の暗号方式における鍵として与えられるものであることを特徴とする請求項1ないし3のいずれか1項に記載の剰余算装置。 - 前記処理装置は、暗号化装置、復号装置、署名装置、認証装置又は鍵配送装置であることを特徴とする請求項4に記載の剰余算装置。
- 整数kと整数nの対を鍵としcを変換前のデータまたは該鍵に対応する鍵による変換後のデータとして、ck mod nの値を、剰余Y=x2 mod n(ここでxは0≦x<nを満たす整数)の形の演算を実行する第1の演算手段と剰余Y´=x・u mod n(ここでxは0≦x<nを満たす整数かつuは0≦u<nを満たす整数)の形の演算を実行する第2の演算手段とを適宜繰り返し実行させることにより求める情報処理装置において、
前記第1の演算手段は、
整数x2 について、y1=x2 mod (n+1)により、整数y1を求める第1の処理手段と、
整数x2 について、y2=x2 mod (n+2)により、整数y2を求める第2の処理手段と、
求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとする第3の処理手段とを備え、
前記第2の演算手段は、
整数x・u について、y1´=x・u mod (n+1)により、整数y1´を求める第4の処理手段と、
整数x・u について、y2´=x・u mod (n+2)により、整数y2´を求める第5の処理手段と、
求められた前記整数y1´及び前記整数y2´につき、y1´=y2´の場合には前記整数nを法としてy1´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´>y2´の場合には前記整数nを法として2・y1´−y2´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´<y2´の場合には前記整数nを法として2・y1´−y2´+2と合同である0以上n未満の整数値を求めて、これを剰余Y´とする第6の処理手段とを備えたことを特徴とする情報処理装置。 - 前記第1の処理手段及び前記第4の処理手段は、それぞれ、剰余の法とすべき値n+1を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含み、
前記第2の処理手段及び前記第5の処理手段は、それぞれ、剰余の法とすべき値n+2を複数の互いに素な値の積で表した場合における当該互いに素な値それぞれを法として、与えられた値の剰余をそれぞれ求める手段と、同一の変数を左辺とし、求められた剰余を右辺とし、該右辺の剰余に対応する前記素な値を法とする連立合同式を解き、得られた解を求めるべき値とする手段とを含んだことを特徴とする請求項6に記載の情報処理装置。 - 前記情報処理装置は、暗号化装置、復号装置、署名装置、認証装置又は鍵配送装置であることを特徴とする請求項6または7に記載の情報処理装置。
- 第1乃至第 3 の処理手段を備え、整数nと整数X(0≦X≦(n−1)2 )について剰余Y=X mod nを求める剰余算装置における剰余算方法であって、
前記第1の処理手段により、前記整数Xについて、y1=X mod (n+1)により、整数y1を求めるステップと、
前記第2の処理手段により、前記整数Xについて、y2=X mod (n+2)により、整数y2を求めるステップと、
前記第3の処理手段により、求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとするステップとを有することを特徴とする剰余算方法。 - 整数kと整数nの対を鍵としcを変換前のデータまたは該鍵に対応する鍵による変換後のデータとして、ck mod nの値を、剰余Y=x2 mod n(ここでxは0≦x<nを満たす整数)の形の演算を実行する第1の演算手段と剰余Y´=x・u mod n(ここでxは0≦x<nを満たす整数かつuは0≦u<nを満たす整数)の形の演算を実行する第2の演算手段とを適宜繰り返し実行させることにより求める情報処理装置における剰余算方法において、
前記第1の演算手段において、整数x2 について、y1=x2 mod (n+1)により、整数y1を求めるステップと、
前記第1の演算手段において、整数x2 について、y2=x2 mod (n+2)により、整数y2を求めるステップと、
前記第1の演算手段において、求められた前記整数y1及び前記整数y2につき、y1=y2の場合には前記整数nを法としてy1と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1>y2の場合には前記整数nを法として2・y1−y2と合同である0以上n未満の整数値を求めて、これを剰余Yとし、y1<y2の場合には前記整数nを法として2・y1−y2+2と合同である0以上n未満の整数値を求めて、これを剰余Yとするステップと、
前記第2の演算手段において、整数x・u について、y1´=x・u mod (n+1)により、整数y1´を求めるステップと、
前記第2の演算手段において、整数x・u について、y2´=x・u mod (n+2)により、整数y2´を求めるステップと、
前記第2の演算手段において、求められた前記整数y1´及び前記整数y2´につき、y1´=y2´の場合には前記整数nを法としてy1´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´>y2´の場合には前記整数nを法として2・y1´−y2´と合同である0以上n未満の整数値を求めて、これを剰余Y´とし、y1´<y2´の場合には前記整数nを法として2・y1´−y2´+2と合同である0以上n未満の整数値を求めて、これを剰余Y´とするステップとを有することを特徴とする剰余算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05649597A JP3626315B2 (ja) | 1997-03-11 | 1997-03-11 | 剰余算装置、情報処理装置及び剰余算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05649597A JP3626315B2 (ja) | 1997-03-11 | 1997-03-11 | 剰余算装置、情報処理装置及び剰余算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10254683A JPH10254683A (ja) | 1998-09-25 |
JP3626315B2 true JP3626315B2 (ja) | 2005-03-09 |
Family
ID=13028690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05649597A Expired - Fee Related JP3626315B2 (ja) | 1997-03-11 | 1997-03-11 | 剰余算装置、情報処理装置及び剰余算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3626315B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4846384B2 (ja) * | 2006-02-20 | 2011-12-28 | 株式会社東芝 | 半導体記憶装置 |
JP4836608B2 (ja) * | 2006-02-27 | 2011-12-14 | 株式会社東芝 | 半導体記憶装置 |
-
1997
- 1997-03-11 JP JP05649597A patent/JP3626315B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10254683A (ja) | 1998-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Walter | Montgomery exponentiation needs no final subtractions | |
US7904498B2 (en) | Modular multiplication processing apparatus | |
Knezevic et al. | Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods | |
AU677269B2 (en) | A cryptographic method | |
US6151393A (en) | Device and method for modular multiplication | |
EP1708081B1 (en) | Method and device for calculating a Montgomery conversion parameter | |
EP0952697B1 (en) | Elliptic curve encryption method and system | |
EP2045716A2 (en) | Exponentiation calculation apparatus and exponentiation calculation method | |
US8719324B1 (en) | Spectral modular arithmetic method and apparatus | |
US6546104B1 (en) | Montgomery reduction apparatus | |
EP1600852B1 (en) | Method and apparatus for calculating a modular inverse | |
JP3626315B2 (ja) | 剰余算装置、情報処理装置及び剰余算方法 | |
JP4182226B2 (ja) | 剰余系の計算方法及び装置並びにプログラム | |
Thiers et al. | Side channel attack resistance of the elliptic curve point multiplication using Eisenstein integers | |
Wu | An efficient common-multiplicand-multiplication method to the Montgomery algorithm for speeding up exponentiation | |
Knežević et al. | Speeding up bipartite modular multiplication | |
Koyama et al. | A signed binary window method for fast computing over elliptic curves | |
Arazi et al. | On calculating multiplicative inverses modulo $2^{m} $ | |
Lou et al. | An efficient Montgomery exponentiation algorithm by using signed-digit-recoding and folding techniques | |
Dai et al. | Don’t Forget Pairing-Friendly Curves with Odd Prime Embedding Degrees | |
Somsuk | A new modified integer factorization algorithm using integer modulo 20's technique | |
Mohammadi et al. | A fast and secure RSA public key cryptosystem | |
Wu | Fast parallel montgomery binary exponentiation algorithm using canonical-signed-digit recoding technique | |
Shehu et al. | Vulnerabilities ofex2− y2φ (N)= zUsing Modulus of the FormN= prqs | |
Olszyna | Modular multiplication in GF (p) for public-key cryptography |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040706 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040901 |
|
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: 20041130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041202 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071210 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101210 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |