JPH07253949A - モジュラ・乗算およびモジュラ・べき乗を遂行する超小形電子系装置ならびにその遂行方法 - Google Patents

モジュラ・乗算およびモジュラ・べき乗を遂行する超小形電子系装置ならびにその遂行方法

Info

Publication number
JPH07253949A
JPH07253949A JP5326008A JP32600893A JPH07253949A JP H07253949 A JPH07253949 A JP H07253949A JP 5326008 A JP5326008 A JP 5326008A JP 32600893 A JP32600893 A JP 32600893A JP H07253949 A JPH07253949 A JP H07253949A
Authority
JP
Japan
Prior art keywords
register
bit
multiplication
modular
multiplier
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.)
Granted
Application number
JP5326008A
Other languages
English (en)
Other versions
JP3636740B2 (ja
Inventor
Carmi D Cressel
デビッド グレッセル カーミ
David Hendel
ヘンデル デビッド
Itai Dror
ドローア イタイ
Isaac Hadad
ハダッド イザーク
Benjamin Arazi
アラジ ベンジャミン
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.)
Fortress U&T Ltd
Original Assignee
Fortress U&T Ltd
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 IL10692393A external-priority patent/IL106923A/en
Application filed by Fortress U&T Ltd filed Critical Fortress U&T Ltd
Publication of JPH07253949A publication Critical patent/JPH07253949A/ja
Application granted granted Critical
Publication of JP3636740B2 publication Critical patent/JP3636740B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/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

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)
  • Electrophonic Musical Instruments (AREA)
  • Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)
  • Electronic Switches (AREA)

Abstract

