JPWO2007080652A1 - モンゴメリ法用乗算剰余計算装置 - Google Patents
モンゴメリ法用乗算剰余計算装置 Download PDFInfo
- Publication number
- JPWO2007080652A1 JPWO2007080652A1 JP2007553818A JP2007553818A JPWO2007080652A1 JP WO2007080652 A1 JPWO2007080652 A1 JP WO2007080652A1 JP 2007553818 A JP2007553818 A JP 2007553818A JP 2007553818 A JP2007553818 A JP 2007553818A JP WO2007080652 A1 JPWO2007080652 A1 JP WO2007080652A1
- Authority
- JP
- Japan
- Prior art keywords
- digit
- value
- product
- output
- sum
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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/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)
Abstract
Description
この意味で、コンピュータネットワークにおいては暗号化が必須の技術であるといえる。このような暗号技術の中の一つにディジタル署名即ち認証に適した公開鍵暗号方式がある。公開鍵暗号方式は、暗号化/復号に大量の演算処理が必要なために高速化が望まれており、様々な高速化アルゴリズムが発表されている。
また、初めて通信する相手に対しては、公開鍵の配送を行えば良く、鍵管理センタを設置して、ユーザの公開鍵をn個公開簿に登録し、センタから送信相手の公開鍵を得る方法が用いられる。
このRSA暗号の基本原理は次のようなものである。
(RSAの基本アルゴリズム)
暗号鍵(e,N)と対応する復号鍵(d,N)とにおいて、eとNとは公開鍵であり、dは秘密鍵である。
C=E(M)=Me mod N
M=D(C)=Cd mod N
但し、d・e=1mod LCM{(p−1),(q−1)}
N=p・q
LCM:最小公倍数(lowest common multiple)
p,qは大きな素数
通常、e,d,M,Nなどは1024ビット程度の大きな整数が用いられているので、高速指数計算法を使用しても1回のRSA演算で平均1500回程度の多重精度乗算と剰余算とを行わなければならない。
このような、RSA暗号に代表される公開鍵暗号系の多くで利用される、べき乗剰余アルゴリズムを高速に処理するためには、1回あたりの剰余アルゴリズムの高速化が要求される。
(モンゴメリのアルゴリズム)
モンゴメリのアルゴリズムは、剰余の法N(N>1)と、剰余の法Nと互いに素である基数R(R>N)とを用いると、被剰余数TからTR-1mod Nの計算が基数Rによる除算のみで行えることを利用して、Nによる除算を用いることなく剰余計算を行うアルゴリズムである。
次に、アルゴリズム1として、T→TR-1mod NのアルゴリズムREDC(T)を示す。
(アルゴリズム1)
T→TR-1mod NのアルゴリズムY=REDC(T)は次のようにあらわされる。
M=(Tmod R)・N′mod R
Y=(T+M・N)/R
if Y≧N then Y=Y−N
if Y<N then return Y
1回のREDCでは、剰余Tmod NではなくTR-1mod Nが求められるだけである。
よって、剰余Tmod Nを求めるためには、次に示すようにREDC(T)と、予め求めておいたR2mod Nとの積で、再びREDCを行えば良い。
REDC(REDC(T)・(R2 mod N))
=(TR-1mod N)・(R2 mod N)・R-1mod N
=TR-1・R2 ・R-1mod N
=Tmod N
このようにして、剰余Tmod Nを求めることができる。
(REDCの多重精度計算への拡張)
次に、剰余の法Nまたは基数Rが多倍長即ち多重精度である場合について、REDCのアルゴリズムを拡張する。
(アルゴリズム2)
REDCを多重精度へ拡張したアルゴリズムは次に示すようになる。被剰余数T,パラメータN′,出力用変数Yが何れもr進数で、
T=(tg-1,tg-2,…,t0 )r ,
N=(ng-1 ,ng-2,…,n0 )r ,
Y=(yg ,yg-1 ,…,y0 )r,
n’0,
r=2k,
R=rg
とあらわされる場合、次に示すj=0〜g−1の繰り返し処理によりTR-1modNを多重精度×単精度として、以下のアルゴリズムによって求めることができる。なお、ここで、( )rは、r進数で表された数であることを示す。また、ここで単精度とはr進数1桁のこととし、同じ文字を使用した場合、基本的に大文字を多重精度、小文字を単精度、小文字の添字を多重精度での桁の位置とする。
Y=T
for j=0 to g−1
m=y0 ・n’0 mod r
Y=Y+m・N
Y=Y/r
next
if Y≧N then Y=Y−N
if Y<N then return Y
このようにして得られるTR-1mod Nと、上述したように予め求めておいたR2 mod Nとの積で再びREDCを行うことにより、Tmod Nを求めることができる。
(REDCの多重精度乗算剰余への拡張)
次に、REDCのアルゴリズムを乗算剰余演算に拡張する。
その場合、整数A,Bの乗算も多重精度整数演算であるため、多重精度拡張REDCと同様の繰り返し計算が行われる。
そこで、乗算とREDCとを同一の繰り返しループで行えるように拡張したアルゴリズム3を示す。
(アルゴリズム3)
REDCを多重精度乗算剰余へ拡張したアルゴリズムREDC(A×B)は次に示すようになる。
A=(ag-1 ,ag-2,…,a0 )r ,
B=(bg-1 ,bg-2,…,b0 )r ,
N=(ng-1 ,ng-2,…,n0 )r ,
Y=(yg ,yg-1,…,y0 )r ,
n’0,
r=2k,
R=rg
とあらわされる場合、次に示すj=0〜g−1の繰り返し処理により、ABR-1mod Nを多重精度×単精度の計算として求めることができる。
Y=0
for j=0 to g−1
Y=Y+A・bj
m=y0 ・n’0 mod r
Y=Y+m・N
Y=Y/r
next
if Y≧N then Y=Y−N
if Y<N then return Y
上記のアルゴリズム3においては、A、Nが多重精度で、bj、n’0が単精度であり、Aとbjの乗算を行っているので、多重精度×単精度の計算として演算が行われている。
(REDCの単精度×単精度処理への拡張)
アルゴリズム3では、多重精度のモンゴメリ乗算剰余を多重精度×単精度で実現可能としているが、この多重精度×単精度の計算部分をさらに単精度×単精度の計算を組み合わせて行えるよう拡張する。
2つの乗算を同一の繰り返しループで行えるように拡張したアルゴリズム4を示す。
(アルゴリズム4)
REDCを単精度×単精度へ拡張したアルゴリズムREDC(A×B)は次に示すようになる。
A=(ag-1 ,ag-2,…,a0 )r ,
B=(bg-1 ,bg-2,…,b0 )r ,
N=(ng-1 ,ng-2,…,n0 )r ,
Y=(yg ,yg-1,…,y0 )r ,
C=(c1 ,c0)r ,
n’0,
r=2k,
R=rg
とあらわされ、r進1桁の一時変数をtmp1,tmp2,tmp3,tmp4とする場合、次に示すi,jの繰り返し処理によりABR-1mod Nを単精度×単精度の計算で求めることができる。
for j=0 to g−1 ……………………………
(tmp2,tmp1)r =y0 +a0・bj
m=tmp1・n’0 mod r
(tmp4,tmp1)r =tmp1+m・n0 コア前処理
(c1 ,c0)r =tmp2+tmp4
for i=0 to g−1 ……………………………
(tmp3,tmp2,tmp1)r =yi+(c1 ,c0 )r +ai ・bj
(tmp4,yi-1 )r =tmp1+m・ni コア処理
(c1 ,c0 )r =tmp4+(tmp3,tmp2)r
next i ……………………………
(c1 ,c0)r =(c1 ,c0 )r +yg
yg-1 =c0 コア後処理
yg =c1
next j ……………………………
if Y≧N then Y=Y−N 補正処理
if Y<N then return Y
ここで、( )r は、括弧内のr進数1桁の変数を多重精度として扱うことを示している。tmp1〜tmp4、c0、c1は、r進数で表された多重精度の数を複数のビットに列に分割し、それぞれを単精度の値として表したものである。たとえば、tmp1は、単精度の積和計算y0+a0・bjの計算結果の下半分のビットで表される単精度の値であり、tmp2は、当該積和計算の計算結果の上半分のビットで表される単精度の値である。また、tmp3,c1 はr進数1桁で表現しているが、内容は1ビットの値である。
また、便宜上、外側のループをjループ、内側のループをiループと呼び、jループの始めからiループまでをコア前処理、iループ内の処理をコア処理、iループの終わりからjループの終わりまでをコア後処理と呼ぶこととする。
なお、以下のすべての説明において、kビットのkとは、単精度の値が表されるビット数であり、32ビットプロセッサの場合であれば、kは32となる。
α積和回路10は、Aレジスタ12及びBレジスタ13からの出力を乗算するkビット乗算器20と、kビット乗算器20の出力及び選択回路19(Yレジスタ15)の出力を加算する2kビット加算器21 と、2kビット加算器21の出力及びCレジスタ18の出力を加算する2k+1ビット加算器22とを有する。
α積和回路10内にて、Aレジスタ12の出力ai(kビット)とBレジスタ13の出力bj(kビット)とを乗算し、その乗算結果(2kビット;30)に、選択回路19(Yレジスタ15)の出力(kビット;31)とCレジスタ18の出力(k+1ビット;32)とを加算する。
(アルゴリズム5)
乗算する2数A,B,パラメータN,モンゴメリ乗算のパラメータn’0,出力用変数Yが何れもr進数で、
A=(ag-1 ,ag-2,…,a0 )r ,
B=(bg-1 ,bg-2,…,b0 )r ,
N=(ng-1 ,ng-2,…,n0 )r ,
Y=(yg ,yg-1,…,y0 )r ,
n’0,
r=2k,
R=rg
とあらわされ、r進数1桁の一時変数をtmp1,tmp2,tmp4,キャリー変数をc1,c2とする場合、次に示すi,jの繰り返し処理によりABR-1mod Nを単精度×単精度の計算として求めることができる。
for j=0 to g−1 ……………………………
(tmp2,tmp1)r =y0 +a0・bj
m=tmp1・n’0 mod r
(tmp4,tmp1)r =tmp1+m・n0 コア前処理
(c2 ,c1)r =tmp2+tmp4
for i=1 to g−1 ……………………………
(tmp2,tmp1)r =yi +c1+ai ・bj
(tmp4,yi-1 )r =tmp1+m・ni コア処理
(c2 ,c1)r =tmp4+tmp2+c2
next i ……………………………
(c2 ,c1)r =(c2 ,c1 )r +yg
yg-1 =c1 コア後処理
yg =c2
next j ……………………………
if Y≧N then Y=Y−N 補正処理
if Y<N then return Y
ここで、( )r は、括弧内のr進数1桁の変数を多重精度として扱うことを示している。またキャリー変数c2 はr進数1桁で表現しているが、内容は1ビットの値である。
図4に示す乗算剰余計算装置は、内部で乗算及び加算を行う第1積和回路10a及び第2積和回路11aと、乗算する一方の数A:(ag-1 ,ag-2 ,…,a0 )を保持する第1レジスタとしてのAレジスタ12と、乗算する一方の数B:(bg-1,bg-2 ,…,b0 )を保持する第2レジスタとしてのBレジスタ13と、第2積和回路11aの前回の下位kビット出力を保持し、次回の下位kビット出力を格納する第3レジスタとしてのYレジスタ15と、キャリー変数c1を保持する第4レジスタとしてのc1レジスタ18aと、剰余の法N:(ng-1 ,ng-2 ,…,n0)を保持する第5レジスタとしてのNレジスタ14と、モンゴメリアルゴリズムにおけるパラータmを保持する第6レジスタとしてのmレジスタ16と、キャリー変数c2を保持する第7レジスタとしてのc2レジスタ18bと、第1積和回路10aの上位kビット出力,第2積和回路11aの上位kビット出力及びc2レジスタ18bの出力を加算するキャリー計算部としての加算回路17aと、jの値と0とを比較してその出力を選択する選択回路19とを有する。
第1積和回路10aは、kビット乗算器20と2kビット加算器21と2kビット加算器22aとを有する。kビット乗算器20は、Aレジスタ12及びBレジスタ13からの出力を乗算し、2kビット加算器21は、kビット乗算器20の出力と選択回路19(Yレジスタ15)の出力とを加算し、2kビット加算器22aは、2kビット加算器21の出力とc1レジスタ18aの出力とを加算する。
第1積和回路10a内にて、Aレジスタ12の出力ai(kビット)とBレジスタ13の出力bj(kビット)とを乗算し、その乗算結果(2kビット;30)に、選択回路19(Yレジスタ15)の出力(kビット;31)とc1レジスタ18aの出力(kビット;32a)とを加算する。なお、選択回路19は、jの値と0とを比較し、jの値が0である場合には第1積和回路10aへ0を出力し、jの値が0でない場合にはYレジスタ15の格納値yiを第1積和回路10aへ出力する。第1積和回路10aは、その演算結果(2kビット;33)の上位kビット(34)を加算回路17aへ出力し、その下位kビット(35)を第2積和回路11aへ出力する。
(アルゴリズム6)
乗算する2数A,B,パラメータN,モンゴメリ乗算のパラメータn’0,出力用変数Yが何れもr進数で、
A=(ag-1 ,ag-2,…,a0 )r ,
B=(bg-1 ,bg-2,…,b0 )r ,
N=(ng-1 ,ng-2,…,n0 )r ,
Y=(yg ,yg-1,…,y0 )r ,
n’0,
r=2k,
R=rg
とあらわされ、r進1桁の一時変数をtmp1,キャリー変数をc3,c4 とする場合、次に示すi,jの繰り返し処理によりABR-1mod Nを単精度×単精度の計算として求めることができる。
for j=0 to g−1 ……………………………
(c3 ,tmp1)r=y0 +a0 ・bj
m=tmp1・n’0 mod r コア前処理
(c4 ,tmp1)r=tmp1+m・n0
for i=1 to g−1 ……………………………
(c3 ,tmp1)r=yi +c3 +ai ・bj
(c4 ,yi-1)r =tmp1+m・ni +c4 コア処理
next i ……………………………
(c4 ,c3)r =c3 +c4 +yg
yg-1 =c3 コア後処理
yg =c4
next j ……………………………
if Y≧N then Y=Y−N 補正処理
if Y<N then return Y
図7は、上述したアルゴリズム6のコア処理を実行する乗算剰余計算装置の構成図である。
第3積和回路10b内にて、Aレジスタ12の出力ai (kビット)とBレジスタ13の出力bj(kビット)とを乗算し、その乗算結果(2kビット;30)に、選択回路19(Yレジスタ15)の出力(kビット;31)とc3レジスタ18cの出力(kビット;32c)とを加算する。
このフローチャートにおいて、jループが(アルゴリズム3)のループ処理に当たる。jループの内側では、A×bj 及びm×Nの多重精度×単精度の部分乗算を行っている。iループは、A×bj 及びm×Nの多重精度×単精度の計算を単精度×単精度の部分乗算で行っている部分である。iループの内部ではai ×bjとm×ni との部分乗算を行っている。
以下の例では、N,A,Bのビット長を1024ビット、g=32、処理単位k=32、R=21024、r=232とする。
(コア前処理)
図10は、コア前処理を行う構成の一例を示す図である。
そして、結果の上位32ビットをc3レジスタ18cに格納し、下位32ビットを第4積和回路11bとパラメータmを計算するための乗算回路40とへ出力する。
そして、結果の上位32ビットをc4レジスタ29に格納する。下位32ビットは使用しない。
(コア処理)
図11は、iループ内部処理であるコア処理を行う構成の一例を示す図である。
(コア後処理)
図12は、コア後処理を行う構成の一例を示す図である。
(積和回路の構成)
図13は、上述の構成例で用いた積和回路の構成の一例を示す図である。
積和回路は、1個の32ビット乗算器51と、4個の32ビット加算器52,53,54,55とを有する。
上述した従来の乗算剰余装置に使用した積和回路は、図13に示されるように、4入力2出力の積和回路であった。この積和回路は、2入力の乗算及びその結果と残る2入力との加算を行う。一般的なプロセッサには4入力2出力積和回路が搭載されておらず、図12の2つの積和回路を単純化できないという問題がある。また、通常、Pentium(登録商標)プロセッサにおいては、2入力2出力の乗算器しか搭載されていない。それでも、2入力2出力の乗算器と加算器を使って、上記4入力2出力の積和回路と同等の機能を実現する場合には、あまり性能劣化は問題にはならなかった。ところが、最近のItanium2プロセッサに代表されるプロセッサには、3入力2出力の積和回路が搭載されている。特に、Itanium2プロセッサには、3入力2出力の積和回路が2台搭載されている。しかし、上記従来の4入力2出力の積和演算を使用するアルゴリズムでは、このような3入力2出力の積和回路を搭載したプロセッサの能力を最大限生かすことはできない。
本発明のモンゴメリ法用乗算剰余計算装置は、ある値AとBの乗算をし、法Nによる剰余算を行って、結果Yを計算するモンゴメリ法用乗算剰余計算装置において、Aのある1桁の値と、Bのある1桁の値と、キャリー値との3値を入力とし、Aのある1桁の値とBのある1桁の値の乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力する第1の積和計算手段と、Nのある1桁の値と、ある1桁の値mと、キャリー値との3値を入力とし、Nのある1桁の値とある値mとの乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力する第2の積和計算手段と、第1の積和計算手段の出力の下位桁と、第2の積和計算手段の出力の下位桁と、変数Yのある1桁と、キャリー値とを加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、該下位桁を変数Yのある1桁に格納する加算手段とを備えることを特徴とする。
以下に、3入力2出力の積和回路に適した本発明の実施形態について説明する。
この場合のアルゴリズムを以下に示す。
(アルゴリズム)
乗算する2数A,B,剰余の法N,モンゴメリ乗算のパラメータn’0,出力用変数Yが何れもr進数で、
A=(ag-1 ,ag-2,…,a0 )r ,
B=(bg-1 ,bg-2,…,b0 )r ,
N=(ng-1 ,ng-2,…,n0 )r ,
Y=(yg ,yg-1,…,y0 )r ,
n’0,
r=2k,
R=rg
とあらわされ、r進1桁の一時変数をtmp1,tmp2,キャリー変数をc1 ,c2,c3とする場合、次に示すi,jの繰り返し処理によりABR-1mod Nを単精度×単精度の計算として求めることができる。
for j=0 to g−1 ……………………………
(c1,tmp1)r =a0・bj +y0
m=tmp1・n’0 mod r
(c2,tmp1)r =tmp1+m・n0 コア前処理
c3=0
for i=1 to g−1 ……………………………
(c1,tmp1)r = ai ・bj+c1
(c2,tmp2 )r = m・ni+c2 コア処理
(c3,yi-1 )r = tmp1+tmp2+c3+yi
next i ……………………………
(c2 ,c1 )r =c1 +c2 +c3+yg
yg-1 =c1 コア後処理
yg =c2
next j ……………………………
if Y≧N then Y=Y−N 補正処理
if Y<N then return Y
ここで、( )r は、括弧内のr進数1桁の変数を多重精度として扱うことを示している。またキャリー変数c2 はr進数1桁で表現しているが、内容は1ビットの値である。
図14に示す乗算剰余計算装置は、内部で乗算及び加算を行う積和回路60及び積和回路61と、加算回路62と、乗算する一方の数A:(ag-1 ,ag-2 ,…,a0 )を保持する第1レジスタとしてのAレジスタ63と、乗算する一方の数B:(bg-1,bg-2 ,…,b0 )を保持する第2レジスタとしてのBレジスタ64と、加算回路62の前回の演算結果の下位kビット出力を保持し、次回の演算の下位kビット出力を格納する第3レジスタとしてのYレジスタ65と、モンゴメリアルゴリズムにおけるパラータmを保持する第4レジスタとしてのmレジスタ66と、剰余の法N:(ng-1,ng-2 ,…,n0 )を保持する第5レジスタとしてのNレジスタ67と、キャリー変数c1を保持する第6レジスタとしてのc1レジスタ68と、キャリー変数c2を保持する第7レジスタとしてのc2レジスタ69と、キャリー変数c3を保持する第8レジスタとしてのc3レジスタ70と、jの値と0とを比較してその出力を選択する選択回路71とを有する。
レジスタ41はモンゴメリ計算用のパラメータn’0 を保持する。乗算回路40は積和回路60の出力とレジスタ41の出力とを乗算する。このコア前処理では、コア処理で使用するc1レジスタ68,c2レジスタ69、c3レジスタ70及びmレジスタ66の初期化を行っている。積和回路60は、まず、Aレジスタ63,Bレジスタ64からの入力a0,bj を乗算し、その乗算結果とYレジスタ65からの入力yi とを加算する。
乗算回路40は、積和回路60の出力とレジスタ41の出力n’0 とを乗算し、その乗算結果の下位kビットをmレジスタ66に出力する。積和回路61は、Nレジスタ67からの入力n0とmレジスタ66の値とを乗算し、その乗算結果と積和回路60からの出力とを加算する。そして、結果の上位kビットをc2レジスタ69に格納する。下位kビットは使用しない。
加算回路45は、c1レジスタ68の出力と、c2レジスタ69の出力と、c3レジスタ70の出力と、選択回路19の出力とを加算する。選択回路46は、加算回路45からのキャリー出力を0,1と比較し、0であれば0を、1であれば1を、Yレジスタ65へ出力する。このコア後処理では、コア処理終了後のキャリー変数c1,c2 ,c3の値の処理を行っている。
Claims (16)
- ある値AとBの乗算をし、法Nによる剰余算を行って、結果Yを計算するモンゴメリ法用乗算剰余計算装置において、
Aのある1桁の値と、Bのある1桁の値と、キャリー値との3値を入力とし、Aのある1桁の値とBのある1桁の値の乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力する第1の積和計算手段と、
Nのある1桁の値と、ある1桁の値mと、キャリー値との3値を入力とし、Nのある1桁の値とある値mとの乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力する第2の積和計算手段と、
第1の積和計算手段の出力の下位桁と、第2の積和計算手段の出力の下位桁と、変数Yのある1桁と、キャリー値とを加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、該下位桁を変数Yのある1桁に格納する加算手段と、
を備えることを特徴とするモンゴメリ法用乗算剰余計算装置。 - 前記第1の積和計算手段の演算と、前記第2の積和計算手段の演算とは、並列に行われることを特徴とする請求項1に記載のモンゴメリ法用乗算剰余計算装置。
- 前記モンゴメリ法用乗算剰余計算装置は、公開鍵暗号方式の演算に使用されることを特徴とする請求項1に記載のモンゴメリ法用乗算剰余計算装置。
- 前記演算の入力及び出力の1桁の値は、プロセッサが単精度の数値を表す場合に用いられるビット数からなることを特徴とする請求項1に記載のモンゴメリ法用乗算剰余計算装置。
- 前記加算手段が演算を行っている間に、前記第1の積和計算手段と、前記第2の積和計算手段が次回の演算を行うことを特徴とする請求項1に記載のモンゴメリ法用乗算剰余計算装置。
- Aの最下位の1桁の値と、Bのある1桁の値と、結果を格納する変数Yの1桁とを入力とし、Aの最下位の1桁の値と、Bのある1桁の値とを乗算し、これに変数Yの1桁を加算した結果を、前記第1の積和計算手段へのキャリー値の初期値としての上位桁の値と、下位桁の2値として出力する第3の積和計算手段と、
該第3の積和計算手段の出力の内の下位桁と、モンゴメリ法用のパラメータとを入力し、これらを乗算して出力する乗算手段と、
該第3の積和計算手段の出力の内の下位桁と、該乗算手段の出力と、Nのある1桁の3値を入力として、Nのある1桁の値と該乗算手段の出力とを乗算し、これらに該第3の積和計算手段の出力の内の下位桁を加算し、加算結果の上位桁を前記第2の積和計算手段へのキャリー値の初期値として出力する第4の積和計算手段と、
を更に備えることを特徴とする請求項1に記載のモンゴメリ法用乗算剰余計算装置。 - 前記第1の積和計算手段と、前記第2の積和計算手段と、前記加算手段のそれぞれの出力であるキャリー値と、前記加算手段の演算後の変数Yの最上位桁値を入力し、これらを加算した結果の上位桁を変数Yの最上位桁に、下位桁を変数Yの上位から2番目の桁に格納する第2の加算手段を更に備えることを特徴とする請求項1に記載のモンゴメリ法用乗算剰余計算装置。
- ある値AとBの乗算をし、法Nによる剰余算を行って、結果Yを計算するモンゴメリ法用乗算剰余計算方法において、
(a)Aのある1桁の値と、Bのある1桁の値と、キャリー値との3値を入力とし、Aのある1桁の値とBのある1桁の値の乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、
(b)Nのある1桁の値と、ある1桁の値mと、キャリー値との3値を入力とし、Nのある1桁の値とある値mとの乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、
(c)ステップ(a)の出力の下位桁と、ステップ(b)の出力の下位桁と、変数Yのある1桁と、キャリー値とを加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、該下位桁を変数Yのある1桁に格納する、
ことを特徴とするモンゴメリ法用乗算剰余計算方法。 - ある値AとBの乗算をし、法Nによる剰余算を行って、結果Yを計算するモンゴメリ法用乗算剰余計算方法をコンピュータに実現させるプログラムにおいて、
(a)Aのある1桁の値と、Bのある1桁の値と、キャリー値との3値を入力とし、Aのある1桁の値とBのある1桁の値の乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、
(b)Nのある1桁の値と、ある1桁の値mと、キャリー値との3値を入力とし、Nのある1桁の値とある値mとの乗算を行い、これにキャリー値を加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、
(c)ステップ(a)の出力の下位桁と、ステップ(b)の出力の下位桁と、変数Yのある1桁と、キャリー値とを加算した結果を、自身の新たなキャリー値としての上位桁と、下位桁の2値に分けて出力し、該下位桁を変数Yのある1桁に格納する、
ことを特徴とするモンゴメリ法用乗算剰余計算方法をコンピュータに実行させるプログラム。 - モンゴメリのアルゴリズムを用いて、プロセッサの単精度(kビット)演算による乗算剰余計算を行う装置において、
積和演算を行い、その演算結果を上位kビットと下位kビットとに分けて出力する第1積和回路と、
積和演算を行いその演算結果を上位kビットと下位kビットとに分けて出力する第2積和回路と、
加算演算を行いその演算結果を上位2ビットと下位kビットとに分けて出力する加算回路と、
前記第1積和回路で乗算される2数を保持する第1及び第2レジスタと、
前記加算回路の下位kビット出力を保持し、前記加算回路のその次の回のkビット入力を格納する第3レジスタと、
モンゴメリのアルゴリズムにおけるパラメータの値を保持する第4レジスタと、
剰余の法を保持する第5レジスタと、
前記第1積和回路の上位kビット出力を保持し、同第1積和回路のその次の回の加算される入力となる数を格納する第6レジスタと、
前記第2積和回路の上位kビット出力を保持し、同第2積和回路のその次の回の加算される入力となる数を格納する第7レジスタと、
前記加算回路の上位2ビット出力を保持し、同加算回路のその次の回の入力となる数を格納する第8レジスタとを備え、
前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第6レジスタに保持された値を加算する演算を行い、前記第2積和回路は、前記第4レジスタに保持された値と前記第5レジスタに保持された数の所定ビットの値とを乗算し、その乗算結果に前記第7レジスタに保持された値を加算する演算を行い、前記加算回路は、前記第1積和回路の下位kビット出力と前記第2積和回路の下位kビット出力と前記第3レジスタに保持された所定ビットの値と前期第8レジスタに保持された値を加算する演算を行うように構成したことを特徴とするモンゴメリ法による乗算剰余計算装置。 - 前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第6レジスタに保持された値を加算するように構成した請求項10に記載のモンゴメリ法による乗算剰余計算装置。
- 前記第2積和回路は、前記第4レジスタに保持された値と第5レジスタに保持された所定ビットの値を乗算し、その乗算結果に前記第7レジスタに保持された値を加算するように構成した請求項10に記載のモンゴメリ法による乗算剰余計算装置。
- 前記加算回路による演算中に、前記第1及び第2積和回路によりその次の回の演算を行うように構成した請求項10〜12の何れか一つに記載のモンゴメリ法による乗算剰余計算装置。
- 前記加算回路が演算を行う間、前記第1積和回路及び前記第2積和回路で次の回の演算を行うように、パイプライン処理すべく構成したことを特徴とする請求項10に記載のモンゴンメリ法による乗算剰余計算装置。
- 前記第1積和回路及び第2積和回路にあって、各自身の上位出力を各自身の次の回のキャリア入力とするようにした請求項10に記載のモンゴンメリ法による乗算剰余計算装置。
- 前記第1積和回路及び第2積和回路は、2つのkビットの数を乗算する手段と、その乗算結果に1つのkビットの数を加算する手段とを有する請求項10に記載のモンゴンメリ法による乗算剰余計算装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/300396 WO2007080652A1 (ja) | 2006-01-13 | 2006-01-13 | モンゴメリ法用乗算剰余計算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2007080652A1 true JPWO2007080652A1 (ja) | 2009-06-11 |
JP4783382B2 JP4783382B2 (ja) | 2011-09-28 |
Family
ID=38256068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007553818A Expired - Fee Related JP4783382B2 (ja) | 2006-01-13 | 2006-01-13 | モンゴメリ法用乗算剰余計算装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8352529B2 (ja) |
EP (1) | EP1975906B1 (ja) |
JP (1) | JP4783382B2 (ja) |
WO (1) | WO2007080652A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765458B1 (en) * | 2005-09-29 | 2010-07-27 | Marvell International Ltd. | Error pattern generation for trellis-based detection and/or decoding |
US8321771B1 (en) | 2008-10-13 | 2012-11-27 | Marvell International Ltd. | Modified trace-back using soft output viterbi algorithm (SOVA) |
US8438208B2 (en) * | 2009-06-19 | 2013-05-07 | Oracle America, Inc. | Processor and method for implementing instruction support for multiplication of large operands |
EP2385461A1 (en) * | 2010-04-30 | 2011-11-09 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
US8626811B2 (en) | 2010-04-30 | 2014-01-07 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
US8555038B2 (en) | 2010-05-28 | 2013-10-08 | Oracle International Corporation | Processor and method providing instruction support for instructions that utilize multiple register windows |
US9513870B2 (en) * | 2014-04-22 | 2016-12-06 | Dialog Semiconductor (Uk) Limited | Modulo9 and modulo7 operation on unsigned binary numbers |
JP6863907B2 (ja) * | 2018-01-05 | 2021-04-21 | 日本電信電話株式会社 | 演算回路 |
JP7114321B2 (ja) * | 2018-04-26 | 2022-08-08 | キヤノン株式会社 | データ処理装置及びその方法 |
JP7286239B2 (ja) * | 2019-02-28 | 2023-06-05 | ルネサスエレクトロニクス株式会社 | 演算処理方法、演算処理装置、及び半導体装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3302043B2 (ja) | 1992-05-18 | 2002-07-15 | キヤノン株式会社 | 暗号通信方法及びそのシステム |
JPH08265313A (ja) * | 1995-03-27 | 1996-10-11 | Toshiba Corp | データスクランブル装置 |
ES2293677T3 (es) | 1997-05-04 | 2008-03-16 | Sandisk Il Ltd | Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery. |
US6026421A (en) * | 1997-11-26 | 2000-02-15 | Atmel Corporation | Apparatus for multiprecision integer arithmetic |
JP3616897B2 (ja) | 1998-01-27 | 2005-02-02 | 富士通株式会社 | モンゴメリ法による乗算剰余計算装置 |
US7509486B1 (en) * | 1999-07-08 | 2009-03-24 | Broadcom Corporation | Encryption processor for performing accelerated computations to establish secure network sessions connections |
US6662201B1 (en) * | 1999-11-01 | 2003-12-09 | Kabushiki Kaisha Toshiba | Modular arithmetic apparatus and method having high-speed base conversion function |
JP3554525B2 (ja) * | 2000-05-10 | 2004-08-18 | 株式会社東芝 | モンゴメリ乗算装置及び方法 |
JP3540280B2 (ja) * | 2001-01-19 | 2004-07-07 | 株式会社東芝 | べき乗剰余演算方法、および、剰余演算方法 |
JP3904421B2 (ja) * | 2001-10-04 | 2007-04-11 | 株式会社ルネサステクノロジ | 剰余乗算演算装置 |
US7266577B2 (en) * | 2002-05-20 | 2007-09-04 | Kabushiki Kaisha Toshiba | Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus |
JP2004258141A (ja) * | 2003-02-24 | 2004-09-16 | Fujitsu Ltd | モンゴメリ乗算剰余の多倍長演算のための演算装置 |
JP4408712B2 (ja) | 2004-01-26 | 2010-02-03 | 富士通マイクロエレクトロニクス株式会社 | 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路 |
-
2006
- 2006-01-13 EP EP06711681A patent/EP1975906B1/en not_active Expired - Fee Related
- 2006-01-13 JP JP2007553818A patent/JP4783382B2/ja not_active Expired - Fee Related
- 2006-01-13 WO PCT/JP2006/300396 patent/WO2007080652A1/ja active Application Filing
-
2008
- 2008-07-11 US US12/218,060 patent/US8352529B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20100023571A1 (en) | 2010-01-28 |
WO2007080652A1 (ja) | 2007-07-19 |
JP4783382B2 (ja) | 2011-09-28 |
EP1975906A1 (en) | 2008-10-01 |
EP1975906B1 (en) | 2012-07-04 |
EP1975906A4 (en) | 2011-06-15 |
US8352529B2 (en) | 2013-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4783382B2 (ja) | モンゴメリ法用乗算剰余計算装置 | |
US5499299A (en) | Modular arithmetic operation system | |
Gutub et al. | Hybrid crypto hardware utilizing symmetric-key and public-key cryptosystems | |
US20110161390A1 (en) | Modular multiplication processing apparatus | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
US20090136025A1 (en) | Method for scalarly multiplying points on an elliptic curve | |
US20020126838A1 (en) | Modular exponentiation calculation apparatus and modular exponentiation calculation method | |
JP3616897B2 (ja) | モンゴメリ法による乗算剰余計算装置 | |
JP4177526B2 (ja) | 乗算剰余演算方法および乗算剰余回路 | |
JP3302043B2 (ja) | 暗号通信方法及びそのシステム | |
Panjwani | Scalable and parameterized hardware implementation of elliptic curve digital signature algorithm over prime fields | |
JP3797808B2 (ja) | スカラー倍算方法およびその装置 | |
JP3615405B2 (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
JP2000137436A (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
JP3591857B2 (ja) | 擬似乱数生成方法及び装置、通信方法及び装置 | |
Aswathy et al. | Modified RSA public key algorithm | |
JP4502817B2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
KR100406138B1 (ko) | 엔티알유 암/복호화 장치 | |
JP7406108B2 (ja) | 暗号復号システム、暗号復号方法、及び暗号復号用プログラム | |
KR19990064878A (ko) | 고속의 모듈라 멱승 연산기 | |
JP2022117083A (ja) | 演算システム、演算方法およびプログラム | |
JP2002139995A (ja) | 公開鍵生成装置、暗号化装置および復号装置 | |
WO2003030442A2 (en) | Cisponentiation method, software, and device for exponentiation | |
JP3999554B2 (ja) | 乗算剰余演算方法及び演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110412 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110610 |
|
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: 20110705 |
|
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: 20110708 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140715 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4783382 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |