JPH11305995A - 計算装置のデ―タ処理高速化方法および装置。 - Google Patents
計算装置のデ―タ処理高速化方法および装置。Info
- Publication number
- JPH11305995A JPH11305995A JP11020232A JP2023299A JPH11305995A JP H11305995 A JPH11305995 A JP H11305995A JP 11020232 A JP11020232 A JP 11020232A JP 2023299 A JP2023299 A JP 2023299A JP H11305995 A JPH11305995 A JP H11305995A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- value
- bit
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 モントゴメリーアルゴリズムを用いる計算装
置のデータ処理を、mビットオペランドデータを扱うプ
ロセッサを用いて高速化する。 【解決手段】 入力データである任意の除数nについて
22kmod(n)と定義されたモントゴメリ値の計算を行い、
22kmod(n)を計算装置に与えデータ処理を高速化する。
2h*m+1の値を第1のレジスタにロードし、除数nを第
2のレジスタにロードし、除数nのビットを最上位ビッ
ト方向にシフトする。前記第1のレジスタの値が入力デ
ータnの値より小さくなるまで第1のレジスタの値から
第2のレジスタの値を繰り返し引いて剰余算処理する。
第1のレジスタの剰余算処理済みの値をlog2(k)回二乗
する乗算処理する。限られたオペランドサイズを有する
プロセッサに必要な計算回数を減らしながら、任意の除
数についてモントゴメリー値を計算して計算装置に提供
する。
置のデータ処理を、mビットオペランドデータを扱うプ
ロセッサを用いて高速化する。 【解決手段】 入力データである任意の除数nについて
22kmod(n)と定義されたモントゴメリ値の計算を行い、
22kmod(n)を計算装置に与えデータ処理を高速化する。
2h*m+1の値を第1のレジスタにロードし、除数nを第
2のレジスタにロードし、除数nのビットを最上位ビッ
ト方向にシフトする。前記第1のレジスタの値が入力デ
ータnの値より小さくなるまで第1のレジスタの値から
第2のレジスタの値を繰り返し引いて剰余算処理する。
第1のレジスタの剰余算処理済みの値をlog2(k)回二乗
する乗算処理する。限られたオペランドサイズを有する
プロセッサに必要な計算回数を減らしながら、任意の除
数についてモントゴメリー値を計算して計算装置に提供
する。
Description
【0001】
【発明の属する技術分野】本発明は、計算装置のデータ
処理高速化方法および装置に関する。特に、任意の除数
の大きさを扱う指数剰余算処理を用いた暗号復号処理を
実行する計算装置のデータ処理高速化方法および装置に
関する。
処理高速化方法および装置に関する。特に、任意の除数
の大きさを扱う指数剰余算処理を用いた暗号復号処理を
実行する計算装置のデータ処理高速化方法および装置に
関する。
【0002】
【従来の技術】暗号システムは、通常、セキュリティの
低い通信チャネルを介して通信されるメッセージに対す
る不正なアクセスを制限するために使用される。一般
に、暗号システムは、羅列した数字などの独特の鍵を使
用することにより暗号化アルゴリズムを制御し、メッセ
ージをセキュリティの低い通信チャネルを介して受け手
に送信する前にメッセージを暗号化する。受け手が暗号
化されたメッセージを復号するためには同じ鍵が必要と
なる。したがって、暗号システムのセキュリティを維持
するために、前もって鍵が送り手から受け手に対して安
全なチャネルを介して配送されていることが不可欠であ
る。しかし、安全な通信チャネルの構築の困難性、また
そのコストが、安全な鍵配送の妨げになっている。さら
に、この事前に鍵配送を行う必要性があることがほとん
どの商用通信において利用の妨げとなっている。
低い通信チャネルを介して通信されるメッセージに対す
る不正なアクセスを制限するために使用される。一般
に、暗号システムは、羅列した数字などの独特の鍵を使
用することにより暗号化アルゴリズムを制御し、メッセ
ージをセキュリティの低い通信チャネルを介して受け手
に送信する前にメッセージを暗号化する。受け手が暗号
化されたメッセージを復号するためには同じ鍵が必要と
なる。したがって、暗号システムのセキュリティを維持
するために、前もって鍵が送り手から受け手に対して安
全なチャネルを介して配送されていることが不可欠であ
る。しかし、安全な通信チャネルの構築の困難性、また
そのコストが、安全な鍵配送の妨げになっている。さら
に、この事前に鍵配送を行う必要性があることがほとん
どの商用通信において利用の妨げとなっている。
【0003】安全なチャネルを介して鍵配送する困難性
および不便性に鑑み、システムのセキュリティを損なう
ことなく安全性の低いチャネルを介して鍵配送すること
ができる、いわゆる公開鍵暗号システムが提案されてい
る。公開鍵暗号システムは、一対の鍵を利用する。一方
は、公に配送される、すなわち、公開鍵であり、他方
は、受け手によって秘密にされる、すなわち、秘密鍵で
ある。秘密鍵は、公開鍵と数学的に関連しているが、公
開鍵だけから秘密鍵を計算することは実際には不可能な
ものである。このように、メッセージを暗号化するため
に公開鍵が使用され、メッセージを復号するために秘密
鍵が使用される。
および不便性に鑑み、システムのセキュリティを損なう
ことなく安全性の低いチャネルを介して鍵配送すること
ができる、いわゆる公開鍵暗号システムが提案されてい
る。公開鍵暗号システムは、一対の鍵を利用する。一方
は、公に配送される、すなわち、公開鍵であり、他方
は、受け手によって秘密にされる、すなわち、秘密鍵で
ある。秘密鍵は、公開鍵と数学的に関連しているが、公
開鍵だけから秘密鍵を計算することは実際には不可能な
ものである。このように、メッセージを暗号化するため
に公開鍵が使用され、メッセージを復号するために秘密
鍵が使用される。
【0004】このような暗号システムは、y=bemod
(n)形式の指数剰余演算を必要とすることが多い。ここ
で、底b、指数e、および除数nは、非常に大きい数と
し、たとえば1,024二進デジット、つまり1,024ビットの
長さを有する。たとえば、指数eが公開鍵として配送さ
れ、底bおよび除数nが前もって受け手に知られている
場合、指数剰余演算を計算することによって秘密鍵yを
得ることができる。底bおよび除数nを知らずに指数e
から秘密鍵yを素因数分解するには、膨大な計算および
時間が必要であるので、復号メッセージへの不正なアク
セスは事実上不可能である。
(n)形式の指数剰余演算を必要とすることが多い。ここ
で、底b、指数e、および除数nは、非常に大きい数と
し、たとえば1,024二進デジット、つまり1,024ビットの
長さを有する。たとえば、指数eが公開鍵として配送さ
れ、底bおよび除数nが前もって受け手に知られている
場合、指数剰余演算を計算することによって秘密鍵yを
得ることができる。底bおよび除数nを知らずに指数e
から秘密鍵yを素因数分解するには、膨大な計算および
時間が必要であるので、復号メッセージへの不正なアク
セスは事実上不可能である。
【0005】
【発明が解決しようとする課題】しかしながら、このよ
うな暗号システムの欠点は、正当な受け手が高速コンピ
ュータを使用した場合でさえ、指数剰余演算がやっかい
な数学的タスクであることである。個人的、商用的、お
よび公的な目的で秘密データを送信するために利用され
る公衆コンピュータネットワークの普及に伴い、多くの
コンピュータユーザーがデータへの不正アクセスを制限
するために暗号システムを必要とすることが予想され
る。しかしセキュリティが増したにもかかわらず、指数
剰余演算の困難性により、コンピュータリソースをかな
り消耗し、データスループットが低下するため、商用暗
号システムの広い範囲での利用の大きな障害となってい
る。
うな暗号システムの欠点は、正当な受け手が高速コンピ
ュータを使用した場合でさえ、指数剰余演算がやっかい
な数学的タスクであることである。個人的、商用的、お
よび公的な目的で秘密データを送信するために利用され
る公衆コンピュータネットワークの普及に伴い、多くの
コンピュータユーザーがデータへの不正アクセスを制限
するために暗号システムを必要とすることが予想され
る。しかしセキュリティが増したにもかかわらず、指数
剰余演算の困難性により、コンピュータリソースをかな
り消耗し、データスループットが低下するため、商用暗
号システムの広い範囲での利用の大きな障害となってい
る。
【0006】暗号評価を行うのに必要な計算を減らす一
つの技術として、マスマティックス・オブ・コンピュー
テーション(Mathematics of Computation)、vol. 4
8、n.177、 1987年1月、pp.243-264に発表された「試し
除算のない剰余乗算」("Modular Multiplication with
out Trail Division")において、ピィ・エル・モント
ゴメリー(P.L. Montgomery)によって仮定されたアル
ゴリズムを用いるものが知られている。このアルゴリズ
ムは、「モントゴメリー法」("Montgomery's Metho
d")として知られている。このアルゴリズムを実行する
ために、22kmod(n)と定義されたモントゴメリー値を計
算しなければならない。ここで、nは除数であり、kは
除数nを表わすビット数であり、Amod(n)はnによるA
の剰余算を示す。
つの技術として、マスマティックス・オブ・コンピュー
テーション(Mathematics of Computation)、vol. 4
8、n.177、 1987年1月、pp.243-264に発表された「試し
除算のない剰余乗算」("Modular Multiplication with
out Trail Division")において、ピィ・エル・モント
ゴメリー(P.L. Montgomery)によって仮定されたアル
ゴリズムを用いるものが知られている。このアルゴリズ
ムは、「モントゴメリー法」("Montgomery's Metho
d")として知られている。このアルゴリズムを実行する
ために、22kmod(n)と定義されたモントゴメリー値を計
算しなければならない。ここで、nは除数であり、kは
除数nを表わすビット数であり、Amod(n)はnによるA
の剰余算を示す。
【0007】モントゴメリー値を決定するための強力な
計算方法の一つは、2k+1mod(n)の計算、またはnによ
る2k+1の剰余算である。この剰余算を完了するのに必
要な減算の回数は、除数nおよびプロセッサのオペラン
ドサイズの関数として与えられる。したがって、除数n
の所与の値に対して、必要な計算回数を減らすために適
切なオペランドサイズのプロセッササイズを選択するこ
とができる。残念ながら、暗号システムは、通常、任意
の除数に関する剰余算機能が必要である。そのような場
合、固定オペランドサイズを有するプロセッサは、2
k+1mod(n)を効率的に計算するのにはあまり適していな
い。
計算方法の一つは、2k+1mod(n)の計算、またはnによ
る2k+1の剰余算である。この剰余算を完了するのに必
要な減算の回数は、除数nおよびプロセッサのオペラン
ドサイズの関数として与えられる。したがって、除数n
の所与の値に対して、必要な計算回数を減らすために適
切なオペランドサイズのプロセッササイズを選択するこ
とができる。残念ながら、暗号システムは、通常、任意
の除数に関する剰余算機能が必要である。そのような場
合、固定オペランドサイズを有するプロセッサは、2
k+1mod(n)を効率的に計算するのにはあまり適していな
い。
【0008】上記から明らかなように、暗号技術におい
て、剰余算を実行し、固定プロセッサオペランドのサイ
ズと関連して任意の除数の大きさに関して22kmod(n)の
値を決定する装置および方法が必要である。本発明はこ
の要求を満たすものである。
て、剰余算を実行し、固定プロセッサオペランドのサイ
ズと関連して任意の除数の大きさに関して22kmod(n)の
値を決定する装置および方法が必要である。本発明はこ
の要求を満たすものである。
【0009】本発明は、任意の除数の大きさを扱う指数
剰余算処理を用いた暗号復号処理を実行する計算装置の
データ処理高速化方法および装置を提供することを目的
とする。
剰余算処理を用いた暗号復号処理を実行する計算装置の
データ処理高速化方法および装置を提供することを目的
とする。
【0010】
【課題を解決するための手段】上記目的を達成するため
に、本発明の計算装置のデータ処理高速化方法は、指数
剰余算処理を用いる計算装置のデータ処理をmビットオ
ペランドデータを扱うプロセッサを用いて高速化する方
法であって、入力データnに対して、nを2進化ビット
に変換し、そのビット数kを求める処理ステップと、前
記オペランドビット数mとの積が前記k以上となる整数
のうち、最小の整数hを検知し、第1のレジスタに、2
h*m+1ビットが1でありそれより下位の全ビットが0で
あるデータを形成するデータ形成処理ステップと、前記
オペランドビット数mの整数倍のビット長を持つ第2の
レジスタに、前記入力データnを表わすkビットデータ
をロードするデータロード処理ステップと、前記第2の
レジスタにロードした前記nを表わすkビットデータの
最上位ノンゼロビットが前記オペランドビット数mの整
数倍のビット位置にくるまで、前記nを表わすkビット
データ列を上位ビット方向にシフトするシフト処理ステ
ップと、前記第1のレジスタに形成したデータの値が前
記入力データnの値より小さくなるまで、前記第1のレ
ジスタのデータ値から前記シフト処理済みの第2のレジ
スタの値を繰り返し引く剰余算処理ステップと、前記プ
ロセッサが、前記第1のレジスタにある剰余算処理済み
の値をlog2(k)回二乗する乗算処理ステップとを備え、
入力データnに対して、nを除数とした、nの2進化ビ
ット数をkとして、22kmod(n)を計算して前記計算装置
に与えることを特徴とする。
に、本発明の計算装置のデータ処理高速化方法は、指数
剰余算処理を用いる計算装置のデータ処理をmビットオ
ペランドデータを扱うプロセッサを用いて高速化する方
法であって、入力データnに対して、nを2進化ビット
に変換し、そのビット数kを求める処理ステップと、前
記オペランドビット数mとの積が前記k以上となる整数
のうち、最小の整数hを検知し、第1のレジスタに、2
h*m+1ビットが1でありそれより下位の全ビットが0で
あるデータを形成するデータ形成処理ステップと、前記
オペランドビット数mの整数倍のビット長を持つ第2の
レジスタに、前記入力データnを表わすkビットデータ
をロードするデータロード処理ステップと、前記第2の
レジスタにロードした前記nを表わすkビットデータの
最上位ノンゼロビットが前記オペランドビット数mの整
数倍のビット位置にくるまで、前記nを表わすkビット
データ列を上位ビット方向にシフトするシフト処理ステ
ップと、前記第1のレジスタに形成したデータの値が前
記入力データnの値より小さくなるまで、前記第1のレ
ジスタのデータ値から前記シフト処理済みの第2のレジ
スタの値を繰り返し引く剰余算処理ステップと、前記プ
ロセッサが、前記第1のレジスタにある剰余算処理済み
の値をlog2(k)回二乗する乗算処理ステップとを備え、
入力データnに対して、nを除数とした、nの2進化ビ
ット数をkとして、22kmod(n)を計算して前記計算装置
に与えることを特徴とする。
【0011】上記構成により、入力データnに対して、
ビットシフト、減算、乗算の効率的処理ステップにより
22kmod(n)を計算して計算装置に与えることができ、モ
ントゴメリーアルゴリズムで用いる22kmod(n)の指数剰
余算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
ビットシフト、減算、乗算の効率的処理ステップにより
22kmod(n)を計算して計算装置に与えることができ、モ
ントゴメリーアルゴリズムで用いる22kmod(n)の指数剰
余算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
【0012】次に、前記計算装置のデータ処理高速化方
法は、前記剰余算処理ステップにおいて、前記第1のレ
ジスタの値から前記第2のレジスタの値をmビットずつ
繰り返し引くことが好ましい。
法は、前記剰余算処理ステップにおいて、前記第1のレ
ジスタの値から前記第2のレジスタの値をmビットずつ
繰り返し引くことが好ましい。
【0013】上記構成により、除数nを表わすビット列
を適切な回数mビット単位の減算によりでビットシフト
することによって、除数nの0でない最上位ビットをm
の第二の整数倍によって規定されるビット位置に合わす
ことができる。
を適切な回数mビット単位の減算によりでビットシフト
することによって、除数nの0でない最上位ビットをm
の第二の整数倍によって規定されるビット位置に合わす
ことができる。
【0014】次に、前記計算装置のデータ処理高速化方
法は、前記データ形成処理ステップが、前記第1のレジ
スタをクリアする処理ステップと、前記第1のレジスタ
の2 h*m+1ビット位置に1をロードする処理ステップと
を備えることが好ましい。
法は、前記データ形成処理ステップが、前記第1のレジ
スタをクリアする処理ステップと、前記第1のレジスタ
の2 h*m+1ビット位置に1をロードする処理ステップと
を備えることが好ましい。
【0015】上記構成により、前回の剰余算処理結果が
残っている場合でも次の新たな指数剰余演算処理を実行
することができる。
残っている場合でも次の新たな指数剰余演算処理を実行
することができる。
【0016】また、上記目的を達成するために、本発明
の計算装置のデータ処理高速化方法は、指数剰余算処理
を用いる計算装置のデータ処理を、mビットオペランド
データを扱うプロセッサを用いて高速化する方法であっ
て、入力データnに対して、nを2進化ビットに変換
し、そのビット数kを求める処理ステップと、前記オペ
ランドビット数mとの積が前記k以上となる整数のう
ち、最小の整数hを検知し、第1のレジスタに、2
h*m+1ビットが1でありそれより下位の全ビットが0で
あるデータを形成するデータ形成処理ステップと、前記
オペランドビット数mの整数倍のビット長を持つ第2の
レジスタに、前記入力データnを表わすkビットデータ
をロードするデータロード処理ステップと、前記第2の
レジスタにロードした前記nを表わすkビットデータの
最上位ノンゼロビットが(h*m)−1ビット位置にく
るまで、前記nを表わすkビットデータ列を上位ビット
方向にシフトするシフト処理ステップと、前記シフト処
理済みの第2のレジスタの値により前記第1のレジスタ
の値を剰余算する剰余算処理ステップと、前記プロセッ
サが、前記第1のレジスタにある剰余算処理済みの値を
log2(k)回二乗する乗算処理ステップとを備え、入力デ
ータnに対して、nを除数とした、nの2進化ビット数
をkとして、22kmod(n)を計算して前記計算装置に与え
ることを特徴とする。
の計算装置のデータ処理高速化方法は、指数剰余算処理
を用いる計算装置のデータ処理を、mビットオペランド
データを扱うプロセッサを用いて高速化する方法であっ
て、入力データnに対して、nを2進化ビットに変換
し、そのビット数kを求める処理ステップと、前記オペ
ランドビット数mとの積が前記k以上となる整数のう
ち、最小の整数hを検知し、第1のレジスタに、2
h*m+1ビットが1でありそれより下位の全ビットが0で
あるデータを形成するデータ形成処理ステップと、前記
オペランドビット数mの整数倍のビット長を持つ第2の
レジスタに、前記入力データnを表わすkビットデータ
をロードするデータロード処理ステップと、前記第2の
レジスタにロードした前記nを表わすkビットデータの
最上位ノンゼロビットが(h*m)−1ビット位置にく
るまで、前記nを表わすkビットデータ列を上位ビット
方向にシフトするシフト処理ステップと、前記シフト処
理済みの第2のレジスタの値により前記第1のレジスタ
の値を剰余算する剰余算処理ステップと、前記プロセッ
サが、前記第1のレジスタにある剰余算処理済みの値を
log2(k)回二乗する乗算処理ステップとを備え、入力デ
ータnに対して、nを除数とした、nの2進化ビット数
をkとして、22kmod(n)を計算して前記計算装置に与え
ることを特徴とする。
【0017】上記構成により、入力データnに対して、
ビットシフト、減算、乗算の効率的処理ステップにより
22kmod(n)を計算して計算装置に与えることができ、モ
ントゴメリーアルゴリズムで用いる22kmod(n)の指数剰
余算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
ビットシフト、減算、乗算の効率的処理ステップにより
22kmod(n)を計算して計算装置に与えることができ、モ
ントゴメリーアルゴリズムで用いる22kmod(n)の指数剰
余算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
【0018】次に、前記剰余算処理ステップが、前記第
1のレジスタに形成したデータの値が前記入力データn
の値より小さくなるまで、前記第1のレジスタのデータ
値から前記シフト処理済みの第2のレジスタの値を繰り
返し引く処理ステップであることが好ましい。さらに、
前記剰余算処理ステップにおいて、前記第1のレジスタ
の値から前記第2のレジスタの値をmビットずつ繰り返
し引くことが好ましい。
1のレジスタに形成したデータの値が前記入力データn
の値より小さくなるまで、前記第1のレジスタのデータ
値から前記シフト処理済みの第2のレジスタの値を繰り
返し引く処理ステップであることが好ましい。さらに、
前記剰余算処理ステップにおいて、前記第1のレジスタ
の値から前記第2のレジスタの値をmビットずつ繰り返
し引くことが好ましい。
【0019】上記構成により、剰余算処理をレジスタに
ある値を用いた減算処理の繰り返しで高速に実行でき
る。
ある値を用いた減算処理の繰り返しで高速に実行でき
る。
【0020】また、上記目的を達成するために、本発明
の計算装置のデータ処理高速化方法は、指数剰余算処理
を用いる計算装置のデータ処理を、mビットオペランド
データを扱うプロセッサを用いて高速化する方法であっ
て、入力データnに対して、nを2進化ビットに変換
し、そのビット数kを求める処理ステップと、前記オペ
ランドビット数mとの積が前記k以上となる整数のう
ち、最小の整数hを検知し、第1のレジスタに、2
h*m+1ビットが1でありそれより下位の全ビットが0で
あるデータを形成するデータ形成処理ステップと、前記
オペランドビット数mの整数倍のビット長を持つ第2の
レジスタに、前記入力データnを表わすkビットデータ
列の最上位ノンゼロビットの位置が前記第2のレジスタ
の(h*m)−1ビット位置にくるようにデータを形成
する第2のデータ形成処理ステップと、前記第2のレジ
スタの値により前記第1のレジスタの値を剰余算する剰
余算処理ステップと、前記プロセッサが、前記第1のレ
ジスタにある剰余算処理済みの値をlog2(k)回二乗する
乗算処理ステップとを備え、入力データnに対して、n
を除数とした、nの2進化ビット数をkとして、22kmo
d(n)を計算して前記計算装置に与えることを特徴とす
る。
の計算装置のデータ処理高速化方法は、指数剰余算処理
を用いる計算装置のデータ処理を、mビットオペランド
データを扱うプロセッサを用いて高速化する方法であっ
て、入力データnに対して、nを2進化ビットに変換
し、そのビット数kを求める処理ステップと、前記オペ
ランドビット数mとの積が前記k以上となる整数のう
ち、最小の整数hを検知し、第1のレジスタに、2
h*m+1ビットが1でありそれより下位の全ビットが0で
あるデータを形成するデータ形成処理ステップと、前記
オペランドビット数mの整数倍のビット長を持つ第2の
レジスタに、前記入力データnを表わすkビットデータ
列の最上位ノンゼロビットの位置が前記第2のレジスタ
の(h*m)−1ビット位置にくるようにデータを形成
する第2のデータ形成処理ステップと、前記第2のレジ
スタの値により前記第1のレジスタの値を剰余算する剰
余算処理ステップと、前記プロセッサが、前記第1のレ
ジスタにある剰余算処理済みの値をlog2(k)回二乗する
乗算処理ステップとを備え、入力データnに対して、n
を除数とした、nの2進化ビット数をkとして、22kmo
d(n)を計算して前記計算装置に与えることを特徴とす
る。
【0021】上記構成により、入力データnに対して、
ビットシフト、減算、乗算の効率的処理ステップにより
22kmod(n)を計算して計算装置に与えることができ、モ
ントゴメリーアルゴリズムで用いる22kmod(n)の指数剰
余算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
ビットシフト、減算、乗算の効率的処理ステップにより
22kmod(n)を計算して計算装置に与えることができ、モ
ントゴメリーアルゴリズムで用いる22kmod(n)の指数剰
余算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
【0022】次に、前記剰余算処理ステップが、前記第
1のレジスタの値が前記入力データnの値より小さくな
るまで、前記第1のレジスタのデータ値から前記第2の
レジスタの値を繰り返し引く処理ステップであることが
好ましい。さらに、前記剰余算処理ステップにおいて、
前記第1のレジスタの値から前記第2のレジスタの値を
mビットずつ繰り返し引くことが好ましい。
1のレジスタの値が前記入力データnの値より小さくな
るまで、前記第1のレジスタのデータ値から前記第2の
レジスタの値を繰り返し引く処理ステップであることが
好ましい。さらに、前記剰余算処理ステップにおいて、
前記第1のレジスタの値から前記第2のレジスタの値を
mビットずつ繰り返し引くことが好ましい。
【0023】上記構成により、剰余算処理をレジスタに
ある値を用いた減算処理の繰り返しで高速に実行でき
る。
ある値を用いた減算処理の繰り返しで高速に実行でき
る。
【0024】上記目的を達成するために、本発明の計算
装置のデータ処理高速化装置は、指数剰余算処理を用い
る計算装置のデータ処理を高速化する装置であって、m
(mは2以上の整数)ビットオペランドデータを扱うプ
ロセッサと、入力データnに対して、nを2進化ビット
に変換し、そのビット数kを求める2進化ビット数算出
手段と、前記オペランドビット数mとの積が前記k以上
となる整数のうち、最小の整数hを検知し、第1のレジ
スタに、2h*m+1ビットが1でありそれより下位の全ビ
ットが0であるデータを形成するデータ形成手段と、前
記オペランドビット数mの整数倍のビット長を持つ第2
のレジスタに、前記入力データnを表わすkビットデー
タをロードするデータロード手段と、前記第2のレジス
タにロードした前記nを表わすkビットデータの最上位
ノンゼロビットが前記オペランドビット数mの整数倍の
ビット位置にくるまで、前記nを表わすkビットデータ
列を上位ビット方向にシフトするビットシフト手段と、
前記第1のレジスタに形成したデータの値が前記入力デ
ータnの値より小さくなるまで、前記第1のレジスタの
データ値から前記シフト処理済みの第2のレジスタの値
を繰り返し引く剰余算処理手段と、前記第1のレジスタ
にある剰余算処理済みの値をlog2(k)回二乗する乗算処
理手段を備え、入力データnに対して、nを除数とし
た、nの2進化ビット数をkとして、22kmod(n)を計算
して前記計算装置に与えることを特徴とする。
装置のデータ処理高速化装置は、指数剰余算処理を用い
る計算装置のデータ処理を高速化する装置であって、m
(mは2以上の整数)ビットオペランドデータを扱うプ
ロセッサと、入力データnに対して、nを2進化ビット
に変換し、そのビット数kを求める2進化ビット数算出
手段と、前記オペランドビット数mとの積が前記k以上
となる整数のうち、最小の整数hを検知し、第1のレジ
スタに、2h*m+1ビットが1でありそれより下位の全ビ
ットが0であるデータを形成するデータ形成手段と、前
記オペランドビット数mの整数倍のビット長を持つ第2
のレジスタに、前記入力データnを表わすkビットデー
タをロードするデータロード手段と、前記第2のレジス
タにロードした前記nを表わすkビットデータの最上位
ノンゼロビットが前記オペランドビット数mの整数倍の
ビット位置にくるまで、前記nを表わすkビットデータ
列を上位ビット方向にシフトするビットシフト手段と、
前記第1のレジスタに形成したデータの値が前記入力デ
ータnの値より小さくなるまで、前記第1のレジスタの
データ値から前記シフト処理済みの第2のレジスタの値
を繰り返し引く剰余算処理手段と、前記第1のレジスタ
にある剰余算処理済みの値をlog2(k)回二乗する乗算処
理手段を備え、入力データnに対して、nを除数とし
た、nの2進化ビット数をkとして、22kmod(n)を計算
して前記計算装置に与えることを特徴とする。
【0025】上記構成により、入力データnに対して、
ビットシフト、減算、乗算処理を実行して22kmod(n)を
効率的に生成して計算装置に与え、モントゴメリーアル
ゴリズムで用いる22kmod(n)の指数剰余算処理を高速化
することができる。
ビットシフト、減算、乗算処理を実行して22kmod(n)を
効率的に生成して計算装置に与え、モントゴメリーアル
ゴリズムで用いる22kmod(n)の指数剰余算処理を高速化
することができる。
【0026】次に、前記剰余算処理手段が、前記第1の
レジスタの値が前記入力データnの値より小さくなるま
で、前記第1のレジスタのデータ値から前記第2のレジ
スタの値を繰り返し引くことが好ましい。さらに、前記
剰余算処理手段が、前記第1のレジスタの値から前記第
2のレジスタの値をmビットずつ繰り返し引くものであ
ることが好ましい。
レジスタの値が前記入力データnの値より小さくなるま
で、前記第1のレジスタのデータ値から前記第2のレジ
スタの値を繰り返し引くことが好ましい。さらに、前記
剰余算処理手段が、前記第1のレジスタの値から前記第
2のレジスタの値をmビットずつ繰り返し引くものであ
ることが好ましい。
【0027】上記構成により、剰余算処理をレジスタに
ある値を用いた減算処理の繰り返しで高速に実行でき
る。
ある値を用いた減算処理の繰り返しで高速に実行でき
る。
【0028】また、上記目的を達成するために、本発明
の計算装置のデータ処理高速化方法は、固定オペランド
サイズm(mは正の整数)のプロセッサを有し、除数n
(nは正の整数)により値x(xは正の整数)を剰余算
する剰余算装置の剰余算処理を高速化する方法であっ
て、入力データnに対して、nを2進化ビットに変換
し、そのビット数kを求める2進化ビット数算出処理ス
テップと、第1のレジスタに値xをロードする処理ステ
ップと、前記オペランドビット数mとの積が前記k以上
となる整数のうち、最小の整数をhとし、前記入力デー
タnを表わすkビットデータ列の最上位ノンゼロビット
の位置が第2のレジスタの(h*m)−1ビット位置に
くるようにデータを形成する第2のデータ形成処理ステ
ップと、前記第1のレジスタに形成したデータの値が前
記入力データnの値より小さくなるまで、前記第1のレ
ジスタのデータ値から前記第2のレジスタの値を繰り返
し引く剰余算処理ステップを備えることが好ましい。
の計算装置のデータ処理高速化方法は、固定オペランド
サイズm(mは正の整数)のプロセッサを有し、除数n
(nは正の整数)により値x(xは正の整数)を剰余算
する剰余算装置の剰余算処理を高速化する方法であっ
て、入力データnに対して、nを2進化ビットに変換
し、そのビット数kを求める2進化ビット数算出処理ス
テップと、第1のレジスタに値xをロードする処理ステ
ップと、前記オペランドビット数mとの積が前記k以上
となる整数のうち、最小の整数をhとし、前記入力デー
タnを表わすkビットデータ列の最上位ノンゼロビット
の位置が第2のレジスタの(h*m)−1ビット位置に
くるようにデータを形成する第2のデータ形成処理ステ
ップと、前記第1のレジスタに形成したデータの値が前
記入力データnの値より小さくなるまで、前記第1のレ
ジスタのデータ値から前記第2のレジスタの値を繰り返
し引く剰余算処理ステップを備えることが好ましい。
【0029】上記剰余算方法によれば、入力データnに
対して、ビットシフト、減算、乗算処理を実行して22k
mod(n)を効率的に生成して計算装置に与え、モントゴメ
リーアルゴリズムで用いる22kmod(n)の指数剰余算処理
を高速化することができる。
対して、ビットシフト、減算、乗算処理を実行して22k
mod(n)を効率的に生成して計算装置に与え、モントゴメ
リーアルゴリズムで用いる22kmod(n)の指数剰余算処理
を高速化することができる。
【0030】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照しながら説明する。
て図面を参照しながら説明する。
【0031】本発明は、任意の除数の大きさを扱うモン
トゴメリーアルゴリズムを用いた暗号復号処理を実行す
る計算装置のデータ処理を高速化する方法および装置で
あって、特に入力に対して指数剰余演算処理を高速に実
行して計算装置に提供し、計算装置のシステム性能およ
びデータスループットに対する影響を最小にしつつ、十
分なレベルの通信セキュリティ構築を確保せしめるもの
である。以下の説明では、計算装置のデータ処理を高速
化する方法および装置複数の図面にわたり、同一または
類似の番号は同一または類似の要素を表わしている。
トゴメリーアルゴリズムを用いた暗号復号処理を実行す
る計算装置のデータ処理を高速化する方法および装置で
あって、特に入力に対して指数剰余演算処理を高速に実
行して計算装置に提供し、計算装置のシステム性能およ
びデータスループットに対する影響を最小にしつつ、十
分なレベルの通信セキュリティ構築を確保せしめるもの
である。以下の説明では、計算装置のデータ処理を高速
化する方法および装置複数の図面にわたり、同一または
類似の番号は同一または類似の要素を表わしている。
【0032】図1には、典型的な暗号システム装置10
に対して本発明の指数剰余演算装置20を適用した例の
ブロック図が示されている。暗号システム装置10は、
中央処理ユニット(CPU)12、ランダムアクセスメ
モリ(RAM)14、読み出し専用メモリ(ROM)1
6、および指数剰余演算装置20を含んでいる。暗号シ
ステム装置10の各要素は、データおよびコントロール
メッセージが送信される双方向データバスおよびコント
ロールバス18によって共に結合されている。CPU1
2は、暗号システム10の処理を制御しており、従来の
マイクロプロセッサまたはデジタルシグナルプロセッサ
によって提供してもよい。RAM14は、CPU12の
制御処理のための一時データ記憶を行い、ROM16
は、ソフトウェアの不揮発記憶を行うもので、CPU1
2によりシーケンシャルに処理される暗号システム10
の全体的処理に関する制御命令セットが記憶される。指
数剰余演算装置20は、暗号システム装置10の暗号処
理・復号処理を高速化するための装置であって、特定用
向け集積回路(ASIC)またはフィールドプログラマ
ブルゲートアレイ(FPGA)などの特殊機能デバイス
を含み、CPU12における指数剰余演算に関する処理
の実行のために利用される。上記構成の代わりに、暗号
システム装置10の各要素と指数剰余演算装置20が埋
め込みコアプロセスとして提供されるASICまたはF
PGA内に含まれていてもよい。
に対して本発明の指数剰余演算装置20を適用した例の
ブロック図が示されている。暗号システム装置10は、
中央処理ユニット(CPU)12、ランダムアクセスメ
モリ(RAM)14、読み出し専用メモリ(ROM)1
6、および指数剰余演算装置20を含んでいる。暗号シ
ステム装置10の各要素は、データおよびコントロール
メッセージが送信される双方向データバスおよびコント
ロールバス18によって共に結合されている。CPU1
2は、暗号システム10の処理を制御しており、従来の
マイクロプロセッサまたはデジタルシグナルプロセッサ
によって提供してもよい。RAM14は、CPU12の
制御処理のための一時データ記憶を行い、ROM16
は、ソフトウェアの不揮発記憶を行うもので、CPU1
2によりシーケンシャルに処理される暗号システム10
の全体的処理に関する制御命令セットが記憶される。指
数剰余演算装置20は、暗号システム装置10の暗号処
理・復号処理を高速化するための装置であって、特定用
向け集積回路(ASIC)またはフィールドプログラマ
ブルゲートアレイ(FPGA)などの特殊機能デバイス
を含み、CPU12における指数剰余演算に関する処理
の実行のために利用される。上記構成の代わりに、暗号
システム装置10の各要素と指数剰余演算装置20が埋
め込みコアプロセスとして提供されるASICまたはF
PGA内に含まれていてもよい。
【0033】従来技術において周知であるように、暗号
システムは、安全性の低い通信チャネルとデータユーザ
との間のインタフェースを提供する。暗号システムは、
通信チャネルを介して暗号システムと通信するリモート
送信機(図示せず)などの外部ソースから暗号データを
受信する。暗号データは、暗号システムによって復号さ
れ、復号データがデータユーザに提供される。逆にデー
タユーザは、平文データを暗号化して通信チャネルを介
して送信するため暗号システムに入力する。暗号システ
ムは、コントロールデータ、公開鍵情報などの様々な平
文メッセージも送受信する。暗号システムにおける通信
のすべてがデータバスおよびコントロールバス18を介
して行なわれている。
システムは、安全性の低い通信チャネルとデータユーザ
との間のインタフェースを提供する。暗号システムは、
通信チャネルを介して暗号システムと通信するリモート
送信機(図示せず)などの外部ソースから暗号データを
受信する。暗号データは、暗号システムによって復号さ
れ、復号データがデータユーザに提供される。逆にデー
タユーザは、平文データを暗号化して通信チャネルを介
して送信するため暗号システムに入力する。暗号システ
ムは、コントロールデータ、公開鍵情報などの様々な平
文メッセージも送受信する。暗号システムにおける通信
のすべてがデータバスおよびコントロールバス18を介
して行なわれている。
【0034】指数剰余演算装置20を図2により詳細に
示す。指数剰余演算装置20は、インタフェース回路2
2、一対の並列処理ユニット24a、24b、およびR
AM25を含み、これらはすべてデータバスおよびコン
トロールバス27を介して内部でつながっている。イン
タフェース回路22は、指数剰余演算装置20と前記暗
号システム装置10のデータバスおよびコントロールバ
ス18との間の通信を制御する。処理ユニット24a、
24bは、それぞれの制御ユニット26a、26bおよ
び乗算器ユニット28a、28bを含み、これらは、以
下さらに説明するように指数剰余演算プロセスを実行す
る内部回路要素をさらに含む。指数剰余演算処理を実行
している間、RAM25は、制御ユニット26a、26
bおよび乗算器ユニット28a、28bによって生成さ
れたデータ値の一時記憶を行う。
示す。指数剰余演算装置20は、インタフェース回路2
2、一対の並列処理ユニット24a、24b、およびR
AM25を含み、これらはすべてデータバスおよびコン
トロールバス27を介して内部でつながっている。イン
タフェース回路22は、指数剰余演算装置20と前記暗
号システム装置10のデータバスおよびコントロールバ
ス18との間の通信を制御する。処理ユニット24a、
24bは、それぞれの制御ユニット26a、26bおよ
び乗算器ユニット28a、28bを含み、これらは、以
下さらに説明するように指数剰余演算プロセスを実行す
る内部回路要素をさらに含む。指数剰余演算処理を実行
している間、RAM25は、制御ユニット26a、26
bおよび乗算器ユニット28a、28bによって生成さ
れたデータ値の一時記憶を行う。
【0035】図3に、指数剰余演算装置20によって実
行される機能のシステムレベルのフローダイアグラムを
示す。ステップ101において示されているように、指
数剰余演算装置20は、入力データnに対して、モント
ゴメリー形式であるy=bemod(n)形式の指数剰余演算
を計算して出力する。ここで、nは除数である。除数
n、底bおよび指数eは2進数表現で各々kビットの長
さとする。本発明の好ましい実施の形態においては、k
は1,024ビットである。従来の方法を用いると、そのよ
うな指数剰余演算を解くには、実行しなければならない
乗算計算および剰余計算の回数が多く、それらのデータ
長が大きいため、膨大な計算が必要であろう。本発明に
おいては、問題の大きさを小さくし、実行する乗算の回
数を減らすことによって、指数剰余演算を高効率な方法
により実行する。
行される機能のシステムレベルのフローダイアグラムを
示す。ステップ101において示されているように、指
数剰余演算装置20は、入力データnに対して、モント
ゴメリー形式であるy=bemod(n)形式の指数剰余演算
を計算して出力する。ここで、nは除数である。除数
n、底bおよび指数eは2進数表現で各々kビットの長
さとする。本発明の好ましい実施の形態においては、k
は1,024ビットである。従来の方法を用いると、そのよ
うな指数剰余演算を解くには、実行しなければならない
乗算計算および剰余計算の回数が多く、それらのデータ
長が大きいため、膨大な計算が必要であろう。本発明に
おいては、問題の大きさを小さくし、実行する乗算の回
数を減らすことによって、指数剰余演算を高効率な方法
により実行する。
【0036】指数剰余演算を効率的に求める方法につい
て以下、検討する。
て以下、検討する。
【0037】指数剰余演算を解くための第一のステップ
として、下記(数1)のように元の指数剰余演算を各コ
ンポーネントに分ける。
として、下記(数1)のように元の指数剰余演算を各コ
ンポーネントに分ける。
【0038】
【数1】
【0039】ここで、pおよびqは大きい素数であり、
n=p*qである。セキュリティのために、pおよびq
はほぼ同じ大きさであるべきである。従来技術として周
知であるように、項q-1mod(p)は、中国人剰余定理か
ら導出される逆数と呼ばれる特殊値である。q-1mod
(p)はqmodpの逆数である。この逆数は、br e(p)mod
pと同じオーダの指数剰余演算を表わすので、ステップ
108において前もって逆数を予め計算し、RAM25
に記憶しておいてもよい。値e(p)およびe(q)は、それ
ぞれemod(p-1)およびemod(q-1)に等しいk/2ビッ
ト値である。br e(p)modpおよびbr e(q)modqにおける
値低減された低減底項brは、それぞれpおよびqに関
してbの剰余算を行うことによって提供される。したが
って、低減底項brもk/2ビット長を有する。
n=p*qである。セキュリティのために、pおよびq
はほぼ同じ大きさであるべきである。従来技術として周
知であるように、項q-1mod(p)は、中国人剰余定理か
ら導出される逆数と呼ばれる特殊値である。q-1mod
(p)はqmodpの逆数である。この逆数は、br e(p)mod
pと同じオーダの指数剰余演算を表わすので、ステップ
108において前もって逆数を予め計算し、RAM25
に記憶しておいてもよい。値e(p)およびe(q)は、それ
ぞれemod(p-1)およびemod(q-1)に等しいk/2ビッ
ト値である。br e(p)modpおよびbr e(q)modqにおける
値低減された低減底項brは、それぞれpおよびqに関
してbの剰余算を行うことによって提供される。したが
って、低減底項brもk/2ビット長を有する。
【0040】図3に示されているように、指数剰余演算
を分けることにより、二つの並列パスによる処理が可能
となり、これらは、図2のそれぞれの処理ユニット24
a、24bによって別々に処理される。ステップ10
4、105において、以下さらに説明する技術を用いて
指数剰余演算br e(p)modpおよびbr e(q)modqを別々に
計算する。ステップ102、103において、前もって
両者の指数剰余演算の各底項brを予め計算し、RAM
25に記憶しておいてもよい。
を分けることにより、二つの並列パスによる処理が可能
となり、これらは、図2のそれぞれの処理ユニット24
a、24bによって別々に処理される。ステップ10
4、105において、以下さらに説明する技術を用いて
指数剰余演算br e(p)modpおよびbr e(q)modqを別々に
計算する。ステップ102、103において、前もって
両者の指数剰余演算の各底項brを予め計算し、RAM
25に記憶しておいてもよい。
【0041】pおよびqの長さが各々k/2ビットであ
るので、それぞれの問題の大きさが元の形よりかなり小
さく低減されている。さらに、二つの低減化された(k
/2ビットの)指数剰余演算の計算は、一つの処理ユニ
ット内で、対応する元の(kビットの)指数剰余演算の
計算より、必要とするコンピュータ処理時間がかなり短
くなる。この処理時間の減少は、以下に説明するような
効率的なアルゴリズムで指数剰余演算を実行する際に必
要となる乗算回数が、2s2+sに比例することから達
成され得る。ここで、sは、kを乗算オペランドのビッ
トサイズで割った値に等しい。sワードの問題を二つの
分割したs/2ワードの問題として処理すると、1累乗
あたりの乗算処理の回数が(s2/2)+(s/2)に比例
して減少する。たとえば、kが1,024ビットであ
り、乗算オペランドが128ビットであれば、sは8に
なる。したがって、sワードの問題は、136に比例す
る回数の乗算処理を必要とし、一方、二つに分割したs
/2ワードの問題は、それぞれ36に比例する回数の乗
算処理を必要とするであろう。したがって、乗算処理の
回数は、3.778倍減少する。
るので、それぞれの問題の大きさが元の形よりかなり小
さく低減されている。さらに、二つの低減化された(k
/2ビットの)指数剰余演算の計算は、一つの処理ユニ
ット内で、対応する元の(kビットの)指数剰余演算の
計算より、必要とするコンピュータ処理時間がかなり短
くなる。この処理時間の減少は、以下に説明するような
効率的なアルゴリズムで指数剰余演算を実行する際に必
要となる乗算回数が、2s2+sに比例することから達
成され得る。ここで、sは、kを乗算オペランドのビッ
トサイズで割った値に等しい。sワードの問題を二つの
分割したs/2ワードの問題として処理すると、1累乗
あたりの乗算処理の回数が(s2/2)+(s/2)に比例
して減少する。たとえば、kが1,024ビットであ
り、乗算オペランドが128ビットであれば、sは8に
なる。したがって、sワードの問題は、136に比例す
る回数の乗算処理を必要とし、一方、二つに分割したs
/2ワードの問題は、それぞれ36に比例する回数の乗
算処理を必要とするであろう。したがって、乗算処理の
回数は、3.778倍減少する。
【0042】br=bmodpの計算は、1996年6月、
IEEEマイクロ(IEEE Micro)において発表された、
セチン・カヤ・コス(Cetin Kaya Coc)らによる論文
「モントゴメリー乗算アルゴリズムの分析および比較」
("Analyzing and Comparing Montgomery Multiplicati
on Algorithms")に記載されているように、ユークリッ
ド逆数を計算し、モントゴメリーアルゴリズムを適用す
ることによって行うことができる。この計算の一部は、
任意のnに関して22kmod(n)の計算が必要である。こ
こで、任意のnに関して22kmod(n)の計算が高速に行
なうことができるとbr=bmodp、br e(p)modpおよび
br e(q)modqの計算が高速化され、指数剰余演算全体の
高速化を達成することができる。この22kmod(n)の計
算を実行する効率的な計算処理方法は、図9および図1
0を参照して後述する。
IEEEマイクロ(IEEE Micro)において発表された、
セチン・カヤ・コス(Cetin Kaya Coc)らによる論文
「モントゴメリー乗算アルゴリズムの分析および比較」
("Analyzing and Comparing Montgomery Multiplicati
on Algorithms")に記載されているように、ユークリッ
ド逆数を計算し、モントゴメリーアルゴリズムを適用す
ることによって行うことができる。この計算の一部は、
任意のnに関して22kmod(n)の計算が必要である。こ
こで、任意のnに関して22kmod(n)の計算が高速に行
なうことができるとbr=bmodp、br e(p)modpおよび
br e(q)modqの計算が高速化され、指数剰余演算全体の
高速化を達成することができる。この22kmod(n)の計
算を実行する効率的な計算処理方法は、図9および図1
0を参照して後述する。
【0043】ステップ104、105の計算に続き、ス
テップ106において、br e(p)modpから項br e(q)mod
qを引き、その結果にpを加える。ステップ107にお
いて、得られた和にステップ108において予め計算さ
れていた逆数q-1modpを乗じる。このステップは、以
下さらに説明するように剰余演算処理のために最適化し
た乗算器28a、28bのうちの一つによって実行して
もよい。ステップ109において、pに関して得られた
積を剰余算し、ステップ110において、さらにその積
にqを乗じて、kビット値を生成する。最後に、ステッ
プ111において、ステップ105において予め計算さ
れていたbr e(q)modqに最終乗算積を加える。元の項b
eの大きさのかなりの減少に鑑み、ステップ109にお
いて実行する剰余算が、元の指数剰余演算よりかなり容
易であることが理解されるべきである。この指数剰余演
算の最終的な解は、データバスおよびコントロールバス
18に提供され、CPU12によってさらに使用され
る。
テップ106において、br e(p)modpから項br e(q)mod
qを引き、その結果にpを加える。ステップ107にお
いて、得られた和にステップ108において予め計算さ
れていた逆数q-1modpを乗じる。このステップは、以
下さらに説明するように剰余演算処理のために最適化し
た乗算器28a、28bのうちの一つによって実行して
もよい。ステップ109において、pに関して得られた
積を剰余算し、ステップ110において、さらにその積
にqを乗じて、kビット値を生成する。最後に、ステッ
プ111において、ステップ105において予め計算さ
れていたbr e(q)modqに最終乗算積を加える。元の項b
eの大きさのかなりの減少に鑑み、ステップ109にお
いて実行する剰余算が、元の指数剰余演算よりかなり容
易であることが理解されるべきである。この指数剰余演
算の最終的な解は、データバスおよびコントロールバス
18に提供され、CPU12によってさらに使用され
る。
【0044】ここで図4および図5a〜図5cを参照す
ると、図3のステップ104、105のbr e(p)modpお
よびbr e(q)modqの指数剰余演算がより詳細に示されて
いる。図4には、累乗を実行するのに必要な乗算回数を
減らすのに使用される指数ビットスキャン法と呼ばれる
ルーチンを説明するフローチャートが示されている。一
般に、指数ビットスキャンルーチンは、指数関数br
e(p)およびbr e(q)をbrの累乗項の積に分解する。この
ルーチンは、ファームウェアにおいてコーディングして
もよく、ソフトウェアプログラムの形式で前記それぞれ
の処理ユニット24a、24bによってシーケンシャル
に実行されてもよい。代わりに、このルーチンを、指数
ビットスキャンルーチンの様々な機能を実行するように
最適化した専用論理回路としてハードワイヤードで構成
してもよい。簡便にするために、以下、指数関数br
e(p)に関する指数ビットスキャンルーチン処理のみにつ
いて説明するが、指数関数br e(q)に関しても同様の処
理を実行しなければならないことが理解されるべきであ
る。
ると、図3のステップ104、105のbr e(p)modpお
よびbr e(q)modqの指数剰余演算がより詳細に示されて
いる。図4には、累乗を実行するのに必要な乗算回数を
減らすのに使用される指数ビットスキャン法と呼ばれる
ルーチンを説明するフローチャートが示されている。一
般に、指数ビットスキャンルーチンは、指数関数br
e(p)およびbr e(q)をbrの累乗項の積に分解する。この
ルーチンは、ファームウェアにおいてコーディングして
もよく、ソフトウェアプログラムの形式で前記それぞれ
の処理ユニット24a、24bによってシーケンシャル
に実行されてもよい。代わりに、このルーチンを、指数
ビットスキャンルーチンの様々な機能を実行するように
最適化した専用論理回路としてハードワイヤードで構成
してもよい。簡便にするために、以下、指数関数br
e(p)に関する指数ビットスキャンルーチン処理のみにつ
いて説明するが、指数関数br e(q)に関しても同様の処
理を実行しなければならないことが理解されるべきであ
る。
【0045】ステップ200において指数ビットスキャ
ンルーチンを呼び出し、ステップ201においてランニ
ングトータル値を1に初期設定する。ステップ202に
おいて、ビットスキャンされる指数e(p)をレジスタ3
2にロードする。図5a〜図5cには、レジスタ32に
ロードされているkビットの指数e(例えば、ek-1-e
0)が示されている。レジスタ32は、RAM25内で
所定のメモリ空間を含んでいてもよい。まず、指数eの
所定数のビットに対してアクセスするためのウィンドウ
枠34を規定する。ここでは、例として3ビットのウィ
ンドウサイズを使用するが、異なったサイズのものを状
況に応じて使用することもできる。ステップ203およ
び204で規定されるループによって示されているよう
に、3ビットウィンドウの最上位ビット(MSB)に1
が現われるまでウィンドウ枠34をレジスタ32の左側
からシフトする。ステップ203において、1があるか
どうかMSBをチェックし、1を検出しなければ、ステ
ップ204において、ウィンドウ枠34を1ビット右側
にシフトする。図5bには、1ビット右側にシフトされ
たウィンドウ枠34が示されている。このように1を検
出するまでステップ203および204を繰り返す。
ンルーチンを呼び出し、ステップ201においてランニ
ングトータル値を1に初期設定する。ステップ202に
おいて、ビットスキャンされる指数e(p)をレジスタ3
2にロードする。図5a〜図5cには、レジスタ32に
ロードされているkビットの指数e(例えば、ek-1-e
0)が示されている。レジスタ32は、RAM25内で
所定のメモリ空間を含んでいてもよい。まず、指数eの
所定数のビットに対してアクセスするためのウィンドウ
枠34を規定する。ここでは、例として3ビットのウィ
ンドウサイズを使用するが、異なったサイズのものを状
況に応じて使用することもできる。ステップ203およ
び204で規定されるループによって示されているよう
に、3ビットウィンドウの最上位ビット(MSB)に1
が現われるまでウィンドウ枠34をレジスタ32の左側
からシフトする。ステップ203において、1があるか
どうかMSBをチェックし、1を検出しなければ、ステ
ップ204において、ウィンドウ枠34を1ビット右側
にシフトする。図5bには、1ビット右側にシフトされ
たウィンドウ枠34が示されている。このように1を検
出するまでステップ203および204を繰り返す。
【0046】ステップ205において、MSBで1を検
出すると、ウィンドウ枠34の3ビットの二進数値を読
み出す。MSBが1であるので、この数は必然的に4、
5、6または7(すなわち、それぞれ二進数100、1
01、110または111である)となる。ステップ2
06において、低減底brをウィンドウ枠34から読み
出した二進数値で累乗した値で、予め計算して用意され
ている値(すなわち、それぞれbr 4、br 5、br 6または
br 7)をメモリからフェッチする。ステップ207にお
いて、この予め計算して用意した値をランニングトータ
ル値に乗じる。このためルーチンを通る最初のパスにお
いて、ランニングトータル値をデフォルトとして1に設
定する必要がある。
出すると、ウィンドウ枠34の3ビットの二進数値を読
み出す。MSBが1であるので、この数は必然的に4、
5、6または7(すなわち、それぞれ二進数100、1
01、110または111である)となる。ステップ2
06において、低減底brをウィンドウ枠34から読み
出した二進数値で累乗した値で、予め計算して用意され
ている値(すなわち、それぞれbr 4、br 5、br 6または
br 7)をメモリからフェッチする。ステップ207にお
いて、この予め計算して用意した値をランニングトータ
ル値に乗じる。このためルーチンを通る最初のパスにお
いて、ランニングトータル値をデフォルトとして1に設
定する必要がある。
【0047】その後、ステップ209においてループが
開始し、指数e(p)の最下位ビット(LSB)がウィン
ドウ枠34に入っているかどうか確かめるためにレジス
タ32をチェックする。ウィンドウ枠34のMSBを読
み出すステップ203とは対照的に、ステップ209で
は、指数e(p)全体のLSBに関してチェックする。L
SBがウィンドウ枠34にまだ入っていなければ、ルー
プはステップ212に続き、ウィンドウ枠34を連続的
に右側にシフトし、ステップ213において、前記各シ
フトごとにランニングトータル値を二乗剰余演算をす
る。ループは、前の3ビットがウィンドウ枠34からな
くなるまで3回繰り返し、すなわち、ウィンドウ枠の3
シフトを行う。3シフトを行うと、ルーチンはステップ
216においてMSBが1であるかどうか判断する。M
SBが1であれば、ルーチンはステップ205に戻り、
ウィンドウ枠34の値をもう一度読み出す。MSBが0
であれば、ステップ217において、指数e(p)のLS
Bがウィンドウ34に入っているかどうか確かめるため
にレジスタ32を再びチェックする。LSBがウィンド
ウ枠34になければ、ステップ212および213を含
むループを再び繰り返し、ウィンドウを再び1ビット右
側にシフトし、シフトによってランニングトータル値を
二乗剰余演算する。
開始し、指数e(p)の最下位ビット(LSB)がウィン
ドウ枠34に入っているかどうか確かめるためにレジス
タ32をチェックする。ウィンドウ枠34のMSBを読
み出すステップ203とは対照的に、ステップ209で
は、指数e(p)全体のLSBに関してチェックする。L
SBがウィンドウ枠34にまだ入っていなければ、ルー
プはステップ212に続き、ウィンドウ枠34を連続的
に右側にシフトし、ステップ213において、前記各シ
フトごとにランニングトータル値を二乗剰余演算をす
る。ループは、前の3ビットがウィンドウ枠34からな
くなるまで3回繰り返し、すなわち、ウィンドウ枠の3
シフトを行う。3シフトを行うと、ルーチンはステップ
216においてMSBが1であるかどうか判断する。M
SBが1であれば、ルーチンはステップ205に戻り、
ウィンドウ枠34の値をもう一度読み出す。MSBが0
であれば、ステップ217において、指数e(p)のLS
Bがウィンドウ34に入っているかどうか確かめるため
にレジスタ32を再びチェックする。LSBがウィンド
ウ枠34になければ、ステップ212および213を含
むループを再び繰り返し、ウィンドウを再び1ビット右
側にシフトし、シフトによってランニングトータル値を
二乗剰余演算する。
【0048】ステップ217において、LSBがウィン
ドウ枠34に入っていれば、指数e(p)の端に達してお
り、指数ビットスキャンルーチンがほぼ完了しているこ
とを示す。ステップ222において、ウィンドウ枠34
の最後の2ビットを読み出し、ステップ223におい
て、ウィンドウ枠34から読み出された値の回数、ラン
ニングトータル値に低減底brを乗じる。たとえば、下
位2ビットが1、2または3(すなわち、それぞれ二進
数01、10または11)であれば、それぞれ1回、2
回または3回、前回ランニングトータル値に低減底br
を乗じる。下位2ビットの値が0であれば、ランニング
トータル値は変わらない(すなわち、1を乗じる)。次
に、ステップ224において、指数ビットスキャンルー
チンが終了する。
ドウ枠34に入っていれば、指数e(p)の端に達してお
り、指数ビットスキャンルーチンがほぼ完了しているこ
とを示す。ステップ222において、ウィンドウ枠34
の最後の2ビットを読み出し、ステップ223におい
て、ウィンドウ枠34から読み出された値の回数、ラン
ニングトータル値に低減底brを乗じる。たとえば、下
位2ビットが1、2または3(すなわち、それぞれ二進
数01、10または11)であれば、それぞれ1回、2
回または3回、前回ランニングトータル値に低減底br
を乗じる。下位2ビットの値が0であれば、ランニング
トータル値は変わらない(すなわち、1を乗じる)。次
に、ステップ224において、指数ビットスキャンルー
チンが終了する。
【0049】前記ステップ209における処理の説明に
戻る。ループが開始する前に、指数e(p)のLSBがウ
ィンドウ枠34に入っているかどうか確かめるためにレ
ジスタ32をチェックする。LSBがウィンドウ枠34
に入っていれば、一連のステップを実行し、カウンタ値
をチェックする。カウンタ値は、前記ループを通ったパ
スの回数を示している。カウンタ値が3であれば、ウィ
ンドウ枠34内のビットがすべて既にスキャンされてい
ることを示し、ステップ224において指数ビットスキ
ャンルーチンが終了する。カウント値が2であれば、ウ
ィンドウ枠34内の最後のビット以外が既にスキャンさ
れており、ステップ221において、最後のビット値を
読み出す。カウンタ値が1であれば、ウィンドウ34の
最初のビットだけが既にスキャンされており、ステップ
222において、(前記したように)下2ビットの値を
読み出す。説明を繰り返すが、ステップ223におい
て、ウィンドウで読み出された値の回数、ランニングト
ータル値に低減底brを乗じる。次に、ステップ224
において指数ビットスキャンルーチンが終了する。
戻る。ループが開始する前に、指数e(p)のLSBがウ
ィンドウ枠34に入っているかどうか確かめるためにレ
ジスタ32をチェックする。LSBがウィンドウ枠34
に入っていれば、一連のステップを実行し、カウンタ値
をチェックする。カウンタ値は、前記ループを通ったパ
スの回数を示している。カウンタ値が3であれば、ウィ
ンドウ枠34内のビットがすべて既にスキャンされてい
ることを示し、ステップ224において指数ビットスキ
ャンルーチンが終了する。カウント値が2であれば、ウ
ィンドウ枠34内の最後のビット以外が既にスキャンさ
れており、ステップ221において、最後のビット値を
読み出す。カウンタ値が1であれば、ウィンドウ34の
最初のビットだけが既にスキャンされており、ステップ
222において、(前記したように)下2ビットの値を
読み出す。説明を繰り返すが、ステップ223におい
て、ウィンドウで読み出された値の回数、ランニングト
ータル値に低減底brを乗じる。次に、ステップ224
において指数ビットスキャンルーチンが終了する。
【0050】図8には、10ビット指数eで累乗した底
bの指数剰余演算に関する指数ビットスキャン技術の一
例が示されている。ここでは、e=1011010011である。
連続シフトにより、項b1011010011を、((((((((b5)2)
2)2)*b5)2)2)2)2*b3に換算する。項b5が予め計算
して用意されており、メモリからフェッチされているの
で、その項を計算しなくてよいため、処理時間が節約さ
れる。さらに、剰余算の分配則により、上記項のnにつ
いての剰余算処理についてさらに処理時間の節約ができ
る。膨大な回数の乗算、それに続く等量に膨大な剰余算
ではなく、9回の乗算および剰余算のみが必要となり、
計算処理の中間値がより小さいものなので剰余算の方が
その処理の大きさがより小さいものとなる。
bの指数剰余演算に関する指数ビットスキャン技術の一
例が示されている。ここでは、e=1011010011である。
連続シフトにより、項b1011010011を、((((((((b5)2)
2)2)*b5)2)2)2)2*b3に換算する。項b5が予め計算
して用意されており、メモリからフェッチされているの
で、その項を計算しなくてよいため、処理時間が節約さ
れる。さらに、剰余算の分配則により、上記項のnにつ
いての剰余算処理についてさらに処理時間の節約ができ
る。膨大な回数の乗算、それに続く等量に膨大な剰余算
ではなく、9回の乗算および剰余算のみが必要となり、
計算処理の中間値がより小さいものなので剰余算の方が
その処理の大きさがより小さいものとなる。
【0051】指数e(p)のMSBより指数ビットスキャ
ンが開始するので、各シフトによって二乗剰余算のステ
ップが必要となる。ここで、ウィンドウ枠34内の値は
実際には4、5、6または7ではなく、2kにかかる
4、5、6または7という要素であり、kはウィンドウ
のLSBビットの指数ビット位置である。指数e(p)の
値が底brの累乗として解釈されるので、2kは、k回二
乗することを示唆している。指数e(p)のすべての1を
確実に考慮に入れ、必要とされる予め計算して用意する
値の合計数を減らすために、ウィンドウ内のMSBが1
であれば、予め計算された値を乗じて処理する。
ンが開始するので、各シフトによって二乗剰余算のステ
ップが必要となる。ここで、ウィンドウ枠34内の値は
実際には4、5、6または7ではなく、2kにかかる
4、5、6または7という要素であり、kはウィンドウ
のLSBビットの指数ビット位置である。指数e(p)の
値が底brの累乗として解釈されるので、2kは、k回二
乗することを示唆している。指数e(p)のすべての1を
確実に考慮に入れ、必要とされる予め計算して用意する
値の合計数を減らすために、ウィンドウ内のMSBが1
であれば、予め計算された値を乗じて処理する。
【0052】指数ビットスキャンルーチンにより、br
e(p)modpおよびbr e(q)modqのそれぞれの計算におい
て実行しなければならない乗算の回数が減っているが、
依然として実行しなければならない乗算が多数ある。こ
こで指数剰余演算装置20は、従来技術においてモント
ゴメリー乗算と呼ばれる剰余演算項の効率的な乗算アル
ゴリズムを利用する。モントゴメリーアルゴリズムは、
下記(数2)のように規定されている。
e(p)modpおよびbr e(q)modqのそれぞれの計算におい
て実行しなければならない乗算の回数が減っているが、
依然として実行しなければならない乗算が多数ある。こ
こで指数剰余演算装置20は、従来技術においてモント
ゴメリー乗算と呼ばれる剰余演算項の効率的な乗算アル
ゴリズムを利用する。モントゴメリーアルゴリズムは、
下記(数2)のように規定されている。
【0053】
【数2】
【0054】ここで、kは除数nのビット数であり、n
は2kと互いに素であり、n>a、n>bである。繰り
返し乗算に対するアルゴリズムを使用するために、モン
トゴメリー乗算を実行する前に、aおよびbの値をモン
トゴメリー形式にしなければならない。ここで、 X*2kmodn=XMont である。
は2kと互いに素であり、n>a、n>bである。繰り
返し乗算に対するアルゴリズムを使用するために、モン
トゴメリー乗算を実行する前に、aおよびbの値をモン
トゴメリー形式にしなければならない。ここで、 X*2kmodn=XMont である。
【0055】モントゴメリー乗算される二つの値がモン
トゴメリー形式であれば、結果もモントゴメリー形式で
ある。
トゴメリー形式であれば、結果もモントゴメリー形式で
ある。
【0056】図6には、指数剰余演算装置20によって
実行されるモントゴメリー乗算処理を説明するフローチ
ャートが示されている。図4により前記説明した指数ビ
ットスキャンルーチンのように、モントゴメリー乗算処
理は、ファームウェアにおいてコーディングしてもよ
く、以下さらに説明する処理の特定用途のために用意し
た乗算器28a、28bをアクセスする制御ユニット2
6a、26bによって、それぞれの処理ユニット24
a、24b内でシーケンシャルに実行されてもよい。ま
た代わりに、モントゴメリー乗算ルーチンを、ルーチン
の様々な機能を実行するように最適化された専用論理回
路としてハードワイヤードで構成してもよい。
実行されるモントゴメリー乗算処理を説明するフローチ
ャートが示されている。図4により前記説明した指数ビ
ットスキャンルーチンのように、モントゴメリー乗算処
理は、ファームウェアにおいてコーディングしてもよ
く、以下さらに説明する処理の特定用途のために用意し
た乗算器28a、28bをアクセスする制御ユニット2
6a、26bによって、それぞれの処理ユニット24
a、24b内でシーケンシャルに実行されてもよい。ま
た代わりに、モントゴメリー乗算ルーチンを、ルーチン
の様々な機能を実行するように最適化された専用論理回
路としてハードワイヤードで構成してもよい。
【0057】図6に示されているように、モントゴメリ
ー乗算ルーチンは、一つの主ループと二つの副ループを
含む。主ループにおいて、被乗数biのワードに被乗数
ajの各ワードを乗じる。ここで、jは被乗数ajのワー
ド数であり、iは被乗数biのワード数である。ステッ
プ301において、モントゴメリー乗算ルーチンを呼び
出す。ステップ302において、二つの被乗数ajおよ
びbiを二乗フラグとともにそれぞれのレジスタにロー
ドする。二つの被乗数ajおよびbiが等しければ、二乗
フラグを1に設定し、ステップ400において二乗スピ
ードアップサブルーチンを呼び出すことができる。二乗
スピードアップサブルーチンは、以下より詳細に説明す
る。二つの被乗数ajおよびbiが等しくなければ、二乗
フラグを0に設定する。
ー乗算ルーチンは、一つの主ループと二つの副ループを
含む。主ループにおいて、被乗数biのワードに被乗数
ajの各ワードを乗じる。ここで、jは被乗数ajのワー
ド数であり、iは被乗数biのワード数である。ステッ
プ301において、モントゴメリー乗算ルーチンを呼び
出す。ステップ302において、二つの被乗数ajおよ
びbiを二乗フラグとともにそれぞれのレジスタにロー
ドする。二つの被乗数ajおよびbiが等しければ、二乗
フラグを1に設定し、ステップ400において二乗スピ
ードアップサブルーチンを呼び出すことができる。二乗
スピードアップサブルーチンは、以下より詳細に説明す
る。二つの被乗数ajおよびbiが等しくなければ、二乗
フラグを0に設定する。
【0058】最初の主ループを開始する前に、ステップ
305において、iを1に設定し、被乗数biの最初の
ワードをアクセスする。ステップ306において、二乗
スピードアップサブルーチンを呼び出すべきかどうか判
断するために二乗フラグをチェックする。呼び出さない
場合は、ステップ307においてjを1に設定する。ス
テップ308において、第一の副ループ内で、二つのワ
ードajおよびbiを乗算する。前の桁上げおよび前のc
jにその積を加える。このルーチンを通る最初のパスに
おいて、桁上げおよびcjの初期値が0とする必要があ
る。その結果のうち、下位側のワードをcjとして記憶
し、その結果の上位側のワードを次の桁上げとして使用
する。ステップ309においてajの最後のワードを検
出するまで、ステップ310においてjを増分すること
によって第一の副ループを繰り返し、ステップ309に
おいてajの最後のワードを検出すると、第一の副ルー
プを終了する。第二の副ループを開始する前に、ステッ
プ311において、cjに乗じるとcjの最下位ワードを
全て「0」とする特別換算値を計算し、jを2に設定す
る。その後、ステップ312において、特別換算値に除
数njを乗じ、前の桁上げおよびcjに加える。その結果
のうち下位側のワードをcj-1として記憶し、その結果
の上位側のワードを次のけた上げとして使用する。ステ
ップ313においてcjの最後のワードを検出するま
で、ステップ314においてjを増分することによって
第二の副ループを繰り返し、ステップ313においてc
jの最後のワードを検出すると、第二の副ループを終了
する。第二の副ループが終了すると、ステップ316に
おいてiを増分し、biの最後のワードが主ループを通過
するまで主ループを繰り返す。次に、ステップ317に
おいて、nに関するcjの最終結果の剰余値が得られ
る。ステップ318において、モントゴメリー乗算ルー
チンが終了する。図9には、両方の被乗数が4ワード長
であるajとbiのモントゴメリー乗算の一例が示されて
いる。この例において、前の値すべての組み合わせを示
すために記号Σを使用している。
305において、iを1に設定し、被乗数biの最初の
ワードをアクセスする。ステップ306において、二乗
スピードアップサブルーチンを呼び出すべきかどうか判
断するために二乗フラグをチェックする。呼び出さない
場合は、ステップ307においてjを1に設定する。ス
テップ308において、第一の副ループ内で、二つのワ
ードajおよびbiを乗算する。前の桁上げおよび前のc
jにその積を加える。このルーチンを通る最初のパスに
おいて、桁上げおよびcjの初期値が0とする必要があ
る。その結果のうち、下位側のワードをcjとして記憶
し、その結果の上位側のワードを次の桁上げとして使用
する。ステップ309においてajの最後のワードを検
出するまで、ステップ310においてjを増分すること
によって第一の副ループを繰り返し、ステップ309に
おいてajの最後のワードを検出すると、第一の副ルー
プを終了する。第二の副ループを開始する前に、ステッ
プ311において、cjに乗じるとcjの最下位ワードを
全て「0」とする特別換算値を計算し、jを2に設定す
る。その後、ステップ312において、特別換算値に除
数njを乗じ、前の桁上げおよびcjに加える。その結果
のうち下位側のワードをcj-1として記憶し、その結果
の上位側のワードを次のけた上げとして使用する。ステ
ップ313においてcjの最後のワードを検出するま
で、ステップ314においてjを増分することによって
第二の副ループを繰り返し、ステップ313においてc
jの最後のワードを検出すると、第二の副ループを終了
する。第二の副ループが終了すると、ステップ316に
おいてiを増分し、biの最後のワードが主ループを通過
するまで主ループを繰り返す。次に、ステップ317に
おいて、nに関するcjの最終結果の剰余値が得られ
る。ステップ318において、モントゴメリー乗算ルー
チンが終了する。図9には、両方の被乗数が4ワード長
であるajとbiのモントゴメリー乗算の一例が示されて
いる。この例において、前の値すべての組み合わせを示
すために記号Σを使用している。
【0059】図6のモントゴメリー乗算ルーチンは、乗
算の部分積のいくつかが等しいことを認識して二乗計算
のために応用すると、スピードアップをすることができ
る。特に、被乗数ajが被乗数biに等しい場合、すなわ
ち、二乗処理の場合、通常、乗算の様々な成分の部分積
が繰り返されるであろう。たとえば、a2とb3の部分積
は、a3とb2の部分積に等しい。図9に示されているよ
うに、これらの部分積の両方が第三回目の主ループ反復
時に発生する。したがって、最初にその部分積に出会っ
た時、第二回目の発生を考慮してその部分積に2を乗じ
ることができ、第二の部分積の乗算を完全にスキップす
ることができる。2の乗算は、二進数での一回の左シフ
トを構成するので、全数計算による乗算処理よりかなり
速い。前記指数ビットスキャンルーチンの処理により、
指数剰余演算装置20によって多数の二乗処理が実行さ
れ、二乗処理の速度の増加が、特定の指数剰余演算の全
体的な処理時間にかなり影響を及ぼすことが理解される
べきである。
算の部分積のいくつかが等しいことを認識して二乗計算
のために応用すると、スピードアップをすることができ
る。特に、被乗数ajが被乗数biに等しい場合、すなわ
ち、二乗処理の場合、通常、乗算の様々な成分の部分積
が繰り返されるであろう。たとえば、a2とb3の部分積
は、a3とb2の部分積に等しい。図9に示されているよ
うに、これらの部分積の両方が第三回目の主ループ反復
時に発生する。したがって、最初にその部分積に出会っ
た時、第二回目の発生を考慮してその部分積に2を乗じ
ることができ、第二の部分積の乗算を完全にスキップす
ることができる。2の乗算は、二進数での一回の左シフ
トを構成するので、全数計算による乗算処理よりかなり
速い。前記指数ビットスキャンルーチンの処理により、
指数剰余演算装置20によって多数の二乗処理が実行さ
れ、二乗処理の速度の増加が、特定の指数剰余演算の全
体的な処理時間にかなり影響を及ぼすことが理解される
べきである。
【0060】図7には、ステップ401で呼び出される
二乗スピードアップサブルーチンを説明するフローチャ
ートが示されている。最初、ステップ402においてj
をiに等しく設定する。これは、図6の主ループの最初
の反復においては1である。しかし、その後の主ループ
の反復においては、jがiの最後の値で始まるので、す
でに出て来た部分積の処理をスキップできることは明ら
かである。ステップ403において、iとjを比較す
る。iがjに等しければ、ステップ405において係数
を1に設定する。iとjが等しくなければ、ステップ4
04において係数を2に設定する。その後、ステップ4
06において、ajおよびbiならびに係数を乗算し、前
の桁上げおよびcjにその積を加える。図6のステップ
308のように、その結果のうち下位側のワードをcj
として記憶し、その結果の上位側のワードを次の桁上げ
として使用する。乗算ステップ406の完了後、ステッ
プ408においてjを増分し、bjの最後のワードがル
ープを通過するまでループを繰り返す。bjの最後のワ
ードがループを通過するとステップ409において二乗
スピードアップサブルーチンが終了する。図6のステッ
プ410において、第一の副ループのすぐ後でモントゴ
メリー乗算ルーチンが再開する。二乗フラグを設定する
と、モントゴメリー乗算ルーチンの主ループの反復ごと
に第一の副ループの代わりに二乗スピードアップサブル
ーチンが動作する。
二乗スピードアップサブルーチンを説明するフローチャ
ートが示されている。最初、ステップ402においてj
をiに等しく設定する。これは、図6の主ループの最初
の反復においては1である。しかし、その後の主ループ
の反復においては、jがiの最後の値で始まるので、す
でに出て来た部分積の処理をスキップできることは明ら
かである。ステップ403において、iとjを比較す
る。iがjに等しければ、ステップ405において係数
を1に設定する。iとjが等しくなければ、ステップ4
04において係数を2に設定する。その後、ステップ4
06において、ajおよびbiならびに係数を乗算し、前
の桁上げおよびcjにその積を加える。図6のステップ
308のように、その結果のうち下位側のワードをcj
として記憶し、その結果の上位側のワードを次の桁上げ
として使用する。乗算ステップ406の完了後、ステッ
プ408においてjを増分し、bjの最後のワードがル
ープを通過するまでループを繰り返す。bjの最後のワ
ードがループを通過するとステップ409において二乗
スピードアップサブルーチンが終了する。図6のステッ
プ410において、第一の副ループのすぐ後でモントゴ
メリー乗算ルーチンが再開する。二乗フラグを設定する
と、モントゴメリー乗算ルーチンの主ループの反復ごと
に第一の副ループの代わりに二乗スピードアップサブル
ーチンが動作する。
【0061】モントゴメリー乗算ルーチンをより効率的
に実行するために、専用処理を行うように乗算器28
a、28bを調整する。特に、乗算器28a、28b
は、(二乗スピードアップルーチンによって使用され
る)2を乗じるための特定機能と、a*b+c関数を実
行するための特定機能と、より上位側nビットを桁上げ
レジスタに残しながら2nビットの結果に関してmod2n
関数を実行するための特定機能とを含む。
に実行するために、専用処理を行うように乗算器28
a、28bを調整する。特に、乗算器28a、28b
は、(二乗スピードアップルーチンによって使用され
る)2を乗じるための特定機能と、a*b+c関数を実
行するための特定機能と、より上位側nビットを桁上げ
レジスタに残しながら2nビットの結果に関してmod2n
関数を実行するための特定機能とを含む。
【0062】図3のブロック102および103におい
て実行する計算は、22kmod(n)の計算が必要である。こ
こで、nは除数であり、kは除数nを表わすのに用いら
れるビット数である。22kmod(n)の値は、2k+1mod(n)
の値を求め、この結果をlog2(k)回二乗することによっ
て決定することができる。これは、モントゴメリー形式
において、(a*b)=[(a*b)/2k]mod(n)で
あるので可能である。したがって、下記(数3)が成り
立つ。
て実行する計算は、22kmod(n)の計算が必要である。こ
こで、nは除数であり、kは除数nを表わすのに用いら
れるビット数である。22kmod(n)の値は、2k+1mod(n)
の値を求め、この結果をlog2(k)回二乗することによっ
て決定することができる。これは、モントゴメリー形式
において、(a*b)=[(a*b)/2k]mod(n)で
あるので可能である。したがって、下記(数3)が成り
立つ。
【0063】
【数3】
【0064】例として、k=512ビットの場合の22k
mod(n)の計算を表1に示す。表1に示されているよう
に、計算を完了するのに、log2(512)=9の二乗剰余演算
処理が必要である。
mod(n)の計算を表1に示す。表1に示されているよう
に、計算を完了するのに、log2(512)=9の二乗剰余演算
処理が必要である。
【0065】
【表1】
【0066】二乗剰余演算処理は、比較的単純で簡単で
ある。22kmod(n)の決定に関係している計算のほとんど
が、nによる2k+1の剰余算に関係している。この剰余
算を実行する直接の方法は、剰余が除数nより小さくな
るまで、2k+1から除数nを繰り返し引くことである。
典型的には、これらの処理は、mビットの所与の固定オ
ペランドサイズを有する乗算器28a、28bなどのプ
ロセッサによって、一度にmビットずつ実行される。こ
こで、mは1より大きい正の整数である。除数nの最上
位ノンゼロビットがプロセッサオペランドの最上位ビッ
ト位置にあれば、この計算は、多くて4回の減算が必要
である。
ある。22kmod(n)の決定に関係している計算のほとんど
が、nによる2k+1の剰余算に関係している。この剰余
算を実行する直接の方法は、剰余が除数nより小さくな
るまで、2k+1から除数nを繰り返し引くことである。
典型的には、これらの処理は、mビットの所与の固定オ
ペランドサイズを有する乗算器28a、28bなどのプ
ロセッサによって、一度にmビットずつ実行される。こ
こで、mは1より大きい正の整数である。除数nの最上
位ノンゼロビットがプロセッサオペランドの最上位ビッ
ト位置にあれば、この計算は、多くて4回の減算が必要
である。
【0067】除数の大きさが乗算器オペランドサイズの
整数倍でなければ、減算処理回数を最大4回に維持する
ために、新たな2k+1の値を生成しなければならない。
通常、これは、コントローラが、除数の大きさごとに新
たな2k+1の値を計算することを必要とする。除数の大
きさごとに新たな2k+1の値を生成するのに必要なコン
トローラの複雑さを低減するために、本発明の一実施形
態は、代わりに、2h* m+1の値を生成する。ここで、m
は乗算器スライスのビット数であり、hは1以上の整数
である。
整数倍でなければ、減算処理回数を最大4回に維持する
ために、新たな2k+1の値を生成しなければならない。
通常、これは、コントローラが、除数の大きさごとに新
たな2k+1の値を計算することを必要とする。除数の大
きさごとに新たな2k+1の値を生成するのに必要なコン
トローラの複雑さを低減するために、本発明の一実施形
態は、代わりに、2h* m+1の値を生成する。ここで、m
は乗算器スライスのビット数であり、hは1以上の整数
である。
【0068】除数の大きさが乗算器スライスサイズの整
数倍である場合、k=(h*m)となるので、2h*m+1
は2k+1に等しい。2k+1の値が上記条件となれば、nの
シフトされた値がkの有意ビットと続く0が埋められた
ビットにより(h*m)ビットの除数となるような(h
*m)ビットフィールドのnのMSB位置調整により、
2k+1 mod(n)を計算することができる。したがって、シ
フトされたnによる2 h*m+1の低減は、前のように、多
くて4回の減算が必要である。この方法は、任意の大き
さの除数をmビットブロックとして扱い、簡単な態様で
処理することができるので、モントゴメリー値の計算を
さらに容易にする。
数倍である場合、k=(h*m)となるので、2h*m+1
は2k+1に等しい。2k+1の値が上記条件となれば、nの
シフトされた値がkの有意ビットと続く0が埋められた
ビットにより(h*m)ビットの除数となるような(h
*m)ビットフィールドのnのMSB位置調整により、
2k+1 mod(n)を計算することができる。したがって、シ
フトされたnによる2 h*m+1の低減は、前のように、多
くて4回の減算が必要である。この方法は、任意の大き
さの除数をmビットブロックとして扱い、簡単な態様で
処理することができるので、モントゴメリー値の計算を
さらに容易にする。
【0069】図10および図11は、入力nに対して2
2kmod(n)を計算して出力する処理ステップを示す。これ
らの処理により、mビットの固定オペランドサイズを受
け取る乗算器28a、28bなどの固定プロセッサは、
22kmod(n)の値を決定して出力することができる。ここ
で、nは任意の除数であり、kは除数nを表わすのに用
いられるビット数である。このプロセスは、第一のレジ
スタ602に2h*m+1の値を入れることから始まる。こ
のプロセスは、図10においてブロック502として示
されており、得られたデータ構成は、図11において第
一のレジスタ602として示されている。第一のレジス
タ602は、いくつかの方法で、2h*m+ 1ビット位置6
04に「1」があり、それより下位の全ビット位置60
6に0があるように構成してもよい。一つの方法として
は、第一のレジスタ602をクリアし、2h*m+1ビット
位置604に1を入れる処理ステップとする。別の方法
としては、20ビット位置608に1を入れ、0を加え
ながら、そのビットを適切なビット分左側にシフトす
る。いずれの場合も、積(h*m)がkの値以上である
という関係から、2h*m+1ビット位置を決定する。m
(乗算器のオペランドのビットサイズ)およびk(除数
のビット数)が知られているので、この関係を満たすh
の値を決定することができる。
2kmod(n)を計算して出力する処理ステップを示す。これ
らの処理により、mビットの固定オペランドサイズを受
け取る乗算器28a、28bなどの固定プロセッサは、
22kmod(n)の値を決定して出力することができる。ここ
で、nは任意の除数であり、kは除数nを表わすのに用
いられるビット数である。このプロセスは、第一のレジ
スタ602に2h*m+1の値を入れることから始まる。こ
のプロセスは、図10においてブロック502として示
されており、得られたデータ構成は、図11において第
一のレジスタ602として示されている。第一のレジス
タ602は、いくつかの方法で、2h*m+ 1ビット位置6
04に「1」があり、それより下位の全ビット位置60
6に0があるように構成してもよい。一つの方法として
は、第一のレジスタ602をクリアし、2h*m+1ビット
位置604に1を入れる処理ステップとする。別の方法
としては、20ビット位置608に1を入れ、0を加え
ながら、そのビットを適切なビット分左側にシフトす
る。いずれの場合も、積(h*m)がkの値以上である
という関係から、2h*m+1ビット位置を決定する。m
(乗算器のオペランドのビットサイズ)およびk(除数
のビット数)が知られているので、この関係を満たすh
の値を決定することができる。
【0070】次に、除数nを表わすkビットを第2のレ
ジスタ610にロードする。これは、ブロック504に
示されている。第2のレジスタ610は、一般に、除数
nを表わすのに必要以上のビット容量を持つ。したがっ
て、除数nの任意の値に関して、kビットは、上位のビ
ット位置612に0である一連の先行ビット(以下、
「ゼロビット」と呼ぶ)を一般に含む。残りのビット
は、除数nの最上位ノンゼロビット614、続いて1ま
たは0のいずれでもよいビット(以下、「ノンゼロビッ
ト」と呼ぶ)を含む。
ジスタ610にロードする。これは、ブロック504に
示されている。第2のレジスタ610は、一般に、除数
nを表わすのに必要以上のビット容量を持つ。したがっ
て、除数nの任意の値に関して、kビットは、上位のビ
ット位置612に0である一連の先行ビット(以下、
「ゼロビット」と呼ぶ)を一般に含む。残りのビット
は、除数nの最上位ノンゼロビット614、続いて1ま
たは0のいずれでもよいビット(以下、「ノンゼロビッ
ト」と呼ぶ)を含む。
【0071】上記のように、除数のノンゼロビット61
6がmの整数倍として表わされる場合(すなわち、最上
位ノンゼロビット614が(h*m)−1の位置にある
場合)、剰余算は、多くて4回の減算処理で完了するこ
とができる。そうでない場合、必要な処理回数は、もっ
と多くなってしまう。必要な処理回数を減らすために、
nの最上位ノンゼロビットがプロセッサオペランドサイ
ズmの整数倍によって規定されるビット位置にくるま
で、第二のレジスタ610のノンゼロビット616を最
上位ビット方向にシフトする。これは、図10のブロッ
ク506および508に示されている。
6がmの整数倍として表わされる場合(すなわち、最上
位ノンゼロビット614が(h*m)−1の位置にある
場合)、剰余算は、多くて4回の減算処理で完了するこ
とができる。そうでない場合、必要な処理回数は、もっ
と多くなってしまう。必要な処理回数を減らすために、
nの最上位ノンゼロビットがプロセッサオペランドサイ
ズmの整数倍によって規定されるビット位置にくるま
で、第二のレジスタ610のノンゼロビット616を最
上位ビット方向にシフトする。これは、図10のブロッ
ク506および508に示されている。
【0072】図11は、第2のレジスタ610の上記ビ
ットシフトの一例を示す。ここで、n=28606であ
り、m=7ビットである。n=28606を表わすのに
15ビットが必要であり、最上位バイナリビットが214
ビット位置にある。nを表わすのに15ビットが必要で
あるので、nのフルオペランド値を処理するのに、最小
3個のプロセッサスライス618が必要である。したが
って、h=3である。処理の回数を減らすために、nの
最上位ビット614が、mの整数倍(図11の「h」)
によって規定される位置620にくるまで、除数nのビ
ットをより上位のビット方向にシフトアップする。この
例では、nの最上位ビットが第三のプロセッサスライス
の最上位ビット位置にくるように、除数nのビットを6
桁シフトアップする。
ットシフトの一例を示す。ここで、n=28606であ
り、m=7ビットである。n=28606を表わすのに
15ビットが必要であり、最上位バイナリビットが214
ビット位置にある。nを表わすのに15ビットが必要で
あるので、nのフルオペランド値を処理するのに、最小
3個のプロセッサスライス618が必要である。したが
って、h=3である。処理の回数を減らすために、nの
最上位ビット614が、mの整数倍(図11の「h」)
によって規定される位置620にくるまで、除数nのビ
ットをより上位のビット方向にシフトアップする。この
例では、nの最上位ビットが第三のプロセッサスライス
の最上位ビット位置にくるように、除数nのビットを6
桁シフトアップする。
【0073】ビットシフト処理終了後、第1のレジスタ
602の値が除数nの値より小さくなるまで、第1のレ
ジスタ602の値から第2のレジスタ610の値を繰り
返し引き、2k+1mod(n)の値を生じる。このプロセス
は、図10のブロック512および514に示されてい
る。最後に、ブロック516および518に示されてい
るように、剰余算した値2k+1mod(n)をlog2(k)回二乗
し、22kmod(n)の値を生じる。
602の値が除数nの値より小さくなるまで、第1のレ
ジスタ602の値から第2のレジスタ610の値を繰り
返し引き、2k+1mod(n)の値を生じる。このプロセス
は、図10のブロック512および514に示されてい
る。最後に、ブロック516および518に示されてい
るように、剰余算した値2k+1mod(n)をlog2(k)回二乗
し、22kmod(n)の値を生じる。
【0074】以上の処理により、本発明のモントゴメリ
ーアルゴリズムを用いる暗号符号復号化装置のデータ処
理高速化方法および装置は、入力データnに対して、2
2kmod(n)を効率的かつ高速に計算し、モントゴメリーア
ルゴリズムを用いる暗号システム装置に対して計算した
22kmod(n)の値を与え、当該暗号システム装置の暗号復
号処理を高速化することができる。
ーアルゴリズムを用いる暗号符号復号化装置のデータ処
理高速化方法および装置は、入力データnに対して、2
2kmod(n)を効率的かつ高速に計算し、モントゴメリーア
ルゴリズムを用いる暗号システム装置に対して計算した
22kmod(n)の値を与え、当該暗号システム装置の暗号復
号処理を高速化することができる。
【0075】指数剰余演算装置の好ましい実施の形態を
説明したが、本システムにおいていくつかの利点が達成
されていることが当業者には明らかであろう。
説明したが、本システムにおいていくつかの利点が達成
されていることが当業者には明らかであろう。
【0076】また、本実施形態で説明した指数剰余演算
装置による処理を、一般のコンピュータ、つまり制御ユ
ニット(CPU)、算術論理演算ユニット(ALU)、
ROM、RAMの記憶装置、入出力装置を備えたコンピ
ュータの処理ステップの形でプログラムとして記述する
ことおよびコンピュータに当該処理を実行させることは
当業者にとり明らかであり、かかるプログラムを記録し
たコンピュータ読み取り可能な記録媒体を提供すること
ができる。
装置による処理を、一般のコンピュータ、つまり制御ユ
ニット(CPU)、算術論理演算ユニット(ALU)、
ROM、RAMの記憶装置、入出力装置を備えたコンピ
ュータの処理ステップの形でプログラムとして記述する
ことおよびコンピュータに当該処理を実行させることは
当業者にとり明らかであり、かかるプログラムを記録し
たコンピュータ読み取り可能な記録媒体を提供すること
ができる。
【0077】また、上記記録媒体としては、RAM,R
OM,CD−ROM,フレキシブルディスク(FD)、
ハードディスクなどコンピュータが扱う記憶媒体であれ
ば良いことは言うまでもなく、また、ネットワーク上に
配された記憶媒体であっても良い。
OM,CD−ROM,フレキシブルディスク(FD)、
ハードディスクなどコンピュータが扱う記憶媒体であれ
ば良いことは言うまでもなく、また、ネットワーク上に
配された記憶媒体であっても良い。
【0078】また、本発明の範囲および思想内で様々な
変形、適応、代替的な実施の形態が構成されてもよいこ
とが理解されるべきである。たとえば、本発明は、専用
プロセッサで実現した暗号システムに非常に適している
が、非暗号システムにおいても有用であり、汎用プロセ
ッサにおいて実現してもよい。そのような場合、本発明
を実現する命令の1以上のコンピュータ実行可能なプロ
グラムを、フロッピーディスクまたは他の記憶媒体など
のコンピュータ読み取り可能プログラム記憶装置に取り
入れてもよい。
変形、適応、代替的な実施の形態が構成されてもよいこ
とが理解されるべきである。たとえば、本発明は、専用
プロセッサで実現した暗号システムに非常に適している
が、非暗号システムにおいても有用であり、汎用プロセ
ッサにおいて実現してもよい。そのような場合、本発明
を実現する命令の1以上のコンピュータ実行可能なプロ
グラムを、フロッピーディスクまたは他の記憶媒体など
のコンピュータ読み取り可能プログラム記憶装置に取り
入れてもよい。
【0079】
【発明の効果】本発明の計算装置のデータ処理高速化方
法によれば、mビットオペランドデータを扱うプロセッ
サを用いて入力データnに対して、22kmod(n)を効率的
に22kmod(n)を高速に計算することができ、モントゴメ
リーアルゴリズムを用いる計算装置に対して計算した2
2kmod(n)の値を与え、当該計算装置の暗号復号処理を高
速化することができる。
法によれば、mビットオペランドデータを扱うプロセッ
サを用いて入力データnに対して、22kmod(n)を効率的
に22kmod(n)を高速に計算することができ、モントゴメ
リーアルゴリズムを用いる計算装置に対して計算した2
2kmod(n)の値を与え、当該計算装置の暗号復号処理を高
速化することができる。
【0080】本発明のモントゴメリーアルゴリズムを用
いる計算装置のデータ処理装置は、入力データnに対し
て、22kmod(n)を効率的に22kmod(n)を高速に計算する
ことができ、モントゴメリーアルゴリズムを用いる計算
装置に対して計算した22kmod(n)の値を与え、当該計算
装置の暗号復号処理を高速化することができる。
いる計算装置のデータ処理装置は、入力データnに対し
て、22kmod(n)を効率的に22kmod(n)を高速に計算する
ことができ、モントゴメリーアルゴリズムを用いる計算
装置に対して計算した22kmod(n)の値を与え、当該計算
装置の暗号復号処理を高速化することができる。
【図1】 暗号システム内の指数剰余演算装置の典型的
な適用例のブロック図である。
な適用例のブロック図である。
【図2】 指数剰余演算装置のブロック図である。
【図3】 指数剰余演算装置によって実行される機能の
システムレベルのフローダイアグラムである。
システムレベルのフローダイアグラムである。
【図4】 指数剰余演算装置によって実行される指数ビ
ットスキャン処理を示すフローチャートである。
ットスキャン処理を示すフローチャートである。
【図5】 図4の指数ビットスキャン処理の様々な段階
の指数レジスタのブロック図である。
の指数レジスタのブロック図である。
【図6】 指数剰余演算装置によって実行される乗算処
理を示すフローチャートである。
理を示すフローチャートである。
【図7】 図6の乗算処理と関連して実行される二乗処
理を示すフローチャートである。
理を示すフローチャートである。
【図8】 図4のフローチャートに従う典型的な指数ビ
ットスキャン処理を示すチャートである。
ットスキャン処理を示すチャートである。
【図9】 図6および図7のフローチャートに従う典型
的な乗算および二乗処理を示すチャートである。
的な乗算および二乗処理を示すチャートである。
【図10】 高速モントゴメリー値計算において実行さ
れる処理を示すフローチャートである。
れる処理を示すフローチャートである。
【図11】 高速モントゴメリー値計算において実行さ
れる処理を示す図である。
れる処理を示す図である。
10 暗号システム 12 CPU 14,25 RAM 16 ROM 20 指数剰余演算装置 22 インタフェース回路 24 乗算処理部 26 制御ユニット 28 乗算器 32 レジスタ 34 ウィンドウ 602 第1のレジスタ 610 第2のレジスタ
Claims (13)
- 【請求項1】 指数剰余演算処理を用いる計算装置のデ
ータ処理を、mビットオペランドデータを扱うプロセッ
サを用いて高速化する方法であって、 入力データnに対して、nを2進化ビットに変換し、そ
のビット数kを求める処理ステップと、 前記オペランドビット数mとの積が前記k以上となる整
数のうち、最小の整数hを検知し、第1のレジスタに、
2h*m+1ビットが1でありそれより下位の全ビットが0
であるデータを形成するデータ形成処理ステップと、 前記オペランドビット数mの整数倍のビット長を持つ第
2のレジスタに、前記入力データnを表わすkビットデ
ータをロードするデータロード処理ステップと、 前記第2のレジスタにロードした前記nを表わすkビッ
トデータの最上位ノンゼロビットが前記オペランドビッ
ト数mの整数倍のビット位置にくるまで、前記nを表わ
すkビットデータ列を上位ビット方向にシフトするシフ
ト処理ステップと、 前記第1のレジスタに形成したデータの値が前記入力デ
ータnの値より小さくなるまで、前記第1のレジスタの
データ値から前記シフト処理済みの第2のレジスタの値
を繰り返し引く剰余算処理ステップと、 前記プロセッサが、前記第1のレジスタにある剰余算処
理済みの値をlog2(k)回二乗する乗算処理ステップとを
備え、 入力データnに対して、nを除数とした、nの2進化ビ
ット数をkとして、2 2kmod(n)を計算して前記計算装置
に与えることを特徴とする計算装置のデータ処理高速化
方法。 - 【請求項2】 前記剰余算処理ステップにおいて、前記
第1のレジスタの値から前記第2のレジスタの値をmビ
ットずつ繰り返し引く請求項1に記載の計算装置のデー
タ処理高速化方法。 - 【請求項3】 前記データ形成処理ステップが、前記第
1のレジスタをクリアする処理ステップと、前記第1の
レジスタの2h*m+1ビット位置に1をロードする処理ス
テップとを備えた請求項1に記載の計算装置のデータ処
理高速化方法。 - 【請求項4】 指数剰余算処理を用いる計算装置のデー
タ処理を、mビットオペランドデータを扱うプロセッサ
を用いて高速化する方法であって、 入力データnに対して、nを2進化ビットに変換し、そ
のビット数kを求める処理ステップと、 前記オペランドビット数mとの積が前記k以上となる整
数のうち、最小の整数hを検知し、第1のレジスタに、
2h*m+1ビットが1でありそれより下位の全ビットが0
であるデータを形成するデータ形成処理ステップと、 前記オペランドビット数mの整数倍のビット長を持つ第
2のレジスタに、前記入力データnを表わすkビットデ
ータをロードするデータロード処理ステップと、 前記第2のレジスタにロードした前記nを表わすkビッ
トデータの最上位ノンゼロビットが(h*m)−1ビッ
ト位置にくるまで、前記nを表わすkビットデータ列を
上位ビット方向にシフトするシフト処理ステップと、 前記シフト処理済みの第2のレジスタの値により前記第
1のレジスタの値を剰余算する剰余算処理ステップと、 前記プロセッサが、前記第1のレジスタにある剰余算処
理済みの値をlog2(k)回二乗する乗算処理ステップとを
備え、 入力データnに対して、nを除数とした、nの2進化ビ
ット数をkとして、2 2kmod(n)を計算して前記計算装置
に与えることを特徴とする計算装置のデータ処理高速化
方法。 - 【請求項5】 前記剰余算処理ステップが、前記第1の
レジスタに形成したデータの値が前記入力データnの値
より小さくなるまで、前記第1のレジスタのデータ値か
ら前記シフト処理済みの第2のレジスタの値を繰り返し
引く処理ステップである請求項4に記載の計算装置のデ
ータ処理高速化方法。 - 【請求項6】 前記剰余算処理ステップにおいて、前記
第1のレジスタの値から前記第2のレジスタの値をmビ
ットずつ繰り返し引く請求項5に記載の計算装置のデー
タ処理高速化方法。 - 【請求項7】 指数剰余算処理を用いる計算装置のデー
タ処理を、mビットオペランドデータを扱うプロセッサ
を用いて高速化する方法であって、 入力データnに対して、nを2進化ビットに変換し、そ
のビット数kを求める処理ステップと、 前記オペランドビット数mとの積が前記k以上となる整
数のうち、最小の整数hを検知し、第1のレジスタに、
2h*m+1ビットが1でありそれより下位の全ビットが0
であるデータを形成するデータ形成処理ステップと、 前記オペランドビット数mの整数倍のビット長を持つ第
2のレジスタに、前記入力データnを表わすkビットデ
ータ列の最上位ノンゼロビットの位置が前記第2のレジ
スタの(h*m)−1ビット位置にくるようにデータを
形成する第2のデータ形成処理ステップと、 前記第2のレジスタの値により前記第1のレジスタの値
を剰余算する剰余算処理ステップと、 前記プロセッサが、前記第1のレジスタにある剰余算処
理済みの値をlog2(k)回二乗する乗算処理ステップとを
備え、 入力データnに対して、nを除数とした、nの2進化ビ
ット数をkとして、2 2kmod(n)を計算して前記計算装置
に与えることを特徴とする計算装置のデータ処理高速化
方法。 - 【請求項8】 前記剰余算処理ステップが、前記第1の
レジスタの値が前記入力データnの値より小さくなるま
で、前記第1のレジスタのデータ値から前記第2のレジ
スタの値を繰り返し引く処理ステップである請求項7に
記載の計算装置のデータ処理高速化方法。 - 【請求項9】 前記剰余算処理ステップにおいて、前記
第1のレジスタの値から前記第2のレジスタの値をmビ
ットずつ繰り返し引く請求項8に記載の計算装置のデー
タ処理高速化方法。 - 【請求項10】 指数剰余算処理を用いる計算装置のデ
ータ処理を高速化する装置であって、 m(mは2以上の整数)ビットオペランドデータを扱う
プロセッサと、 入力データnに対して、nを2進化ビットに変換し、そ
のビット数kを求める2進化ビット数算出手段と、 前記オペランドビット数mとの積が前記k以上となる整
数のうち、最小の整数hを検知し、第1のレジスタに、
2h*m+1ビットが1でありそれより下位の全ビットが0
であるデータを形成するデータ形成手段と、 前記オペランドビット数mの整数倍のビット長を持つ第
2のレジスタに、前記入力データnを表わすkビットデ
ータをロードするデータロード手段と、 前記第2のレジスタにロードした前記nを表わすkビッ
トデータの最上位ノンゼロビットが前記オペランドビッ
ト数mの整数倍のビット位置にくるまで、前記nを表わ
すkビットデータ列を上位ビット方向にシフトするビッ
トシフト手段と、 前記第1のレジスタに形成したデータの値が前記入力デ
ータnの値より小さくなるまで、前記第1のレジスタの
データ値から前記シフト処理済みの第2のレジスタの値
を繰り返し引く剰余算処理手段と、 前記第1のレジスタにある剰余算処理済みの値をlog
2(k)回二乗する乗算処理手段を備え、 入力データnに対して、nを除数とした、nの2進化ビ
ット数をkとして、2 2kmod(n)を計算して前記計算装置
に与えることを特徴とする計算装置のデータ処理装置。 - 【請求項11】 前記剰余算処理手段が、前記第1のレ
ジスタの値が前記入力データnの値より小さくなるま
で、前記第1のレジスタのデータ値から前記第2のレジ
スタの値を繰り返し引く請求項10に記載の計算装置の
データ処理装置方法。 - 【請求項12】 前記剰余算処理手段が、前記第1のレ
ジスタの値から前記第2のレジスタの値をmビットずつ
繰り返し引くものである請求項11に記載の計算装置の
データ処理装置。 - 【請求項13】 固定オペランドサイズm(mは正の整
数)のプロセッサを有し、除数n(nは正の整数)によ
り値x(xは正の整数)を剰余算する剰余算装置の剰余
算処理を高速化する方法であって、 入力データnに対して、nを2進化ビットに変換し、そ
のビット数kを求める2進化ビット数算出処理ステップ
と、 第1のレジスタに値xをロードする処理ステップと、 前記オペランドビット数mとの積が前記k以上となる整
数のうち、最小の整数をhとし、前記入力データnを表
わすkビットデータ列の最上位ノンゼロビットの位置が
第2のレジスタの(h*m)−1ビット位置にくるよう
にデータを形成する第2のデータ形成処理ステップと、 前記第1のレジスタに形成したデータの値が前記入力デ
ータnの値より小さくなるまで、前記第1のレジスタの
データ値から前記第2のレジスタの値を繰り返し引く剰
余算処理ステップを備えたことを特徴とする剰余算方法
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/050573 | 1998-03-30 | ||
US09/050,573 US6240436B1 (en) | 1998-03-30 | 1998-03-30 | High speed montgomery value calculation |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11305995A true JPH11305995A (ja) | 1999-11-05 |
Family
ID=21966038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11020232A Pending JPH11305995A (ja) | 1998-03-30 | 1999-01-28 | 計算装置のデ―タ処理高速化方法および装置。 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6240436B1 (ja) |
EP (1) | EP0947915B1 (ja) |
JP (1) | JPH11305995A (ja) |
CA (1) | CA2251162A1 (ja) |
DE (1) | DE69818798T2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2005013243A1 (ja) * | 2003-07-31 | 2006-09-28 | 富士通株式会社 | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム |
EP1708081A1 (en) | 2005-03-30 | 2006-10-04 | Fujitsu Limited | Method and device for calulcating conversion parameter of Montgomery |
JP2015068880A (ja) * | 2013-09-27 | 2015-04-13 | 富士通セミコンダクター株式会社 | 演算回路および演算方法 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0935203A3 (en) * | 1998-02-04 | 2000-05-24 | Matsushita Electric Industrial Co., Ltd. | Exponential calculation device |
GB2352309B (en) | 1999-07-21 | 2004-02-11 | Advanced Risc Mach Ltd | A system and method for performing modular multiplication |
US7046800B1 (en) * | 2000-03-31 | 2006-05-16 | State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Scalable methods and apparatus for Montgomery multiplication |
US6691143B2 (en) * | 2000-05-11 | 2004-02-10 | Cyberguard Corporation | Accelerated montgomery multiplication using plural multipliers |
JP3532860B2 (ja) * | 2001-01-22 | 2004-05-31 | 株式会社東芝 | 剰余系表現を利用した演算装置及び方法及びプログラム |
US7607165B2 (en) * | 2001-03-09 | 2009-10-20 | The Athena Group, Inc. | Method and apparatus for multiplication and/or modular reduction processing |
JP3820909B2 (ja) * | 2001-04-24 | 2006-09-13 | ソニー株式会社 | 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム |
US6748412B2 (en) * | 2001-09-26 | 2004-06-08 | Intel Corporation | Square-and-multiply exponent processor |
US6922717B2 (en) | 2001-09-28 | 2005-07-26 | Intel Corporation | Method and apparatus for performing modular multiplication |
US20030065696A1 (en) * | 2001-09-28 | 2003-04-03 | Ruehle Michael D. | Method and apparatus for performing modular exponentiation |
US6959297B2 (en) | 2002-04-25 | 2005-10-25 | Winnow Technology, Llc | System and process for searching within a data stream using a pointer matrix and a trap matrix |
US20040010530A1 (en) * | 2002-07-10 | 2004-01-15 | Freking William L. | Systolic high radix modular multiplier |
US7187770B1 (en) | 2002-07-16 | 2007-03-06 | Cisco Technology, Inc. | Method and apparatus for accelerating preliminary operations for cryptographic processing |
US20040098435A1 (en) * | 2002-11-20 | 2004-05-20 | Moore Stephen F. | Modular reduction of multi-precision numbers |
US20040096057A1 (en) * | 2002-11-20 | 2004-05-20 | Moore Stephen F. | Modular multiplication of multi-precision numbers |
US20040120516A1 (en) * | 2002-12-23 | 2004-06-24 | International Business Machines Corporation | Modular reduction method which recognizes special conditions |
GB0314557D0 (en) * | 2003-06-21 | 2003-07-30 | Koninkl Philips Electronics Nv | Improved reduction calculations |
GB0412084D0 (en) * | 2004-05-29 | 2004-06-30 | Univ Belfast | "Method of calculating a modular inverse" |
US7953814B1 (en) | 2005-02-28 | 2011-05-31 | Mcafee, Inc. | Stopping and remediating outbound messaging abuse |
US9015472B1 (en) | 2005-03-10 | 2015-04-21 | Mcafee, Inc. | Marking electronic messages to indicate human origination |
US9160755B2 (en) | 2004-12-21 | 2015-10-13 | Mcafee, Inc. | Trusted communication network |
US20060140399A1 (en) * | 2004-12-28 | 2006-06-29 | Young David W | Pre-calculation mechanism for signature decryption |
DE102005024609A1 (de) * | 2005-05-25 | 2006-11-30 | Siemens Ag | Bestimmung einer modularen Inversen |
US7486673B2 (en) | 2005-08-29 | 2009-02-03 | Connect Technologies Corporation | Method and system for reassembling packets prior to searching |
US20070150530A1 (en) * | 2005-12-13 | 2007-06-28 | Intel Corporation | Resisting cache timing based attacks |
US10354229B2 (en) | 2008-08-04 | 2019-07-16 | Mcafee, Llc | Method and system for centralized contact management |
EP2276194B1 (en) * | 2009-07-17 | 2014-11-26 | Certicom Corp. | System and method for reducing the computation and storage requirements for a Montgomery-style reduction |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274707A (en) * | 1991-12-06 | 1993-12-28 | Roger Schlafly | Modular exponentiation and reduction device and method |
US5513133A (en) | 1992-11-30 | 1996-04-30 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
FR2743908B1 (fr) | 1996-01-18 | 1998-02-27 | 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 |
-
1998
- 1998-03-30 US US09/050,573 patent/US6240436B1/en not_active Expired - Lifetime
- 1998-10-08 EP EP98308207A patent/EP0947915B1/en not_active Expired - Lifetime
- 1998-10-08 DE DE69818798T patent/DE69818798T2/de not_active Expired - Fee Related
- 1998-10-19 CA CA002251162A patent/CA2251162A1/en not_active Abandoned
-
1999
- 1999-01-28 JP JP11020232A patent/JPH11305995A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2005013243A1 (ja) * | 2003-07-31 | 2006-09-28 | 富士通株式会社 | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム |
US7792893B2 (en) | 2003-07-31 | 2010-09-07 | Fujitsu Limited | Device and method for calculating conversion parameter of montgomery modular multiplication and program therefor |
JP4616169B2 (ja) * | 2003-07-31 | 2011-01-19 | 富士通株式会社 | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム |
EP1708081A1 (en) | 2005-03-30 | 2006-10-04 | Fujitsu Limited | Method and device for calulcating conversion parameter of Montgomery |
US8085931B2 (en) | 2005-03-30 | 2011-12-27 | Fujitsu Limited | Computation method, computing device and computer program |
JP2015068880A (ja) * | 2013-09-27 | 2015-04-13 | 富士通セミコンダクター株式会社 | 演算回路および演算方法 |
Also Published As
Publication number | Publication date |
---|---|
DE69818798D1 (de) | 2003-11-13 |
EP0947915A1 (en) | 1999-10-06 |
EP0947915B1 (en) | 2003-10-08 |
US6240436B1 (en) | 2001-05-29 |
CA2251162A1 (en) | 1999-09-30 |
DE69818798T2 (de) | 2004-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH11305995A (ja) | 計算装置のデ―タ処理高速化方法および装置。 | |
JPH1195661A (ja) | 指数剰余演算装置および指数剰余演算処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JPH11305996A (ja) | 乗算を用いる計算装置のデ―タ処理高速化方法および装置 | |
US8504602B2 (en) | Modular multiplication processing apparatus | |
Knezevic et al. | Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods | |
EP1421472B1 (en) | A method and apparatus for carrying out efficiently arithmetic computations in hardware | |
US6151393A (en) | Device and method for modular multiplication | |
KR101326078B1 (ko) | 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템 | |
US20040019622A1 (en) | Method and apparatus for modular multiplying and calculating unit for modular multiplying | |
Crowe et al. | A scalable dual mode arithmetic unit for public key cryptosystems | |
Tan et al. | High-speed modular multiplier for lattice-based cryptosystems | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
EP1600852B1 (en) | Method and apparatus for calculating a modular inverse | |
Kudithi et al. | Radix-4 interleaved modular multiplication for cryptographic applications | |
JP2004227344A (ja) | 乗算器及び暗号回路 | |
JP4616169B2 (ja) | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム | |
JP4182226B2 (ja) | 剰余系の計算方法及び装置並びにプログラム | |
Farzam et al. | Fast supersingular isogeny Diffie–Hellman and key encapsulation using a customized pipelined montgomery multiplier | |
KR20100062565A (ko) | 모듈러스의 음의 역원을 구하는 방법 | |
JP3591857B2 (ja) | 擬似乱数生成方法及び装置、通信方法及び装置 | |
JP3959076B2 (ja) | 有限体の二乗演算方法及び二乗演算装置 | |
Lee et al. | Systolic multiplier for Montgomery’s algorithm | |
Lou et al. | An efficient Montgomery exponentiation algorithm by using signed-digit-recoding and folding techniques | |
Lee et al. | A faster modular multiplication based on key size partitioning for RSA public-key cryptosystem | |
Mohammadi et al. | A fast and secure RSA public key cryptosystem |