(57)【要約】 【目的】 本発明は、大きな数に対するモジュール・乗
算およびべき乗を遂行するための超小形電子系装置なら
びにその遂行方法に関し、モントゴメリの手法に基づき
モジュラ・べき乗等の遂行に要求される時間を減らすこ
とを目的とする。 【構成】 本発明は、適切なクロック手段および制御手
段を有する標準のマイクロプロセッサに対するコンパク
トな同期式の電子系超小形周辺機器からなり、各々が細
分化される共に、切替制御可能であり、かつ、前記クロ
ック手段により制御される複数種のシフトレジスタと、
多重化され、かつ、直列/並列形の2つのみのマルチプ
レクサと、ボロー検出器と、補助的な減算器および加算
器と、ディレイ・レジスタおよび切替素子とを備えてお
り、モジュラ・乗算、モジュラ・2乗およびモジュラ・
べき乗を同時処理かつ同期方式により遂行するために、
前述のすべての構成部品を集積化して形成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数種の素数および複
合形素数モジュールからなるガロアの領域において、大
きな数に対しモジュラ処理を遂行するための手法に関す
る。さらに詳しくいえば、本発明は、大きな数に対する
モジュール・乗法およびモジュール・べき乗を遂行する
ための超小形電子系装置ならびにその遂行方法について
言及するものである。このようなモジュール・乗算およ
びモジュール・べき乗は、公開キー暗号の認証や暗号化
プロトコル(Protocol)に不可欠な演算を遂行する場合
に適している。この種の演算は、小規模のマイクロプロ
セッサによっては通常の処理時間内に実行することが不
可能である。
【0002】
【従来の技術、および、発明が解決しようとする課題】
本発明は、インタリービング方式によるモントゴメリ
(Montgomery)の多倍精度の乗算方法」として知られて
いる手続きを、ハードウェアによって遂行することに関
係する。このモントゴメリの乗算方法は、暗号化のソフ
トウェア指向システムに度々使用される。ここでは、モ
ジュラ・べき乗を促進するために、唯一のオリジナルな
方法が提供される。さらに、このモジュラ・べき乗を遂
行するためのアーキテクチュアを簡単化し、かつ、通常
使用されるような数の領域内でモジュラ・べき乗を遂行
する装置の適用範囲を拡大するために、欠くことのでき
ないプルーフが使用される。
【0003】上記の手続きに関する基本的な処理は、モ
ントゴメリの方法論に基づきモジュラ・乗算を遂行する
ための手法に関連するような3つの公知の方法のいずれ
か一つにより実行される。これらの公知の方法の1つめ
は、P.L.モントゴメリ著の「試行除算を行わない方
式のモジュラ・乗算(Modular Multiplication without
trial division )」{計算の数学(Mathematics of C
omputation)、第44巻、519〜521頁、1985
年発行}に記載されている。なお、これ以降は、上記の
1つめの方法は、単にモントゴメリの方法とよぶことと
する。公知の方法の2つめは、S.R.デュッセ(Duss
e )およびB.S.カリスキー ジュニア(Kaliski J
r. )著の「モトローラ社製のDSP56000に向け
られた暗号のライブラリ(A Cryptographic Library fo
r the Motorola DSP 56000)」{90年代の欧州暗号化
の議事録(Proc. Eurocrypt ‘90 )、1990年にベ
ルリンのシュプリンガ出版社(Springer-Verlag )によ
り発行}に記載されている。なお、これ以降は、上記の
2つめの方法は、単にデュッセの方法とよぶこととす
る。
【0004】上記の手続きをハードウェアにより遂行す
る場合、機密保護機構や、オンザフライ(On the Fly)
式の加算、減算、および、けた移動が付加される。さら
に、総合的な出力が不適切であるような処理が除去され
る。さらにまた、シリコンを利用した設計に基づき、比
較的容易に遂行できるような手段が開発されて集積化さ
れる。この集積化により実現された装置は、実際には、
8ビット、16ビットまたは32ビットの中央処理装置
(CPU)の従装置として、内部のデータ/アドレスバ
スに付加される。
【0005】本発明に関係する乗算/2乗機器は、簡単
な同期形のけた送り式の設計がなされているために、こ
れまでに達成された速度の何倍ものクロック速度で動作
することが可能である。このクロック速度は、ボード上
に実装されかつ不揮発性の記憶装置(メモリ)を支援す
るCPUにより実現される。乗算/2乗機器を用いた手
法は、CPUのメモリのアーキテクチュアにおける設計
変更を必要としない。この種のアーキテクチュアは、例
えばフィリップ回路のように、並列形の乗算器とデュア
ルポートのメモリを用いることによって大きな数に対す
る高速のモジュラ・乗算を遂行する場合に規定されるも
のである。このモジュラ・乗算を遂行するための複数の
手法の3つめは、フィリップ社製の電子部品「83C8
52(条件付きのアクセス・アプリケーション用の機密
保持機能付きの8ビット・マイクロコントローラ)」
{1990年8月にアインホーヘン(Einhoven)にて発
表}により実行される方法である。なお、これ以降は、
上記の3つめの方法は、単にフィリップの方法とよぶこ
ととする。
【0006】上記のような基本的なアーキテクチュア
は、任意のマイクロコントローラの設計に際し集積化が
可能であり、かつ、メモリへのマッピングが可能である
ような機器に適用される。さらに、この種の機器はま
た、コマンドおよびオペランドを常時ロードし、かつ、
最終的な応答結果を取り出して転送することが必要なマ
イクロコントローラと並列に動作することも可能でなけ
ればならない。
【0007】このような要求に対する新奇な解は、2つ
の直列/並列式の乗算器のみを用いると共に、完全な直
列形のパイプライン方式のアプローチを採用することで
ある。このようなパイプライン方式のアプローチを採用
することにより、シリコンの面積を節減することが可能
になる。現在一般に用いられている周知の技術によれ
ば、メモリ付きのマイクロコントローラを有すると共に
上記の解を完全に満足するような装置を、4×4.5×
0.2の大きさの電子系回路上に集積化することが可能
である。このようにして得られる電子系回路は、ISO
7816の規格を満足するものである。ここで、ISO
とは、国際標準化機構(International Organization f
or Standardization)の略号であり、認証カード、すな
わち、集積回路カード(ICカード)において特定され
る。上記ISOの中のISO7816は、下記の3つの
部分から構成される。
【0008】第1部…ISO7816−1(物理特
性)、1987年制定 第2部…ISO7816−2(接点の位置の寸法)、
1988年制定 第3部…ISO/IEC7816−3(電子信号およ
び通信プロトコル)、1989年制定 なお、これ以降は、これらの3つの部分を併せてISO
7816とよぶこととする。
【0009】本発明は、モントゴメリにより開示された
数学的な革新事項に基づいて上記の新奇な解のアーキテ
クチュアを実現することに向けられている。本発明で
は、後述するように、モジュラ・べき乗の遂行に要求さ
れる時間を、公知の処理方法およびモントゴメリの方法
を用いた場合に必要な処理時間の半分の時間とほとんど
変わらない値にまで減らすために、幾つかの変形や、改
良や、機能的な方法が提供される。
【0010】ここで、本発明のモジュラ・乗算およびモ
ジュラ・べき乗を遂行する装置および方法を述べる前
に、一般的な計算の数学について大まかに説明すること
とする。数学上の定義、一般的な法則および処理方法 素数および複合形基本モジュールからなる数の領域にお
いて、我々は、AおよびBを、それぞれ被乗数および乗
数として定義する。さらに、通常は、AまたはBよりも
大きい数としてNを定義する。ただし、場合によって
は、Nは、Aよりも小さい数になり得る。さらに、A、
BおよびNの各々を、m×k(積の記号は、×の代わり
に、・または*で表すこともある)=nビット長のオペ
ランドとして定義する。各kビットのグループは、キャ
ラクタとよばれる。それゆえに、A、BおよびNの各々
は、mキャラクタ長のオペランドから構成される。ここ
では、モジュラ・乗算およびモジュラ・べき乗の最初の
遂行過程の理解と、1ステップ毎にモジュラ・乗算およ
びモジュラ・べき乗を遂行する手続の説明を容易にする
ために、我々は、A、BおよびNの各々を、512ビッ
ト長(n=512)のオペランドとして定義する。さら
に、kを32ビット長に設定する。この32ビットは、
現在、乗算器のコストに見合ったkの長さとみなせる。
さらに、m=16としてmの値を設定する。このmの値
16は、一つのオペランドにおけるキャラクタの数であ
り、かつ、512ビットのオペランドに対する2乗ルー
プまたは乗算ループの繰り返しの回数である。この場
合、明らかに、いずれのオペランドも整数である。
【0011】さらに、我々は、モジュールの数の合同を
表すために、記号“≡”を使用する。例えば、16≡2
mod7と記載されている場合、16が2モジュロ7と
合同であり、かつ、16を7で割ったときの剰余が2で
あることを意味する。また、YmodN≡XmodNと
記載されている場合、XおよびYの両方が、Nよりも大
きい可能性がある。さらに、XおよびYが正であるとき
は、それぞれの剰余は同一の値になるであろう。さら
に、Yが負の整数である場合に、Yの合同はY+uNで
表されることに注意すべきである。この場合、Yの合同
がNよりも小さい値であるならば、uは、Yの合同を正
の値にするための最小の数として設定されるであろう。
【0012】さらに、我々は、より限定された意味にお
ける合同を表すために、記号“¥”を使用する。ここで
述べる処理過程においては、各種の値は、度々、望まし
い値か、または、望ましい値とモジュールとの和にな
る。例えば、X¥2mod7と記載されている場合、X
は、2または9のいずれかに等しい。このときに、X
は、2mod7に対し限定された合同を有するものとし
て定義される。
【0013】さらに、X=AmodNと記載されて場
合、我々は、AをNで割った場合の剰余としてXを定義
する。例えば、3=45mod6のように表される。数
の理論においては、モジュラ・逆数が基本的な概念にな
る。例えば、Xのモジュラ逆数は、X-1と表される。こ
の場合、モジュラ逆数X-1は、XX-1modN=1の関
係式により定義される。もし、Xの値が3に等しく(X
=3)、かつ、Nの値が13に等しければ(N=1
3)、X-1の値は9になる(X-1=9)。すなわち、積
3・9を13により割った値は1になる。
【0014】この場合、参照すべきビット、キャラクタ
および全オペランドの値の最上位または最下位を表示す
るために、頭字語MSおよびLSがそれぞれ使用される
ことがある。本明細書中で、Nは、値N、および、この
値Nを含むシフトレジスタの名前の両方を意味してい
る。AおよびNは、べき乗処理の全過程を通して一定の
値である。さらに、Aは、べき乗処理がなされるべき数
の値である。べき乗処理の最初の繰り返し動作において
は、BはAに等しい。Aはまた、累算された値が存在す
るレジスタの名前でもある。この場合、累算された値
は、最終的に、べき乗処理の望ましい結果に等しくな
る。Sは、一時的な値を示すと共に、値Sに対し限定さ
れた合同(¥)の関係を有する値が記憶されるようなレ
ジスタを示す。S(i−1)は、i回目の繰り返し動作
の始まりにおけるSの値を意味する。S0 は、S(i)
の値の最下位(LS)のキャラクタを示す。
【0015】ここで、我々は、ρ領域(この“ρ”はベ
クトルで表示すべきものであるが、電子出願の形式で
は、ρをベクトルにて表示することができないので、や
むを得ず通常のギリシャ文字で表示することとする)に
おける乗算ρ(A・B)Nの処理過程を簡単に説明す
る。なお、乗算ρ(A・B)Nの詳しい定義は、後ほど
行うこととする。
【0016】このρ(A・B)N以外の記号は、算術計
算の中で通常使用されるものである。モントゴメリ方式のモジュラ・乗算 モジュラ・乗算A・BmodNを遂行するための古典的
なアプローチにおいては、積A・Bの剰余は、除算処理
を利用することにより計算される。しかしながら、この
ような除算動作を実行することは、乗算動作を実行する
ことよりも難しい。
【0017】モントゴメリのモジュラ・縮小法を用いる
ことにより、上記の除算処理は、実質的に、前もって計
算された定数を使用した乗算処理に置き換えられる。モ
ントゴメリの関数ρ(A・B)Nは、ρ領域内で積A・
Bの乗算モジュロNを遂行する。ρ領域から通常のモジ
ュールの領域への検索処理は、ρ(A・B)Nの結果と
前もって計算された定数Hをもとにρを規定することに
より遂行される。ここで、Pがρ(A・B)Nと合同で
ある場合(P≡ρ(A・B)N)、ρ(A・B)NはA
・BmodNに等しくなる(ρ(A・B)N=A・Bm
odN)。それゆえに、ρ領域での2つの乗算処理によ
って通常のモジュラ・乗算がなされることになる。
【0018】効果的なモジュラ・縮小法を使用する意図
は、nビット長および2nビット長のオペランドに対す
る一連の乗算および除算動作を回避することにある。こ
のような乗算動作および除算動作の回避は、元の値がn
ビット長であってかつ最高値がnビット長の最終結果を
生成するようなオペランドに対し一連の乗算、加算およ
び減算を実行することにより実現される。上記のような
モントゴメリの指針を証明するために、我々は、所定の
A、B、および奇数のN(この奇数のモジュールは、常
に、単純な大きな素数かまたは複合形の大きな素数のい
ずれかである)に対し、次のようなQが最終的に存在す
ることに注意すべきである。すなわち、A・B+Q・N
が、最下位のnビットの値が0になるような数になると
いう条件を満足するQが存在することである。さらに詳
しくは、このような条件を下記の式(1) に示す。
【0019】
【数1】
【0020】この式(1) は、最下位のnビットの値が0
になるような2nビット長の表現が可能であることを意
味する。ここで、I・2n がImodNと合同である
(I・2n ≡ImodN)と仮定する。この場合、Iは
すべての奇数のNに対して存在する。前述の式(1)の両
辺にIを掛けることにより、式(1) の左辺では、下記の
式(2) に示すような合同の関係が導き出される。
【0021】
【数2】
【0022】また一方で、式(1)の左辺では、下記の式
(3) に示すような合同の関係が導き出される。
【0023】
【数3】
【0024】この結果、前述の式(2) および式(3) より
下記の式(4)が導き出される。
【0025】
【数4】
【0026】残念なことではあるが、この式(4) より、
ρ領域の乗算が実行される度に寄生因子(寄生関数)I
が導入されることがわかる。ここで、ρ演算子を下記の
式(5) のように定義する。
【0027】
【数5】
【0028】さらに、式(5) のPを、“ρ領域における
AとBとの乗算”とよぶこととする。ρ領域からの検索
処理は、下記の式(6) に示すように、P・Hに対しρを
演算することにより遂行される。
【0029】
【数6】
【0030】この式(6) のような合同の関係におけるP
を式(4) のPで置き換えることにより、Hの値が導き出
される。この経過を下記の式(7) に示す。
【0031】
【数7】
【0032】ここで、Hが、I2 の逆数と合同である場
合、式(7) は有効となり、下記の式(8) が成立する。
【0033】
【数8】
【0034】A・Bに対しρ演算子を規定するために、
前もって計算された定数Jを用いて下記のステップ1)
からステップ5)までの処理を遂行することとする。こ
の場合、最終的に、ステップ5)において、下記の式
(9) が成立する。
【0035】
【数9】
【0036】これらの処理に続き、下記の式(10)が導き
出される。
【0037】
【数10】
【0038】さらに、下記の式(11)が導き出される。
【0039】
【数11】
【0040】ここで、Zが2n (Zの最下位のnビット
が0でなければならない)により割り切れるためには、
下記の式(12)に示す合同が存在することが必要である。
【0041】
【数12】
【0042】さらに、この式(12)のような合同が存在す
るためには、N・Jmod2n が−1と合同であること
が必要である。すなわち、下記の式(13)が成立しなけれ
ばならない。
【0043】
【数13】
【0044】この式(13)により、定数Jが求まる。ここ
で、JはNのみの関数なので、前もって計算された定数
となる。さらに、明らかなことではあるが、我々は、N
よりも小さい正の値のJを選定しなければならない。こ
れまでの説明より当業者にとっては明らかなように、上
記の処理過程において、所定のA、B、N、および、前
もって計算された定数に対し、3つの乗算処理と、1つ
の加算処理と、最高の減算処理とを遂行することによっ
てρ(A・B)Nが得られる。さらに、このようにして
得られた結果と、同じような処理過程と、前もって計算
された定数H(モジュールNの関数)とを用いることに
より、A・BmodNが求められる。この場合、AはB
に等しくなるので、モジュラ・算術計算により2乗また
は乗算を行うための装置に対し、このような演算子を使
用することが可能になる。
【0045】インタリービング方式によるモントゴメリ
のモジュラ・乗算 前述のセクションにおいては、すべてnビット長の複数
のオペランド、および、2n+1ビットの記憶領域が要
求される複数の計算結果に対して乗算を必要とするよう
なモジュラ・乗算の方法を述べてきた。ここで、さら
に、モントゴメリのインタリービング方式による縮小法
(既に記載済みのデュッセの論文に記述されている)を
利用することにより、より短いオペランド、レジスタ、
およびハードウェア乗算器を用いた乗算動作を実行する
ことができる。この結果として、論理ゲートの数が比較
的少ない電子装置による処理が可能になる。
【0046】さらに、kビットの乗算器を用いることに
より、kビット長のキャラクタを定義することが容易に
行える。この場合、nビット中にm個のキャラクタが存
在する(m・k=n)。Jの最下位の文字としてJO
定義することにより、下記の式(14)が導き出される。
【0047】
【数14】
【0048】ここで、前述のモントゴメリのインタリー
ビング方式による縮小法を用い下記のステップ1)〜ス
テップ5)を遂行することによって、次のような初期条
件の下でm回の繰り返し動作の後にρ(A・B)Nが規
定される。本発明の回路は、これらの複数のステップを
並列方式により実行する。 初期条件:S(0)=0(最初(1回目)の繰り返し動
作の始まりにおけるSに対し限定された合同の関係を有
する値)
【0049】
【数15】
【0050】ここで、ステップ5)の除算処理は、Z中
の最下位のkビットが常に0である場合の右方向へのk
ビットのけた移動(シフト動作)に相当する。または、
除算処理回路に見られるように、Z中の最下位のkビッ
トが単純に無視される。上記のように、最後の繰り返し
動作の後に、式(15)が得られる。あるいは、必要に応じ
て、Nを引いた後に式(15)が得られる。F=A・Bmo
dNを導き出すために、我々は、ρ領域におけるρ(C
・H)Nの計算を実行しなければならない。
【0051】ここで、我々は、すべてのS(i)に対
し、S(i)の値が2Nよりも小さいことを証明する
(モントゴメリの証明には含まれていない)。ここでの
処理過程に使用されるオペランドに対し、下記の式(16)
のような3つの不等式が成立することに注意すべきであ
る。
【0052】
【数16】
【0053】(これらの不等式中の最初の2つは、S
(i−1)およびBがNに等しいかまたは大きい場合
に、繰り返し動作の始まりにおいて、これらのS(i−
1)およびBからNを引いたときに成立する。さらに、
k が、最上位(MS)のビットが1であるようなk+
1ビット長の数であり、かつ、Ai-1 がkビット長のオ
ペランドである場合に、3つめの不等式が成立する。) 定義により、上記の式(17)が成立する。
【0054】
【数17】
【0055】前述の一揃いの式において置換を行うこと
により、下記の式(18)が成立する。
【0056】
【数18】
【0057】ここで、式(18)における各要素の最高値を
取り入れることにより、下記の式(19)のようなZに関す
る不等式が成立する。
【0058】
【数19】
【0059】この不等式より、下記の式(20)が確実に成
立する。
【0060】
【数20】
【0061】ここで、式(20)の不等式の両辺を2K で割
ることにより、式(21)が得られる。
【0062】
【数21】
【0063】この式(21)の不等式より、いかなる場合に
も、S(i)またはBを調整するためには、Nを1回だ
け減算すればよいことが証明された。例1 インタリービング方式によるモジュラ・乗算 16進法のモードの手動形計算機を使用することによ
り、インタリービング方式によるモジュラ・乗算を利用
した計算の有効性が容易に証明される。まず初めに、1
6進法のフォーマットを用いて次のように数を設定す
る。
【0064】N=a59(モジュロ)、A=99b(乗
数)、B=5c3(被乗数)、n=12(Nのビット
長)、k=4(乗数のビットの大きさであり、キャラク
タの大きさでもある)、および、m=3(n=k・m) さらに、J0 =7(7・9≡−1mod16)、およ
び、H≡22x12moda59≡44bが設定される。
【0065】ここで要求される結果は、F≡A・Bmo
dN≡99b・5c3moda59≡375811mo
da59=22016である。インタリービング方式によ
るモジュラ・乗算を利用した計算の処理過程を下記に示
す。 初期条件:S(0)=0
【0066】
【数22】
【0067】
【数23】
【0068】最終的に得られた値は、99b・5c3m
oda59であり、前述の要求される結果に一致する。
上記の乗算動作の有効性は、各ステップにおいて最下位
の0のkビットを無視する場合には、基本的に、上位の
nビットに対し2k を掛けることになることを我々が認
識したときに、直観的に理解することができる。さら
に、各ステップにおいて、乗数のi番目の部分は、2ik
により乗算される数である。このような乗算処理によ
り、上記の部分は、S(i)と同じランクになる。
【0069】モントゴメリの機器における1つの乗算処
理過程内のモジュラ・縮小法 例えば、NISTのディジタル記号の標準化や、中国式
の剰余定理を用いたモジュラ・べき乗のような多くの暗
号化過程では、第2のモジュロよりも大きい(大抵の場
合、2倍よりも大きい)数を減らすことが要求される。
これらのモジュラ・縮小法は、インタリービング方式に
よる1つのモジュラ・乗算処理過程において効果的に実
行され得る。このモジュラ・乗算処理過程は、本発明に
係る機器や、モントゴメリのアルゴリズムへの機能的な
拡張を利用している。
【0070】前述の幾つかの例では、モジュロの長さで
あるようなオペランドのnビットが、Nの正確な長さで
もあることが暗に示されている。このような関係は、通
常のべき乗および乗算に対しては、ひじょうに効果的で
ある。しかしながら、数の大きさの縮小が必要な場合に
は、第2の定数I-1=2n modNを使用することが有
効である。この第2の定数は、所定の数により乗算され
るモントゴメリの数値を縮小することが要求される場
合、1つの乗算処理の規模を最小のレベルにまで縮小す
るものである。上記の定数I-1は、定数Hを計算する場
合(Hパラメータの計算に関するセクションを参照のこ
と)と同様のメカニズムによって計算される。さらに詳
しくいえば、このI-1の計算は、除数レジスタの最上位
のビットにおいて1のビット値が存在するように、除数
のオペランドの最上位の部分にモジュールNを配置する
ことにより実行される。ここで、けた移動/試行減算の
回数は、明らかにn÷I−Lでなければならない。ただ
し、Lは、Nが関係するビットの数である。この場合、
-1は、Lビット長のオペランドになることに注意すべ
きである。
【0071】上記の前提条件を証明するために、まず初
めに、我々は、A・BmodN(ρ(A・B)N)に対
するモントゴメリの乗算処理によってA・B・Imod
Nと合同の関係を有するものが生成されることを繰り返
し述べる。BがI-1に等しい(B=I-1)と仮定した場
合、下記の式(24)が成立する。
【0072】
【数24】
【0073】例2 インタリービング方式によるモントゴメリの縮小法 tがモジュロqに縮小され得ること(t modq)を
証明するために、乗数レジスタの長さが、qの長さより
も大きくなるように設定する。ここで、最初に記憶され
るtは、24ビットの長さを有する。
【0074】さらに、ワードの長さ(機器の乗数の大き
さ)が8ビットであるとし、かつ、次のような変数を仮
定する。 n=24、k=8、t=0af59b、q=2b13、
および、R=I-1=224modq=141d 単純な除算の計算処理を用いて比較を行うことにより、
tmodqが5c8に等しいこと(tmodq=5c
8)がわかる。このような処理過程を下記に示す。
【0075】この場合、一回のモントゴメリの乗算処理
において縮小および検索が遂行されることに注意すべき
である。
【0076】
【数25】
【0077】最終的に、前述のように、tmodqが5
c8に等しいことが確認される。べき乗 ここでは、D.ヌース(Nuth)著による「コンピュータ
・プログラミングの技術(The Art of Computer Progra
mming )」{半数学的アルゴリズム(Seminumerical Al
gorithms)、第2巻、アディソン−ウェスリ(Addison-
Wesley)社、読書協会(Reading Mass)、1981年発
行}による処理手順の方法をもとに、モジュラ・べき乗
を遂行するための2乗および乗算の処理手順を説明す
る。なお、これ以降は、上記の方法をヌースの方法とよ
ぶこととする。
【0078】まず初めに、我々は、前のセクションにお
いて定数を予め計算していると仮定する。我々はまた、
本発明の装置が、ρ領域内で2乗および乗算の両方を遂
行することができると仮定する。このときに、我々は下
記の式(26)のような計算を行うこととする。
【0079】
【数26】
【0080】この式(26)の計算処理過程を下記に示す。
ここで、E(i)は、指数Eに対し2進法のビット表示
を行ったときのi番目のビットを示す。このi番目のビ
ットは、インデックスが1の最上位のビットで始まり、
インデックスがqの最下位のビットで終わる。
【0081】
【数27】
【0082】各ステップから次のステップに移行する際
に、BがNに等しいかまたは大きい場合には、常に、B
からNが引かれる。最後の繰り返し動作の後に、Bの値
は、AE modNに対し限定された合同の関係を有する
ようになる(B¥AE modN)。本発明の回路を用い
てモジュラ・べき乗を遂行する場合に、より効果的に利
用され得るような特許権を有する複数のプロトコルが存
在する。ここで、我々は、本発明で述べる方法におい
て、通常のべき乗処理の速度が2倍になるような2つの
暗号化プロトコルを挙げることとする。
【0083】1つめの暗号化プロトコルは、R.L.リ
ベスト(Rivest)他著の「ディジタル記号および公開キ
−暗号化システム(A Method for Obtaining Digital S
ignatures and Public Key Cryptosystems)」{ACM
委員会(Comm. of the ACM)、第21巻、120〜12
6頁、1978年発行}に記載されている。なお、これ
以降は、上記の1つめのプロトコルを、RSAの方法と
よぶこととする。2つめの暗号化プロトコルは、W.デ
ィッフィ(Diffie)およびM.E.ヘルマン(Hellman
)著の「暗号手法に関する新しい指針(New Direction
s in Cryptography)」{情報理論のIEEE議事録(I
EEE Trans. on Inform. Theory )、VOL.IT−2
2、644〜654頁、1976年発行}に記載されて
いる。なお、これ以降は、上記の2つめのプロトコル
を、ディッフィ−ヘルマンの方法とよぶこととする。こ
れらの2つの方法においては、一定の指数を用いて大部
分の難しいべき乗が遂行される。
【0084】次のセクションで述べる方法(ρ領域から
の検索のために効果的な方法)は、一定の指数を使用す
ることによって計算処理に必要な計算時間を減らすこと
に言及する。この方法が用いられた場合、前述のステッ
プb)′のべき乗処理過程(すべてのρ(A・B)Nの
乗算処理)が取り除かれる。さらに、べき乗処理に関す
るq回目の繰り返し動作の後に得られるBの最終値が、
モントゴメリのρ領域において、前もって計算された定
数Tにより乗算される。
【0085】上記の暗号化プロトコルに従事する人々に
とっては、中国式の剰余定理(前述のヌースの文献中に
記述されている)を用いた回路によってRSAの記号を
運用することにより、計算時間が70%より小さい値に
まで節減され得ることは、明らかなことである。ρ領域からの検索のために効果的な方法 ここでは、前述のセクションのべき乗処理および乗算処
理のプロトコルが改善され得る。さらに、繰り返し動作
がなされる間に、新たに前もって計算された定数Tを取
り入れることにより、ρ領域内での乗算の回数を減らす
ことが可能になる。この場合、Tは、モジュロNおよび
指数Eの関数である。このような方法を、下記の処理過
程に示す。
【0086】
【数28】
【0087】この場合、モジュラ・べき乗は、下記の手
順にて遂行される。
【0088】
【数29】
【0089】ここで、各ステップから次のステップに移
行する際に、BがNに等しいかまたは大きい場合には、
常に、BからNが引かれることを再び仮定する。さら
に、ρ領域内でのすべての乗算は、同じ因子Iによるモ
ジュラ・乗算(例えば、ρ(X・Y)=X・Y・Imo
dN)に相当する点に再び注意すべきである。
【0090】例3 この例3は、AE modNの計算におけるTの有用性を
証明し、かつ、Tの定義を明らかにするためのものであ
る。この例3の処理過程を下記に示す。
【0091】
【数30】
【0092】さらに、下記の処理過程を遂行する。
【0093】
【数31】
【0094】AE を計算するために、次のようなステッ
プが続けて実行される場合には、ペラメータTの導入が
回避され得る。ここで、我々は、前もって計算されたモ
ントゴメリの定数が存在すると仮定し、かつ、本発明の
装置が、P領域内で2乗および乗算の両方の処理を遂行
すると仮定することにより、下記の計算を実行する。
【0095】C=AE modN この場合、E(j)は、指数Eに対し2進法のビット表
示を行ったときのj番目のビットを示す。このj番目の
ビットは、インデックスが1の最上位のビットで始ま
り、インデックスがqの最下位のビットで終わる。奇数
の指数に対しては、次のような処理過程によりべき乗を
遂行することができる。
【0096】
【数32】
【0097】各ステップから次のステップに移行する際
に、BがNに等しいかまたは大きい場合には、常に、B
からNが引かれる。最後の繰り返し動作の後に、Bの値
は、AE modNに対し限定された合同の関係(B¥A
E modN)を有するようになる。そして、最終値とし
てCが得られる。
【0098】また一方で、偶数の指数に対しては、前述
の最後のステップが下記の式(33)によって置き換えられ
る。
【0099】
【数33】
【0100】さらに、ここでの処理過程をより明確にす
るために、下記のような具体例を掲載する。
【0101】
【数34】
【0102】Hパラメータの計算 Hパラメータは、モントゴメリの領域内での計算に際し
不可欠なものであり、かつ、一定の値である。ある種の
プロトコルを用いた場合、Hは、比較的大きなコンピュ
ータで予め計算されるような定数になる。あるいは、他
のプロトコルを用いた場合、Hは、より有効な定数を計
算する際に使用される第1段階のパラメータであるよう
な有用性のある定数にもなり得る。この点に関しては、
前述のセクションを参照されたい。
【0103】通常の通信においては、Hが前もって計算
されることを仮定している。しかしながら、幾つかのプ
ロトコル、例えば、RSAにおけるランダムな通信の際
の記号の暗号化に対しては、本発明の装置、例えば、S
MARTカードを使用してHを計算することも必要であ
る。Hパラメータは、下記の式(35)により計算される。
【0104】
【数35】
【0105】この式(35)は、Hパラメータが通常の除算
動作の剰余であることを意味する。この場合、最上位の
1ビットと、これに続く最下位のビット値0の2nビッ
ト(2n+1ビット長のオペランド)とから構成される
ビット列が、モジュールの基数Nにより除算されること
になる。ビット値1の1ビット、および、ビット値0の
ビット列からなる被除数に対し除数Nによる2進法の除
算を遂行することは、Nによる順次の試行減算を実行す
ることに相当する。すなわち、上記の除算処理は、最上
位のn+1ビットがNよりも大きい場合に、残りの試行
過程の被除数からNを引くことに相当するものである
(下記の例を参照のこと)。
【0106】この場合、元の被除数は2n+1ビット長
であるが、除算処理により生成される残りの試行過程の
被除数は、明らかに、n+1ビット長を超えることはな
い。さらに、最下位のけたが0になることも明らかであ
る。例えば、次のような例を挙げる。すなわち、N=1
10=1011n (したがって、Nのビット長は、4に
なる、したがって、n=4)のときに、Hを求める例を
挙げる。
【0107】除算の基数を2として、長い除算を手動に
より実行する。
【0108】
【数36】
【0109】最終的に、H=310であることが確認され
た。上記の除算処理では、n+1回の試行減算が存在す
る。さらに、試行減算により得られる被除数もまた、n
+1ビット長になることに注意すべきである。このよう
な減算処理の手順は、後述の本発明のハードウェアの説
明箇所で詳しく述べることとする。
【0110】
【課題を解決するための手段、および、作用】本発明
は、大きな数に対しモジュラ・乗算およびモジュラ・べ
き乗を遂行するための超小形電子系装置に係り、適切な
クロック手段および制御手段を有する標準のマイクロプ
ロセッサに対するコンパクトな同期式の電子系超小形周
辺機器からなる。
【0111】さらに、本発明この超小形電子系装置は、
各々が細分化される共に、切替制御可能であり、かつ、
前記クロック手段により制御される複数種のシフトレジ
スタと、多重化され、かつ、直列/並列形の2つのみの
マルチプレクサと、ボロー検出器と、補助的な減算器お
よび加算器と、ディレイ・レジスタおよび切替素子とを
備えている。
【0112】このような超小形電子系装置は、モジュラ
・乗算、モジュラ・2乗およびモジュラ・べき乗を同時
処理かつ同期方式により遂行するために、前述のすべて
の構成部品を集積化して形成する。好ましくは、本発明
の超小形電子系装置は、ハードウェアの乗算、2乗およ
びべき乗に対し設計されたモントゴメリの方法をもとに
展開されるような新奇かつ複合形で同期式のハードウェ
ア装置により実現される。
【0113】さらに、好ましくは、本発明の超小形電子
系装置は、モントゴメリの方法を展開することにより、
並列動作方式に直列動作方式を取り入れた多数の同時処
理と直列処理との複合形、すなわち、乗算、減算、加
算、記憶形ディレイおよび2kによる除算を遂行する装
置として機能する。さらに、好ましくは、本発明の超小
形電子系装置は、モントゴメリの方法を展開することに
より、モジュラ・乗算、モジュラ・2乗およびモジュラ
・べき乗のための多数の直列処理を遂行し、かつ、膨大
な内部バスの使用を回避し得る。
【0114】さらに、好ましくは、本発明の超小形電子
系装置は、モントゴメリの方法を展開することにより、
モジュラ・乗算、モジュラ・2乗およびモジュラ・べき
乗のための多数の直列処理を遂行し、一般の1μm技術
を用いたSMARTカード用のISO7816の標準規
格により規定されるマイクロチップ上に形成される程度
に充分コンパクトである。
【0115】さらに、好ましくは、本発明の超小形電子
系装置は、モントゴメリの方法を展開することにより、
モジュラ・乗算、モジュラ・2乗およびモジュラ・べき
乗のための多数の直列処理を遂行し、基本のアーキテク
チュアを変えることなく、特に、デュアルポート・アク
セスのためのメモリを再設計することなく、かつ、ファ
ームウェアの要求が少ない状態で、1つの内部バスを備
えた任意のマイクロプロセッサにより制御することが可
能である。
【0116】さらに、好ましくは、本発明の超小形電子
系装置は、マイクロプロセッサを使用してカスケード形
のρ領域内での2乗および乗算の処理手順を規定する。
さらに、前記超小形電子系装置は、nビット長のシフト
レジスタを含み、かつ、モジュラ・乗算、モジュラ・2
乗およびモジュラ・べき乗を遂行する多重化部を備えて
いる。この多重化部内に指数Eを記憶することが不要で
あるために、この多重化部による制御を簡単にし、また
一方で、ほんのわずかな付加的なマイクロコントローラ
のROMコードしか必要としない。
【0117】さらに、好ましくは、本発明の超小形電子
系装置は、Bのレジスタが回転動作を行っている間に、
オンザフライ方式により2乗の被乗数を用いてAi のレ
ジスタをロードする結果として、前記Ai のレジスタを
前記Bのレジスタにより再ロードする際に、マイクロコ
ントローラによりBおよび/またはB−Nの前回の計算
処理の最終値が取り出されるおそれが回避される。
【0118】このために、このマイクロコントローラの
RAMが節減され、かつ、2乗の繰り返し動作の各々に
おいて少なくともnクロック分の実効的なクロック・サ
イクルを除去することが可能になる。本発明の構成によ
れば、Z/2k がNよりも大きいか、またはNに等しい
かを決定し、たった1回の直列形の減算のみ行うような
比較的小さいNオペランドを達成することにより、モン
トゴメリの方法による簡単な装置から、2つの記憶用レ
ジスタおよび独立の直列形の減算処理が除去されると共
に、Z/2k −Nに関する単一の直列形の検出を行うこ
とが可能になる。
【0119】さらに、本発明の構成によれば、3つの同
時乗算処理を遂行する際に2つの直列/並列形の乗算器
のみが使用されるように、半並列形式で回路の同期をと
っている。このために、シリコンを用いた装置において
全シリコン領域に対し直列/並列形の乗算器の占める面
積の割合が40%に抑えられる。
【0120】さらに、本発明の構成によれば、kビット
のシフトレジスタからなる1つのディジタルのディレイ
素子を使用してXの直列形の加算と乗算器の直列結果と
の同期をとので、直列/並列形の乗算器の積または繰り
返し処理が二重に記憶されることが防止される。さら
に、本発明の好ましい実施態様においては、シフトレジ
スタが、nビット長またはn/2ビット長で構成され、
n/2の長さのモジュールに対するべき乗が、nビット
長のべき乗に対し必要であろうと思われる実効的なクロ
ック・サイクル期間の1/8より幾分少ない時間で遂行
される。
【0121】さらに、本発明の好ましい実施態様におい
ては、オンザフライ方式によりAのレジスタをロード
し、かつ、オンザフライ方式によりSのレジスタの内容
の大きさを予測し、さらに、オンザフライ方式により一
部のオペランドの同期をとることにより、nビットの数
の乗算処理ρ(A・B)Nが、実効的なm(n+2k)
クロック・サイクルで完全に遂行される。
【0122】さらに、本発明の好ましい実施態様におい
ては、小規模のボロー検出回路が付加され、かつ、制御
メカニズムに簡単な付加物が付加されているようなモン
トゴメリの乗算処理に対し使用されるものと同じ機器の
同じレジスタを用い、第2のモ−ドにおいてHパラメー
タの計算を行うことができる。本発明のモジュラ・乗算
を遂行するための方法においては、被乗数A、乗数Bお
よびモジュロNの各々が、kビット長のmキャラクタか
ら構成され、乗数BはモジュロNよりも大きくない値に
設定される。
【0123】前記の方法は、下記のステップにより実行
される。第1のステップで、Hパラメータと、他のパラ
メータの少なくとも最下位のキャラクタJ0 とを前もっ
て計算し、かつ、このキャラクタJ0 をkビットのレジ
スタにロードし、第2のステップで、前記乗数Bおよび
モジュロNを、それぞれ対応するnビット長のレジスタ
にロードし、ここで、n=m・kのように表され、第3
のステップで、nビット長のレジスタSのビット値をす
べて0にし、第4のステップで、i番目の繰り返し動作
をm回遂行し、ここで、iは0からm−1までの数であ
り、さらに、i番目の繰り返し動作の各々は、以下の動
作を含み、(a)前記被乗数Aのi番目のキャラクタA
i を、Ai のレジスタ手段から、レジスタおよびラッチ
手段から選定された記憶手段へ転送し、(b)X=S
(i−1)+A(i−1)*Bにより表されるXの値を
生成し、ここで、S(i−1)はSの更新された値であ
り、Sの更新は、次のように定義され、 乗算手段に対し、Bのレジスタを周期的に右方向へシ
フトし、 直列形式でBをAi により乗算し、 前記モジュロNを周期的に右方向へシフトし、 S(i−1)がNよりも大きくない場合、(i−1)
番目の繰り返し動作の後にSのレジスタに記憶される値
をS(i−1)の更新された値として決定し、S(i−
1)がNよりも大きい場合、直列形式でS(i−1)か
らNを引くことにより得られる値をS(i−1)の更新
された値として決定し、さらに、この結果として得られ
るS(i−1)の更新された値を設定し、 Sのレジスタを周期的に右方向へシフトし、さらに、
各ビット毎に、乗算A(i−1)*BをS(i−1)の
更新された値に加算し、 (c)X(X0 )の最下位のキャラクタをJ0 により乗
算し、NおよびXがkクロック・サイクルだけ遅延され
ている間に、X0 *J0 mod2k の値をY0のレジス
タ手段に入れ、(d)Z=X+Y0 *NのZの値を計算
し、この計算は、次のように行われ、 Nのレジスタに対し遅延かつ右方向へのシフトがなさ
れた状態でY0 をNにより乗算し、同時に、この乗算結
果に対し、前述の周期的な右方向へのシフトがなされ、 XをY0 *Nの値に加算し、 (e)Zの最下位のキャラクタを無視し、残りのキャラ
クタをSのレジスタに入れ、このときに、最後の繰り返
し動作以外は、Z/2k を入れることになり、(f)前
述と同様の方法によりS(i−1)の更新された値を決
定するために、各ビット毎にZ/2k とNとを比較し、
(g)前記被乗数Aのi番目のキャラクタAi を、前記
の動作期間において、Aのレジスタ手段にロードし、第
5のステップで、最後(m回目)の繰り返し動作におい
ては、Z/2k の最下位のキャラクタを無視し、残りの
キャラクタを、C¥ρ(A*B)NとしてBのレジスタ
に入れ、第6のステップで、前記第3および第4のステ
ップを繰り返し、ここで、CがNよりも大きい場合に
は、CまたはC−NがBにとって代わり、さらに、Hが
Aにとって代わることによってP=ρ(C*H)Nを計
算し、第7のステップで、最後の繰り返し動作により得
られるPの値を、A*BmodNと仮定する。
【0124】さらに、本発明の方法によれば、被乗数A
と乗数Bとが同じ数である場合に、モジュラ・2乗およ
びモジュラ・乗算が遂行される。さらに、本発明の方法
によれば、D=AE modNにより表されるモジュラ・
乗算およびモジュラ・べき乗が遂行される。さらに、本
発明の方法は、 1.モジュラスをレジスタNに格納する工程、 2.レジスタSを0にセットする工程、 3.べき乗化されるべきベースAをレジスタBに格納す
る工程、 4.べき指数Eをコンピュ−タ−のレジスタに格納する
工程、 5.該べき指数Eを左にシフトさせる工程、 6.第1番目の1ビットに先行するそれらの0ビットを
無視すると共に、該べき指数Eと第7及び8の操作を実
行する為のビットに続く全てに対して、第1番目の1ビ
ットを無視する工程、 7.該ビットのそれぞれに付いて、0か1かに関係な
く、上記で定義された乗算方法により該レジスタBの内
容を二乗すると同時に、該ベースの連続する特性値が該
レジスタBからレジスタAに格納される工程、 8.若し、べき指数Eに関する現在のビットが、1であ
るか、或いは1に過ぎない場合に、工程7の操作終了後
該レジスタBの内容を該ベースAで乗算する工程、及び 9.べき指数Eの全てのビットに付いて、工程6〜8の
操作が実行された後に、D¥=AE modNとしての最
後の操作に付いての結果を該レジスタBに格納する工程
とから構成されている。
【0125】さらに、本発明の方法は、 1.モジュラスをレジスタNに格納する工程、 2.レジスタSを0にセットする工程、 3.べき乗化されるべきベースAをレジスタBに格納す
る工程、 4.べき指数Eをコンピュ−タ−のレジスタに格納する
と共に、以下に定義する事前演算パラメータTをコンピ
ュ−タ−CPUに格納する工程、 記載の方法。
【0126】5.該べき指数Eを左にシフトさせる工
程、 6.第1番目の1ビットに先行するそれらの0ビットを
無視すると共に、該べき指数Eと第7及び8の操作を実
行する為のビットに続く全てに対して、第1番目の1ビ
ットを無視する工程、 7.該ビットのそれぞれに付いて、0か1かに関係な
く、請求項1で定義された乗算方法に関して工程4及び
5を実行すると同時に、被乗数と乗数とがベースAであ
り、且つ該ベースの連続する特性値が該レジスタBから
レジスタAに格納される工程、 8.若し、べき指数Eに関する現在のビットが、1であ
るか、或いは1に過ぎない場合に、工程7の操作終了
後、請求項1で定義された乗算方法に関して工程4及び
5を実行し、その際、該被乗数がレジスタBの内容であ
り、且つ該乗数がベースAである工程、及び 9.べき指数Eの全てのビットに付いて、工程7〜8の
操作が実行された後に、レジスタBの内容を前記パラメ
ータで付加的に乗算し、TD=AE modNとしての最
後の操作に付いての結果を該レジスタBに格納する工程
とから構成されている事を特徴とする請求項19による
繰り返し操作を実行することにより、モジュラ・べき乗
D¥=AE modNを実行する。
【0127】さらに、本発明の方法は、コンピュ−タ−
CPUと乗算回路を含む制御手段から構成されている請
求項19記載の方法により、モジュラ・乗算を実行する
装置であって、該乗算回路は、乗数としてのn−ビット
シフトレジスタB、モジュラスとしてのn−ビットシフ
トレジスタN、本発明に於いて定義されている値Sとし
てのn−ビットシフトレジスタN、被乗数としてのk−
ビットシフトレジスターAi、本発明に於いて定義され
ている値J0及びY0としてのk−ビットレジスタ手
段、該レジスタBの内容と該レジスタAiの内容とを掛
け合わせる乗算手段、付加的なn−ビット乗算器手段及
び加算、減算、多重化及び遅延手段とを含んでいる。
【0128】さらに、本発明の方法は、該n−ビットレ
ジスタとその他の構成部分との間の接続、及びラッチ回
路以外の構成部分間の接続は1ビット接続である。さら
に、本発明の方法は、 1.べき指数Eをコンピュ−タ−の記憶手段に格納する
工程、 2.モジュラスを前記レジスタNに格納する工程、 3.前記レジスタSを0に設定する工程、 4.前記した特許出願番号104753に記載された方
法に従って、A*=ρ(AH)N の乗算操作を実行する
工程、(此処で、Aは、べき乗化されるべきオペランド
でありHは、前記で定義した事前演算パラメータであ
る。) 5.該A*を該ベースレジスタBに格納する工程、 6.該ベースレジスタBの内容に対して二乗演算操作を
実行する工程、 7.該べき指数Eを左にシフトさせる工程、 8.第1番目の1ビットに先行するそれらの0ビットを
無視すると共に、該べき指数Eと第9及び10の操作を
実行する為のビットに続く全てに対して、第1番目の1
ビットを無視する工程、 9.該ビットEのそれぞれに付いて、0か1かに関係な
く、上記で定義された二乗方法による工程4及び5の操
作を実行する工程であって、該被乗数と該乗数とが共に
該レジスタBから派生されるものであり、且つ該モント
ゴメリー乗算器に於ける連続する特性値が該レジスタB
からレジスタAiに格納される工程、 10.若し、べき指数Eに関する現在のビットが、1で
あるか、或いは1に過ぎない場合に、工程9の操作終了
後、前記で定義された二乗方法に関して工程4及び5を
実行し、その際、該被乗数がレジスタBの内容であり、
且つ該乗数がベースA*である工程、及び 11.べき指数Eの全てのビットに付いて、工程8〜1
0の操作が実行された後に、レジスタBの内容を前記オ
リジナルベースAで付加的に乗算し、D¥=AEmod
Nとしての最後の操作に付いての結果を該レジスタBに
格納する工程とから構成されている。
【0129】さらに、本発明の方法は、平均有効長がn
/2ビットである2つの数値に付いて従来の乗算を実行
する方法で有って、該乗算方法は、該請求項19に於い
て定義されている乗算方法により該数値に対してモジュ
ラ・乗算処理を実行するもので有って、該モジュラ、
N、は全てが“1’s”(fffffff......fff) で構成さ
れたn−ビット数で、J0から1に対応するものであ
り、被乗数をレジスタBに格納し且つ請求項1に於いて
定義されている乗算方法に従ってAを取り扱うものであ
り、Nは、全て1によりプリローディングレジスタNの
手段によるか、或いは一連の“ハード”1を出力する為
のNを出力するマルチプレクサーをセットすることによ
り、該Nは全て1と成りうるものである。
【0130】
【実施例】本発明のモジュラ・乗算およびモジュラ・べ
き乗を遂行する超小形電子系装置ならびにその遂行方法
は、添付図面(図1〜図9)を参照しながら、本発明の
好ましい実施例を具体的に説明することにより、より良
く理解されるであろう。これらの添付図面は、本発明の
装置を全体的に理解するために必要な複数種の論理的概
念を示すものである。すべての場合において、クロック
信号に従い回路が動作する。そして、リセット信号があ
る場合には、このリセット信号は、回路を零の状態にす
ることを目的としている。
【0131】以下、図1〜図9の添付図面を参照しなが
ら、本発明の実施例を詳細に説明する。図1は、本発明
の一実施例の装置構成を示すブロック図である。ここで
は、本発明の装置が集積化されたモノリシック回路のブ
ロック図が例示されている。図1において、多重化部
(MULT部と記載されることもある)は、本発明の基
礎となるハードウェア装置を備える。状態マシンは、多
重化部の回路を駆動するための制御部を構成する。RO
M(読み出し専用回路)部は、すべて不揮発性メモリ
(ROMおよびEPROM)から構成される。このRO
M部には、SMARTカードを制御するためのプログラ
ム、高信頼性の3つのグループからなる公開キー、およ
び、多重化部や状態マシンを駆動するためのプログラム
が格納されている。RAM(ランダムアクセス回路)部
は、一時的に存在するオペランドを記憶するための揮発
性メモリから構成される。この種のオペランドとして、
べき乗処理がなされる予定のメッセージ、暗号化される
べき公開キー、多重化部に転送されるべきデータ等が挙
げられる。CPU(中央処理装置)は、実際は、8ビッ
トまたはそれより大きなビットの内部バスを有するよう
な任意のマイクロコントローラである。
【0132】図2は、本発明の一実施例のモジュラ・乗
算回路を示すブロック図である。この場合、モジュラ・
乗算回路は、モジュラ・2乗およびモジュラ・べき乗を
実行するために用いられる。図2において、参照番号1
0、11および12は、B、SおよびNのレジスタをそ
れぞれ構成するようなnビット長(n=k・m)の3つ
のレジスタを示すものである。これらのレジスタの各々
には、乗数の値Sとモジュロの値がロードされる。上記
レジスタは、好ましくは、2つのn/2レジスタに分割
されている。さらに、上記レジスタは、好ましくは、N
およびBのレジスタに対し、kビットの最下位ビット部
分を含む。マルチプレクサ13、14および15は、そ
れぞれ、上記レジスタの前部に配置される。この場合、
もし、これらのマルチプレクサが細分化されて個々の部
品として形成されているならば、各マルチプレクサが、
各々のレジスタ前部に配置される。さらに、図2のブロ
ック図に示すように、3つのレジスタは、直列形式でロ
ードされるように意図されている。しかしながら、並列
形式によるロードも可能である。
【0133】16、17および18は、いずれもkビッ
ト長であり、かつ、Ai 、J0 、およびY0 の値をそれ
ぞれ受け入れる3つのレジスタを示すものである。レジ
スタ16、17は、それぞれ、直列ロード/並列出力形
のシフトレジスタと、直列および並列ロード/並列出力
形シフトレジスタである。レジスタ18は、好ましく
は、直列入力/並列出力形シフトレジスタである。これ
らのレジスタの内容は、それぞれ、構成要素21、22
を介して乗算手段19、20により処理されるように意
図されている。これらの構成要素21、22は、好まし
くは、kビットのラッチである。これらの構成要素2
1、22がラッチである場合、これらの構成要素21、
22は、kビットのバスを通してレジスタ16、17お
よび18からロードされる。また一方で、上記の構成要
素21、22がレジスタである場合、これらの構成要素
21、22は、1ビットの接続部を通して直列形式でロ
ードされ得る。
【0134】参照番号24、25、25′、26、3
6、37および38は、マルチプレクサを示している。
乗算手段(乗算器)19、20は、直列入力A、並列入
力B、および直列出力を有する乗算手段か、または、そ
の他の直列/並列入力、および直列出力を有する乗算手
段である。マルチプレクサ38は、通常の数の領域内で
乗算処理を実行するために、モジュロNのビット値を強
制的にすべて1(オール1)にするものである。
【0135】参照番号27、28、29、30および3
1は、1ビットの全加算/減算手段または半加算/減算
手段を示している。この内、31は、全加算/減算手段
を示している。参照番号32、33および34は、ディ
ジタル信号を遅延させることが可能なkビットかつkク
ロック・サイクルのディレイ手段を示している。これら
のディレイ手段は、アナログ素子またはディジタル素子
のいずれによっても構成され得るが、アナログ素子によ
り構成するのが好ましい。35は、ボロー検出器を示し
ている。このボロー検出器は、2ビットのラッチ/記憶
手段である。図2からわかるように、本発明の装置は、
例えば512ビットのような大きい数を取り扱うように
意図されているにもかかわらず、わずかな数のkビット
のバスをオプションで持っている以外には、バスを備え
ていない。このために、本発明の装置では、ハードウェ
アの節減が図れる。B、SおよびNのレジスタが、n/
2ビットの部分を有する場合、本発明の装置は、256
ビットの数に対し乗算動作およびべき乗動作を遂行する
ために使用することが可能である。このために、本発明
では、装置を使用する際の柔軟性を備えるという利点が
生ずる。
【0136】図3は、本発明の一実施例の特殊なモジュ
ラ・乗算回路を示すブロック図である。ここでは、本発
明の一実施例のモジュラ・乗算回路を論理セルにより構
成している。図3において、オペランドは、直列の接続
部DIを介し、Ai のラッチと、J0 のレジスタと、B
のレジスタと、Nのレジスタとに供給される。そして、
オペランドによる処理結果は、直列の接続部DOを介
し、BのレジスタまたはNのレジスタから取り出され
る。
【0137】信号Xは、BとAi とSとの積B・Ai
Sのビットの流れを合計した結果(和)に相当する(S
とBの積は、Nよりも小さいと仮定する)。信号Y
0 は、J0 とXの積J0 ・Xにおける最下位のkビット
の流れに相当する。信号Zは、Y0 とNの積Y0 ・N
と、Xとの和に相当する。ここでは、Z中の最下位のk
ビットはすべて0なので、この最下位のkビットは無視
される。この結果、最上位のnビットのみが、Sまたは
Bに対し直列に供給される。
【0138】ボロー検出器は、Z/2k の値がNより大
きいか否かを検出するための論理回路である。減算器
(通常、Subと略記される、図3では、単に減算と記
す)1および減算器2は、BおよびSの値がNよりも大
きい場合は、常に、BおよびSのビットの流れからNの
ビットの流れを減算するように動作する。
【0139】加算器(通常、Adと略記される、図3で
は、単に加算と記す)1および加算器2は、Xの流れと
Zの流れを生成するために、ビットの流れを加算するよ
うに動作する。ディレイ素子(図3では、単にディレイ
と記す)1およびディレイ素子2は、シフトレジスタか
ら構成される。これらのディレイ素子は、数学的処理の
同期をとるための記憶手段を提供するために必要なもの
である。
【0140】図3では、クロックの制御は図示していな
い。ここでは、クロックは、状態マシンから供給される
と仮定している。このクロックの供給は、前述の直列入
力/直列出力形の論理回路の1つからデータを送り出し
たりこれらの論理回路の1つにデータを提供したりしな
ければならないときは、いつでも行われる。他の制御、
すなわち、マルチプレクサのアドレス制御や、ラッチ転
送信号の制御等もまた、詳しく開示していない。なぜな
らば、これらの制御は、本明細書に含まれる説明事項よ
り、当業者にとっては明らかであるからである。
【0141】さらに、図2および図3の装置が、どのよ
うにして本発明の乗算の方法に関係する複数の動作を遂
行するかは、当業者にとっては明らかであろう。しかし
ながら、これらの複数の動作のタイミング関係は、念の
ために、次の図4に示す。図4は、本発明の一実施例に
よる繰り返し動作(イテレーション)と乗算動作との間
の時間的な関係を示す図である。この図においては、本
発明の一実施例による実効的かつ連続的なクロック・サ
イクルにおいて遂行されるようなすべての各種動作が、
図式的に示されている。この場合、n=512、およ
び、m=16に設定される。このような設定条件は、暗
号化技術においては、比較的一般的な条件である。前述
の図3に例示された実施例に従って本発明を実施する場
合、n=256の条件下で本発明を実行するために、図
4と同じ装置が使用される。
【0142】図4においては、一連の各種動作が、実効
的なクロック・サイクルの関数として図示されている。
この実効的なクロック・サイクル(実効クロック)に関
しては、横軸に目盛りがふられている。各種動作の始ま
り、および、すべての繰り返し動作前のタイミングで
は、B、SおよびNの値が、それぞれ対応するレジスタ
にロードされる。上記の繰り返し動作は、本発明の乗算
の方法の一部をなす。Aの最初のキャラクタもまた、対
応するレジスタにロードされる。kクロック・サイクル
の期間において繰り返し動作が始まるや否や、Bおよび
Sのレジスタの内容のシフト動作が行われる。n+kの
実効的なクロック・サイクルの期間においてXの値が発
生する。最初のkクロック・サイクルは、X0 の値を取
り入れることにより占有される。最初の実効的なkクロ
ック・サイクルの期間において、Y0 の値が取り入れら
れる。次の実効的なn+kクロック・サイクルの期間に
おいて、乗算器20に既に取り入れられているXの値が
シフトするか、または、このXの値がディレイ素子34
により遅延された後に加算器31に取り入れられる。N
の値は、3つの異なる時間位相にて使用される。初めの
位相は、SおよびBを更新するために使用される。第2
番目の位相は、実効的なkクロック・サイクルの遅延期
間の後に、Y0 による乗算を遂行するために使用され
る。第2番目の位相は、2回目の実効的なkクロック・
サイクルの遅延期間の後に、SまたはBの次の値がどの
ようにして更新されるかを検知するために使用される。
同様の実効的なn+kクロック・サイクルの期間におい
て、Zが計算され、かつ、Z/2kが計算される。最初
の実効的なkクロック・サイクルの始まりのタイミング
で、Ai のロードが始まる。さらに、繰り返し動作が連
続している間は、Ai のロードも続けて行われる。Z/
k の最終値は、最初の実効的な2kクロック・サイク
ルの期間後のnクロック・サイクルの期間において、S
(またはB)のレジスタに取り入れられる。
【0143】図5は、直列/並列乗算器のセルの構成を
示す回路図である(この回路図の作成に際しては、専門
の技術に精通している技術陣の助けを借りているが、彼
らは、本発明に関係する直列/並列乗算器のセル構成の
研究に関しては関与していない)。これらの複数のセル
の各々は、後述の図6に示すような乗算器(通常、MP
Lと略記される)を備える。
【0144】図6は、8ビットの直列/並列乗算器の構
成を示す回路図である。この直列/並列乗算器は、符号
のない直列/並列乗算器の乗算動作に対しブース(Boot
h )の乗算アルゴリズムを実行する。図3の乗算器(通
常、MLと略記される、図3では、単に乗算と記す)1
および乗算器2に示すような直列/並列乗算器は、kビ
ット長である。この場合、MSセル、すなわち、最上位
ビットのセルが退化していることに注意すべきである。
並列の8ビットの被乗数が、XIの接続部に入力され
る。さらに、nビット長の直列の乗数がYの接続部に入
力される(乗数の最上位の1ビットの後に、最初に現れ
る最下位のkビットの列はすべて0である)。さらに、
乗算器による乗算結果である積は、出力側の接続部MO
において、最下位のkビットが最初に現れ、最上位のビ
ットが最後に現れる。この場合、積の全体は、n+kビ
ット長になる。
【0145】図7は、直列加算器の構成を示す回路図で
ある。ここでは、Aの接続部とBの接続部に現れる2つ
のビットの流れを加算するための直列加算器が例示され
ている。この直列加算器においては、出力側の接続部S
において、ビットの流れの和が出力される。図7におい
ては、最下位のビットが最初に入力される。さらに、m
ビット長のオペランドに対する出力の流れは、m+1ビ
ット長になる。m回の実効的なクロック・サイクルの最
後の部分では、CIの出力は、数のビット列中のm+1
番目のビットに相当する。
【0146】図8は、直列減算器の構成を示す回路図で
ある。ここでは、Aの接続部とBの接続部に現れる2つ
のビットの流れの差を出力するための直列減算器が例示
されている。この直列減算器においては、出力側の接続
部Dにおいて、ビットの流れの差が出力される。図7に
おいては、最下位のビットが最初に入力される。さら
に、mビット長のオペランドに対する出力の流れは、m
ビット長になる。m回の実効的なクロック・サイクルの
最後の部分では、BIの出力は、数のビット列中のm+
1番目のビットに相当する。同様に、このBIの出力
は、ボローを表示するためのボロー表示手段として機能
する。
【0147】図9は、Hパラメータを計算するためのア
ーキテクチュアを示すブロック図である。ここでは、n
ビット長のモジュールNに対しHパラメータを計算する
ためのハードウェア構成が例示されている。このような
動作モードの期間では、nビット長のモジュールに対
し、Nのレジスタがn+1回だけ回転動作を遂行する。
この回転動作は、Sのレジスタの回転動作に同期した状
態で行われる。この場合、Sのレジスタは、減算器1を
介し、最下位のビットの遅延と一緒に回転動作を遂行す
る{最下位のビット値0は、最初のクロック・サイクル
においてマルチプレクサ(M2 1;1)に挿入され
る}。ボロー検出器は、回転動作が完了するような最後
のタイミングで、次回の丸めにおいてSの流れからNが
引かれるか否かを認識する。さらに、ボロー検出器は、
次回の丸めに応じて前回の減算マルチプレクサを切り替
える。
【0148】前述のように、図1は、本発明の方法を遂
行するための装置をブロック図の形で表したものであ
る。図1の装置における制御部は、下記の構成要素を備
える。 (1) 完備した形のCPU(中央処理装置) (2) カウンタ (3) 状態マシン さらに、CPUは、不揮発性メモリおよび揮発性メモリ
を有する。これらの不揮発性メモリおよび揮発性メモリ
の幾つかは、乗算処理過程に使用され得る。さらにま
た、上記CPUは、回路内のモジュールの計算機能ブロ
ックを制御する。
【0149】さらに詳しくいえば、上記CPUは、下記
の機能を有する。 (1) ホストと交信すること (2) チップにデータをロードし、かつ、チップからデー
タを取り出すこと (3) 回路に対し一連の数学的動作を遂行するように指示
すること (4) 他の暗号化システムおよび非暗号化システムに応答
してデータ処理動作を遂行すること カウンタは、実際の状態マシンに対するアドレスを生成
する。
【0150】状態マシンは、アドレスを復号化し、多重
化部(MULT部)に対する複数種の制御信号を生成す
る。これらの制御信号は、多重化部に対し、ρ(A・
B)N変換の計算を実行するために必要とされる適切な
動作手順を遂行するように指示する(ここで、AはBに
等しい)。図3は、本発明の物理的な形態(多重化部)
を実施するためのハードウェアの装置をブロック図の形
で表したものである。さらに、図3は、本発明に係る特
許により保護されるべきアーキテクチュアの幾つかの概
念に焦点を絞る際の補助手段となるように意図されてい
る。図3のブロックは、同時に、モントゴメリのモジュ
ラ・乗算にて既述したような式(1) 〜(5) により規定さ
れた手順を遂行する。さらに、図3のブロックは、同期
クロックを変えることなく、かつ、限定された合同の関
係を有するSおよびBの変換を行うことなく上記の手順
を遂行する。このセクションにおいて、我々は、定数
(Nの関数)J0 およびHが前もって計算されることを
仮定している。 図3の回路は、ρ(A・B)Nを遂行
する。この回路の機能を利用することにより、この回路
は、次の計算を行うために使用され得る。
【0151】(1) B・AmodN (2) B2 modN ただし、いかなる場合でも、BはNよりも小さくなけれ
ばならない。ここで、C=B・AmodNを遂行する手
順を詳細に説明する。 (1) まず、プロセッサが、オペランドBをBのレジスタ
に前もってロードする。同様に、プロセッサは、オペラ
ンドNをNのレジスタに前もってロードする。
【0152】(2) 多重化部内の回路が次回のSの値を計
算し始める度に、回路は、次回のAi を前もってロード
することを(フラグを立てることにより)CPUに知ら
せる。S(m)回の繰り返し動作の後に、Bに対し限定
された合同の関係を有する数がBのレジスタに残る。 (3) 多重化部が、F=ρ(B・H)Nを計算する。ここ
で、プロセッサがHiのキャラクタの処理手順を前もっ
てロードする場合を除けば、Hは、上記のステップ(1)
および(2) に記載された手順において、前もって計算さ
れた定数である(プロセッサがAi のキャラクタを前も
ってロードする場合も同じことがいえる)。
【0153】また一方で、C=B2 modNを遂行する
手順を詳細に説明する。 (1) まず、Bのレジスタが、Bに対し限定された合同の
関係を有することがわかっている数を保持していると仮
定する。さらに、Nのレジスタが、モジュールNを保持
していると仮定する(2乗処理においては、一般にいえ
ることである)。ここで、多重化部は、B0 とB0 の最
下位のキャラクタでもってAi のレジスタを予めロード
しておくことにより、2乗処理を進めることができる。
【0154】(2) B=ρ(B・B)Nの計算処理は、上
記の乗算動作における第2のステップ(ステップ(2) )
と同様の処理過程で進行する。ただし、Bのレジスタが
回転動作を行っている場合に、Bi のキャラクタの連続
するローディング動作が、Bのレジスタから直列式かつ
オンザフライ方式になされるときは、この限りではな
い。
【0155】(3) 必要な場合には、上記の乗算動作にお
ける第3のステップ(ステップ(3))と同様のρ(B・
H)の計算を行う。当業者にとっては明らかなことなの
で、発明者は、直列/並列形乗算器および一般の構成部
品が本発明そのものの一部を構成することは、敢えて主
張しない。今後の説明は、一般に普及している標準の論
理セルを使用していることを明確にするためになされる
ものである。ただし、論理セルの幾つかは、それほど度
々一般に使用されていないかもしれない。ここで図示し
たゲート構成は、本発明の証明のために例示しているに
すぎない。熟練された技術者は、これらの論理セルを最
適化するであろう。
【0156】オペランドA、BおよびNは、いずれもn
ビット長であり、kビット長のキャラクタからなるm個
のグループにより構成される。それゆえに、n=k・m
が成り立つ。k=32のハードウェア装置においては、
mは、8ビットまたは16ビットの2進数のビット長に
なる。乗算器1および乗算器2 これらの乗算器(ML)は、符号のない乗算動作に対し
ブースの乗算アルゴリズムを実行する。この場合、並列
のオペランドは、kセル(ビット)長になっており、直
列のロードされるオペランドは、任意の要望されるビッ
ト長になっている。
【0157】各々の直列/並列乗算器は、k−1のMP
Lセルからなる(図5参照)。MSビットに相当する最
上位のセルは、ANDゲートのみから構成される。各々
のMPLセルは、Yの直列の入力ビットと、XIの並列
の入力ビットとの乗算動作を行う。さらに、この乗算動
作により、前段のMPLユニットの直列出力と、それ自
身の前回のサイクルのキャリー出力ビットが生成され
る。上記のMPLセルは、これらの出力結果を合計す
る。
【0158】図5からわかるように、各々のMPLセル
は、2ビットの乗算加算器である。MPLセルのブロッ
クは、XIの入力ビットと、Yの直列の入力ビットとの
乗算動作を行う。さらに、このブロックは、DI(デー
タ入力)からの乗算結果と、前回のサイクルからのCI
(キャリー入力)との加算処理を行う。最終の結果とし
て、DO(データ出力)と、次のサイクルに対するCO
(キャリー出力)が得られる。このキャリー出力CO
は、Dフリップフロップに記憶される。データ出力DO
は、下記の式(37)により表される。
【0159】
【数37】
【0160】このようにして記憶されたキャリー出力C
Oは、次のサイクルに対するキャリー入力CIになる。
このキャリー出力COは、ブーリアン(Boolean )の和
により、下記の(38)により表される。加算器1および加算器2 ここで使用される各々の加算器(Ad)は、Dフリップ
フロップからなる単純な1ビットの全加算器である。こ
の加算器は、次のクロック・サイクルで出力されるキャ
リービットを記憶するために使用される(図7参照)。
【0161】図7に示すように、2つの入力A、Bは、
前回のクロック・サイクルからのキャリー入力CIと一
緒に加算される。この結果、モジュロ2の和が生成され
る。この和は、出力信号Sを取り出すために、Dフリッ
プフロップに記憶される。加算器がリセットされたとき
は、キャリービットは0になる。減算器1、減算器2および減算器3 図8に示すように、減算器(Sub)の各ブロックは、
前段のボローを記憶するためのDフリップフロップから
なる全減算器である。このブロックは、前述の加算器の
ブロックとほぼ同じ構成になっている。ただし、減算器
においては、Aの流れからBの流れを直列に引く点が加
算器と異なる。
【0162】ディレイ素子1、ディレイ素子2およびデ
ィレイ素子3 これらのディレイ素子(Delay)は、k1ビットの
連結された状態の記憶素子から構成される。これらのデ
ィレイ素子は、数学的処理において各種のオペランドの
同期をとるために使用される。これらの同期動作は、回
路を説明すれば明らかになるであろう。
【0163】i 、J0 、およびY0 これらのブロックは、kビット長の直列入力/並列出力
形シフトレジスタである。この場合、kビットの入力ビ
ットは、直列に入力される。kビットの実効的なクロッ
ク・サイク期間の後に、これらのkビットは、並列形式
で出力側に現れる。
【0164】図2においては、細い線が直列の1ビット
の導体線を示し、太い線が並列のkビットの導体線を示
している。M4 1;x、M3 1;x、およびM2 1;x これらのブロックは、1ビット出力のマルチプレクサで
ある。M4 1;xは、4つの入力から1つの出力を取
り出すものである。M3 1;xは、3つの入力から1
つの出力を取り出すものである。M2 1;xは、2つ
の入力から1つの出力を取り出すものである。xは、特
定の構成部品に対する明瞭なインデックスを示してい
る。B(0:k−1)、B(k:n1−1)、B(n1:n
2)、S(0:n1−1)、S(n1:n2)、N
(0:k−1)、B(k:n1−1)、およびB(n
1:n2) これらのブロックは、シフトレジスタである。比較的ビ
ット長の長いレジスタのビット列の大きさおよび位置
が、括弧( )内の数字によって示されている。例え
ば、X(s:t)は、t−s+1ビット長のシフトレジ
スタである。ここで、sは、レジスタX(s:t)の最
初のビットのインデックスであり、tは、レジスタX
(s:t)の最後のビットのインデックスである。例え
ば、B(0:511)は、次のような3つの比較的短い
カスケード接続形のレジスタから構成される。すなわ
ち、B(0:31)、B(32:255)、およびB
(256:511)から構成される。
【0165】n1は、一般に、n/2(例えば、25
6)に等しい。n1は、kの倍数でなければならない。
n2は、n−1に等しい。kは機器のキャラクタの長
さ、すなわち、直列/並列乗算器の大きさである。した
がって、最初の処理過程においては、次の値が予測され
る。
【0166】n1=256、n2=511、n=51
2、およびk=32ラッチ1およびラッチ2 これらの2つのラッチは、kビットのレジスタである。
これらのラッチは、乗算器内の並列データを保持するた
めに使用される。このようなラッチの動作により、乗算
処理において単一のクロックを用いた並列変換が可能に
なる。
【0167】多重化部(MULT部)の動作…ρ領域内
での乗算およびべき乗 説明を簡単にするために、我々は、レジスタ内のデータ
が実際に移動するクロック・サイクルのみを指定するこ
ととする。すなわち、我々は、このようにデータが移動
するサイクルを実効的なクロック・サイクルと定義す
る。ρ(A・B)Nの乗算 第1段階:初期ローディング この段階では、DIを介して下記のレジスタがロードさ
れる。
【0168】(1) J0 のレジスタにJ0 をロード(CP
Uにより前もって計算される) (2) BのレジスタにBをロード (3) NのレジスタにNをロード (4) A2 のレジスタにA、A0 の最初のキャラクタをロ
ード 同時に、ステップ(2) において、レジスタSに対しビッ
ト値0がロードされる。
【0169】これらの5つのレジスタに所定の値をロー
ドした後に、符号のな2つの直列/並列乗算器ML1お
よびML2と、直列加算器Ad1およびAd2と、直列
減算器Sub1、Sub2およびSub3とがリセット
される。第2段階:B・A0 の繰り返し動作の実行 レジスタAi にロードされたデータA0 は、ラッチ1に
転送される。レジスタBは、周期的に右方向へのシフト
動作を行う。繰り返し動作の始まりにおいては、ボロー
検出器2の制御信号はビット値0になっている。それゆ
えに、Bの内容は、Sub1を通過しても変化しないま
までいる。さらに、Bの内容は、ML1においてA0
より乗算される。レジスタBの出力は、変化しない状態
で、その入力される。
【0170】このような乗算の結果は、Ad1におい
て、レジスタSの内容に直列に加算される。最初の繰り
返し動作のときは、レジスタSの内容はすべて0であ
る。この動作により、前述のようにXが生成される。上
記の処理過程が進行している間に、CPUは、Aの次の
キャラクタであるA1 をラッチ1に予めロードしてお
く。
【0171】さらに、J0 のレジスタからラッチ1にJ
0 がロードされる。XがML2に直列に入力され、J0
により乗算される。実効的なkクロック・サイクルが経
過した後に、レジスタY0 の内容は、積X0 ・J0 の最
下位のkビットになる。さらに、最初の実効的なkクロ
ック・サイクルが経過した後に、ML2はリセットされ
る。ここで、直列入力形のマルチプレクサ M3 1;
4は、Xの流れをNの流れに切り替える。レジスタY0
内のデータは、J0 に取って代わり、ラッチ2に並列に
ロードされる。さらに、ラッチ2の出力は、Y0 ・Nの
流れに切り替えられる。次のn+kクロック・サイクル
期間においては、ML2からの直列の出力結果は、Y0
・Nになる。実効的なkクロック・サイクル期間だけ遅
延されたXは、今度は、Ad2において加算処理がなさ
れ、ML2の積を生成する。この結果、Z=X+Y0
Nが得られる。ここで、Zは、最下位のkビットがすべ
て0であるような数である。
【0172】Ad2の最初のkビットはすべて0なの
で、この最初のkビットは無視される。そして、次のn
ビットが、Sのレジスタに直列に戻される。繰り返し動
作の最終的な値は、Nに等しいかまたは大きい(この場
合には、この値をNから引くことが必要である)。すな
わち、S(1)¥S(1)modNが成立する。SがN
よりも大きいか否かを検出するために、Sub3におい
ては、nビット長の(Z/2n )の流れからNが減算さ
れる。しかしながら、この場合、n回目のボロービット
のみが、ボロー保持用フリップフロップに記憶される。
【0173】もし、このボロービットのビット値が0で
あるか、または、Ad2の最終キャリービットCOのビ
ット値が1であれば、Sのレジスタの最新の値はNより
も大きい。最初の繰り返し動作の始まりにおいては、S
(1)modNに対し限定された合同の関係を有する数
がSのレジスタ内に存在する。J0 、BおよびNのレジ
スタは、最初にロードされたオリジナルな値を保持す
る。そして、データを前もって保持するためのAi のレ
ジスタはA1 を保持する。
【0174】第3段階:その後のB・Ai の繰り返し動
作の実行 Aの次のキャラクタであるA1 が、ラッチ1およびML
1の並列入力に転送される。次のB・Ai の繰り返し動
作およびそれに続く繰り返し動作の期間中、各々の繰り
返し動作の最後において、S(i)modNに対し限定
された合同の関係を有する数Sが存在する。もし、S
(i)がNよりも大きければ、Sub2においてS
(i)からNが引かれる。
【0175】各々の繰り返し動作が始まるときに、CP
Uは、Aの次のキャラクタであるA1 を、データを前も
って保持するためのAi のレジスタにロードしておく。ρ(B・B)Nの2乗動作 通常のべき乗処理の最初の動作は、2乗動作である。こ
の2乗動作は、Bのレジスタにロードされた乗数Aと、
i のレジスタにロードされた被乗数との通常の乗算と
同じような手順で行われる。ただし、この場合、ビット
数は、前述したようにkビット分だけ増加する。さらに
その後の2乗動作は、Bのレジスタ内に存在するような
限定された合同の関係を有するオペランド(乗数および
被乗数)により遂行される。
【0176】上記のρ(B・B)Nのような2乗動作が
遂行されている間、J0 、S、BおよびNの各レジスタ
は、その出力側で、前回の乗算および2乗処理により得
られた値を変えることなくそのままロードされる。しか
しながら、この場合は、繰り返し動作において、Ai
レジスタは、Bのレジスタ内に存在するkビットのキャ
ラクタから派生する新しいキャラクタをロードしなけれ
ばならない。
【0177】上記の連続的な2乗動作において、Ai
レジスタは、Bのレジスタからオンザフライ式に予めロ
ードされる。CPUが、一度、2乗処理を遂行するよう
に指示を与えると、それ以降の2乗動作は問題なく遂行
される。BのレジスタにロードされるB(i)′は、S
ub1を通って流れるBの一部分である(Bi の中で、
既にNよりも小さい部分)第1段階:B・B0 の繰り返し動作 先ず、前回の計算処理から導き出されるような、Sに対
し限定された合同の関係を有する最新の数が、Bのレジ
スタ内に存在するものとする。
【0178】レジスタB、Nの最下位のkビットは、周
期的に右方向へのシフト動作を行う。さらに、実効的な
kクロック・サイクルの後に、レジスタB、Nは、オリ
ジナルの状態に復帰する。レジスタB内の値は、適当な
Bの値か、または、次のρ領域での乗算を遂行するため
に使用されるB−Nの値である。したがって、最初の丸
めにおいて、レジスタAi は、B0 またはB−Nの最下
位のkビットでもって予めロードしなければならない。
ここで、B0 は、レジスタB内に存在する値である。
【0179】この最初のkビットの回転動作の目的はレ
ジスタAiへのプリロードの最初のkビットがSub1
を通って流れることを可能にするためである。直列にロ
ードされた直後に、AiはLatch 1にアンロードされ、
AiプリロードレジスタはBの第2の文字であるB1
ロードするために自由にされる。このおよび引き続く操
作の間、Borrow2信号がセットあるいはリセットされた
時にSub 1からの出力は正であり、常にNより小であ
る。
【0180】全ての値がレジスタにロードされると、説
明されるようにBがローテイトした時にB1 がAiレジ
スタ中にロードされる点(乗算においてCPUはAiレ
ジスタにロードすることを思い出すこと。)を除くと、
以前に説明したようにこの最初の乗算はB・A0 に対し
て実行される。第2のkビット文字B1 はBストリーム
から発生するために、この最初のB・B0 処理の間にB
1 セグメントは、次の開平演算、すなわちB・B1 繰り
返しのために直列的にAiプリロードレジスタ中にオン
ザフライ処理で切り換えられる。 第2段階:B・B1 繰り返し動作 Ai のレジスタ中にロードされた値B1 は出力ラッチLa
tch 1に転送される。次のn+2k(すなわちn+6
4)クロックサイクル中にB・B1 に対する乗算処理が
上述のように実行される。
【0181】前回と同様Borrow1およびBorrow2信号
は、BおよびSレジスタから発生する流れからNが減算
されうるか否かを決定する。もしSレジスタ中の値がN
より大であるかあるいは等しければBorrow1はセットさ
れ、減算器Sub 1においてNはSから減算される。もし
必要であればm繰り返し乗算ループ完了の間にNはSか
ら減算される。このような状況は先行する乗算あるいは
開平演算の終わりにBorrow2で検知される。
【0182】フリップフロップBorrow1およびBorrow2
はSub 3からの条件付きのボロウ出力の最終値を記憶し
ている。Borrow1は各Sの繰り返しの後にセットあるい
はリセットされる。Borrow2はBがS(m)にロードさ
れる最後のS(m)繰り返しの後にセットあるいはリセ
ットされる。この条件付きのボロウ出力はS(i)がN
より大であるか否かを示す信号である。
【0183】B・B1 処理の間、文字B2 が減算器Sub
1中に存在する場合に文字B2 はオンザフライ処理でA
iプリロードレジスタ中にロードされる。 第3段階:次のB・B1 乗算繰り返し 文字B1 が減算器Sub 1中に存在する時には文字B1
値がAiレジスタにロードされる間に残りのm−2回の
繰り返しが次のループの準備のために実行される。
【0184】限定された一致の最終結果はSおよびBレ
ジスタ中に存在する。このデータはDOを通して直列に
出力されるために、もし必要であればSub 1で修正され
るであろう。 乗算ブロックの操作−Hパラメータの演算 Hを演算するために、マシンは図9に示されるようにレ
ジスタSおよびNを使用するために再構成される。上記
で既に使用した数値例を用いて演算子の操作を説明す
る。この構成はHの演算をn+1回で実行する。各回の
実行においてSおよびNは共にローテイトされ、各ロー
テイトはnクロックである。各実行回においてNは回転
し変化せずに帰還する。i回目の実行において、Sおよ
び次の減算(Next Subtract )信号はS(i)の限定さ
れた¥一致の同等値を含んでいる。 初期条件−第1回実行 第1回目の実行の最初で、NはNレジスタ中にロードさ
れ、第1回目の試行減算が成功したことを表すボロー検
出フラグはリセットされ、Sub 1の出力フリップフロッ
プはゼロにリセットされる。第1回目の実行中、試行除
算のn番目のMSビットは“1”である。このビットは
次の減算用フリップフロップ(S中にスペースはな
い。)を推論して記憶される。次の減算は、第1回目の
実行においてS−N減算を命令する。上述のn=4ビッ
トの数値例を使用して例証する。
【0185】
【0186】
【0187】
【0188】
【図面の簡単な説明】
【図1】本発明の一実施例の装置構成を示すブロック図
である。
【図2】本発明の一実施例のモジューラ・乗算回路を示
すブロック図である。
【図3】本発明の一実施例の特殊なモジューラ・乗算回
路を示すブロック図である。
【図4】本発明の一実施例による繰り返し動作と乗算動
作との間の時間的な関係を示す図である。
【図5】直列/並列乗算器のセルの構成を示す回路図で
ある。
【図6】8ビットの直列/並列乗算器の構成を示す回路
図である。
【図7】直列加算器の構成を示す回路図である。
【図8】直列減算器の構成を示す回路図である。
【図9】Hパラメータを計算するためのアーキテクチュ
アを示すブロック図である。
【符号の説明】
10〜12…レジスタ 13〜15…マルチプレクサ 16〜18…レジスタ 27〜31…加算/減算手段 32〜34…ディレイ手段 35…ボロー検出器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 イタイ ドローア イスラエル国,ビア−シェバ,ミブツァ ナチション 76/32 (72)発明者 イザーク ハダッド イスラエル国,ビア−シェバ 84434,デ レチ ハシャロム 105/3 (72)発明者 ベンジャミン アラジ イスラエル国,オマー 84965,シガロン ストリート 38

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】 大きな数に対しモジュラ・乗算およびモ
    ジュラ・べき乗を遂行するための超小形電子系装置であ
    って、 該超小形電子系装置は、適切なクロック手段および制御
    手段を有する標準のマイクロプロセッサに対するコンパ
    クトな同期式の電子系超小形周辺機器からなり、 さらに、該超小形電子系装置は、 各々が細分化される共に、切替制御可能であり、かつ、
    前記クロック手段により制御される複数種のシフトレジ
    スタ(B、SおよびN)と、 多重化され、かつ、直列/並列形の2つのみのマルチプ
    レクサと、 ボロー検出器と、 補助的な減算器および加算器と、 ディレイ・レジスタおよび切替素子とを備えており、 前記超小形電子系装置は、モジュラ・乗算、モジュラ・
    2乗およびモジュラ・べき乗を同時処理かつ同期方式に
    より遂行するために、前記のすべての構成部品を集積化
    して形成することを特徴とする超小形電子系装置。
  2. 【請求項2】 前記超小形電子系装置が、ハードウェア
    の乗算、2乗およびべき乗に対し設計されたモントゴメ
    リの方法をもとに展開されるような新奇かつ複合形で同
    期式のハードウェア装置により実現される請求項1記載
    の装置。
  3. 【請求項3】 前記超小形電子系装置が、モントゴメリ
    の方法を展開することにより、並列動作方式に直列動作
    方式を取り入れた多数の同時処理と直列処理との複合
    形、すなわち、乗算、減算、加算、記憶形ディレイおよ
    び2k による除算を遂行する装置として機能する請求項
    1記載の装置。
  4. 【請求項4】 前記超小形電子系装置が、モントゴメリ
    の方法を展開することにより、モジュラ・乗算、モジュ
    ラ・2乗およびモジュラ・べき乗のための多数の直列処
    理を遂行し、かつ、膨大な内部バスの使用を回避する請
    求項1記載の装置。
  5. 【請求項5】 前記超小形電子系装置が、モントゴメリ
    の方法を展開することにより、モジュラ・乗算、モジュ
    ラ・2乗およびモジュラ・べき乗のための多数の直列処
    理を遂行し、 前記超小形電子系装置は、一般の1μm技術を用いたS
    MARTカード用のISO7816の標準規格により規
    定されるマイクロチップ上に形成される程度に充分コン
    パクトである請求項1記載の装置。
  6. 【請求項6】 前記超小形電子系装置が、モントゴメリ
    の方法を展開することにより、モジュラ・乗算、モジュ
    ラ・2乗およびモジュラ・べき乗のための多数の直列処
    理を遂行し、 前記超小形電子系装置は、基本のアーキテクチュアを変
    えることなく、特に、デュアルポート・アクセスのため
    のメモリを再設計することなく、かつ、ファームウェア
    の要求が少ない状態で、1つの内部バスを備えた任意の
    マイクロプロセッサにより制御することが可能である請
    求項1記載の装置。
  7. 【請求項7】 前記超小形電子系装置が、マイクロプロ
    セッサを使用してカスケード形のρ領域内での2乗およ
    び乗算の処理手順を規定し、 さらに、前記超小形電子系装置は、nビット長のシフト
    レジスタを含み、かつ、モジュラ・乗算、モジュラ・2
    乗およびモジュラ・べき乗を遂行する多重化部を備え、 該多重化部内に指数Eを記憶することが不要であるため
    に、該多重化部による制御を簡単にし、また一方で、ほ
    んのわずかな付加的なマイクロコントローラのROMコ
    ードのみを必要とする請求項1記載の装置。
  8. 【請求項8】 Bのレジスタが回転動作を行っている間
    に、オンザフライ方式により2乗の被乗数を用いてAi
    のレジスタをロードする結果として、前記Ai のレジス
    タを前記Bのレジスタにより再ロードする際に、マイク
    ロコントローラによりBおよび/またはB−Nの前回の
    計算処理の最終値が取り出されるおそれが回避され、 このために、該マイクロコントローラのRAMが節減さ
    れ、かつ、2乗の繰り返し動作の各々において少なくと
    もnクロック分の実効的なクロック・サイクルを除去す
    ることが可能になる請求項1記載の装置。
  9. 【請求項9】 Z/2k がNよりも大きいか、またはN
    に等しいかを決定し、たった1回の直列形の減算のみ行
    うような比較的小さいNオペランドを達成することによ
    り、モントゴメリの方法による簡単な装置から、2つの
    記憶用レジスタおよび独立の直列形の減算処理が除去さ
    れると共に、Z/2k −Nに関する単一の直列形の検出
    を行うことが可能になる請求項1記載の装置。
  10. 【請求項10】 3つの同時乗算処理を遂行する際に2
    つの直列/並列形の乗算器のみが使用されるように、半
    並列形式で回路の同期をとり、 このために、シリコンを用いた装置において全シリコン
    領域に対し直列/並列形の乗算器の占める面積の割合が
    40%に抑えられ、 3つの直列/並列形の乗算器の代わりに2つの乗算器の
    みを使用することにより、シリコン領域内の直列/並列
    形の乗算器のセルを二重化し、 該二重化構造の乗算器のセルを動作させることにより、
    512ビットの乗算処理に必要な時間を従来の45%に
    節減することが可能になる請求項1記載の装置。
  11. 【請求項11】 kビットのシフトレジスタからなる1
    つのディジタルのディレイ素子を使用してXの直列形の
    加算と乗算器(ML1)の直列結果との同期をとり、直
    列/並列形の乗算器の積または繰り返し処理が二重に記
    憶されることを防止する請求項1記載の装置。
  12. 【請求項12】 各々がkビットのシフトレジスタから
    なる2つのディジタルのディレイ素子を使用して3つの
    直列形の乗算を遂行し、該乗算は、Nを1つの因子とし
    たときにB・Ai 、X・J0 および YO ・Nのように
    表される請求項1記載の装置。
  13. 【請求項13】 処理の流れの中で2つの独立した乗算
    動作、すなわち、X・J0 および YO ・Nを遂行する
    ことができるように、1つのディジタルのディレイ素子
    を使用して直列/並列形の乗算器(ML2)の乗算動作
    の同期をとる請求項1記載の装置。
  14. 【請求項14】 前記シフトレジスタ(B、Sおよび
    N)が、nビット長またはn/2ビット長で構成され、
    n/2の長さのモジュールに対するべき乗が、nビット
    長のべき乗に対し必要であろうと思われる実効的なクロ
    ック・サイクル期間の1/8より幾分少ない時間で遂行
    される請求項1記載の装置。
  15. 【請求項15】 オリジナルの検索因子Tで処理がなさ
    れる場合、全RSA記号のべき乗処理におけるρ領域内
    での乗算動作の回数が、半分近くに減少する請求項1記
    載の装置。
  16. 【請求項16】 必要に応じて前もって計算することを
    仮定した場合、オンザフライ方式によりAのレジスタを
    ロードし、かつ、オンザフライ方式によりSのレジスタ
    の内容の大きさを予測し、さらに、オンザフライ方式に
    より一部のオペランドの同期をとることにより、nビッ
    トの数の乗算処理ρ(A・B)Nが、実効的なm(n+
    2k)クロック・サイクルで完全に遂行される請求項1
    記載の装置。
  17. 【請求項17】 小規模のボロー検出回路が付加され、
    かつ、制御メカニズムに簡単な付加物が付加されている
    ようなモントゴメリの乗算処理に対し使用されるものと
    同じ機器の同じレジスタを用い、第2のモ−ドにおいて
    Hパラメータの計算を行う請求項1記載の装置。
  18. 【請求項18】 ρ領域内での乗算またはべき乗が公知
    のクロック・サイクルの処理で遂行されるように、すべ
    ての副処理過程および処理過程が、予め定められたクロ
    ック・サイクル数でそれぞれ実行され、 このために、内部の条件設定用ブランチを使用すること
    なく、カスケード形かつ自励式のカウント・メカニズム
    からなる簡単化された制御が可能になる請求項1記載の
    装置。
  19. 【請求項19】 モジュラ・乗算を遂行するための方法
    であって、被乗数A、乗数BおよびモジュロNの各々
    が、kビット長のmキャラクタから構成され、乗数Bは
    モジュロNよりも大きくない値であり、前記方法は、下
    記のステップを有しており、 第1のステップで、Hパラメータと、他のパラメータの
    少なくとも最下位のキャラクタJ0 とを前もって計算
    し、かつ、該キャラクタJ0 をkビットのレジスタにロ
    ードし、 第2のステップで、前記乗数BおよびモジュロNを、そ
    れぞれ対応するnビット長のレジスタにロードし、ここ
    で、n=m・kのように表され、 第3のステップで、nビット長のレジスタSのビット値
    をすべて0にし、第4のステップで、i番目の繰り返し
    動作をm回遂行し、ここで、iは0からm−1までの数
    であり、さらに、i番目の繰り返し動作の各々は、以下
    の動作を含み、 (a)前記被乗数Aのi番目のキャラクタAi を、Ai
    のレジスタ手段から、レジスタおよびラッチ手段から選
    定された記憶手段へ転送し、 (b)X=S(i−1)+A(i−1)*Bにより表さ
    れるXの値を生成し、ここで、S(i−1)はSの更新
    された値であり、Sの更新は、次のように定義され、 乗算手段に対し、Bのレジスタを周期的に右方向へシ
    フトし、 直列形式でBをAi により乗算し、 前記モジュロNを周期的に右方向へシフトし、 S(i−1)がNよりも大きくない場合、(i−1)
    番目の繰り返し動作の後にSのレジスタに記憶される値
    をS(i−1)の更新された値として決定し、S(i−
    1)がNよりも大きい場合、直列形式でS(i−1)か
    らNを引くことにより得られる値をS(i−1)の更新
    された値として決定し、さらに、この結果として得られ
    るS(i−1)の更新された値を設定し、 Sのレジスタを周期的に右方向へシフトし、さらに、
    各ビット毎に、乗算A(i−1)*BをS(i−1)の
    更新された値に加算し、 (c)X(X0 )の最下位のキャラクタをJ0 により乗
    算し、NおよびXがkクロック・サイクルだけ遅延され
    ている間に、X0 *J0 mod2k の値をY0のレジス
    タ手段に入れ、 (d)Z=X+Y0 *NのZの値を計算し、この計算
    は、次のように行われ、 Nのレジスタに対し遅延かつ右方向へのシフトがなさ
    れた状態でY0 をNにより乗算し、同時に、この乗算結
    果に対し、前述の周期的な右方向へのシフトがなされ、 XをY0 *Nの値に加算し、 (e)Zの最下位のキャラクタを無視し、残りのキャラ
    クタをSのレジスタに入れ、このときに、最後の繰り返
    し動作以外は、Z/2k を入れることになり、 (f)前述と同様の方法によりS(i−1)の更新され
    た値を決定するために、各ビット毎にZ/2k とNとを
    比較し、 (g)前記被乗数Aのi番目のキャラクタAi を、前記
    の動作期間において、Aのレジスタ手段にロードし、 第5のステップで、最後(m回目)の繰り返し動作にお
    いては、Z/2k の最下位のキャラクタを無視し、残り
    のキャラクタを、C¥ρ(A*B)NとしてBのレジス
    タに入れ、 第6のステップで、前記第3および第4のステップを繰
    り返し、ここで、CがNよりも大きい場合には、Cまた
    はC−NがBにとって代わり、さらに、HがAにとって
    代わることによってP=ρ(C*H)Nを計算し、 第7のステップで、最後の繰り返し動作により得られる
    Pの値を、A*BmodNと仮定することを特徴とする
    方法。
  20. 【請求項20】 nが、256と512との間の数から
    選定されるか、または、kの倍数の増分から選定される
    請求項19記載の方法。
  21. 【請求項21】 前記被乗数Aと前記乗数Bとが同じ数
    である場合に、モジュラ・2乗およびモジュラ・乗算を
    遂行する請求項19記載の方法。
  22. 【請求項22】 D=AE modNにより表されるモジ
    ュラ・乗算およびモジュラ・べき乗を遂行するための方
    法であって、該方法は、複数の乗算処理および2乗処理
    を含む請求項19記載の方法。
  23. 【請求項23】 1.モジュラスをレジスタNに格納す
    る工程、 2.レジスタSを0にセットする工程、 3.べき乗化されるべきベースAをレジスタBに格納す
    る工程、 4.べき指数Eをコンピュ−タ−のレジスタに格納する
    工程、 5.該べき指数Eを左にシフトさせる工程、 6.第1番目の1ビットに先行するそれらの0ビットを
    無視すると共に、該べき指数Eと第7及び8の操作を実
    行する為のビットに続く全てに対して、第1番目の1ビ
    ットを無視する工程、 7.該ビットのそれぞれに付いて、0か1かに関係な
    く、上記で定義された乗算方法により該レジスタBの内
    容を二乗すると同時に、該ベースの連続する特性値が該
    レジスタBからレジスタAに格納される工程、 8.若し、べき指数Eに関する現在のビットが、1であ
    るか、或いは1に過ぎない場合に、工程7の操作終了後
    該レジスタBの内容を該ベースAで乗算する工程、及び 9.べき指数Eの全てのビットに付いて、工程6〜8の
    操作が実行された後に、D¥=AE modNとしての最
    後の操作に付いての結果を該レジスタBに格納する工程
    とから構成されている請求項22に記載の方法。
  24. 【請求項24】 1.モジュラスをレジスタNに格納す
    る工程、 2.レジスタSを0にセットする工程、 3.べき乗化されるべきベースAをレジスタBに格納す
    る工程、 4.べき指数Eをコンピュ−タ−のレジスタに格納する
    と共に、以下に定義する事前演算パラメータTをコンピ
    ュ−タ−CPUに格納する工程、記載の方法。 5.該べき指数Eを左にシフトさせる工程、 6.第1番目の1ビットに先行するそれらの0ビットを
    無視すると共に、該べき指数Eと第7及び8の操作を実
    行する為のビットに続く全てに対して、第1番目の1ビ
    ットを無視する工程、 7.該ビットのそれぞれに付いて、0か1かに関係な
    く、請求項1で定義された乗算方法に関して工程4及び
    5を実行すると同時に、被乗数と乗数とがベースAであ
    り、且つ該ベースの連続する特性値が該レジスタBから
    レジスタAに格納される工程、 8.若し、べき指数Eに関する現在のビットが、1であ
    るか、或いは1に過ぎない場合に、工程7の操作終了
    後、請求項1で定義された乗算方法に関して工程4及び
    5を実行し、その際、該被乗数がレジスタBの内容であ
    り、且つ該乗数がベースAである工程、及び 9.べき指数Eの全てのビットに付いて、工程7〜8の
    操作が実行された後に、レジスタBの内容を前記パラメ
    ータで付加的に乗算し、TD=AE modNとしての最
    後の操作に付いての結果を該レジスタBに格納する工程
    とから構成されている事を特徴とする請求項19による
    繰り返し操作を実行することにより、モジュラ・べき乗
    D¥=AE modNを実行する方法。
  25. 【請求項25】 コンピュ−タ−CPUと乗算回路を含
    む制御手段から構成されている請求項19記載の方法に
    より、モジュラ・乗算を実行する装置であって、該乗算
    回路は、乗数としてのn−ビットシフトレジスタB、モ
    ジュラスとしてのn−ビットシフトレジスタN、本発明
    に於いて定義されている値Sとしてのn−ビットシフト
    レジスタN、被乗数としてのk−ビットシフトレジスタ
    ーAi、本発明に於いて定義されている値J0及びY0
    としてのk−ビットレジスタ手段、該レジスタBの内容
    と該レジスタAiの内容とを掛け合わせる乗算手段、付
    加的なn−ビット乗算器手段及び加算、減算、多重化及
    び遅延手段とを含んでいる事を特徴とする装置。
  26. 【請求項26】 該n−ビットレジスタとその他の構成
    部分との間の接続、及びラッチ回路以外の構成部分間の
    接続は1ビット接続である事を特徴とする請求項25記
    載の装置。
  27. 【請求項27】 1.べき指数Eをコンピュ−タ−の記
    憶手段に格納する工程、 2.モジュラスを前記レジスタNに格納する工程、 3.前記レジスタSを0に設定する工程、 4.前記した特許出願番号104753に記載された方
    法に従って、 A*=ρ(AH)N の乗算操作を実行する工程、 (此処で、Aは、べき乗化されるべきオペランドであり
    Hは、前記で定義した事前演算パラメータである。) 5.該A*を該ベースレジスタBに格納する工程、 6.該ベースレジスタBの内容に対して二乗演算操作を
    実行する工程、 7.該べき指数Eを左にシフトさせる工程、 8.第1番目の1ビットに先行するそれらの0ビットを
    無視すると共に、該べき指数Eと第9及び10の操作を
    実行する為のビットに続く全てに対して、第1番目の1
    ビットを無視する工程、 9.該ビットEのそれぞれに付いて、0か1かに関係な
    く、上記で定義された二乗方法による工程4及び5の操
    作を実行する工程であって、該被乗数と該乗数とが共に
    該レジスタBから派生されるものであり、且つ該モント
    ゴメリー乗算器に於ける連続する特性値が該レジスタB
    からレジスタAiに格納される工程、 10.若し、べき指数Eに関する現在のビットが、1で
    あるか、或いは1に過ぎない場合に、工程9の操作終了
    後、前記で定義された二乗方法に関して工程4及び5を
    実行し、その際、該被乗数がレジスタBの内容であり、
    且つ該乗数がベースA*である工程、及び 11.べき指数Eの全てのビットに付いて、工程8〜1
    0の操作が実行された後に、レジスタBの内容を前記オ
    リジナルベースAで付加的に乗算し、D¥=AEmod
    Nとしての最後の操作に付いての結果を該レジスタBに
    格納する工程とから構成されている事を特徴とするモジ
    ュラ・べき乗D=AE modNを実行する方法。
  28. 【請求項28】 平均有効長がn/2ビットである2つ
    の数値に付いて従来の乗算を実行する方法で有って、該
    乗算方法は、該請求項19に於いて定義されている乗算
    方法により該数値に対してモジュラ・乗算処理を実行す
    るもので有って、該モジュラ、N、は全てが“1’s”
    (fffffff......fff) で構成されたn−ビット数で、J
    0から1に対応するものであり、被乗数をレジスタBに
    格納し且つ請求項1に於いて定義されている乗算方法に
    従ってAを取り扱うものであり、Nは、全て1によりプ
    リローディングレジスタNの手段によるか、或いは一連
    の“ハード”1を出力する為のNを出力するマルチプレ
    クサーをセットすることにより、該Nは全て1と成りう
    るものである事を特徴とする方法。
