JP3213628B2 - Mを法として長い整数を乗算するための算術ユニット及びそのような乗算デバイスを具えるr.s.a.変換器 - Google Patents
Mを法として長い整数を乗算するための算術ユニット及びそのような乗算デバイスを具えるr.s.a.変換器Info
- Publication number
- JP3213628B2 JP3213628B2 JP06220092A JP6220092A JP3213628B2 JP 3213628 B2 JP3213628 B2 JP 3213628B2 JP 06220092 A JP06220092 A JP 06220092A JP 6220092 A JP6220092 A JP 6220092A JP 3213628 B2 JP3213628 B2 JP 3213628B2
- Authority
- JP
- Japan
- Prior art keywords
- integer
- control
- bit
- value
- module
- 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.)
- Expired - Fee Related
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/722—Modular multiplication
-
- 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/723—Modular exponentiation
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)
- Error Detection And Correction (AREA)
Description
【0001】
【産業上の利用分野】本発明は長い整数を、ある整数M
を法として<modulo an integer M> 乗算するための算術
ユニット<arithmetic unit> に関する。(以下、「Mを
法として」を簡単のために適宜「モジュロM」、「mod
M」等と略記する。)算術ユニットは8ビット、16ビッ
ト、32ビットというような標準語長<standard word len
gths>に対して一般的に使用されて来ており、従って実
際の語長に対して最適化されている。ある語について演
算を行っている間に、結果は通常平行して与えられる
が、それは複雑な特性<features>、例えば桁上げリップ
ル<carry ripples> 等に対して必要とされたのである。
そのような用意をして置くことの複雑さとそのために課
せられる応答時間<response time> とは、語長が増すの
に伴って急速に増大する。本発明は、語長とは独立のク
ロック速度<clock rate>を持つ算術演算をサポートす
る。
を法として<modulo an integer M> 乗算するための算術
ユニット<arithmetic unit> に関する。(以下、「Mを
法として」を簡単のために適宜「モジュロM」、「mod
M」等と略記する。)算術ユニットは8ビット、16ビッ
ト、32ビットというような標準語長<standard word len
gths>に対して一般的に使用されて来ており、従って実
際の語長に対して最適化されている。ある語について演
算を行っている間に、結果は通常平行して与えられる
が、それは複雑な特性<features>、例えば桁上げリップ
ル<carry ripples> 等に対して必要とされたのである。
そのような用意をして置くことの複雑さとそのために課
せられる応答時間<response time> とは、語長が増すの
に伴って急速に増大する。本発明は、語長とは独立のク
ロック速度<clock rate>を持つ算術演算をサポートす
る。
【0002】
【従来の技術】その設計はシストリック<systolic>であ
って、単一の制御モジュール<module>とそれに続く処理
モジュールのアレイとの連続配置<serial arrangement>
から成り、それらは総て同時に能動的<active>になるの
である。かようなデバイスは、よく知られた RSA暗号化
<RSA encryption>用の変換器<converter> として有用で
あり、それについてはComm.ACM誌 Vol.21(1978年2月
号)120-126ページ所載R.L.Rivest他による"A Method fo
r obtaining Digital Signatures and Public-KeyCrypt
osystems"という文献を参照されたい。茲で慣例に従っ
て記号 *印は乗算を意味し、記号**印は冪乗を意味する
ものとすれば、 RSA暗号化というのは、任意の整数メッ
セージ X<M に対して:
って、単一の制御モジュール<module>とそれに続く処理
モジュールのアレイとの連続配置<serial arrangement>
から成り、それらは総て同時に能動的<active>になるの
である。かようなデバイスは、よく知られた RSA暗号化
<RSA encryption>用の変換器<converter> として有用で
あり、それについてはComm.ACM誌 Vol.21(1978年2月
号)120-126ページ所載R.L.Rivest他による"A Method fo
r obtaining Digital Signatures and Public-KeyCrypt
osystems"という文献を参照されたい。茲で慣例に従っ
て記号 *印は乗算を意味し、記号**印は冪乗を意味する
ものとすれば、 RSA暗号化というのは、任意の整数メッ
セージ X<M に対して:
【数1】(X**( E *D ))mod M= X となるような三つ揃い<triad> の整数E,D,Mを認識
することに基づく。EとDとは共にMより小さい。典型
的な利用分野では、Mは 512ビットから成る。特に、符
号化鍵<encoding key>(E,M)と復号化鍵<decoding key>
(D,M) とは、実際には互いに相手から導くことは出来な
いが故に、この算法<algorithm> は公開暗号システム<p
ublic cryptographic systems>に使用されるのである。
ある特定の数の冪乗は、最初の整数Xの繰り返し乗算に
よってこれを為すことが出来る。
することに基づく。EとDとは共にMより小さい。典型
的な利用分野では、Mは 512ビットから成る。特に、符
号化鍵<encoding key>(E,M)と復号化鍵<decoding key>
(D,M) とは、実際には互いに相手から導くことは出来な
いが故に、この算法<algorithm> は公開暗号システム<p
ublic cryptographic systems>に使用されるのである。
ある特定の数の冪乗は、最初の整数Xの繰り返し乗算に
よってこれを為すことが出来る。
【0003】非整数メッセージの乗算は1つの明白な拡
張<obvious extension> と考えられている。NをMのビ
ット数とすれば、上記冪乗の複雑さは、普通はO(N3)の
程度<order> であり、だから順序汎用マシン<sequentia
l general purpose machine>上で実行する場合には例え
それが本来的に高速であっても、変換速度は低いものに
なってしまう。
張<obvious extension> と考えられている。NをMのビ
ット数とすれば、上記冪乗の複雑さは、普通はO(N3)の
程度<order> であり、だから順序汎用マシン<sequentia
l general purpose machine>上で実行する場合には例え
それが本来的に高速であっても、変換速度は低いものに
なってしまう。
【0004】
【発明が解決しようとする課題】本発明の目的は、とり
わけ、2つの自然数P, Qを、3番目の自然数Mを法と
して乗算するシストリック・マシンで、そのマシン・サ
イズO(N) はP, Q, Mを収容する<accommodate> のに
十分であり且つ処理能力<throughput>速度の高いものを
提供することである。これに対する在来からの解答は2
つの問題点を持っている。その1つは、乗算フェーズ<p
hase> 及びそれに続く別個の減算フェーズが、両フェー
ズの間にサイズ 2 *Nの中間結果<intermediate result
> をもたらすことである。今までは、乗算手順中の制御
オペランド<control operand> のビットを、シグニフィ
カンス<significance>が減少する順序<order> で、慣例
にとらわれない<unconventionally>取扱いをして、乗算
手順の演算と減算手順の演算とを、中間結果を限定し続
けるようにインターリーブすることができる。両手順を
インターリーブすることはダイナミックな制御系列<con
trol sequence>をもたらす。それ故に算術ユニットには
どちらの演算を実行するのかを示す制御信号が必要であ
る。2番目の問題点は、そのようなサイズの大きい算術
ユニットでは、桁上げの伝播<propagation of carries>
と制御信号の放送<broadcasting>との両方が、高いクロ
ック速度を妨げる。それ故にシストリックな解答にあっ
ては、シグニフィカンスの増加する方向に桁上げが波及
<ripple>する(桁上げ節約技術)のに対し、制御信号は
その反対の方向に移動する。
わけ、2つの自然数P, Qを、3番目の自然数Mを法と
して乗算するシストリック・マシンで、そのマシン・サ
イズO(N) はP, Q, Mを収容する<accommodate> のに
十分であり且つ処理能力<throughput>速度の高いものを
提供することである。これに対する在来からの解答は2
つの問題点を持っている。その1つは、乗算フェーズ<p
hase> 及びそれに続く別個の減算フェーズが、両フェー
ズの間にサイズ 2 *Nの中間結果<intermediate result
> をもたらすことである。今までは、乗算手順中の制御
オペランド<control operand> のビットを、シグニフィ
カンス<significance>が減少する順序<order> で、慣例
にとらわれない<unconventionally>取扱いをして、乗算
手順の演算と減算手順の演算とを、中間結果を限定し続
けるようにインターリーブすることができる。両手順を
インターリーブすることはダイナミックな制御系列<con
trol sequence>をもたらす。それ故に算術ユニットには
どちらの演算を実行するのかを示す制御信号が必要であ
る。2番目の問題点は、そのようなサイズの大きい算術
ユニットでは、桁上げの伝播<propagation of carries>
と制御信号の放送<broadcasting>との両方が、高いクロ
ック速度を妨げる。それ故にシストリックな解答にあっ
ては、シグニフィカンスの増加する方向に桁上げが波及
<ripple>する(桁上げ節約技術)のに対し、制御信号は
その反対の方向に移動する。
【0005】
【課題を解決するための手段】処理能力速度がO(1/N)
を達成するための以下に述べるような設定を許容するの
は、必要な要素<ingredients> を計算に交差的に<cross
-wise>伝播する上記のやり方(局所的に存在する量的な
部分は別として)なのである。本発明の1つの特定の態
様によれば、本発明の目的は以下に記述する算術デバイ
スを提供することにより実現される。すなわち:1番目
の多ビット<multibit>整数Qを2番目の多ビット整数P
と、3番目の多ビット整数Mを法として乗算するため
の、シストリック化されたモジュラー算術デバイス<sys
tolized and modular arithmetic device>であって、該
算術ユニットは、制御<control> モジュールと、それに
続く処理<processing>モジュールの直列配置<seriesarr
angement>と、更にそれに続く末尾<tail>モジュールと
を有して成り、該処理モジュールは、上記1番目の整数
Qの相互に排他的な1番目のビット部分と、対としては
等しいシグニフィカンス<pairwise equal significance
> の且つ制御モジュールから遠ざかるに伴いそのシグニ
フィカンス・レベルが単調に減少する<monotonously de
creasing> 上記直列配置に沿う上記3番目の整数Mを示
す相互に排他的な2番目のビット部分と、を記憶するた
めのモジュラー記憶手段を持ち、上記制御モジュール
は、上記2番目の整数Pの引き続くビット位置に基づい
て制御ビット・ストリングを提示するための提示手段を
持ち、それによって、各サイクルの1番目のサイクル部
分では上記直列配置を通して低シグニフィカント方向に
初等乗算演算のリップリング<rippling>を、2番目のサ
イクル部分では高シグニフィカント方向に桁上げ伝播の
リップリングを、3番目のサイクル部分では選択的に上
記3番目の整数上の出現<egression> を検出すると低シ
グニフィカント方向にモジュラー化演算のリップリング
を、また4番目のサイクル部分では高シグニフィカント
方向にボロウ量<borrow quantity> を、各制御ビットに
より提示し、4つの引き続くサイクル部分は上記2番目
の多ビット整数Pの特定のビット位置に関連する完全な
サイクルを構成し、また、上記末尾モジュールは、上記
直列配置の低シグニフィカント端に関して上記1番目及
び3番目の整数のダミー部分<dummy parts> をエミュレ
ート<emulate> するためのエミュレート手段を持つ シストリック化されたモジュラー算術デバイスにより実
現される。
を達成するための以下に述べるような設定を許容するの
は、必要な要素<ingredients> を計算に交差的に<cross
-wise>伝播する上記のやり方(局所的に存在する量的な
部分は別として)なのである。本発明の1つの特定の態
様によれば、本発明の目的は以下に記述する算術デバイ
スを提供することにより実現される。すなわち:1番目
の多ビット<multibit>整数Qを2番目の多ビット整数P
と、3番目の多ビット整数Mを法として乗算するため
の、シストリック化されたモジュラー算術デバイス<sys
tolized and modular arithmetic device>であって、該
算術ユニットは、制御<control> モジュールと、それに
続く処理<processing>モジュールの直列配置<seriesarr
angement>と、更にそれに続く末尾<tail>モジュールと
を有して成り、該処理モジュールは、上記1番目の整数
Qの相互に排他的な1番目のビット部分と、対としては
等しいシグニフィカンス<pairwise equal significance
> の且つ制御モジュールから遠ざかるに伴いそのシグニ
フィカンス・レベルが単調に減少する<monotonously de
creasing> 上記直列配置に沿う上記3番目の整数Mを示
す相互に排他的な2番目のビット部分と、を記憶するた
めのモジュラー記憶手段を持ち、上記制御モジュール
は、上記2番目の整数Pの引き続くビット位置に基づい
て制御ビット・ストリングを提示するための提示手段を
持ち、それによって、各サイクルの1番目のサイクル部
分では上記直列配置を通して低シグニフィカント方向に
初等乗算演算のリップリング<rippling>を、2番目のサ
イクル部分では高シグニフィカント方向に桁上げ伝播の
リップリングを、3番目のサイクル部分では選択的に上
記3番目の整数上の出現<egression> を検出すると低シ
グニフィカント方向にモジュラー化演算のリップリング
を、また4番目のサイクル部分では高シグニフィカント
方向にボロウ量<borrow quantity> を、各制御ビットに
より提示し、4つの引き続くサイクル部分は上記2番目
の多ビット整数Pの特定のビット位置に関連する完全な
サイクルを構成し、また、上記末尾モジュールは、上記
直列配置の低シグニフィカント端に関して上記1番目及
び3番目の整数のダミー部分<dummy parts> をエミュレ
ート<emulate> するためのエミュレート手段を持つ シストリック化されたモジュラー算術デバイスにより実
現される。
【0006】この一般的原理に従う一般的設定は巧妙に
働くけれども、モジュラー化はMの補数の加算に翻訳す
る方がよいと考えられている。これに関しては、制御モ
ジュールは、上記直列配置を通して前方向の伝播のため
の制御信号ストリングを連続的に提示する提示手段を持
ち、該連続的に提示することは、単調に減少するシグニ
フィカンス・レベルに従って上記2番目の整数の引き続
くビット位置の制御の下に、すなわち、P中の "1"ビッ
トの制御の下では“2倍”命令とそれに続く"addQ" 命
令によって、しかしP中の "0"ビットの制御の下では
“2倍”命令のみによってなされ、上記直列配置は、各
制御信号の後に桁上げ信号を後方向に伝播する後方向伝
播手段を持ち、制御モジュールは、受け取った各桁上げ
値に対して"addW" 命令を前方向に伝播してその結果M
の減算を有効にもたらすのが好適である。好適には、正
規化値Wは上記3番目の整数Mの補数である(NをMの
サイズとするとき、すなわち 2**(N−1)−1<M
<2**Nとするとき、
働くけれども、モジュラー化はMの補数の加算に翻訳す
る方がよいと考えられている。これに関しては、制御モ
ジュールは、上記直列配置を通して前方向の伝播のため
の制御信号ストリングを連続的に提示する提示手段を持
ち、該連続的に提示することは、単調に減少するシグニ
フィカンス・レベルに従って上記2番目の整数の引き続
くビット位置の制御の下に、すなわち、P中の "1"ビッ
トの制御の下では“2倍”命令とそれに続く"addQ" 命
令によって、しかしP中の "0"ビットの制御の下では
“2倍”命令のみによってなされ、上記直列配置は、各
制御信号の後に桁上げ信号を後方向に伝播する後方向伝
播手段を持ち、制御モジュールは、受け取った各桁上げ
値に対して"addW" 命令を前方向に伝播してその結果M
の減算を有効にもたらすのが好適である。好適には、正
規化値Wは上記3番目の整数Mの補数である(NをMの
サイズとするとき、すなわち 2**(N−1)−1<M
<2**Nとするとき、
【数2】W=2**N−M である)。
【0007】各処理モジュールは、単一ビット・シグニ
フィカンス・レベルでのみ演算を行うことを好適とす
る。このことは、細分化<granularity> することが必要
な数のモジュールのみを用いることを許容するが故に、
極度に簡単なモジュールのレイアウトをもたらす。又は
その代わりにモジュールは、例えば2, 4又は8という
ような一連のビット・シグニフィカンス・レベルで演算
することもできる。各モジュールの内部では、モジュー
ルが単一ビット・モジュールを用いて可能であるより速
く動作するように、演算は在来型<conventional>であっ
てもよい。引き続くモジュールの中間に、発明的な手順
とハードウェアの用意がなされている。これは大抵の場
合に十分な柔軟性<flexibility> を許容し、しかもなお
相対的に簡単なモジュールの設計は維持される。
フィカンス・レベルでのみ演算を行うことを好適とす
る。このことは、細分化<granularity> することが必要
な数のモジュールのみを用いることを許容するが故に、
極度に簡単なモジュールのレイアウトをもたらす。又は
その代わりにモジュールは、例えば2, 4又は8という
ような一連のビット・シグニフィカンス・レベルで演算
することもできる。各モジュールの内部では、モジュー
ルが単一ビット・モジュールを用いて可能であるより速
く動作するように、演算は在来型<conventional>であっ
てもよい。引き続くモジュールの中間に、発明的な手順
とハードウェアの用意がなされている。これは大抵の場
合に十分な柔軟性<flexibility> を許容し、しかもなお
相対的に簡単なモジュールの設計は維持される。
【0008】本発明はまた、ある整数Xを、上記3番目
の整数Mを法として指数Eで羃乗するために、上記直列
配置は上記1番目の整数Qを代表するものとして上記整
数Xを搭載するための制御手段を持ち、上記制御モジュ
ールは、上記2番目の整数Pを代表するものとして上記
整数Xの種々の羃乗を提示するための上記提示手段を能
動化する2番目の制御手段を持ち、更にまた、上記2番
目の整数Pのその次の値を代表するものとして予備的<p
reliminary> な積を上記制御モジュールに戻してリサイ
クルするためのリサイクル手段が設けられて成る シストリック化されたモジュラー算術デバイスにも関す
る。羃乗というのは、最初の整数Xから構築される2つ
の因数の乗算である。初等的な設定では、指数を1つ上
げるために積をリサイクルしてまたXを掛けるというだ
けのことである。
の整数Mを法として指数Eで羃乗するために、上記直列
配置は上記1番目の整数Qを代表するものとして上記整
数Xを搭載するための制御手段を持ち、上記制御モジュ
ールは、上記2番目の整数Pを代表するものとして上記
整数Xの種々の羃乗を提示するための上記提示手段を能
動化する2番目の制御手段を持ち、更にまた、上記2番
目の整数Pのその次の値を代表するものとして予備的<p
reliminary> な積を上記制御モジュールに戻してリサイ
クルするためのリサイクル手段が設けられて成る シストリック化されたモジュラー算術デバイスにも関す
る。羃乗というのは、最初の整数Xから構築される2つ
の因数の乗算である。初等的な設定では、指数を1つ上
げるために積をリサイクルしてまたXを掛けるというだ
けのことである。
【0009】しかし更に速い演算のためには、予備的な
積をリサイクルしてから、問題の指数ビットが1である
か0であるかに基づいて、それ自身を乗算し更に続けて
Xを掛けるか、又はそれ自身を乗算するだけとする。そ
れに必要な要件は1モジュール当たりの記憶容量が十分
なことだけである、すなわちこの場合には常に、実際に
形成された積である因数Qと、前段の乗算の結果である
予備的な積とを記憶しなければならないからである。例
えば、E=11(2進の1011)に対して 1番目のビットが、Xを生成する, 2番目のビットが、X・X=X2 を生成する, 3番目のビットが、X2 ・X2 ・X=X5 を生成する, 4番目のビットが、X5 ・X5 ・X=X11を生成する。 なお、1番目のビットは実は、X0 ・X0 ・X=X で
あることに注意されたい。
積をリサイクルしてから、問題の指数ビットが1である
か0であるかに基づいて、それ自身を乗算し更に続けて
Xを掛けるか、又はそれ自身を乗算するだけとする。そ
れに必要な要件は1モジュール当たりの記憶容量が十分
なことだけである、すなわちこの場合には常に、実際に
形成された積である因数Qと、前段の乗算の結果である
予備的な積とを記憶しなければならないからである。例
えば、E=11(2進の1011)に対して 1番目のビットが、Xを生成する, 2番目のビットが、X・X=X2 を生成する, 3番目のビットが、X2 ・X2 ・X=X5 を生成する, 4番目のビットが、X5 ・X5 ・X=X11を生成する。 なお、1番目のビットは実は、X0 ・X0 ・X=X で
あることに注意されたい。
【0010】種々の態様の利点が従属的な請求項に列挙
されている。
されている。
【0011】
【実施例】本発明の好適実施例が、図面及び表を用いて
以下に説明される。まず最初に実施例に関する一般的な
設定<setup> が説明され、次に制御モジュールの実施例
が説明され、その後で処理モジュールの実施例が説明さ
れる。
以下に説明される。まず最初に実施例に関する一般的な
設定<setup> が説明され、次に制御モジュールの実施例
が説明され、その後で処理モジュールの実施例が説明さ
れる。
【0012】〔好適実施例の記述〕図1は、本発明によ
る冪乗・乗算デバイスの初等的なブロック図である。茲
では該デバイスは、制御モジュールRとブロックSAN で
表される処理モジュールのアレイとに、概念的に分解さ
れる。但しNはモジュールの数である。制御モジュール
は外部の世界、例えば更に高レベルのホスト・マシンか
ら、信号Hin, Vinを受け取り、Vout を通して外部の
世界へ出力する。制御モジュールはまた、処理モジュー
ルのアレイへ向けて信号Fout を出力し、そちらから信
号信号Cin,Pinを受け取る。同じように処理モジュー
ルのアレイはFinを受け取り、制御モジュールへ戻すよ
うにCout ,Pout を出力する。処理モジュール相互間
では、インターフェースは、制御モジュールと処理モジ
ュールのストリングとの間のインターフェースと同じで
ある。
る冪乗・乗算デバイスの初等的なブロック図である。茲
では該デバイスは、制御モジュールRとブロックSAN で
表される処理モジュールのアレイとに、概念的に分解さ
れる。但しNはモジュールの数である。制御モジュール
は外部の世界、例えば更に高レベルのホスト・マシンか
ら、信号Hin, Vinを受け取り、Vout を通して外部の
世界へ出力する。制御モジュールはまた、処理モジュー
ルのアレイへ向けて信号Fout を出力し、そちらから信
号信号Cin,Pinを受け取る。同じように処理モジュー
ルのアレイはFinを受け取り、制御モジュールへ戻すよ
うにCout ,Pout を出力する。処理モジュール相互間
では、インターフェースは、制御モジュールと処理モジ
ュールのストリングとの間のインターフェースと同じで
ある。
【0013】示される設定は、以後冪乗について詳細に
説明する。乗算は冪乗の部分計算である。制御モジュー
ル内で用いられるデータは、Mより小さい冪の指数値E
と、NをMのビット数とするとき 0, N の範囲内での2
つのカウンタn0, n1とから成る。さて、処理モジュール
のアレイは、
説明する。乗算は冪乗の部分計算である。制御モジュー
ル内で用いられるデータは、Mより小さい冪の指数値E
と、NをMのビット数とするとき 0, N の範囲内での2
つのカウンタn0, n1とから成る。さて、処理モジュール
のアレイは、
【数3】(X**E)mod M を計算しなければならない。これを実行するために、処
理モジュールのアレイは次の量すなわち:W=2**N−
M、及び指数Eで冪乗されるべき量X、を記憶する。処
理モジュールは更に、中間結果P, Q, rを記憶する手
段を持つ。詳しく云えば、Qは冪乗の中間結果であり、
rは(PをXとQのどちらかとすると)オペランドPと
Qとの乗算の中間結果である。
理モジュールのアレイは次の量すなわち:W=2**N−
M、及び指数Eで冪乗されるべき量X、を記憶する。処
理モジュールは更に、中間結果P, Q, rを記憶する手
段を持つ。詳しく云えば、Qは冪乗の中間結果であり、
rは(PをXとQのどちらかとすると)オペランドPと
Qとの乗算の中間結果である。
【0014】〔演算過程の記述〕表1はこの方法中に現
れる種々の量のタイプを特定するものである。フェーズ
<phase> は2値<binary value>である。1番目の値で鍵
<key> が搭載される。2番目の値でメッセージ・ブロッ
ク<message blocks>が搭載され変換されて最後に出力す
る。タイプ・ビット<type bit>は標準2進<standard bi
nary> である。タイプ桁上げ<type carry>は3値の桁上
げ量である。タイプ命令<type instruction>は11個の値
のいずれかをとることができ、それらはその後に列記さ
れているように名付けられている。特に、以下に詳しく
論じるが、-store- の付いた命令は、量rのために取っ
てある記憶スペースから量W, Q, X, Pのために取っ
てある記憶スペースへ移す(storeW,storeQ,storeX,s
toreP) という意味である。命令は通常のやり方、例え
ば4ビット量で符号化することができる。使用されない
値は、例えばテストのような特殊の機能を制御するよう
に設計することができる。命令loadXは、情報をXから
rに移す。次に、チャネル・タイプが特定される。Hin
は外部的に制御されるフェーズであり、Vin, Vout ,
Pinは2値チャネル<binary channels> であり、Cinは
タイプ桁上げのチャネルであり、Fout はタイプ命令の
制御値を出力するためのものである。制御モジュールは
入力ポートCinを通して桁上げ<carries> を受け取る。
制御モジュールと処理モジュールのアレイとの間の通信
においては、命令チャネルFout を通しての通信と、桁
上げチャネルCinを通しての通信とが、交互になされ
る。この章では制御モジュールの演算を機能レベルでの
み考察する。ハードウェア・レベルでは、プログラムさ
れたマイクロプロセッサのエレメント上へのこれらの機
能の写像が普通であろう。あるいはその代わりに、専用
の<dedicated> 特殊目的ハードウェアへの翻訳<transla
tion> は、この技術の当業者にとって明白であろう。一
般的には、数個のモジュールが1つの集積回路で実現で
きる。あるいはその代わりに、計算機援用設計<compute
r-assisted-designed>で単一集積回路とすることもでき
る。
れる種々の量のタイプを特定するものである。フェーズ
<phase> は2値<binary value>である。1番目の値で鍵
<key> が搭載される。2番目の値でメッセージ・ブロッ
ク<message blocks>が搭載され変換されて最後に出力す
る。タイプ・ビット<type bit>は標準2進<standard bi
nary> である。タイプ桁上げ<type carry>は3値の桁上
げ量である。タイプ命令<type instruction>は11個の値
のいずれかをとることができ、それらはその後に列記さ
れているように名付けられている。特に、以下に詳しく
論じるが、-store- の付いた命令は、量rのために取っ
てある記憶スペースから量W, Q, X, Pのために取っ
てある記憶スペースへ移す(storeW,storeQ,storeX,s
toreP) という意味である。命令は通常のやり方、例え
ば4ビット量で符号化することができる。使用されない
値は、例えばテストのような特殊の機能を制御するよう
に設計することができる。命令loadXは、情報をXから
rに移す。次に、チャネル・タイプが特定される。Hin
は外部的に制御されるフェーズであり、Vin, Vout ,
Pinは2値チャネル<binary channels> であり、Cinは
タイプ桁上げのチャネルであり、Fout はタイプ命令の
制御値を出力するためのものである。制御モジュールは
入力ポートCinを通して桁上げ<carries> を受け取る。
制御モジュールと処理モジュールのアレイとの間の通信
においては、命令チャネルFout を通しての通信と、桁
上げチャネルCinを通しての通信とが、交互になされ
る。この章では制御モジュールの演算を機能レベルでの
み考察する。ハードウェア・レベルでは、プログラムさ
れたマイクロプロセッサのエレメント上へのこれらの機
能の写像が普通であろう。あるいはその代わりに、専用
の<dedicated> 特殊目的ハードウェアへの翻訳<transla
tion> は、この技術の当業者にとって明白であろう。一
般的には、数個のモジュールが1つの集積回路で実現で
きる。あるいはその代わりに、計算機援用設計<compute
r-assisted-designed>で単一集積回路とすることもでき
る。
【0015】次に、特に制御モジュールに対して表2
が、変数宣言<variable declaration>と制御モジュール
による主要な実行ループ<execution loop>とを与える。
其処でタイプ-phase- の変数hと、タイプ桁上げの2つ
の桁上げ値 car及びc と、タイプ(0..N)の2つのカウン
ト値<count values>と、ビット値bと、指数を含むNビ
ットのアレイEとが宣言されている。
が、変数宣言<variable declaration>と制御モジュール
による主要な実行ループ<execution loop>とを与える。
其処でタイプ-phase- の変数hと、タイプ桁上げの2つ
の桁上げ値 car及びc と、タイプ(0..N)の2つのカウン
ト値<count values>と、ビット値bと、指数を含むNビ
ットのアレイEとが宣言されている。
【0016】無限ループ<infinite loop> はフェーズ制
御信号を待っており、それをチャネルHinを通して変数
h中に受け取る。フェーズ値"loadkey"(これは実際には
2値) を受け取ったら、変換鍵<conversion key>が搭載
される。特にこの鍵は、2つの量EとW、すなわち指数
<exponent>とモジュロ値M<modulo value M>の補数から
成る。最初に指数がビット・アレイEに搭載され、その
次に値Wが、分配された<distributed> 変数r(rは処
理モジュールの全体に分配される)に搭載される。続い
て、命令 storeWを処理モジュールのアレイに送り込む
ことにより、この値が分配された変数W中に記憶され
る。 storeW命令の後に、処理モジュールから制御モジ
ュールへの桁上げ通信が続く。
御信号を待っており、それをチャネルHinを通して変数
h中に受け取る。フェーズ値"loadkey"(これは実際には
2値) を受け取ったら、変換鍵<conversion key>が搭載
される。特にこの鍵は、2つの量EとW、すなわち指数
<exponent>とモジュロ値M<modulo value M>の補数から
成る。最初に指数がビット・アレイEに搭載され、その
次に値Wが、分配された<distributed> 変数r(rは処
理モジュールの全体に分配される)に搭載される。続い
て、命令 storeWを処理モジュールのアレイに送り込む
ことにより、この値が分配された変数W中に記憶され
る。 storeW命令の後に、処理モジュールから制御モジ
ュールへの桁上げ通信が続く。
【0017】これとは反対に、受け取ったフェーズが "
convert"であるならば、メッセージ・ブロックXが変数
r中に搭載され、続いて命令 storeXを送り込むことに
よりX中に記憶され、桁上げ値を待つ。それに続いて2N
より小さい値を生ずる手順
convert"であるならば、メッセージ・ブロックXが変数
r中に搭載され、続いて命令 storeXを送り込むことに
よりX中に記憶され、桁上げ値を待つ。それに続いて2N
より小さい値を生ずる手順
【数4】X exp E mod M が呼び出される。その結果はMより小さい筈だから、正
規化演算が実行されてMより小さい(モジュロMで)等
価の値をもたらす。最後に結果が出力される。冪乗と正
規化は、これから詳細に説明する一連の処理モジュール
によって効果的に実行される。hはただ2つの異なる値
のみをとり得るのだから、どちらかのフェーズが常に成
り立っている。
規化演算が実行されてMより小さい(モジュロMで)等
価の値をもたらす。最後に結果が出力される。冪乗と正
規化は、これから詳細に説明する一連の処理モジュール
によって効果的に実行される。hはただ2つの異なる値
のみをとり得るのだから、どちらかのフェーズが常に成
り立っている。
【0018】制御モジュールでは、Vin, Vout 及びP
inを経由して、Nビットのブロックが、最上位ビット<m
ostsignificant bit>で開始している間は常にビット連
続的に<bit-serially>通信されている。表3は2つの演
算load exponentとload rとを具体的に与える。演算l
oad exponentでは、カウントn0がNに初期化される。
その後で、各ビット位置に対して信号Vin上のビットを
待ち受けてこれをアレイE中に記憶するというループ動
作に入る。演算load r では、変数rは最初に命令set0を
与えることにより0に初期化され、それにより桁上げ値
cをCin上に待ち受ける。次いでカウントn0がNに初期
化される。その後で制御モジュールは各ビット位置に対
して先ずポートVin上のビットを受け取り、それからカ
ウントを1つ下げるというループ動作を実行する。次
に、命令mul2を与えてCinから桁上げ値cを待ち受ける
ことにより、rの値を2倍する。もしVinを通して受け
取ったビットが0に等しいならば、繰り返しステップは
完了である。もし受け取ったビットが1に等しいなら
ば、命令add1を与えCinから桁上げ値cをもう1度受け
取ることにより、rの値を1つ上げる。このようなステ
ップをN回行った後にrはポートVinを通して受け取っ
た値を持つ。
inを経由して、Nビットのブロックが、最上位ビット<m
ostsignificant bit>で開始している間は常にビット連
続的に<bit-serially>通信されている。表3は2つの演
算load exponentとload rとを具体的に与える。演算l
oad exponentでは、カウントn0がNに初期化される。
その後で、各ビット位置に対して信号Vin上のビットを
待ち受けてこれをアレイE中に記憶するというループ動
作に入る。演算load r では、変数rは最初に命令set0を
与えることにより0に初期化され、それにより桁上げ値
cをCin上に待ち受ける。次いでカウントn0がNに初期
化される。その後で制御モジュールは各ビット位置に対
して先ずポートVin上のビットを受け取り、それからカ
ウントを1つ下げるというループ動作を実行する。次
に、命令mul2を与えてCinから桁上げ値cを待ち受ける
ことにより、rの値を2倍する。もしVinを通して受け
取ったビットが0に等しいならば、繰り返しステップは
完了である。もし受け取ったビットが1に等しいなら
ば、命令add1を与えCinから桁上げ値cをもう1度受け
取ることにより、rの値を1つ上げる。このようなステ
ップをN回行った後にrはポートVinを通して受け取っ
た値を持つ。
【0019】(X**E)mod Mを計算するのに用いられ
る手順は、表6に示す算法に基づくのである。羃乗は不
変式
る手順は、表6に示す算法に基づくのである。羃乗は不
変式
【数5】 (Q**2**n)* X**(E mod2**n)=X**E を維持する。最初にQが1と設定され、nがNと設定さ
れる。そこで指数中の最上位から0ビットはスキップさ
れる。その後で、nが正である限り次のループが実行さ
れる。該ループは:最初にnを1つ下げてQを2乗す
る;その次に、もし指数の目下の値が1に等しければQ
をX倍する, 然らざればQは変えない;というループで
ある。
れる。そこで指数中の最上位から0ビットはスキップさ
れる。その後で、nが正である限り次のループが実行さ
れる。該ループは:最初にnを1つ下げてQを2乗す
る;その次に、もし指数の目下の値が1に等しければQ
をX倍する, 然らざればQは変えない;というループで
ある。
【0020】同様に、表7は乗算のアルゴリズム、すな
わち(P *Q)を計算する算法を与える。この計算は不
変式
わち(P *Q)を計算する算法を与える。この計算は不
変式
【数6】 (P mod2**n) *Q+r *(2**n)=(P *Q) を維持する。この場合には変数rが0と設定され、変数
nがNと設定される。そこでnが正である限り、先ずn
を1つ下げてrを2乗する。次に、2つのガード<guard
s>のうちのどちらが真であるかによって、何も演算を実
行しないか、又はQにrを加算する。
nがNと設定される。そこでnが正である限り、先ずn
を1つ下げてrを2乗する。次に、2つのガード<guard
s>のうちのどちらが真であるかによって、何も演算を実
行しないか、又はQにrを加算する。
【0021】表4は、制御モジュールによって実行され
る手順
る手順
【数7】X exp E mod M を示す。分配された変数Qは、3つの命令を与えること
により1と設定される。最初に命令set0が出力され、桁
上げ値cを待ち受け、これによりrは0に等しくされ
る。そこで命令add1が出力され、桁上げ値cを待ち受け
る。その後で、命令storeQが出力され、桁上げ値を待
ち受ける。以上3つの演算の組合せにより変数Qは1と
設定される。次に、カウンタn0がNに初期化される。そ
の後で、指数中の最上位から0ビットはスキップされ
る。指数の残りのビットは、変数r及びQが同じ値を持
つ状態で各ステップを開始するループを実行することに
より、処理される。各ステップでは最初に手順
により1と設定される。最初に命令set0が出力され、桁
上げ値cを待ち受け、これによりrは0に等しくされ
る。そこで命令add1が出力され、桁上げ値cを待ち受け
る。その後で、命令storeQが出力され、桁上げ値を待
ち受ける。以上3つの演算の組合せにより変数Qは1と
設定される。次に、カウンタn0がNに初期化される。そ
の後で、指数中の最上位から0ビットはスキップされ
る。指数の残りのビットは、変数r及びQが同じ値を持
つ状態で各ステップを開始するループを実行することに
より、処理される。各ステップでは最初に手順
【数8】mul Q mod M が実行される。その演算については次の段落で詳述す
る。この手順は特に、rとQの双方に値 r *Q modM
を割り当てる。従って手順は、この手順実行の始めに
はrはQと等しかったのだから、QをモジュロMで2乗
したのである。その次に、n0によって指定された指数ビ
ットの0値に対して繰り返しステップが完成する。問題
の指数ビットの1値に対しては、最初に、命令loadXを
与え、続いて桁上げ値を受け取ることにより、変数rは
Xと設定される。続いて手順
る。この手順は特に、rとQの双方に値 r *Q modM
を割り当てる。従って手順は、この手順実行の始めに
はrはQと等しかったのだから、QをモジュロMで2乗
したのである。その次に、n0によって指定された指数ビ
ットの0値に対して繰り返しステップが完成する。問題
の指数ビットの1値に対しては、最初に、命令loadXを
与え、続いて桁上げ値を受け取ることにより、変数rは
Xと設定される。続いて手順
【数9】mul Q mod M が実行され、その結果
【数10】Q *X modulo M が計算される。
【0022】表5は手順
【数11】mul Q mod M を詳細に記述したものである。羃乗を行う時の、Pは乗
算のための補助変数である。先ず最初に、命令 storeP
を出してrの値を変数Pに記憶し、続いて桁上げ値を受
け取る。次に命令set0が出力され、桁上げ値cを待ち受
ける。そこで、量car とbとは0にされ、カウントn1は
Nに等しくセットされる。n0は指数値のビットに沿って
順に並び、またn1は乗算因数Pのビットに沿って順に並
ぶことに留意されたい。その次に、 carの値か又はb若
しくはn1が正(car>0 又は b=1 又はn1>0)である限り
ループを実行する。ループの各ステップで3つの命令の
うちの1つが実行される。もし carの値が正(car>0)で
あれば carの値は1つ減少して、命令 addWが出され
る。桁上げ値は値2**Nを表し、またM=2**N−Wで
あるから、この2つの演算を併せてMによる減算が実現
する。もし carの値が0でbが1に等しければ(car=0
且つ b=1)、bは0にセットされ、命令 addQが出力さ
れる。もし carとbが共に0(car=0 且つ b=0)であれ
ば(ループの条件から)n1は正であり、従って因数Pの
ビットを受け取ることができ、カウントn1は1つ下が
る。次いで命令mul2が出力される。3つの命令のうちの
1つが出された後で、桁上げ値cが待ち受けられて、そ
れは carの値に加算される。このようにして因数Pの全
ビットが処理されて、ループの終わりにはrはモジュロ
MでP *Qに等しくなるが、それは必ずしも2**Nより
小さくはない。従って、処理モジュール中の総ての可能
な桁上げ値が制御モジュールに向かって伝播するような
新しいループに入る。最初にカウントn1が再びNにセッ
トされる。 carか又はn1かどちらかの値が正である限り
ループは継続する。もし carが正であれば、 carが1つ
下げられ、n1がNにセットされ、且つ命令 addWが出力
される。もし carが0に等しければ(すなわちn1が正で
あれば)カウントn1が1つ下げられ、命令ident が出力
される。命令ident は、rの値を変えないで桁上げ値を
伝播するのに用いられるのみである。2つの命令のうち
の1つが出された後で、桁上げ値cが待ち受けられて、
それは carの値に加算される。ループが終わると、rの
値は2**Nより小さくなる。そうすると、命令 storeQ
が出され、桁上げ値を受け取ることにより、rの値はQ
の中に記憶される。
算のための補助変数である。先ず最初に、命令 storeP
を出してrの値を変数Pに記憶し、続いて桁上げ値を受
け取る。次に命令set0が出力され、桁上げ値cを待ち受
ける。そこで、量car とbとは0にされ、カウントn1は
Nに等しくセットされる。n0は指数値のビットに沿って
順に並び、またn1は乗算因数Pのビットに沿って順に並
ぶことに留意されたい。その次に、 carの値か又はb若
しくはn1が正(car>0 又は b=1 又はn1>0)である限り
ループを実行する。ループの各ステップで3つの命令の
うちの1つが実行される。もし carの値が正(car>0)で
あれば carの値は1つ減少して、命令 addWが出され
る。桁上げ値は値2**Nを表し、またM=2**N−Wで
あるから、この2つの演算を併せてMによる減算が実現
する。もし carの値が0でbが1に等しければ(car=0
且つ b=1)、bは0にセットされ、命令 addQが出力さ
れる。もし carとbが共に0(car=0 且つ b=0)であれ
ば(ループの条件から)n1は正であり、従って因数Pの
ビットを受け取ることができ、カウントn1は1つ下が
る。次いで命令mul2が出力される。3つの命令のうちの
1つが出された後で、桁上げ値cが待ち受けられて、そ
れは carの値に加算される。このようにして因数Pの全
ビットが処理されて、ループの終わりにはrはモジュロ
MでP *Qに等しくなるが、それは必ずしも2**Nより
小さくはない。従って、処理モジュール中の総ての可能
な桁上げ値が制御モジュールに向かって伝播するような
新しいループに入る。最初にカウントn1が再びNにセッ
トされる。 carか又はn1かどちらかの値が正である限り
ループは継続する。もし carが正であれば、 carが1つ
下げられ、n1がNにセットされ、且つ命令 addWが出力
される。もし carが0に等しければ(すなわちn1が正で
あれば)カウントn1が1つ下げられ、命令ident が出力
される。命令ident は、rの値を変えないで桁上げ値を
伝播するのに用いられるのみである。2つの命令のうち
の1つが出された後で、桁上げ値cが待ち受けられて、
それは carの値に加算される。ループが終わると、rの
値は2**Nより小さくなる。そうすると、命令 storeQ
が出され、桁上げ値を受け取ることにより、rの値はQ
の中に記憶される。
【0023】羃乗の後でrの値が正規化される。表8は
正規化演算、すなわち変数rに対してr modMの値を割
り付ける演算の詳細である。最初からrは2**Nより小
さくなっており、正規化後には更にMより小さくなって
いる。最初にはrの値もまたQ中に存在する。先ず始め
に、命令 addWを出し、続いて全桁上げ値を伝播するこ
とによりWの値をrに加算する。もし桁上げ値が受け取
られると、当初のrはMより大きかったのであり、更新
された値は r−M である。反対にもし桁上げ値が受け取
られなければ、依然としてQ中に存在する古いrの値は
正しかったのであり、出力されるべきものである。それ
故に演算は、命令 addWを送出し、桁上げ値を待ち受け
ることから始まる。カウントn1がNにセットされる。そ
うすると、 c=0 でn1が0でない限り、命令ident が出
力されカウンタn1が減り、桁上げ値が受け取られる。ル
ープから出るときは、次の条件のうちの1つが成り立
つ。もし桁上げ値が受け取られなければ(c=0)、最初に
命令set0を出し、桁上げ値を受け取り、続いて命令 add
Qを出し、桁上げ値を受け取ることにより、Qの値はr
中に復活する。反対にもし桁上げ値が1に等しければ、
更新されたrの値は正しく、そのまま変更されない。最
後に、結果は表9に示すように出力される。先ず最初
に、rの値は、命令 storePを出し桁上げ値を待ち受け
ることにより、シフト・レジスタに記憶される。次に、
カウントn0がNに等しくセットされる。それに続くルー
プでn0>0 である限りPinから1ビットを受け取り、続
いてVout を通して出力し、その後でn0は下げられる。
正規化演算、すなわち変数rに対してr modMの値を割
り付ける演算の詳細である。最初からrは2**Nより小
さくなっており、正規化後には更にMより小さくなって
いる。最初にはrの値もまたQ中に存在する。先ず始め
に、命令 addWを出し、続いて全桁上げ値を伝播するこ
とによりWの値をrに加算する。もし桁上げ値が受け取
られると、当初のrはMより大きかったのであり、更新
された値は r−M である。反対にもし桁上げ値が受け取
られなければ、依然としてQ中に存在する古いrの値は
正しかったのであり、出力されるべきものである。それ
故に演算は、命令 addWを送出し、桁上げ値を待ち受け
ることから始まる。カウントn1がNにセットされる。そ
うすると、 c=0 でn1が0でない限り、命令ident が出
力されカウンタn1が減り、桁上げ値が受け取られる。ル
ープから出るときは、次の条件のうちの1つが成り立
つ。もし桁上げ値が受け取られなければ(c=0)、最初に
命令set0を出し、桁上げ値を受け取り、続いて命令 add
Qを出し、桁上げ値を受け取ることにより、Qの値はr
中に復活する。反対にもし桁上げ値が1に等しければ、
更新されたrの値は正しく、そのまま変更されない。最
後に、結果は表9に示すように出力される。先ず最初
に、rの値は、命令 storePを出し桁上げ値を待ち受け
ることにより、シフト・レジスタに記憶される。次に、
カウントn0がNに等しくセットされる。それに続くルー
プでn0>0 である限りPinから1ビットを受け取り、続
いてVout を通して出力し、その後でn0は下げられる。
【0024】図2は、SAn のシストリック設計を更に詳
細に示すものである。この設計は回帰的<recursive> で
あって、モジュールSA n+1は、算術セルAと、シフトレ
ジスタ・セルSと、類似だがより小さいモジュールSAn
とから成る。もしnが正ならば、モジュールSAn は同様
に一対のA/SセルとモジュールSA n-1とから成る。最
後には、何らの算術演算も有効に実行しない末尾<tail>
セルSA0 がある。
細に示すものである。この設計は回帰的<recursive> で
あって、モジュールSA n+1は、算術セルAと、シフトレ
ジスタ・セルSと、類似だがより小さいモジュールSAn
とから成る。もしnが正ならば、モジュールSAn は同様
に一対のA/SセルとモジュールSA n-1とから成る。最
後には、何らの算術演算も有効に実行しない末尾<tail>
セルSA0 がある。
【0025】表10は、末尾セルSA0 の機能を例示するも
のである。それは命令fを受け取っている間中は、連続
的にループ動作をし、この命令の性質に依存して1か又
は0かのいずれかを桁上げ出力Cout に出力する。SA0
はポートPout を通して通信することは決して無い。表
11も同様に、シフトレジスタ・セルSの機能を示すもの
である。それは連続的にループ動作をし、各ループ段階
で先ず最初に、対応する算術セルからのポートinを通し
て(搭載演算)か、又は右隣りからのポートP inを通し
て(シフト演算)か、のいずれかによる1ビットを待ち
受ける。受け取ったビットは、続いてポートPout を通
して左隣りへ出力される。実際には、セルは多重入力を
持つ1ビット・シフトレジスタなのである。いかなる時
にも、2つの入力ポートのうちの最大でも1つのポート
が、1ビットを出していることに留意されたい。
のである。それは命令fを受け取っている間中は、連続
的にループ動作をし、この命令の性質に依存して1か又
は0かのいずれかを桁上げ出力Cout に出力する。SA0
はポートPout を通して通信することは決して無い。表
11も同様に、シフトレジスタ・セルSの機能を示すもの
である。それは連続的にループ動作をし、各ループ段階
で先ず最初に、対応する算術セルからのポートinを通し
て(搭載演算)か、又は右隣りからのポートP inを通し
て(シフト演算)か、のいずれかによる1ビットを待ち
受ける。受け取ったビットは、続いてポートPout を通
して左隣りへ出力される。実際には、セルは多重入力を
持つ1ビット・シフトレジスタなのである。いかなる時
にも、2つの入力ポートのうちの最大でも1つのポート
が、1ビットを出していることに留意されたい。
【0026】同様に、表12は算術セルAの機能を示すも
のである。それは、0ないし4の値域を持つ可変桁上げ
すなわち桁上げ型の変数cと、命令型の変数fと、3つ
のビットw, q, xとを持つ。先ず始めには、このセル
は入力Finからの命令を待ち受けており、それを受け取
ったら、変数 car, c は0にリセットされる。次に、ル
ープが実行されて、そこで命令値がどの演算を実行する
かを決定する。以前に挙げた11の命令に対して次の演算
が実行される: set0 car を0にセットする, add1 car の値を維持する, mul2 car の値を2倍する, ident car の値を維持する, addW wを carに加算する, addQ qを carに加算する, load X car にxの値を割り当てる, storeW wに carの最下位ビット(car mod 2) を割
り当てる, storeQ qに値(car mod 2) を割り当てる, storeX xに値(car mod 2) を割り当てる, storeP 値(car mod 2) を出力ポートout を通して
出力する. その次に、命令fが出力ポートFout を通して出力さ
れ、carの2つの最上位ビットがCout を通して出力さ
れる。それから、次の命令がFinを通して受け取られ、
桁上げ値がCinを通して受け取られる。受け取った桁上
げ値は carの最下位ビットに加算され、その後に、次の
ループ・ステップが実行される。
のである。それは、0ないし4の値域を持つ可変桁上げ
すなわち桁上げ型の変数cと、命令型の変数fと、3つ
のビットw, q, xとを持つ。先ず始めには、このセル
は入力Finからの命令を待ち受けており、それを受け取
ったら、変数 car, c は0にリセットされる。次に、ル
ープが実行されて、そこで命令値がどの演算を実行する
かを決定する。以前に挙げた11の命令に対して次の演算
が実行される: set0 car を0にセットする, add1 car の値を維持する, mul2 car の値を2倍する, ident car の値を維持する, addW wを carに加算する, addQ qを carに加算する, load X car にxの値を割り当てる, storeW wに carの最下位ビット(car mod 2) を割
り当てる, storeQ qに値(car mod 2) を割り当てる, storeX xに値(car mod 2) を割り当てる, storeP 値(car mod 2) を出力ポートout を通して
出力する. その次に、命令fが出力ポートFout を通して出力さ
れ、carの2つの最上位ビットがCout を通して出力さ
れる。それから、次の命令がFinを通して受け取られ、
桁上げ値がCinを通して受け取られる。受け取った桁上
げ値は carの最下位ビットに加算され、その後に、次の
ループ・ステップが実行される。
【0027】シストリック設計はその極度のときに、各
処理モジュールが値P, Q, Wの1ビットを含んでい
る。かような解答は迅速ではあるが、かようなビット・
スライス構造<bit-slice architecture>は乗算器を構築
するのに最大数のセルを必要とするから、領域及び電力
消費に対して多大な需要を生じる。それほどの高速を必
要としないならば、遅くても安価な設計が、スライスの
サイズを増すことにより達成される。
処理モジュールが値P, Q, Wの1ビットを含んでい
る。かような解答は迅速ではあるが、かようなビット・
スライス構造<bit-slice architecture>は乗算器を構築
するのに最大数のセルを必要とするから、領域及び電力
消費に対して多大な需要を生じる。それほどの高速を必
要としないならば、遅くても安価な設計が、スライスの
サイズを増すことにより達成される。
【0028】記述を完全なものにするために、図3a及
び図3bは、いずれも3ビット整数であるP=4(100)
にQ=5(101) をモジュロMで掛け算して、W=2(01
0) で表す乗算の完全な例を与えるものである。図には
制御モジュールRSと処理モジュールH2, H1, H0とが、そ
れらの含む量と共に示されている。図3bでは左端の列
に37通りの状態<states>が示され、その各々が、サイク
ル部分(矢印で示す)中の演算と転移された量に対応す
るか又はそのような転移後の位置<situation> 及びそれ
に続く演算に対応する。その結果として、連続した8行
が1サイクルに対応する。量nは処理を待っているビッ
トの数であり、真<true>と偽<false> とはそれぞれt,
fと略記され、dはダミー量<dummy quantity>をエミュ
レートする末尾モジュールにより生成される2進数であ
る。id(ident),aw(addw),aq(addq),db(double)について
は自明であろう。行37で、制御モジュールはd=真であ
ることを見出し、これは終了を示す。2つの被乗数のビ
ット長が与えられていれば、それは行37より前に来るこ
ともでき、それ故に計数によって決定されることもあ
る。種々の量W, P, Qに依存して終了が早く来ること
もあり、それ故に示された実施例は特定の環境下では若
干早くなる。
び図3bは、いずれも3ビット整数であるP=4(100)
にQ=5(101) をモジュロMで掛け算して、W=2(01
0) で表す乗算の完全な例を与えるものである。図には
制御モジュールRSと処理モジュールH2, H1, H0とが、そ
れらの含む量と共に示されている。図3bでは左端の列
に37通りの状態<states>が示され、その各々が、サイク
ル部分(矢印で示す)中の演算と転移された量に対応す
るか又はそのような転移後の位置<situation> 及びそれ
に続く演算に対応する。その結果として、連続した8行
が1サイクルに対応する。量nは処理を待っているビッ
トの数であり、真<true>と偽<false> とはそれぞれt,
fと略記され、dはダミー量<dummy quantity>をエミュ
レートする末尾モジュールにより生成される2進数であ
る。id(ident),aw(addw),aq(addq),db(double)について
は自明であろう。行37で、制御モジュールはd=真であ
ることを見出し、これは終了を示す。2つの被乗数のビ
ット長が与えられていれば、それは行37より前に来るこ
ともでき、それ故に計数によって決定されることもあ
る。種々の量W, P, Qに依存して終了が早く来ること
もあり、それ故に示された実施例は特定の環境下では若
干早くなる。
【表1】
【表2】
【表3】
【表4】
【表5】
【表6】
【表7】
【表8】
【表9】
【表10】
【表11】
【表12】
【図1】図1は、羃乗・乗算デバイスの実施例のシンボ
リックな概略図である。
リックな概略図である。
【図2】図2も、羃乗・乗算デバイスの実施例の、シス
トリック設計のシンボリックな概略図である。
トリック設計のシンボリックな概略図である。
【図3】図3a及び図3bは、モジュロMで3ビット乗
算兼正規化の演算を説明する図である。
算兼正規化の演算を説明する図である。
A 算術セル R 制御モジュール S シフト・レジスタ・セル SAN 処理モジュールのアレイ SAn モジュール
フロントページの続き (73)特許権者 590000248 Groenewoudseweg 1, 5621 BA Eindhoven, T he Netherlands (58)調査した分野(Int.Cl.7,DB名) C06F 7/52 C06F 7/552 C06F 7/72
Claims (7)
- 【請求項1】 1番目の多ビット整数Qを2番目の多ビ
ット整数Pと、3番目の多ビット整数Mを法として乗算
するための、シストリック化されたモジュラー算術デバ
イスにおいて、 該算術ユニットは、制御モジュールと、それに続く処理
モジュールの直列配置と、更にそれに続く末尾モジュー
ルとを有して成り、 該処理モジュールは、上記1番目の整数Qの相互に排他
的な1番目のビット部分と、対としては等しいシグニフ
ィカンスの且つ制御モジュールから遠ざかるに伴いその
シグニフィカンス・レベルが単調に減少する上記直列配
置に沿う上記3番目の整数Mを示す相互に排他的な2番
目のビット部分と、を記憶するためのモジュラー記憶手
段を持ち、 上記制御モジュールは、1番目のサイクル中の制御ビッ
ト・ストリングの制御ビットを提示するための提示手段
と、2番目のサイクル部分中の桁上げ値を受け取るため
の受信手段とを持ち、そして、 上記処理モジュールは、それらそれぞれのより大きくシ
グニフィカントな隣りから上記制御ビット・ストリング
からの制御ビットを、またそれらそれぞれのより小さく
シグニフィカントな隣りから桁上げ値を、同時に1番目
のサイクル位相中に受け取る手段を持ち、それと共に、
それらそれぞれのより大きくシグニフィカントな隣りへ
桁上げ値を、またそれらそれぞれのより小さくシグニフ
ィカントな隣りへ上記上記制御ビット・ストリングの制
御ビットを、共に2番目の位相中に提示するための提示
手段をも持ち、更に、 各処理モジュールは、隣りに関して位相を半サイクルず
らして動作し、更にまた、 上記末尾モジュールは、上記直列配置の低シグニフィカ
ント端に関して上記1番目及び3番目の整数のダミー部
分をエミュレートするためのエミュレート手段を持つこ
とを特徴とするシストリック化されたモジュラー算術デ
バイス。 - 【請求項2】 上記制御モジュールは、上記直列配置を
通して前方向の伝播のための制御信号ストリングを連続
的に提示する提示手段を持ち、 該連続的に提示することは、単調に減少するシグニフィ
カンス・レベルに従って上記2番目の整数の引き続くビ
ット値及び受け取った桁上げ値の制御の下に、すなわ
ち、P中の "1"ビットの制御の下では“2倍”命令とそ
れに続く"addQ"命令によって、しかしP中の "0"ビッ
トの制御の下では“2倍”命令のみによってなされ、 上記直列配置は、各制御信号の後に桁上げ信号を後方向
に伝播する後方向伝播手段を持ち、 制御モジュールは、受け取った各桁上げ値に対して"add
W" 命令を前方向に伝播してその結果Mの減算を有効に
もたらして成ることを特徴とする請求項1に記載のシス
トリック化されたモジュラー算術デバイス。 - 【請求項3】 各処理モジュールは、単一ビット・シグ
ニフィカンス・レベルで演算を行うことを特徴とする請
求項1又は2に記載のシストリック化されたモジュラー
算術デバイス。 - 【請求項4】 上記制御モジュールは、上記2番目の整
数の全ビット信号の提示の後に、上記末尾モジュールか
ら来る変化していないダミー信号の到着を検出し、該変
化していないダミー信号は、モジュラー化された積の適
用可能であることをそれによって信号するために、上記
直列配置中には桁上げ信号も非ダミー制御信号も何ら伝
播されていないことを信号するものであるとするための
検出手段を持つことを特徴とする請求項1ないし3のう
ちのいずれか1項に記載のシストリック化されたモジュ
ラー算術デバイス。 - 【請求項5】 上記制御モジュールは、上記2番目の整
数の全ビット信号の提示の後に上記サイクルをカウント
し、このカウントは、上記直列配置の長さによって定ま
る特定のカウント数に到達したときに、モジュラー化さ
れた積の適用可能であることをそれによって信号するた
めに、何らかの桁上げ信号又は非ダミー制御信号が既に
リップル・アウトされていることを信号するためのカウ
ント手段を持つことを特徴とする請求項1ないし3のう
ちのいずれか1項に記載のシストリック化されたモジュ
ラー算術デバイス。 - 【請求項6】 ある整数Xを、上記3番目の整数Mを法
として指数Eで羃乗するために、 上記直列配置は上記1番目の整数Qを代表するものとし
て上記整数Xを搭載するための制御手段を持ち、 上記制御モジュールは、上記2番目の整数Pを代表する
ものとして上記整数Xの種々の羃乗を提示するための上
記提示手段を能動化する2番目の制御手段を持ち、更に
また、 上記2番目の整数Pのその次の値を代表するものとして
予備的な積を上記制御モジュールに戻してリサイクルす
るためのリサイクル手段が設けられて成ることを特徴と
する請求項1に記載のシストリック化されたモジュラー
算術デバイス。 - 【請求項7】 上記制御モジュールは、上記羃の指数中
の次々のビットの制御の下に、上記予備的な積を平方す
るか、又は上記予備的な積を平方し続いて新しい予備的
な積に上記整数Xを乗算するかのいずれかのための選択
手段を持つことを特徴とする請求項6に記載のシストリ
ック化されたモジュラー算術デバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL912006392 | 1991-03-22 | ||
NL91200639:2 | 1991-03-22 | ||
EP91200639 | 1991-03-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0580985A JPH0580985A (ja) | 1993-04-02 |
JP3213628B2 true JP3213628B2 (ja) | 2001-10-02 |
Family
ID=8207563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06220092A Expired - Fee Related JP3213628B2 (ja) | 1991-03-22 | 1992-03-18 | Mを法として長い整数を乗算するための算術ユニット及びそのような乗算デバイスを具えるr.s.a.変換器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5414651A (ja) |
EP (1) | EP0504996B1 (ja) |
JP (1) | JP3213628B2 (ja) |
DE (1) | DE69226110T2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990024971A (ko) * | 1997-09-09 | 1999-04-06 | 정선종 | 모듈러 승산장치 |
JPH0720778A (ja) * | 1993-07-02 | 1995-01-24 | Fujitsu Ltd | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
US5504817A (en) * | 1994-05-09 | 1996-04-02 | Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science | Method and apparatus for memory efficient variants of public key encryption and identification schemes for smart card applications |
JP3615622B2 (ja) * | 1996-06-28 | 2005-02-02 | 株式会社ルネサステクノロジ | マイクロコンピュータ |
US6061706A (en) * | 1997-10-10 | 2000-05-09 | United Microelectronics Corp. | Systolic linear-array modular multiplier with pipeline processing elements |
US6064740A (en) * | 1997-11-12 | 2000-05-16 | Curiger; Andreas | Method and apparatus for masking modulo exponentiation calculations in an integrated circuit |
US6963644B1 (en) * | 1999-04-07 | 2005-11-08 | Matsushita Electric Industrial Co., Ltd. | Multi-word arithmetic device for faster computation of cryptosystem calculations |
SE517045C2 (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 |
US7017064B2 (en) * | 2001-05-09 | 2006-03-21 | Mosaid Technologies, Inc. | Calculating apparatus having a plurality of stages |
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 |
US7519644B2 (en) * | 2004-05-27 | 2009-04-14 | King Fahd University Of Petroleum And Minerals | Finite field serial-serial multiplication/reduction structure and method |
US8161338B2 (en) * | 2005-10-14 | 2012-04-17 | Mentor Graphics Corporation | Modular compaction of test responses |
US7849125B2 (en) | 2006-07-07 | 2010-12-07 | Via Telecom Co., Ltd | Efficient computation of the modulo operation based on divisor (2n-1) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2591003B1 (fr) * | 1985-11-29 | 1988-01-15 | Trt Telecom Radio Electr | Dispositif de sommation de carres |
US5101431A (en) * | 1990-12-14 | 1992-03-31 | Bell Communications Research, Inc. | Systolic array for modular multiplication |
-
1992
- 1992-03-13 DE DE69226110T patent/DE69226110T2/de not_active Expired - Fee Related
- 1992-03-13 EP EP92200730A patent/EP0504996B1/en not_active Expired - Lifetime
- 1992-03-18 JP JP06220092A patent/JP3213628B2/ja not_active Expired - Fee Related
-
1993
- 1993-10-21 US US08/140,817 patent/US5414651A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69226110D1 (de) | 1998-08-13 |
JPH0580985A (ja) | 1993-04-02 |
EP0504996A2 (en) | 1992-09-23 |
EP0504996A3 (en) | 1993-04-21 |
DE69226110T2 (de) | 1999-02-18 |
EP0504996B1 (en) | 1998-07-08 |
US5414651A (en) | 1995-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1293891B1 (en) | Arithmetic processor accomodating different finite field size | |
US5524090A (en) | Apparatus for multiplying long integers | |
JP3213628B2 (ja) | Mを法として長い整数を乗算するための算術ユニット及びそのような乗算デバイスを具えるr.s.a.変換器 | |
EP0890147B1 (en) | Co-processor for performing modular multiplication | |
EP1576493A1 (en) | Method and a system for performing calculation operations and a device | |
CN103793199B (zh) | 一种支持双域的快速rsa密码协处理器 | |
US6009450A (en) | Finite field inverse circuit | |
US20140136588A1 (en) | Method and apparatus for multiplying binary operands | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
US6917956B2 (en) | Apparatus and method for efficient modular exponentiation | |
KR101925868B1 (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
Zeghid et al. | Speed/area-efficient ECC processor implementation over GF (2 m) on FPGA via novel algorithm-architecture co-design | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
US7607165B2 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
WO2000065433A1 (en) | Method for multiplication in galois fields using programmable circuits | |
US20240220201A1 (en) | A method and architecture for performing modular addition and multiplication sequences | |
KR100480997B1 (ko) | GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치 | |
Koppermann et al. | Fast FPGA implementations of Diffie-Hellman on the Kummer surface of a genus-2 curve | |
KR100481586B1 (ko) | 모듈러 곱셈 장치 | |
JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
US5948051A (en) | Device improving the processing speed of a modular arithmetic coprocessor | |
Nadjia et al. | High throughput parallel montgomery modular exponentiation on FPGA | |
JP3129526B2 (ja) | 整数上の乗算回路 | |
TWI807927B (zh) | 具有向量歸約方法與元素歸約方法的向量處理器 | |
JP3210420B2 (ja) | 整数上の乗算回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |