JP2000512786A - モジュラ乗算を行なうためのコプロセッサ - Google Patents
モジュラ乗算を行なうためのコプロセッサInfo
- Publication number
- JP2000512786A JP2000512786A JP10520055A JP52005598A JP2000512786A JP 2000512786 A JP2000512786 A JP 2000512786A JP 10520055 A JP10520055 A JP 10520055A JP 52005598 A JP52005598 A JP 52005598A JP 2000512786 A JP2000512786 A JP 2000512786A
- Authority
- JP
- Japan
- Prior art keywords
- coprocessor
- bit
- value
- binary data
- receiving
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】
モジュラ乗算を行なうためのコプロセッサ(図2)は、BおよびNの2進データストリーム(bstr,nstr)を受けるための手段、データ値Aを受けるための手段、加算手段(Add1,Add2)、減算手段(Sub1,Sub2,Sub3)および乗算手段(Mul1,Mul2)を具備し、これらは順次BおよびNの2進データストリームおよびデータ値Aを処理してモジュロ縮小された乗算値(A*B)mod Nを生成し、前記コプロセッサはさらにBおよびNの2進データストリームの各々を前記2進データストリームのそれぞれの交互のビットを備えた成分データストリームへと分割するための分割手段(図5A)を具備し、かつ前記加算手段(図3)、減算手段および乗算手段は前記成分データストリームを並列に処理するよう配列されている。
Description
【発明の詳細な説明】
モジュラ乗算を行なうためのコプロセッサ
発明の分野
この発明は一般的にはモジュラ乗算(modular multiplica
tion)を行なうためのコプロセッサ(co−processor)に関し、
かつ特定的には、排他的ではないが、モンゴメリ・リダクション・アルゴリズム
(Montgomery Reduction Algorithm)を実施す
るためのコプロセッサに関する。
発明の背景
モジュラ乗算はRSA暗号のような暗号方法を実施する上で広く使用されてい
る。
モンゴメリ・アルゴリズムはモジュラ乗算を行なうための最も効率的な技術の
1つである。これを用いることは計算時間を最小にするために高い性能が要求さ
れる場合に特に効率的である。
モンゴメリの証明(Montgomery proof)は付属書類1に与え
られており、かつモンゴメリ・リダク
ション・アルゴリズムは以下に概略を説明する。
〈モンゴメリ・アルゴリズム〉
A・Bに関してP演算子を規定するために、以下に概略を示すプロセスに従う
。
(1)X=A・B+S{Sは始めはゼロ}
(2)Y=(X・J)mod2n(この場合、Jは予め計算された定数である
)
(3)Z=X+Y・N
(4)S=Z/2n
(5)P=S(modN)(もしS≧Nであれば、NがSから減算される)
したがって、P=P(A・B)N(モンゴメリフィールドの数における結果)
スマートカードが取引の間の高いレベルの保安性を保証する手段として使用さ
れる財務または金融の用途においては、パブリックキーまたは公開鍵(Publ
ic Key)暗号法が益々普及してきている。パブリックキー暗号法は伝統的
な対称(symmetric)あるいはプライベイトキーまたは秘密鍵(pri
vate key)方法よりも高いレベルの保護を提供するが、最近まで実施す
るのが高価であった。技術の進歩は今やそのような方法の実施をコスト効率のよ
いものにしている。RSAパブリックキー
能力はスマートカードのマイクロコントローラ内に設計されており、該マイクロ
コントローラはまた各々512ビットの長さのオペランドに対してモジュラ乗算
を行なうよう特に設計されたオンチップのコプロセッサを含む。前記コプロセッ
サはROM内にまたはEEPROM内に記憶されたプログラムによってソフトウ
ェアの制御の下に前記マイクロコントローラのCPUによって直接ドライブされ
る。除算プロセスなしにモジュラ縮小またはモジュラ・リダクションのためのモ
ンゴメリ・アルゴリズムを実施するそのようなコプロセッサはヨーロッパ特許公
報EP−0601907−Aから知られている。
後に詳細に説明するように、そのような知られたコプロセッサは数多くの不都
合を有する。
図面の簡単な説明
モンゴメリ・リダクション・アルゴリズムを実施するためにモジュラ乗算を行
なうための1つのコプロセッサにっき、実例のみにより、添付の図面を参照して
説明する。添付の図面においては、
図1は、モンゴメリ・リダクション・アルゴリズムを実施するためにモジュラ
乗算を行なうための知られた、従来技術のコプロセッサのブロック回路図を示す
。
図2は、モンゴメリ・リダクション・アルゴリズムを実
施するためにモジュラ乗算を行なうための新規な、改善されたコプロセッサのブ
ロック回路図を示す。
図3は、図2のコプロセッサにおいて使用されるビット対加算器段のブロック
回路図を示す。
図4は、図2のコプロセッサにおいて使用される乗算器および関連する回路の
ブロック回路図を示す。
図5Aは、並列−直列インタフェースを使用するランダムアクセスメモリから
構成要素の直列ビットストリームを発生するために図2のコプロセッサにおいて
使用される構成のブロック回路図を示す。
図5Bは、図2のコプロセッサにおいて使用されるデュアルポートのレジスタ
構成のブロック回路図を示す。
図6は、自動インデクスポインタ(auto−indexing point
er)を使用する直接累乗法のための図2のコプロセッサにおいて使用される構
成のブロック回路図を示す。
図7は、中国の剰余定理(Chinese Remainder Theor
em)を実施する上で、図2のコプロセッサの使用を説明するブロック回路図を
示す。
好ましい実施形態の詳細な説明
〈知られたコプロセッサの動作〉
図1は、フルモード512ビットおよびハーフモード256ビットのオペラン
ドの双方に対するモンゴメリ・アル
ゴリズムを行なうためのコプロセッサの知られた、従来技術のハードウェア構成
の図を示す。
この図は基本的に3つの512ビットのクロックド・シフトレジスタおよび2
つの並列−直列乗算器を具備する実行ユニットを示す。
前記Bの値およびモジュラス(modulus)NはそれぞれBおよびNレジ
スタへと予めロードされる。レジスタSは512クロックサイクルの各々のロー
テーション(rotation)の後に中間結果を記憶するために使用される。
始めに、このレジスタはクリアされることになる。予め計算されたモンゴメリ定
数、J0は32ビットのシフトレジスタを介してコプロセッサへとロードされか
つラッチ2においてラッチされる。
Aの値は一度に4バイト(32ビット)でマルチプレクサM2_1;2を介し
てシフトされかつラッチ1にラッチされる。Bレジスタにおける値は一度に1ビ
ットずつ第1の並列−直列乗算器ML1へと直列的にクロッキングされる。この
乗算器の出力は、ノードnAにおいて、値Ai*Bである。この値Ai*Bは次に
加算器Ad1においてレジスタSに記憶された中間値に加算されて値X=Ai*
B+Sを生成する。
最初の32クロックサイクルに対しては、Xの値の最初の32ビットの部分は
マルチプレクサM3_1;4を介して第2の並列−直列乗算器ML2へと供給さ
れ、そこで値
J0によって乗算される。ノードnDにおけるML2からの出力は値Y0=A*B
*J0である。Y0は32ビットのシフトレジスタを介してフィードバックされか
つマルチプレクサMを介してラッチ2にラッチされる。
最初の32クロックサイクルの後に、マルチプレクサM3_1;4は切り替わ
りかつモジュラスNを乗算器ML2へと供給し、そこでNはY0によって乗算さ
れて値Y0Nを生成する。この値は次に、次の544クロックサイクルにわたり
、加算器Ad2においてXと加算されて値Z=X+Y0*Nを生成する。この計
算の最後の32ビットはゼロでありかつ512の最上位ビットのみがSレジスタ
へとセーブし戻される。これは1つの全ローテーションを完了させる。
32ビットの乗算を使用して、16のローテーションが全512ビット×51
2ビットの乗算を行なうために必要とされ、これによって次式が求められる。
P=A・B・I(modN)=P(A・B)N
(モンゴメリ・フィールドの数の結果)
必要とされる結果Pを回復するためにPはH(予め計算されたモンゴメリ定数
)によって乗算されて次式で示される実数のフィールドの結果を与える。
R=A・B(modN)=P(P−H)N
〈RSAパブリックキー暗号法〉
RSAパブリックキーまたは公開鍵暗号システムを実施するためには形式Md
(modN)の値を計算することを必要とし、この場合指数dはnビットまでの
長さとすることができる(nはNにおける2進デジットの数)。これは順次取り
入れられる前記指数値dの各ビットの値に応じて反復された2乗操作または演算
および乗算操作または演算を行なうことによって達成される。512ビットの指
数に対しては、ほぼ768のモジュラ操作または演算が必要とされる。これは2
0MHzのクロックレートで512ビットのRSA署名(signature)
に対して以下のような性能計算につながる。
trsa=
(544*16*50*768)*10-6mS
trsa=334.23mS
〈知られたコプロセッサ・アーキテクチャの不都合〉
図1に示された知られたコプロセッサ・アーキテクチャはマイクロコントロー
ラと共に単一のシリコンチップ上に集積される。該コプロセッサは直接ROMま
たはEEPROMに記憶されたプログラムによってソフトウェアの制御
の下でマイクロコントローラのCPUによってドライブされる。そのような知ら
れたコプロセッサの構成は数多くの欠点を有する。
*コプロセッサの性能はソフトウェアドライバとの相互作用により大幅に制限
される。
*CPUは計算の間にAi値を提供するCPUに対するコプロセッサの依存性
によって制限される。
*固定長さのクロックド・シフトレジスタはコプロセッサを柔軟性のないもの
にする。固定された512または256ビットのキー長さより小さいビット長さ
を効率的に処理することは可能ではない。さらに、ローテーションごとに544
または288クロックサイクルを必要とする。
*コプロセッサは512ビットの固定されたレジスタ長さを有するから、51
2ビットより大きなキー長さを取り扱うことは手に負えないかまたは非実用的に
なる。これは512ビットより大きなキー長さに対して高いCPUオーバヘッド
につながる(以下の表1のタイミングを参照)。
*コプロセッサは固定長さの、クロックド・シフトレジスタを使用するから、
データがコプロセッサに対しタイムリーな様式でRAMからロードされかつアン
ロードされなければならない。これはCPUのオーバヘッドを伴ないかつCPU
がコプロセッサに充分高速で供給できないいくつかの場合にデータの窮乏(da
ta starvatio
n)につながり得る。これは特にコプロセッサがハーフモードで動作しておりか
つ中国の剰余定理(Chinese Remainder Theorem:C
RT)を使用して計算を行なう場合に当てはまる。
*3つの512ビットのシフトレジスタをクロッキングすることは高い電力消
費につながり、かつクロック周波数を上昇させることにより計算機的な性能の増
大が試みられる場合に特にクロッキング機構に関して困難な設計上の問題につな
がる。
*モジュラ累乗(modular exponentiation)が必要と
される場合のRSAパブリックキー署名/真正証明機構において、現在のアーキ
テクチャは累乗プロセスを制御するためにCPUの直接的な介入を必要とする。
*前記コプロセッサは、2進デジットがクロック周期ごとに一度に1ビットず
つ1ビット加算器、減算器および32ビット×1ビット並列−直列乗算器を通し
て直列的にシフトされる点で単一の直列ループ設計である。
*RSA署名(RSA signature)を発生するために、もしNの素
因数(prime factors)(pおよびq)が知られておれば、計算時
間を実質的にスピードアップするために中国の剰余定理(CRT)を使用するこ
とが可能である。付属書類2は中国の剰余定理を説明しかつそのRSAへの適用
を詳細に示している。現在の
アーキテクチャは単にモジュラ乗算でありかつCRTの容易な実施を可能にしな
い。結果として、実質的なCPUのオーバヘッドがCRTを使用する利点を否定
する傾向にある。
中国の剰余定理を使用した異なる長さの署名を処理する知られたコプロセッサ
の構成に対する典型的な性能時間(CPU時間、コプロセッサ時間および合計時
間)は次の通りである。
〈新しい、改善されたコプロセッサ〉
次に図2を参照すると、示された新しいコプロセッサは、上に述べた、知られ
たコプロセッサの不都合を克服するために改善された性能および柔軟性を提供す
る。改善を与え
る新しいコプロセッサの特徴は以下に詳細に説明する(説明は典型的には都合上
512ビットの計算に言及する)。
〈ビット対計算〉
新しいコプロセッサはビット対(bit−pair)乗算、加算および減算を
使用する。図1のコプロセッサにおけるような単一の直列ループクロッキング機
構を使用する代わりに、新しい改善されたコプロセッサにおいては直列ビットス
トリームがクロック周期ごとに一度に2ビット調べられる。
以下に詳細に説明するように、各々の直列ビットストリームは2つの(奇数お
よび偶数の)成分のビットストリームへと分割され(発出する(origina
ting)直列ビットストリームからのビットがそれぞれ交互に2つの成分の直
列ビットストリームへと供給され)かつ前記2つの成分のビットストリームは並
列に処理され、1ビットが前記成分のビットストリームの各々によって同時に提
供されて計算のためのビット対を形成する。これは加算器、減算器および並列−
直列乗算器が一度に2ビットを評価しまたは値を求めかつ結果を計算することを
意味する。アーキテクチャのこの変化は直ちに同じクロック周波数に対して性能
を倍化する。直接の利点は計算機的なスループットが対応する電力消費の倍化な
しにほぼ2倍にされることである。
次に図3をも参照すると(新しいコプロセッサのビット対乗算器、加算器およ
び減算器の基礎を形成するビット対加算器300を示している)、新しいコプロ
セッサのビット対乗算、加算および減算は次のように行なわれる。
始めに、加算器の各要素がゼロにセットされる。
奇数(odd)データストリームからのビットAOおよびBOがキャリーセイブ
・ハーフアダー(carry−save half−adder)310におい
て加算されてそれぞれ奇数合計および奇数キャリー出力SOおよびCOを生成する
。
偶数(even)データストリームからのビットAEおよびBEがキャリーセイ
ブ・フルアダー(carry−save full−adder)320に入力
されてそれぞれ偶数合計および偶数キャリー出力SEおよびCE生成する。
前記信号SOおよびCOは論理330において信号CEと論理的に結合されて信
号CE・SO+*COを生成し、この信号はフルアダーに入力される。なお、ここ
で記号*は論理的反転を示す。
前記信号SOおよびCEは論理340においてXOR操作されて前記ビット対加
算の奇数ビット結果を生成し、かつ前記信号SEは前記ビット対加算の偶数ビッ
ト結果を形成する。
前記ビット対減算器は上で述べたビット対加算器300
と同じ回路を使用するが、例外として減算器として使用するために初期値CEお
よびSOは論理“1”にセットされかつ減算されるべきデータストリームはハー
フアダー310およびフルアダー320にそれぞれ入力される前に反転される。
この減算はしたがって2の補数加算によって達成される。
前記ビット対乗算器(これらは2×32ビット乗算器である)は前に説明した
ようにビット対加算器300を使用して形成される。
直列データストリームの奇数および偶数ビットが乗算器に提供されると、次の
ようにして加算によって乗算処理が進行する。
*もし2つの入力直列データビットが“00”であれば、ゼロの値が加算され
る。
*もし2つの入力直列データビットが“01”であれば、32ビットの値が加
算される。
*もし2つの入力直列データビットが“10”であれば、32ビットの値が1
ビットだけ左にシフトされ、次に加算される。
*もし2つの入力直列データビットが“11”であれば、前記32ビットの値
の3倍の予め計算された値が加算される。
〈改善されたY0計算>
上に述べたように、新しいコプロセッサは性能を強化するためにビット対乗算
機構を使用する。図1に示される知られたアーキテクチャにおいては、これは乗
算器MUL2に供給するJ0およびY0の経路の双方に付加的な論理および3x機
能を加えることにより、Y0制御の大幅な複雑化を伴なう。この複雑化は図2に
示すようにして避けられる。
図1を参照すると、知られたアーキテクチャにおいては、ローテーションの始
めに、最初の32クロックサイクルの間に、J0がX=A*B+Sにより乗算さ
れる。結果Yはこれらの始めの32クロックサイクルの間にフィードバックされ
かつラッチ2にラッチされ、その後Y0がMUL2に供給されかつ引き続く51
2のクロックサイクルにわたり積Y0*Nを発生するために使用される。
次に図2および図4を参照すると、新しいコプロセッサでは、J0は始めにラ
ッチML2へとロードされる。レジスタSRはセットされているSR_ビット1
6(SR_bit16)を除きクリアされる。もし論理“1”であればSR_ビ
ットkの出力はデータがMSBからラッチML2を通りk番目のビット対へとク
ロッキングできるようにする。いずれの与えられたローテーションにおける最初
のクロックサイクルの後は、ML2のビット31および30はもはや必要とされ
ずかつY0の最初の2ビットはフィードバックしかつML2_ビット31および
ML2_ビット3
0へとラッチすることができる。最初のクロックサイクルの間に、SR_ビット
16における論理“1”はSR_ビット15へとクロッキングされ、その時点で
ML2_ビット31およびML2_ビット30はイネーブルされる。第2のクロ
ックサイクルに際して、SR_ビット15における論理“1”はSR_ビット1
4へとシフトされる。SR_ビット15は論理“1”によって再ロードまたはリ
ロードされかつ今やML2_ビット31、ML2_ビット30、ML2_29お
よびML2_ビット28はイネーブルされる。MUL2からの次の2つの出力ビ
ットはML2_ビット31およびML2_ビット30へとクロッキングされる。
前にML2_ビット31およびML2_ビット30にあったビットはそれぞれM
L2_ビット29およびML2_ビット28へとシフトされる。このプロセスが
16クロックサイクルの後に、Y0の32ビットがフィードバックされかつML
2へとロードされるまで反復する。引き続く256クロックサイクルに際し、Y0
はモジュラスN(modulus N)によって乗算される。
次のローテーションに対しては、J0はML2へと再ロードされ、SR_ビッ
ト15〜SR_ビット0はクリアされかつSR_ビット16はセットされかつ処
理は反復される。
この構成はそうでない場合はビット対乗算機構の直接的な構成に対して必要と
される1つの34ビットシフトレジ
スタ、1つの32ビットシフトレジスタ、1つの34ビットマルチプレクサおよ
び1つの32ビットマルチプレクサの必要性を除去し、かつ代わりに1つの17
ビットのシフトレジスタを使用する。
〈レジスタの置き換え〉
上で述べたように、知られたアーキテクチャは3つの512ビットのクロック
ド直列シフトレジスタ(B,SおよびNレジスタ)を使用する。データ(すなわ
ち、値Bおよびモジュラス値N)はメモリからバスインタフェースを介してCP
UによってそれぞれBおよびNレジスタへとロードされる。CPUはAの値を、
一度に4バイト、コプロセッサに供給する。CPUはその後いったん計算が完了
すれば結果をBまたはSレジスタからメモリへとロードし戻す。この機構は電力
を消費しかつCPUのオーバヘッドを加える。
次に図5Aを参照すると、新しいコプロセッサにおいては、前の固定された長
さの、クロックド・シフトレジスタは今や、RAMとモジュラ乗算器との間に配
置された、簡単な8ビットの並列−直列インタフェース510、ならびに自動R
AMポインタメカニズムを利用することにより置き換えられている(図6を参照
)。この場合、各々の交互のビットが4ビットのクロックド・シフトレジスタへ
とロードされる。2つのそのような4ビットのクロックド直列
シフトレジスタ520および530があり奇数および偶数成分の直列ビットスト
リームを形成する。これらの2つの成分の直列ビットストリームは次にモジュラ
乗算器へと供給される。
図5Bは、データをRAMに書き戻すための構成を示す。RAMは両側(do
uble sided)またはデュアルポート(dual port)配列で構
成され、この場合右および左側のアレイは中央のローデコーダを共有する。この
配列により、与えられたデコードされた行またはローに対して、同時にデータが
右側のアレイに書き戻されている間にデータを左側のアレイから読み出すことが
できる。この機構の利点はRAMのデータがロードおよびストア命令に基づきC
PUによって決してレジスタにロードされず、データは単にコプロセッサによっ
て必要とされる場合に自動的に直列インタフェースへとダウンロードされること
である。各々の512ビットのクロックド・シフトレジスタが8ビットのクロッ
クド・シフトレジスタのインタフェース(図5A)によって置き換えられるとい
う事実は電力消費を大幅に低減する。
図6に示すメカニズムを使用して、自動RAMポインタおよびダウンロードメ
カニズム600はCPUの介入の必要性を除去する。RAM610におけるデー
タはRAMポインタ620によって参照されかつ直列インタフェース630へと
転送されかつクロック出力される。RAMポイン
タ620は自動的に次のデータ転送のための容易さを増大する。この機構はさら
にそれが多様なキー長さを取り扱う上でより大きな柔軟性を可能にする点で有利
である。コプロセッサ640はローテーションごとに32ビット×512ビット
の乗算を行なう。ローテーションの数は前記キー長さによって決定される。改善
された機構はキー長さが32ビットの増分で変えられるようにする。いったんキ
ー長さが選択されると、計算のために必要とされるローテーションの数が32ビ
ットの倍数として自動的に決定される(例えば、384/32=12ローテーシ
ョン)。
図2は、改善されたコプロセッサのための概略的な構成を示す。全てのデータ
パスは2ビット幅であり(乗算器MullおよびMul2への32ビット入力の
ような、より広いビット幅が明らかに必要とされる場合を除き)ビット対演算ま
たは操作を可能にする。前記中間のS値およびB値はデュアルポートRAMにこ
れらの記憶領域が計算の種々の段階でオーバライトされる際に記憶される。
〈直接の累乗〉
知られたコプロセッサにおいては、RSAパブリックキーシステムのために必
要とされる累乗(exponentiation)演算を行なうために、CPU
は各々の指数ビット(exponent bit)を順次調べることによりソフ
トウェアの制御のもとに累乗プロセスを調節また
は規制しなければならない。現在のビット(current bit)はモジュ
ラ平方(modular square)あるいはモジュラ乗算(modula
r multiply)を行なうかを決定するために使用される。前記指数値は
メモリに記憶されかつ必要に応じて一度に1バイトCPUによって読み出される
。前記現在のビット値は命令シーケンスによって決定される。コプロセッサがC
PUが前記Aの値をモジュラ演算の間に提供することを要求する場合、指数ビッ
トの決定はモジュラ演算の間でのみ生じ得る。その場合にのみCPUはコプロセ
ッサの動作モードを制御できる。
図6は、前に述べたのと同様の自動RAMポインティングメカニズムを使用す
ることによって、コプロセッサ640が今や累乗プロセスの間に自動的に制御さ
れることを示している。各々のモジュラ演算の終りに(平方または乗算)、信号
EOPがコプロセッサによって発生される。これは制御論理650がカウンタレ
ジスタ620におけるポインタを次の指数ビットへとシフトするようにさせる。
このようにして、次のモジュラ演算はCPUの介入なしに選択されかつ直ちに開
始できる。もし指数ビットが論理“1”であれば、2つのモジュラ演算(平方と
それに続く乗算)が行なわれる。
中国の剰余定理を使用する異なる長さの署名(signature)を処理す
る新しいコプロセッサのための典型
的な性能時間(CPU時間、コプロセッサ時間および合計時間)は次の通りであ
る。
新しいコプロセッサ構成によって提供される改善は表2の時間を前の表1に与
えられた知られたプロセッサに対するものと比較することから容易に明らかであ
る。
〈付加的な算術演算〉
新しいコプロセッサの構成において必要とされるCPUオーバヘッドをさらに
低減するため、2つの付加的な演算操作がコプロセッサに加えられ、すなわち加
算および減算機能である。
〈加算〉
新しいコプロセッサにおいては、B−RAMおよびS−RAMに記憶された値
は一緒に加算できる。図2を参照すると、マルチプレクサMx2,Mx6は論理
“0”の出力を与えるようセットされる。これはSub1からの出力が入力、b
str、に等しいことを意味する。同様に、減算器Sub2に対しては、出力は
入力、sstr、に等しくなる。B−RAM(bstr)およびS−RAM(s
str)からのデータは直列的に減算器Sub1およびSub2を通って供給さ
れる。Sub1(bstr)からの出力はマルチプレクサMx3を介して加算器
Add1に供給され、そこでSub2(sstr)からの出力と加算される。結
果はマルチプレクサMx7およびMx8を介してB−RAMに戻される。
〈減算〉
S−RAMまたはN−RAMに記憶された値は任意選択的にB−RAMに記憶
された値から減算できる。図2を参照すると、いずれの場合にも、S−RAMま
たはN−RAMからのデータは直列的にマルチプレクサMx2を介して減算器S
ub1へと供給され、そこでB−RAMに記憶された値から減算される。結果は
マルチプレクサMx7およびMx8を介してS−RAMまたはB−RAMへフィ
ードバックされる。
これらの付加的な機能を含めることは、以下に概略を説明するように、中国の
剰余定理を使用したモジュラ累乗の効率的な実施を可能にする。
〈CRTエンジン〉
もしモジュラスNの素因数(prime factors)が知られていれば
、CRTは与えられたRSAシグネチャまたは署名プロセスのための計算時間を
低減するのに使用できる。中国の剰余定理およびRSA署名を発生する上でのそ
の応用は付属書類2に与えられている。知られたコプロセッサアーキテクチャに
よれば、CRT技術を使用する上で依然として大きなCPUオーバヘッドがある
。これはコプロセッサが始めに使用されてrp=Mp r(modp)および(rq=
Mq s(modq)を評価しまたは求めるためである。最終的な結果は次にCPU
によってソフトウェアの制御のもとで求められる。すぐ上に示された処理時間(
表2)は性能の低下に対してCPUが大きな一因であることを示している。
前に述べたように、新しいコプロセッサの累乗機能のために加算および減算の
演算機能を含めることはコプロセッサが、このCPUオーバヘッドが劇的に低減
できるようにCRTエンジンとして作用できるようにする。図7はどのようにし
てこれが実施されるかを示す。
もしNの素因数が知られていれば、モンゴメリ方法およ
びCRTを使用してR=Md(modN)を計算するために、以下の予め計算さ
れた値、u,Jp,Jq,Hp,Hq,R=d mod(p−1)およびs=d m
od(q−1)が利用される。スマートカード装置におけるこれらの値は典型的
にはEEPROMに記憶される。その後の計算のシーケンスは次の通りである。
Mp=M(modp) (1)
Mq=M(modq) (2)
rp=Mp r(modp) (3)
rq=Mq s(modq) (4)
a=rq(modp) (5)
b=rp−a (6)
c=b*u(modp) (7)
q=c*q (8)
R=g+rq (9)
上で述べた新しいコプロセッサのアーキテクチャは今やCRT方法を使用して
要求される結果を効率的に計算することができるようにする必要な機能の全てを
有している。新しいコプロセッサがこの計算を達成できるようにするために事象
を適切に順序づけまたは順番に並べる(sequencing)ことについて以
下に説明する。シーケンスの制御はCPUを使用してソフトウェア制御のもとで
行な
うことができる。この場合、CPUのオーバヘッドは最小になり、そうでない場
合は計算のシーケンスの制御は専用のハードウェアの状態マシンを使用して行な
うことができる。
計算の上記シーケンスにおいて、操作(1),(2),(3),(4),(5
)および(7)は全てモンゴメリ・アルゴリズムを使用しかつコプロセッサをモ
ジュラ乗算器として使用するモジュラ操作である。新しいコプロセッサのメモリ
のポインティングメカニズムは今やこれらの中間結果がCRT計算の引き続く段
階のための準備においてメモリ内の予め指定されたロケーションに戻すことがで
きるようにする。
段階(8)は通常の乗算機能を使用し、一方段階(6)および(9)は今や新
しいコプロセッサ内で利用可能な演算操作、すなわち、加算および減算を使用す
る。
〈CRTエンジンの動作〉
次に図7を参照する。以下の説明のために、A−RAM領域、B−RAM領域
、N−RAMおよびS−RAM領域はそれぞれ領域ALおよびAH,BLおよびBH
,NLおよびNH,SLおよびSHへと分割される。
メッセージMが始めにB−RAMに記憶されかつ素因数pおよびqがそれぞれ
メモリのN−RAM領域のNLおよびNHに記憶される。メッセージMは次に1
modul
o pによって乗算されて結果Mpを与える。この値は始めにS−RAM領域、
SLに戻されかつ次にA−RAM領域ALに転送される。同様にして、値Mqが計
算されかつS−RAM領域SHに戻され、その後それはA−RAM領域AHに転送
される。
MpおよびMqが次に次の累乗プロセスの準備においてそれぞれB−RAM領域
BLおよびBHへとロードされる。
次に新しく導入された累乗機能を使用してMp r(modp)およびMq s(mo
dq)の2つのモジュラ累乗が行なわれ、かつ結果rpおよびrqがBLおよびBH
に記憶され、それぞれ値MpおよびMqをオーバライトする。
次に、値a=rq(modp)が計算される。これはrqを1 modulo
p倍で乗算することにより行なわれる。結果は便宜的にSHに記憶される。
次に、値b=(rp−a)が計算される。これは新しく導入された減算機能に
たよることによって実行されかつ結果はBLに戻され、rpをオーバライトする。
次に、c=b*u(modp)が計算される。これはモジュラ乗算であり結果
はBLに戻され、最終のローテーションに際して値bをオーバライトする。次に
、積g=c*qが通常の乗算機能にたよることによって形成される。結果はS−
RAM領域、S、に記憶される。
最後に、結果R=g+rqが新しく導入された加算機能を適用することにより
計算される。この値はS−RAMま
たはB−RAMに戻される。
上で述べた新しいコプロセッサに対する種々の変更は当業者に明らかであり、
かつ以下の請求の範囲に記載された発明の範囲から離れることなく行なうことが
できることが理解されるであろう。
付属書類1
〈モンゴメリ・モジュラ・リダクション技術〉
モンゴメリ関数P(A・B)NはPフィールドまたは領域への積A・Bの乗算
モジュロNを行なう。Pフィールドから通常のモジュラフィールドへの読出しま
たは回復はP(A・B)Nの結果および予め計算された定数Hに関してPを定め
ることによって行なわれる。
したがって、もしP==P(A・B)Nであれば、P(P・H)N==A・B(
modN)である。
〈証明〉
我々はR=A・B(modN)を計算することを求める。
始めに次のようなQを見つける。
P2n=A・P+Q・N(この場合Nは奇数) (1)
ここで、
I・2n==1(modN)(かつ、nはNのビット長さである)
(2)
式(1)をIにより乗算して次式を得る。
P・I・2n=A・B・I+Q・I・N (3)
式(3)の左側を考慮すると、式(2)から、
P・I・2n==P(modN) (4)
式(3)の右側を考慮すると、式(4)から、
P=={A・B・I+Q・I・N}(modN)、かつ
したがって、
P==A・B・I(modN)=P(A・B)N
(5)
P(P・H)Nを考慮すると、式(5)から、
P(P・H)N==A・B・I2−H(modN)
(6)
明らかに、もしHがI-2と定義されれば、
R==P(P・H)N==A・B(modN) (7)
式(7)が所望の結果を与えている。
上の式(2)から、H=22n(modN)でありかつNおよびnのみに依存す
る予め計算された定数である。
次にQが見つけられる必要がある。式(1)から、
{A・B・I+Q・I・N}(mod2n)=0
(8)
これは、
A・B・I(mod2n)=−Q・I・N(mod2n)であり、かつしたがっ
て、
Q==−N-1A・B(mod2n) (9)
奇数のNに対しては、J=N-1であり、したがってN・J=I.2n+1であ
る。
したがって、Q==−A・B・J(mod2n)である。
この場合、JもまたNおよびnのみに依存する予め計算された定数であること
に注意を要する。
付属書類2
〈中国の剰余定理〉
中国の剰余定理(Chinese Remainder Theorem)は
次のように説明できる。gcd(m1,m2,m3,…,mk)=1となるような与
えられた1組の整数m0,m1,m2,…,mkに対して、ri<mi(0<i<k)
であるような任意の組の整数r0,r1,r2,…,rkに対して、X(modmi
)=ri(0<i<k)およびX<m0m1m2…mkのような独自の整数Xが存在
する。
〈RSAに適用された中国の剰余定理〉
RSAシステムにおいては、モジュラスNは2つの大きな素因数、pおよびq
、の積である。pおよびqが素数または素(prime)であるから、gcd(
p,q)=1である{gcd=最大公約数}。
したがって、rp<pおよびrq<qのようないくつかの整数rpおよびrqに対
して、R(modp)=rpおよびR(modq)=rqのような独自の整数R(
R<N)が存在する。
一般に、
(M modN)modp=X modp=rp
(M modN)modq=X modq=rq
R=Md(modN)であるものとすると、中国の剰余定理を次のように使用
できる。
rp=R modp=(Md(modN))modp
rq=R modq=(Md(modN))modq
また、d=k*(p−1)+rであるものとすると、オイラー・フェルマー定
理(Euler−Fermat Theorem)により、
rp=(MP-1)kMr(modp)
=1kMr(modp)
=(M modp)rmodp
同様に、もしd=j*(q−1)+sであれば、
rq=(Mq-1)jMs(modq)
=1jMs(modq)
=(M modq)smodq
また、r=d(mod(p−1))およびs=d(mod(q−1))である
。
したがって、R=Md(modN)とし、Rを計算するためには、
1)以下を計算する。
a)rp=
(M modp)d mod(p-1)modp
b)rq=
(M modp)d mod(q-1)modq
2)0<u<pとなるuを見つけ、かつ、
u*q=1(modp)
3)次の内の1つを使用する。
a)R=(((rp−(rqmodp))*u)
modp)*q+rq
(ここでa>rqmodp)
b)R=(((rp+p−(rqmodp))*u)
modp)*q+rq
(ここでa<rqmodp)
したがって、M,Nおよびdがnの2進デジット値である場合に、R=Md(
modN)を計算する問題はn/2の2進デジット値を含む2つの値rpおよび
rqを計算することの内の1つに縮小される(reduced)。これは計算時
間の大幅な節約を表わす。
Claims (1)
- 【特許請求の範囲】 1.モジュラ乗算を行なうためのコプロセッサであって、 BおよびNの2進データストリームを受けるための手段、 データ値Aを受けるための手段、 前記BおよびNの2進データストリームおよび前記データ値Aを順次処理して モジュロ縮小された乗算値(A*B)mod Nを生成するよう結合された加算 手段、減算手段および乗算手段、 を具備し、前記コプロセッサはさらに前記BおよびNの2進データストリーム の各々のをそれぞれ2進データストリームの交互のビットを備えた成分データス トリームへと分割するための分割手段を具備し、そして 前記加算手段、減算手段および乗算手段は前記成分データストリームを並列に 処理するよう配列されている、モジュラ乗算を行なうためのコプロセッサ。 2.前記2進データストリームを受けるための手段は、 BおよびNの値を保持するためのランダムアクセスメモリ、そして 前記ランダムアクセスメモリから並列データを受けかつそこから2進データス トリームBおよびNを生成するための並列−直列インタフェース手段、 を具備する、請求項1に記載のコプロセッサ。 3.前記2進データストリームを受けるための手段はさ らに前記BおよびNの値の順次の部分を保持する複数のランダムアクセスメモリ のロケーションを順次参照するための自動インデクス・ランダムアクセスメモリ ポインタを具備する、請求項2に記載のコプロセッサ。 4.前記コプロセッサはBおよびNの値を保持するランダムアクセスメモリの ロケーションの数に依存する数の処理の反復を行なうよう構成されている、請求 項3に記載のコプロセッサ。 5.さらに、 指数値を保持するためのランダムアクセスメモリ、 前記ランダムアクセスメモリから前記指数値を並列に受けかつそこから2進デ ータストリームEを生成するための並列−直列インタフェース手段、 前記2進データストリームEを受けかつその各ビットの値に依存して2乗また は乗算操作を開始するための制御手段、 を具備する累乗手段を含む、請求項2に記載のコプロセッサ。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB9622719.4 | 1996-10-31 | ||
| GB9622719A GB2318892B (en) | 1996-10-31 | 1996-10-31 | Co-processor for performing modular multiplication |
| PCT/EP1997/005980 WO1998019230A1 (en) | 1996-10-31 | 1997-10-22 | Co-processor for performing modular multiplication |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000512786A true JP2000512786A (ja) | 2000-09-26 |
Family
ID=10802258
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10520055A Pending JP2000512786A (ja) | 1996-10-31 | 1997-10-22 | モジュラ乗算を行なうためのコプロセッサ |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP0877979A1 (ja) |
| JP (1) | JP2000512786A (ja) |
| GB (1) | GB2318892B (ja) |
| WO (1) | WO1998019230A1 (ja) |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10024325B4 (de) | 2000-05-17 | 2005-12-15 | Giesecke & Devrient Gmbh | Kryptographisches Verfahren und kryptographische Vorrichtung |
| DE10143728B4 (de) * | 2001-09-06 | 2004-09-02 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation |
| GB2383435A (en) * | 2001-12-18 | 2003-06-25 | Automatic Parallel Designs Ltd | Logic circuit for performing modular multiplication and exponentiation |
| DE10200405A1 (de) | 2002-01-08 | 2002-08-01 | Zimmer Ag | Spinnvorrichtung und -verfahren mit Kühlbeblasung |
| DE10204381A1 (de) | 2002-01-28 | 2003-08-07 | Zimmer Ag | Ergonomische Spinnanlage |
| DE10206089A1 (de) | 2002-02-13 | 2002-08-14 | Zimmer Ag | Bersteinsatz |
| US7260595B2 (en) | 2002-12-23 | 2007-08-21 | Arithmatica Limited | Logic circuit and method for carry and sum generation and method of designing such a logic circuit |
| CN102207847B (zh) * | 2011-05-06 | 2013-12-04 | 广州杰赛科技股份有限公司 | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 |
| CN109271137B (zh) * | 2018-09-11 | 2020-06-02 | 网御安全技术(深圳)有限公司 | 一种基于公钥加密算法的模乘装置及协处理器 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS58146129A (ja) * | 1982-02-24 | 1983-08-31 | Usac Electronics Ind Co Ltd | 並列・直列変換回路 |
| EP0188779A1 (de) * | 1984-12-27 | 1986-07-30 | Siemens Aktiengesellschaft | Schneller digitaler Multiplizierer |
| JP2599999B2 (ja) * | 1989-09-13 | 1997-04-16 | 富士通株式会社 | 変復調装置 |
| DE69329260T2 (de) * | 1992-06-25 | 2001-02-22 | Canon K.K., Tokio/Tokyo | Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern |
| US5513133A (en) * | 1992-11-30 | 1996-04-30 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
| US5349551A (en) * | 1993-07-30 | 1994-09-20 | The United States Of America As Represented By The Director Of National Security Agency | Device for and method of preforming an N-bit modular multiplication in approximately N/2 steps |
-
1996
- 1996-10-31 GB GB9622719A patent/GB2318892B/en not_active Expired - Fee Related
-
1997
- 1997-10-22 WO PCT/EP1997/005980 patent/WO1998019230A1/en not_active Ceased
- 1997-10-22 JP JP10520055A patent/JP2000512786A/ja active Pending
- 1997-10-22 EP EP97948836A patent/EP0877979A1/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| EP0877979A1 (en) | 1998-11-18 |
| GB2318892B (en) | 2001-07-11 |
| GB2318892A (en) | 1998-05-06 |
| WO1998019230A1 (en) | 1998-05-07 |
| GB9622719D0 (en) | 1997-01-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4612918B2 (ja) | モジュラ乗算を行なうためのコプロセッサ | |
| JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
| Blum et al. | Montgomery modular exponentiation on reconfigurable hardware | |
| US5742530A (en) | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers | |
| US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
| JP3525209B2 (ja) | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 | |
| CN100504758C (zh) | 多字乘法-累加电路和蒙哥马利模乘法-累加电路 | |
| US20020010730A1 (en) | Accelerated montgomery exponentiation using plural multipliers | |
| Groszschaedl et al. | Instruction set extension for fast elliptic curve cryptography over binary finite fields GF (2/sup m/) | |
| WO2000005645A1 (en) | Circuit and method of modulo multiplication | |
| JP2000512786A (ja) | モジュラ乗算を行なうためのコプロセッサ | |
| US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
| Orup et al. | A high-radix hardware algorithm for calculating the exponential ME modulo N. | |
| US6377969B1 (en) | Method for multiplication in Galois fields using programmable circuits | |
| US7607165B2 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
| JP3904421B2 (ja) | 剰余乗算演算装置 | |
| US8364737B2 (en) | Device and method for calculating a result of a sum with a calculating unit with limited word length | |
| KR100297110B1 (ko) | 모듈러곱셈기 | |
| Koppermann et al. | Fast FPGA implementations of Diffie-Hellman on the Kummer surface of a genus-2 curve | |
| US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
| WO2023043467A1 (en) | A method and architecture for performing modular addition and multiplication sequences | |
| JP3779479B2 (ja) | Icカード | |
| GB2318890A (en) | Co-processor for performing modular multiplication | |
| GB2318891A (en) | Co-processor for performing modular multiplication | |
| GB2321979A (en) | Modular multiplication circuit |