JP32600893A 1992-11-30 1993-11-30 モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法 Expired - Lifetime JP3636740B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
IL103921 1992-11-30
IL10392192 1992-11-30
IL104753 1993-02-16
IL10475393 1993-02-16
IL106923 1993-09-06
IL10692393A IL106923A (en) 1993-09-06 1993-09-06 Device for performing modular multiplication

Publications (2)

Publication Number Publication Date
JPH07253949A true JPH07253949A (ja) 1995-10-03
JP3636740B2 JP3636740B2 (ja) 2005-04-06

Family

ID=27271582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32600893A Expired - Lifetime JP3636740B2 (ja) 1992-11-30 1993-11-30 モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法

Country Status (5)

Country Link
US (2) US5513133A (ja)
EP (1) EP0601907B1 (ja)
JP (1) JP3636740B2 (ja)
AT (1) ATE199189T1 (ja)
DE (1) DE69329929T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000515999A (ja) * 1996-10-31 2000-11-28 アトメル・リサーチ モジュラ乗算を行なうためのコプロセッサ
JP2002515614A (ja) * 1998-05-08 2002-05-28 ギーゼッケ ウント デフリエント ゲーエムベーハー ソフトウエアの秘密配布方法
JP2004501396A (ja) * 2000-05-15 2004-01-15 エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド 整数の計算フィールド範囲の拡張
US7480691B2 (en) 2003-02-24 2009-01-20 Fujitsu Limited Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
JP2009230153A (ja) * 1997-05-04 2009-10-08 Sandisk Il Ltd モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990024971A (ko) * 1997-09-09 1999-04-06 정선종 모듈러 승산장치
US5666419A (en) * 1993-11-30 1997-09-09 Canon Kabushiki Kaisha Encryption device and communication apparatus using same
FR2724741B1 (fr) * 1994-09-21 1996-12-20 Sgs Thomson Microelectronics Circuit electronique de calcul modulaire dans un corps fini
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
FR2726667B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
FR2726666B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery
FR2741973B1 (fr) * 1995-12-04 1998-01-02 Sgs Thomson Microelectronics Procede de production d'un parametre jo associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2743646B1 (fr) * 1996-01-12 1998-03-06 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere
FR2743645B1 (fr) * 1996-01-15 1998-02-27 Sgs Thomson Microelectronics Dispositif ameliorant la vitesse de traitement d'un coprocesseur d'arithmetique modulaire
FR2743908B1 (fr) * 1996-01-18 1998-02-27 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2743907B1 (fr) 1996-01-18 1998-02-27 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
IL117085A (en) 1996-02-08 2005-07-25 Milsys Ltd Secure computer system
FR2745646B1 (fr) * 1996-03-01 1998-05-07 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement
FR2745647B3 (fr) * 1996-03-01 1998-05-29 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement
US6317769B1 (en) * 1996-09-18 2001-11-13 International Business Machines Corporation Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value
US5928315A (en) * 1996-09-18 1999-07-27 International Business Machines Corporation Apparatus and method for calculating Bc (mod n)
GB2318892B (en) * 1996-10-31 2001-07-11 Motorola Ltd Co-processor for performing modular multiplication
FR2758195B1 (fr) * 1997-01-09 1999-02-26 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele
US6748410B1 (en) 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
US6064740A (en) * 1997-11-12 2000-05-16 Curiger; Andreas Method and apparatus for masking modulo exponentiation calculations in an integrated circuit
KR100267009B1 (ko) * 1997-11-18 2000-09-15 윤종용 고속 암호화 처리를 위한 어레이 구조를 가지는 모듈러 곱셈장치
FR2773231B1 (fr) * 1997-12-31 2000-02-25 Sgs Thomson Microelectronics Procede de production ameliore d'un parametre jo associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery
US6085210A (en) * 1998-01-22 2000-07-04 Philips Semiconductor, Inc. High-speed modular exponentiator and multiplier
US5939693A (en) * 1998-02-02 1999-08-17 Motorola Inc. Polynomial calculator device, and method therefor
DE69828150T2 (de) * 1998-03-30 2005-12-15 Rainbow Technologies Inc., Irvine Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät
US6240436B1 (en) * 1998-03-30 2001-05-29 Rainbow Technologies, Inc. High speed montgomery value calculation
US6044390A (en) * 1998-04-16 2000-03-28 V L S I Technology, Inc. Recursive lookahead-based 2n -bit serial multipliers over Galois Field GF (2m)
KR100304693B1 (ko) * 1998-07-22 2001-09-29 윤종용 모듈러연산장치및모듈러연산기능을갖는ic카드
US6182104B1 (en) * 1998-07-22 2001-01-30 Motorola, Inc. Circuit and method of modulo multiplication
US7277540B1 (en) * 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
FR2791156B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
FR2791155B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
US6298135B1 (en) * 1999-04-29 2001-10-02 Motorola, Inc. Method of preventing power analysis attacks on microelectronic assemblies
FR2794258B1 (fr) * 1999-05-26 2001-09-14 St Microelectronics Sa Circuit de multiplication
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
US6691143B2 (en) 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
IL140267A0 (en) 2000-12-13 2003-09-17 Milsys Ltd Dual processor trusted computing environment
US6963977B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Circuits and methods for modular exponentiation
US6763365B2 (en) * 2000-12-19 2004-07-13 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements
US6914983B2 (en) 2000-12-19 2005-07-05 International Business Machines Corporation Method for checking modular multiplication
US6963645B2 (en) 2000-12-19 2005-11-08 International Business Machines Corporation Method for implementing the chinese remainder theorem
US20020116429A1 (en) * 2000-12-19 2002-08-22 International Business Machines Corporation System and method for modular multiplication
US6978016B2 (en) * 2000-12-19 2005-12-20 International Business Machines Corporation Circuits for calculating modular multiplicative inverse
US6804696B2 (en) 2000-12-19 2004-10-12 International Business Machines Corporation Pipelining operations in a system for performing modular multiplication
FR2819070B1 (fr) * 2000-12-28 2003-03-21 St Microelectronics Sa Procede et dispositif de protection conte le piratage de circuits integres
KR20020071327A (ko) * 2001-03-06 2002-09-12 미션텔레콤 주식회사 씨알티를 이용한 하이래딕스 알에스에이 모듈로 멱승 처리기
US20020172355A1 (en) * 2001-04-04 2002-11-21 Chih-Chung Lu High-performance booth-encoded montgomery module
KR100417136B1 (ko) * 2001-04-13 2004-02-05 한국전자통신연구원 다항식 기저에서 유한체 승산 장치 및 그 방법
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
JP2002358010A (ja) * 2001-05-31 2002-12-13 Mitsubishi Electric Corp べき乗剰余演算器
US20030072442A1 (en) * 2001-10-01 2003-04-17 Blakley George Robert Cisponentiation method, software, and device for exponentiation
DE10151129B4 (de) * 2001-10-17 2004-07-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
KR100449491B1 (ko) * 2001-12-11 2004-09-21 한국전자통신연구원 모듈러 곱셈 장치
DE60208926T2 (de) * 2001-12-14 2006-08-31 Koninklijke Philips Electronics N.V. Fliessbandkern in einem montgomery-multiplizierer
JP3999554B2 (ja) * 2002-04-19 2007-10-31 沖電気工業株式会社 乗算剰余演算方法及び演算装置
US7512230B2 (en) * 2002-04-30 2009-03-31 She Alfred C Method and apparatus of fast modular reduction
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
US7627114B2 (en) * 2002-10-02 2009-12-01 International Business Machines Corporation Efficient modular reduction and modular multiplication
KR100481586B1 (ko) * 2002-11-22 2005-04-08 한국전자통신연구원 모듈러 곱셈 장치
KR100458031B1 (ko) * 2003-03-14 2004-11-26 삼성전자주식회사 몽고메리 유형의 모듈라 곱셈 장치 및 방법
US7185039B2 (en) * 2003-05-19 2007-02-27 Lsi Logic Corporation Multiplier for modular exponentiation
FR2862454A1 (fr) * 2003-11-18 2005-05-20 Atmel Corp Methode de reduction modulaire aleatoire et equipement associe
KR100550015B1 (ko) * 2003-12-18 2006-02-08 한국전자통신연구원 GF(3^m)의 유한체 곱셈 연산에 적합한 유한체 곱셈연산 장치, 이에 적합한 mod 3 비트 곱셈기, 그리고이에 적합한 mod 3 비트열 덧셈기
US7664810B2 (en) * 2004-05-14 2010-02-16 Via Technologies, Inc. Microprocessor apparatus and method for modular exponentiation
JP4180024B2 (ja) * 2004-07-09 2008-11-12 Necエレクトロニクス株式会社 乗算剰余演算器及び情報処理装置
JP4170267B2 (ja) * 2004-07-09 2008-10-22 Necエレクトロニクス株式会社 乗算剰余演算器及び情報処理装置
US7801937B1 (en) * 2004-09-01 2010-09-21 Altera Corporation Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication
FR2885711B1 (fr) * 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
CN100435090C (zh) * 2005-08-18 2008-11-19 上海微科集成电路有限公司 可扩展高基蒙哥马利模乘算法及其电路结构
EP1939838A1 (en) * 2005-10-19 2008-07-02 Matsushita Electric Industrial Co., Ltd. Information security device, information security method, computer program, computer-readable recording medium, and integrated circuit
US7873830B2 (en) * 2006-01-13 2011-01-18 International Business Machines Corporation Methods for coordinating access to memory from at least two cryptography secure processing units
US7870395B2 (en) * 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
US7890559B2 (en) * 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
US10003341B1 (en) 2009-06-30 2018-06-19 Altera Corporation Flexible input structure for arithmetic processing block
DE102010051853A1 (de) 2010-11-18 2012-05-24 Giesecke & Devrient Gmbh Verfahren zur Langzahldivision
FR2971872B1 (fr) * 2011-02-18 2014-06-20 Bull Sas Circuit integre programmable de cryptographie
US9813232B2 (en) * 2015-03-17 2017-11-07 Cypress Semiconductor Corporation Device and method for resisting non-invasive attacks
CN109710308B (zh) * 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统
US11468797B2 (en) 2020-06-24 2022-10-11 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
US11508263B2 (en) 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4625076A (en) * 1984-03-19 1986-11-25 Nippon Telegraph & Telephone Public Corporation Signed document transmission system
US4891781A (en) * 1987-03-04 1990-01-02 Cylink Corporation Modulo arithmetic processor chip
EP0281303A3 (en) * 1987-03-04 1990-08-29 Cylink Corporation Modulo arithmetic processor chip
GB8815868D0 (en) * 1988-07-04 1988-08-10 British Aerospace Digital signal processing
US5073870A (en) * 1989-01-30 1991-12-17 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5121431A (en) * 1990-07-02 1992-06-09 Northern Telecom Limited Processor method of multiplying large numbers
US5210710A (en) * 1990-10-17 1993-05-11 Cylink Corporation Modulo arithmetic processor chip
US5101431A (en) * 1990-12-14 1992-03-31 Bell Communications Research, Inc. Systolic array for modular multiplication
IL97413A (en) * 1991-03-04 1995-06-29 Fortress U & T 2000 Ltd Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
US5321752A (en) * 1991-09-05 1994-06-14 Canon Kabushiki Kaisha Method of and apparatus for encryption and decryption of communication data
US5159632A (en) * 1991-09-17 1992-10-27 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000515999A (ja) * 1996-10-31 2000-11-28 アトメル・リサーチ モジュラ乗算を行なうためのコプロセッサ
JP2009230153A (ja) * 1997-05-04 2009-10-08 Sandisk Il Ltd モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法
JP2002515614A (ja) * 1998-05-08 2002-05-28 ギーゼッケ ウント デフリエント ゲーエムベーハー ソフトウエアの秘密配布方法
JP4708565B2 (ja) * 1998-05-08 2011-06-22 ギーゼッケ ウント デフリエント ゲーエムベーハー ソフトウエアの秘密配布方法
JP2004501396A (ja) * 2000-05-15 2004-01-15 エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド 整数の計算フィールド範囲の拡張
US7480691B2 (en) 2003-02-24 2009-01-20 Fujitsu Limited Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic

