JPH11212456A - モンゴメリ法による乗算剰余計算装置 - Google Patents

モンゴメリ法による乗算剰余計算装置

Info

Publication number
JPH11212456A
JPH11212456A JP10014681A JP1468198A JPH11212456A JP H11212456 A JPH11212456 A JP H11212456A JP 10014681 A JP10014681 A JP 10014681A JP 1468198 A JP1468198 A JP 1468198A JP H11212456 A JPH11212456 A JP H11212456A
Authority
JP
Japan
Prior art keywords
register
sum
circuit
bits
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.)
Granted
Application number
JP10014681A
Other languages
English (en)
Other versions
JP3616897B2 (ja
Inventor
Masahiko Takenaka
正彦 武仲
Koichi Ito
孝一 伊藤
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 JP01468198A priority Critical patent/JP3616897B2/ja
Publication of JPH11212456A publication Critical patent/JPH11212456A/ja
Application granted granted Critical
Publication of JP3616897B2 publication Critical patent/JP3616897B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 積和回路の構成を単純化することができ、ま
た、パイプライン処理が可能になる、モンゴメリのアル
ゴリズムを用いて乗算剰余計算を高速に行う計算装置を
提供する。 【解決手段】 積和回路21は、Aレジスタ3及びBレジ
スタ4の出力を乗算し、その乗算結果にc3 レジスタ26
の出力及びYレジスタ5の出力を加算する。積和回路22
は、Nレジスタ7及びmレジスタ8の出力を乗算し、そ
の乗算結果にc4 レジスタ29の出力及び積和回路21の出
力を加算する。2つの積和回路21,22におけるキャリー
用のレジスタ26,29を各別に設けて自身の積和回路にキ
ャリーを戻す構成とする。全ての処理を処理単位(kビ
ット)内で行う。積和回路22の動作中に、積和回路21の
次回の動作が可能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば公開鍵暗号
系のRSA暗号処理において、モンゴメリのアルゴリズ
ム(Modulo Multiplication Without Trial Division,
Peter L. Montgomery, Mathematics of Computation, V
olume 44, Number 170, April 1985 pp. 519〜528 参
照)を用いて乗算剰余計算を高速に行う乗算剰余計算装
置に関する。
【0002】
【従来の技術】近年におけるコンピュータネットワーク
の発達により、データベースを検索する機会、電子メー
ル,電子ニュース等の電子化された情報をネットワーク
を経由して送受する機会が急速に増加してきている。更
に、これらを利用して、オンラインショッピング等のサ
ービスも提供されつつある。しかし、それに伴って、ネ
ットワーク上の電子化されたデータを盗聴する、改竄す
る、他人になりすましてサービスを無償で受ける等の問
題も指摘されている。特に無線を利用したネットワーク
においては、傍受が容易なためにこれらの問題を防止す
る対策が望まれている。
【0003】これらの問題に対して暗号技術を応用した
暗号化電子メール,利用者認証システムが提案され、種
々のネットワークにも導入されつつある。この意味でコ
ンピュータネットワークにおいては暗号化が必須の技術
であるといえる。このような暗号技術の中の一つにディ
ジタル署名即ち認証に適した公開鍵暗号方式があるが、
暗号化/復号に大量の処理が必要なために高速化が望ま
れており、様々な高速化アルゴリズムが発表されてい
る。
【0004】暗号化方式は、大別すると秘密鍵暗号系と
公開鍵暗号系との二つに分類できる。秘密鍵暗号系は、
送信者と受信者とが同じ暗号鍵を持つことにより暗号通
信を行う方式である。即ち、秘密鍵暗号系では、あるメ
ッセージを秘密の暗号鍵に基づいて暗号化して相手に送
り、受け手はこの暗号鍵を用いて暗号文を復号して元の
メッセージに戻して情報を入手する。
【0005】公開鍵暗号系は、送信者が公開されている
受信者の公開鍵でメッセージを暗号化して送信し、受信
者が自分の秘密鍵でその暗号化メッセージを復号するこ
とにより通信を行う方式である。即ち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号は秘密鍵でのみ復号することができる。
【0006】秘密鍵暗号系では、個人が秘密に保管しな
ければならない鍵が通信相手の数だけ必要であり、必要
な総鍵数はn人のネットワークの場合(n−1)/2個
である。また、初めて通信する相手に対しては、何らか
の方法で秘密鍵の配送が必要であるという欠点がある。
この欠点を解消するために、大規模なネットワークでは
鍵管理センタを設置し、センタとの間の秘密鍵のみを保
管し、暗号通信を行う場合はセンタから送信相手との秘
密鍵を得る方法が用いられる。この場合、秘密鍵の総数
はn個となる。
【0007】一方、公開鍵暗号系では、個人が秘密に保
管する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数
もn人のネットワークの場合n個である。また、初めて
通信する相手に対しては、公開鍵の配送を行えば良く、
鍵管理センタを設置して、ユーザの公開鍵をn個公開簿
に登録し、センタから送信相手の公開鍵を得る方法が用
いられる。この場合、センタは公開鍵の改竄を防ぐだけ
で、秘密に保管する必要がない。但し、公開鍵方式は秘
密鍵方式に比べて鍵のビット数が大きいため保管に要す
るファイルサイズは大きくなる。
【0008】また、認証の場合、秘密鍵暗号系では、例
えば送信するメッセージを秘密鍵で圧縮変換し、送信文
に付加して送り、受信側では同様に圧縮変換して比較す
る方式がとられている。しかし、送受信が同じ鍵である
ため、受信者は認証データを偽造することができる。こ
れに対して、公開鍵暗号系では、秘密鍵で暗号化するこ
とができるのは本人だけであるという特徴を利用する。
送信者はメッセージを圧縮変換して秘密鍵で暗号化し、
送信文に付加して送り、受信者は送信者の公開鍵で付加
されたデータを復号し、同様に圧縮変換したものと比較
する方式がとられている。この場合、受信者は不正がで
きない。
【0009】このように認証系では公開鍵暗号系の技術
は必要不可欠であるといえる。しかし、公開鍵暗号系に
は、暗号化/復号に大量の処理が必要であるという大き
な欠点があるため、一般には処理が速い秘密鍵暗号系を
メッセージの暗号化に、公開鍵暗号系は認証用にという
ように組み合わせて用いられる場合が多い。
【0010】公開鍵暗号系の中で、現在最も有力なもの
が1977年にリヴェスト(Rivest),シャミア(Shamir)
及びエイドルマン(Adlman)の三人によって発明された
RSA暗号である。このRSA暗号の基本原理は次のよ
うなものである。
【0011】(RSAの基本アルゴリズム)暗号鍵
(e,N)と対応する復号鍵(d,N)とにおいて、e
とNとは公開鍵であり、dは秘密鍵である。平文をM,
暗号文をCとすると、暗号化Eと復号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は大きな素数
【0012】通常、e,d,M,Nなどは1024ビット程
度の大きな整数が用いられているので、高速指数計算法
を使用しても1回のRSA演算で平均1500回程度の多重
精度乗算と剰余算とを行わなければならない。特に剰余
計算は、近似法,剰余テーブル方式,モンゴメリのアル
ゴリズム等、多くの高速化手法が提案されている。この
ような、RSA暗号に代表される公開鍵暗号系の多くで
利用される、べき乗剰余アルゴリズムを高速に処理する
ためには、1回あたりの剰余アルゴリズムの高速化が要
求される。
【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→TR-1
mod 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 ,yg-1 ,…,y0 r , R=rg , r=2k とあらわされる場合、次に示すj=0〜g−1の繰り返
し処理によりTR-1modNを多重精度×単精度として求
めることができる。ここで単精度とはr進数1桁のこと
とし、同じ文字を使用した場合、基本的に大文字を多重
精度、小文字を単精度、小文字の添字を多重精度での桁
の位置とする。
【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を
行うことにより、TR-1mod Nを求めることができる。
【0020】(REDCの多重精度乗算剰余への拡張)
次に、REDCのアルゴリズムを乗算剰余演算に拡張す
る。上記のアルゴリズムにおいて、入力Tは0≦T<R
・Nを満たす値であるが、実際のRSA演算では、入力
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 ,bg-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-1mod Nを多重精度×単精度の計
算として求めることができる。
【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
を行うことにより、ABR-1mod Nを求めることができ
る。
【0023】(REDCの単精度×単精度処理への拡
張)アルゴリズム3では、多重精度のモンゴメリ乗算剰
余を多重精度×単精度で実現可能としているが、この多
重精度×単精度の計算部分をさらに単精度×単精度の計
算を組み合わせて行えるよう拡張する。この場合、A×
i の計算部分とm×Nの計算部分とが繰り返し計算と
なり、上述の場合と同様に2つの乗算を別々に繰り返し
計算すると、繰り返し計算制御によるロスが2倍になっ
てしまう。そこで、2つの乗算を同一の繰り返しループ
で行えるようにすれば、ロスの低減が可能である。2つ
の乗算を同一の繰り返しループで行えるように拡張した
アルゴリズム4を示す。
【0024】(アルゴリズム4)REDCを単精度×単
精度へ拡張したアルゴリズムREDC(A×B)は次に
示すようになる。乗算する2数A,B,パラメータ
N′,出力用変数Y,キャリー変数Cが何れもr進数
で、 A=(ag-1 ,ag-2 ,…,a0 r , B=(bg-1 ,bg-2 ,…,b0 r , N′=(n′g-1 ,n′g-2 ,…,n′0 r , Y=(yg ,yg-1 ,…,y0 r , C=(c1 ,c0 r , R=rg , r=2k とあらわされ、r進1桁の一時変数tmp1,tmp2,tmp3,
tmp4とする場合、次に示すi,jの繰り返し処理により
ABR-1mod Nを単精度×単精度の計算で求めることが
できる。
【0025】 Y=0 for j=0 to g−1 …………………………… (tmp2,tmp1)r =y0 +ai ・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 g-1 =c0 コア後処理 yg =c1 next j …………………………… if Y≧N then Y=Y−N 補正処理 Y<N then return Y
【0026】ここで、( )r は、括弧内のr進数1桁
の変数を多重精度として扱うことを示している。tmp3,
1 はr進数1桁で表現しているが、内容は1ビットの
値である。出力用変数Yについて、計算に使用する値が
i のとき、出力がyi-1 に格納されるのは、アルゴリ
ズム3におけるY=Y/rの機能をこれにより実現して
いるためである。また、便宜上、外側のループをjルー
プ、内側のループをiループと呼び、jループの始めか
らiループまでをコア前処理、iループ内の処理をコア
処理、iループの終わりからjループの終わりまでをコ
ア後処理と呼ぶこととする。
【0027】図11は、上述したアルゴリズム4のコア処
理を実行する乗算剰余計算装置の構成図である。図11に
示す乗算剰余計算装置は、内部で乗算及び加算を行うα
積和回路51及びβ積和回路52と、乗算する一方の数A:
(ag-1 ,ag-2 ,…,a0)を保持するAレジスタ53
と、乗算する一方の数B:(bg-1 ,bg-2 ,…,
0 )を保持するBレジスタ54と、剰余の法N:(n
g-1 ,ng-2 ,…,n0 )を保持するNレジスタ55と、
β積和回路52の出力の下位kビットを格納するYレジス
タ56と、モンゴメリのパラータmを保持するmレジスタ
57と、α積和回路51の出力の上位(k+1)ビット及び
β積和回路52の出力の上位kビットを加算するキャリー
計算部としての加算回路58と、加算回路58の加算結果を
格納するCレジスタ59と、jの値と0とを比較して出力
を選択する選択回路60とを有する。
【0028】また、α積和回路51,β積和回路52の内部
構成を図12(a),(b)に夫々示す。α積和回路51
は、Aレジスタ53及びBレジスタ54からの出力を乗算す
るkビット乗算器511 と、kビット乗算器511 の出力及
び選択回路60(Yレジスタ56)の出力を加算する2kビッ
ト加算器512 と、2kビット加算器512 の出力及びCレジ
スタ59の出力を加算する2k+1ビット加算器513 とを有
する。β積和回路52は、Nレジスタ55及びmレジスタ57
からの出力を乗算するkビット乗算器521 と、kビット
乗算器521 の出力及びα積和回路51からの下位kビット
の出力を加算する2kビット加算器522 とを有する。
【0029】図13は、アルゴリズム4のコア処理の内容
を示す説明図である。α積和回路51内にて、Aレジスタ
53の出力ai (kビット)とBレジスタ54の出力b
j (kビット)とを乗算し、その乗算結果(2kビッ
ト)に、選択回路60(Yレジスタ56)の出力(kビッ
ト)とCレジスタ59の出力(k+1ビット)とを加算す
る。なお、選択回路60は、jの値と0とを比較し、jの
値が0である場合にはα積和回路51へ0を出力し、jの
値が0でない場合にはYレジスタ56の格納値yi をα積
和回路51へ出力する。α積和回路51は、その演算結果
(2k+1ビット)の上位(k+1)ビットを加算回路
58へ出力し、その下位kビットをβ積和回路52へ出力す
る。
【0030】β積和回路52内にて、Nレジスタ55の出力
i (kビット)とmレジスタ57の出力(kビット)と
を乗算し、その乗算結果(2kビット)にα積和回路51
からの下位kビット出力を加算する。β積和回路52は、
その演算結果(2kビット)の上位kビットを加算回路
58へ出力し、その下位kビットをYレジスタ56へ出力す
る。Yレジスタ56は、そのkビットのデータを値yi-1
として格納する。
【0031】加算回路58は、α積和回路51からの出力
(k+1ビット)とβ積和回路52からの出力(kビッ
ト)とを加算し、その加算結果(k+1ビット)をCレ
ジスタ59へ出力する。Cレジスタ59は、これを格納す
る。
【0032】
【発明が解決しようとする課題】上述したような従来の
乗算剰余計算装置の構成では、2つの乗算を同一の繰り
返しループで行えるが、Cレジスタ59から出力される次
ループへのキャリーが(k+1)ビットとなり、そのた
めα積和回路51の出力が(2k+1)ビットとなってし
まっており、1つ目の積和回路(α積和回路51)の構成
を単純化できないという問題がある。
【0033】また、キャリー計算部である加算回路58に
おいて、次回演算用のキャリーが2つのα積和回路51及
びβ積和回路52での演算結果に基づいて計算されるた
め、2つ目の積和回路(β積和回路52)での演算が終了
しなければ、次回の1つ目の積和回路(α積和回路51)
での演算を行うことができず、処理能率が悪いという問
題がある。
【0034】本発明は斯かる事情に鑑みてなされたもの
であり、1つ目の積和回路への次回演算用のキャリーを
kビットにすることにより、積和回路の構成を単純化す
ることができ、また、これによりDSP(Digital Sign
al Processor),マイクロコントローラ等の上のソフト
ウェアとして実現が容易になるモンゴメリ法による乗算
剰余計算装置を提供することを目的とする。
【0035】本発明の他の目的は、キャリーの伝搬を各
積和回路でのループ内に押さえることにより、2つの積
和回路での演算を独立して行え、つまり、2つ目の積和
回路での積和を行っている間に1つ目の積和回路で次回
の積和を行え、これによりパイプライン処理が可能にな
るモンゴメリ法による乗算剰余計算装置を提供すること
にある。
【0036】
【課題を解決するための手段】請求項1に係るモンゴメ
リ法による乗算剰余計算装置(第1発明)は、モンゴメ
リのアルゴリズムを用いて乗算剰余計算を行う装置にお
いて、積和演算を行いその演算結果を上位kビットと下
位kビットとに分けて出力する第1積和回路と、積和演
算を行いその演算結果を上位kビットと下位kビットと
に分けて出力する第2積和回路と、加算演算を行いその
演算結果を上位1ビットと下位kビットとに分けて出力
する加算回路と、乗算される2数を保持する第1及び第
2レジスタと、前記第2積和回路の下位kビット出力を
保持し、前記第2積和回路のその次の回の下位kビット
出力を格納する第3レジスタと、前記加算回路の下位k
ビット出力を保持し、前記加算回路のその次の回の下位
kビット出力を格納する第4レジスタと、剰余の法を保
持する第5レジスタと、モンゴメリのアルゴリズムにお
けるパラメータの値を保持する第6レジスタと、前記加
算回路の上位1ビット出力を保持し、前記加算回路のそ
の次の回の上位1ビット出力を格納する第7レジスタと
を備え、前記第1積和回路は、前記第1及び第2レジス
タに保持された2数の所定ビットの値を乗算し、その乗
算結果に前記第3レジスタに保持された数の所定ビット
の値及び前記第4レジスタに保持された値を加算する演
算を行い、前記第2積和回路は、前記第5レジスタに保
持された数の所定ビットの値と前記第6レジスタに保持
された値とを乗算し、その乗算結果に前記第1積和回路
の下位kビット出力を加算する演算を行い、前記加算回
路は、前記第1積和回路の上位kビット出力と前記第2
積和回路の上位kビット出力と前記第7レジスタに保持
された値とを加算する演算を行うように構成したことを
特徴とする。
【0037】請求項2に係るモンゴメリ法による乗算剰
余計算装置は、請求項1において、前記第1積和回路
は、前記第1及び第2レジスタに保持された2数の所定
ビットの値を乗算し、その乗算結果に前記第3レジスタ
に保持された数の所定ビットの値を加算し、その加算結
果に前記第4レジスタに保持された値を加算するように
構成したことを特徴とする。
【0038】請求項3に係るモンゴメリ法による乗算剰
余計算装置は、請求項1において、前記第1積和回路
は、前記第1及び第2レジスタに保持された2数の所定
ビットの値を乗算し、その乗算結果に前記第4レジスタ
に保持された値を加算し、その加算結果に前記第3レジ
スタに保持された数の所定ビットの値を加算するように
構成したことを特徴とする。
【0039】請求項4に係るモンゴメリ法による乗算剰
余計算装置(第2発明)は、モンゴメリのアルゴリズム
を用いて乗算剰余計算を行う装置において、積和演算を
行いその演算結果を上位kビットと下位kビットとに分
けて出力する第1積和回路と、積和演算を行いその演算
結果を上位kビットと下位kビットとに分けて出力する
第2積和回路と、乗算される2数を保持する第1及び第
2レジスタと、前記第2積和回路の下位kビット出力を
保持し、前記第2積和回路のその次の回の下位kビット
出力を格納する第3レジスタと、前記第1積和回路の上
位kビット出力を保持し、前記第1積和回路のその次の
回の上位kビット出力を格納する第4レジスタと、剰余
の法を保持する第5レジスタと、モンゴメリのアルゴリ
ズムにおけるパラメータの値を保持する第6レジスタ
と、前記第2積和回路の上位kビット出力を保持し、前
記第2積和回路のその次の回の上位kビット出力を格納
する第7レジスタとを備え、前記第1積和回路は、前記
第1及び第2レジスタに保持された2数の所定ビットの
値を乗算し、その乗算結果に前記第3レジスタに保持さ
れた数の所定ビットの値及び前記第4レジスタに保持さ
れた値を加算する演算を行い、前記第2積和回路は、前
記第5レジスタに保持された数の所定ビットの値と前記
第6レジスタに保持された値とを乗算し、その乗算結果
に前記第1積和回路の下位kビット出力及び前記第7レ
ジスタに保持された値を加算する演算を行うように構成
したことを特徴とする。
【0040】請求項5に係るモンゴメリ法による乗算剰
余計算装置は、請求項4において、前記第1積和回路
は、前記第1及び第2レジスタに保持された2数の所定
ビットの値を乗算し、その乗算結果に前記第3レジスタ
に保持された数の所定ビットの値を加算し、その加算結
果に前記第4レジスタに保持された値を加算するように
構成したことを特徴とする。
【0041】請求項6に係るモンゴメリ法による乗算剰
余計算装置は、請求項4において、前記第1積和回路
は、前記第1及び第2レジスタに保持された2数の所定
ビットの値を乗算し、その乗算結果に前記第4レジスタ
に保持された値を加算し、その加算結果に前記第3レジ
スタに保持された数の所定ビットの値を加算するように
構成したことを特徴とする。
【0042】請求項7に係るモンゴメリ法による乗算剰
余計算装置は、請求項4において、前記第2積和回路
は、前記第5レジスタに保持された数の所定ビットの値
と前記第6レジスタに保持された値とを乗算し、その乗
算結果に前記第1積和回路の下位kビット出力を加算
し、その加算結果に前記第7レジスタに保持された値を
加算するように構成したことを特徴とする。
【0043】請求項8に係るモンゴメリ法による乗算剰
余計算装置は、請求項4において、前記第2積和回路
は、前記第5レジスタに保持された数の所定ビットの値
と前記第6レジスタに保持された値とを乗算し、その乗
算結果に前記第7レジスタに保持された値を加算し、そ
の加算結果に前記第1積和回路の下位kビット出力を加
算するように構成したことを特徴とする。
【0044】請求項9に係るモンゴメリ法による乗算剰
余計算装置は、請求項4〜8の何れかにおいて、前記第
2積和回路による演算中に、前記第1積和回路によりそ
の次の回の演算を行うように構成したことを特徴とす
る。
【0045】請求項10に係るモンゴメリ法による乗算剰
余計算装置は、暗号化/復号化のためのモンゴンメリ法
による乗算剰余計算を行う装置において、乗算演算を行
う第1積和手段と、モンゴンメリ剰余演算を行う第2積
和手段とを備え、前記第1積和手段の出力を前記第2積
和手段の入力とする構成を有し、前記第2積和手段が演
算を行う間、前記第1積和手段で次の回の演算を行うよ
うに、パイプライン処理すべく構成したことを特徴とす
る。
【0046】請求項11に係るモンゴメリ法による乗算剰
余計算装置は、請求項10において、前記第1積和手段及
び第2積和手段にあって、各自身の上位出力を各自身の
次の回のキャリア入力とするようにしたことを特徴とす
る。
【0047】請求項12に係るモンゴメリ法による乗算剰
余計算装置は、請求項10において、前記第1積和手段及
び第2積和手段における演算量が等しいことを特徴とす
る。
【0048】請求項13に係るモンゴメリ法による乗算剰
余計算装置は、請求項10において、前記第1積和手段及
び第2積和手段は、2つのkビットの数を乗算する手段
と、その乗算結果に2つのkビットの数を加算する手段
とを有することを特徴とする。
【0049】第1発明の乗算剰余計算装置では、従来例
において問題となっている(k+1)ビットのキャリー
を上位1ビットと下位kビットとに分離し、その下位k
ビットは1つのキャリーとして従来例と同様に1つ目の
積和回路に戻し、その上位1ビットはもう1つのキャリ
ーとして、キャリー計算用の加算回路に戻す。この構成
をとることにより、1つ目の積和回路の構成の単純化を
図れる。
【0050】第2発明の乗算剰余計算装置では、2つの
積和回路から出力される上位データを加算するのではな
く、各積和回路におけるキャリー用のレジスタを各別に
設けて自身の積和回路にキャリーを戻す構成とすること
により、第1発明と同様に1つ目の積和回路の構成の単
純化を図れると共に、更に各積和回路のキャリー処理が
閉じているので、2つ目の積和回路の動作中に、1つ目
の積和回路の次回の動作が可能となる。
【0051】
【発明の実施の形態】以下、本発明をその実施の形態を
示す図面を参照して具体的に説明する。 (第1発明)1つ目の積和回路へのキャリーをkビット
にした第1発明について説明する。第1発明では、1つ
目の積和回路の出力と2つ目の積和回路の出力との加算
結果である(k+1)ビットのキャリーを上位1ビット
と下位kビットとに分離し、その下位kビットはキャリ
ー変数c1 として1つ目の積和回路に戻し、その上位1
ビットはもう1つのキャリー変数c2 として、キャリー
計算用の加算回路に戻す。この場合のアルゴリズム5を
以下に示す。
【0052】(アルゴリズム5)乗算する2数A,B,
パラメータN′,出力用変数Yが何れもr進数で、 A=(ag-1 ,ag-2 ,…,a0 r , B=(bg-1 ,bg-2 ,…,b0 r , N′=(n′g-1 ,n′g-2 ,…,n′0 r , Y=(yg ,yg-1 ,…,y0 r , R=rg , r=2k とあらわされ、r進1桁の一時変数tmp1,tmp2,tmp4,
キャリー変数c1 ,c2とする場合、次に示すi,jの
繰り返し処理によりABR-1mod Nを単精度×単精度の
計算として求めることができる。
【0053】 Y=0 for j=0 to g−1 …………………………… (tmp2,tmp1)r =y0 +ai ・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 g-1 =c1 コア後処理 yg =c2 next j …………………………… if Y≧N then Y=Y−N 補正処理 Y<N then return Y ここで、( )r は、括弧内のr進数1桁の変数を多重
精度として扱うことを示している。またキャリー変数c
2 はr進数1桁で表現しているが、内容は1ビットの値
である。
【0054】図1は、上述したアルゴリズム5のコア処
理を実行する乗算剰余計算装置の構成図である。図1に
示す乗算剰余計算装置は、内部で乗算及び加算を行う第
1積和回路1及び第2積和回路2と、乗算する一方の数
A:(ag-1 ,ag-2 ,…,a0 )を保持する第1レジ
スタとしてのAレジスタ3と、乗算する一方の数B:
(bg-1 ,bg-2 ,…,b0 )を保持する第2レジスタ
としてのBレジスタ4と、第2積和回路2の前回の下位
kビット出力を保持し次回の下位kビット出力を格納す
る第3レジスタとしてのYレジスタ5と、キャリー変数
c1 を保持する第4レジスタとしてのc1 レジスタ6
と、剰余の法N:(ng-1 ,ng-2 ,…,n 0 )を保持
する第5レジスタとしてのNレジスタ7と、モンゴメリ
アルゴリズムにおけるパラータmを保持する第6レジス
タとしてのmレジスタ8と、キャリー変数c2 を保持す
る第7レジスタとしてのc2 レジスタ9と、第1積和回
路1の上位kビット出力,第2積和回路2の上位kビッ
ト出力及びc2 レジスタ9の出力を加算するキャリー計
算部としての加算回路10と、jの値と0とを比較してそ
の出力を選択する選択回路11とを有する。
【0055】また、第1積和回路1,第2積和回路2の
内部構成を図2(a),(b)に夫々示す。第1積和回
路1は、kビット乗算器101 と2kビット加算器102 と2k
ビット加算器103 とを有する。kビット乗算器101 は、
Aレジスタ3及びBレジスタ4からの出力を乗算し、2k
ビット加算器102 は、kビット乗算器101 の出力と選択
回路11(Yレジスタ5)の出力とを加算し、2kビット加
算器103 は、2kビット加算器102 の出力とc1 レジスタ
6の出力とを加算する。なお、図2(a)に示す構成例
では、乗算結果に選択回路11(Yレジスタ5)の出力を
先に加算し、その後にc1 レジスタ6の出力を加算する
ようになっているが、これとは逆に、先にc1 レジスタ
6の出力、その後に選択回路11(Yレジスタ5)の出力
を加算するように構成しても良い。
【0056】第2積和回路2は、Nレジスタ7及びmレ
ジスタ8からの出力を乗算するkビット乗算器201 と、
kビット乗算器201 の出力及び第1積和回路1からの下
位kビットの出力を加算する2kビット加算器202 とを有
する。
【0057】図3は、アルゴリズム5のコア処理の内容
を示す説明図である。第1積和回路1内にて、Aレジス
タ3の出力ai (kビット)とBレジスタ4の出力bj
(kビット)とを乗算し、その乗算結果(2kビット)
に、選択回路11(Yレジスタ5)の出力(kビット)と
c1 レジスタ6の出力(kビット)とを加算する。な
お、選択回路11は、jの値と0とを比較し、jの値が0
である場合には第1積和回路1へ0を出力し、jの値が
0でない場合にはYレジスタ5の格納値yi を第1積和
回路1へ出力する。第1積和回路1は、その演算結果
(2kビット)の上位kビットを加算回路10へ出力し、
その下位kビットを第2積和回路2へ出力する。
【0058】第2積和回路2内にて、Nレジスタ7の出
力ni (kビット)とmレジスタ8の出力(kビット)
とを乗算し、その乗算結果(2kビット)に、第1積和
回路1からの出力下位kビットを加算する。第2積和回
路2は、その演算結果(2kビット)の上位kビットを
加算回路10へ出力し、その下位kビットをYレジスタ5
へ出力する。Yレジスタ5は、そのkビットのデータを
値yi-1 として格納する。
【0059】加算回路10は、第1積和回路1からの出力
(kビット)と第2積和回路2からの出力(kビット)
とc2 レジスタ9からの出力(1ビット)とを加算す
る。そして、次回の演算用として、その加算結果(k+
1ビット)の上位1ビットをc2 レジスタ9へ、その下
位kビットをc1 レジスタ6へ夫々出力する。各c1 レ
ジスタ6,c2 レジスタ9は、これを格納する。
【0060】(第2発明)キャリー用のレジスタを各積
和回路毎に設けた第2発明について説明する。第2発明
では、各積和回路におけるキャリー用のレジスタを各別
に設けて自身の積和回路にキャリー変数を戻す構成とす
る。このアルゴリズム6を以下に示す。
【0061】(アルゴリズム6)乗算する2数A,B,
パラメータN′,出力用変数Yが何れもr進数で、 A=(ag-1 ,ag-2 ,…,a0 r , B=(bg-1 ,bg-2 ,…,b0 r , N′=(n′g-1 ,n′g-2 ,…,n′0 r , Y=(yg ,yg-1 ,…,y0 r , R=rg , r=2k とあらわされ、r進1桁の一時変数tmp1,キャリー変数
c3 ,c4 とする場合、次に示すi,jの繰り返し処理
によりABR-1mod Nを単精度×単精度の計算として求
めることができる。
【0062】 Y=0 for j=0 to g−1 …………………………… (c3 ,tmp1)r =y0 +ai ・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 コア処理 next i …………………………… (c4 ,c3 )r =c3 +c4 +yg g-1 =c3 コア後処理 yg =c4 next j …………………………… if Y≧N then Y=Y−N 補正処理 Y<N then return Y
【0063】図4は、上述したアルゴリズム6のコア処
理を実行する乗算剰余計算装置の構成図である。図4に
示す乗算剰余計算装置は、内部で乗算及び加算を行う第
3積和回路21及び第4積和回路22と、図1に示すものと
同様の第1レジスタとしてのAレジスタ3,第2レジス
タとしてのBレジスタ4,第3レジスタとしてのYレジ
スタ5,第5レジスタとしてのNレジスタ7,第6レジ
スタとしてのmレジスタ8及び選択回路11と、キャリー
変数c3 を保持する第4レジスタとしてのc3レジスタ2
6と、キャリー変数c4 を保持する第7レジスタとして
のc4 レジスタ29とを有する。
【0064】なお、第3積和回路21及び第4積和回路22
の内部構成は、図2(a)に示す第1積和回路1の内部
構成と同じであり、各積和回路21及び22は、kビット乗
算器101 と2kビット加算器102 と2kビット加算器103 と
から構成されている。
【0065】第3積和回路21のkビット乗算器101 は、
Aレジスタ3及びBレジスタ4からの出力を乗算し、2k
ビット加算器102 は、kビット乗算器101 の出力と選択
回路11(Yレジスタ5)の出力とを加算し、2kビット加
算器103 は、2kビット加算器102 の出力とc3 レジスタ
26の出力とを加算する。なお、図2(a)に示す構成例
では、乗算結果に選択回路11(Yレジスタ5)の出力を
先に加算し、その後にc3 レジスタ26の出力を加算する
ようになっているが、これとは逆に、先にc3レジスタ2
6の出力、その後に選択回路11(Yレジスタ5)の出力
を加算するように構成しても良い。
【0066】一方、第4積和回路22のkビット乗算器10
1 は、Nレジスタ7及びmレジスタ8からの出力を乗算
し、2kビット加算器102 は、kビット乗算器101 の出力
と第3積和回路21からの下位kビットの出力とを加算
し、2kビット加算器103 は、2kビット加算器102 の出力
とc4 レジスタ29の出力とを加算する。なお、図2
(a)に示す構成例では、乗算結果に第3積和回路21か
らの下位kビットの出力を先に加算し、その後にc4 レ
ジスタ29の出力を加算するようになっているが、これと
は逆に、先にc4 レジスタ29の出力、その後に第3積和
回路21からの下位kビットの出力を加算するように構成
しても良い。
【0067】図5は、アルゴリズム6のコア処理の内容
を示す説明図である。第3積和回路21内にて、Aレジス
タ3の出力ai (kビット)とBレジスタ4の出力bj
(kビット)とを乗算し、その乗算結果(2kビット)
に、選択回路11(Yレジスタ5)の出力(kビット)と
c3 レジスタ26の出力(kビット)とを加算する。な
お、選択回路11は、jの値と0とを比較し、jの値が0
である場合には第3積和回路21へ0を出力し、jの値が
0でない場合には第3Yレジスタ5の格納値yiを積和
回路21へ出力する。第3積和回路21は、その演算結果
(2kビット)の上位kビットをc3 レジスタ26へ出力
し、その下位kビットを第4積和回路22へ出力する。c
3 レジスタ26は、このkビットを次回の演算用のキャリ
ー変数として格納する。
【0068】第4積和回路22内にて、Nレジスタ7の出
力ni (kビット)とmレジスタ8の出力m(kビッ
ト)とを乗算し、その乗算結果(2kビット)に、第3
積和回路21からの下位kビット出力を加算する。第4積
和回路22は、その演算結果(2kビット)の上位kビッ
トをc4 レジスタ29へ出力し、その下位kビットをYレ
ジスタ5へ出力する。c4 レジスタ29は、このkビット
を次回の演算用のキャリー変数として格納する。また、
Yレジスタ5は、そのkビットのデータを値yi- 1 とし
て格納する。
【0069】図6は、モンゴメリ法による乗算剰余処理
の一例を示すフローチャートである。このフローチャー
トにおいて、jループが(アルゴリズム3)のループ処
理に当たる。jループの内側では、A×bj 及びm×N
の多重精度×単精度の部分乗算を行っている。iループ
は、A×bj 及びm×Nの多重精度×単精度の計算を単
精度×単精度の部分乗算で行っている部分である。iル
ープの内部ではai ×bj とm×ni との部分乗算を行
っている。
【0070】次に、第2発明における更なる具体例につ
いて説明する。以下の例では、N,A,Bのビット長を
1024ビット、g=32、処理単位k=32、R=21024、r
=232とする。
【0071】(コア前処理)図7は、コア前処理を行う
構成の一例を示す図である。31はモンゴメリ計算用のパ
ラメータn′0 を保持するレジスタ、32は第3積和回路
21の出力とレジスタ31の出力とを乗算する乗算回路であ
る。
【0072】このコア前処理では、コア処理で使用する
c3 レジスタ26,c4 レジスタ29及びmレジスタ8の初
期化を行っている。第3積和回路21は、まず、Aレジス
タ3,Bレジスタ4からの入力a0 ,bj を乗算し、そ
の乗算結果とYレジスタ5からの入力yi とを加算す
る。なお、コア処理と同じ積和回路を使用する場合は、
更にその結果と0とを加算する。そして、結果の上位32
ビットをc3 レジスタ26に格納し、下位32ビットを第3
積和回路21とパラメータmを計算するための乗算回路32
とへ出力する。乗算回路32は、第3積和回路21の出力と
レジスタ31の出力n′0 とを乗算し、その乗算結果の下
位32ビットをmレジスタへに出力する。
【0073】第4積和回路22は、Nレジスタ7からの入
力n0 とmレジスタ8の値とを乗算し、その乗算結果と
第3積和回路21からの出力とを加算する。なお、コア処
理と同じ積和回路を使用する場合は、更にその結果と0
とを加算する。そして、結果の上位32ビットをc4 レジ
スタ29に格納する。下位32ビットは使用しない。
【0074】(コア処理)図8は、iループ内部処理で
あるコア処理を行う構成の一例を示す図である。Yレジ
スタ5は前回の処理結果の保持及び今回の処理結果の出
力用レジスタである。選択回路11は、(アルゴリズム
3)でY=0の処理に相当するものである。
【0075】第3積和回路21は、まず、Aレジスタ3,
Bレジスタ4からの入力ai ,bjを乗算し、その乗算
結果とYレジスタ5からの入力yi とを加算し、更にそ
の加算結果とc3 レジスタ26の値とを加算する。そし
て、結果の上位32ビットをc3レジスタ26に格納し、下
位32ビットを第4積和回路22へ出力する。
【0076】第4積和回路22は、まず、Nレジスタ7か
らの入力ni とmレジスタ8の値とを乗算し、その乗算
結果と第3積和回路21からの出力とを加算し、更にその
加算結果とc4 レジスタ29の値とを加算する。そして、
結果の上位32ビットをc4 レジスタ29に格納し、下位32
ビットをYレジスタ5のyi-1 に格納する。(アルゴリ
ズム3)のY=Y/rの処理は、i回目の計算結果をy
i-1 に格納することで実現している。
【0077】(コア後処理)図9は、コア後処理を行う
構成の一例を示す図である。33はc3 レジスタ26の出力
とc4 レジスタ29の出力と選択回路11の出力とを加算す
る加算回路、34は加算回路33からのキャリー出力を0,
1と比較し、0であれば0を、1であれば1を、Yレジ
スタ5へ出力する選択回路である。
【0078】このコア後処理では、コア処理終了後のキ
ャリー変数c3 ,c4 の値の処理を行っている。c3 レ
ジスタ26,c4 レジスタ29の値及びYレジスタ5からの
入力y32を加算回路33に入力し、その加算結果をYレジ
スタ5のy31に出力し、キャリーを処理単位である32ビ
ットの値に変換してYレジスタ5のy32に出力する。こ
こで、出力からもわかるように、y32の値はYレジスタ
5では32ビットとして扱われているが、実際は1ビット
の値であるので、加算結果は32ビット+キャリーの範囲
で収まる。
【0079】(積和回路の構成)図10は、上述の構成例
で用いた積和回路の構成の一例を示す図である。ここで
は、全ての処理単位を32ビットになるように構成してい
る。積和回路は、1個の32ビット乗算器41と、4個の32
ビット加算器42,43,44,45とを有する。
【0080】A,Bの入力値は32ビット乗算器41で乗算
され、上位32ビットと下位32ビットとの2つで出力され
る。32ビット加算器43は、32ビット乗算器41の出力下位
32ビットと入力Rの値とを加算し、その加算結果の出力
32ビットを32ビット加算器45へ、キャリーを32ビット加
算器42へそれぞれ出力する。32ビット加算器42は、32ビ
ット乗算器41の出力上位32ビットと32ビット加算器43の
キャリー出力とを加算し、その加算結果の出力32ビット
を32ビット加算器44へ出力する。この加算ではキャリー
が発生しないことが理論的に証明されている。
【0081】32ビット加算器45は、32ビット加算器43の
出力と入力Cの値とを加算し、その加算結果の出力32ビ
ットは積和回路のL出力(下位32ビット)となり、キャ
リーは32ビット加算器44へ出力される。32ビット加算器
44は、32ビット加算器42の出力と32ビット加算器45のキ
ャリー出力とを加算し、その加算結果の出力32ビットは
積和回路のH出力(上位32ビット)となる。この加算で
はキャリーが発生しないことが理論的に証明されてい
る。
【0082】なお、本発明の乗算剰余計算装置は、ハー
ドウェアに限らず、同様の機能構成の少なくとも一部を
ソフトウェアで実現することもでき、そのような場合に
も処理の高速化を達成することができる。例えば、ソフ
トウェアで第2発明の乗算剰余計算装置を実現し、パイ
プライン処理が可能な32ビットプロセッサ上で実行した
場合、乗算剰余処理時間を比較すれば、従来の方式の約
半分の時間で処理が可能となり、その効果が明らかであ
る。
【0083】
【発明の効果】以上説明したように、第1,第2発明に
よれば、モンゴメリ法を用いた乗算剰余計算について、
全ての処理を処理単位内で行えるので、DSP,マイク
ロコントローラ等の上のソフトウェアとして実現が容易
になる。
【0084】また、第2発明によれば、キャリー伝搬を
各積和毎に制限でき、一方の積和処理中にもう一方の積
和処理も可能となるので、パイプライン処理などによっ
て、高速に乗算剰余計算を行うことが可能である。
【図面の簡単な説明】
【図1】本発明の乗算剰余計算装置(第1発明)の構成
図である。
【図2】積和回路の構成図である。
【図3】本発明の乗算剰余計算装置(第1発明)の動作
説明図である。
【図4】本発明の乗算剰余計算装置(第2発明)の構成
図である。
【図5】本発明の乗算剰余計算装置(第2発明)の動作
説明図である。
【図6】モンゴメリ法による乗算剰余処理の一例を示す
フローチャートである。
【図7】コア前処理を行うための構成図である。
【図8】コア処理を行うための構成図である。
【図9】コア後処理を行うための構成図である。
【図10】積和回路の構成図である。
【図11】従来の乗算剰余計算装置の構成図である。
【図12】従来の積和回路の構成図である。
【図13】従来の乗算剰余計算装置の動作説明図であ
る。
【符号の説明】
1 第1積和回路 2 第2積和回路 3 Aレジスタ 4 Bレジスタ 5 Yレジスタ 6 c1 レジスタ 7 Nレジスタ 8 mレジスタ 9 c2 レジスタ 10 加算回路 21 第3積和回路 22 第4積和回路 26 c3 レジスタ 29 c4 レジスタ

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 モンゴメリのアルゴリズムを用いて乗算
    剰余計算を行う装置において、 積和演算を行いその演算結果を上位kビットと下位kビ
    ットとに分けて出力する第1積和回路と、積和演算を行
    いその演算結果を上位kビットと下位kビットとに分け
    て出力する第2積和回路と、加算演算を行いその演算結
    果を上位1ビットと下位kビットとに分けて出力する加
    算回路と、乗算される2数を保持する第1及び第2レジ
    スタと、前記第2積和回路の下位kビット出力を保持
    し、前記第2積和回路のその次の回の下位kビット出力
    を格納する第3レジスタと、前記加算回路の下位kビッ
    ト出力を保持し、前記加算回路のその次の回の下位kビ
    ット出力を格納する第4レジスタと、剰余の法を保持す
    る第5レジスタと、モンゴメリのアルゴリズムにおける
    パラメータの値を保持する第6レジスタと、前記加算回
    路の上位1ビット出力を保持し、前記加算回路のその次
    の回の上位1ビット出力を格納する第7レジスタとを備
    え、 前記第1積和回路は、前記第1及び第2レジスタに保持
    された2数の所定ビットの値を乗算し、その乗算結果に
    前記第3レジスタに保持された数の所定ビットの値及び
    前記第4レジスタに保持された値を加算する演算を行
    い、 前記第2積和回路は、前記第5レジスタに保持された数
    の所定ビットの値と前記第6レジスタに保持された値と
    を乗算し、その乗算結果に前記第1積和回路の下位kビ
    ット出力を加算する演算を行い、 前記加算回路は、前記第1積和回路の上位kビット出力
    と前記第2積和回路の上位kビット出力と前記第7レジ
    スタに保持された値とを加算する演算を行うように構成
    したことを特徴とするモンゴメリ法による乗算剰余計算
    装置。
  2. 【請求項2】 前記第1積和回路は、前記第1及び第2
    レジスタに保持された2数の所定ビットの値を乗算し、
    その乗算結果に前記第3レジスタに保持された数の所定
    ビットの値を加算し、その加算結果に前記第4レジスタ
    に保持された値を加算するように構成した請求項1記載
    のモンゴメリ法による乗算剰余計算装置。
  3. 【請求項3】 前記第1積和回路は、前記第1及び第2
    レジスタに保持された2数の所定ビットの値を乗算し、
    その乗算結果に前記第4レジスタに保持された値を加算
    し、その加算結果に前記第3レジスタに保持された数の
    所定ビットの値を加算するように構成した請求項1記載
    のモンゴメリ法による乗算剰余計算装置。
  4. 【請求項4】 モンゴメリのアルゴリズムを用いて乗算
    剰余計算を行う装置において、 積和演算を行いその演算結果を上位kビットと下位kビ
    ットとに分けて出力する第1積和回路と、積和演算を行
    いその演算結果を上位kビットと下位kビットとに分け
    て出力する第2積和回路と、乗算される2数を保持する
    第1及び第2レジスタと、前記第2積和回路の下位kビ
    ット出力を保持し、前記第2積和回路のその次の回の下
    位kビット出力を格納する第3レジスタと、前記第1積
    和回路の上位kビット出力を保持し、前記第1積和回路
    のその次の回の上位kビット出力を格納する第4レジス
    タと、剰余の法を保持する第5レジスタと、モンゴメリ
    のアルゴリズムにおけるパラメータの値を保持する第6
    レジスタと、前記第2積和回路の上位kビット出力を保
    持し、前記第2積和回路のその次の回の上位kビット出
    力を格納する第7レジスタとを備え、 前記第1積和回路は、前記第1及び第2レジスタに保持
    された2数の所定ビットの値を乗算し、その乗算結果に
    前記第3レジスタに保持された数の所定ビットの値及び
    前記第4レジスタに保持された値を加算する演算を行
    い、 前記第2積和回路は、前記第5レジスタに保持された数
    の所定ビットの値と前記第6レジスタに保持された値と
    を乗算し、その乗算結果に前記第1積和回路の下位kビ
    ット出力及び前記第7レジスタに保持された値を加算す
    る演算を行うように構成したことを特徴とするモンゴメ
    リ法による乗算剰余計算装置。
  5. 【請求項5】 前記第1積和回路は、前記第1及び第2
    レジスタに保持された2数の所定ビットの値を乗算し、
    その乗算結果に前記第3レジスタに保持された数の所定
    ビットの値を加算し、その加算結果に前記第4レジスタ
    に保持された値を加算するように構成した請求項4記載
    のモンゴメリ法による乗算剰余計算装置。
  6. 【請求項6】 前記第1積和回路は、前記第1及び第2
    レジスタに保持された2数の所定ビットの値を乗算し、
    その乗算結果に前記第4レジスタに保持された値を加算
    し、その加算結果に前記第3レジスタに保持された数の
    所定ビットの値を加算するように構成した請求項4記載
    のモンゴメリ法による乗算剰余計算装置。
  7. 【請求項7】 前記第2積和回路は、前記第5レジスタ
    に保持された数の所定ビットの値と前記第6レジスタに
    保持された値とを乗算し、その乗算結果に前記第1積和
    回路の下位kビット出力を加算し、その加算結果に前記
    第7レジスタに保持された値を加算するように構成した
    請求項4記載のモンゴメリ法による乗算剰余計算装置。
  8. 【請求項8】 前記第2積和回路は、前記第5レジスタ
    に保持された数の所定ビットの値と前記第6レジスタに
    保持された値とを乗算し、その乗算結果に前記第7レジ
    スタに保持された値を加算し、その加算結果に前記第1
    積和回路の下位kビット出力を加算するように構成した
    請求項4記載のモンゴメリ法による乗算剰余計算装置。
  9. 【請求項9】 前記第2積和回路による演算中に、前記
    第1積和回路によりその次の回の演算を行うように構成
    した請求項4〜8の何れかに記載のモンゴメリ法による
    乗算剰余計算装置。
  10. 【請求項10】 暗号化/復号化のためのモンゴンメリ
    法による乗算剰余計算を行う装置において、乗算演算を
    行う第1積和手段と、モンゴンメリ剰余演算を行う第2
    積和手段とを備え、前記第1積和手段の出力を前記第2
    積和手段の入力とする構成を有し、前記第2積和手段が
    演算を行う間、前記第1積和手段で次の回の演算を行う
    ように、パイプライン処理すべく構成したことを特徴と
    するモンゴンメリ法による乗算剰余計算装置。
  11. 【請求項11】 前記第1積和手段及び第2積和手段に
    あって、各自身の上位出力を各自身の次の回のキャリア
    入力とするようにした請求項10記載のモンゴンメリ法
    による乗算剰余計算装置。
  12. 【請求項12】 前記第1積和手段及び第2積和手段に
    おける演算量が等しい請求項10記載のモンゴンメリ法
    による乗算剰余計算装置。
  13. 【請求項13】 前記第1積和手段及び第2積和手段
    は、2つのkビットの数を乗算する手段と、その乗算結
    果に2つのkビットの数を加算する手段とを有する請求
    項10記載のモンゴンメリ法による乗算剰余計算装置。
JP01468198A 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置 Expired - Fee Related JP3616897B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01468198A JP3616897B2 (ja) 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01468198A JP3616897B2 (ja) 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置

Publications (2)

Publication Number Publication Date
JPH11212456A true JPH11212456A (ja) 1999-08-06
JP3616897B2 JP3616897B2 (ja) 2005-02-02

Family

ID=11867967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01468198A Expired - Fee Related JP3616897B2 (ja) 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置

Country Status (1)

Country Link
JP (1) JP3616897B2 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441036B1 (ko) * 2000-12-19 2004-07-21 인터내셔널 비지네스 머신즈 코포레이션 연산 회로 및 연산 방법
US7024560B2 (en) 2001-01-30 2006-04-04 Renesas Technology Corp. Power-residue calculating unit using Montgomery algorithm
US7171437B2 (en) 2002-09-30 2007-01-30 Renesas Technology Corp. Residue calculating unit immune to power analysis
US7206799B2 (en) 2002-04-19 2007-04-17 Oki Electric Industry Co., Ltd. Modular multiplication method and calculating device
WO2007080652A1 (ja) 2006-01-13 2007-07-19 Fujitsu Limited モンゴメリ法用乗算剰余計算装置
JP2008535011A (ja) * 2005-04-01 2008-08-28 テールズ モンゴメリーのモジュラー乗算を実行する方法及びそのための装置
US7471789B2 (en) 2002-10-24 2008-12-30 Renesas Technology Corp. Encryption circuit achieving higher operation speed
US7480691B2 (en) 2003-02-24 2009-01-20 Fujitsu Limited Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
JP2015068880A (ja) * 2013-09-27 2015-04-13 富士通セミコンダクター株式会社 演算回路および演算方法
WO2016046949A1 (ja) * 2014-09-26 2016-03-31 株式会社日立製作所 楕円曲線スカラー倍演算方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441036B1 (ko) * 2000-12-19 2004-07-21 인터내셔널 비지네스 머신즈 코포레이션 연산 회로 및 연산 방법
US7024560B2 (en) 2001-01-30 2006-04-04 Renesas Technology Corp. Power-residue calculating unit using Montgomery algorithm
US7206799B2 (en) 2002-04-19 2007-04-17 Oki Electric Industry Co., Ltd. Modular multiplication method and calculating device
US7171437B2 (en) 2002-09-30 2007-01-30 Renesas Technology Corp. Residue calculating unit immune to power analysis
US7471789B2 (en) 2002-10-24 2008-12-30 Renesas Technology Corp. Encryption circuit achieving higher operation speed
US7480691B2 (en) 2003-02-24 2009-01-20 Fujitsu Limited Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
JP2008535011A (ja) * 2005-04-01 2008-08-28 テールズ モンゴメリーのモジュラー乗算を実行する方法及びそのための装置
WO2007080652A1 (ja) 2006-01-13 2007-07-19 Fujitsu Limited モンゴメリ法用乗算剰余計算装置
US8352529B2 (en) 2006-01-13 2013-01-08 Fujitsu Limited Modular multiplication calculation apparatus used for montgomery method
JP2015068880A (ja) * 2013-09-27 2015-04-13 富士通セミコンダクター株式会社 演算回路および演算方法
WO2016046949A1 (ja) * 2014-09-26 2016-03-31 株式会社日立製作所 楕円曲線スカラー倍演算方法

Also Published As

Publication number Publication date
JP3616897B2 (ja) 2005-02-02

Similar Documents

Publication Publication Date Title
US5499299A (en) Modular arithmetic operation system
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
JP3784156B2 (ja) モジュラ掛け算方法
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US20110161390A1 (en) Modular multiplication processing apparatus
JP2000132376A (ja) 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
JP3616897B2 (ja) モンゴメリ法による乗算剰余計算装置
US7050579B1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
EP1600852A2 (en) Method and apparatus for calculating a modular inverse
JP3302043B2 (ja) 暗号通信方法及びそのシステム
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
JP3797808B2 (ja) スカラー倍算方法およびその装置
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
KR100330510B1 (ko) 고속의 모듈라 멱승 연산기
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
JP3591857B2 (ja) 擬似乱数生成方法及び装置、通信方法及び装置
Rao et al. A novel modular multiplication algorithm and its application to RSA decryption
KR100406138B1 (ko) 엔티알유 암/복호화 장치
US20030072442A1 (en) Cisponentiation method, software, and device for exponentiation
Al-Tuwaijry et al. A high speed RSA processor
Mohammadi et al. A fast and secure RSA public key cryptosystem
JP3518680B2 (ja) 素数生成装置
CN114417378A (zh) 基于梅森数的密钥交换或公钥密码加密优化方法及系统
JP3999554B2 (ja) 乗算剰余演算方法及び演算装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040810

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040930

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: 20041026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041026

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees