JP4612918B2 - モジュラ乗算を行なうためのコプロセッサ - Google Patents

モジュラ乗算を行なうためのコプロセッサ Download PDF

Info

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
Application number
JP52005698A
Other languages
English (en)
Other versions
JP2000515999A (ja
Inventor
ホブソン・ラッセル
マックギン・ピーター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from GB9622718A external-priority patent/GB2318891A/en
Priority claimed from GB9622714A external-priority patent/GB2318890B/en
Application filed by Atmel Corp filed Critical Atmel Corp
Publication of JP2000515999A publication Critical patent/JP2000515999A/ja
Application granted granted Critical
Publication of JP4612918B2 publication Critical patent/JP4612918B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/728Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/723Modular 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)mod2(この場合、Jは予め計算された定数である)
(3)Z=X+Y・N
(4)S=Z/2
(5)P=S(modN)(もしS≧Nであれば、NがSから減算される)
したがって、P=P(A・B)(モンゴメリフィールドの数における結果)
スマートカードが取引の間の高いレベルの保安性を保証する手段として使用される財務または金融の用途においては、パブリックキーまたは公開鍵(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)の後に中間結果を記憶するために使用される。始めに、このレジスタはクリアされることになる。予め計算されたモンゴメリ定数、J、は32ビットのシフトレジスタを介してコプロセッサへとロードされかつラッチ2においてラッチされる。
Aの値は一度に4バイト(32ビット)でマルチプレクサM2_1;2を介してシフトされかつラッチ1にラッチされる。Bレジスタにおける値は一度に1ビットずつ第1の並列−直列乗算器ML1へと直列的にクロッキングされる。この乗算器の出力は、ノードnにおいて、値A*Bである。この値A*Bは次に加算器Ad1においてレジスタSに記憶された中間値に加算されて値X=A*B+Sを生成する。
最初の32クロックサイクルに対しては、Xの値の最初の32ビットの部分はマルチプレクサM3_1;4を介して第2の並列−直列乗算器ML2へと供給され、そこで値Jによって乗算される。ノードnにおけるML2からの出力は値Y=A*B*Jである。Yは32ビットのシフトレジスタを介してフィードバックされかつマルチプレクサMを介してラッチ2にラッチされる。
最初の32クロックサイクルの後に、マルチプレクサM3_1;4は切り替わりかつモジュラスNを乗算器ML2へと供給し、そこでNはYによって乗算されて値Y*Nを生成する。この値は次に、次の544クロックサイクルにわたり、加算器Ad2においてXと加算されて値Z=X+Y*Nを生成する。この計算の最後の32ビットはゼロでありかつ512の最上位ビットのみがSレジスタへとセーブし戻される。これは1つの全ローテーションを完了させる。
32ビットの乗算を使用して、16のローテーションが全512ビット×512ビットの乗算を行なうために必要とされ、これによって次式が求められる。
P=A・B・I(modN)=P(A・B)
(モンゴメリ・フィールドの数の結果)
必要とされる結果Pを回復するためにPはH(予め計算されたモンゴメリ定数)によって乗算されて次式で示される実数のフィールドの結果を与える。
R=A・B(modN)=P(P・H)
〈RSAパブリックキー暗号法〉
RSAパブリックキーまたは公開鍵暗号システムを実施するためには形式M(modN)の値を計算することを必要とし、この場合指数dはnビットまでの長さとすることができる(nはNにおける2進デジットの数)。これは順次取り入れられる前記指数値dの各ビットの値に応じて反復された2乗操作または演算および乗算操作または演算を行なうことによって達成される。512ビットの指数に対しては、ほぼ768のモジュラ操作または演算が必要とされる。これは20MHzのクロックレートで512ビットのRSA署名(signature)に対して以下のような性能計算につながる。
rsa=(544*16*50*768)*10−6mS
rsa=334.23mS
〈知られたコプロセッサ・アーキテクチャの不都合〉
図1に示された知られたコプロセッサ・アーキテクチャはマイクロコントローラと共に単一のシリコンチップ上に集積される。該コプロセッサは直接ROMまたはEEPROMに記憶されたプログラムによってソフトウェアの制御の下でマイクロコントローラのCPUによってドライブされる。そのような知られたコプロセッサの構成は数多くの欠点を有する。
*コプロセッサの性能はソフトウェアドライバとの相互作用により大幅に制限される。
*CPUは計算の間にA値を提供する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】
Figure 0004612918
〈新しい、改善されたコプロセッサ〉
次に図2を参照すると、示された新しいコプロセッサは、上に述べた、知られたコプロセッサの不都合を克服するために改善された性能および柔軟性を提供する。改善を与える新しいコプロセッサの特徴は以下に詳細に説明する(説明は典型的には都合上512ビットの計算に言及する)。
〈ビット対計算〉
新しいコプロセッサはビット対(bit−pair)乗算、加算および減算を使用する。図1のコプロセッサにおけるような単一の直列ループクロッキング機構を使用する代わりに、新しい改善されたコプロセッサにおいては直列ビットストリームがクロック周期ごとに一度に2ビット調べられる。
以下に詳細に説明するように、各々の直列ビットストリームは2つの(奇数および偶数の)成分のビットストリームへと分割され(発出する(originating)直列ビットストリームからのビットがそれぞれ交互に2つの成分の直列ビットストリームへと供給され)かつ前記2つの成分のビットストリームは並列に処理され、1ビットが前記成分のビットストリームの各々によって同時に提供されて計算のためのビット対を形成する。これは加算器、減算器および並列−直列乗算器が一度に2ビットを評価しまたは値を求めかつ結果を計算することを意味する。アーキテクチャのこの変化は直ちに同じクロック周波数に対して性能を倍化する。直接の利点は計算機的なスループットが対応する電力消費の倍化なしにほぼ2倍にされることである。
次に図3をも参照すると(新しいコプロセッサのビット対乗算器、加算器および減算器の基礎を形成するビット対加算器300を示している)、新しいコプロセッサのビット対乗算、加算および減算は次のように行なわれる。
始めに、加算器の各要素がゼロにセットされる。
奇数(odd)データストリームからのビットAおよびBがキャリーセイブ・ハーフアダー(carry−save half−adder)310において加算されてそれぞれ奇数合計および奇数キャリー出力SおよびCを生成する。
偶数(even)データストリームからのビットAおよびBがキャリーセイブ・フルアダー(carry−save full−adder)320に入力されてそれぞれ偶数合計および偶数キャリー出力SおよびCを生成する。
前記信号SおよびCは論理330において信号Cと論理的に結合されて信号C・S+*Cを生成し、この信号はフルアダーに入力される。なお、ここで記号*は論理的反転を示す。
前記信号SおよびCは論理340においてXOR操作されて前記ビット対加算の奇数ビット結果を生成し、かつ前記信号Sは前記ビット対加算の偶数ビット結果を形成する。
前記ビット対減算器は上で述べたビット対加算器300と同じ回路を使用するが、例外として減算器として使用するために初期値CおよびSは論理“1”にセットされかつ減算されるべきデータストリームはハーフアダー310およびフルアダー320にそれぞれ入力される前に反転される。この減算はしたがって2の補数加算によって達成される。
前記ビット対乗算器(これらは2×32ビット乗算器である)は前に説明したようにビット対加算器300を使用して形成される。
直列データストリームの奇数および偶数ビットが乗算器に提供されると、次のようにして加算によって乗算処理が進行する。
*もし2つの入力直列データビットが“00”であれば、ゼロの値が加算される。
*もし2つの入力直列データビットが“01”であれば、32ビットの値が加算される。
*もし2つの入力直列データビットが“10”であれば、32ビットの値が1ビットだけ左にシフトされ、次に加算される。
*もし2つの入力直列データビットが“11”であれば、前記32ビットの値の3倍の予め計算された値が加算される。
〈改善されたY計算〉
上に述べたように、新しいコプロセッサは性能を強化するためにビット対乗算機構を使用する。図1に示される知られたアーキテクチャにおいては、これは乗算器MUL2に供給するJおよびYの経路の双方に付加的な論理および3x機能を加えることにより、Y制御の大幅な複雑化を伴なう。この複雑化は図2に示すようにして避けられる。
図1を参照すると、知られたアーキテクチャにおいては、ローテーションの始めに、最初の32クロックサイクルの間に、JがX=A*B+Sにより乗算される。結果Yはこれらの始めの32クロックサイクルの間にフィードバックされかつラッチ2にラッチされ、その後YがMUL2に供給されかつ引き続く512のクロックサイクルにわたり積Y*Nを発生するために使用される。
次に図2および図4を参照すると、新しいコプロセッサでは、Jは始めにラッチML2へとロードされる。レジスタSRはセットされているSR_ビット16(SR_bit16)を除きクリアされる。もし論理“1”であればSR_ビットkの出力はデータがMSBからラッチML2を通りk番目のビット対へとクロッキングできるようにする。いずれの与えられたローテーションにおける最初のクロックサイクルの後は、ML2のビット31および30はもはや必要とされずかつYの最初の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クロックサイクルの後に、Yの32ビットがフィードバックされかつML2へとロードされるまで反復する。引き続く256クロックサイクルに際し、YはモジュラスN(modulus N)によって乗算される。
次のローテーションに対しては、Jは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】
Figure 0004612918
新しいコプロセッサ構成によって提供される改善は表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オーバヘッドがある。これはコプロセッサが始めに使用されてr=M (modp)および(r=M (modq)を評価しまたは求めるためである。最終的な結果は次にCPUによってソフトウェアの制御のもとで求められる。すぐ上に示された処理時間(表2)は性能の低下に対してCPUが大きな一因であることを示している。
前に述べたように、新しいコプロセッサの累乗機能のために加算および減算の演算機能を含めることはコプロセッサが、このCPUオーバヘッドが劇的に低減できるようにCRTエンジンとして作用できるようにする。図7はどのようにしてこれが実施されるかを示す。
もしNの素因数が知られていれば、モンゴメリ方法およびCRTを使用してR=M(modN)を計算するために、以下の予め計算された値、u,J,J,H,H,R=d mod(p−1)およびs=d mod(q−1)が利用される。スマートカード装置におけるこれらの値は典型的にはEEPROMに記憶される。その後の計算のシーケンスは次の通りである。
=M(modp) (1)
=M(modq) (2)
=M (modp) (3)
=M (modq) (4)
a=r(modp) (5)
b=r−a (6)
c=b*u(modp) (7)
q=c*q (8)
R=g+r (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領域はそれぞれ領域AおよびA,BおよびB,NおよびN,SおよびSへと分割される。
メッセージMが始めにB−RAMに記憶されかつ素因数pおよびqがそれぞれメモリのN−RAM領域のNおよびNに記憶される。メッセージMは次に1 modulo pによって乗算されて結果Mを与える。この値は始めにS−RAM領域、S、に戻されかつ次にA−RAM領域Aに転送される。同様にして、値Mが計算されかつS−RAM領域Sに戻され、その後それはA−RAM領域Aに転送される。
およびMが次に次の累乗プロセスの準備においてそれぞれB−RAM領域BおよびBへとロードされる。
次に新しく導入された累乗機能を使用してM (modp)およびM (modq)の2つのモジュラ累乗が行なわれ、かつ結果rおよびrがBおよびBに記憶され、それぞれ値MおよびMをオーバライトする。
次に、値a=r(modp)が計算される。これはrを1 modulo p倍で乗算することにより行なわれる。結果は便宜的にSに記憶される。
次に、値b=(r−a)が計算される。これは新しく導入された減算機能にたよることによって実行されかつ結果はBに戻され、rをオーバライトする。
次に、c=b*u(modp)が計算される。これはモジュラ乗算であり結果はBに戻され、最終のローテーションに際して値bをオーバライトする。次に、積g=c*qが通常の乗算機能にたよることによって形成される。結果はS−RAM領域、S、に記憶される。
最後に、結果R=g+rが新しく導入された加算機能を適用することにより計算される。この値はS−RAMまたはB−RAMに戻される。
上で述べた新しいコプロセッサに対する種々の変更は当業者に明らかであり、かつ以下の請求の範囲に記載された発明の範囲から離れることなく行なうことができることが理解されるであろう。
付属書類1
〈モンゴメリ・モジュラ・リダクション技術〉
モンゴメリ関数P(A・B)はPフィールドまたは領域への積A・Bの乗算モジュロNを行なう。Pフィールドから通常のモジュラフィールドへの読出しまたは回復はP(A・B)の結果および予め計算された定数Hに関してPを定めることによって行なわれる。
したがって、もしP==P(A・B)であれば、P(P・H)==A・B(modN)である。
〈証明〉
我々はR=A・B(modN)を計算することを求める。
始めに次のようなQを見つける。
P2=A・P+Q・N(この場合Nは奇数) (1)
ここで、
I・2==1(modN)(かつ、nはNのビット長さである) (2)
式(1)をIにより乗算して次式を得る。
P・I・2=A・B・I+Q・I・N (3)
式(3)の左側を考慮すると、式(2)から、
P・I・2==P(modN) (4)
式(3)の右側を考慮すると、式(4)から、
P=={A・B・I+Q・I・N}(modN)、かつしたがって、
P==A・B・I(modN)=P(A・B) (5)
P(P・H)を考慮すると、式(5)から、
P(P・H)==A・B・I・H(modN) (6)
明らかに、もしHがI−2と定義されれば、
R==P(P・H)==A・B(modN) (7)
式(7)が所望の結果を与えている。
上の式(2)から、H=22n(modN)でありかつNおよびnのみに依存する予め計算された定数である。
次にQが見つけられる必要がある。式(1)から、
{A・B・I+Q・I・N}(mod2)=0 (8)
これは、
A・B・I(mod2)=−Q・I・N(mod2)であり、かつしたがって、
Q==−N−1A・B(mod2) (9)
奇数のNに対しては、J=N−1であり、したがってN・J=I・2+1である。
したがって、Q==−A・B・J(mod2)である。
この場合、JもまたNおよびnのみに依存する予め計算された定数であることに注意を要する。
付属書類2
〈中国の剰余定理〉
中国の剰余定理(Chinese Remainder Theorem)は次のように説明できる。gcd(m,m,m,…,m)=1となるような与えられた1組の整数m,m,m,…,mに対して、r<m(0<i<k)であるような任意の組の整数r,r,r,…,rに対して、X(modm)=r(0<i<k)およびX<m…mのような独自の整数Xが存在する。
〈RSAに適用された中国の剰余定理〉
RSAシステムにおいては、モジュラスNは2つの大きな素因数、pおよびq、の積である。pおよびqが素数または素(prime)であるから、gcd(p,q)=1である{gcd=最大公約数}。
したがって、r<pおよびr<qのようないくつかの整数rおよびrに対して、R(modp)=rおよびR(modq)=rのような独自の整数R(R<N)が存在する。
一般に、
(M modN)modp=X modp=r
(M modN)modq=X modq=r
R=M(modN)であるものとすると、中国の剰余定理を次のように使用できる。
=R modp=(M(modN))modp
=R modq=(M(modN))modq
また、d=k*(p−1)+rであるものとすると、オイラー・フェルマー定理(Euler−Fermat Theorem)により、
=(Mp−1(modp)
=1(modp)
=(M modp)modp
同様に、もしd=j*(q−1)+sであれば、
=(Mq−1(modq)
=1(modq)
=(M modq)modq
また、r=d(mod(p−1))およびs=d(mod(q−1))である。
したがって、R=M(modN)とし、Rを計算するためには、
1)以下を計算する。
a)r=(M modp)d mod(p−1)modp
b)r=(M modp)d mod(q−1)modq
2)0<u<pとなるuを見つけ、かつ、
u*q=1(modp)
3)次の内の1つを使用する。
a)R=(((r−(rmodp))*u)modp)*q+r
(ここでa>rmodp)
b)R=(((r+p−(rmodp))*u)modp)*q+r
(ここでa<rmodp)
したがって、M,Nおよびdがnの2進デジット値である場合に、R=M(modN)を計算する問題はn/2の2進デジット値を含む2つの値rおよびrを計算することの内の1つに縮小される(reduced)。これは計算時間の大幅な節約を表わす。

