JP2006500615A - 向上したQuisquaterReduction - Google Patents
向上したQuisquaterReduction Download PDFInfo
- Publication number
- JP2006500615A JP2006500615A JP2004537408A JP2004537408A JP2006500615A JP 2006500615 A JP2006500615 A JP 2006500615A JP 2004537408 A JP2004537408 A JP 2004537408A JP 2004537408 A JP2004537408 A JP 2004537408A JP 2006500615 A JP2006500615 A JP 2006500615A
- Authority
- JP
- Japan
- Prior art keywords
- words
- multiplier
- bits
- value
- 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.)
- Pending
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/722—Modular multiplication
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Nを法とする第1の数X及び第2の数Yの積Pを計算する方法及び装置であって、Yは、各々が長さpビットのjワードに分割され、長さ(m+n)ビットを有し、これら方法及び装置は、Yのjワードの連続的な一つでサイクル的に動作し、形成された中間の積の中間的な法減少を実行する。Nの特別に選択した倍数N’を用いて、N’に基づく中間の単一の減少のみが、中間の積Pが各サイクルの終了時に(m+n)ビットを超えないことを保証するようにする。N’はNの整数倍であり、(m−1)の最上位ビットが‘1’に等しくなるとともに最下位ビットが‘0’になるように値N’を選択する。
Description
本発明は、二つの長整数の乗算を行い、第三の長整数を法としている方法及び装置に関する。そのような乗算を、例えば、暗号プロセッサの公開鍵アルゴリズムの実現中に繰り返し実行する必要がある。
したがって、乗算を実行するのに要する時間に関して最も有効となるように、乗算動作を実現することは重要である。さらに、乗算される整数の長さより著しく小さいことがある最大ワードサイズのようなしばしば所定の実用的な制限を有する演算ハードウェア上で、有効に計算を実行できるようにすることは重要である。したがって、制限されたハードウェア上で有効に乗算動作を実行できる計算アルゴリズムを設けることも重要である。
例えば、多くの場合において、32ビット幅データワードしか処理できないハードウェアを用いて1024ビット数又は4096ビット数の乗算を行う必要がある。特に、RSA暗号化アルゴリズムは、現在では1024ビット数の処理を必要としており、これは、セキュリティを向上するために4096ビット数まで増大する。
本発明の目的は、更に少ない計算を有し、したがって、現存するハードウェア上で更に高速に実現することができる更に有効な乗算方法を提供することである。
一態様によれば、本発明は、
Nを法とする第1の値X及び第2の値Yの積Pを計算する方法であって、Yが、各々が長さpビットのjワードに分割され、Xが長さ(m+n)ビットを有し、
a)積レジスタPを初期化するステップと、
b)Yのjワードのうちの最初のものを乗算器にロードするステップと、
c)XをYのロードされたワードに乗算して、中間の積Tを形成するステップと、
d)前記積レジスタPをT及びP*2pの和によって更新するステップと、
e)値PH(N’/2)の減算によって積レジスタPのコンテンツを減少するステップと、
f)Yのjワードの連続するものを前記乗算器にロードするとともに、Yのjワードの各々に対してステップc)〜e)を繰り返すステップとを具え、
N’をNの整数倍とし、(m−1)の最上位ビットを‘1’に等しくするとともに最下位ビットが‘0’になるように値N’を選択し、
PHを、前記レジスタのPの(p+2)の最上位ビットとして選択することを特徴とする方法を提供する。
Nを法とする第1の値X及び第2の値Yの積Pを計算する方法であって、Yが、各々が長さpビットのjワードに分割され、Xが長さ(m+n)ビットを有し、
a)積レジスタPを初期化するステップと、
b)Yのjワードのうちの最初のものを乗算器にロードするステップと、
c)XをYのロードされたワードに乗算して、中間の積Tを形成するステップと、
d)前記積レジスタPをT及びP*2pの和によって更新するステップと、
e)値PH(N’/2)の減算によって積レジスタPのコンテンツを減少するステップと、
f)Yのjワードの連続するものを前記乗算器にロードするとともに、Yのjワードの各々に対してステップc)〜e)を繰り返すステップとを具え、
N’をNの整数倍とし、(m−1)の最上位ビットを‘1’に等しくするとともに最下位ビットが‘0’になるように値N’を選択し、
PHを、前記レジスタのPの(p+2)の最上位ビットとして選択することを特徴とする方法を提供する。
他の態様によれば、本発明は、
Nを法とする第1の値X及び第2の値Yの積Pを計算するプロセッサであって、Yが、各々が長さpビットのjワードに分割され、Xが長さ(m+n)ビットを有し、
a)積レジスタPを初期化する初期化手段と、
b)Yのjワードのうちの最初のものを乗算器にロードするロード手段と、
c)XをYのロードされたワードに乗算して、中間の積Tを形成する乗算器と、
d)前記積レジスタPをT及びP*2pの和によって更新する更新手段と、
e)値PH(N’/2)の減算によって積レジスタPのコンテンツを減少する減少手段と、
f)Yのjワードの連続するものを前記乗算器にロードするとともに、Yのjワードの各々に対してステップc)〜e)を繰り返す制御手段とを具え、
N’をNの整数倍とし、(m−1)の最上位ビットを‘1’に等しくするとともに最下位ビットが‘0’になるように値N’を選択し、
PHを、前記レジスタのPの(p+2)の最上位ビットとして選択することを特徴とするプロセッサを提供する。
Nを法とする第1の値X及び第2の値Yの積Pを計算するプロセッサであって、Yが、各々が長さpビットのjワードに分割され、Xが長さ(m+n)ビットを有し、
a)積レジスタPを初期化する初期化手段と、
b)Yのjワードのうちの最初のものを乗算器にロードするロード手段と、
c)XをYのロードされたワードに乗算して、中間の積Tを形成する乗算器と、
d)前記積レジスタPをT及びP*2pの和によって更新する更新手段と、
e)値PH(N’/2)の減算によって積レジスタPのコンテンツを減少する減少手段と、
f)Yのjワードの連続するものを前記乗算器にロードするとともに、Yのjワードの各々に対してステップc)〜e)を繰り返す制御手段とを具え、
N’をNの整数倍とし、(m−1)の最上位ビットを‘1’に等しくするとともに最下位ビットが‘0’になるように値N’を選択し、
PHを、前記レジスタのPの(p+2)の最上位ビットとして選択することを特徴とするプロセッサを提供する。
本発明の実施の形態を、例示によって添付図面を参照しながら説明する。
RSA又はECC公開鍵動作中に数千回実行する必要がある計算は、積
P=X*YmodN
を決定することであり、この場合、X,Y及びNは全て長さ(m+n)ビットの長整数である。従来の方法において、長整数X及びYは、pビットワード(典型的には32ビットワード)として処理される。部分積を、適切にサイズ化された乗算器、好適にはワードサイズを処理するために適切にサイズ化された例えばp*p乗算器を用いて計算することができる。
P=X*YmodN
を決定することであり、この場合、X,Y及びNは全て長さ(m+n)ビットの長整数である。従来の方法において、長整数X及びYは、pビットワード(典型的には32ビットワード)として処理される。部分積を、適切にサイズ化された乗算器、好適にはワードサイズを処理するために適切にサイズ化された例えばp*p乗算器を用いて計算することができる。
ここで図1を参照して説明すると、従来のQuisquater帰着(Quisquater reduction)形態10において、実行される計算は、
P=X*YmodN’
である。この場合、N’をNの倍数とし、すなわち、/を整数としたときにN’=/.Nとする。さらに、m最上位ビットが‘1’となるとともにN’が(n+M)ビット幅となるようにN’を特別に選択する。
← m →← n →
N’= 111...1Nn-1Nn-2...N0
P=X*YmodN’
である。この場合、N’をNの倍数とし、すなわち、/を整数としたときにN’=/.Nとする。さらに、m最上位ビットが‘1’となるとともにN’が(n+M)ビット幅となるようにN’を特別に選択する。
← m →← n →
N’= 111...1Nn-1Nn-2...N0
積P及びN’を法とする積Pの減算は、以下のアルゴリズムに従って計算される。
B=2p(例えば、p=32)
B=2p(例えば、p=32)
この場合、yiを、Yのi番目のpビットワードとし、jを、Yのpビットワードの数とする(すなわち、j*p=(m+n))。
P=0;
for i=j-1 downto 0
{ T=X*y(i)
P=P*B+T
P=P-(PH*N’) //reduction of P
If msb(P)=1 then P=P-N’
}
図1を参照すると、Pは零に初期化され(ステップ11)、ループ10aに対して、制御パラメータi=(j−1)による初期化が行われる(ステップ12)。ステップ13において、中間積(intermediate product)TがX*y(i)として計算される。Xは(n+m)ビット幅であり、y(i)はpビット幅であり、その結果、積Tは(n+m+p)ビット幅となる。これを、(n+m)*pビット乗算器を用いてワンパスで計算することができ、又は、Xを、更に小さい乗算器を用いてフラグメントで処理することができる。例えば、Xが、j個のpビットワードにも分解される場合、X*y(i)を、p*pビット乗算器を用いて計算することができる。後に説明する他の理由のために、(p+1)*pビット乗算器を用いるのが好ましい。
ループ10aの各サイクルにおいて、Pは、(n+m)又は小ビット幅で開始し、その結果、積P*Bは、(n+m+p)ビット幅となる。Tの加算(ステップ14)後、Pは、低減動作15の前に最大でも(n+m+P+1)ビット幅となる。この段階では、PをPH.2n+mとして書き込むことができ、この場合、PHを、Pの上位の(p+1)ビットとし、それに対して、PLを、Pの残りの下位の(m+n)ビットとする。モジュロ減少に対して、Pのサイズを、PH*N’の減算を含む第1減算動作においてN’の倍数の減算によって減少することができる。
(PH*N)の第1の減算の後、Pは、最大でも(m+n+1)ビットとなる。(ステップ16のチェックにおいて)最上位ビットが1であるとき、他の減算動作P=P−N’が要求され(ステップ17)、Pを再び(m+n)ビット長に減少する。このポイントでは、iの値が減分され(ステップ18)、ループ10aは、ステップ19の制御の下でjサイクルが完了するまで繰り返される。
このアルゴリズムにおいて、各ループ10aにおけるPの減少は、更なる減算動作(ステップ17)が必要であるか否かを知るためのテスト(ステップ16)を要求する。典型的な実現において、mは大きく、ステップ17の更なる減算動作P=P−N’は非常に稀に要求される。したがって、その必要性をチェックするステップ16の動作は、大幅に浪費される動作である。
上位の(m+n)−(p+1+n)の少なくとも全てすなわちm−p−1ビットが‘1’であるときに他の減算動作が要求されるのを示すことができる。これが発生する機会は、2-(m-p-1)である。さらに、残りの(m+n)ビットの総和は、オーバーフローを付与する。そのように発生するオーバーフローの機会は(2(m+n)−1)/2(m+n+1)であり、これを、m及びnの全ての通常の値に対して0.5で近似することができる。したがって、更なる減算ステップ17を要求する全機会は、2-(m-p-1)*0.5=2-(m-p)となる。
典型的なアプリケーションにおいて、m=63及びp=32であり、その結果、更なる減算動作を実行する必要がある機会の数は、典型的には2×109に1回だけである。
したがって、更なる減算が必要であるか否かをチェックする必要がある論理の組込みは、非常に稀に必要とされるイベントに対するオーバーヘッドの重大な処理を表す。
特に、アルゴリズム10が、パイプライン化された乗算器を用いて実現されるときには、新たの乗算動作(ステップ13及び14)は、減算動作(ステップ15〜17)の終了まで開始することができない。この理由は、次の乗算動作が開始できるようになる前にPの最上位ビットをチェックすることによって更なる減算動作(ステップ17)が必要とされるか否かを確立する(ステップ16)必要があるからである。
図2を参照すると、図1のアルゴリズム10の変形20を説明しており、この場合、更なる減算動作を必要とすることなく各サイクルの終了時のPの最大サイズが(m+n)ビットより大きくならないことを保証するように、N’の値が特別に選択される。
これは、最初の減算動作後のPの最上位ビットのチェックが必要とされないという相当な処理の利点を提供し、パイプライン化されたプロセッサは、次のサイクルに対する乗算動作を開始する前に減算動作を待機する必要がない。
N’は、m+nビットの整数として再び特別に選択されるが、この場合、m−1の最上位ビットが‘1’であり、最下位ビットが‘0’であり、その結果、N’は偶数である。
←m−1 →← n →1
N’=111...1Nn−1Nn−2...N1 0
←m−1 →← n →1
N’=111...1Nn−1Nn−2...N1 0
積P及びN’を法とする積Pの減算は、以下のアルゴリズムに従って計算される。
B=2p(例えば、p=32)
B=2p(例えば、p=32)
この場合、yiを、Yのi番目のpビットワードとし、jを、Yのpビットワードの数とする(すなわち、j*p=(m+n))。この形態において、P≦m−3である。
P=0;
for i=j-1 downto 0
{ T=X*y(i)
P=P*B+T
P=P-(PH*N’/2) //reduction of P
}
図2を参照すると、Pは零に初期化され(ステップ21)、ループ20aは、制御ぱらっメータi=(j−1)で初期化される(ステップ22)。
乗算ステップ23において、中間積Tは、X*y(i)として計算される。Xは、(n+m)ビット幅であり、y(i)はpビット幅であり、その結果、積Tは、(n+m+p)ビット幅となる。これを、(n+m)*pビット乗算器を用いてワンパスで計算することができ、又は、Xを、更に小さい乗算器を用いてフラグメントで処理することができる。例えば、Xがj個のpビットワードに分解される場合、X*y(i)を、p*pビット乗算器又は(p+1)*p乗算器を用いて計算することができる。しかしながら、後に説明する理由から、好適な実施の形態において、XとYの両方がjワード、x(k)及びy(i)として処理されるときに(p+2)*pビット乗算器が用いられ、この場合、i=0...(j−1)及びk=0...(j−1)である。
ループ20aの各サイクルにおいて、Pは、(n+m)又は少数ビット幅で開始し、その結果、積P*Bは、(n+m+p)ビット幅となる。ステップ24において、Pレジスタは、Tの加算によって更新される。Tの加算後、Pは、減算動作25の前では最大でも(n+m+p+1)ビットとなる。
この段階において、PをPH*2(n+m-1)+PLとして書き込むことができ、この場合、PHは、Pの上位の(p+2)ビットであり、それに対して、PLは、Pの残りである下位の(m+n+1)ビットである。係数k=PH/2は、減算動作25で用いられるN’に対する乗算係数の見積もりとして用いられる。この場合において、減算P’=P−(PH/2)*N’が行われ、又は、ステップ25として、P=P−PH*N’/2となる。PHが奇数となることがあるので、N’は、N’が2で割り切れるように偶数に選択される。
PH*N’/2の最初の減算後、Pは、全ての状況の下で(m+n)ビットとなる。したがって、図1のアルゴリズムとは異なり、最上位ビットチェック又は他の減算動作が要求されない。このポイントで、iの値が減分され(ステップ28)、ループ20aは、ステップ29の制御下でjサイクルが完了するまで繰り返される。
ここでの好適な実施の形態において、
P=P+PH*M
を用いることによって、ステップ25が加算動作として実際に実行される。この場合、二つの相補形態においてM=−N’/2である。
P=P+PH*M
を用いることによって、ステップ25が加算動作として実際に実行される。この場合、二つの相補形態においてM=−N’/2である。
この加算を、複数のワード(例えば、pビットのjワード)に分解することもできる。更に一般的には、Pがサイズpのqワードに分解される場合、ワードの各々に対してP(k)となる。ここで、k=0...(q−1)となる。
{C(k),R(k)}=P(k)PH*M(k)+C(k−1)
この場合、P(k)は、Pのk番目のワードであり、M(k)は、Mのk番目のワードであり、R(k)は、計算結果の最下位ワードであり、C(k)は、乗算結果の残りの上位ビット(最上位ワード)であり、それは、次の上位ワードに対する次の計算でC(k−1)として加算される。Pが常に負でなく、かつ、常に(m+n)の最大サイズまで減少されるようなステップ25によるPの適切な減少の証明は、以下の通りである。
{C(k),R(k)}=P(k)PH*M(k)+C(k−1)
この場合、P(k)は、Pのk番目のワードであり、M(k)は、Mのk番目のワードであり、R(k)は、計算結果の最下位ワードであり、C(k)は、乗算結果の残りの上位ビット(最上位ワード)であり、それは、次の上位ワードに対する次の計算でC(k−1)として加算される。Pが常に負でなく、かつ、常に(m+n)の最大サイズまで減少されるようなステップ25によるPの適切な減少の証明は、以下の通りである。
Pが負になることはない。
N’が最大であるときにPは最小になる。すなわち、N’=2m+n−2である。
この場合、P’>0であることを証明する必要がある。
P=PH.2n+m−1+PL−PH.(2m+n−2)/2
=PL+PH
PLとPHの両方とも負でないので、P’も負でない。
N’が最大であるときにPは最小になる。すなわち、N’=2m+n−2である。
この場合、P’>0であることを証明する必要がある。
P=PH.2n+m−1+PL−PH.(2m+n−2)/2
=PL+PH
PLとPHの両方とも負でないので、P’も負でない。
Pは(m+n)ビット幅である。
N’が最小であるときにPは最大である。すなわち、N’=2m+n−2ん+1である。
P=PH.2n+m−1+PL−PH.(2m+n−2n+1)/2
=PL+PH*2n
PLは、(m+n−1)ビット幅である。
PH*2nは(p+2+n)ビット幅である。
p≦m−3であるので、Pは最大でも(m+n)ビット幅である。
N’が最小であるときにPは最大である。すなわち、N’=2m+n−2ん+1である。
P=PH.2n+m−1+PL−PH.(2m+n−2n+1)/2
=PL+PH*2n
PLは、(m+n−1)ビット幅である。
PH*2nは(p+2+n)ビット幅である。
p≦m−3であるので、Pは最大でも(m+n)ビット幅である。
既に説明したように、m≧p+3が条件となる。PHを容易に計算するために、m+nをpビットの倍数とするのが好ましい。この場合、PHは、加算の実行、加算の最上位ワード及び最上位であるが一つの上位ワードの最上位ビットから計算される。
最大(n+n+p+1)ビットの乗算段階後のPのレイアウトP=P*B+Tを、図3に示す。PHは、Pn+m−1,Pn+m,Pn+m+1,...Pn+m+p,Pn+m+p+1のビット位置を用いて確立される。
プライム(prime)Nが160ビット以下であるとき、32ビットシステム(p=32)に対して、計算する32ビットワードの数は7である。したがって、パフォーマンスを犠牲とすることなくmを64と選択することができる。
157ビット以下の長さを有するプライムNに対して及び158〜160ビットの長さを有するあるプライムに対して、上位の(m−1)ビットが全て‘1’となるようにN’(197ビット)を選択することができる。これは、計算するワードの数が7の代わりに6となることを意味する。PHの長さが(p+2)ビットであるので、好適な実施の形態において、p*p乗算器の最小要求の代わりに(p+2)*p乗算器が用いられる。この場合、PHによるN’の乗算を分解する必要がなく、乗算の数が減少される。
図4を参照すると、図2のアルゴリズムを実現するパイプライン化されたプロセッサ40の一例を示す。プロセッサ40において、全てのオペランド(X,Y、及び図4において“Z”と称される積P)は、処理中にメモリ41に格納され、記載すべきポインタレジスタによって設けられるような入力“A”に設けられたメモリアドレスに従ってアクセスされる。データは、データ線“Dout”上のメモリ41から読み出されるとともに、データ線“Din”上のメモリに書き込まれる。適切な制御回路、例えばステートマシン(図示せず)は、プロセッサ40の動作の正確なシーケンスを維持する。
オペランドXのワードx(k)は、XPtrレジスタ42Xによって指定されたアドレスのメモリ41に格納される。同様に、オペランドYのワードy(i)は、YPtrレジスタ42Yによって指定されるアドレスのメモリ41に格納される。積及びオペランドZのワードz(k)は、ZPtrレジスタ42Zによってしてされたアドレスのメモリに格納される。オペランド及び積のワード位置の値i及びkは、43X,43Y及び43Zでそれぞれ示されるカウンタXCnt,YCnt及びZCntに格納される。XPtr、YPtr及びZPtrのアドレスは、カウンタXCnt,YCnt,ZCntから導き出すことができるオフセットをベースアドレスに加えたものを表す。
関連の動作の各々に対して、X,Y及びZの次のワードは、ポインタ42及びカウンタ43の制御の下でメモリ41から検索され、それぞれ44X,44Y及び44Zとラベルを付したレジスタXReg,YReg及びZRegのうちの一つに格納される。ワードがレジスタ44に対して検索される度に、各カウンタは、それに応じて増分され又は減分される。
X,Y又はZのワードの各乗算の結果Rの最下位ワードは、RRegレジスタに送出され、42Rを付されたポインタRPtrによって表されたアドレスのメモリ41に格納される。キャリービット、すなわち、結果の最上位ビットCは、次の乗算で用いる準備をしているCRegレジスタ44Cに送出される。
乗算器45は、必要に応じて、各乗算動作に対するワード入力x(k),y(i),z(k)及びc(k)を受信する。
新たなループ20a(図2)の開始時に、CRegが0に初期化される。その後、乗算ごとに(すなわち、ステップ23及び24のループ内のkの値の各々に対して)、以前の結果C(k-1)の最上位ワードは、x(k)及びy(i)のk番目の乗算に追加される。既に説明したように、ループ20aに対してiが1回更新され、それに対して、ループ20aの各パス内でXのjワードの各々に対してkが更新される。ステップ23(T=X*y(i))及びステップ24(P=P*B+T)は、有効に結合されるが、全てのx(k)に基づいてワードごとに実行される。
最も頻繁な場合には、乗算器に入力されるz(k)(ステップ24)は、1ワードシフトされる(B=2pの乗算)、レジスタ44Rの以前に格納されたRと同一であるが、減少ステップ25中ではない。
カウンタ43は、一連の乗算の各々に対して用いられるワードの数をカウントダウンする。当然、カウンタ43X及び43Zは、ループ20aを通じた各パスに対してk=(q−1)...0からカウントダウンを行い、同時に、カウンタ43Yは、ループ20aを通じた各パスに対して1回減分を行う。好適な実施の形態において、カウンタ43X及び43Zを組み合わせることができる。
一連のk=(q−1)...0の各々の終了時に、x(k)=0の乗算が更に一度存在し、これによって、乗算動作がR(k)=z(k)+C(k−1)まで減少し、これは、格納すべき最終結果である。C(k)は、常に最終結果で0になる。この場合、互いに相違するオペレータによる減算ステップ(ステップ25)が開始され(又は既に説明したような同等の加算が行われ)る。これは、同一の乗算器45を用いて実行される。
本発明において、減算ステップ25中、X及びYの次の値が常にロードされるが、これは図1の従来の形態の場合ではない。その理由は、更なる減算ステップ17が存在する可能性があるからである。
他の実施の形態は、添付した特許請求の範囲内にある。
Claims (15)
- Nを法とする第1の値X及び第2の値Yの積Pを計算する方法であって、Yが、各々が長さpビットのjワードに分割され、Xが長さ(m+n)ビットを有し、
a)積レジスタPを初期化するステップと、
b)Yのjワードのうちの最初のものを乗算器にロードするステップと、
c)XをYのロードされたワードに乗算して、中間の積Tを形成するステップと、
d)前記積レジスタPをT及びP*2pの和によって更新するステップと、
e)値PH(N’/2)の減算によって積レジスタPのコンテンツを減少するステップと、
f)Yのjワードの連続するものを前記乗算器にロードするとともに、Yのjワードの各々に対してステップc)〜e)を繰り返すステップとを具え、
N’をNの整数倍とし、(m−1)の最上位ビットを‘1’に等しくするとともに最下位ビットが‘0’になるように値N’を選択し、
PHを、前記レジスタのPの(p+2)の最上位ビットとして選択することを特徴とする方法。 - 前記第2の数Yも(m+n)ビットの長さを有することを特徴とする請求項1記載の方法。
- m≧p+3を選択するステップを更に有することを特徴とする請求項1又は2記載の方法。
- (m+n)をpビットの倍数として選択するステップを更に有することを特徴とする請求項1から3のうちのいずれか1項に記載の方法。
- 前記乗算ステップを実行するとともに前記値PH(N’/2)を取得するために(p+2)*p乗算器を用いるステップを更に有することを特徴とする請求項1から4のうちのいずれか1項に記載の方法。
- 前記乗算器にロードされるYのjワードのうちの最初のものを最上位ワードとし、jワードの連続的なものを、位が減少する順序でロードすることを特徴とする請求項1から5のうちのいずれか1項に記載の方法。
- パイプライン化された処理アーキテクチャで実行され、前記ステップc)〜e)の連続的なサイクルに対する乗算ステップが、以前のサイクルの減算ステップe)の完了前に開始することを特徴とする請求項1から6のうちのいずれか1項に記載の方法。
- Nを法とする第1の値X及び第2の値Yの積Pを計算するプロセッサであって、Yが、各々が長さpビットのjワードに分割され、Xが長さ(m+n)ビットを有し、
a)積レジスタPを初期化する初期化手段と、
b)Yのjワードのうちの最初のものを乗算器にロードするロード手段と、
c)XをYのロードされたワードに乗算して、中間の積Tを形成する乗算器と、
d)前記積レジスタPをT及びP*2pの和によって更新する更新手段と、
e)値PH(N’/2)の減算によって積レジスタPのコンテンツを減少する減少手段と、
f)Yのjワードの連続するものを前記乗算器にロードするとともに、Yのjワードの各々に対してステップc)〜e)を繰り返す制御手段とを具え、
N’をNの整数倍とし、(m−1)の最上位ビットを‘1’に等しくするとともに最下位ビットが‘0’になるように値N’を選択し、
PHを、前記レジスタのPの(p+2)の最上位ビットとして選択することを特徴とするプロセッサ。 - 前記第2の数Yも(m+n)ビットの長さを有することを特徴とする請求項8記載のプロセッサ。
- m≧p+3とすることを特徴とする請求項8又は9記載のプロセッサ。
- (m+n)をpビットの整数倍としたことを特徴とする請求項8から10のうちのいずれか1項に記載のプロセッサ。
- 前記乗算器が、PH(N’/2)の値を前記減少手段に供給するようにも適合した(p+2)*p乗算器としたことを特徴とする請求項8から11のうちのいずれか1項に記載のプロセッサ。
- 前記ロード手段が、前記乗算器にロードされるYのjワードのうちの最初のものとして最上位ワードをロードするように適合され、jワードの連続的なものが、位が減少する順序でロードされることを特徴とする請求項8から12のうちのいずれか1項に記載のプロセッサ。
- パイプライン化された処理アーキテクチャで実現され、前記乗算器が、前記減算手段が先のサイクルに対するPのコンテンツの減少を完了する前に、連続的なサイクルに対するTの新たな値を取得するために乗算動作を開始することを特徴とする請求項8から13のうちのいずれか1項に記載のプロセッサ。
- コンピュータプログラムプロダクトであって、前記プログラムがコンピュータにロードされる際に、請求項1から7のうちのいずれか1項の手順をコンピュータに実行させるよう適合したコンピュータプログラムコード手段を有するコンピュータ読み出し可能媒体を具えることを特徴とするコンピュータプログラムプロダクト。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0221837.8A GB0221837D0 (en) | 2002-09-20 | 2002-09-20 | Improved quisquater reduction |
PCT/IB2003/003949 WO2004027597A2 (en) | 2002-09-20 | 2003-09-10 | Quisquater reduction |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006500615A true JP2006500615A (ja) | 2006-01-05 |
Family
ID=9944435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004537408A Pending JP2006500615A (ja) | 2002-09-20 | 2003-09-10 | 向上したQuisquaterReduction |
Country Status (7)
Country | Link |
---|---|
US (1) | US20060235922A1 (ja) |
EP (1) | EP1543409A2 (ja) |
JP (1) | JP2006500615A (ja) |
CN (1) | CN1682179A (ja) |
AU (1) | AU2003259485A1 (ja) |
GB (1) | GB0221837D0 (ja) |
WO (1) | WO2004027597A2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0568032A (ja) * | 1991-09-05 | 1993-03-19 | Canon Inc | 演算装置及びこれを用いた暗号化通信方法 |
US6366673B1 (en) * | 1997-09-16 | 2002-04-02 | U.S. Philips Corporation | Method and device for executing a decrypting mechanism through calculating a standardized modular exponentiation for thwarting timing attacks |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0720778A (ja) * | 1993-07-02 | 1995-01-24 | Fujitsu Ltd | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
US6282290B1 (en) * | 1997-03-28 | 2001-08-28 | Mykotronx, Inc. | High speed modular exponentiator |
DE10142155C1 (de) * | 2001-08-29 | 2002-05-23 | Infineon Technologies Ag | Verfahren und Vorrichtung zum modularen Multiplizieren |
-
2002
- 2002-09-20 GB GBGB0221837.8A patent/GB0221837D0/en not_active Ceased
-
2003
- 2003-09-10 JP JP2004537408A patent/JP2006500615A/ja active Pending
- 2003-09-10 EP EP03797451A patent/EP1543409A2/en not_active Ceased
- 2003-09-10 AU AU2003259485A patent/AU2003259485A1/en not_active Abandoned
- 2003-09-10 CN CNA038223430A patent/CN1682179A/zh active Pending
- 2003-09-10 US US10/528,349 patent/US20060235922A1/en not_active Abandoned
- 2003-09-10 WO PCT/IB2003/003949 patent/WO2004027597A2/en not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0568032A (ja) * | 1991-09-05 | 1993-03-19 | Canon Inc | 演算装置及びこれを用いた暗号化通信方法 |
US6366673B1 (en) * | 1997-09-16 | 2002-04-02 | U.S. Philips Corporation | Method and device for executing a decrypting mechanism through calculating a standardized modular exponentiation for thwarting timing attacks |
Also Published As
Publication number | Publication date |
---|---|
AU2003259485A1 (en) | 2004-04-08 |
GB0221837D0 (en) | 2002-10-30 |
AU2003259485A8 (en) | 2004-04-08 |
CN1682179A (zh) | 2005-10-12 |
WO2004027597A2 (en) | 2004-04-01 |
EP1543409A2 (en) | 2005-06-22 |
WO2004027597A3 (en) | 2004-11-11 |
US20060235922A1 (en) | 2006-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7508936B2 (en) | Hardware accelerator for elliptic curve cryptography | |
US5764554A (en) | Method for the implementation of modular reduction according to the Montgomery method | |
JP4875700B2 (ja) | ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア | |
US5745398A (en) | Method for the implementation of modular multiplication according to the Montgomery method | |
CN109791517B (zh) | 保护并行乘法运算免受外部监测攻击 | |
US20110213819A1 (en) | Modular multiplication method with precomputation using one known operand | |
JP2004534266A (ja) | ハードウェアにおいて算術演算を効率的に行う方法および装置 | |
US20060126830A1 (en) | Montgomery transform device, arithmetic device, IC card, encryption device, decryption device and program | |
TWI403144B (zh) | 隨機化模數減化方法及其硬體 | |
JP4302640B2 (ja) | 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体 | |
US8732227B2 (en) | Method and processor unit for implementing a characteristic-2-multiplication | |
US7558817B2 (en) | Apparatus and method for calculating a result of a modular multiplication | |
CN113141255A (zh) | 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法 | |
JP5175983B2 (ja) | 演算装置 | |
US7016927B2 (en) | Method and apparatus for modular multiplication | |
US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
Gopal et al. | Fast and constant-time implementation of modular exponentiation | |
Anagreh et al. | Accelerate Performance for Elliptic Curve Scalar Multiplication based on NAF by Parallel Computing. | |
JP2006500615A (ja) | 向上したQuisquaterReduction | |
CN113032797A (zh) | 在处理设备中执行加密操作的方法 | |
JP4223819B2 (ja) | べき乗剰余演算装置及びそのプログラム | |
WO2003096182A1 (en) | “emod” a fast modulus calculation for computer systems | |
JPH11282351A (ja) | セキュリティ技術における逆元演算方法、その方法を使った演算装置、及びその方法を実行するプログラムを記録した記録媒体 | |
JP2009003479A (ja) | べき乗剰余演算方法 | |
JP2004151234A (ja) | べき乗演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060907 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100209 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100706 |