Also Published As

Publication number Publication date
EP0601907A3 (en) 1994-11-23
EP0601907A2 (en) 1994-06-15
US5513133A (en) 1996-04-30
JP3636740B2 (ja) 2005-04-06
EP0601907B1 (en) 2001-02-14
ATE199189T1 (de) 2001-02-15
DE69329929T2 (de) 2001-09-27
DE69329929D1 (de) 2001-03-22
US5742530A (en) 1998-04-21

Similar Documents

Publication Publication Date Title
JP3636740B2 (ja) モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法
US7424504B2 (en) Arithmetic processor for accomodating different field sizes
JP4955182B2 (ja) 整数の計算フィールド範囲の拡張
KR100684134B1 (ko) 몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법
JP4870932B2 (ja) 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
EP0477011B1 (en) Processor element for calculating accumulation of data, processing unit, and processor
JPH09274560A (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
US6009450A (en) Finite field inverse circuit
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
Wang et al. New VLSI architectures of RSA public-key cryptosystem
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
US7167885B2 (en) Emod a fast modulus calculation for computer systems
CN114968180A (zh) 高效蒙哥马利乘法器
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Sandoval et al. Novel algorithms and hardware architectures for montgomery multiplication over gf (p)
KR19990086179A (ko) 모듈러 연산장치 및 그 방법
Nibouche et al. New iterative algorithms and architectures of modular multiplication for cryptography
CN114968181A (zh) 蒙哥马利乘法器的快速预计算
Wu et al. A VLSI architecture of fast high-radix modular multiplication for RSA cryptosystem
Koo et al. High-speed RSA crypto-processor with radix-4 modular multiplication and Chinese remainder theorem

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040519

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040706

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: 20041207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080114

Year of fee payment: 3

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080114

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080114

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090114

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090114

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100114

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110114

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110114

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120114

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130114

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130114

Year of fee payment: 8

EXPY Cancellation because of completion of term