Claims (4)

  1. モジュラ乗算を行なうためのコプロセッサであって、
    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の値の順次的な部分を保持する前記ランダムアクセスメモリの複数のロケーションを順次参照するための自動インデクス・ランダムアクセスメモリポインタ
    を具備するモジュラ乗算を行なうためのコプロセッサ。
  2. 前記コプロセッサは前記BおよびNの値を保持するランダムアクセスメモリのロケーションの数に依存する数の処理の反復を行なうよう構成されている、請求項1に記載のコプロセッサ。
  3. さらに、
    指数値を保持するためのランダムアクセスメモリ、
    前記ランダムアクセスメモリから並列に前記指数値を受けかつそこから2進データストリームEを生成するための並列−直列インタフェース手段、および
    前記2進データストリームEを受けかつその各々のビットの値に応じて2乗または乗算操作を開始するための制御手段、
    を備えた累乗手段を具備する、請求項1に記載のコプロセッサ。
  4. 前記成分データストリームは、前記2進データストリームのそれぞれ一つおきのビットを含む成分データストリームであって
    前記加算手段、減算手段および乗算手段は、前記成分データストリームを並列に処理するよう配置されている
    請求項1に記載のコプロセッサ。
JP52005698A 1996-10-31 1997-10-22 モジュラ乗算を行なうためのコプロセッサ Expired - Fee Related JP4612918B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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