JP2000132376A - 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体 - Google Patents

剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体

Info

Publication number
JP2000132376A
JP2000132376A JP10305911A JP30591198A JP2000132376A JP 2000132376 A JP2000132376 A JP 2000132376A JP 10305911 A JP10305911 A JP 10305911A JP 30591198 A JP30591198 A JP 30591198A JP 2000132376 A JP2000132376 A JP 2000132376A
Authority
JP
Japan
Prior art keywords
remainder
result
significant digit
product
multiplication
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.)
Withdrawn
Application number
JP10305911A
Other languages
English (en)
Inventor
Masahiko Takenaka
正彦 武仲
Naoya Torii
直哉 鳥居
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP10305911A priority Critical patent/JP2000132376A/ja
Priority to US09/412,502 priority patent/US6415310B1/en
Publication of JP2000132376A publication Critical patent/JP2000132376A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/728Methods 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

(57)【要約】 【課題】 モンゴメリ法に基づく剰余演算,乗算剰余演
算を単純化し、計算量を従来に比べて低減できる剰余演
算方法,乗算剰余演算方法を提供する。 【解決手段】 モンゴメリ法に基づく剰余演算方法,乗
算剰余演算方法において、除数NとしてN=c2d ±1
で表される数を用いる。被剰余数Yの下位dビット目の
位置に被剰余数Yの最下位桁の値y0 とcとの積を加算
するステップと、その加算結果の最下位桁を除く部分を
次の被剰余数とするステップとを繰り返す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば公開鍵暗号
系のRSA暗号処理,楕円曲線暗号処理での剰余演算,
乗算剰余演算等に好適であり、特に、モンゴメリのアル
ゴリズム(ModuloMultiplication Without Trial Divis
ion, Peter L. Montgomery, Mathematicsof Computatio
n, Volume 44, Number 170, April 1985 pp. 519〜528
参照)を用いて計算を高速に行う剰余演算方法及び装置
並びに乗算剰余演算方法及び装置並びに記録媒体に関す
る。
【0002】
【従来の技術】近年におけるコンピュータネットワーク
の発達により、データベースを検索する機会、電子メー
ル,電子ニュース等の電子化された情報をネットワーク
を経由して送受する機会が急速に増加してきている。更
に、これらを利用して、オンラインショッピング等のサ
ービスも提供されつつある。しかし、それに伴って、ネ
ットワーク上の電子化されたデータを盗聴する、改竄す
る、他人になりすましてサービスを無償で受ける等の問
題も指摘されている。特に無線を利用したネットワーク
においては、傍受が容易なためにこれらの問題を防止す
る対策が望まれている。
【0003】これらの問題に対して暗号技術を応用した
暗号化電子メール,利用者認証システムが提案され、種
々のネットワークにも導入されつつある。この意味でコ
ンピュータネットワークにおいては暗号化が必須の技術
であるといえる。このような暗号技術の中の一つにディ
ジタル署名即ち認証に適した公開鍵暗号方式があるが、
暗号化/復号に大量の処理が必要なために高速化が望ま
れており、様々な高速化アルゴリズムが発表されてい
る。
【0004】暗号化方式は、大別すると秘密鍵暗号系と
公開鍵暗号系との二つに分類できる。秘密鍵暗号系は、
送信者と受信者とが同じ暗号鍵を持つことにより暗号通
信を行う方式である。即ち、秘密鍵暗号系では、あるメ
ッセージを秘密の暗号鍵に基づいて暗号化して相手に送
り、受け手はこの暗号鍵を用いて暗号文を復号して元の
メッセージに戻して情報を入手する。
【0005】公開鍵暗号系は、送信者が公開されている
受信者の公開鍵でメッセージを暗号化して送信し、受信
者が自分の秘密鍵でその暗号化メッセージを復号するこ
とにより通信を行う方式である。即ち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号は秘密鍵でのみ復号することができる。
【0006】秘密鍵暗号系では、個人が秘密に保管しな
ければならない鍵が通信相手の数だけ必要であり、必要
な総鍵数はn人のネットワークの場合n(n−1)/2
個である。また、初めて通信する相手に対しては、何ら
かの方法で秘密鍵の配送が必要であるという欠点があ
る。この欠点を解消するために、大規模なネットワーク
では鍵管理センタを設置し、センタとの間の秘密鍵のみ
を保管し、暗号通信を行う場合はセンタから送信相手と
の秘密鍵を得る方法が用いられる。この場合、秘密鍵の
総数はn個となる。
【0007】一方、公開鍵暗号系では、個人が秘密に保
管する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数
もn人のネットワークの場合n個である。また、初めて
通信する相手に対しては、公開鍵の配送を行えば良く、
鍵管理センタを設置して、ユーザの公開鍵をn個公開簿
に登録し、センタから送信相手の公開鍵を得る方法が用
いられる。この場合、センタは公開鍵の改竄を防ぐだけ
で、秘密に保管する必要がない。但し、公開鍵方式は秘
密鍵方式に比べて鍵のビット数が大きいため保管に要す
るファイルサイズは大きくなる。
【0008】また、認証の場合、秘密鍵暗号系では、例
えば送信するメッセージを秘密鍵で圧縮変換し、送信文
に付加して送り、受信側では同様に圧縮変換して比較す
る方式がとられている。しかし、送受信が同じ鍵である
ため、受信者は認証データを偽造することができる。こ
れに対して、公開鍵暗号系では、秘密鍵で暗号化するこ
とができるのは本人だけであるという特徴を利用する。
送信者はメッセージを圧縮変換して秘密鍵で暗号化し、
送信文に付加して送り、受信者は送信者の公開鍵で付加
されたデータを復号し、同様に圧縮変換したものと比較
する方式がとられている。この場合、受信者は不正がで
きない。
【0009】このように認証系では公開鍵暗号系の技術
は必要不可欠であるといえる。しかし、公開鍵暗号系に
は、暗号化/復号に大量の処理が必要であるという大き
な欠点があるため、一般には処理が速い秘密鍵暗号系を
メッセージの暗号化に、公開鍵暗号系は認証用にという
ように組み合わせて用いられる場合が多い。
【0010】公開鍵暗号系の中で有力なものとして、R
SA暗号と楕円曲線暗号とがある。特に、楕円曲線暗号
はRSA暗号と同程度の安全性を得るために、小さなビ
ット数で良いので、注目を集めている。楕円曲線暗号に
は、素体上で定義されるものと2の拡大体上で定義され
るものとがあり、何れも楕円曲線上の離散対数問題に基
づいている。楕円曲線暗号の基本演算は楕円曲線状の点
の加算である。以下に、素体上の楕円曲線における点の
加算のアルゴリズムを示す。
【0011】(素体上の楕円曲線における点の加算のア
ルゴリズム) 楕円曲線:y2 =x3 +ax+b(mod N),N:素数 加算する2点:(x1 ,y1 ),(x2 ,y2 ) 加算結果:(x3 ,y3 ) とすると、点の加算は以下のように表される。 x3 =λ2 −x1 −x2 (mod N); y3 =λ(x1 −x3 )−y1 (mod N); λ=(y2 −y1 )/(x2 −x1 )(mod N)
【0012】通常、N,a,b,x1 ,y1 ,x2 ,y
2 などは160 ビット程度の大きさの整数が用いられる。
楕円曲線暗号では、この基本演算を多数繰り返して行う
ことで実現されるので、大量の多重精度乗算と剰余算と
が行われることになる。そのため、剰余演算として、近
似法,剰余テーブル方式,モンゴメリのアルゴリズム
等、種々の高速化手法が提案されている。また、楕円曲
線暗号では、RSA暗号とは異なり、剰余の法Nとして
メルセンヌ素数(2n −1)のような特殊な値を用いて
も安全性に影響がないので、剰余の法Nに特殊な値を用
いることによる高速化手法も提案されている。
【0013】この剰余演算の高速化を実現する一方法で
あるモンゴメリのアルゴリズムについて説明する。 (モンゴメリのアルゴリズム)モンゴメリのアルゴリズ
ムは、剰余の法N(N>1)と、剰余の法Nと互いに素
である基数R(R>N)とを用いると、被剰余数Tから
TR-1mod Nの計算が基数Rによる除算のみで行えるこ
とを利用して、Nによる除算を用いることなく剰余計算
を行うアルゴリズムである。ここで、N,N′,R,R
-1及びTは整数であり、被剰余数Tは0≦T<R・N、
-1は剰余の法Nの上での基数Rの逆数であり、R・R
-1−N・N′=1(0≦R-1<N,0≦N′<R)の関
係を満たす。
【0014】更に、この基数Rに2のベキ乗数を使用し
た場合、基数Rによる除算をシフト操作に置き換えるこ
とができるため、T→TR-1mod Nの計算の高速処理が
可能となる。次に、(アルゴリズム1)として、T→T
-1mod NのアルゴリズムREDC(T)を示す。但
し、(アルゴリズム1)において(T+m・N)/Rは
必ず割り切れることが証明されている。
【0015】(アルゴリズム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 Y<N then return Y
【0016】1回のREDCでは、剰余Tmod Nではな
くTR-1mod Nが求められるだけである。よって、剰余
Tmod Nを求めるためには、次に示すようにREDC
(T)と予め求めておいたR2 mod Nとの積で、再びR
EDCを行えば良い。 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を求めることができる。
【0017】(REDCの多重精度計算への拡張)次
に、剰余の法Nまたは基数Rが多倍長即ち多重精度であ
る場合について、REDCのアルゴリズムを拡張する。
剰余の法N,基数Rが多重精度である場合、REDCの
(Tmod R)・N′及びM・Nの計算は、多重精度×多
重精度の処理となり、汎用の計算機では非常に大きな処
理量と処理時間とが必要となる。そこで、この部分を多
重精度×単精度の処理で行えるように拡張した(アルゴ
リズム2)を示す。
【0018】(アルゴリズム2)REDCを多重精度へ
拡張したアルゴリズムは次に示すようになる。被剰余数
T,パラメータN′,出力用変数Yが何れもr進数で、 T=(t2g-1,t2g-2,…,t0 r ,N′=(n′
g-1 ,n′g-2 ,…,n′0 r ,Y=(yg
g-1 ,…,y0 r ,R=rg ,r=2k と表される場合、次に示すj=0〜g−1の繰り返し処
理によりTR-1mod Nを多重精度×単精度として求める
ことができる。ここで単精度とはr進数1桁のことと
し、同じ文字を使用した場合、基本的に大文字を多重精
度、小文字を単精度、小文字の添字を多重精度での桁の
位置とする。また図21は、この(アルゴリズム2)によ
る剰余演算処理の過程を示す図である。
【0019】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 Y<N then return Y このようにして得られるTR-1mod Nと、上述したよう
に予め求めておいたR 2 mod Nとの積で再びREDCを
行うことにより、剰余Tmod Nを求めることができる。
【0020】(REDCの多重精度乗算剰余への拡張)
次に、REDCのアルゴリズムを乗算剰余演算に拡張す
る。上記のアルゴリズムにおいて、入力Tは0≦T<R
・Nを満たす値であるが、入力Tは整数A,B(0≦
A,B<N)の乗算結果であることが多い。その場合、
整数A,Bの乗算も多重精度整数演算であるため、多重
精度拡張REDCと同様の繰り返し計算が行われる。こ
の場合、乗算とREDCとを別々に繰り返し計算する
と、繰り返し計算制御によるロスが2倍になってしま
う。そこで、乗算とREDCとを同一の繰り返しループ
で行えるように拡張した(アルゴリズム3)を示す。
【0021】(アルゴリズム3)REDCを多重精度乗
算剰余へ拡張したアルゴリズムREDC(A×B)は次
に示すようになる。乗算する2数A,B,パラメータ
N′,出力用変数Yが何れもr進数で、 A=(ag-1 ,ag-2 ,…,a0 r ,B=(bg-1
g-2 ,…,b0 r ,N′=(n′g-1 ,n′g-2
…,n′0 r ,Y=(yg ,yg-1 ,…,y0 r
R=rg ,r=2k と表される場合、次に示すj=0〜g−1の繰り返し処
理により、ABR-1modNを多重精度×単精度の計算と
して求めることができる。また図22は、この(アルゴリ
ズム3)による乗算剰余演算処理の過程を示す図であ
る。
【0022】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 Y<N then return Y このようにして得られるABR-1mod Nと、上述したよ
うに予め求めておいたR 2 mod Nとの積で再びREDC
を行うことにより、剰余A・Bmod Nを求めることがで
きる。
【0023】
【発明が解決しようとする課題】前述したように、楕円
曲線暗号では剰余の法として特殊な形の素数(特殊パラ
メータ)を用いても安全性は損なわれないので、除数に
その特殊パラメータを用いて剰余演算の高速化を図る方
式が、従来、USP 5,271,061 ,USP 5,159,632 ,USP 5,
442,707 等に提案されている。しかし、これらは何れも
モンゴメリ法に基づく剰余演算に特殊パラメータを除数
として用いる方式ではない。
【0024】特殊パラメータを用いたモンゴメリ法の1
方式が、1988年電子情報通信学会総合大会で提案されて
いる(A-7-11:モンゴメリ演算を利用した楕円曲線暗
号)。この方式は以下のようなものである。値Cのモン
ゴメリ剰余を行う場合、除数NにN=ε2L-k −1
(L:Nのビット数,k:処理単位のビット数,ε:k
ビット)とすれば、値Cのモンゴメリ剰余は、((C/2
L-k )+ε(Cmod 2L-k ))のモンゴメリ剰余と等しく
なる。そのため、値Cのモンゴメリ剰余では、多重精度
×多重精度の乗算1回程度であった処理が、特殊パラメ
ータを用いることで多重精度×単精度の乗算2回程度の
処理で行える。
【0025】しかしながら、この方式は、モンゴメリ除
算を行う数の大きさを減少させることによって計算量を
低減しているだけであり、モンゴメリ除算そのものにつ
いては、特殊パラメータを使用することによる計算量の
低減を行っていない。また、使用する特殊パラメータも
ε2L-k −1という制限が大きいものである。
【0026】本発明は斯かる事情に鑑みてなされたもの
であり、c2d −1またはc2d +1と制限が小さい特
殊パラメータを除数として使用することにより、モンゴ
メリ法に基づく剰余演算,乗算剰余演算を単純化し、計
算量を従来に比べて低減できる剰余演算方法及び装置,
乗算剰余演算方法及び装置並びに記録媒体を提供するこ
とを目的とする。
【0027】
【課題を解決するための手段】請求項1に係る剰余演算
方法は、コンピュータを用いて、モンゴメリ法に基づい
て被剰余数Yを除数Nで割った場合の剰余を演算する方
法において、除数NはN=c2d −1で表される数を使
用し、被剰余数Yの下位dビット目の位置に被剰余数Y
の最下位桁の値y0 とcとの積を加算する第1ステップ
と、その加算結果の最下位桁を除く部分を次の被剰余数
とする第2ステップとを繰り返すことを特徴とする。
【0028】請求項2に係る剰余演算方法は、請求項1
において、前記第1ステップは、被剰余数Yの最下位桁
の値y0 とcとの積を上位側にdビットだけシフトさせ
て被剰余数Yに加算する処理を含むことを特徴とする。
【0029】請求項3に係る剰余演算方法は、コンピュ
ータを用いて、モンゴメリ法に基づいて被剰余数Yを除
数Nで割った場合の剰余を演算する方法において、除数
NはN=c2d −1で表される数を使用し、dを1桁の
ビット数kのe倍(d=ke)に設定し、被剰余数Yの
下位(e+1)桁の位置に被剰余数Yの最下位桁の値y
0 とcとの積を加算する第1ステップと、その加算結果
の最下位桁を除く部分を次の被剰余数とする第2ステッ
プとを繰り返すことを特徴とする。
【0030】請求項4に係る剰余演算方法は、コンピュ
ータを用いて、モンゴメリ法に基づいて被剰余数Yを除
数Nで割った場合の剰余を演算する方法において、除数
NはN=c2d +1で表される数を使用し、被剰余数Y
の最下位桁の値y0 の2の補数を乗数mとして被剰余数
Yの最下位桁に乗数mを加算すると共に、被剰余数Yの
下位dビット目の位置に乗数mとcとの積を加算する第
1ステップと、その加算結果の最下位桁を除く部分を次
の被剰余数とする第2ステップとを繰り返すことを特徴
とする。
【0031】請求項5に係る剰余演算方法は、請求項4
において、被剰余数Yの下位dビット目の位置に乗数m
とcとの積を加算する際に、乗数mとcとの積を上位側
にdビットだけシフトさせて被剰余数Yに加算すること
を特徴とする。
【0032】請求項6に係る剰余演算方法は、コンピュ
ータを用いて、モンゴメリ法に基づいて被剰余数Yを除
数Nで割った場合の剰余を演算する方法において、除数
NはN=c2d +1で表される数を使用し、前記dを1
桁のビット数kのe倍(d=ke)に設定し、被剰余数
Yの最下位桁の値y0 の2の補数を乗数mとして被剰余
数Yの最下位桁に乗数mを加算すると共に、被剰余数Y
の下位(e+1)桁の位置に乗数mとcとの積を加算す
る第1ステップと、その加算結果の最下位桁を除く部分
を次の被剰余数とする第2ステップとを繰り返すことを
特徴とする。
【0033】請求項7に係る乗算剰余演算方法は、コン
ピュータを用いて、モンゴメリ法に基づいて、2数A,
Bの積である被剰余数Yを除数Nで割った場合の剰余を
演算する方法において、除数NとしてN=c2d −1と
表される数を使用し、2数A,Bの部分乗算結果と前回
までの部分乗算剰余結果とを加算してその加算結果を新
たに被剰余数Yとする第1ステップと、被剰余数Yの下
位dビット目の位置に被剰余数Yの最下位桁の値y0
cとの積を加算する第2ステップと、その加算結果の最
下位桁を除く部分を次の乗算剰余結果とする第3ステッ
プとを繰り返すことを特徴とする。
【0034】請求項8に係る乗算剰余演算方法は、請求
項7において、前記第2ステップは、被剰余数Yの最下
位桁の値y0 とcとの積を上位側にdビットだけシフト
させて被剰余数Yに加算する処理を含むことを特徴とす
る。
【0035】請求項9に係る乗算剰余演算方法は、コン
ピュータを用いて、モンゴメリ法に基づいて、2数A,
Bの積である被剰余数Yを除数Nで割った場合の剰余を
演算する方法において、除数NとしてN=c2d −1と
表される数を使用し、dを1桁のビット数kのe倍(d
=ke)に設定し、2数A,Bの部分乗算結果と前回ま
での部分乗算剰余結果とを加算してその加算結果を新た
に被剰余数Yとする第1ステップと、被剰余数Yの下位
(e+1)桁の位置に被剰余数Yの最下位桁の値y0
cとの積を加算する第2ステップと、その加算結果の最
下位桁を除く部分を次の乗算剰余結果とする第3ステッ
プとを繰り返すことを特徴とする。
【0036】請求項10に係る乗算剰余演算方法は、コン
ピュータを用いて、モンゴメリ法に基づいて、2数A,
Bの積である被剰余数Yを除数Nで割った場合の剰余を
演算する方法において、除数NとしてN=c2d +1と
表される数を使用し、2数A,Bの部分乗算結果と前回
までの部分乗算剰余結果とを加算してその加算結果を新
たに被剰余数Yとする第1ステップと、被剰余数Yの最
下位桁の値y0 の2の補数を乗数mとして被剰余数Yの
最下位桁に乗数mを加算すると共に、被剰余数Yの下位
dビット目の位置に乗数mとcとの積を加算する第2ス
テップと、その加算結果の最下位桁を除く部分を次の乗
算剰余結果とする第3ステップとを繰り返すことを特徴
とする。
【0037】請求項11に係る乗算剰余演算方法は、請求
項10において、被剰余数Yの下位dビット目の位置に乗
数mとcとの積を加算する際に、乗数mとcとの積を上
位側にdビットだけシフトさせて被剰余数Yに加算する
ことを特徴とする。
【0038】請求項12に係る乗算剰余演算方法は、コン
ピュータを用いて、モンゴメリ法に基づいて、2数A,
Bの積である被剰余数Yを除数Nで割った場合の剰余を
演算する方法において、除数NとしてN=c2d +1と
表される数を使用し、dを1桁のビット数kのe倍(d
=ke)に設定し、2数A,Bの部分乗算結果と前回ま
での部分乗算剰余結果とを加算してそれを新たに被剰余
数Yとする第1ステップと、被剰余数Yの最下位桁の値
0 の2の補数を乗数mとして被剰余数Yの最下位桁に
乗数mを加算すると共に、被剰余数Yの下位(e+1)
桁の位置に乗数mとcとの積を加算する第2ステップ
と、その加算結果の最下位桁を除く部分を次の乗算剰余
結果とする第3ステップとを繰り返すことを特徴とす
る。
【0039】請求項13に係る剰余演算装置は、モンゴメ
リ法に基づいて被剰余数Yを除数N(N=c2d −1)
で割った場合の剰余を演算する装置であって、被剰余数
Yの最下位桁の値y0 とcとの積を求める乗算器と、そ
の乗算結果を被剰余数Yの下位dビット目の位置に加算
する加算器と、その加算結果の最下位桁を除く部分を次
の被剰余数として格納するレジスタとを備えることを特
徴とする。
【0040】請求項14に係る剰余演算装置は、モンゴメ
リ法に基づいて被剰余数Yを除数N(N=c2d +1)
で割った場合の剰余を演算する装置であって、被剰余数
Yの最下位桁の値y0 の2の補数を乗数mとして乗数m
とcとの積を求める乗算器と、その乗算結果を被剰余数
Yの下位dビット目の位置に加算すると共に、被剰余数
Yの最下位桁に乗数mを加算する加算器と、その加算結
果の最下位桁を除く部分を次の被剰余数として格納する
レジスタとを備えることを特徴とする。
【0041】請求項15に係る乗算剰余演算装置は、モン
ゴメリ法に基づいて、2数A,Bの積である被剰余数Y
を除数N(N=c2d −1)で割った場合の剰余を演算
する装置であって、2数A,Bの部分乗算結果と前回ま
での部分乗算剰余結果とを加算してそれを新たに被剰余
数Yとして格納するレジスタと、被剰余数Yの最下位桁
の値y0 とcとの積を求める乗算器と、その乗算結果を
被剰余数Yの下位dビット目の位置に加算する加算器と
を備え、その加算結果の最下位桁を除く部分を次の乗算
剰余結果とするようにしたことを特徴とする。
【0042】請求項16に係る乗算剰余演算装置は、モン
ゴメリ法に基づいて、2数A,Bの積である被剰余数Y
を除数N(N=c2d +1)で割った場合の剰余を演算
する装置であって、2数A,Bの部分乗算結果と前回ま
での部分乗算剰余結果とを加算してそれを新たに被剰余
数Yとして格納するレジスタと、被剰余数Yの最下位桁
の値y0 の2の補数を乗数mとして乗数mとcとの積を
求める乗算器と、その乗算結果を被剰余数Yの下位dビ
ット目の位置に加算すると共に、被剰余数Yの最下位桁
に乗数mを加算する加算器とを備え、その加算結果の最
下位桁を除く部分を次の乗算剰余結果とするようにした
ことを特徴とする。
【0043】請求項17に係る記録媒体は、モンゴメリ法
に基づいて被剰余数Yを除数N(N=c2d −1)で割
った場合の剰余を演算するためのコンピュータで読み取
り可能であるプログラムコード手段を有する記録媒体で
あって、被剰余数Yの下位dビット目の位置に被剰余数
Yの最下位桁の値y0 とcとの積を加算することを前記
コンピュータにさせるプログラムコード手段と、その加
算結果の最下位桁を除く部分を次の被剰余数と設定する
ことを前記コンピュータにさせるプログラムコード手段
とを有することを特徴とする。
【0044】請求項18に係る記録媒体は、モンゴメリ法
に基づいて被剰余数Yを除数N(N=c2d +1)で割
った場合の剰余を演算するためのコンピュータで読み取
り可能であるプログラムコード手段を有する記録媒体で
あって、被剰余数Yの最下位桁の値y0 の2の補数を乗
数mとして被剰余数Yの最下位桁に乗数mを加算すると
共に、被剰余数Yの下位dビット目の位置に乗数mとc
との積を加算することを前記コンピュータにさせるプロ
グラムコード手段と、その加算結果の最下位桁を除く部
分を次の被剰余数と設定することを前記コンピュータに
させるプログラムコード手段とを有することを特徴とす
る。
【0045】請求項19に係る記録媒体は、モンゴメリ法
に基づいて、2数A,Bの積である被剰余数Yを除数N
(N=c2d −1)で割った場合の剰余を演算するため
のコンピュータで読み取り可能であるプログラムコード
手段を有する記録媒体であって、2数A,Bの部分乗算
結果と前回までの部分乗算剰余結果とを加算してそれを
新たに被剰余数Yと設定することを前記コンピュータに
させるプログラムコード手段と、被剰余数Yの下位dビ
ット目の位置に被剰余数Yの最下位桁の値y0とcとの
積を加算することを前記コンピュータにさせるプログラ
ムコード手段と、その加算結果の最下位桁を除く部分を
次の乗算剰余結果と設定することを前記コンピュータに
させるプログラムコード手段とを有することを特徴とす
る。
【0046】請求項20に係る記録媒体は、モンゴメリ法
に基づいて、2数A,Bの積である被剰余数Yを除数N
(N=c2d +1)で割った場合の剰余を演算するため
のコンピュータで読み取り可能であるプログラムコード
手段を有する記録媒体であって、2数A,Bの部分乗算
結果と前回までの部分乗算剰余結果とを加算してそれを
新たに被剰余数Yと設定することを前記コンピュータに
させるプログラムコード手段と、被剰余数Yの最下位桁
の値y0 の2の補数を乗数mとして被剰余数Yの最下位
桁に乗数mを加算すると共に、被剰余数Yの下位dビッ
ト目の位置に乗数mとcとの積を加算することを前記コ
ンピュータにさせるプログラムコード手段と、その加算
結果の最下位桁を除く部分を次の乗算剰余結果と設定す
ることを前記コンピュータにさせるプログラムコード手
段とを有することを特徴とする。
【0047】第1剰余演算(請求項1,2) 前述の(アルゴリズム2)の除数NをN=c2d −1
(d≧kビット,k:処理単位のビット数),c=(c
q-1 ,cq-2 ,…,c0 r ,d≧kとおくと、 m=y0 となり、mの計算及びn′0 の計算が不要
になる。 Y=Y+m・Nの計算を、Y=Y+y0 ・c2d
0 =0で計算できる。 元の方式ではg×1回の乗算が必要であったが、この方
式ではq×1回(g>q)の乗算とdビットシフトとな
る。この方式を(アルゴリズム4)に示す。
【0048】(アルゴリズム4)被剰余数T,パラメー
タN′,出力用変数Yが何れもr進数で、 T=(t2g-1,t2g-2,…,t0 r ,N′=(n′
g-1 ,n′g-2 ,…,n′0 r ,Y=(yg
g-1 ,…,y0 r ,R=rg ,r=2k ,N=c2
d −1,c=(cq-1 ,cq-2 ,…,c0 r ,d≧k と表される場合、次に示すj=0〜g−1の繰り返し処
理によりTR-1mod Nを求めることができる。図1,図
2は、このアルゴリズム4による剰余演算処理の過程を
示す図であり、図2は、図1においてy0 =0の処理を
省略した場合の例である。
【0049】Y=T for j=0 to g−1 Y=Y+y0 c2d0 =0 Y=Y/r next if Y≧N then Y=Y−N Y<N then return Y ここで、y0 =0の処理は、実際にy0 =y0 −y0
処理を行っても良いし、Y=Y/rが整数の商を求める
演算を行うことで省略しても良い。
【0050】第2剰余演算(請求項3) 上述した(アルゴリズム4)におけるdをd=ekと取
るようにすれば、Y=Y+y0 c2d の計算は、r進数
で下位(e+1)桁目(最下位桁を下位1桁とする)か
らy0 cを加算する処理となり、dビットシフトが不要
となる。この場合の剰余演算処理の過程を図3に示す。
【0051】第3剰余演算(請求項4,5) 前述の(アルゴリズム2)の除数NをN=c2d +1
(d≧kビット,k:処理単位のビット数),c=(c
q-1 ,cq-2 ,…,c0 r ,d≧kとおくと、 m=(r−y0 )mod rとなり、mは減算で計算で
き、n′0 の計算が不要になる。 Y=Y+m・Nの計算を、Y=Y+y0 ・c2d
mで計算できる。 第1剰余演算と比較すると、mの計算分とmの加算及び
それによるキャリア計算分とだけ計算量が増加する。し
かし、(アルゴリズム2)と比較すれば、この方式の方
が計算量は少ない。この方式を(アルゴリズム5)に示
す。
【0052】(アルゴリズム5)被剰余数T,パラメー
タN′,出力用変数Yが何れもr進数で、 T=(t2g-1,t2g-2,…,t0 r ,N′=(n′
g-1 ,n′g-2 ,…,n′0 r ,Y=(yg
g-1 ,…,y0 r ,R=rg ,r=2k ,N=c2
d +1,c=(cq-1 ,cq-2 ,…,c0 r ,d≧k と表される場合、次に示すj=0〜g−1の繰り返し処
理によりTR-1mod Nを求めることができる。図4は、
このアルゴリズム5による剰余演算処理の過程を示す図
である。
【0053】Y=T for j=0 to g−1 m=(r−y0 )mod r Y=Y+y0 c2d +m Y=Y/r next if Y≧N then Y=Y−N Y<N then return Y
【0054】第4剰余演算(請求項6) 上述した(アルゴリズム5)におけるdをd=ekと取
るようにすれば、mc2d の加算は、r進数で下位(e
+1)桁目(最下位桁を下位1桁とする)からmcを加
算する処理となり、dビットシフトが不要となる。この
場合の剰余演算処理の過程を図5に示す。
【0055】第1乗算剰余演算(請求項7,8) 第1剰余演算1同様に、前述の(アルゴリズム3)にお
いて除数NをN=c2 d −1(d≧kビット,k:処理
単位のビット数)とおけば、同様の効果が得られる。こ
の方式を(アルゴリズム6)に示す。
【0056】(アルゴリズム6)乗算する2数A,B,
パラメータN′,出力用変数Yが何れもr進数で、 A=(ag-1 ,ag-2 ,…,a0 r ,B=(bg-1
g-2 ,…,b0 r ,N′=(n′g-1 ,n′g-2
…,n′0 r ,Y=(yg ,yg-1 ,…,y0 r
R=rg ,r=2k ,N=c2d −1,c=(cq-1
q-2 ,…,c0 r ,d≧k と表される場合、次に示すj=0〜g−1の繰り返し処
理によりABR-1mod Nを求めることができる。図6,
図7は、この(アルゴリズム6)による乗算剰余演算処
理の過程を示す図であり、図7は、図6においてy0
0の処理を省略した場合の例である。
【0057】Y=0 for j=0 to g−1 Y=Y+A・bj Y=Y+y0 c2d0 =0 Y=Y/r next if Y≧N then Y=Y−N Y<N then return Y ここで、y0 =0の処理は、実際にy0 =y0 −y0
処理を行っても良いし、Y=Y/rが整数の商を求める
演算を行うことで省略しても良い。
【0058】第2乗算剰余演算(請求項9) 第2剰余演算と同様に、上述した(アルゴリズム6)に
おけるdをd=ekと取るようにすれば、Y=Y+y0
c2d の計算は、r進数で下位(e+1)桁目(最下位
桁を下位1桁とする)からy0 cを加算する処理とな
り、dビットシフトが不要となる。この場合の乗算剰余
演算処理の過程を図8に示す。
【0059】第3乗算剰余演算(請求項10,11) 第3剰余演算と同様に、前述の(アルゴリズム3)にお
いて除数NをN=c2 d +1(d≧kビット,k:処理
単位のビット数)とおけば、同様の効果が得られる。こ
の方式を(アルゴリズム7)に示す。
【0060】(アルゴリズム7)乗算する2数A,B,
パラメータN′,出力用変数Yが何れもr進数で、 A=(ag-1 ,ag-2 ,…,a0 r ,B=(bg-1
g-2 ,…,b0 r ,N′=(n′g-1 ,n′g-2
…,n′0 r ,Y=(yg ,yg-1 ,…,y0 r
R=rg ,r=2k ,N=c2d +1,c=(cq-1
q-2 ,…,c0 r ,d≧k と表される場合、次に示すj=0〜g−1の繰り返し処
理によりABR-1mod Nを求めることができる。図9
は、このアルゴリズム7による乗算剰余演算処理の過程
を示す図である。
【0061】Y=0 for j=0 to g−1 Y=Y+A・bj m=(r−y0 )mod r Y=Y+mc2d +m Y=Y/r next if Y≧N then Y=Y−N Y<N then return Y
【0062】第4乗算剰余演算(請求項12) 第4剰余演算と同様に、上述した(アルゴリズム7)に
おけるdをd=ekと取るようにすれば、mc2d の加
算は、r進数で下位(e+1)桁目(最下位桁を下位1
桁とする)からmcを加算する処理となり、dビットシ
フトが不要となる。この場合の乗算剰余演算処理の過程
を図10に示す。
【0063】
【発明の実施の形態】以下、本発明をその実施の形態を
示す図面を参照して具体的に説明する。
【0064】(実施の形態1:剰余演算)図11は、本発
明の剰余演算装置の構成図である。図11に示す剰余演算
装置は、被剰余数となる変数Y=(yg ,yg-1 ,…,
0 r の値を格納するYレジスタ1と、c=
(cq-1 ,cq-2 ,…,c0 r の値を格納するcレジ
スタ2と、変数Yの最下位桁の値y0 とcとの積を求め
る乗算器3と、乗算器3の出力(乗算結果)とYレジス
タ1の出力(上位桁)とを加算する加算器4と、モンゴ
メリ補正を行う補正器5とを有する。
【0065】図12は、この剰余演算装置による剰余演算
処理の過程を示す図、図13は、この剰余演算装置におけ
る動作手順を示すフローチャートである。なお、以下に
示す例は、前述したアルゴリズム4(除数NをN=c2
d −1,d=ek)を用いる第2剰余演算に即したもの
であり、具体例として、g=5,e=4とする。
【0066】変数Yの初期値(剰余演算対象の被被剰余
数)を入力する(ステップS1)。そして、y0 cを乗
算器3にて求め、その乗算値を(y5 ,y4 )と加算器
4にて加算して、その加算結果をYレジスタ1の
(y6 ,y5 ,y4 )に格納する処理(ステップS2)
と、Yレジスタ1内で(y6 ,y5 ,y4 ,y3
2 ,y 1 )を(y5 ,y4 ,y3 ,y2 ,y1
0 )に移す処理(ステップS3)とを、5回繰り返
す。最後にモンゴメリの補正処理を行う(ステップS
4)。以上のような処理により、TR-1mod Nを計算で
きる。そして、このようにして得られるTR-1mod N
と、予め求めておいたR2 mod Nとの積で再びREDC
を行うことにより、剰余Tmod Nを求めることができ
る。
【0067】(実施の形態2:乗算剰余演算)図14は、
本発明の乗算剰余演算装置の構成図である。図14に示す
乗算剰余演算装置は、被剰余数となる変数Y=(yg
g-1 ,…,y0 r の値を格納するYレジスタ11と、
一方の乗数A=(ag-1 ,ag-2 ,…,a0 r の値を
格納するAレジスタ12と、他方の乗数B=(bg-1 ,b
g-2 ,…,b0 r の値を格納するBレジスタ13と、c
=(cq-1 ,cq-2 ,…,c0 r の値を格納するcレ
ジスタ14と、Yレジスタ11またはAレジスタ12の何れか
からの入力を選択して出力する選択回路15と、Bレジス
タ13またはcレジスタ14の何れかからの入力を選択して
出力する選択回路16と、選択回路15の出力及び選択回路
16の出力を乗算する乗算器17と、乗算器17の出力(乗算
結果)とYレジスタ11の出力(上位桁)とを加算する加
算器18と、モンゴメリ補正を行う補正器19とを有する。
【0068】図15は、この乗算剰余演算装置による乗算
剰余演算処理の過程を示す図、図16は、この乗算剰余演
算装置における動作手順を示すフローチャートである。
なお、以下に示す例は、前述したアルゴリズム6(除数
NをN=c2d −1,d=ek)を用いる第2乗算剰余
演算に即したものであり、g=5,γ=4とし、また、
他のパラーメータの数値例として、A:160 ビット,
B:160 ビット,N:160 ビット,c:32ビット,N=
c2128 −1,k=32,d=128 ,r=232,R=2
160 である。
【0069】初期化として、変数Y(Y:192 ビット)
をゼロクリアする(ステップS11)。そして、部分積A
×bi を乗算器17にて求め、その乗算結果を変数Yに加
算する処理(ステップS12)と、y0 cを乗算器17にて
求め、その乗算結果を(y5,y4 )と加算器18にて加
算して、その加算結果をYレジスタ11の(y6 ,y5
4 )に格納する処理(ステップS13)と、Yレジスタ
11内で(y6 ,y5 ,y4 ,y3 ,y2 ,y1 )を(y
5 ,y4 ,y3 ,y2 ,y1 ,y0 )に移す処理(ステ
ップS14)とを、i=0〜4まで5回繰り返す。最後に
モンゴメリの補正処理を行う(ステップS15)。以上の
ような処理により、REDC(A,B,N,R)=AB
-1mod Nを計算できる。そして、このようにして得ら
れるABR-1mod Nと、予め求めておいたR2 mod Nと
の積で再びREDCを行うことにより、剰余A・Bmod
Nを求めることができる。
【0070】図17は、本発明の記録媒体の実施の形態
(第1剰余演算:第4アルゴリズム)の構成を示すブロ
ック図である。図17において、コンピュータ20とオンラ
イン接続する記録媒体21は、コンピュータ20の設置場所
から隔たって設置される例えばWWW(World Wide We
b)のサーバコンピュータを用いてなり、記録媒体21に
は後述するプログラム21a が記録されている。記録媒体
21から読み出されたプログラム21a がコンピュータ20を
制御することにより、所定の演算を実行する。
【0071】コンピュータ20の内部に設けられた記録媒
体22は、内蔵設置される例えばハードディスクドライブ
またはROM(Read Only Memory)などを用いてなり、
記録媒体22には後述するプログラム22a が記録されてい
る。記録媒体22から読み出されたプログラム22a がコン
ピュータ20を制御することにより、所定の演算を実行す
る。
【0072】コンピュータ20に設けられたディスクドラ
イブ20a に装填して使用される記録媒体23は、運搬可能
な例えば光磁気ディスク,CD−ROMまたはフレキシ
ブルディスクなどを用いてなり、記録媒体23には後述す
るプログラム23a が記録されている。記録媒体23から読
み出されたプログラム23a がコンピュータ20を制御する
ことにより、所定の演算を実行する。
【0073】図17に示す記録媒体21,22または23のプロ
グラム21a ,22a または23a は、被剰余数Yの下位dビ
ット目の位置に、被剰余数Yの最下位桁の値y0 とcと
の積を加算するステップと、加算結果の最下位桁を除く
部分を次の被剰余数とするステップとを含んでいる。
【0074】図18は、本発明の記録媒体の実施の形態
(第3剰余演算:第5アルゴリズム)の構成を示すブロ
ック図である。図18に示す記録媒体21,22または23のプ
ログラム21a ,22a または23a は、被剰余数Yの最下位
桁の値y0 の2の補数を乗数mとして被剰余数Yの最下
位桁にmを加算すると共に、被剰余数Yの下位dビット
目の位置に、乗数mとcとの積を加算するステップと、
加算結果の最下位桁を除く部分を次の被剰余数とするス
テップとを含んでいる。
【0075】図19は、本発明の記録媒体の実施の形態
(第1乗算剰余演算:第6アルゴリズム)の構成を示す
ブロック図である。図19に示す記録媒体21,22または23
のプログラム21a ,22a または23a は、2数A,Bの部
分乗算結果A×Bi と、前回までの部分乗算剰余結果Y
とを加算してそれを新たに被剰余数Yとするステップ
と、被剰余数Yの下位dビット目の位置に、被剰余数Y
の最下位桁の値y0 とcとの積を加算するステップと、
加算結果の最下位桁を除く部分を次の乗算剰余結果Yと
するステップとを含んでいる。
【0076】図20は、本発明の記録媒体の実施の形態
(第3乗算剰余演算:第7アルゴリズム)の構成を示す
ブロック図である。図20に示す記録媒体21,22または23
のプログラム21a ,22a または23a は、2数A,Bの部
分乗算結果A×Bi と、前回までの部分乗算剰余結果Y
とを加算してそれを新たに被剰余数Yとするステップ
と、被剰余数Yの最下位桁の値y0 の2の補数を乗数m
として被剰余数Yの最下位桁にmを加算すると共に、被
剰余数Yの下位dビット目の位置に、乗数mとcとの積
を加算するステップと、加算結果の最下位桁を除く部分
を次の乗算剰余結果Yとするステップとを含んでいる。
【0077】ここで本発明と従来例との比較について以
下に述べる。除数Nとして前述したような特殊パラーメ
ータ(N=ε2L-k −1)を用いる従来例では、多重精
度×単精度の乗算2回程度であったが、本発明では、多
重精度×単精度の乗算1回程度となり、計算量を低減で
きることは明らかである。また、Nを160 ビット,cを
32ビット,d=128 ,N=c2128 −1とし、ソフトウ
ェアにて本発明の剰余演算装置を実現し、32ビットプロ
セッサ上で実行した場合、任意の除数パラメータを使用
する従来例と剰余処理時間を比較して、約1/5程度の
時間(計算量)で処理が可能である。
【0078】
【発明の効果】以上のように、本発明の剰余演算方法,
乗算剰余演算方法では、除数NとしてN=c2d ±1と
表される数を用いるようにしたので、モンゴメリ剰余
法,モンゴメリ乗算剰余法おける計算を単純化して計算
量を低減することができる。
【図面の簡単な説明】
【図1】第1剰余演算(アルゴリズム4:請求項1,
2)における剰余演算処理の過程を示す図である。
【図2】第1剰余演算(アルゴリズム4:請求項1,
2)における剰余演算処理の過程を示す図である。
【図3】第2剰余演算(アルゴリズム4:請求項3)に
おける剰余演算処理の過程を示す図である。
【図4】第3剰余演算(アルゴリズム5:請求項4,
5)における剰余演算処理の過程を示す図である。
【図5】第4剰余演算(アルゴリズム5:請求項6)に
おける剰余演算処理の過程を示す図である。
【図6】第1乗算剰余演算(アルゴリズム6:請求項
7,8)における乗算剰余演算処理の過程を示す図であ
る。
【図7】第1乗算剰余演算(アルゴリズム6:請求項
7,8)における乗算剰余演算処理の過程を示す図であ
る。
【図8】第2乗算剰余演算(アルゴリズム6:請求項
9)における乗算剰余演算処理の過程を示す図である。
【図9】第3乗算剰余演算(アルゴリズム7:請求項1
0,11)における乗算剰余演算処理の過程を示す図であ
る。
【図10】第4乗算剰余演算(アルゴリズム7:請求項
12)における乗算剰余演算処理の過程を示す図である。
【図11】本発明の剰余演算装置の構成図である。
【図12】本発明の剰余演算装置による剰余演算処理の
過程を示す図である。
【図13】本発明の剰余演算装置における動作手順を示
すフローチャートである。
【図14】本発明の乗算剰余演算装置の構成図である。
【図15】本発明の乗算剰余演算装置による乗算剰余演
算処理の過程を示す図である。
【図16】本発明の乗算剰余演算装置における動作手順
を示すフローチャートである。
【図17】本発明の記録媒体(第1剰余演算:第4アル
ゴリズム)の構成を示すブロック図である。
【図18】本発明の記録媒体(第3剰余演算:第5アル
ゴリズム)の構成を示すブロック図である。
【図19】本発明の記録媒体(第1乗算剰余演算:第6
アルゴリズム)の構成を示すブロック図である。
【図20】本発明の記録媒体(第3乗算剰余演算:第7
アルゴリズム)の構成を示すブロック図である。
【図21】従来例による剰余演算処理の過程を示す図で
ある。
【図22】従来例による乗算剰余演算処理の過程を示す
図である。
【符号の説明】
1 Yレジスタ 2 cレジスタ 3 乗算器 4 加算器 11 Yレジスタ 12 Aレジスタ 13 Bレジスタ 14 cレジスタ 17 乗算器 18 加算器

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータを用いて、モンゴメリ法に
    基づいて被剰余数Yを除数Nで割った場合の剰余を演算
    する方法において、除数NはN=c2d −1で表される
    数を使用し、被剰余数Yの下位dビット目の位置に被剰
    余数Yの最下位桁の値y0 とcとの積を加算する第1ス
    テップと、その加算結果の最下位桁を除く部分を次の被
    剰余数とする第2ステップとを繰り返すことを特徴とす
    る剰余演算方法。
  2. 【請求項2】 前記第1ステップは、被剰余数Yの最下
    位桁の値y0 とcとの積を上位側にdビットだけシフト
    させて被剰余数Yに加算する処理を含む請求項1記載の
    剰余演算方法。
  3. 【請求項3】 コンピュータを用いて、モンゴメリ法に
    基づいて被剰余数Yを除数Nで割った場合の剰余を演算
    する方法において、除数NはN=c2d −1で表される
    数を使用し、dを1桁のビット数kのe倍(d=ke)
    に設定し、被剰余数Yの下位(e+1)桁の位置に被剰
    余数Yの最下位桁の値y0 とcとの積を加算する第1ス
    テップと、その加算結果の最下位桁を除く部分を次の被
    剰余数とする第2ステップとを繰り返すことを特徴とす
    る剰余演算方法。
  4. 【請求項4】 コンピュータを用いて、モンゴメリ法に
    基づいて被剰余数Yを除数Nで割った場合の剰余を演算
    する方法において、除数NはN=c2d +1で表される
    数を使用し、被剰余数Yの最下位桁の値y0 の2の補数
    を乗数mとして被剰余数Yの最下位桁に乗数mを加算す
    ると共に、被剰余数Yの下位dビット目の位置に乗数m
    とcとの積を加算する第1ステップと、その加算結果の
    最下位桁を除く部分を次の被剰余数とする第2ステップ
    とを繰り返すことを特徴とする剰余演算方法。
  5. 【請求項5】 被剰余数Yの下位dビット目の位置に乗
    数mとcとの積を加算する際に、乗数mとcとの積を上
    位側にdビットだけシフトさせて被剰余数Yに加算する
    請求項4記載の剰余演算方法。
  6. 【請求項6】 コンピュータを用いて、モンゴメリ法に
    基づいて被剰余数Yを除数Nで割った場合の剰余を演算
    する方法において、除数NはN=c2d +1で表される
    数を使用し、前記dを1桁のビット数kのe倍(d=k
    e)に設定し、被剰余数Yの最下位桁の値y0 の2の補
    数を乗数mとして被剰余数Yの最下位桁に乗数mを加算
    すると共に、被剰余数Yの下位(e+1)桁の位置に乗
    数mとcとの積を加算する第1ステップと、その加算結
    果の最下位桁を除く部分を次の被剰余数とする第2ステ
    ップとを繰り返すことを特徴とする剰余演算方法。
  7. 【請求項7】 コンピュータを用いて、モンゴメリ法に
    基づいて、2数A,Bの積である被剰余数Yを除数Nで
    割った場合の剰余を演算する方法において、除数Nとし
    てN=c2d −1と表される数を使用し、2数A,Bの
    部分乗算結果と前回までの部分乗算剰余結果とを加算し
    てその加算結果を新たに被剰余数Yとする第1ステップ
    と、被剰余数Yの下位dビット目の位置に被剰余数Yの
    最下位桁の値y0 とcとの積を加算する第2ステップ
    と、その加算結果の最下位桁を除く部分を次の乗算剰余
    結果とする第3ステップとを繰り返すことを特徴とする
    乗算剰余演算方法。
  8. 【請求項8】 前記第2ステップは、被剰余数Yの最下
    位桁の値y0 とcとの積を上位側にdビットだけシフト
    させて被剰余数Yに加算する処理を含む請求項7記載の
    乗算剰余演算方法。
  9. 【請求項9】 コンピュータを用いて、モンゴメリ法に
    基づいて、2数A,Bの積である被剰余数Yを除数Nで
    割った場合の剰余を演算する方法において、除数Nとし
    てN=c2d −1と表される数を使用し、dを1桁のビ
    ット数kのe倍(d=ke)に設定し、2数A,Bの部
    分乗算結果と前回までの部分乗算剰余結果とを加算して
    その加算結果を新たに被剰余数Yとする第1ステップ
    と、被剰余数Yの下位(e+1)桁の位置に被剰余数Y
    の最下位桁の値y0 とcとの積を加算する第2ステップ
    と、その加算結果の最下位桁を除く部分を次の乗算剰余
    結果とする第3ステップとを繰り返すことを特徴とする
    乗算剰余演算方法。
  10. 【請求項10】 コンピュータを用いて、モンゴメリ法
    に基づいて、2数A,Bの積である被剰余数Yを除数N
    で割った場合の剰余を演算する方法において、除数Nと
    してN=c2d +1と表される数を使用し、2数A,B
    の部分乗算結果と前回までの部分乗算剰余結果とを加算
    してその加算結果を新たに被剰余数Yとする第1ステッ
    プと、被剰余数Yの最下位桁の値y0 の2の補数を乗数
    mとして被剰余数Yの最下位桁に乗数mを加算すると共
    に、被剰余数Yの下位dビット目の位置に乗数mとcと
    の積を加算する第2ステップと、その加算結果の最下位
    桁を除く部分を次の乗算剰余結果とする第3ステップと
    を繰り返すことを特徴とする乗算剰余演算方法。
  11. 【請求項11】 被剰余数Yの下位dビット目の位置に
    乗数mとcとの積を加算する際に、乗数mとcとの積を
    上位側にdビットだけシフトさせて被剰余数Yに加算す
    る請求項10記載の乗算剰余演算方法。
  12. 【請求項12】 コンピュータを用いて、モンゴメリ法
    に基づいて、2数A,Bの積である被剰余数Yを除数N
    で割った場合の剰余を演算する方法において、除数Nと
    してN=c2d +1と表される数を使用し、dを1桁の
    ビット数kのe倍(d=ke)に設定し、2数A,Bの
    部分乗算結果と前回までの部分乗算剰余結果とを加算し
    てそれを新たに被剰余数Yとする第1ステップと、被剰
    余数Yの最下位桁の値y0 の2の補数を乗数mとして被
    剰余数Yの最下位桁に乗数mを加算すると共に、被剰余
    数Yの下位(e+1)桁の位置に乗数mとcとの積を加
    算する第2ステップと、その加算結果の最下位桁を除く
    部分を次の乗算剰余結果とする第3ステップとを繰り返
    すことを特徴とする乗算剰余演算方法。
  13. 【請求項13】 モンゴメリ法に基づいて被剰余数Yを
    除数N(N=c2d−1)で割った場合の剰余を演算す
    る装置であって、被剰余数Yの最下位桁の値y0 とcと
    の積を求める乗算器と、その乗算結果を被剰余数Yの下
    位dビット目の位置に加算する加算器と、その加算結果
    の最下位桁を除く部分を次の被剰余数として格納するレ
    ジスタとを備えることを特徴とする剰余演算装置。
  14. 【請求項14】 モンゴメリ法に基づいて被剰余数Yを
    除数N(N=c2d+1)で割った場合の剰余を演算す
    る装置であって、被剰余数Yの最下位桁の値y0 の2の
    補数を乗数mとして乗数mとcとの積を求める乗算器
    と、その乗算結果を被剰余数Yの下位dビット目の位置
    に加算すると共に、被剰余数Yの最下位桁に乗数mを加
    算する加算器と、その加算結果の最下位桁を除く部分を
    次の被剰余数として格納するレジスタとを備えることを
    特徴とする剰余演算装置。
  15. 【請求項15】 モンゴメリ法に基づいて、2数A,B
    の積である被剰余数Yを除数N(N=c2d −1)で割
    った場合の剰余を演算する装置であって、2数A,Bの
    部分乗算結果と前回までの部分乗算剰余結果とを加算し
    てそれを新たに被剰余数Yとして格納するレジスタと、
    被剰余数Yの最下位桁の値y0 とcとの積を求める乗算
    器と、その乗算結果を被剰余数Yの下位dビット目の位
    置に加算する加算器とを備え、その加算結果の最下位桁
    を除く部分を次の乗算剰余結果とするようにしたことを
    特徴とする乗算剰余演算装置。
  16. 【請求項16】 モンゴメリ法に基づいて、2数A,B
    の積である被剰余数Yを除数N(N=c2d +1)で割
    った場合の剰余を演算する装置であって、2数A,Bの
    部分乗算結果と前回までの部分乗算剰余結果とを加算し
    てそれを新たに被剰余数Yとして格納するレジスタと、
    被剰余数Yの最下位桁の値y0 の2の補数を乗数mとし
    て乗数mとcとの積を求める乗算器と、その乗算結果を
    被剰余数Yの下位dビット目の位置に加算すると共に、
    被剰余数Yの最下位桁に乗数mを加算する加算器とを備
    え、その加算結果の最下位桁を除く部分を次の乗算剰余
    結果とするようにしたことを特徴とする乗算剰余演算装
    置。
  17. 【請求項17】 モンゴメリ法に基づいて被剰余数Yを
    除数N(N=c2d−1)で割った場合の剰余を演算す
    るためのコンピュータで読み取り可能であるプログラム
    コード手段を有する記録媒体であって、被剰余数Yの下
    位dビット目の位置に被剰余数Yの最下位桁の値y0
    cとの積を加算することを前記コンピュータにさせるプ
    ログラムコード手段と、その加算結果の最下位桁を除く
    部分を次の被剰余数と設定することを前記コンピュータ
    にさせるプログラムコード手段とを有することを特徴と
    する記録媒体。
  18. 【請求項18】 モンゴメリ法に基づいて被剰余数Yを
    除数N(N=c2d+1)で割った場合の剰余を演算す
    るためのコンピュータで読み取り可能であるプログラム
    コード手段を有する記録媒体であって、被剰余数Yの最
    下位桁の値y 0 の2の補数を乗数mとして被剰余数Yの
    最下位桁に乗数mを加算すると共に、被剰余数Yの下位
    dビット目の位置に乗数mとcとの積を加算することを
    前記コンピュータにさせるプログラムコード手段と、そ
    の加算結果の最下位桁を除く部分を次の被剰余数と設定
    することを前記コンピュータにさせるプログラムコード
    手段とを有することを特徴とする記録媒体。
  19. 【請求項19】 モンゴメリ法に基づいて、2数A,B
    の積である被剰余数Yを除数N(N=c2d −1)で割
    った場合の剰余を演算するためのコンピュータで読み取
    り可能であるプログラムコード手段を有する記録媒体で
    あって、2数A,Bの部分乗算結果と前回までの部分乗
    算剰余結果とを加算してそれを新たに被剰余数Yと設定
    することを前記コンピュータにさせるプログラムコード
    手段と、被剰余数Yの下位dビット目の位置に被剰余数
    Yの最下位桁の値y0 とcとの積を加算することを前記
    コンピュータにさせるプログラムコード手段と、その加
    算結果の最下位桁を除く部分を次の乗算剰余結果と設定
    することを前記コンピュータにさせるプログラムコード
    手段とを有することを特徴とする記録媒体。
  20. 【請求項20】 モンゴメリ法に基づいて、2数A,B
    の積である被剰余数Yを除数N(N=c2d +1)で割
    った場合の剰余を演算するためのコンピュータで読み取
    り可能であるプログラムコード手段を有する記録媒体で
    あって、2数A,Bの部分乗算結果と前回までの部分乗
    算剰余結果とを加算してそれを新たに被剰余数Yと設定
    することを前記コンピュータにさせるプログラムコード
    手段と、被剰余数Yの最下位桁の値y0 の2の補数を乗
    数mとして被剰余数Yの最下位桁に乗数mを加算すると
    共に、被剰余数Yの下位dビット目の位置に乗数mとc
    との積を加算することを前記コンピュータにさせるプロ
    グラムコード手段と、その加算結果の最下位桁を除く部
    分を次の乗算剰余結果と設定することを前記コンピュー
    タにさせるプログラムコード手段とを有することを特徴
    とする記録媒体。
JP10305911A 1998-10-27 1998-10-27 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体 Withdrawn JP2000132376A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10305911A JP2000132376A (ja) 1998-10-27 1998-10-27 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
US09/412,502 US6415310B1 (en) 1998-10-27 1999-10-05 Remainder calculating method, modular-multiplication method, remainder calculating apparatus, modular-multiplication apparatus and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10305911A JP2000132376A (ja) 1998-10-27 1998-10-27 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体

Publications (1)

Publication Number Publication Date
JP2000132376A true JP2000132376A (ja) 2000-05-12

Family

ID=17950792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10305911A Withdrawn JP2000132376A (ja) 1998-10-27 1998-10-27 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体

Country Status (2)

Country Link
US (1) US6415310B1 (ja)
JP (1) JP2000132376A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005513532A (ja) * 2001-12-14 2005-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ モンゴメリ乗算器のパイプライン型コア
US7206799B2 (en) 2002-04-19 2007-04-17 Oki Electric Industry Co., Ltd. Modular multiplication method and calculating device
JP2010044398A (ja) * 1999-04-07 2010-02-25 Panasonic Corp 多倍長演算装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10021920C1 (de) * 2000-05-05 2001-07-26 Infineon Technologies Ag Datenverarbeitungsverfahren und -Einrichtung zur Modulo-Berechnung eines Rests bei der Division
US20020116429A1 (en) * 2000-12-19 2002-08-22 International Business Machines Corporation System and method for modular multiplication
US6963977B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Circuits and methods for modular exponentiation
TW480436B (en) * 2000-12-21 2002-03-21 Goldkey Technology Corp Modular multiplier and ciphering/deciphering machine using the modular multiplier
US6973470B2 (en) * 2001-06-13 2005-12-06 Corrent Corporation Circuit and method for performing multiple modulo mathematic operations
US7233663B2 (en) * 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
DE10205713C1 (de) * 2002-02-12 2003-08-07 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses aus einer Division
JP3576155B2 (ja) * 2002-11-11 2004-10-13 沖電気工業株式会社 乗算剰余演算器
US7278090B2 (en) * 2004-03-31 2007-10-02 Nxp B.V. Correction parameter determination system
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
WO2010048719A1 (en) * 2008-10-30 2010-05-06 Certicom Corp. Method and apparatus for modulus reduction
DE102011117219A1 (de) * 2011-10-28 2013-05-02 Giesecke & Devrient Gmbh Bestimmen eines Divisionsrests und Ermitteln von Primzahlkandidaten für eine kryptographische Anwendung

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159632A (en) 1991-09-17 1992-10-27 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5271061A (en) 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5442707A (en) 1992-09-28 1995-08-15 Matsushita Electric Industrial Co., Ltd. Method for generating and verifying electronic signatures and privacy communication using elliptic curves
FR2701323A1 (fr) * 1993-02-08 1994-08-12 Trt Telecom Radio Electr Dispositif pour effectuer une division.
JPH0720778A (ja) 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
US5724279A (en) * 1995-08-25 1998-03-03 Microsoft Corporation Computer-implemented method and computer for performing modular reduction
FR2743646B1 (fr) * 1996-01-12 1998-03-06 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere
US5793659A (en) * 1996-10-15 1998-08-11 United Microelectronics Corporation Method of modular reduction and modular reduction circuit
US6175850B1 (en) * 1997-02-03 2001-01-16 Nippon Telegraph And Telephone Corporation Scheme for carrying out modular calculations based on redundant binary calculation
US5793660A (en) * 1997-04-14 1998-08-11 Hewlett-Packard Company Circuit for finding m modulo n
FR2771525B1 (fr) * 1997-11-24 2002-10-11 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044398A (ja) * 1999-04-07 2010-02-25 Panasonic Corp 多倍長演算装置
JP2005513532A (ja) * 2001-12-14 2005-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ モンゴメリ乗算器のパイプライン型コア
US7206799B2 (en) 2002-04-19 2007-04-17 Oki Electric Industry Co., Ltd. Modular multiplication method and calculating device

Also Published As

Publication number Publication date
US6415310B1 (en) 2002-07-02

Similar Documents

Publication Publication Date Title
US5499299A (en) Modular arithmetic operation system
US6202076B1 (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
JP2000132376A (ja) 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
AU1132199A (en) A non-deterministic public key encryption system
US20020055962A1 (en) Automatically solving equations in finite fields
JP3616897B2 (ja) モンゴメリ法による乗算剰余計算装置
JP3402441B2 (ja) 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体
Kota et al. Implementation of the RSA algorithm and its cryptanalysis
JP2001051832A (ja) 乗算剰余演算方法および乗算剰余回路
KR100340102B1 (ko) 알에스에이 공개키 암호 고속화 장치 및 방법
JP3797808B2 (ja) スカラー倍算方法およびその装置
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP4676071B2 (ja) べき乗剰余演算方法、逆数演算方法およびそれらの装置
JP3706398B2 (ja) 楕円曲線による署名、認証及び秘密通信方式
KR20010000048A (ko) m진법 방식을 이용한 타원곡선상 다중 점의 상수고속연산 방법
Desoky Cryptography: Algorithms and standards
JP3634097B2 (ja) 暗号通信システム
Al-Tuwaijry et al. A high speed RSA processor
JPH02273779A (ja) ディジタル署名装置
Sarvalakshmi et al. Lightweight Cryptographic Key Communication Technique in Wireless Network based on Hyperelliptic Cryptosystem (HECC).
KR20010103134A (ko) 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법
WO2003030442A2 (en) Cisponentiation method, software, and device for exponentiation
JPH1152851A (ja) 楕円曲線上の群演算装置
AU750323B2 (en) A method of generating a key for a public key encryption system

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060110