JP4612918B2 - モジュラ乗算を行なうためのコプロセッサ - Google Patents
モジュラ乗算を行なうためのコプロセッサ Download PDFInfo
- Publication number
- JP4612918B2 JP4612918B2 JP52005698A JP52005698A JP4612918B2 JP 4612918 B2 JP4612918 B2 JP 4612918B2 JP 52005698 A JP52005698 A JP 52005698A JP 52005698 A JP52005698 A JP 52005698A JP 4612918 B2 JP4612918 B2 JP 4612918B2
- Authority
- JP
- Japan
- Prior art keywords
- coprocessor
- bit
- value
- data stream
- random access
- 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
Images
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/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; 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)
- 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)
Description
この発明は一般的にはモジュラ乗算(modular multiplication)を行なうためのコプロセッサ(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(モンゴメリフィールドの数における結果)
スマートカードが取引の間の高いレベルの保安性を保証する手段として使用される財務または金融の用途においては、パブリックキーまたは公開鍵(Public Key)暗号法が益々普及してきている。パブリックキー暗号法は伝統的な対称(symmetric)あるいはプライベイトキーまたは秘密鍵(private key)方法よりも高いレベルの保護を提供するが、最近まで実施するのが高価であった。技術の進歩は今やそのような方法の実施をコスト効率のよいものにしている。RSAパブリックキー能力はスマートカードのマイクロコントローラ内に設計されており、該マイクロコントローラはまた各々512ビットの長さのオペランドに対してモジュラ乗算を行なうよう特に設計されたオンチップのコプロセッサを含む。前記コプロセッサはROM内にまたはEEPROM内に記憶されたプログラムによってソフトウェアの制御の下に前記マイクロコントローラのCPUによって直接ドライブされる。除算プロセスなしにモジュラ縮小またはモジュラ・リダクションのためのモンゴメリ・アルゴリズムを実施するそのようなコプロセッサはヨーロッパ特許公報EP−0601907−Aから知られている。
後に詳細に説明するように、そのような知られたコプロセッサは数多くの不都合を有する。
【図面の簡単な説明】
モンゴメリ・リダクション・アルゴリズムを実施するためにモジュラ乗算を行なうための1つのコプロセッサにつき、実例のみにより、添付の図面を参照して説明する。添付の図面においては、
図1は、モンゴメリ・リダクション・アルゴリズムを実施するためにモジュラ乗算を行なうための知られた、従来技術のコプロセッサのブロック回路図を示す。
図2は、モンゴメリ・リダクション・アルゴリズムを実施するためにモジュラ乗算を行なうための新規な、改善されたコプロセッサのブロック回路図を示す。
図3は、図2のコプロセッサにおいて使用されるビット対加算器段のブロック回路図を示す。
図4は、図2のコプロセッサにおいて使用される乗算器および関連する回路のブロック回路図を示す。
図5Aは、並列−直列インタフェースを使用するランダムアクセスメモリから構成要素の直列ビットストリームを発生するために図2のコプロセッサにおいて使用される構成のブロック回路図を示す。
図5Bは、図2のコプロセッサにおいて使用されるデュアルポートのレジスタ構成のブロック回路図を示す。
図6は、自動インデクスポインタ(auto−indexing pointer)を使用する直接累乗法のための図2のコプロセッサにおいて使用される構成のブロック回路図を示す。
図7は、中国の剰余定理(Chinese Remainder Theorem)を実施する上で、図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によって乗算されて値Y0*Nを生成する。この値は次に、次の544クロックサイクルにわたり、加算器Ad2においてXと加算されて値Z=X+Y0*Nを生成する。この計算の最後の32ビットはゼロでありかつ512の最上位ビットのみがSレジスタへとセーブし戻される。これは1つの全ローテーションを完了させる。
32ビットの乗算を使用して、16のローテーションが全512ビット×512ビットの乗算を行なうために必要とされ、これによって次式が求められる。
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のモジュラ操作または演算が必要とされる。これは20MHzのクロックレートで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ビットの固定されたレジスタ長さを有するから、512ビットより大きなキー長さを取り扱うことは手に負えないかまたは非実用的になる。これは512ビットより大きなキー長さに対して高いCPUオーバヘッドにつながる(以下の表1のタイミングを参照)。
*コプロセッサは固定長さの、クロックド・シフトレジスタを使用するから、データがコプロセッサに対しタイムリーな様式でRAMからロードされかつアンロードされなければならない。これはCPUのオーバヘッドを伴ないかつCPUがコプロセッサに充分高速で供給できないいくつかの場合にデータの窮乏(data starvation)につながり得る。これは特にコプロセッサがハーフモードで動作しておりかつ中国の剰余定理(Chinese Remainder Theorem:CRT)を使用して計算を行なう場合に当てはまる。
*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時間、コプロセッサ時間および合計時間)は次の通りである。
【表1】
〈新しい、改善されたコプロセッサ〉
次に図2を参照すると、示された新しいコプロセッサは、上に述べた、知られたコプロセッサの不都合を克服するために改善された性能および柔軟性を提供する。改善を与える新しいコプロセッサの特徴は以下に詳細に説明する(説明は典型的には都合上512ビットの計算に言及する)。
〈ビット対計算〉
新しいコプロセッサはビット対(bit−pair)乗算、加算および減算を使用する。図1のコプロセッサにおけるような単一の直列ループクロッキング機構を使用する代わりに、新しい改善されたコプロセッサにおいては直列ビットストリームがクロック周期ごとに一度に2ビット調べられる。
以下に詳細に説明するように、各々の直列ビットストリームは2つの(奇数および偶数の)成分のビットストリームへと分割され(発出する(originating)直列ビットストリームからのビットがそれぞれ交互に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により乗算される。結果Y0はこれらの始めの32クロックサイクルの間にフィードバックされかつラッチ2にラッチされ、その後Y0がMUL2に供給されかつ引き続く512のクロックサイクルにわたり積Y0*Nを発生するために使用される。
次に図2および図4を参照すると、新しいコプロセッサでは、J0は始めにラッチML2へとロードされる。レジスタSRはセットされているSR_ビット16(SR_bit16)を除きクリアされる。もし論理“1”であればSR_ビットkの出力はデータがMSBからラッチML2を通りk番目のビット対へとクロッキングできるようにする。いずれの与えられたローテーションにおける最初のクロックサイクルの後は、ML2のビット31および30はもはや必要とされずかつY0の最初の2ビットはフィードバックしかつML2_ビット31およびML2_ビット30へとラッチすることができる。最初のクロックサイクルの間に、SR_ビット16における論理“1”はSR_ビット15へとクロッキングされ、その時点でML2_ビット31およびML2_ビット30はイネーブルされる。第2のクロックサイクルに際して、SR_ビット15における論理“1”はSR_ビット14へとシフトされる。SR_ビット15は論理“1”によって再ロードまたはリロードされかつ今やML2_ビット31、ML2_ビット30、ML2_29およびML2_ビット28はイネーブルされる。MUL2からの次の2つの出力ビットはML2_ビット31およびML2_ビット30へとクロッキングされる。前にML2_ビット31およびML2_ビット30にあったビットはそれぞれML2_ビット29およびML2_ビット28へとシフトされる。このプロセスが16クロックサイクルの後に、Y0の32ビットがフィードバックされかつML2へとロードされるまで反復する。引き続く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)はメモリからバスインタフェースを介してCPUによってそれぞれBおよびNレジスタへとロードされる。CPUはAの値を、一度に4バイト、コプロセッサに供給する。CPUはその後いったん計算が完了すれば結果をBまたはSレジスタからメモリへとロードし戻す。この機構は電力を消費しかつCPUのオーバヘッドを加える。
次に図5Aを参照すると、新しいコプロセッサにおいては、前の固定された長さの、クロックド・シフトレジスタは今や、RAMとモジュラ乗算器との間に配置された、簡単な8ビットの並列−直列インタフェース510、ならびに自動RAMポインタメカニズムを利用することにより置き換えられている(図6を参照)。この場合、各々の交互のビットが4ビットのクロックド・シフトレジスタへとロードされる。2つのそのような4ビットのクロックド直列シフトレジスタ520および530があり奇数および偶数成分の直列ビットストリームを形成する。これらの2つの成分の直列ビットストリームは次にモジュラ乗算器へと供給される。
図5Bは、データをRAMに書き戻すための構成を示す。RAMは両側(double sided)またはデュアルポート(dual port)配列で構成され、この場合右および左側のアレイは中央のローデコーダを共有する。この配列により、与えられたデコードされた行またはローに対して、同時にデータが右側のアレイに書き戻されている間にデータを左側のアレイから読み出すことができる。この機構の利点はRAMのデータがロードおよびストア命令に基づきCPUによって決してレジスタにロードされず、データは単にコプロセッサによって必要とされる場合に自動的に直列インタフェースへとダウンロードされることである。各々の512ビットのクロックド・シフトレジスタが8ビットのクロックド・シフトレジスタのインタフェース(図5A)によって置き換えられるという事実は電力消費を大幅に低減する。
図6に示すメカニズムを使用して、自動RAMポインタおよびダウンロードメカニズム600はCPUの介入の必要性を除去する。RAM610におけるデータはRAMポインタ620によって参照されかつ直列インタフェース630へと転送されかつクロック出力される。RAMポインタ620は自動的に次のデータ転送のための容易さを増大する。この機構はさらにそれが多様なキー長さを取り扱う上でより大きな柔軟性を可能にする点で有利である。コプロセッサ640はローテーションごとに32ビット×512ビットの乗算を行なう。ローテーションの数は前記キー長さによって決定される。改善された機構はキー長さが32ビットの増分で変えられるようにする。いったんキー長さが選択されると、計算のために必要とされるローテーションの数が32ビットの倍数として自動的に決定される(例えば、384/32=12ローテーション)。
図2は、改善されたコプロセッサのための概略的な構成を示す。全てのデータパスは2ビット幅であり(乗算器Mul1およびMul2への32ビット入力のような、より広いビット幅が明らかに必要とされる場合を除き)ビット対演算または操作を可能にする。前記中間のS値およびB値はデュアルポートRAMにこれらの記憶領域が計算の種々の段階でオーバライトされる際に記憶される。
〈直接の累乗〉
知られたコプロセッサにおいては、RSAパブリックキーシステムのために必要とされる累乗(exponentiation)演算を行なうために、CPUは各々の指数ビット(exponent bit)を順次調べることによりソフトウェアの制御のもとに累乗プロセスを調節または規制しなければならない。現在のビット(current bit)はモジュラ平方(modular square)あるいはモジュラ乗算(modular multiply)を行なうかを決定するために使用される。前記指数値はメモリに記憶されかつ必要に応じて一度に1バイトCPUによって読み出される。前記現在のビット値は命令シーケンスによって決定される。コプロセッサがCPUが前記Aの値をモジュラ演算の間に提供することを要求する場合、指数ビットの決定はモジュラ演算の間でのみ生じ得る。その場合にのみCPUはコプロセッサの動作モードを制御できる。
図6は、前に述べたのと同様の自動RAMポインティングメカニズムを使用することによって、コプロセッサ640が今や累乗プロセスの間に自動的に制御されることを示している。各々のモジュラ演算の終りに(平方または乗算)、信号EOPがコプロセッサによって発生される。これは制御論理650がカウンタレジスタ620におけるポインタを次の指数ビットへとシフトするようにさせる。このようにして、次のモジュラ演算はCPUの介入なしに選択されかつ直ちに開始できる。もし指数ビットが論理“1”であれば、2つのモジュラ演算(平方とそれに続く乗算)が行なわれる。
中国の剰余定理を使用する異なる長さの署名(signature)を処理する新しいコプロセッサのための典型的な性能時間(CPU時間、コプロセッサ時間および合計時間)は次の通りである。
【表2】
新しいコプロセッサ構成によって提供される改善は表2の時間を前の表1に与えられた知られたプロセッサに対するものと比較することから容易に明らかである。
〈付加的な算術演算〉
新しいコプロセッサの構成において必要とされるCPUオーバヘッドをさらに低減するため、2つの付加的な演算操作がコプロセッサに加えられ、すなわち加算および減算機能である。
〈加算〉
新しいコプロセッサにおいては、B−RAMおよびS−RAMに記憶された値は一緒に加算できる。図2を参照すると、マルチプレクサMx2,Mx6は論理“0”の出力を与えるようセットされる。これはSub1からの出力が入力、bstr、に等しいことを意味する。同様に、減算器Sub2に対しては、出力は入力、sstr、に等しくなる。B−RAM(bstr)およびS−RAM(sstr)からのデータは直列的に減算器Sub1およびSub2を通って供給される。Sub1(bstr)からの出力はマルチプレクサMx3を介して加算器Add1に供給され、そこでSub2(sstr)からの出力と加算される。結果はマルチプレクサMx7およびMx8を介してB−RAMに戻される。
〈減算〉
S−RAMまたはN−RAMに記憶された値は任意選択的にB−RAMに記憶された値から減算できる。図2を参照すると、いずれの場合にも、S−RAMまたはN−RAMからのデータは直列的にマルチプレクサMx2を介して減算器Sub1へと供給され、そこで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 mod(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 modulo 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(modq)の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 (4)
- モジュラ乗算を行なうためのコプロセッサであって、
BおよびNの2進データストリームを生成するための手段、
データ値Aを受けるための手段、および
前記BおよびNの2進データストリームの成分データストリームおよび前記データ値Aを順次処理してモジュロ縮小された乗算値(A*B)mod Nを生成するよう結合された加算手段、減算手段および乗算手段
を具備し、前記BおよびNの2進データストリームを生成するための手段は、
BおよびNの値を保持するためのランダムアクセスメモリ、
前記ランダムアクセスメモリから並列データを受けかつそこから前記2進データストリームBおよびNを生成するための並列−直列インタフェース手段、
前記BおよびNの2進データストリームの各々を成分データストリームへと分割するための分割手段、および
前記BおよびNの値の順次的な部分を保持する前記ランダムアクセスメモリの複数のロケーションを順次参照するための自動インデクス・ランダムアクセスメモリポインタ
を具備する、モジュラ乗算を行なうためのコプロセッサ。 - 前記コプロセッサは前記BおよびNの値を保持するランダムアクセスメモリのロケーションの数に依存する数の処理の反復を行なうよう構成されている、請求項1に記載のコプロセッサ。
- さらに、
指数値を保持するためのランダムアクセスメモリ、
前記ランダムアクセスメモリから並列に前記指数値を受けかつそこから2進データストリームEを生成するための並列−直列インタフェース手段、および
前記2進データストリームEを受けかつその各々のビットの値に応じて2乗または乗算操作を開始するための制御手段、
を備えた累乗手段を具備する、請求項1に記載のコプロセッサ。 - 前記成分データストリームは、前記2進データストリームのそれぞれ一つおきのビットを含む成分データストリームであって、
前記加算手段、減算手段および乗算手段は、前記成分データストリームを並列に処理するよう配置されている
請求項1に記載のコプロセッサ。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9622718A GB2318891A (en) | 1996-10-31 | 1996-10-31 | Co-processor for performing modular multiplication |
GB9622714A GB2318890B (en) | 1996-10-31 | 1996-10-31 | Co-processor for performing modular multiplication |
GB9622714.5 | 1996-10-31 | ||
GB9622718.6 | 1996-10-31 | ||
PCT/EP1997/005981 WO1998019231A1 (en) | 1996-10-31 | 1997-10-22 | Co-processor for performing modular multiplication |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000515999A JP2000515999A (ja) | 2000-11-28 |
JP4612918B2 true JP4612918B2 (ja) | 2011-01-12 |
Family
ID=26310319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52005698A Expired - Fee Related JP4612918B2 (ja) | 1996-10-31 | 1997-10-22 | モジュラ乗算を行なうためのコプロセッサ |
Country Status (5)
Country | Link |
---|---|
US (1) | US6209016B1 (ja) |
EP (1) | EP0890147B1 (ja) |
JP (1) | JP4612918B2 (ja) |
DE (1) | DE69727796T2 (ja) |
WO (1) | WO1998019231A1 (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509486B1 (en) * | 1999-07-08 | 2009-03-24 | Broadcom Corporation | Encryption processor for performing accelerated computations to establish secure network sessions connections |
GB2352309B (en) * | 1999-07-21 | 2004-02-11 | Advanced Risc Mach Ltd | A system and method for performing modular multiplication |
US7240204B1 (en) * | 2000-03-31 | 2007-07-03 | State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Scalable and unified multiplication methods and apparatus |
US6820105B2 (en) | 2000-05-11 | 2004-11-16 | Cyberguard Corporation | Accelerated montgomery exponentiation using plural multipliers |
US8176108B2 (en) * | 2000-06-20 | 2012-05-08 | International Business Machines Corporation | Method, apparatus and computer program product for network design and analysis |
US20020116429A1 (en) * | 2000-12-19 | 2002-08-22 | International Business Machines Corporation | System and method for modular multiplication |
US6963977B2 (en) * | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Circuits and methods for modular exponentiation |
US6836784B2 (en) * | 2001-01-17 | 2004-12-28 | Matsushita Electric Industrial Co., Ltd. | Efficient greatest common divisor algorithm using multiprecision arithmetic |
JP3950638B2 (ja) * | 2001-03-05 | 2007-08-01 | 株式会社日立製作所 | 耐タンパーモジュラ演算処理方法 |
US7607165B2 (en) * | 2001-03-09 | 2009-10-20 | The Athena Group, Inc. | Method and apparatus for multiplication and/or modular reduction processing |
US7194088B2 (en) * | 2001-06-08 | 2007-03-20 | Corrent Corporation | Method and system for a full-adder post processor for modulo arithmetic |
US6973470B2 (en) * | 2001-06-13 | 2005-12-06 | Corrent Corporation | Circuit and method for performing multiple modulo mathematic operations |
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 |
US7233663B2 (en) * | 2001-10-29 | 2007-06-19 | Safenet, Inc. | Key generation performance improvement |
KR100436814B1 (ko) * | 2001-12-20 | 2004-06-23 | 한국전자통신연구원 | 아이씨카드용 알에스에이 암호 연산 장치 |
US7035889B1 (en) * | 2001-12-31 | 2006-04-25 | Cavium Networks, Inc. | Method and apparatus for montgomery multiplication |
US7266577B2 (en) * | 2002-05-20 | 2007-09-04 | Kabushiki Kaisha Toshiba | Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus |
US7627114B2 (en) * | 2002-10-02 | 2009-12-01 | International Business Machines Corporation | Efficient modular reduction and modular multiplication |
US7185039B2 (en) * | 2003-05-19 | 2007-02-27 | Lsi Logic Corporation | Multiplier for modular exponentiation |
US7171544B2 (en) * | 2003-12-15 | 2007-01-30 | International Business Machines Corporation | Run-time parallelization of loops in computer programs by access patterns |
FR2880149B1 (fr) | 2004-12-23 | 2007-03-30 | Oberthur Card Syst Sa | Procede de traitement de donnees et dispositif associe |
US20060140399A1 (en) * | 2004-12-28 | 2006-06-29 | Young David W | Pre-calculation mechanism for signature decryption |
US20070150530A1 (en) * | 2005-12-13 | 2007-06-28 | Intel Corporation | Resisting cache timing based attacks |
US7755766B1 (en) | 2007-03-27 | 2010-07-13 | Itt Manufacturing Enterprises, Inc. | Telescope interferometric maintenance evaluation tool |
CN104793919B (zh) * | 2015-04-15 | 2017-11-07 | 深圳国微技术有限公司 | 一种蒙哥马利模乘装置及具有其的嵌入式安全芯片 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58146129A (ja) * | 1982-02-24 | 1983-08-31 | Usac Electronics Ind Co Ltd | 並列・直列変換回路 |
JPS61117622A (ja) * | 1984-11-14 | 1986-06-05 | Hitachi Ltd | 演算装置 |
EP0188779A1 (de) * | 1984-12-27 | 1986-07-30 | Siemens Aktiengesellschaft | Schneller digitaler Multiplizierer |
JP2599999B2 (ja) * | 1989-09-13 | 1997-04-16 | 富士通株式会社 | 変復調装置 |
JPH03116232A (ja) * | 1989-09-29 | 1991-05-17 | Oki Electric Ind Co Ltd | 命令解読装置 |
JP2840156B2 (ja) * | 1991-04-15 | 1998-12-24 | 横河電機株式会社 | 選択的にcordic、除算、または、平方根計算を実行するデジタル信号プロセッサ |
DE69329260T2 (de) * | 1992-06-25 | 2001-02-22 | Canon Kk | Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern |
JP3129526B2 (ja) * | 1992-06-25 | 2001-01-31 | キヤノン株式会社 | 整数上の乗算回路 |
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 |
-
1997
- 1997-10-22 WO PCT/EP1997/005981 patent/WO1998019231A1/en active IP Right Grant
- 1997-10-22 JP JP52005698A patent/JP4612918B2/ja not_active Expired - Fee Related
- 1997-10-22 EP EP97950044A patent/EP0890147B1/en not_active Expired - Lifetime
- 1997-10-22 DE DE69727796T patent/DE69727796T2/de not_active Expired - Lifetime
- 1997-10-22 US US09/091,376 patent/US6209016B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
WO1998019231A1 (en) | 1998-05-07 |
US6209016B1 (en) | 2001-03-27 |
DE69727796D1 (de) | 2004-04-01 |
EP0890147A1 (en) | 1999-01-13 |
EP0890147B1 (en) | 2004-02-25 |
DE69727796T2 (de) | 2004-12-30 |
JP2000515999A (ja) | 2000-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4612918B2 (ja) | モジュラ乗算を行なうためのコプロセッサ | |
US5742530A (en) | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers | |
US8090757B2 (en) | Circuit and method for performing multiple modulo mathematic operations | |
JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
JP2001527673A (ja) | モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法 | |
JPH09274560A (ja) | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 | |
US8078661B2 (en) | Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit | |
US20090055659A1 (en) | Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies | |
JP2000512786A (ja) | モジュラ乗算を行なうためのコプロセッサ | |
US20240220201A1 (en) | A method and architecture for performing modular addition and multiplication sequences | |
EP1818810A2 (en) | Circuit and method for multiplying long integer values | |
KR100297110B1 (ko) | 모듈러곱셈기 | |
GB2318890A (en) | Co-processor for performing modular multiplication | |
US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
GB2321979A (en) | Modular multiplication circuit | |
Mentens et al. | FPGA-oriented secure data path design: implementation of a public key coprocessor | |
GB2318891A (en) | Co-processor for performing modular multiplication | |
Fan et al. | HECC goes embedded: an area-efficient implementation of HECC | |
GB2332542A (en) | Multiplication circuitry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071218 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080305 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080902 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090929 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090929 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091209 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100329 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101005 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101018 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131022 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |