JPH0720778A - 剰余計算装置、テーブル作成装置および乗算剰余計算装置 - Google Patents
剰余計算装置、テーブル作成装置および乗算剰余計算装置Info
- Publication number
- JPH0720778A JPH0720778A JP5164870A JP16487093A JPH0720778A JP H0720778 A JPH0720778 A JP H0720778A JP 5164870 A JP5164870 A JP 5164870A JP 16487093 A JP16487093 A JP 16487093A JP H0720778 A JPH0720778 A JP H0720778A
- Authority
- JP
- Japan
- Prior art keywords
- remainder
- modulus
- register
- calculation
- lower predetermined
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】剰余計算の演算処理を簡略化して、高速処理を
実現する。 【構成】入力レジスタ1の下位所定ビットに対応して剰
余の法Nの倍数が格納された倍数テーブル5を有し、入
力レジスタ1の被剰余数Tの下位所定ビットに基づいて
倍数テーブル5を検索することにより、前記Tの下位所
定ビットに対応する剰余の法Nの倍数を求める。加算器
3は、倍数テーブル5の索引により求められる剰余の法
Nの倍数と入力レジスタ1の内容とを加算する。加算器
3の所定回数nの加算について、加算器3の加算結果の
上位所定ビットで入力レジスタ1の内容を更新する。補
正装置4は、加算器3の加算結果として得られるtに対
して補正処理を施す。
実現する。 【構成】入力レジスタ1の下位所定ビットに対応して剰
余の法Nの倍数が格納された倍数テーブル5を有し、入
力レジスタ1の被剰余数Tの下位所定ビットに基づいて
倍数テーブル5を検索することにより、前記Tの下位所
定ビットに対応する剰余の法Nの倍数を求める。加算器
3は、倍数テーブル5の索引により求められる剰余の法
Nの倍数と入力レジスタ1の内容とを加算する。加算器
3の所定回数nの加算について、加算器3の加算結果の
上位所定ビットで入力レジスタ1の内容を更新する。補
正装置4は、加算器3の加算結果として得られるtに対
して補正処理を施す。
Description
【0001】
【産業上の利用分野】本発明は、例えば公開鍵暗号系に
おけるRSA暗号処理における剰余演算等に好適な剰余
計算装置に係り、特に剰余計算の一手法であるモンゴメ
リのアルゴリズム(Modulo Multiplication Without Tr
ial Division, Peter L. Montgomery,Mathematics of C
omputation, Volume 44, Number 170, April 1985 pp.
519〜528参照)を用いて、高速に剰余計算を行う剰余計
算装置および乗算剰余計算装置ならびに剰余計算に使用
するための倍数テーブルを作成するテーブル作成装置に
関する。
おけるRSA暗号処理における剰余演算等に好適な剰余
計算装置に係り、特に剰余計算の一手法であるモンゴメ
リのアルゴリズム(Modulo Multiplication Without Tr
ial Division, Peter L. Montgomery,Mathematics of C
omputation, Volume 44, Number 170, April 1985 pp.
519〜528参照)を用いて、高速に剰余計算を行う剰余計
算装置および乗算剰余計算装置ならびに剰余計算に使用
するための倍数テーブルを作成するテーブル作成装置に
関する。
【0002】
【従来の技術】近年のコンピュータネットワークの発達
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受する機会が急速に増加してきている。さらに、これら
を利用して、オンラインショッピングなどのサービスも
提供されつつある。しかし、それにともなって、ネット
ワーク上の電子化されたデータを盗聴する、改ざんす
る、他人になりすましてサービスを受けるなどの問題も
指摘されている。特に無線を利用したネットワークにお
いては、傍受が容易なためにこれらを防止する対策が望
まれている。
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受する機会が急速に増加してきている。さらに、これら
を利用して、オンラインショッピングなどのサービスも
提供されつつある。しかし、それにともなって、ネット
ワーク上の電子化されたデータを盗聴する、改ざんす
る、他人になりすましてサービスを受けるなどの問題も
指摘されている。特に無線を利用したネットワークにお
いては、傍受が容易なためにこれらを防止する対策が望
まれている。
【0003】これらの問題に対して暗号技術(encryptio
n technology)を応用した暗号化電子メールや利用者認
証システムが提案され、種々のネットワークにも導入さ
れつつある。この意味でコンピュータネットワークにお
いては暗号化は必須の技術であるといえる。このような
暗号技術の中の1つにディジタル署名すなわち認証に適
した公開鍵暗号方式(public key cryptosystem)がある
が、暗号化/復号に大量の処理が必要なため高速化が望
まれており、様々な高速化アルゴリズムも発表されてい
る。
n technology)を応用した暗号化電子メールや利用者認
証システムが提案され、種々のネットワークにも導入さ
れつつある。この意味でコンピュータネットワークにお
いては暗号化は必須の技術であるといえる。このような
暗号技術の中の1つにディジタル署名すなわち認証に適
した公開鍵暗号方式(public key cryptosystem)がある
が、暗号化/復号に大量の処理が必要なため高速化が望
まれており、様々な高速化アルゴリズムも発表されてい
る。
【0004】暗号化方式は、大別すると秘密鍵暗号系と
公開鍵暗号系の2つに分類することができる。秘密鍵暗
号系は、送信者と受信者が同じ暗号鍵を持つことにより
暗号通信を行う方式である。すなわち、秘密暗号系で
は、あるメッセージを秘密の暗号鍵に基づいて暗号化し
て相手に送り、受け手はこの暗号鍵を用いて暗号を復号
しもとのメッセージに戻して情報を入手する。
公開鍵暗号系の2つに分類することができる。秘密鍵暗
号系は、送信者と受信者が同じ暗号鍵を持つことにより
暗号通信を行う方式である。すなわち、秘密暗号系で
は、あるメッセージを秘密の暗号鍵に基づいて暗号化し
て相手に送り、受け手はこの暗号鍵を用いて暗号を復号
しもとのメッセージに戻して情報を入手する。
【0005】公開鍵暗号系は、送信者は公開されている
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号するこ
とで通信を行う方式である。すなわち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号は秘密鍵でのみ復号することができる。
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号するこ
とで通信を行う方式である。すなわち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号は秘密鍵でのみ復号することができる。
【0006】秘密鍵暗号系では、個人が秘密に保管しな
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合n(n−1)
/2個である。また、はじめて通信する相手に対して
は、何らかの方法で秘密鍵の配送が必要であるという欠
点がある。この問題を避けるために、大規模なネットワ
ークでは鍵管理センタを設置し、センタとの間の秘密鍵
のみを保管し、暗号通信を行う場合はセンタから送信相
手との秘密鍵を得る方法が用いられる。この場合秘密鍵
の総数はnとなる。
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合n(n−1)
/2個である。また、はじめて通信する相手に対して
は、何らかの方法で秘密鍵の配送が必要であるという欠
点がある。この問題を避けるために、大規模なネットワ
ークでは鍵管理センタを設置し、センタとの間の秘密鍵
のみを保管し、暗号通信を行う場合はセンタから送信相
手との秘密鍵を得る方法が用いられる。この場合秘密鍵
の総数はnとなる。
【0007】一方、公開鍵暗号系では、個人が秘密に保
管する鍵は自分の秘密鍵のみであり、必要な総秘密件数
もn人のネットワークの場合n個である。また、はじめ
て通信する相手に対しては、公開鍵の配送を行えばよ
く、鍵管理センタを設置して、ユーザの公開鍵をn個公
開簿に登録し、センタから送信相手の公開鍵を得る方法
が用いられる。この場合、センタは公開鍵の改ざんを防
ぐだけで、秘密に保管する必要がない。但し、公開鍵方
式は秘密鍵方式に比べて鍵のビット数が大きいため保管
に要するファイルサイズは大きくなる。
管する鍵は自分の秘密鍵のみであり、必要な総秘密件数
もn人のネットワークの場合n個である。また、はじめ
て通信する相手に対しては、公開鍵の配送を行えばよ
く、鍵管理センタを設置して、ユーザの公開鍵をn個公
開簿に登録し、センタから送信相手の公開鍵を得る方法
が用いられる。この場合、センタは公開鍵の改ざんを防
ぐだけで、秘密に保管する必要がない。但し、公開鍵方
式は秘密鍵方式に比べて鍵のビット数が大きいため保管
に要するファイルサイズは大きくなる。
【0008】また、認証の場合、秘密暗号系では、例え
ば送信するメッセージを秘密鍵で圧縮変換し、送信文に
付加して送り、受信側では同様に圧縮変換して比較する
方式がとられている。しかし、送受信が同じ鍵であるた
め受信者は認証データを偽造することができる。これに
対して、公開鍵暗号系では、秘密鍵で暗号化することが
できるのは本人だけであるという特徴を利用する。送信
者はメッセージを圧縮変換して秘密鍵で暗号化し、送信
文に付加して送り、受信者は送信者の公開鍵で付加され
たデータを復号し、同様に圧縮変換したものと比較する
方式がとられている。この場合は受信者は不正ができな
い。
ば送信するメッセージを秘密鍵で圧縮変換し、送信文に
付加して送り、受信側では同様に圧縮変換して比較する
方式がとられている。しかし、送受信が同じ鍵であるた
め受信者は認証データを偽造することができる。これに
対して、公開鍵暗号系では、秘密鍵で暗号化することが
できるのは本人だけであるという特徴を利用する。送信
者はメッセージを圧縮変換して秘密鍵で暗号化し、送信
文に付加して送り、受信者は送信者の公開鍵で付加され
たデータを復号し、同様に圧縮変換したものと比較する
方式がとられている。この場合は受信者は不正ができな
い。
【0009】このように、認証系では公開鍵暗号系の技
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号に大量の処理が必要であるという大
きな欠点があるため、一般には処理の速い秘密暗号系を
メッセージの暗号化に、公開鍵暗号系は認証用にという
ように組み合わせて用いられる場合が多い。公開暗号系
の中で、現在最も有力なものが1977年にリヴェスト
(Rivest)、シャミア(Shamir)およびエイドルマン(Adlma
n)の3人によって発明されたRSA暗号である。RSA
暗号の基本原理は次のようなものである。
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号に大量の処理が必要であるという大
きな欠点があるため、一般には処理の速い秘密暗号系を
メッセージの暗号化に、公開鍵暗号系は認証用にという
ように組み合わせて用いられる場合が多い。公開暗号系
の中で、現在最も有力なものが1977年にリヴェスト
(Rivest)、シャミア(Shamir)およびエイドルマン(Adlma
n)の3人によって発明されたRSA暗号である。RSA
暗号の基本原理は次のようなものである。
【0010】〈RSAの基本アルゴリズム〉暗号鍵
(e,N)と対応する復号鍵(d,N)で、eとNは公
開鍵であり、dは秘密鍵である。平文をM、暗号文をC
とすると、暗号化Eと複合化Dのアルゴリズムは次のよ
うにあらわされる。 C=E(M)=MemodN M=D(C)=CdmodN 但し、d・e=1modLCM{(p−1),(q−
1)} N=p・q LCM:最小公倍数[lowest common multiple];p、q
は大きな素数 である。
(e,N)と対応する復号鍵(d,N)で、eとNは公
開鍵であり、dは秘密鍵である。平文をM、暗号文をC
とすると、暗号化Eと複合化Dのアルゴリズムは次のよ
うにあらわされる。 C=E(M)=MemodN M=D(C)=CdmodN 但し、d・e=1modLCM{(p−1),(q−
1)} N=p・q LCM:最小公倍数[lowest common multiple];p、q
は大きな素数 である。
【0011】通常、e、d、N、Mなどは512ビット
程度の大きな整数が用いられるので、高速指数計算法を
使用しても1回のRSA演算で平均770回程度の乗算
と剰余演算を行わなければならない。特に剰余演算は、
近似法や剰余テーブル方式、モンゴメリのアルゴリズム
等、多くの高速化手法が提案されている。このような、
RSA暗号に代表される公開鍵暗号系の多くで利用され
る、べき乗剰余アルゴリズムを高速に処理するために
は、1回あたりの剰余アルゴリズムの高速化が要求され
る。
程度の大きな整数が用いられるので、高速指数計算法を
使用しても1回のRSA演算で平均770回程度の乗算
と剰余演算を行わなければならない。特に剰余演算は、
近似法や剰余テーブル方式、モンゴメリのアルゴリズム
等、多くの高速化手法が提案されている。このような、
RSA暗号に代表される公開鍵暗号系の多くで利用され
る、べき乗剰余アルゴリズムを高速に処理するために
は、1回あたりの剰余アルゴリズムの高速化が要求され
る。
【0012】この剰余演算の高速化の実現の一方法であ
るモンゴメリのアルゴリズムについて説明する。 〈モンゴメリのアルゴリズム〉モンゴメリのアルゴリズ
ムは、剰余の法N(N>1)と、剰余の法Nと互いに素
である基数R(R>N)を用いると、被剰余数TからT
R-1modNの計算が基数Rによる除算のみで行えること
を利用して、Nによる除算を用いることなく剰余計算を
行うアルゴリズムである。ここで、N、N′、R、R-1
およびTは整数であり、被剰余数Tは0≦T<RN、R
-1は剰余の法Nの上での基数Rの逆数であり、RR-1−
NN′=1(0≦R-1<N,0≦N′<R)の関係を満
たす。
るモンゴメリのアルゴリズムについて説明する。 〈モンゴメリのアルゴリズム〉モンゴメリのアルゴリズ
ムは、剰余の法N(N>1)と、剰余の法Nと互いに素
である基数R(R>N)を用いると、被剰余数TからT
R-1modNの計算が基数Rによる除算のみで行えること
を利用して、Nによる除算を用いることなく剰余計算を
行うアルゴリズムである。ここで、N、N′、R、R-1
およびTは整数であり、被剰余数Tは0≦T<RN、R
-1は剰余の法Nの上での基数Rの逆数であり、RR-1−
NN′=1(0≦R-1<N,0≦N′<R)の関係を満
たす。
【0013】さらにこの基数Rに2のベキ乗数を使用し
た場合、基数Rによる除算をシフト操作に置き換えるこ
とができるため、T→TR-1modNの計算の高速処理が
可能となる。次にアルゴリズム1として、T→TR-1mo
dNのアルゴリズムREDC(T)を示す。但し、アル
ゴリズム1において(T+mN)/Rは必ず割り切れ
る。
た場合、基数Rによる除算をシフト操作に置き換えるこ
とができるため、T→TR-1modNの計算の高速処理が
可能となる。次にアルゴリズム1として、T→TR-1mo
dNのアルゴリズムREDC(T)を示す。但し、アル
ゴリズム1において(T+mN)/Rは必ず割り切れ
る。
【0014】〈アルゴリズム1〉T→TR-1modNのア
ルゴリズムREDC(T)は次のようにあらわされる。 m=(TmodR)N′modR t=(T+mN)/R if t<N then return t else return t−N すなわち、 REDC(T)=t (t<N) =t−N (t≧N) である。
ルゴリズムREDC(T)は次のようにあらわされる。 m=(TmodR)N′modR t=(T+mN)/R if t<N then return t else return t−N すなわち、 REDC(T)=t (t<N) =t−N (t≧N) である。
【0015】1回のREDCでは、剰余TmodNではな
くTR-1modNが求められるだけである。そこで、剰余
TmodNを求めるためには、次に示すようにREDC
(T)と予め求めておいたR2modNとの積で、再びRE
DCを行えばよい。 REDC(REDC(T)*(R2modN)) =(TR-1modN)(R2modN)R-1modN =TR-1*R2*R-1modN =TmodN このようにして、剰余TmodNを求めることができる。
くTR-1modNが求められるだけである。そこで、剰余
TmodNを求めるためには、次に示すようにREDC
(T)と予め求めておいたR2modNとの積で、再びRE
DCを行えばよい。 REDC(REDC(T)*(R2modN)) =(TR-1modN)(R2modN)R-1modN =TR-1*R2*R-1modN =TmodN このようにして、剰余TmodNを求めることができる。
【0016】〈REDCの多重精度計算への拡張〉次
に、剰余の法Nあるいは基数Rが多倍長すなわち多重精
度の場合について、REDCのアルゴリズムを拡張す
る。剰余の法Nや基数Rが多重精度の場合、REDCの
(TmodR)N′やmNの計算は、多重精度×多重精度
の処理となり汎用の計算機では非常に大きな処理量と処
理時間が必要となる。そこで、この部分を多重精度×単
精度の処理で行えるように拡張したアルゴリズム2を示
す。
に、剰余の法Nあるいは基数Rが多倍長すなわち多重精
度の場合について、REDCのアルゴリズムを拡張す
る。剰余の法Nや基数Rが多重精度の場合、REDCの
(TmodR)N′やmNの計算は、多重精度×多重精度
の処理となり汎用の計算機では非常に大きな処理量と処
理時間が必要となる。そこで、この部分を多重精度×単
精度の処理で行えるように拡張したアルゴリズム2を示
す。
【0017】〈アルゴリズム2〉REDCを多重精度へ
拡張したアルゴリズムは次に示すようになる。被剰余数
Tがb進数でT=(T2n-1T2n-2…T0)b、R=bn、
b=2kとあらわされる場合、次に示すi=0〜n−1
の繰り返し処理によりTR-1modNを単倍長と同様にし
て求めることができる。
拡張したアルゴリズムは次に示すようになる。被剰余数
Tがb進数でT=(T2n-1T2n-2…T0)b、R=bn、
b=2kとあらわされる場合、次に示すi=0〜n−1
の繰り返し処理によりTR-1modNを単倍長と同様にし
て求めることができる。
【0018】 このようにして得られるTR-1modNと、上述したよう
に予め求めておいたR2modNとの積で再びREDCを行
うことにより求める剰余TmodNを求めることができ
る。
に予め求めておいたR2modNとの積で再びREDCを行
うことにより求める剰余TmodNを求めることができ
る。
【0019】
【発明が解決しようとする課題】上述したモンゴメリの
アルゴリズムは、基数Rを2のべき乗数にすることによ
り、処理時間のかかる割り算を高速なシフト処理に置き
換えることが可能であるため剰余計算を高速で行うこと
ができる。しかし、このモンゴメリのアルゴリズムを用
いた演算を高速で行おうとすると、多重精度の処理は、
多重精度×単精度の乗算処理が必要となるため、大量の
処理が必要となる。
アルゴリズムは、基数Rを2のべき乗数にすることによ
り、処理時間のかかる割り算を高速なシフト処理に置き
換えることが可能であるため剰余計算を高速で行うこと
ができる。しかし、このモンゴメリのアルゴリズムを用
いた演算を高速で行おうとすると、多重精度の処理は、
多重精度×単精度の乗算処理が必要となるため、大量の
処理が必要となる。
【0020】また、べき乗剰余などの演算をこのアルゴ
リズムを用いて行う場合、剰余演算が何度も繰り返され
ることになるため、剰余演算の処理回数の多い部分をで
きるだけ単純化することで全体の計算量を削減し、処理
速度の向上を図る必要がある。また、モンゴメリ法特有
のN′およびR2modN等の事前に計算しておかなければ
ならないパラメータの計算が前処理として必要である。
特に、N′は、拡張ユークリッドの互除法を使用するた
め、R2modNよりも多くの処理時間を必要とする。
リズムを用いて行う場合、剰余演算が何度も繰り返され
ることになるため、剰余演算の処理回数の多い部分をで
きるだけ単純化することで全体の計算量を削減し、処理
速度の向上を図る必要がある。また、モンゴメリ法特有
のN′およびR2modN等の事前に計算しておかなければ
ならないパラメータの計算が前処理として必要である。
特に、N′は、拡張ユークリッドの互除法を使用するた
め、R2modNよりも多くの処理時間を必要とする。
【0021】したがって、本発明は、剰余計算に際し多
重の繰り返し演算を必要とする倍数演算部分に着目して
剰余計算の演算処理を簡略化し、高速処理を実現し得る
剰余計算装置および乗算剰余計算装置を提供することを
目的としている。本発明の他の目的は、本発明による剰
余計算装置および乗算剰余計算装置に用いるための倍数
テーブルを容易に作成することのできるテーブル作成装
置を提供することにある。
重の繰り返し演算を必要とする倍数演算部分に着目して
剰余計算の演算処理を簡略化し、高速処理を実現し得る
剰余計算装置および乗算剰余計算装置を提供することを
目的としている。本発明の他の目的は、本発明による剰
余計算装置および乗算剰余計算装置に用いるための倍数
テーブルを容易に作成することのできるテーブル作成装
置を提供することにある。
【0022】
【課題を解決するための手段】本発明は、上記目的を達
成するために、多重の繰り返し演算を必要とする倍数演
算部分にテーブルを用い、演算結果をテーブル検索によ
り得るようにして、演算処理を簡略化して高速化するこ
とにより、剰余計算を高速処理し得る次のような構成の
剰余計算装置とした。
成するために、多重の繰り返し演算を必要とする倍数演
算部分にテーブルを用い、演算結果をテーブル検索によ
り得るようにして、演算処理を簡略化して高速化するこ
とにより、剰余計算を高速処理し得る次のような構成の
剰余計算装置とした。
【0023】図1は、本発明の基本となる剰余計算装置
の原理を示している。図1に示す剰余計算装置は、入力
レジスタ1、倍数算定部2、加算器3および補正装置4
を有している。入力レジスタ1は入力される被剰余数T
を保持する。倍数算定部2は、入力レジスタ1の下位所
定ビットに対応して剰余の法Nの倍数が格納された倍数
テーブル5を有し、入力レジスタ1の被剰余数Tの下位
所定ビットに基づいて倍数テーブル5を検索することに
より、前記Tの下位所定ビットに対応する剰余の法Nの
倍数を求める。加算器3は、倍数算定部2で求められる
剰余の法Nの倍数と入力レジスタ1の内容とを加算す
る。この加算器3の所定回数nの加算について、加算器
3の加算結果の上位所定ビットで入力レジスタ1の内容
を更新する。補正装置4は、加算器3の加算結果として
得られるtに対して補正処理を施す。
の原理を示している。図1に示す剰余計算装置は、入力
レジスタ1、倍数算定部2、加算器3および補正装置4
を有している。入力レジスタ1は入力される被剰余数T
を保持する。倍数算定部2は、入力レジスタ1の下位所
定ビットに対応して剰余の法Nの倍数が格納された倍数
テーブル5を有し、入力レジスタ1の被剰余数Tの下位
所定ビットに基づいて倍数テーブル5を検索することに
より、前記Tの下位所定ビットに対応する剰余の法Nの
倍数を求める。加算器3は、倍数算定部2で求められる
剰余の法Nの倍数と入力レジスタ1の内容とを加算す
る。この加算器3の所定回数nの加算について、加算器
3の加算結果の上位所定ビットで入力レジスタ1の内容
を更新する。補正装置4は、加算器3の加算結果として
得られるtに対して補正処理を施す。
【0024】このような剰余計算装置は、n回の繰り返
し演算の必要な倍数算定部2に倍数テーブル5を用いて
高速に倍数を求めることができるので、剰余計算を高速
に処理することができる。図1の剰余計算装置において
は、具体的には、先に述べたモンゴメリのアルゴリズム
における被剰余数Tが入力レジスタ1に格納され、倍数
算定部2において剰余の法Nの倍数m′N(但し、m′
=(Tmodb)N′modb、ここでN′およびRは整数で
あり、R=bn、b=2kとする)が格納された倍数テー
ブル5を検索して、前記被剰余数Tの下位kビットに対
応する剰余の法Nの倍数m′Nが求められる。この倍数
m′Nと前記被剰余数Tが加算され、その加算結果によ
り入力レジスタ1の内容が更新される。このような処理
がn回繰り返され、加算器3の出力にt=(T+mN)
/Rが得られる。この加算器3の出力tは、補正装置4
に与えられ、t<Nの場合はそのままt=REDC
(T)、t≧Nの場合はt−N=REDC(T)とし
て、TR-1modNが得られる。
し演算の必要な倍数算定部2に倍数テーブル5を用いて
高速に倍数を求めることができるので、剰余計算を高速
に処理することができる。図1の剰余計算装置において
は、具体的には、先に述べたモンゴメリのアルゴリズム
における被剰余数Tが入力レジスタ1に格納され、倍数
算定部2において剰余の法Nの倍数m′N(但し、m′
=(Tmodb)N′modb、ここでN′およびRは整数で
あり、R=bn、b=2kとする)が格納された倍数テー
ブル5を検索して、前記被剰余数Tの下位kビットに対
応する剰余の法Nの倍数m′Nが求められる。この倍数
m′Nと前記被剰余数Tが加算され、その加算結果によ
り入力レジスタ1の内容が更新される。このような処理
がn回繰り返され、加算器3の出力にt=(T+mN)
/Rが得られる。この加算器3の出力tは、補正装置4
に与えられ、t<Nの場合はそのままt=REDC
(T)、t≧Nの場合はt−N=REDC(T)とし
て、TR-1modNが得られる。
【0025】上述の倍数テーブル5を作成するテーブル
作成装置は、繰り返し加算部、補数算定部およびテーブ
ル書き込み部を有する。繰り返し加算部は剰余の法Nを
繰り返し加算する。補数算定部は前記繰り返し加算部で
求められる各加算結果の値の下位bビットの2の補数を
求める。テーブル書き込み部は、テーブルの前記補数算
定部で得られる各補数値に対応するテーブルアドレスに
前記各加算結果をそれぞれ格納する。このテーブル作成
装置は、例えば同様の機能をソフトウェアにより実現す
るコンピュータにより構成することもできる。
作成装置は、繰り返し加算部、補数算定部およびテーブ
ル書き込み部を有する。繰り返し加算部は剰余の法Nを
繰り返し加算する。補数算定部は前記繰り返し加算部で
求められる各加算結果の値の下位bビットの2の補数を
求める。テーブル書き込み部は、テーブルの前記補数算
定部で得られる各補数値に対応するテーブルアドレスに
前記各加算結果をそれぞれ格納する。このテーブル作成
装置は、例えば同様の機能をソフトウェアにより実現す
るコンピュータにより構成することもできる。
【0026】このようなテーブル作成装置により、計算
処理に多くの時間を必要とするN′を求めることなく記
憶装置上に倍数テーブルを作成することができる。ま
た、上述の倍数テーブル5は、多量のデータにより構成
されることになり、倍数テーブル5を構成する記憶装置
に多くの記憶容量を必要とするので、倍数テーブル5を
用いる倍数算定部2に代えて、被剰余数Tの下位所定ビ
ットに対応させて倍数情報m′を格納する倍数情報テー
ブルを用い、この倍数情報テーブルを前記被剰余数Tの
下位所定ビットで検索して、それに対応する倍数情報
m′を求める倍数情報算定部と、剰余の法Nを格納する
剰余の法レジスタと、前記倍数情報算定部で得られる倍
数情報m′と前記剰余の法レジスタから得られる剰余の
法Nとを乗算する乗算器とを有する倍数算定部を設ける
構成としてもよい。この場合、前記倍数算定部により前
記被剰余数の下位所定ビットに対応する前記剰余の法N
の倍数m′Nを求める。この場合、計算速度は、倍数テ
ーブル5を用いる場合よりも遅くなるが、倍数情報テー
ブルは倍数テーブル5に比して少ない記憶容量で済む。
処理に多くの時間を必要とするN′を求めることなく記
憶装置上に倍数テーブルを作成することができる。ま
た、上述の倍数テーブル5は、多量のデータにより構成
されることになり、倍数テーブル5を構成する記憶装置
に多くの記憶容量を必要とするので、倍数テーブル5を
用いる倍数算定部2に代えて、被剰余数Tの下位所定ビ
ットに対応させて倍数情報m′を格納する倍数情報テー
ブルを用い、この倍数情報テーブルを前記被剰余数Tの
下位所定ビットで検索して、それに対応する倍数情報
m′を求める倍数情報算定部と、剰余の法Nを格納する
剰余の法レジスタと、前記倍数情報算定部で得られる倍
数情報m′と前記剰余の法レジスタから得られる剰余の
法Nとを乗算する乗算器とを有する倍数算定部を設ける
構成としてもよい。この場合、前記倍数算定部により前
記被剰余数の下位所定ビットに対応する前記剰余の法N
の倍数m′Nを求める。この場合、計算速度は、倍数テ
ーブル5を用いる場合よりも遅くなるが、倍数情報テー
ブルは倍数テーブル5に比して少ない記憶容量で済む。
【0027】さらに、乗算剰余計算装置は、上述した剰
余計算装置と同様の構成に加えて、被乗数に対し所定ビ
ット毎に乗数との乗算を行い行う分割乗算装置を設け、
この分割乗算装置の出力を上述した剰余計算装置の入力
レジスタに与えるとともに、前記剰余計算装置の加算器
の出力を前記分割乗算装置の乗算結果に加算する構成と
して、乗算剰余の計算を高速に行う。
余計算装置と同様の構成に加えて、被乗数に対し所定ビ
ット毎に乗数との乗算を行い行う分割乗算装置を設け、
この分割乗算装置の出力を上述した剰余計算装置の入力
レジスタに与えるとともに、前記剰余計算装置の加算器
の出力を前記分割乗算装置の乗算結果に加算する構成と
して、乗算剰余の計算を高速に行う。
【0028】
【作用】本発明による剰余計算装置では、剰余計算にお
いて、ループによる多数回の繰り返し演算が必要な倍数
算定部2に、入力レジスタ1の保持値の下位所定ビット
に基づくテーブル検索を用いて高速に処理することによ
り、高速剰余計算が行われる。特に、倍数算定部2に倍
数テーブル5を用いて、倍数算定部2の機能をすべてテ
ーブル検索により処理すれば、処理速度が顕著に向上す
る。
いて、ループによる多数回の繰り返し演算が必要な倍数
算定部2に、入力レジスタ1の保持値の下位所定ビット
に基づくテーブル検索を用いて高速に処理することによ
り、高速剰余計算が行われる。特に、倍数算定部2に倍
数テーブル5を用いて、倍数算定部2の機能をすべてテ
ーブル検索により処理すれば、処理速度が顕著に向上す
る。
【0029】本発明によるテーブル作成装置では、倍数
算定部2に用いる倍数テーブル5を作成するのに、剰余
の法を繰り返し加算し、加算結果の下位所定ビットの2
の補数を求め、その2の補数値に対応するアドレスに前
記加算結果を格納することにより、煩雑な計算を要する
パラメータN′を求めることなく倍数テーブル5を作成
することができる。
算定部2に用いる倍数テーブル5を作成するのに、剰余
の法を繰り返し加算し、加算結果の下位所定ビットの2
の補数を求め、その2の補数値に対応するアドレスに前
記加算結果を格納することにより、煩雑な計算を要する
パラメータN′を求めることなく倍数テーブル5を作成
することができる。
【0030】本発明による乗算剰余計算装置では、剰余
計算における繰り返し処理の部分にテーブルを用いて、
効率よく剰余計算処理を高速化し、乗算剰余計算を処理
速度を向上させる。
計算における繰り返し処理の部分にテーブルを用いて、
効率よく剰余計算処理を高速化し、乗算剰余計算を処理
速度を向上させる。
【0031】
〈実施例1〉本発明に係る剰余計算装置の第1の実施例
の説明に先立ち、本発明における剰余計算処理の原理を
詳細に説明する。上述したモンゴメリのアルゴリズムを
利用して、ハードウェアにより剰余計算装置を構成する
と、一般的には図8のようになると考えられる。図8の
構成は、先に述べた多重精度のアルゴリズムをそのまま
ハードウェアで実現したものである。
の説明に先立ち、本発明における剰余計算処理の原理を
詳細に説明する。上述したモンゴメリのアルゴリズムを
利用して、ハードウェアにより剰余計算装置を構成する
と、一般的には図8のようになると考えられる。図8の
構成は、先に述べた多重精度のアルゴリズムをそのまま
ハードウェアで実現したものである。
【0032】図8の剰余計算装置は、先に述べた通り、
R=bn、b=2kとして、T→TR -1modNの処理を行
うものとし、Tレジスタ11、Nレジスタ12、N′レ
ジスタ13、第1の乗算器14、第2の乗算器15、第
1の加算器16、第1のレジスタ17、−Nレジスタ1
8、第2の加算器19、第2のレジスタ20およびセレ
クタ21を具備する。
R=bn、b=2kとして、T→TR -1modNの処理を行
うものとし、Tレジスタ11、Nレジスタ12、N′レ
ジスタ13、第1の乗算器14、第2の乗算器15、第
1の加算器16、第1のレジスタ17、−Nレジスタ1
8、第2の加算器19、第2のレジスタ20およびセレ
クタ21を具備する。
【0033】第1のレジスタ17、−Nレジスタ18、
第2の加算器19、第2のレジスタ20およびセレクタ
21は、補正装置22を構成する。N′レジスタ13お
よび第2の乗算器15からなる部分は倍数情報算定部3
1を構成し、この倍数情報算定部31、Nレジスタ12
および第1の乗算器14からなる部分は倍数算定部32
を構成する。
第2の加算器19、第2のレジスタ20およびセレクタ
21は、補正装置22を構成する。N′レジスタ13お
よび第2の乗算器15からなる部分は倍数情報算定部3
1を構成し、この倍数情報算定部31、Nレジスタ12
および第1の乗算器14からなる部分は倍数算定部32
を構成する。
【0034】ここで、剰余の法Nをaビット、入力値を
a+nkビットと仮定して、上述の剰余計算装置につい
て説明する。Tレジスタ11は、図1における入力レジ
スタ1に相当し、入力される被剰余数Tを保持する。N
レジスタ12およびN′レジスタ13は、共にaビット
のレジスタであり、与えられる剰余の法Nおよび先に述
べたN′をそれぞれ保持する。第2の乗算器15は、T
レジスタ11の保持値の下位kビットとN′レジスタ1
3の下位kビットとを乗算する。第1の乗算器14は、
Nレジスタ12の保持値と第2の乗算器15の乗算結果
の下位kビットとを乗算する。
a+nkビットと仮定して、上述の剰余計算装置につい
て説明する。Tレジスタ11は、図1における入力レジ
スタ1に相当し、入力される被剰余数Tを保持する。N
レジスタ12およびN′レジスタ13は、共にaビット
のレジスタであり、与えられる剰余の法Nおよび先に述
べたN′をそれぞれ保持する。第2の乗算器15は、T
レジスタ11の保持値の下位kビットとN′レジスタ1
3の下位kビットとを乗算する。第1の乗算器14は、
Nレジスタ12の保持値と第2の乗算器15の乗算結果
の下位kビットとを乗算する。
【0035】第1の加算器16は、Tレジスタ11の保
持値(a+nkビット)と第1の乗算器14の乗算結果
(a+kビット)とを加算する。第1の加算器16の加
算結果(a+nk+1ビット)の上位a+(n−1)k
+1ビットはTレジスタ11の内容を更新してn回のル
ープ処理を行うのに用いられる。第1のレジスタ17
は、第1の加算器16の加算結果の下位kビットを超え
る部分の下位a+1ビットを保持し、−Nレジスタ18
は、予め与えられる剰余の法Nに基づく−Nの値(a+
1ビット)を保持する。第2の加算器19は、第1のレ
ジスタ17の保持値と−Nレジスタ18の保持値とを加
算して、第2のレジスタ20に保持させる。セレクタ2
1は、第2のレジスタ20のa+1ビットの保持値の最
上位の1ビット(符号ビットに相当する)の値を条件と
して動作し、該最上位ビットが“1”の場合は第1のレ
ジスタ17の保持値を出力し、“0”の場合は第2のレ
ジスタ20の保持値を出力する。
持値(a+nkビット)と第1の乗算器14の乗算結果
(a+kビット)とを加算する。第1の加算器16の加
算結果(a+nk+1ビット)の上位a+(n−1)k
+1ビットはTレジスタ11の内容を更新してn回のル
ープ処理を行うのに用いられる。第1のレジスタ17
は、第1の加算器16の加算結果の下位kビットを超え
る部分の下位a+1ビットを保持し、−Nレジスタ18
は、予め与えられる剰余の法Nに基づく−Nの値(a+
1ビット)を保持する。第2の加算器19は、第1のレ
ジスタ17の保持値と−Nレジスタ18の保持値とを加
算して、第2のレジスタ20に保持させる。セレクタ2
1は、第2のレジスタ20のa+1ビットの保持値の最
上位の1ビット(符号ビットに相当する)の値を条件と
して動作し、該最上位ビットが“1”の場合は第1のレ
ジスタ17の保持値を出力し、“0”の場合は第2のレ
ジスタ20の保持値を出力する。
【0036】すなわち、剰余計算を行う場合、前処理と
して事前に計算して求めておいたN、N′および−N
を、Nレジスタ、N′レジスタおよび−Nレジスタにそ
れぞれ設定する。入力被剰余数Tは、まずTレジスタ1
1に与えられる。このTレジスタ11の保持値の下位k
ビットとN′レジスタ13の保持値の下位kビットとを
第2の乗算器15に入力する。第2の乗算器15の乗算
結果の下位kビットとNレジスタ12の保持値を第1の
乗算器14に入力し、その乗算結果とTレジスタ11の
保持値とを第1の加算器16に入力する。Tレジスタ1
1と第1の加算器16との間のループ処理の回数がn未
満の場合は、第1の加算器16の加算結果の上位a+
(n−1)k+1ビットを再びTレジスタ11に入力す
る。ループ処理の回数がnに達した場合は、第1の加算
器16の加算結果の下位k+1ビット目から下位a+k
+2ビット目までのa+1ビットを取り出し、補正装置
22の第1のレジスタ17に入力する。
して事前に計算して求めておいたN、N′および−N
を、Nレジスタ、N′レジスタおよび−Nレジスタにそ
れぞれ設定する。入力被剰余数Tは、まずTレジスタ1
1に与えられる。このTレジスタ11の保持値の下位k
ビットとN′レジスタ13の保持値の下位kビットとを
第2の乗算器15に入力する。第2の乗算器15の乗算
結果の下位kビットとNレジスタ12の保持値を第1の
乗算器14に入力し、その乗算結果とTレジスタ11の
保持値とを第1の加算器16に入力する。Tレジスタ1
1と第1の加算器16との間のループ処理の回数がn未
満の場合は、第1の加算器16の加算結果の上位a+
(n−1)k+1ビットを再びTレジスタ11に入力す
る。ループ処理の回数がnに達した場合は、第1の加算
器16の加算結果の下位k+1ビット目から下位a+k
+2ビット目までのa+1ビットを取り出し、補正装置
22の第1のレジスタ17に入力する。
【0037】補正装置22では、入力を一旦第1のレジ
スタ17に保持し、その保持値と−Nレジスタ18の保
持値とを第2の加算器19に入力し、加算結果を第2の
レジスタ20に与える。第2のレジスタ20の上位1ビ
ットの値をセレクタ21の動作条件として、“1”の場
合は第1のレジスタ17の保持値が、“0”の場合は第
2のレジスタ20の保持値がセレクタ21で選択され、
結果として出力される。
スタ17に保持し、その保持値と−Nレジスタ18の保
持値とを第2の加算器19に入力し、加算結果を第2の
レジスタ20に与える。第2のレジスタ20の上位1ビ
ットの値をセレクタ21の動作条件として、“1”の場
合は第1のレジスタ17の保持値が、“0”の場合は第
2のレジスタ20の保持値がセレクタ21で選択され、
結果として出力される。
【0038】ここで、補正装置22における処理は、モ
ンゴメリのアルゴリズムで最後に計算値tがN以上の場
合にはNを引く部分の処理である。この図8のような構
成の場合、倍数算定部32の部分は何度も同じ処理を繰
り返されることになる。さらにこの構成をべき乗剰余演
算に用いた場合はこれらの処理全体が繰り返されるた
め、倍数算定部32の部分の処理回数は非常に多くな
る。
ンゴメリのアルゴリズムで最後に計算値tがN以上の場
合にはNを引く部分の処理である。この図8のような構
成の場合、倍数算定部32の部分は何度も同じ処理を繰
り返されることになる。さらにこの構成をべき乗剰余演
算に用いた場合はこれらの処理全体が繰り返されるた
め、倍数算定部32の部分の処理回数は非常に多くな
る。
【0039】一方、倍数算定部32の処理自体は、乗算
という処理量の大きな演算が中心であり、さらに計算内
容がNという多重精度の定数とkビットの変数との積で
あるため処理回数の多さとあいまって、長い処理時間が
必要となる。そこで、本発明の第1の実施例では、図8
における倍数情報算定部31の部分をkビット×2kの
大きさの倍数情報テーブルとして持っておくことによ
り、無駄な計算を省き、処理を高速化する。
という処理量の大きな演算が中心であり、さらに計算内
容がNという多重精度の定数とkビットの変数との積で
あるため処理回数の多さとあいまって、長い処理時間が
必要となる。そこで、本発明の第1の実施例では、図8
における倍数情報算定部31の部分をkビット×2kの
大きさの倍数情報テーブルとして持っておくことによ
り、無駄な計算を省き、処理を高速化する。
【0040】本発明に係る剰余計算装置の第1の実施例
を説明する。なお、以下の各実施例においては、説明の
便宜のためビット数をa=512、k=8、n=64と
して説明する。図2は、倍数情報テーブル方式を用いた
剰余計算装置の構成を示している。図2において、図8
と共通の部分には同符号を付してその詳細な説明を省略
する。図2の剰余計算装置は、図8と同様の、Tレジス
タ11、Nレジスタ12、第1の乗算器14、第1の加
算器16および補正装置22を具備する。補正装置22
は、第1のレジスタ17、−Nレジスタ18、第2の加
算器19、第2のレジスタ20およびセレクタ21を有
する。
を説明する。なお、以下の各実施例においては、説明の
便宜のためビット数をa=512、k=8、n=64と
して説明する。図2は、倍数情報テーブル方式を用いた
剰余計算装置の構成を示している。図2において、図8
と共通の部分には同符号を付してその詳細な説明を省略
する。図2の剰余計算装置は、図8と同様の、Tレジス
タ11、Nレジスタ12、第1の乗算器14、第1の加
算器16および補正装置22を具備する。補正装置22
は、第1のレジスタ17、−Nレジスタ18、第2の加
算器19、第2のレジスタ20およびセレクタ21を有
する。
【0041】さらに、図2の剰余計算装置においては、
図8における倍数情報算定部31に代えて、倍数情報テ
ーブル41を備えた倍数情報算定部42を設けている。
倍数情報テーブル41は、被剰余数Tの下位所定ビット
に対応して倍数情報m′を格納している。Tレジスタ1
1は、1024ビットの入力レジスタであり、このTレ
ジスタ11には、被剰余数Tおよび第1の加算器16の
出力ループが再び入力される。倍数情報テーブル41
は、幅8ビット奥行き256のテーブルで、Tレジスタ
11の下位8ビットで索引すると8ビットの倍数情報
m′を出力する。Nレジスタ12は、剰余の法Nを格納
する512ビットのレジスタである。
図8における倍数情報算定部31に代えて、倍数情報テ
ーブル41を備えた倍数情報算定部42を設けている。
倍数情報テーブル41は、被剰余数Tの下位所定ビット
に対応して倍数情報m′を格納している。Tレジスタ1
1は、1024ビットの入力レジスタであり、このTレ
ジスタ11には、被剰余数Tおよび第1の加算器16の
出力ループが再び入力される。倍数情報テーブル41
は、幅8ビット奥行き256のテーブルで、Tレジスタ
11の下位8ビットで索引すると8ビットの倍数情報
m′を出力する。Nレジスタ12は、剰余の法Nを格納
する512ビットのレジスタである。
【0042】第1の乗算器14は、8ビット×512ビ
ットの乗算器であり、倍数情報テーブル41の索引結果
とNレジスタ12の保持値との乗算を行う。第1の加算
器16は、1025ビットの加算器であり、Tレジスタ
11の保持値と第1の乗算器14の乗算結果との加算を
行う。補正装置22は、図8の補正装置22と同じもの
で剰余計算結果の補正を行う。
ットの乗算器であり、倍数情報テーブル41の索引結果
とNレジスタ12の保持値との乗算を行う。第1の加算
器16は、1025ビットの加算器であり、Tレジスタ
11の保持値と第1の乗算器14の乗算結果との加算を
行う。補正装置22は、図8の補正装置22と同じもの
で剰余計算結果の補正を行う。
【0043】倍数情報算定部42の倍数情報テーブル4
1は、図3に示すように予めN′の下位8ビットを加算
器により255回順次加算し、結果の下位8ビットを加
算回数をアドレスとしてテーブル化したものである。被
剰余数TがTレジスタ11に入力されると、その下位8
ビットで倍数情報テーブル41の索引を行い、その索引
結果(=m′)とNレジスタ12の保持値Nを第1の乗
算器14で乗算し、その積とTレジスタ11の保持値と
を第1の加算器16で加算する。ループの回数nが64
未満の場合は、第1の加算器16の加算結果の上位10
18ビットを、再びTレジスタ11にLSB(leastsig
nificant bit)側からつめて入力し、処理ループを形成
する。ループの回数nが64回目の場合は、第1の加算
器16の加算結果の下位9ビット目から513ビットを
取り出して、補正装置22の第1のレジスタ17に入力
する。補正処理は図8の場合と同様である。
1は、図3に示すように予めN′の下位8ビットを加算
器により255回順次加算し、結果の下位8ビットを加
算回数をアドレスとしてテーブル化したものである。被
剰余数TがTレジスタ11に入力されると、その下位8
ビットで倍数情報テーブル41の索引を行い、その索引
結果(=m′)とNレジスタ12の保持値Nを第1の乗
算器14で乗算し、その積とTレジスタ11の保持値と
を第1の加算器16で加算する。ループの回数nが64
未満の場合は、第1の加算器16の加算結果の上位10
18ビットを、再びTレジスタ11にLSB(leastsig
nificant bit)側からつめて入力し、処理ループを形成
する。ループの回数nが64回目の場合は、第1の加算
器16の加算結果の下位9ビット目から513ビットを
取り出して、補正装置22の第1のレジスタ17に入力
する。補正処理は図8の場合と同様である。
【0044】このように、図2の剰余計算装置とすれ
ば、倍数情報の算定を倍数情報算定部42でテーブル索
引により行うので、倍数情報の算定を高速に行うことが
でき、剰余計算の高速化を実現することができる。な
お、上述のように、図8における倍数情報算定部31の
部分をテーブル化するよりも、図8における倍数算定部
32の部分をテーブル化したほうが、当然高速化される
が、テーブルのサイズが大きくなるため、記憶装置に大
きなテーブルをとる余裕がない場合に倍数情報算定部3
1の部分のテーブル化を行うことにより、小規模の装置
構成でも高速化を実現することができる。
ば、倍数情報の算定を倍数情報算定部42でテーブル索
引により行うので、倍数情報の算定を高速に行うことが
でき、剰余計算の高速化を実現することができる。な
お、上述のように、図8における倍数情報算定部31の
部分をテーブル化するよりも、図8における倍数算定部
32の部分をテーブル化したほうが、当然高速化される
が、テーブルのサイズが大きくなるため、記憶装置に大
きなテーブルをとる余裕がない場合に倍数情報算定部3
1の部分のテーブル化を行うことにより、小規模の装置
構成でも高速化を実現することができる。
【0045】次に、図8における倍数算定部32の部分
をテーブル化する場合の実施例を説明する。 〈実施例2〉本発明の第2の実施例では、図8における
倍数算定部32の部分をa+kビット×2kの大きさの
倍数テーブルとして持っておくことにより、無駄な計算
を省き、処理を高速化する。以下、本発明の第2の実施
例に係る剰余計算装置を、図2または図8と同様の部分
には同符号を付して示す図4を参照して説明する。
をテーブル化する場合の実施例を説明する。 〈実施例2〉本発明の第2の実施例では、図8における
倍数算定部32の部分をa+kビット×2kの大きさの
倍数テーブルとして持っておくことにより、無駄な計算
を省き、処理を高速化する。以下、本発明の第2の実施
例に係る剰余計算装置を、図2または図8と同様の部分
には同符号を付して示す図4を参照して説明する。
【0046】図4に示す倍数テーブル方式を用いた剰余
計算装置は、図2と同様の、Tレジスタ11、第1の加
算器16および補正装置22を具備する。さらに、図4
の剰余計算装置においては、図8における倍数算定部3
2に代えて、倍数テーブル51を備えた倍数算定部52
を設ける。倍数算定部52の倍数テーブル51は、被剰
余数Tの下位所定ビットに対応させて剰余の法Nの倍数
m′Nを格納している。すなわち、倍数テーブル51
は、図2の倍数情報テーブル41、Nレジスタ12およ
び第1の乗算器14からなる部分の処理を一括してテー
ブル化したものであり、Tレジスタ11の保持値の下位
8ビットで検索すると520ビットの倍数算定結果が出
力される。この倍数テーブル51は、例えば後述する第
3の実施例のような倍数テーブル作成方法に従って、予
め幅520ビット奥行き256のテーブルとして作成す
る。
計算装置は、図2と同様の、Tレジスタ11、第1の加
算器16および補正装置22を具備する。さらに、図4
の剰余計算装置においては、図8における倍数算定部3
2に代えて、倍数テーブル51を備えた倍数算定部52
を設ける。倍数算定部52の倍数テーブル51は、被剰
余数Tの下位所定ビットに対応させて剰余の法Nの倍数
m′Nを格納している。すなわち、倍数テーブル51
は、図2の倍数情報テーブル41、Nレジスタ12およ
び第1の乗算器14からなる部分の処理を一括してテー
ブル化したものであり、Tレジスタ11の保持値の下位
8ビットで検索すると520ビットの倍数算定結果が出
力される。この倍数テーブル51は、例えば後述する第
3の実施例のような倍数テーブル作成方法に従って、予
め幅520ビット奥行き256のテーブルとして作成す
る。
【0047】第1の実施例の場合と同様に被剰余数Tが
Tレジスタ11に入力されると、Tレジスタ11の下位
8ビットで倍数算定部52の倍数テーブル51を索引
し、その結果とTレジスタ11の値を第1の加算器16
で加算する。第1の加算器16の加算後の処理、つまり
Tレジスタ11と第1の加算器16との間の加算ループ
処理以後の処理は上述した第1の実施例と同様に行われ
る。
Tレジスタ11に入力されると、Tレジスタ11の下位
8ビットで倍数算定部52の倍数テーブル51を索引
し、その結果とTレジスタ11の値を第1の加算器16
で加算する。第1の加算器16の加算後の処理、つまり
Tレジスタ11と第1の加算器16との間の加算ループ
処理以後の処理は上述した第1の実施例と同様に行われ
る。
【0048】このように、図4の剰余計算装置とすれ
ば、倍数算定を倍数算定部52で、場数テーブル51の
テーブル索引により行うので、倍数の算定を一層高速に
行うことができる。 〈実施例3〉本発明の第3の実施例は、上述した第2の
実施例による図4に示した剰余計算装置で用いるための
倍数テーブルを作成するためのテーブル作成装置であ
り、倍数テーブルを容易に作成することができる。
ば、倍数算定を倍数算定部52で、場数テーブル51の
テーブル索引により行うので、倍数の算定を一層高速に
行うことができる。 〈実施例3〉本発明の第3の実施例は、上述した第2の
実施例による図4に示した剰余計算装置で用いるための
倍数テーブルを作成するためのテーブル作成装置であ
り、倍数テーブルを容易に作成することができる。
【0049】本発明の第3の実施例のテーブル作成装置
は、モンゴメリのアルゴリズムの剰余の法Nの倍数を入
力値Tに加えると、下位kビットが0となるという性質
を利用し、パラメータN′を直接使用することなく倍数
テーブルの作成を行う。図5にテーブル作成装置の構成
および作成される倍数テーブルの構成を模式的に示して
いる。
は、モンゴメリのアルゴリズムの剰余の法Nの倍数を入
力値Tに加えると、下位kビットが0となるという性質
を利用し、パラメータN′を直接使用することなく倍数
テーブルの作成を行う。図5にテーブル作成装置の構成
および作成される倍数テーブルの構成を模式的に示して
いる。
【0050】テーブル作成装置は、Nレジスタ61、加
算器62、加算結果レジスタ63および補数演算部64
を有する。Nレジスタ61は、剰余の法Nを保持し、こ
のNレジスタ61の保持値を加算器62で繰り返し加算
する。この加算器62の加算結果は加算結果レジスタ6
3に保持され、補数演算部64は、加算結果レジスタ6
3の保持値の下位所定ビットの2の補数を求める。この
ような計算の結果、逐次、補数演算部64で求められた
値をテーブルのアドレスとして、加算結果レジスタ63
に保持された値を書き込んで、倍数テーブル51とす
る。
算器62、加算結果レジスタ63および補数演算部64
を有する。Nレジスタ61は、剰余の法Nを保持し、こ
のNレジスタ61の保持値を加算器62で繰り返し加算
する。この加算器62の加算結果は加算結果レジスタ6
3に保持され、補数演算部64は、加算結果レジスタ6
3の保持値の下位所定ビットの2の補数を求める。この
ような計算の結果、逐次、補数演算部64で求められた
値をテーブルのアドレスとして、加算結果レジスタ63
に保持された値を書き込んで、倍数テーブル51とす
る。
【0051】ここでは、説明の便宜のため、剰余の法N
を101100112とし、索引を4ビットで行うもの
とする。図5において、まず、0をテーブルの0番目す
なわちアドレス0にセットする。次に0にNレジスタ6
1の剰余の法Nを加え、加算結果を101100112
として、加算結果レジスタ63に保持する。この加算結
果の下位4ビットを取り出し、補数演算部64で2の補
数をとると11012になるので、テーブルのアドレス
11012に101100112をセットする。このよう
にして、順次、テーブルの求められた2の補数値のアド
レスに加算結果をセットしてゆく。
を101100112とし、索引を4ビットで行うもの
とする。図5において、まず、0をテーブルの0番目す
なわちアドレス0にセットする。次に0にNレジスタ6
1の剰余の法Nを加え、加算結果を101100112
として、加算結果レジスタ63に保持する。この加算結
果の下位4ビットを取り出し、補数演算部64で2の補
数をとると11012になるので、テーブルのアドレス
11012に101100112をセットする。このよう
にして、順次、テーブルの求められた2の補数値のアド
レスに加算結果をセットしてゆく。
【0052】例えば、図5に示された状態では、剰余の
法Nを6回加算した値100001100102に、N
を加えて100111001012を得て、下位4ビッ
トの2の補数10112をとる。そして、テーブルのア
ドレス10112に100111001012をセットし
ている。このような操作を16回繰り返すことにより、
倍数テーブル51を作成することができる。
法Nを6回加算した値100001100102に、N
を加えて100111001012を得て、下位4ビッ
トの2の補数10112をとる。そして、テーブルのア
ドレス10112に100111001012をセットし
ている。このような操作を16回繰り返すことにより、
倍数テーブル51を作成することができる。
【0053】この実施例によるテーブル作成装置は、煩
雑な計算を要するパラメータN′を直接使用することな
く、モンゴメリのアルゴリズムの剰余の法Nの倍数を入
力値Tに加えると、下位kビットが0となるという性質
を利用して、倍数テーブルを容易に作成することができ
る。なお、このテーブル作成装置は、単純な繰り返し加
算処理、2の補数を求める処理およびテーブルの書き込
み処理のみで済むので、図5に対応するハードウェア構
成のみならず、ワークステーション、パーソナルコンピ
ュータ等を用いたソフトウェア処理で容易に実現するこ
とができる。
雑な計算を要するパラメータN′を直接使用することな
く、モンゴメリのアルゴリズムの剰余の法Nの倍数を入
力値Tに加えると、下位kビットが0となるという性質
を利用して、倍数テーブルを容易に作成することができ
る。なお、このテーブル作成装置は、単純な繰り返し加
算処理、2の補数を求める処理およびテーブルの書き込
み処理のみで済むので、図5に対応するハードウェア構
成のみならず、ワークステーション、パーソナルコンピ
ュータ等を用いたソフトウェア処理で容易に実現するこ
とができる。
【0054】〈実施例4〉本発明の第4の実施例は、図
2に示したように倍数情報テーブルを用いた剰余計算装
置の構成を、分割乗算処理を行う分割乗算装置と組み合
わせて構成した乗算剰余計算装置の実施例である。以
下、本発明の第4の実施例に係る乗算剰余計算装置を、
図2と同様の部分には同符号を付して示す図6を参照し
て説明する。
2に示したように倍数情報テーブルを用いた剰余計算装
置の構成を、分割乗算処理を行う分割乗算装置と組み合
わせて構成した乗算剰余計算装置の実施例である。以
下、本発明の第4の実施例に係る乗算剰余計算装置を、
図2と同様の部分には同符号を付して示す図6を参照し
て説明する。
【0055】図6に示す乗算剰余計算装置は、R=
bn、b=2kとして、AB→ABR-1modNの処理を行
うものとし、図2と同様の、Tレジスタ11、Nレジス
タ12、第1の乗算器14、第1の加算器16、補正装
置22および倍数情報テーブル41を具備する。さら
に、図6の乗算剰余計算装置においては、Aレジスタ7
1、Bレジスタ72、第3の乗算器73および第3の加
算器74を設けている。
bn、b=2kとして、AB→ABR-1modNの処理を行
うものとし、図2と同様の、Tレジスタ11、Nレジス
タ12、第1の乗算器14、第1の加算器16、補正装
置22および倍数情報テーブル41を具備する。さら
に、図6の乗算剰余計算装置においては、Aレジスタ7
1、Bレジスタ72、第3の乗算器73および第3の加
算器74を設けている。
【0056】Aレジスタ71、Bレジスタ72、第3の
乗算器73および第3の加算器74は分割乗算装置75
を構成しており、Tレジスタ11、Nレジスタ12、第
1の乗算器14、第1の加算器16および倍数情報テー
ブル41は剰余演算装置76を構成している。Aレジス
タ71は与えられる乗数Aを保持し、Bレジスタ72は
与えられる被乗数Bを保持する。乗算器73は、Bレジ
スタ72に保持される被乗数をkビット毎に下位から順
次取り出して、Aレジスタ71の乗数Aに乗算する。加
算器74は、n回のループ処理の間、剰余演算装置76
の加算器16の演算結果を乗算器73の乗算結果に加算
する。
乗算器73および第3の加算器74は分割乗算装置75
を構成しており、Tレジスタ11、Nレジスタ12、第
1の乗算器14、第1の加算器16および倍数情報テー
ブル41は剰余演算装置76を構成している。Aレジス
タ71は与えられる乗数Aを保持し、Bレジスタ72は
与えられる被乗数Bを保持する。乗算器73は、Bレジ
スタ72に保持される被乗数をkビット毎に下位から順
次取り出して、Aレジスタ71の乗数Aに乗算する。加
算器74は、n回のループ処理の間、剰余演算装置76
の加算器16の演算結果を乗算器73の乗算結果に加算
する。
【0057】この場合、図2の場合とは異なり、剰余演
算装置76の加算器16の加算結果はそのまま加算器7
4に入力されてn回の処理ループを形成する。ここで、
図6の乗算剰余計算装置は、図2におけるTレジスタ1
1と処理ループの部分に、512ビット幅のAレジスタ
71およびBレジスタ72、520ビット幅の乗算器7
3、ならびに521ビット幅の加算器74を具備する分
割乗算装置75を組み込んだ倍数情報テーブル式の乗算
剰余計算装置として、具体的なビット数の例を示して説
明する。図2の剰余計算装置をそのまま乗算剰余計算装
置に使用する場合は、乗算装置を設けて単にその乗算結
果をTレジスタ11に代入するようにして実現すること
ができるが、本実施例では、分割乗算装置と組み合わせ
ることにより、剰余演算装置のTレジスタ11、加算器
16およびループ処理部分のビット幅を削減している。
算装置76の加算器16の加算結果はそのまま加算器7
4に入力されてn回の処理ループを形成する。ここで、
図6の乗算剰余計算装置は、図2におけるTレジスタ1
1と処理ループの部分に、512ビット幅のAレジスタ
71およびBレジスタ72、520ビット幅の乗算器7
3、ならびに521ビット幅の加算器74を具備する分
割乗算装置75を組み込んだ倍数情報テーブル式の乗算
剰余計算装置として、具体的なビット数の例を示して説
明する。図2の剰余計算装置をそのまま乗算剰余計算装
置に使用する場合は、乗算装置を設けて単にその乗算結
果をTレジスタ11に代入するようにして実現すること
ができるが、本実施例では、分割乗算装置と組み合わせ
ることにより、剰余演算装置のTレジスタ11、加算器
16およびループ処理部分のビット幅を削減している。
【0058】乗算剰余を行う2数すなわち乗数および被
乗数が、AおよびBのレジスタ71および72にそれぞ
れ入力されると、Aレジスタ71の保持値とBレジスタ
72の保持値の下位側から8ビットずつの値が乗算器7
3で乗算される。この乗算器73の乗算結果と前回の処
理ループの計算値(初回は0とする)が加算器74で加
算されてTレジスタ11に入力される。ここから加算器
16までは図2の実施例の場合と同様の処理が行われ
る。ループの回数nが64未満の場合、加算器16の加
算結果の上位514ビットをループによりフィードバッ
クして加算器3に入力し、次回のAレジスタ71とBレ
ジスタ72との分割剰余結果に加算する。ループの回数
nが64の場合、加算器16の加算結果の下位9ビット
目から513ビットを取り出し、補正装置22に入力す
る。このようにすることにより、512ビットのABR
-1modNが補正装置22から出力される。
乗数が、AおよびBのレジスタ71および72にそれぞ
れ入力されると、Aレジスタ71の保持値とBレジスタ
72の保持値の下位側から8ビットずつの値が乗算器7
3で乗算される。この乗算器73の乗算結果と前回の処
理ループの計算値(初回は0とする)が加算器74で加
算されてTレジスタ11に入力される。ここから加算器
16までは図2の実施例の場合と同様の処理が行われ
る。ループの回数nが64未満の場合、加算器16の加
算結果の上位514ビットをループによりフィードバッ
クして加算器3に入力し、次回のAレジスタ71とBレ
ジスタ72との分割剰余結果に加算する。ループの回数
nが64の場合、加算器16の加算結果の下位9ビット
目から513ビットを取り出し、補正装置22に入力す
る。このようにすることにより、512ビットのABR
-1modNが補正装置22から出力される。
【0059】〈実施例5〉本発明の第5の実施例は、図
4に示したように倍数テーブルを用いた剰余計算装置の
構成を、分割乗算処理を行う分割乗算装置と組み合わせ
て構成した乗算剰余計算装置の実施例である。以下、本
発明の第5の実施例に係る乗算剰余計算装置を、図4ま
たは図6と同様の部分には同符号を付して示す図7を参
照して説明する。
4に示したように倍数テーブルを用いた剰余計算装置の
構成を、分割乗算処理を行う分割乗算装置と組み合わせ
て構成した乗算剰余計算装置の実施例である。以下、本
発明の第5の実施例に係る乗算剰余計算装置を、図4ま
たは図6と同様の部分には同符号を付して示す図7を参
照して説明する。
【0060】図7に示す乗算剰余計算装置は、図4と同
様の、Tレジスタ11、第1の加算器16、補正装置2
2および倍数テーブル51を具備する。さらに、図7の
乗算剰余計算装置においては、図6と同様の、Aレジス
タ71、Bレジスタ72、第3の乗算器73および第3
の加算器74を設けている。Aレジスタ71、Bレジス
タ72、第3の乗算器73および第3の加算器74は分
割乗算装置75を構成しており、Tレジスタ11、第1
の加算器16および倍数テーブル51は剰余演算装置8
1を構成している。
様の、Tレジスタ11、第1の加算器16、補正装置2
2および倍数テーブル51を具備する。さらに、図7の
乗算剰余計算装置においては、図6と同様の、Aレジス
タ71、Bレジスタ72、第3の乗算器73および第3
の加算器74を設けている。Aレジスタ71、Bレジス
タ72、第3の乗算器73および第3の加算器74は分
割乗算装置75を構成しており、Tレジスタ11、第1
の加算器16および倍数テーブル51は剰余演算装置8
1を構成している。
【0061】図6の場合と同様に、Aレジスタ71は与
えられる乗数Aを保持し、Bレジスタ72は与えられる
被乗数Bを保持する。乗算器73は、Bレジスタ72に
保持される被乗数をkビット毎に下位から順次取り出し
て、Aレジスタ71の乗数Aに乗算する。加算器74
は、n回のループ処理の間、剰余演算装置81の加算器
16の演算結果を乗算器73の乗算結果に加算する。加
算器16の加算結果はそのまま加算器74に入力されて
n回の処理ループを形成する。
えられる乗数Aを保持し、Bレジスタ72は与えられる
被乗数Bを保持する。乗算器73は、Bレジスタ72に
保持される被乗数をkビット毎に下位から順次取り出し
て、Aレジスタ71の乗数Aに乗算する。加算器74
は、n回のループ処理の間、剰余演算装置81の加算器
16の演算結果を乗算器73の乗算結果に加算する。加
算器16の加算結果はそのまま加算器74に入力されて
n回の処理ループを形成する。
【0062】なお、本発明の剰余計算装置および乗算剰
余計算装置はハードウェアに限らず同様の機能構成の少
なくとも一部をソフトウェアで実現することもでき、そ
のような場合にも処理の高速化を達成することができ
る。
余計算装置はハードウェアに限らず同様の機能構成の少
なくとも一部をソフトウェアで実現することもでき、そ
のような場合にも処理の高速化を達成することができ
る。
【0063】
【発明の効果】以上説明したように、本発明によれば、
モンゴメリ法による剰余計算処理における倍数算定の乗
算処理をテーブル索引で行うため、処理を簡略化するこ
とができ、高速に剰余演算を行うことを可能とする剰余
計算装置および同様に高速に乗算剰余演算を行うことを
可能とする乗算剰余計算装置を提供することができる。
モンゴメリ法による剰余計算処理における倍数算定の乗
算処理をテーブル索引で行うため、処理を簡略化するこ
とができ、高速に剰余演算を行うことを可能とする剰余
計算装置および同様に高速に乗算剰余演算を行うことを
可能とする乗算剰余計算装置を提供することができる。
【0064】例えば、ソフトウェアで本発明をの剰余計
算装置または乗算剰余計算装置を実現した場合、剰余計
算部分を比較すれば、テーブルを用いない場合の処理時
間を100とすると、倍数情報テーブル方式が98、倍
数テーブル方式が31となり、その効果は明らかであ
る。また、本発明によれば、倍数テーブル方式に用いる
倍数テーブルを作成するのに、剰余の法を繰り返し加算
し、加算結果の下位所定ビットの2の補数を求め、その
2の補数値に対応するアドレスに前記加算結果を格納す
ることにより、煩雑な計算を要するパラメータN′を求
めることなくテーブルを作成することが可能なテーブル
作成装置を提供することができる。
算装置または乗算剰余計算装置を実現した場合、剰余計
算部分を比較すれば、テーブルを用いない場合の処理時
間を100とすると、倍数情報テーブル方式が98、倍
数テーブル方式が31となり、その効果は明らかであ
る。また、本発明によれば、倍数テーブル方式に用いる
倍数テーブルを作成するのに、剰余の法を繰り返し加算
し、加算結果の下位所定ビットの2の補数を求め、その
2の補数値に対応するアドレスに前記加算結果を格納す
ることにより、煩雑な計算を要するパラメータN′を求
めることなくテーブルを作成することが可能なテーブル
作成装置を提供することができる。
【図1】本発明に係る剰余計算装置の構成を示す原理図
である。
である。
【図2】本発明の第1の実施例に係る剰余計算装置の構
成を示すブロック図である。
成を示すブロック図である。
【図3】図2の剰余計算装置で用いる倍数情報テーブル
を説明するための模式図である。
を説明するための模式図である。
【図4】本発明の第2の実施例に係る剰余計算装置の構
成を示すブロック図である。
成を示すブロック図である。
【図5】図4の剰余計算装置で用いる倍数テーブルを作
成するための本発明の第3の実施例に係るテーブル作成
装置の原理構成を概略的に示す図である。
成するための本発明の第3の実施例に係るテーブル作成
装置の原理構成を概略的に示す図である。
【図6】本発明の第4の実施例に係る乗算剰余計算装置
の構成を示すブロック図である。
の構成を示すブロック図である。
【図7】本発明の第5の実施例に係る乗算剰余計算装置
の構成を示すブロック図である。
の構成を示すブロック図である。
【図8】モンゴメリのアルゴリズムを単純にハードウェ
ア化した場合の一般的に考えられる剰余計算装置の構成
を示すブロック図である。
ア化した場合の一般的に考えられる剰余計算装置の構成
を示すブロック図である。
1,11…Tレジスタ 2,52…倍数算定部 3,16,19,62,74…加算器 4,22…補正装置 5,51…倍数テーブル 12,61…Nレジスタ 14,73…乗算器 17,20…レジスタ 18…−Nレジスタ 21…セレクタ 41…倍数情報テーブル 42…倍数情報算定部 63…加算結果レジスタ 64…補数演算部 71…Aレジスタ 72…Bレジスタ 75…分割乗算装置 76,81…剰余演算装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 秋山 良太 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内
Claims (10)
- 【請求項1】 入力される被剰余数を保持する入力レジ
スタ(1)と、 前記入力レジスタ(1)に格納される被剰余数の下位所
定ビットに基づいて、予め演算データを格納したテーブ
ルを用いるテーブル検索により、前記被剰余数の下位所
定ビットに対応する剰余の法の倍数を求めるための倍数
算定手段(2)と、 前記倍数算定手段(2)で求められる剰余の法の倍数と
前記入力レジスタ(1)の内容とを加算するとともに、
所定回数の加算についてその加算結果の上位所定ビット
で前記入力レジスタ(1)の内容を更新するための加算
手段(3)と、 前記加算手段(3)の加算結果に対して剰余結果の補正
処理を施すための補正手段(4)とを具備することを特
徴とする剰余計算装置。 - 【請求項2】 倍数算定手段(2)は、被剰余数の下位
所定ビットに対応させて剰余の法の倍数を格納した倍数
テーブル(5)を有し、この倍数テーブル(5)を前記
被剰余数の下位所定ビットで検索して、それに対応する
前記剰余の法の倍数を直接求める手段であることを特徴
とする請求項1に記載の剰余計算装置。 - 【請求項3】 倍数算定手段(2)は、被剰余数の下位
所定ビットに対応させて倍数情報を格納した倍数情報テ
ーブル(41)を前記被剰余数の下位所定ビットで検索
して、それに対応する倍数情報を求める倍数情報算定手
段(42)と、剰余の法を格納する剰余の法レジスタ
(12)と、前記倍数情報算定手段(42)で得られる
倍数情報と前記剰余の法レジスタ(12)から得られる
剰余の法とを乗算する乗算手段(14)とを有し、前記
倍数算定手段(10)により前記被剰余数の下位所定ビ
ットに対応する前記剰余の法の倍数を求める手段である
ことを特徴とする請求項1に記載の剰余計算装置。 - 【請求項4】 請求項2の剰余計算装置に用いる倍数テ
ーブルを記憶装置上に作成するテーブル作成装置におい
て、剰余の法を繰り返し加算するための繰り返し加算手
段(62)と、前記繰り返し加算手段(62)で求めら
れる各加算結果の値の下位bビットの2の補数を求める
ための補数算定手段(64)と、前記補数算定手段(6
4)で得られる各補数値に対応するテーブルアドレスに
前記各加算結果をそれぞれ格納するためのテーブル書き
込み手段とを具備することを特徴とするテーブル作成装
置。 - 【請求項5】 被乗数の下位から所定ビット毎の値と乗
数を乗算し、その乗算結果に剰余を加算する分割乗算装
置(75)と、 この分割乗算装置(75)から出力される被剰余数を保
持する被剰余数レジスタ(11)と、 前記被剰余数レジスタ(11)に格納される被剰余数の
下位所定ビットに基づいて、予め演算データを格納した
テーブルを用いるテーブル検索により、前記被剰余数の
下位所定ビットに対応する剰余の法の倍数を求めるため
の倍数算定手段と、 前記倍数算定手段で求められる剰余の法の倍数と前記入
力レジスタの内容とを加算するとともに、所定回数の加
算についてその加算結果を前記剰余として前記分割乗算
装置の前記乗算結果への加算に供するための加算手段
(16)と、 前記加算手段(16)の加算結果に対して剰余結果の補
正処理を施すための補正手段(22)とを有することを
特徴とする乗算剰余計算装置。 - 【請求項6】 倍数算定手段は、被剰余数の下位所定ビ
ットに対応させて剰余の法の倍数を格納した倍数テーブ
ル(51)を有し、この倍数テーブル(51)を前記被
剰余数の下位所定ビットで検索して、それに対応する前
記剰余の法の倍数を直接求める手段であることを特徴と
する請求項5に記載の乗算剰余計算装置。 - 【請求項7】 倍数算定手段は、被剰余数の下位所定ビ
ットに対応させて倍数情報を格納した倍数情報テーブル
(41)を前記被剰余数の下位所定ビットで検索して、
それに対応する倍数情報を求めるための倍数情報算定手
段と、剰余の法を格納する剰余の法レジスタ(12)
と、前記倍数情報算定手段で得られる倍数情報と前記剰
余の法レジスタ(12)から得られる剰余の法とを乗算
するための乗算手段(14)とを有し、この倍数算定手
段により前記被剰余数の下位所定ビットに対応する前記
剰余の法の倍数を求める手段であることを特徴とする請
求項5に記載の乗算剰余計算装置。 - 【請求項8】 整数TおよびNについて、被剰余数Tに
対する剰余の法Nにおける剰余TmodN=REDC(T
*(R2modN)を求めるためTR-1modN=REDC
(T)を算出する剰余計算装置において、 入力される被剰余数Tを保持する入力レジスタ(11)
と、 前記入力レジスタ(11)に格納される被剰余数Tの下
位所定ビットに基づいて、予め演算データを格納したテ
ーブルを用いるテーブル検索により、前記被剰余数の下
位所定ビットに対応する剰余の法Nの倍数m′N(但
し、m′=(Tmodb)N′modb、ここでN′およびR
は整数であり、R=bn、b=2kとする)を求めるため
の倍数算定手段と、 前記倍数算定手段で求められる剰余の法Nの倍数m′N
と前記入力レジスタの内容とを加算するとともに、所定
回数の加算についてその加算結果の上位所定ビットで前
記入力レジスタの内容を更新することによりt=(T+
mN)/Rを出力する加算器(16)と、 前記加算器(16)の加算結果tに対してt<Nの場合
はそのままt=REDC(T)、t≧Nの場合はt−N
=REDC(T)として補正処理を施しTR-1modNを
得る補正装置(22)とを有することを特徴とする剰余
計算装置。 - 【請求項9】 倍数算定手段(52)は、被剰余数Tの
下位所定ビットに対応させて剰余の法Nの倍数m′Nを
格納した倍数テーブル(51)を有し、この倍数テーブ
ル(51)を前記被剰余数Tの下位所定ビットで検索し
て、それに対応する前記剰余の法の倍数m′Nを直接求
める手段であることを特徴とする請求項8に記載の剰余
計算装置。 - 【請求項10】 倍数算定手段は、被剰余数Tの下位所
定ビットに対応させて倍数情報m′を格納した倍数情報
テーブル(41)を前記被剰余数Tの下位所定ビットで
検索して、それに対応する倍数情報m′を求める倍数情
報算定手段(42)と、剰余の法Nを格納する剰余の法
レジスタ(12)と、前記倍数情報算定手段(42)で
得られる倍数情報m′と前記剰余の法レジスタ(12)
から得られる剰余の法Nとを乗算する乗算器(14)と
を有し、この倍数算定手段により前記被剰余数の下位所
定ビットに対応する前記剰余の法Nの倍数m′Nを求め
る手段であることを特徴とする請求項8に記載の剰余計
算装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5164870A JPH0720778A (ja) | 1993-07-02 | 1993-07-02 | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
| US08/268,435 US5499299A (en) | 1993-07-02 | 1994-06-30 | Modular arithmetic operation system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5164870A JPH0720778A (ja) | 1993-07-02 | 1993-07-02 | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0720778A true JPH0720778A (ja) | 1995-01-24 |
Family
ID=15801496
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5164870A Withdrawn JPH0720778A (ja) | 1993-07-02 | 1993-07-02 | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5499299A (ja) |
| JP (1) | JPH0720778A (ja) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6415310B1 (en) | 1998-10-27 | 2002-07-02 | Fujitsu Limited | Remainder calculating method, modular-multiplication method, remainder calculating apparatus, modular-multiplication apparatus and recording medium |
| JP2003501698A (ja) * | 1999-06-09 | 2003-01-14 | マイクロソフト コーポレイション | 基本的なレジスタ演算を用いたパラメータの生成 |
| 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 |
| JP2010186075A (ja) * | 2009-02-12 | 2010-08-26 | Chugoku Electric Power Co Inc:The | 整数の暗号化及び復号化方法 |
| JP2010186076A (ja) * | 2009-02-12 | 2010-08-26 | Chugoku Electric Power Co Inc:The | 整数の暗号化及び復号化方法 |
| JP2011180390A (ja) * | 2010-03-01 | 2011-09-15 | Chugoku Electric Power Co Inc:The | 整数を暗号化及び復号化する方法、装置及びシステム |
Families Citing this family (48)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5724279A (en) * | 1995-08-25 | 1998-03-03 | Microsoft Corporation | Computer-implemented method and computer for performing modular reduction |
| JP3504050B2 (ja) * | 1996-01-26 | 2004-03-08 | 株式会社東芝 | べき乗剰余演算方法及び装置 |
| JP3525209B2 (ja) * | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
| US5793659A (en) * | 1996-10-15 | 1998-08-11 | United Microelectronics Corporation | Method of modular reduction and modular reduction circuit |
| US6088453A (en) * | 1997-01-27 | 2000-07-11 | Kabushiki Kaisha Toshiba | Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation |
| US5987131A (en) * | 1997-08-18 | 1999-11-16 | Picturetel Corporation | Cryptographic key exchange using pre-computation |
| US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
| US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
| EP0947914B1 (en) * | 1998-03-30 | 2004-12-15 | Rainbow Technologies Inc. | Computationally efficient modular multiplication method and apparatus |
| KR100486697B1 (ko) * | 1998-05-26 | 2005-06-16 | 삼성전자주식회사 | 모듈러연산장치및그방법 |
| US6182104B1 (en) * | 1998-07-22 | 2001-01-30 | Motorola, Inc. | Circuit and method of modulo multiplication |
| US6408075B1 (en) * | 1998-11-30 | 2002-06-18 | Hitachi, Ltd. | Information processing equipment and IC card |
| TW429344B (en) * | 1999-04-28 | 2001-04-11 | Via Tech Inc | Matching table method of element product in Galois field |
| WO2001089129A2 (en) * | 2000-05-15 | 2001-11-22 | M-Systems Flash Disk Pioneers Ltd. | Extending the range of computational fields of integers |
| US7080109B2 (en) * | 2000-06-29 | 2006-07-18 | State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Methods and apparatus for incomplete modular arithmetic |
| US7620832B2 (en) * | 2000-09-20 | 2009-11-17 | Mips Technologies, Inc. | Method and apparatus for masking a microprocessor execution signature |
| SE0003757L (sv) * | 2000-10-17 | 2002-04-09 | Novacatus Invest Ab | Metod och anordning vid modulomultiplikation samt användning av metoden vid asymmetrisk kryptering/dekryptering |
| US6963977B2 (en) * | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Circuits and methods for modular exponentiation |
| US7162621B2 (en) * | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
| US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
| US7599981B2 (en) * | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
| US7237097B2 (en) | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
| US7711763B2 (en) * | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
| US7017064B2 (en) * | 2001-05-09 | 2006-03-21 | Mosaid Technologies, Inc. | Calculating apparatus having a plurality of stages |
| US7318145B1 (en) | 2001-06-01 | 2008-01-08 | Mips Technologies, Inc. | Random slip generator |
| US20030065697A1 (en) * | 2001-08-29 | 2003-04-03 | Shimman Patel | Fast, iterative system and method for evaluating a modulo operation without using division |
| US20030065699A1 (en) * | 2001-10-01 | 2003-04-03 | Koninklijke Philips Electronics N.V. | Split multiplier for efficient mixed-precision DSP |
| DE10200133B4 (de) * | 2002-01-04 | 2005-12-22 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen |
| DE10205713C1 (de) * | 2002-02-12 | 2003-08-07 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses aus einer Division |
| FR2843211B1 (fr) * | 2002-08-05 | 2005-05-20 | Everbee Networks | Procede pour accelerer des calculs en arithmetique modulaire |
| US7451326B2 (en) * | 2002-08-26 | 2008-11-11 | Mosaid Technologies, Inc. | Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies |
| US7386705B2 (en) | 2002-08-27 | 2008-06-10 | Mosaid Technologies Inc. | Method for allocating processor resources and system for encrypting data |
| GB0221837D0 (en) * | 2002-09-20 | 2002-10-30 | Koninkl Philips Electronics Nv | Improved quisquater reduction |
| US7243118B2 (en) * | 2003-07-30 | 2007-07-10 | Broadcom Corporation | Method and apparatus for efficient derivation of modulo arithmetic for frequency selection |
| JP4170267B2 (ja) * | 2004-07-09 | 2008-10-22 | Necエレクトロニクス株式会社 | 乗算剰余演算器及び情報処理装置 |
| JP4180024B2 (ja) * | 2004-07-09 | 2008-11-12 | Necエレクトロニクス株式会社 | 乗算剰余演算器及び情報処理装置 |
| US8024391B2 (en) * | 2006-11-06 | 2011-09-20 | Atmel Rousset S.A.S. | Modular multiplication method with precomputation using one known operand |
| EP2208165A4 (en) * | 2007-11-02 | 2010-11-24 | Certicom Corp | MONTGOMERY ARITHMETIC SIGNED |
| US8417756B2 (en) * | 2007-11-29 | 2013-04-09 | Samsung Electronics Co., Ltd. | Method and apparatus for efficient modulo multiplication |
| US8626811B2 (en) * | 2010-04-30 | 2014-01-07 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
| DE102010051853A1 (de) * | 2010-11-18 | 2012-05-24 | Giesecke & Devrient Gmbh | Verfahren zur Langzahldivision |
| DE102011117219A1 (de) * | 2011-10-28 | 2013-05-02 | Giesecke & Devrient Gmbh | Bestimmen eines Divisionsrests und Ermitteln von Primzahlkandidaten für eine kryptographische Anwendung |
| US9513870B2 (en) * | 2014-04-22 | 2016-12-06 | Dialog Semiconductor (Uk) Limited | Modulo9 and modulo7 operation on unsigned binary numbers |
| US9543963B2 (en) | 2015-01-30 | 2017-01-10 | International Business Machines Corporation | Modulo-m binary counter |
| US10255462B2 (en) | 2016-06-17 | 2019-04-09 | Arm Limited | Apparatus and method for obfuscating power consumption of a processor |
| US11249726B2 (en) * | 2019-09-10 | 2022-02-15 | Intel Corporation | Integrated circuits with modular multiplication circuitry |
| CN118095459B (zh) * | 2022-11-21 | 2026-01-06 | 本源量子计算科技(合肥)股份有限公司 | 变量二倍模乘运算器、运算方法及相关装置 |
| CN116166219B (zh) * | 2022-12-19 | 2026-03-31 | 成都三零嘉微电子有限公司 | 一种可配置模乘法器 |
Family Cites Families (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3980874A (en) * | 1975-05-09 | 1976-09-14 | Burroughs Corporation | Binary to modulo M translation |
| US4037093A (en) * | 1975-12-29 | 1977-07-19 | Honeywell Information Systems, Inc. | Matrix multiplier in GF(2m) |
| JPS6034131A (ja) * | 1983-08-04 | 1985-02-21 | Tokiwadou Seika Kk | アロエ入りかりんとう製造法 |
| US4658094A (en) * | 1985-03-28 | 1987-04-14 | Itt Corporation | Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer |
| ATE55033T1 (de) * | 1986-03-05 | 1990-08-15 | Holger Sedlak | Kryptographie-verfahren und kryptographieprozessor zur durchfuehrung des verfahrens. |
| JPS6329784A (ja) * | 1986-07-23 | 1988-02-08 | 株式会社日立製作所 | 剰余計算方式 |
| JPH0778726B2 (ja) * | 1986-08-21 | 1995-08-23 | 富士通株式会社 | 分割整数剰余計算機 |
| JPS63200233A (ja) * | 1987-02-16 | 1988-08-18 | Fujitsu Ltd | 高速並列乗除計算機 |
| JPS63200183A (ja) * | 1987-02-17 | 1988-08-18 | 富士通株式会社 | 分割整数剰余計算機 |
| EP0308963A3 (en) * | 1987-09-25 | 1990-04-25 | Kabushiki Kaisha Toshiba | Remainder computing system and method |
| GB2217882B (en) * | 1988-04-29 | 1992-06-10 | Philips Electronic Associated | Arithmetic apparatus |
| BE1003932A6 (fr) * | 1989-04-28 | 1992-07-22 | Musyck Emile | Systeme cryptographique par bloc de donnees binaires. |
| FR2658932A1 (fr) * | 1990-02-23 | 1991-08-30 | Koninkl Philips Electronics Nv | Procede de codage selon la methode dite rsa, par un microcontroleur et dispositif utilisant ce procede. |
| JPH03250314A (ja) * | 1990-02-28 | 1991-11-08 | Fujitsu Ltd | 乗算剰余演算装置 |
| US5121431A (en) * | 1990-07-02 | 1992-06-09 | Northern Telecom Limited | Processor method of multiplying large numbers |
| EP0504996B1 (en) * | 1991-03-22 | 1998-07-08 | Koninklijke Philips Electronics N.V. | Arithmetic unit for multiplying long integers modulo M and R.S.A. converter provided with such multiplication device |
| US5289397A (en) * | 1991-07-22 | 1994-02-22 | Itt Corporation | High-speed modulo exponentiator device |
| DE69229766T2 (de) * | 1991-09-05 | 2000-03-23 | Canon K.K., Tokio/Tokyo | Verfahren und Gerät zum Verschlüsseln und Entschlüsseln von Kommunikationsdaten |
| US5274707A (en) * | 1991-12-06 | 1993-12-28 | Roger Schlafly | Modular exponentiation and reduction device and method |
| US5373560A (en) * | 1991-12-06 | 1994-12-13 | Schlafly; Roger | Partial modular reduction method |
| US5349551A (en) * | 1993-07-30 | 1994-09-20 | The United States Of America As Represented By The Director Of National Security Agency | Device for and method of preforming an N-bit modular multiplication in approximately N/2 steps |
-
1993
- 1993-07-02 JP JP5164870A patent/JPH0720778A/ja not_active Withdrawn
-
1994
- 1994-06-30 US US08/268,435 patent/US5499299A/en not_active Expired - Fee Related
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6415310B1 (en) | 1998-10-27 | 2002-07-02 | Fujitsu Limited | Remainder calculating method, modular-multiplication method, remainder calculating apparatus, modular-multiplication apparatus and recording medium |
| JP2003501698A (ja) * | 1999-06-09 | 2003-01-14 | マイクロソフト コーポレイション | 基本的なレジスタ演算を用いたパラメータの生成 |
| 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 |
| JP2010186075A (ja) * | 2009-02-12 | 2010-08-26 | Chugoku Electric Power Co Inc:The | 整数の暗号化及び復号化方法 |
| JP2010186076A (ja) * | 2009-02-12 | 2010-08-26 | Chugoku Electric Power Co Inc:The | 整数の暗号化及び復号化方法 |
| JP2011180390A (ja) * | 2010-03-01 | 2011-09-15 | Chugoku Electric Power Co Inc:The | 整数を暗号化及び復号化する方法、装置及びシステム |
Also Published As
| Publication number | Publication date |
|---|---|
| US5499299A (en) | 1996-03-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0720778A (ja) | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 | |
| US6396926B1 (en) | Scheme for fast realization of encrytion, decryption and authentication | |
| US6259790B1 (en) | Secret communication and authentication scheme based on public key cryptosystem using N-adic expansion | |
| US8352529B2 (en) | Modular multiplication calculation apparatus used for montgomery method | |
| US20020021803A1 (en) | Cryptographic identification and digital signature method using efficient elliptic curve | |
| US7248692B2 (en) | Method of and apparatus for determining a key pair and for generating RSA keys | |
| JP2000132376A (ja) | 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体 | |
| US7050579B1 (en) | Cryptographic methods and apparatus using word-wise montgomery multiplication | |
| WO2005099150A2 (en) | Public key cryptographic methods and systems | |
| JP3402441B2 (ja) | 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体 | |
| JP3616897B2 (ja) | モンゴメリ法による乗算剰余計算装置 | |
| JP4177526B2 (ja) | 乗算剰余演算方法および乗算剰余回路 | |
| US6337909B1 (en) | Generation of session keys for El Gamal-like protocols from low hamming weight integers | |
| US20040174995A1 (en) | Cryptosystems | |
| JP3797808B2 (ja) | スカラー倍算方法およびその装置 | |
| US20020025034A1 (en) | Cryptographic encryption method using efficient elliptic curve | |
| JP3615405B2 (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
| JP2000137436A (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
| JPH11143688A (ja) | 演算装置並びにこれを利用したrsa暗号演算装置及び楕円暗号演算装置 | |
| JP3123820B2 (ja) | 有限可換群における演算器 | |
| KR20010000048A (ko) | m진법 방식을 이용한 타원곡선상 다중 점의 상수고속연산 방법 | |
| US20030072442A1 (en) | Cisponentiation method, software, and device for exponentiation | |
| JP3233605B2 (ja) | 鍵更新方法 | |
| JP4676071B2 (ja) | べき乗剰余演算方法、逆数演算方法およびそれらの装置 | |
| JP3278790B2 (ja) | 公開鍵暗号方法及び公開鍵暗号システム |
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: 20000905 |