JP4955182B2 - 整数の計算フィールド範囲の拡張 - Google Patents
整数の計算フィールド範囲の拡張 Download PDFInfo
- Publication number
- JP4955182B2 JP4955182B2 JP2001585437A JP2001585437A JP4955182B2 JP 4955182 B2 JP4955182 B2 JP 4955182B2 JP 2001585437 A JP2001585437 A JP 2001585437A JP 2001585437 A JP2001585437 A JP 2001585437A JP 4955182 B2 JP4955182 B2 JP 4955182B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- character
- multiplier
- multiplicand
- zero
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Description
(技術分野)
本発明は暗号の共同処理用周辺装置(cryptographic co-processing peripherals)を速めるための演算装置に関するものであり、更に、楕円曲線及びRSA型の計算のために設計されたモジュラー演算公開鍵暗号コプロセッサ(modular arithmetic public key cryptographic coprocessor)における整数体の計算範囲及び直列の入力オペランド幅を拡張する多項式ベースで素数フィールド(prime number field;素体)の演算のための加速された演算装置に関するものである。
【0002】
(背景技術)
計算装置のセキュリティ強化及び機能高速化は、出願人による米国特許第5742530号明細書(以下P1と称す)、第5513133号明細書、第5448639号明細書、第5261001号明細書、第5206824号明細書、公開された国際出願第PCT/IL98/00148号(国際公開第98/50851号パンフレット)、対応する米国特許出願公開第09/05098号明細書(以下P2と称す)、オニスチャック(Onyszchuk)らの米国特許第4745568号明細書、オムラらの米国特許第45877627号明細書、及び出願人の米国特許出願公開第09/480102号明細書に記載されているが、本願はこれらの開示を参考文献として取り込んでいる。
出願人の米国特許第5206824号明細書には、多項式ベースの乗算及び平方を実行する初期の演算装置が示されているが、素数フィールドにおける演算(operation)を行うことはできず、多項式ベースの計算においてインタリーブする(interleave)ように設計されていない。
更なる解析が、パール・シー(Paar, C.),エフ・フライシュマン(F. Fleischmann),ピー・ソリア−ロドリゲス(P. Soria-Rodriguez)著、「素数ではない数(合成数)を有するガロア体における公開鍵アルゴリズムのための高速演算(Fast Arithmetic for Public-Key Algorithms in Galois Fields with Composite Exponents)」、コンピュータに関するIEEE論文集、第48巻、第10号、1999年10月(IEEE Transactions on Computers, vol. 48, No. 10, October 1999)(以下パールと称す)で、多項式ベースの演算における拡大体を利用するアプローチによりなされている。
ダブリュー・ウエズレー・ピーターソン(W. Wesley Peterson),イー・ジェー・ウェルドン・ジュニア(E. J. Weldon Jr.)著、「エラー訂正コード(Error-Correcting Codes)」、第二版、エムアイティープレス(MIT Press)、ケンブリッジ、マサチューセッツ州(Mass.)、1972年、p.174−179(以下ピーターソンと称す)、では、多項式ベースの剰余表現GF(2q)における除算実行回路を示している。
ピーターソンの回路は、乗数がまさにモジュラス(modulus;剰余)の長さである装置においてのみ利用され得る。
典型的には、それは本装置より2倍の長さがある装置を必要とし、コンパクトなインプリメンテーション(implementation;実装)には経済的ではない。
また、マルチビット文字(multibit character;マルチビットキャラクター)のY0を決定する従来装置を備えていないので、インタリーブされた(interleaved)インプレメンテーションにも使用できず、▲l▼が1より長い場合は有効でない。
【0003】
クヌース『ディー・クヌース(D.Knuth)著、「コンピュータプログラミングの技法(The art of computer programming)」、第2巻、準数値算法(Seminumerical algorithms)、アディソン・ウェズリー(Addison-Wesley)、リーディング、マサチューセッツ州、1981年、p.407』は、多項式ベースの除算において、単一の▲l▼ビット文字に通常の除算プロセスを使用する旨を暗示しているのに対し、我々は商における次の文字を予測する方法を仮定でき、本発明が論理構成(logic configuration)を利用して決定論的に商の次の文字を予測する方法を開示する。
【0004】
(発明の開示)
本発明の目的は、様々な基数での乗算器においてインタリーブされたモジュラー乗算(interleaved modular multiplication)及び簡約(reduction)を同時に実行するために同じ予測法(anticipating method)を利用して、多項式ベース(polynomial based)及び素数ベースの数値体フィールド(number field)における大数計算(large number computations)を実行するように機能するマイクロエレクトロニクス専用の算術演算装置を提供することである。
【0005】
本発明の更なる目的は、非常に大きな整数でのモジュラー及びノーマルな(自然数であって負でない整数の体)乗算、除算、加算、減算、べき算を実行するためのコンパクトなマイクロエレクトロニクス専用の算術論理演算装置に関するものである。
簡略化された多項式ベースの乗算及び平方のためにモンゴメリ法及び逆フォーマット法(reversed format method)の両方を利用するモジュラー乗算及び平方に言及する場合、スーパースカラ(superscalar)モジュラー算術コプロセッサ、SMAP、MAP、若しくはSuperMAP(商標)のような装置の特定部分が参照され、また、出願人の1998年3月31日に提出された米国特許出願公開第09/050958号明細書及び2000年1月10日に提出された米国一部継続出願公開第09/480102号明細書に存在する改良に関するものが参照される。
【0006】
本願明細書において記載される本発明の好ましい実施例は、携帯型スマートカードで、概して一般に普及している磁気帯付クレジット及びバンクカードと形状及びサイズが同一の公開鍵暗号アプリケーションのためのモジュラー計算演算子を提供する。
出願人の米国特許第5513133号、5742530号明細書の技術及び出願人の上述した出願の技術による同様のスマートカードは、コンピュータ、データベース、商取引、軍事用取引、家庭内取引におけるデータフローを調整し保全するため及びスクランブルされた有料テレビプログラムを復号する等のための重要な装置、同様の応用のための端末装置としての重要な装置へのアクセスを制御するための新世代の公開鍵暗号装置において利用される。
典型的には、これらの装置は、コンピュータ−ファクシミリ端末、ドアロック、自動販売機等にも組み込まれている。
【0007】
好ましい構成(architecture;アーキテクチャ)は、多数のマイクロコントローラ及びデジタル信号処理装置並びに減少した命令セット計算設計(reduced instruction set computational design)に集積されて動作する装置である一方で、該装置はホストの処理装置と並列に演算する。
【0008】
この実施例は、好ましくは、本質的に2〜3つの乗算装置の役割を果たすたった一つの乗算装置を利用するものであり、該乗算装置は、出願人の米国特許第5513133号明細書に記載され、米国特許出願公開第09/050958号明細書及び国際出願PCT/IL98/0048で改良された構成に、基本的には近似している。
従来のマイクロエレクトロニクス技術を利用して、本発明の装置は、スマートカード超小形電子回路上へ記憶装置と共に制御ユニットを集積化される。
【0009】
多項式ベースの体(field)におけるハードウェア実装と素数からなる体(field:フィールド)におけるハードウェア実装との間の主な差異は、多項式ベースの加算及び減算が、LSからMSへの桁上げ信号の伝搬のない単純なXOR論理演算であるということである。
従って、ハードウェア実装における隣接するセル間で相互作用がなく、減算と加算が同一の手順(procedure)となる。
著者が知っている最初の公表は、1994年にイタリアのペルージャで開催されたユーロクリプト・コンフェレンス・ランプ・セッション(Eurocrypt Conference Rump Session)でフォンダツィオーネ・ウーゴ・ボルドーニ(Fondazione Ugo Bordoni)のマルコ・ブッチ(Marco Bucci)による短い講演であるが、この時でさえ当業者であるエンジニアの間にこの構成はよく知られていた。
【0010】
P1,P2に記載された出願人の先の装置は、概して、GF(p) 体における楕円曲線暗号プロトコルを効率的に計算するために備えられたものである。
本発明においては、GF(2q) 体における使用のために、我々は、多項式体における隣接する二進数ビット間で相互作用がないので、モンゴメリ関数やモンゴメリ寄生要素(Montgomery parasite)を導入することなくスーパースカラ乗算装置で簡約(Reduction)及び乗算を同時に実行して、計算が効率的に行われることを示す。
計算機が好ましくは最上位の部分積から始めて、GF(2q)における乗算が実行される。
簡約は、MSの1をゼロに再設定するのに必要なだけモジュラスを加算することによって実行される。
これらの加算において、桁上げはないので、結果は自動的にモジュラー方式で(modularly)簡約される。
本発明において、多項式計算は同じ構成を利用して実行されるが、そこにおいて、GF(2q)ではオペランドは最初にMS文字において供給され、全ての内部桁上げ信号はゼロにされる。
GF(p)計算は好ましくはP1及びP2に記載のように実行され、そこにおいて、LS文字は最初に処理され、MS文字は最後に処理される。
【0011】
該構成は、直列乗算器が▲l▼ビットの幅広文字(▲l▼ bit wide characters)であり、各々のクロックで、▲l▼ビット文字が桁上げ保存累算器CSAから発生される(be emitted;エミットされる)という点で、潜在的により速い進行(progression;数列)を可能にするように拡張されてきた。
このことは、単一ビットの広さのバスで2Xを法とした奇数の反転(inversion;逆転)も奇数であるという点で予測プロセス(Y0)をいくらか複雑にし、被乗数(J0)の最下位ビットが常に1であった。
しかし、両方の数値体で、我々が、k文字がゼロの文字列を出力することのみが目的であることを覚えており、Y0関数をゼロ強制ベクトル(zero forcing vector;ゼロフォーシングベクトル)としてのみ見なす場合は、桁上げをなくする(制限する)と仮定すると、簡約プロセスは同一である。
【0012】
本発明は、米国特許第5513133号明細書に記載されたプロセスに関連する計算的、論理的、算術的な新規な特徴を有する従来のデジタルプロセッサの周辺機器であるデジタル装置の構成を提供しようとするものでもある。
【0013】
好ましくは、概して各々の演算で大スケールの乗算及び除算を実行する古典的な乗算/除算装置により実行されるのと同様の演算数で除算することなくモジュラーべき算を実行するために、並列プロセス及びハードウェアアーキテクチャが提供される。
本発明の好ましい実施例の特別の特徴は、より大きなスケールの予測ゼロ強制関数(anticipatory zero forcing function)の並列化(concurrency;同時進行)、数値体の拡張、及び安全な通信のためのこの種のユニットを集積化する能力である。
【0014】
本発明の好ましい実施例によって認識される利点は、直列プロセスの同期シーケンスから生じる。
これらのプロセスは、nの有効クロックサイクル(effective clock cycle)において一つの多重化されたk文字の直列/並列乗算器を用いて、同時に(並列的に)n文字のオペランドで三つの乗算演算を成し遂げるように組み合わされ、結果の左側の最後のk文字は乗算装置の出力バッファに存在する。
この手順は、モンゴメリによって記載されるように、素数からなる体(field:フィールド)で両体における三つの乗算計算と同等のものを得ることができ、GF(2q)において二つの乗算及び一つの除算プロセスと同等のものを得ることができる。
【0015】
SuperMAPへのオペランドのロード及びオペランド数値の即座の(on the fly;高速の)検出と、即座のプリローディング(preloading)及び使用されたオペランドの隣の同時の加算とを同期することにより、装置は決定論的に(in deterministic fashion)計算を実行するように機能する。
次の反復の平方シーケンスで三つの初めのk文字変数を即座にプリロードする全ての乗算及びべき算回路が好ましくは加わる。
好ましくは検出装置が備えられ、kの有効クロックサイクル待ち状態を排除して、三つのオペランドのうちの二つだけが次の反復の被乗数に選択される。
条件付き分岐(conditional branch)が、局所検出及び補正装置(local detection and compensation device)と置換されることにより、単純な制御機構での基準を備えることとなる。
ここに記載された基本的な演算は、典型的には、グレッセル(Gressel)らに付与された米国特許第5513133号明細書に記載された装置又はフランスのルーセ(Rousset)にあるエスティマイクロエレクトロニクス社(STMicroelectronics)による商品名ST19-CF58の装置を用いて、GF(p)において決定論的な時間で実行される。
【0016】
オペランドが全演算に亘って外部の揮発性記憶装置へロードされ装置内に保存されるので、本発明の装置は、ほとんどの演算について外部の揮発性記憶装置に特に依存する。
装置は、好ましくは、MAPがその大数計算を実行する間に、単純なロード及びアンロード並びに装置へのコマンドのシーケンスを実行するために、装置が追加されたCPUを利用する。
現在、スマートカードに応用されている大数は、128ビットから2048ビットまでの自然数の応用に及ぶ。
べき算処理時間は仮想的にCPUから独立しており、これによりCPUを制御する。
実際には、CPUに装置を追加する時に、設計上の変更は典型的には不必要である。
ハードウェアデバイスは自己内蔵型であって、好ましくはいかなるCPUバスにも追加される。
【0017】
一般的に、本発明は、大きな整数の演算処理にも関するものである。
これらの大数は典型的には、(ゼロ以上の)整数の自然数体(natural field:自然数フィールド)におけるものか、又は、素数のガロア体GF(p)、合成数モジュラス(composite prime modulus)、多項式ベースの数のガロア体GF(2q)におけるものである。
とりわけ、本発明の好ましい実施例は、大数のモジュラー演算及びべき算を実行することができる装置を提供しようとするものである。
このような装置は、素数フィールドにおいて次第に大きなオペランドで機能し、現存のモジュラー演算コプロセッサでは効率的に実行できず、ソフトウェア構築でも、しっかりと実行できないような公開鍵暗号認証(Public Key Cryptographic authentication)及び暗号化プロトコルの演算を実行することに適している。
好ましくは、より小さい桁である整数に関して、同じ全体的な構成が楕円曲線の実装(implementation)において利用される。
新規な乗算の逆モード法(reverse mode method;リバースモード法)を利用して、ゼロを生成することにより計算の際に寄生的な2-n因子の負担がないので、多項式演算は有利である。
【0018】
該構成は、直列単一文字のバス(serial single character bus)を広げることによって、即ちより大きな基数の使用によって可能になった標準的な小さなオペランドの演算を可能する一方で、大きなオペランド整数の演算のモジュラー実行をも可能にする。
概して、これは、計算を高速化し、SuperMAPを実行するためのシリコン領域を減少し、一般に普及しているデジタル信号プロセッサ(DSP)で互換性がある長さの装置を生成することに有効である。
【0019】
奇数の素体及び合成数体(composite field;合成体)におけるモジュラー乗算について、A及びBは、夫々被乗数及び乗数と定義され、Nはモジュラー演算におけるモジュラスと定義される。
Nは、A又はBより概して大きい。
Nは、モジュラスの値が保存される合成レジスタ(composite register;複合レジスタ)を意味する。
Nは、若干の場合において、概してAより小さい。
A,B,Nは概してn文字長さであり、その文字は概して1〜8ビットの長さである。
kは、乗算装置のサイズ(セル数)により定められる群のサイズにおける▲l▼ビットの文字の数である。
同様に、多項式ベースのGF(2q)計算において、モジュラスNは、MSビットが1である(モニック(monic)である)nビットの長さであり、A,S,Bのオペランドも適切に簡約された場合はnビットの長さである。
GF(2q)計算の結果がモニックである場合、前記結果の値からモジュラスで排他的論理和を求める(XOR)ことにより、好ましくはMSゼロを有する値へ「簡約される(be reduced)」。
好ましい実施例において、GF(2q)の最初の有効ビットが逆モードにおいて形成されるので、MAPはそのビットが1であるか否かを検知する(sense)ことができ、好ましい簡約を実行できる。
【0020】
素体において、≡、或いは、若干の場合の=は、例えば16 ≡ 2 mod 7のように、モジュラー数の合同を意味するように利用される。
16を7で割った場合、2が剰余であるので、16は7を法として(modulo 7)2と「合同である」と言う。
Y mod N ≡ X mod Nの場合、Y,Xの両方がNより大きくてもよいが、正のX,Yについては、剰余は同一である。
負の整数Yの合同がY+u・N(Nはモジュラス)であることにも留意する必要があり、Yの合同がN未満となるような場合は、uは正の結果を与える最も小さい整数である。
【0021】
GF(2q)において、加算及び減算が同一であり、通常の計算は、概して実質的な桁溢れを残さないので、合同はより単純である。
N=1101,A=1001について、左側のAのMSビットが1であるので、我々は2を法とした演算、A XOR N=1001 XOR 1101=0100を利用することにより、AからNを簡約(「減算」)しなければならない。
【0022】
円記号\は、GF(p)において特に有用な限定された意味(limited sense)における合同を意味するように用いられる。
ここに記載されるプロセスの間、値はしばしば所望の値か、若しくは所望の値にモジュラスを加えた値と等しいかのいずれかである。
例えばX \ 2 mod 7の場合である。
Xは、2又は9と等しくなり得る。
Xは、7を法として2が限定された合同(limited congruence to 2 mod 7)を有すると定義される。
円記号がB\のように上付文字として用いられる場合、0≦B\<2Nであり、別の表現をすれば、B\はB\と合同である最小の正のBと等しいか、又は最小の正のBにモジュラスNを加えたものと合同のものと等しいかのいずれかである。
本発明に特有のその他の記号は、後でまとめて説明する。
【0023】
X=A mod Nの場合、XはAをNで割った剰余として定義され、即ち、3=45 mod 7であり、GF(2q)ではより単純であり、即ち、1111 mod 1001=0110である。
【0024】
数論において、Xのモジュラー逆数(modular multiplicative inverse)はX-1と記述され、X・X-1 mod N=1によって定義される。
X=3、N=13の場合、X-1=9であり、即ち、GF(p)において3・9を13で割った剰余は1である。
【0025】
両方の数値からなる体で、我々は概して、指数関数を利用して、Aの逆数を計算する方を選択するので、例えば、A-1 mod q≡Aq-2 mod qである。
【0026】
略語MS及びLSは、デジタル用語で一般に用いられているように、ビット、文字、全オペランド値に言及する場合に夫々「最上位」及び「最下位」を意味するように用いられるが、逆モードの多項式ベースにおいて、オペランドは最初にMSデータをロードされ、最後にLSデータをロードされ、そこにおいて、データ語(deta word)のビットオーダー(bit order)は、ロード時に逆にされる(be reversed)。
【0027】
この明細書の全体に亘って、Nは値N、及び、Nを保存する送りレジスタ(shift register)の名称の両方を示す。
値上のアスタリスクの上付き文字は、その値が潜在的に不完全であるか変化する可能性があることを意味する。
Aは累乗されるべき数値であり、nはNオペランドのビット長さである。
初期状態設定の後、AがA*に「モンゴメリP体に標準化された(Montgomery P fieldnormalized)」(P1に記載したA*=2n・A)場合、A*及びNは、概してべき算における中間段階を通じて一定値である。
計算がビットの標準的な逆にされていない位置(unreversed positioning)によって実行されるGF(2q)計算において、我々はこの同じプロトコルによって結合される(be bound)。
しかし、桁上げがないので、逆フォーマットを利用して、我々の計算は最上位ゼロを生成し、それを無視し、乗算のシフト(shift;桁送り)を表さない。
【0028】
第一の反復の間、べき算の初期状態設定の後、BはA*に等しい。
Bは、最終的にべき算の所望の結果と等しくなる累算された値が存在するレジスタの名称でもある。
S又はS*は一時的な値を示し、Sは、GF(p)のSにおける数の単一のMSビット以外の全てを保存するレジスタを示す。
(このMSビットに連結されるS*は、Sと同一である。)
S(i−1)は、i番目の反復の最初でのSの値を意味する。
これらの多項式計算において、S上のモジュラー簡約を実行する必要はない。
【0029】
概して、素数フィールドにおけるX,Yのモンゴメリ乗算は、実際に(X・Y・2-n) mod Nの実行であり、nは概してモジュラスにおける文字数である。
これは
【外1】
と記述され、P体におけるMM又は乗算を意味する。
モンゴメリ数学のコンテクスト(context)において、我々は、P体及び多項式ベースの体における乗算及び平方を乗算及び平方演算と称す。
【0030】
我々は、GF(2q)におけるモンゴメリ型演算のこの革新的な拡張を、逆フォーマットのデータ順序(data order)を意味するように再定義するが、MSゼロ強制(MS zero forcing)は合同を変更させず、若しくは、厄介な寄生要素(parasitic factor)を開始させない。
従って、我々は、演算の拡張を受け入れるため及びより広い直列乗算器バスを有する構成を可能にするために、新たな記号のセットを導入する。
自然数のスーパースカラ乗算器を可能にするために、1ビットを越える直列乗算器ストリームが好ましい。
このような乗算器装置は、同時にモジュラー算術乗算及び簡約を実行することができる装置に、32ビット被乗数及び4ビット乗数を受け入れることができる。
【0031】
直列/並列のスーパースカラモジュラー乗算器の拡張における記号
文字のビット数(桁)
r:乗数(multiplier character)の基数 r=2▲l▼
n:文字におけるオペランド(乗数、被乗数、モジュラス)のサイズ。
モンゴメリ演算のGF(p) 体における計算の実証において、▲l▼は1に等しく、nはモジュラスのオペランドのビット長である。
k:文字における直並列の乗数の長さ
m:被乗数のインタリーブされたスライス(slice)(セグメント)の数で、m=n/k
Si:i番目のMM反復の部分積の結果で、0≦i≦m−1,S0=0
Si0:Zの第一のk文字の右側ゼロを無視した後の、i番目の反復結果の右側の文字
S i :i番目の結果の左側のn−k文字
Sij:Siのj番目の文字
A:m・k文字からなる並列の被乗数
Ai:Aのi番目のk文字のスライス(及び/又は文字列Ai)
Ait:Aiのt番目の文字
B:直列乗数(及び/又はBのレジスタ記憶装置)
B0:Bの最初の右側のk文字
B:Bの最後の左側の(n−k)文字
B0j:B0のj番目の文字
B j :Bのj番目の文字
N:モジュラスのオペランド。{及び/又は前記乗数を保存するレジスタ。}
N0:Nの右側のk文字。{GF(p)におけるLS文字,GF(2q)におけるMS文字}
N:Nの左側の(n−k)文字。{GF(p)におけるMS文字,GF(2q)におけるLS文字}
N0j:N0のj番目の文字
N j :Nのj番目の文字
Y0:GF(p)におけるモンゴメリ乗算及び簡約の両方に必要なゼロ強制変数。
Y0は、k文字長さである。
Y0j:Y0のj番目の文字
R:桁上げ保存アキュムレーターに存在する値の総和(未解の内部桁上げ挿入(carry ins)を含む)及び最終の直列加算器(serial summator;直列総和器)460からの桁上げビット(carry out bit)。
J00:「即座の」有限体乗算及び簡約のためのモジュラスNのゼロ強制文字関数。
▲l▼=1ではJ00は常に1に等しい。
Carryj:基数rの直並列乗算器のj番目の内部桁上げ文字
Carrya:GF(p)計算のための出力直列加算器の基数rの桁上げ
Sumj:基数rの直並列乗算器のj番目の内部の和の文字。
LS:最下位
MS:最上位
‖:連結(concatenation) 例えばA=110,B=1101の時、A‖B=1101101
右側:全てのGF(p)計算データブロックの最下位の部分と逆にされたGF(2q)フォーマットのMS部分
左側:全てのGF(p)計算データブロックの最上位の部分と逆にされたGF(2q)フォーマットのLS部分
GF(p):ガロア体。厳密に言うと、加算、減算、乗算、擬除算(pseudo−division)を許容する合成数(二つの非常に大きな素数の積)を使用する素数での有限体。
GF(2q):ガロア体で2を法とする演算を利用する有限体。
特定の記数法に適するように、桁上げの有無に関わらず整数を加算又は減算するために外部で切り換えられる演算子又は装置。
GF(p)又はGF(2q)のいずれかで乗算を実行するために切り換えられる演算子又は装置。
数値体スイッチであり、▲S▼=1の場合、スイッチはGF(p)計算で全ての桁上げの入出力を可能にするように機能し、▲S▼=0の場合、スイッチはGF(2q) 計算で全ての桁上げ入出力を不可能にするように機能する。
SuperMAP:本発明の目的である登録商標のスーパースカラモジュラー演算プロセッサ系統(Superscalar Modular Arithmetic Processor family)の構成要素の一つ。
SuperMAPの商標は、ヨーロッパにおいて登録され、米国においては係属中である。
【0032】
本発明の第一の態様によると、多項式ベースのGF(2q)及びGF(p)の両体の演算において▲○×▼乗算及び平方を実行するマイクロエレクトロニクス装置であって、直列にされる供給される基数2 ▲l▼ の乗数Bと、k文字の被乗数セグメントA i と、k文字の▲○+▼アキュムレーターとを使用する平方及び簡約において、限定された合同への簡約がモジュラスN上で被乗数Aiに乗数Bを掛け合わせてシストリックな(systolic)態様で「即座に」実行され、その結果が多くとも2n+1文字長さであり、最初に発生し無視され保存されないkのゼロ文字を含み、k文字がモジュラスと同等以上のビットを有し、前記演算が二つの段階で行われ、前記装置は、各々が少なくともnビット長さのオペランドを保持するように動作し、夫々符号Bの乗数値及び符号Nの2nより小さなモジュラスを保存するように動作する第一主メモリレジスタ手段B及び第二主メモリレジスタ手段Nと、▲○+▼アダーアキュムレーターデバイスにおける値にモジュラス値が▲○+▼加算されるような場合に、前記▲○+▼アダーアキュムレーターデバイスから発生する全ての最初のk文字がゼロにされるように、「即座に」予測するように動作するデジタル論理検知検出器(digital logic sensing detector)Y0と、ただ一つの少なくともk文字長さの▲○+▼加算器と、k文字の被乗数を受け入れるように動作する▲○+▼加算装置(▲○+▼ summation device)と、順番に被乗数値を▲○+▼アキュムレーターデバイス内に入れ替え、順番にBレジスタから乗数値を受け入れるように動作する▲○×▼乗算装置と、第一段階においてkの最初に発生するゼロ文字を出力させるように動作する乗数と同時に生成した「即座の」予測値とを有し、各々の有効マシンサイクル(effective machine cycle)で少なくとも一つの指定された被乗数が▲○+▼アキュムレーターデバイスに▲○+▼加算される、少なくともk文字の入力被乗数のためのモジュラー乗算装置と、全ゼロ文字列の値である第一被乗数、被乗数Aiである第二被乗数、モジュラスのN0セグメントである第三被乗数のうちの一つ若しくは二つの被乗数からなる、順番に▲○+▼アキュムレーションデバイス内に入れ替えられる被乗数値と、▲l▼ビットのk文字直列入力Y0乗数値を予測するアンティシペーター(anticipator;予測回路)とからなるマイクロエレクトロニクス装置が提供され、該装置は乗数値を乗算装置に順番に入力するように動作でき、前記乗数値は第一段階においてBオペランドであり、同時に、第二乗数値は最初に発生するゼロを出力させるための「即座の」予測されたk文字列であるY0からなり、該装置は更に、アキュムレーションデバイス▲○+▼からなり、該アキュムレーションデバイスは被乗数が該アキュムレーションデバイスへの▲○+▼であると同時に値を出力するように動作し、第二段階において▲○+▼アキュムレーションデバイスからの最終のモジュラー▲○×▼乗算の結果を出力するように動作する出力転送機構(output transfer mechanism)からなる。
【0033】
好ましい実施例によると、▲○+▼アキュムレーションデバイスへの▲○+▼加算は、各々の新たな直列にロードされた上位の乗数の文字(high order multiplier character)により始まる。
【0034】
好ましくは、乗数は、入力されたB文字と対応する入力されたY0文字の両方がゼロの場合は、▲○+▼アキュムレーションデバイスへの▲○+▼加算はされず、入力されたB文字が1であり、対応するY0がゼロである場合は、Ai被乗数のみが▲○+▼加算され、入力されたB文字がゼロであり、対応するY0が1である場合は、モジュラスNのみが▲○+▼加算され、入力されたB文字と対応するY0文字の両方が1である場合は、被乗数Aiと共にモジュラスNが▲○+▼加算されるように動作する。
【0035】
好ましくは、該装置は被乗数値Ai,Nを二つの指定されたプリロードバッファ(preroad buffer)にプリロードし、これらの値を第三被乗数プリロードバッファに▲○+▼加算するように動作して、各々の被乗数値を別々に▲○+▼加算する必要をなくす。
【0036】
好ましくは、乗数値は直列単一文字の形式での入力用に調整され、Y0検出装置は一回のクロックで一文字のみ予測するように動作する。
【0037】
▲○+▼アキュムレーションデバイスが2を法としてXOR加算/減算の計算を実行する好まし実施例において、加算成分及び減算成分中の全ての桁上げビットが無視されることにより、計算における桁溢れや更に限定する有益性は排除される。
【0038】
好ましくは、桁上げ入力はゼロ(▲S▼=0を意味する)まで実行不能とされ、概して、多項式ベースの乗算を実行するように動作する。
【0039】
好ましくは、該装置は桁上げ回路を除くことにより桁上げなしの算術を提供するように動作するので、▲S▼はGF(2q)において計算する回路方程式(circuit equation)中の要素に影響するゼロに等しく、▲S▼は除かれた回路を示し、▲○+▼で表される全ての加算器及び減算器は2を法とした加算/減算要素の排他的論理和を求める。
【0040】
好ましい実施例は、動作ユニットから発生した最初のk文字セグメントがゼロであって、次のY0文字を予測する際に以下の四つの数量によって調整されるように適応する。
i. Aiレジスタの右側文字にBストリームのBd文字を掛けた▲l▼ビット毎の2▲ l ▼を法とする▲○×▼乗算の結果の▲l▼ビットのSoutビット A0・▲○×▼ Bd mod 2▲ l ▼、
ii. ▲○+▼アキュムレーションデバイスから最初に発生する桁上げ文字▲S▼(CO0)、
iii. ▲○+▼アキュムレーションデバイスの右側の発生セル(emitting cell)からの次(the second)に発生する桁上げ文字からの▲l▼ビットのSout文字SO1、
iv. N0モジュラス被乗数レジスタにおける右側文字の負の逆数である▲l▼ビットのJ0値。
ここで、A0 ▲○×▼ Bd mod 2▲ l ▼、▲S▼(CO0)、SO1の値は、共に文字に▲○+▼加算される文字であり、▲l▼ビットのゼロを発する有効なY0ゼロ強制予測文字(Y0 zero-forcing anticipatory character)を出力するために「即座に」J0文字によって乗算される。
【0041】
該装置は好ましくは逆モードで実行される多項式ベースのオペランドで乗算を実行するように動作でき、右側のMS文字から左側のLS文字を乗算し、モンゴメリ型寄生関数(Montgomery type parasitic function)なしでモジュラー簡約された▲○×▼乗算を実行するように動作する。
【0042】
好ましくは、該装置は、更に直列供給されるプリロードバッファからなり、被乗数値は一以上の記憶装置から即座にプリロードバッファにプリロードされる。
【0043】
該装置は、好ましくは、Y0検出器が▲○+▼アキュムレーションデバイスにおいて▲○+▼加算にモジュラスを▲○+▼加算する必要性を検出ように動作する時に、最初に発生する出力文字がゼロであるように、▲l▼ビットの▲○+▼加算器回路を経由して、更なるnビットのSレジスタから発生する先の値に乗算ストリームを▲○+▼加算するように動作し、Y0検出器は、次に順番に加算した文字A0 ▲○×▼ Bd mod 2、▲S▼(CO0)、SO1、Sd、▲S▼(COZ)を利用して、▲l▼ビットのJ0値により即座に▲○×▼乗算される有限体であるように▲○+▼加算される文字の合成(composite)を検出するように動作するが、ここで、プロセスにおいて用いられる有限体に適するように、▲○+▼は加算を定義し、▲○×▼は乗算を定義する。
【0044】
好ましくは、▲l▼=1で、ハードウェアを追加することなく、J0は暗黙的に(implicitly)1であり、J0▲○×▼乗算は暗黙的(implicit)である(implicit)。
【0045】
好ましくは、コンパレータ(comparator)は、最初の右側の発生するkゼロ文字が無視されるGF(p)において機能している間、▲○×▼モジュラー乗算装置からの有限体出力を検知するように動作し、その出力がモジュラスNより大きいことにより、モジュラー簡約を調整するように動作し、前記値は、乗算装置からの出力ストリームの行き先であるメモリレジスタから出力されることにより、より小さな積の値に第二の記憶装置を割り当てる必要がなくなる。
【0046】
好ましくは、GF(2q)における▲○×▼モジュラー乗算で、該装置は外部で予め計算された▲l▼ビットより大きなゼロ強制因子なしで乗算するように動作する。
【0047】
好ましい実施例は、Aオペランド値又はBオペランド値のいずれかをゼロに再設定し、部分的な結果値S0を1に設定することにより、J0定数を計算するように動作する。
【0048】
本発明の第二の態様によると、AにBを掛けてモジュラスがN(A times B modulus N)となる出力ストリームを生成するために、整数A及びBのインタリーブされた有限体モジュラー乗算を実行するマイクロエレクトロニクス装置であって、モジュラスオペランドレジスタにおける文字の数nがk文字のセグメント長さよりも大きく、▲○×▼乗算プロセスが複数のインタリーブされた反復で実行され、各々のインタリーブされた反復で▲○×▼乗算装置に入力されるオペランドは、モジュラスN、乗数B、予め計算された部分的な結果S、被乗数Aのk文字列セグメントからなり、セグメントはA0文字列セグメントからAm−1文字列セグメントまで処理され、各々の反復の結果は次の順番の一時的結果Sに▲○+▼加算され、反復結果の最初に発する文字はゼロであって、前記装置は、各々が夫々乗算値、部分的な結果値、モジュラスを保存するように動作する第一主メモリレジスタB、第二主メモリレジスタS、第三主メモリレジスタNと、順番に前記Bレジスタからの入力と、各々の反復において最初の右側ゼロ文字を出力させる乗数として有用な「即座の」予測値Y0の入力と、前記Nレジスタと、少なくとも、A,B,Nレジスタ資源からの値を順番に受け入れ、続いて被乗数ゼロ強制値Y0をも受け入れるように動作する被乗数並列レジスタとからの入力で、複数の反復▲○×▼乗算プロセスの各々の間、順番に複数の被乗数値の一つ又は二つを▲○+▼アキュムレーションデバイスに▲○+▼加算し動作するモジュラー乗算装置と、該装置は、第一段階の間乗数となるように動作し、第二段階の間被乗数となるように動作する二進列(binary string)を生成するように動作するY0検出装置を更に利用し、該装置は、第一にゼロ、第二に被乗数Aのk文字列セグメントであるAi、第三にモジュラスNの最初に発生するk文字であるN0からなる、第一段階で▲○+▼アキュムレーションデバイスに入れ替えるのに適した被乗数値を得るように動作し、該装置は更に、次の反復で部分的な結果を生成するために、▲○+▼アキュムレーションデバイスから発する値に▲○+▼加算される先の反復の結果である一時的結果値Sを利用するように動作し、該装置は更に、第一にゼロ、第二に第一段階から残存するオペランドAi、第三に第一段階で予測されたY0値からなる乗算の第二段階で▲○+▼アキュムレーションデバイスに順番に入力される被乗数値を利用するように動作し、第一段階で乗算装置に入力される乗数値は、最初に発生する文字列B0であり、前記乗算装置は、第二段階でプリロードされた被乗数バッファに生成すると同時に文字毎にロードされる予測されたY0文字列からなる第二の▲○×▼乗数値と▲○×▼乗算するのと並行して前記文字列セグメントを乗算するように動作し、第二段階の間、装置に入力されるように動作する二つの乗数値は夫々、Bで表されるBオペランドからの左側n−k文字の値と、Nで表されるNモジュラスの左側n−k文字であり、前記装置は更に、▲○+▼アキュムレーションデバイスに残存する結果値の左側セグメントを結果レジスタに転送するように最終段階で動作する乗算フラッシュアウト装置(multiplying flush out device)からなる。
【0049】
好ましくは、該装置は、MS文字からLS文字まで乗算する逆モードにおいて実行される多項式ベースのオペランドで▲○×▼乗算を実行するように動作でき、出願人の米国特許第5742530号明細書に記載しているように、モンゴメリ型寄生関数なしでモジュラー簡約を実行するように動作する。
【0050】
本発明の第三の態様によると、被乗数の最初に発生する値、B乗数の現在の入力、▲○+▼アキュムレーションデバイスからの桁上げ値、▲○+▼アキュムレーションデバイスからの▲○+▼加算値、先に計算された部分的な結果からの現在の値、先の部分的な結果に▲○+▼アキュムレーションデバイスからの結果を▲○+▼加算する▲○+▼加算器からの桁上げ値を用いてY0値を予測するように動作する装置が提供される。
【0051】
好ましくは、該装置は、装置からのkの最初に発生する値がゼロ文字であることを保証するのに適しており、前記適していることが以下の数量を用いる次の順番のY0文字の予測からなる。
i. Aiレジスタの右側文字にBストリームのBd文字を掛けた▲l▼ビット毎の2▲ l ▼を法とする▲○×▼乗算の結果の▲l▼ビットのSoutビット A0・Bd mod 2▲ l ▼、
ii. ▲○+▼アキュムレーションデバイスから最初に発生する桁上げ文字▲S▼(CO0)、
iii. ▲○+▼アキュムレーションデバイスの右側の発生セル(emitting cell)からの第二からの▲l▼ビットのSout文字SO1、
iv. Sストリームからの次の順番の文字値Sd、
v. Z出力全加算器からの▲l▼ビット桁上げ文字▲S▼(COZ)、
vi. N0モジュラス被乗数レジスタにおける右側文字の負の逆数である▲l▼ビットのJ0値。
ここで、A0・Bd mod 2▲ l ▼、▲S▼(CO0)、SO1、Sdの値は、共に文字に▲○+▼加算される文字であり、有効なY0ゼロ強制予測文字を出力するために「即座に」J0文字によって▲○×▼乗算される。
【0052】
更なる実施例において、出力結果をモジュラスNと比較するように動作する少なくとも一つのセンサをも提供され、その機構は、結果レジスタの出力に第二(the second)の減算器を動作させることにより、出力された結果値と限定された合同であるモジュラー簡約された値を出力するように動作し、より小さな結果に第二の記憶装置を割り当てる必要を排除する。
【0053】
なおも更なる実施例において、最初の値の一つが別のプリロードバッファにロードされるのと並行して、二つの被乗数の▲○+▼加算である値が、少なくとも一つのk文字メモリ手段レジスタでプリロード文字バッファにロードされる。
【0054】
本発明の第四の態様によると、一連のインタリーブされた▲○×▼モジュラー乗算及び平方を実行するように動作し、三つの自然数乗算演算と同等のものを並行して実行するのに適し、結果がべき算である単一の▲○+▼アキュムレーションデバイス及び予測ゼロ強制機構(anticipating zero forcing mechanism)を有する装置が提供される。
【0055】
一つの実施例において、次の順番に用いられる被乗数は、即座にプリロードレジスタバッファ(preload register buffer)にプリロードされる。
【0056】
更なる実施例において、装置のバッファ及びレジスタは外部メモリー資源からの値をロードされるように動作し、前記バッファ及びレジスタは計算の間に外部メモリー資源にアンロードされるように動作するので、オペランドの最大サイズが利用できるメモリー手段に依存する。
【0057】
なおも更なる実施例において、メモリーレジスタ手段をも提供され、前記メモリー手段は、概して、直列単一文字入力/直列単一文字出力、並列少なくともk文字入力/並列少なくともk文字出力、直列単一文字入力/並列少なくともk文字出力、並列少なくともk文字入力/直列単一文字出力である。
【0058】
好ましくは、該装置は、乗算型反復の最終段階の間、乗数入力が桁上げ保存▲○+▼累算メモリーの左側セグメントをフラッシュアウトするように動作するゼロ文字であることを提供するように動作できる。
【0059】
好ましくは、該装置は、次の順番の被乗数を、必要とされるよりも前に、即座にプリロードメモリーバッファにプリロードするように動作できる。
【0060】
好ましくは、該装置は、被乗数値を中央記憶装置から即座にプリロードバッファにプリロードするように動作できる。
【0061】
同装置は、好ましくはA,Bの両方をゼロに再設定し、S0=1に設定することにより、モジュラスの右側k文字セグメントに関するk文字モンゴメリ定数J0を計算するように動作でき、続いてkビット乗算を実行する。
結果はY0レジスタに存在する。
【0062】
モンゴメリ型演算を利用するモジュラー乗算シーケンス
k文字桁上げ保存加算器CSAは、多項式体及び素数フィールドの両方における直列/並列のスーパースカラモジュラー乗算の基礎である。
多項式GF(2q)ベースの計算は、好ましくは全ての桁上げ機構のスイッチを切られた状態で実行される。
【0063】
直並列スーパースカラモンゴメリ乗算器は三段階のモンゴメリモジュラー積を計算するが、その一つの好ましい実施例において、最終段階はCSAの桁上げにより左側のk文字セグメント全体の単一クロックのダンプであってもよく(MSは通常の乗算で、LSは逆モードの多項式計算)、よりコンパクトな実施例では、最終段階はCSAの内容のk有効クロック直列フラッシュアウト(k effective clock serial flush out)であってもよい。
【0064】
先のP2の開示において、Y0因子はビット毎に計算されるので、J0の右側のビット、即ち定義では一つのビットのみが重要であって、モジュラスの右側ビットの関数である。
この拡張された装置において、装置は文字直列(character serial)であり、▲l▼ビット文字Y0は各々のクロックサイクルで生成される。
先のP1の開示において、Y0は累算された結果に必要な回数だけモジュラス値を加算する第一段階のゼロ強制関数であるので、関連した解が合同であってmk+1文字より決して長くなく、最初に右側で発生した文字は全てゼロであった。
QN≡0 mod NなのでX+QN≡Xである。
【0065】
モジュラー乗算シーケンス
計算を開始する前に、我々は装置に過去の一時的又はランダムな値がなく、オペランドN,B及び少なくとも最初のAのセグメント値が装置のレジスタにおいて利用できると仮定する。
S0=0で初めの部分積は概してゼロである。
典型的には、モジュラー演算は、概して三つの明確な段階において二以上のk文字セグメントからなるオペランドで実行される。
mセグメントのモジュラスがある通常の全乗算では、概して、mスーパースカラ乗算インタリーブされた反復(m superscalar multiplication interleaved iterations)があり、被乗数の各々のセグメントが、典型的にはBである全ての乗数によって掛けられる。
【0066】
各々のインタリーブされたスーパースカラ乗算のi=0番目のセグメントにおける第一段階のプロセスは、一般的なスーパースカラ乗算累算間の相互作用である。
即ち、Si ▲○+▼ Ai・B0 ▲○+▼ Y0・N0
(B0,Y0は直列的に文字毎にオペランドの最初のセグメントから乗算器に供給され、Ai,N0は並列的な単一のスライスのオペランドであり、Siは先の反復/計算からの部分積である。0番目の最初の反復ではSi=0。)
【0067】
第一段階のプロセスは、先の結果の右側セグメントへの二つのスーパースカラ積の▲○+▼加算を実行する。
ゼロのk文字列は、乗算装置から発生して、無視されるが、最初のセグメントの部分積は装置バッファに存在し、第二段階の結果に加算される。
【0068】
第一段階の結果は典型的にはRからなり、CSAの内容が全ゼロの直列出力された右側セグメントに連結される。(GF(p)計算において、Rへの更なるLS桁上げビットがある。)
【0069】
第二段階のプロセスは、一般的なスーパースカラ乗算累積間相互作用である。
即ち、R ▲○+▼ Si ▲○+▼ Ai・B ▲○+▼ Y0・N
(下線を引いた変数、例えばBはオペランドの残存する左側の値であることに留意する。それは、典型的には一つ以上のセグメント、即ち、m-1セグメントである。B,Nは直列的に文字毎に乗算器に供給され、第一段階から残存するAiと、第一段階において乗数であり次の反復において被乗数となるように第一段階においてマシンへロードされるY0とは並列なオペランドである。)
【0070】
概してm-1回の反復からなる第二段階の終わりに、Siの左側セグメントが転送可能な状態でCSA内に残存し、右側のスライス(k文字セグメント)は、装置から典型的にはSレジスタに発せられる。
素数フィールドにおける乗算が、従来の桁上げ保存加算法で実行されることに留意すべきである。
GF(2q)の逆フォーマットモードにおける乗算は、最上位文字から最下位文字まで進行した。
モジュラス値がアキュムレーターに「加算され」なければならない時、Y0関数が予測した。
装置において使用できない桁上げビットを除いて、機械的処理は二つの記数法で典型的には同一である。
【0071】
我々は、有限体におけるゼロ強制ベクトルのY0j文字を誘導するために利用される方法を開示する。
【0072】
J0j≡-N00 -1 mod 2▲ l ▼を計算する。
モジュラスに対し互いに素である全ての自然数は、両数値体において逆数を有する。
N00は奇数であるので、2の因数を有しない。
mod 2▲ l ▼の全ての因数は2であるので、最下位1を有する数及び唯一の因数が2であるモジュラスは、互いに素であり、J0jは常に存在する。
正式には、奇数N00及び2▲ l ▼について、gcd(N00,2▲ l ▼)=1となる。
【0073】
関数のこの単一文字は、ランダムロジック、単純回路、又は単純なルックアップテーブル(look up table)で配線実装され得る。
ルックアップテーブルにおいて誘導されなければならない2k-1の異なる値がある。
逆モードフォーマットにおいて、多項式のモジュラスは、右詰めで、名目上奇数でなければならない。
典型的な指数関数(exponentiational function;べき算関数)において、モジュラスビットの右側ビットは一つであり、名目上奇数であり、2kを法とする奇数の逆数は常に奇数である。
【0074】
▲l▼=1である場合、J00乗数は明らかに1に等しく、計算される必要はない。 第一段階の間、Y0関数によって出される文字出力の結果は常に0であるので、SuperMAPのj番目の文字出力Zijは、0=(2▲ l ▼R ▲○+▼ Sij ▲○+▼ Ai0・B0j ▲○+▼ Y0j・N00) mod 2▲ l ▼=Zijとなり、従って、(R ▲○+▼ Sij ▲○+▼ Ai0・B0j)≡-Y0j・N00であり、Y0j≡-N00 -1(R ▲○+▼ Sij ▲○+▼ Ai0・B0j) mod rである。
【0075】
上記の式から、J00が好ましくは両記数法でモジュラスの右側のk文字のモジュラー逆数の負の値であることが分かるが、2を法とする演算において、正及び負の値は同じであることに留意すべきである。
【0076】
Rは、図2における最終直列加算器460からの桁上げビットに加算されるCSAに残存する値の総和である。
Sijは、i番目の反復での部分積のj番目のビットである。
Ai0は、Aのi番目のスライスの右側文字(GF(p)におけるLS)である。
B0jは、Bのj番目の文字である。
B0は、モンゴメリ乗算の全反復の間の定数(乗数)である。
Y0は、各々の(i番目の)反復で生成されるk文字ベクトルである。
Y0jは、反復の第一段階のj番目のクロックで生成されるj番目の文字である。
Nは、mスライスされた(m sliced)モジュラスである。
N0は、モジュラスの右側スライスである。
N00は、N0の右側文字である。
【0077】
両体についてスーパースカラモジュラー乗算法の公式化(Formalizing)
S0=0
i=0〜m-1(インタリーブ反復)で、
(各々のインタリーブの)第一段階
R=0
j=0〜k-1(第一段階の各々の文字)で
Y0j=(J00(R ▲○+▼ S0j ▲○+▼ Ai0 ▲○×▼ B0j)) mod 2▲ l ▼
Zij=(R ▲○+▼ Sij ▲○+▼ Ai0 ▲○×▼ B0j ▲○+▼ Y0j ▲○×▼ N0) mod 2▲ l ▼
R=[(2▲ l ▼R ▲○+▼ Sij ▲○+▼ Ai0 ▲○×▼ B0j ▲○+▼ Y0j ▲○×▼ N0)]/2▲ l ▼
【0078】
k有効クロックサイクルの後、Zストリームの最初のセグメントは全てゼロであって無視され、関連したY0(k文字ベクトル)は次の段階において被乗数となるように用意され、加算されたRの値は次の段階において利用される。
【0079】
第二段階
j=k〜n-1で、
Z ij=(R ▲○+▼ S ij ▲○+▼ Ai0 ▲○×▼ B 0j ▲○+▼ Y0j ▲○×▼ N 0j) mod 2▲ l ▼
R=[2▲ l ▼R ▲○+▼ S ij ▲○+▼ Ai0・B 0j ▲○+▼ Y0j・N 0j]/2▲ l ▼
【0080】
文字ベースの直並列乗算器での上記アルゴリズムのインプリメンテーションは、上記のプロトコルの単純な拡張である。
(Quotient(商)(x,y)は、剰余のない整数の除算関数である。例えば、x=10101b,y=10000bである場合は、Quotient(x,y)=1)。
【0081】
S0=0
i=0〜m-1(インタリーブのループ)で、
第一段階
j=0〜k-1で、
Y0j=(J00・Si0 ▲○+▼ Ai0 ▲○×▼ B0j ▲○+▼ ▲S▼・Carry0 ▲○+▼ Sum1 ▲○+▼ Quotient(Si0 ▲○+▼ Sum0, r))) mod r
t=0〜k-1(一つのクロックパルスを有する全ループ)で、
Sumt=(Sumt+1 ▲○+▼ ▲S▼・Carryt ▲○+▼Ait ▲○×▼ B0j ▲○+▼ Y0j ▲○×▼ N0t) mod r
Carryt=(Quotient((Sumt+1 ▲○+▼ Carryt ▲○+▼ Ait ▲○×▼ B0j ▲○+▼ Y0j ▲○×▼ N0t), r)
(この段階の乗算器装置の出力は、『0』である。)
【0082】
第二段階
主要部
Carrya=0
j=k〜n-1,t=0〜k-1(一つのクロックパルスを有する全ループ)で、
Sumt=(Sumt+1 ▲○+▼ ▲S▼・Carryt ▲○+▼ Ait ▲○×▼ B j ▲○+▼ Y0t ▲○×▼ N j) mod r
Carryt=Quotient((Sumt+1 ▲○+▼ Carryt ▲○+▼ Ait ▲○×▼ B j ▲○+▼ Y0t ▲○×▼ N j), r)
Si,j-k=(Si,j-2k ▲○+▼ Sum0 ▲○+▼ ▲S▼・Carrya) mod r
Carrya=Quotient((Si,j-2k ▲○+▼ Sum0 ▲○+▼ Carrya), r)
乗算器のフラッシング
j=n〜(n+k-1),t=0〜k-1(一つのクロックパルスを有する全ループ)で、
Sumt=(Sumt+1 ▲○+▼ ▲S▼・Carryt) mod r
Carryt=Quotient((Sumt+1 ▲○+▼ Carryt), r)
Si,j-k=(Si,j-2k ▲○+▼ Sum0 ▲○+▼ ▲S▼・Carrya) mod r
Carrya=Quotient((Si,j-2k ▲○+▼ Sum0 ▲○+▼ Carrya), r)
【0083】
GF(p) 体における▲l▼=1の特定の場合の例での正式な説明については、P1を参照する。
【0084】
上記は、AにBを掛けてモジュラスがN(A times B modulus N)となる出力ストリームを生成するために、整数A及びBのインタリーブされた有限体モジュラー乗算を実行するマイクロエレクトロニクスの方法及び装置であって、nがモジュラスオペランドレジスタにおける文字であり、k文字のセグメント長さよりも大きく、▲○×▼乗算プロセスが複数の反復で実行され、各々のインタリーブされた反復で▲○×▼乗算装置に入力されるオペランドは、モジュラスN、乗数B、予め計算された部分的な結果S、被乗数Aのk文字列セグメントからなり、セグメントはA0文字列セグメントからAm-1文字列セグメントまで進行し、各々の反復の結果は次の順番の一時的結果Sに▲○+▼加算され、反復結果の最初に発生する文字はゼロであるマイクロエレクトロニクスの方法及び装置を説明している。
【0085】
典型的には、乗算装置に供給される四つの直列▲l▼ビット文字レジスタ、第一にB、第二にS、第三にN、好ましくはAがあり、乗算器に効率的にロードされるように構成される。
【0086】
典型的には、MAPの内部レジスタに収容されない長いオペランドでの計算のために、CPUは、そのアクセス可能なメモリーからオペランドをロードすることができる。
【0087】
典型的には、これらの主メモリレジスタは、夫々、乗数値、部分的な結果値、モジュラスNを保存するように動作するオペランドを保存し出力する。
モジュラー乗算装置は、反復▲○×▼乗算プロセスの間、順番に複数の被乗数値の一つ又は二つを▲○+▼アキュムレーションデバイスに▲○+▼加算し、順番に前記Bレジスタの第一の値からの入力と、各々の反復において最初の右側ゼロ文字を出力させる乗数としての「即座の」予測値Y0の第二の値からの入力と、前記モジュラスNレジスタの第三の値からの入力とを乗数として受け入れるように動作する。
【0088】
被乗数並列レジスタは、A,B,Nレジスタ資源からの値を順番に受け入れ、続いて被乗数ゼロ強制値Y0をも受け入れるように動作する。
【0089】
ゼロ強制Y0検出装置は、演算の第一段階の間、乗数となるように動作し、各々の反復乗算の第二段階の間、被乗数となるように動作する二進列を生成するように動作する。
【0090】
第一段階で▲○+▼アキュムレーションデバイスに入れ替えられる被乗数値は、第一のゼロ値、被乗数Aのk文字列セグメントである第二の値Ai、モジュラスNの最初に発生するk文字である第三の値N0からなり、四つの値のうちの一つになり得る。
図6のように、四番目のプリロードバッファがある場合は、N0値は概して、乗算の開始時に入れ替えられる。
そして、Aのk文字スライスが入力される際は、Ai値はN0値に直列的に加算され、四番目のバッファに保存される。
【0091】
概して単一のk文字モジュラスでの計算の場合、Sレジスタ若しくは一時的結果値Sの必要性はない。
オペランドが2k文字又はそれより長い場合、Aiスライスを進行させつつ、処理が反復的でなければならない。
平方演算で、Bのスライスは、概してBストリームから即座に回収され(be snared)、Aiプリロードバッファにプリロードされる。
【0092】
乗算操作の第一の反復で、一時的結果はゼロである。
【0093】
先の反復からのその後の一時的結果は、次の順番の反復で部分的な結果を生成するために、▲○+▼アキュムレーションデバイスから発生する値に▲○+▼加算されるように動作する。
【0094】
第二段階で▲○+▼アキュムレーションデバイスに順番に入力される被乗数値は、第一に擬レジスタ値(pseudo register value)であるゼロ、第二に第一段階から残存するオペランドAi、第三にNモジュラスの残存する文字を乗算し続けるように動作する第一段階で予測されたY0値である。
【0095】
第一段階で乗算装置に入力される乗数値は、最初に発生する文字列B0であり、最初に発生するBオペランドの文字列セグメントであり、第二段階でプリロードされた被乗数バッファに生成すると同時に文字毎にロードされる予測されたY0文字列からなる第二の▲○×▼乗数値と▲○×▼乗算するのと並行して乗算する。
【0096】
第二段階の間、装置に入力される二つの乗数値は夫々、Bで表されるBオペランドからの左側n-k文字の値と、Nで表されるNモジュラスの左側n-k文字である。
【0097】
第三段階は、▲○+▼アキュムレーションデバイスに残存する結果値の左側セグメントを転送するように動作する装置のフラッシュアウトである。
これは、乗数入力において供給されるゼロ文字によってなされる単一クロックのデータダンプか、又はまたは単純な直列アンロードのいずれかである。
【0098】
ダンプが並列のダンプである場合、その結果(result)がモジュラスによって更なる簡約を必要とするか否かを決定するために比較する手段がある。
【0099】
本発明におけるより革新的な拡張のうちの一つは、GF(2q)における逆モード乗算である。
この演算において加算器セル間の相互作用がないため、積のMS側から始めて乗算及び簡約を実行することができることによって、従来のモンゴメリ乗算における右側シフトを実行することに相当する無視されたゼロにより発生する厄介な寄生(parasite)なしでモジュラー簡約された解である積を有する。
【0100】
自動ゼロ強制を可能にする第二の革新点は、ただ一つのビットが一度に予測される装置を記載する特許出願P2のY0関数の拡張である。
そこでJ00ビットは、単一ビットの排他的論理和を求められた値に掛けられるだけであった。
奇数の逆数及びその負の値は、奇数を発生させる。
これは、▲l▼=1でのJ0値を計算するために、ルックアップテーブル又はランダム論理回路を実装して保存した。
J0は、近似していない記数法においては異なる数量であることに留意すべきである。
我々は、両方の関連した数値体で、この拡張において、Y0値がどのように誘導され得るかについて示した。
【0101】
以下の記載は、被乗数の最初に発生する値、B乗数の現在の入力、▲○+▼アキュムレーションデバイスからの桁上げ値、▲○+▼アキュムレーションデバイスからの▲○+▼加算値、先に計算された部分的な結果からの現在の値、先の部分的な結果に▲○+▼アキュムレーションデバイスからの結果を▲○+▼加算する▲○+▼加算器からの桁上げ値を用いてY0値を予測するように動作する回路要素を記載する。
【0102】
別の表現をすれば、ゼロ強制関数を制御するように動作する六つの値は、
i. Aiレジスタの右側文字にBストリームのBd文字を掛けた▲l▼ビット毎の2▲l▼を法とする▲○×▼乗算の結果の▲l▼ビットのSoutビット A0 ▲○×▼ Bd mod 2▲l▼、
ii. ▲○+▼アキュムレーションデバイスから最初に発生する桁上げ文字▲S▼(CO0)、
iii. ▲○+▼アキュムレーションデバイスの右側の発生セルからの第二からの▲l▼ビットのSout文字
SO1、
iv. Sストリームからの次の順番の文字値Sd、
v. Z出力全加算器からの▲l▼ビット桁上げ文字▲S▼(COZ)、
vi. N0モジュラス被乗数レジスタにおける右側文字の負の逆数である▲l▼ビットのJ0値、である。
ここでA0 ▲○×▼ Bd mod 2▲l▼、▲S▼(CO0)、SO1、Sdの値は、▲l▼ビットのゼロ文字列を発生させるための共に文字に▲○+▼加算される文字であり、有効なY0ゼロ強制予測文字を出力するために「即座に」J0文字によって▲○×▼乗算される。
P1の記載にあるように、出力がモジュラー簡約されなければならないか否かを決定するためには、センサが出力結果をモジュラスNと比較するように動作し、その機構は、結果レジスタの出力に第二の減算器を動作させることにより、出力された結果値と限定された合同であるモジュラー簡約された値を出力するように動作し、より小さな結果に第二の記憶装置を割り当てる必要を排除する。
【0103】
乗算を実行するように構成される単独の▲○+▼アキュムレーションデバイス及び予測ゼロ強制機構は共に、一連のインタリーブされた▲○×▼モジュラー乗算及び平方を実行するように動作する。
全装置は、従来のモンゴメリ法における三つの整数乗算と同等のものを実行し、J0はB0▲○×▼Ai及びSiの最初のk文字加算を乗算し、最後にNを乗算すべくY0を予測するk文字装置である。
【0104】
SuperMAPが乗算の最後の反復を計算している間、次の乗算の第一のスライスは、即座にプリロードレジスタバッファ手段にプリロードされ得る。
この値は、図1若しくは図5のレジスタバンクにおけるレジスタセグメントの一つに残存する先の乗算の結果か、又は被乗数のスライスである。
【0105】
二つの被乗数の▲○+▼加算であるプリロードされた値は、GF(2q)計算でのみ、k文字レジスタに▲○+▼加算される。
GF(p)計算においては、更なる桁上げビットを備えなければならない。
【0106】
特に非常に長いモジュラスでは、SuperMAPに隣接したバッファ及びレジスタは、概して不十分なメモリ資源を有する。
プリロードバッファにオペランドを直接ロードする手段が提供され、CPUのメモリマップ(memory map)にオペランドを保存するように動作する。
逆フォーマット乗算では、CPUから入力された語(word)のビットオーダーは、概してデータ入出力装置において逆にされる。
【0107】
図面において、太線は、k文字(k▲l▼ビット)の広い並列バスラインを示す。
より薄い隣接した信号ラインは、▲l▼ビットの広いラインを表す。
ほとんどの制御ラインは表示されていないが、ここに含まれるものは、概して手順を理解するのに必要であり、概して一点鎖線で示されている。
【0108】
(発明を実施するための最良な形態)
図面において、太線は、k文字(k▲l▼ビット)の広い並列バスラインを示す。
より薄い隣接した接続信号ラインは、▲l▼ビットの広いラインを表す。
概して、制御ラインは表示されていないが、手順を理解するのに好ましくは必要なものは、概して一点鎖線で示されている。
【0109】
図1,2は共に、本発明の好ましい実施例によって構成され作動する直並列算術論理演算ユニット(ALU)のブロック略図である。
図1,2の装置は、好ましくは以下の部品を含む。
単一マルチプレクサ(single multiplexer)−一つの信号又は文字のストリームを多数の信号入力から選択し、この選択された信号を単一の出力に当てる制御切換素子。
マルチプレクサは、M1〜13の符号を付され、より大きな素子が本来備える素子である。
【0110】
マルチプレクサ及びプリアッダー(pre-adder;予加算器)390は、k▲l▼+1のマルチプレクサの配列であり、四つのk若しくはk+1文字入力のいずれがCSA(carry save accumulator;桁上げ保存アキュムレーター)410に加えられるかを選択する。
【0111】
B(70,80)、SA(130)、SB(180)、N(200,210)は、好ましい実施例における四つの主要な直列レジスタである。
SAは、概念的に及び実際に冗長であるが、非常に長い番号の計算をかなり速めることができ、特にモジュラスの長さが2・k・m文字長さである場合には、揮発性記憶装置で保存する。
【0112】
直列加算器及び直列減算器は、二つの直列文字入力及び一つの直列文字出力を有し、二つの長い文字列を加算若しくは減算する論理素子である。
部品90及び500は減算器であり、330及び460は直列加算器である。入力から出力への伝搬時間は、非常に短い。
直列減算器90及び500は概して、B*がN以上である場合、B*をBに減少させ、及び/又は、S*がN以上である場合、S*をSに減少させる。
直列減算器480は、B*がN以上であるか否かを検知するコンパレータ部品の一部として利用される。
全加算器330は、二つの文字ストリームを加算し、ロードバッファ(load buffer)340に、ロードバッファ290及び320の値の合計と同じ値を供給する。
【0113】
高速ローダ及びアンローダ(10,20及び30,40)は夫々、CPU制御装置からのデータフローを速める装置である。
これらの装置は概して、他の直接メモリアクセス部品の必要性を排除する。
符号20,40は、逆フォーマット(reverse format)のGF(2q)の乗算のためのデータ語を逆にする必要がある際に、データ語を逆にするためのものである。
【0114】
本算術論理演算ユニット装置は直列供給されるシストリックプロセッサ(systolic processor)であるので、データ入力(Data in)50はパラレルイン−シリアルアウト方式の装置であり、データが並列に供給され、直列に処理される。
【0115】
データ出力(Data out)60は、結果をコプロセッサから出力するためにシリアルイン−パラレルアウト方式の装置である。
商生成器(quotient generator)は、図2のその部分であるが、それは分割機構の各々の反復で商文字を生成する。
【0116】
Bd上のフラッシュ信号(flush signal)240、S*d上のフラッシュ信号250、Nd上のフラッシュ信号260は、直前のk+1文字が、確実にCSAをフラッシュアウトできる(flush out)ような信号である。
第二の実施例は、第二段階の終わりにRデータを一致させ、CSAをフラッシュアウトするために単一のパラレルデータのダンプ(dump)を行う。
【0117】
ロードバッファR1,R2,R3(290,320,340)は、三つの可能な0以上の被乗数の組合せを受信するのに適したシリアルイン−パラレルアウト方式の送りレジスタ(shift register;シフトレジスタ)である。
【0118】
ラッチL1,L2,L3(360,370,380)は、ロードバッファからの出力を受信し、それにより、次段階のデータが好ましくはL1,L2,L3にラッチされる前に、ロードバッファがこのデータを処理することが時間的に可能となる。
ラッチL0は概して390への「仮想」の一定の全ゼロの入力であり、概してラッチされた論理(latched logic)では実行されない。
【0119】
Y0検知(Y0 sense)430は論理回路であり、LS(least significant;最下位)ゼロのk文字列が▲○×▼乗算のZで終了するために、モジュラスが累算される回数を決定する。
【0120】
一文字遅延装置(One character delay device)100,220,230は、計算の同期のために図1のデータ作成装置と図1のデータ処理装置との間に収容されるように、夫々のデータストリームに挿入される。
【0121】
k文字遅延送りレジスタ470はNを同期させ、減算器は、Nより大きな比較のために右側の出力のゼロ文字列を無視した後の結果からNを減算する。
【0122】
CSAは、従来のような直列/並列乗算器の入力にラッチされるような単一の値の代わりに、三つの異なるゼロより大きな値が加算されるということを除いては、直列/並列乗算器とほとんど同一である。
多項式ベースの計算において利用される場合には、「全ての桁上げに依存する」関数は使用禁止となる。
【0123】
最後の桁上げ挿入(Insert Last Carry)440は、Sレジスタがm・k文字長さしかないので、Sストリームの(m・k・▲l▼+1)番目のビットを挿入するために利用される。
【0124】
借り/桁溢れ検出(borrow/overflow detect)490は、概して、結果が(Nからの)モジュラス以上であるか、又はGF(p)計算内であるかを検出する。
多項式ベースの計算において、第一の重要な結果のビットが一つである場合、桁溢れが検出される。
【0125】
制御機構は記載されていないが、好ましくは、GF(p)及びGF(2q)の両方のシストリック・データ・フロー用に設定されるスイッチを有する特殊関数のための有限状態機械を有する一組のカスケード方式の計数装置であると理解される。
【0126】
数の素体及び合成素体(composite prime field)におけるモジュラー型乗算のため、我々はA及びBを被乗数及び乗数と定義し、NをA若しくはBよりも概して大きなモジュラスと定義する。
Nはモジュラスの値が保存されるレジスタをも意味する。
Nは、若干の場合において、Aより小さい。
我々は、A,B,Nをm・k=nの文字長さのオペランドとして定義する。
各々のkの文字群(k character group)はセグメント(segment)と呼ばれ、その群のサイズは乗算装置のサイズによって定められる。
A,B,Nは各々m文字長さである。
順次手順を説明していく際の平易のために、A,B,Nは512ビットの長さ(n=512)と仮定し、乗数の経済的な長さ及び簡単なCPUのデータ操作速度を考慮して、kは64文字長さと仮定し、m=8がオペランドにおけるセグメントの数及び512ビットのオペランドでの平方若しくは乗算ループにおける反復の数である。
全てのオペランドは、自然数である。
より一般的には、A,B,N,n,k,mは、いかなる適切な値をも仮定することができる。
【0127】
非モジュラー関数において、N及びSレジスタは、他の算術オペランドの一時記憶のために利用されることができる。
【0128】
我々は、記号≡をモジュラー数の合同を意味するものとし、例えば、2は16を7で割った剰余となるので、16≡2 mod 7 の場合、16は、7を法として(modulo 7)2と合同であると言う。
我々がY mod N≡X mod Nと記述する場合は、Y,Xの両方ともNより大きくてもよいが、正数のX,Yでは、剰余は同一である。
負の整数Yの合同がY+u・N(Nはモジュラス)であることにも留意する必要があり、Yの合同がN未満となる場合は、uは正の結果を与える最も小さい整数である。
【0129】
我々は、記号\を、より限定された意味における合同を意味するものとして利用する。
ここに記載されるプロセスの間、値はしばしば所望の値か、若しくは所望の値にモジュラスを加えた値と等しいかのいずれかである。
例えばX¥2 mod 7の場合である。
Xは、2又は9と等しい。
この場合、我々は、Xが7を法として限定された合同(limited congruence to 2 mod 7)を有すると言う。
多項式ベースの体において、アナログは、我々がNより大きいというところのモニック(monic)の値であり、モジュラスに対する排他的論理和(XOR)を求めることにより簡約される。
GF(2q)においては、桁溢れがないので、¥の値は概して無視される。
【0130】
我々がX=A mod N と記述した場合、XはAをNで割った剰余と定義され、例えば、3=45 mod 7となる。
【0131】
数論において、モジュラー型逆数は基礎概念である。
例えば、Xのモジュラー型逆数はX-1と記述され、X・X-1 mod N=1により定義される。
X=3及びN=13の場合、X-1=9であるが、これを言い換えれば、3・9を13で割った剰余は1ということである。
【0132】
略語MS及びLSは、デジタル用語で一般に用いられているように、ビット、文字、セグメント、全オペランド値に言及する場合に最上位及び最下位を意味するように用いられる。
【0133】
この明細書の全体に亘って、Nは値N、及び、Nを含む送りレジスタの名称の両方を示す。
値上のアスタリスクの上付き文字は、その値が潜在的に不完全であるか変化する可能性があることを意味する。
Aは累乗されるべき数値であり、nはNオペランドの文字長さである。
初期状態設定の後、AがA*に「モンゴメリ標準化された(Montgomery normalized)」(後述するA*=2n・A)場合、A*及びNは、べき算における中間段階を通じて一定値である。
第一の反復の間、べき算の初期状態設定の後、BはA*に等しい。
Bは、最終的にべき算の所望の結果と等しくなる累算された値が存在するレジスタの名称でもある。
S*は一時的な値を示し、S,SA,SBは、Sの単一のMSビット以外の全てを保存するレジスタを示す。
(このMSビットに連結されるS*は、Sと同一である。)
S(i-1)は、i番目の反復の最初でのSの値を意味し、S0は、S(i)番目の値のLSセグメントを意味する。
【0134】
我々は、GF(p)体(後に定義する)におけるプロセス▲P▼(A・B)Nを、P体における乗算と、又は時には単に乗算演算と称する。
【0135】
我々は、並列/直列乗算器の標準的な構造を複動式の直列並列乗算器を構成するための基礎として利用してきたので、(かなり複雑な桁上げ先見加算器(carry look ahead adder)若しくは非常に遅いリップル加算器とは対照的に)、桁上げ保存累算を基礎とする乗算器の加算部との差異を認め、桁上げ保存加算器若しくは桁上げ保存アキュムレーターと呼び、プリロード機構(preloading mechanism)とマルチプレクサ及びラッチを別々に取り扱うが、これらは、例えばA・B+C・D+Sのように、AとB及びCとDを同時に掛けることができ、連続的に両方の結果と先の結果であるSとを加算でき、このアキュムレーターをより汎用的なエンジンに変換する。
更なるロジックが、モジュラー簡約(modular reduction)に必要な予測された検知演算(anticipated sense operation)、及び、極めて大きな数におけるモジュラー演算と通常の整数演算とを提供するのに必要な直列総和(serial summation)を提供するために、この乗算器に加えられる。
【0136】
GF(p)におけるモンゴメリモジュラー型乗算
以下の説明は、数のGF(p)におけるモンゴメリ演算について言及する。
本装置はGF(2q)における多項式ベースの数上のモンゴメリ演算に利用され得るが、計算が、全ての実行可能なオペランドが要素2nを乗ぜられるP体におけるものであるので、実行においては機能が低下する。
【0137】
モジュラー型乗算を計算するための古典的な方法において、A・B mod N の場合、積A・Bの剰余は除算によって算出される。
大きなオペランドで従来の除算を実行することは、直列/並列乗算よりも機能することが困難である。
【0138】
モンゴメリのモジュラー簡約法(modular reduction method)を利用して、除算は二つの予め計算された定数を利用する乗算により本質的に置換される。
本願明細書で示される手順において、一つだけ予め計算された定数があり、それはモジュラス関数である。
この定数は、算術論理演算ユニット装置を利用して計算されるか、若しくは計算され得る。
【0139】
この装置において利用されるようなモンゴメリプロセスは、まず簡略的に示され、その後に完全な好ましい説明がなされる。
【0140】
我々が、例えば1010001(=8110)のような奇数(LSビットが1)を有する場合、我々は常に、その奇数に他の固定補正(fixing, comepnsationg)奇数、例えば1111(=1510)を加算することにより、1111+1010001=1100000(9610)として、この奇数を偶数(単一のLSビットが0)に変換することができる。
この具体的事例において、我々は前もって全文字列である81を知っており、81に加算する二進数を容易に決定でき、我々が必要とするLSゼロの数を有する新たな二進数を生成できたので、五つのLSゼロを生成する数を見つけることができた。
この固定数は右側に1を有していなければならず、さもなければ、結果として出るLS文字に影響を及ぼさない。
【0141】
我々のプロセスが、連続したLSゼロの数を有することを望み、各々のクロックサイクルで次のビットを固定しさえすればよいクロックされた直列/並列桁上げ保存プロセスである場合、次のビットが1となるようなら各々のクロックでその固定数を加えれば十分であり、予測されるビットがゼロとなるようならその固定数を加えなければ十分である。
しかし、関連した乗数のビットが1であり、Y検知も1と予測する場合、ビット間の桁溢れ(倍の桁上げ)を発生させないために、この固定数は好ましくは前もって被乗数に加算され、アキュムレーターに加えられる。
【0142】
ここで、モジュラー演算において、我々はモジュラスによって除算される値の剰余にのみ興味があるので、モジュラスを何回でも値に加算することができ、同じ剰余を有する値をなお有することができることを知っている。
これは、Y・N=Σyi・ri・Nをあらゆる整数に加えることができ、なおも同じ剰余を有することを意味する。
ここで、Yは、必要なk▲l▼の右側ゼロを生成するために、モジュラスNにおいて加算した回数である。
上記したように、我々が加えるモジュラスは奇数のみである。
(偶数モジュラスが、riが、iが偶数におけるLSゼロの数である場合に得られる奇数との積として定義される方法は存在する。)
【0143】
モンゴメリのインタリーブされた簡約は、概して保存必要量を減少させ、乗算装置の経済的なサイズを小さくする。
このことは、例えばn=1024ビットのような一つの大きな整数に、別の同じ長さの整数を掛けるような、通常倍の長さの整数を生成するプロセスである公開鍵暗号機能を実行する際に、特に有効である。
【0144】
我々は、nのLSゼロと、多くともn+1のMS文字を有する数Zを有するように、乗算(若しくは平方)プロセスの間、Ns(モジュラス)においてA・B=X若しくはA・B+S=Xに十分な回数加算することができる。
【0145】
これらのゼロを無視することにより、rnで所望の結果を除算したことを留意していれば、このような数を利用し続け、LSのn文字を無視し続けることができる。
【0146】
LSのn文字を無視し、最上位のn(若しくはn+1)文字のみを使用すると、その結果にrnの逆数であるr-nを効果的に乗算した。
我々が続けてこの結果にrn mod N(若しくはrn)を再乗算する場合、A・B+S mod Nとして、(同じ剰余を有する)所望の結果と合同な値を得る。
ここで見られるように、MM(Montgomery multiplication)を利用した場合、その結果は、MMによって再導入されたr-n寄生要素(parasitic factor)を克服するために、好ましくはr2nを乗算される。
【0147】
例
A・B+S mod N=(12・11+10) mod 13=(1100・1011+1010)2 mod 10112
▲l▼=1,r=2
【0148】
我々は、固定数がnのLSビットのうち一つで必要な場合はいつでも2iNを加算する。
【0149】
17は13より大きいので、13を減じて、17・24≡4・24 mod 13となり、正式には2-n(A・B+S) mod N=9(12・11+10) mod 13≡4である。
【0150】
モンゴメリ演算において、我々はMSゼロでない結果である4のみを利用し、実際の結果が2nで割られnのゼロがMMの結果に押し込められたことを効果的に留意する。
【0151】
我々は、24 mod 13≡3により結果を効果的に乗算した(8+2)・13=10・13において追加した。
結局、我々は不必要なゼロを利用したので、一プロセスでA・B+Y・N+S-(12・11+10・13+10)を実行したと言うことができ、好ましい実施例でできるだけ後述する。
【0152】
チェックすると、(12・11+10) mod 13=12、4・3=12
【0153】
結局、モンゴメリ乗算の結果は、2-nによって乗算される所望の結果である。
【0154】
各々のMMは2-nの寄生要素を残すので、前の結果を同じ乗算法を利用する所望の結果へ戻すために、我々は22nにより前の結果をモンゴメリ乗算する必要があり、これをHと呼ぶ。
【0155】
モンゴメリ乗算関数▲P▼(A・B)Nは、P体で積A・BのNを法とする乗算を実行する。(上記の例では4を誘導した部分である。)
Pフィールドから通常のモジュラー体へ戻すことは、予め計算された定数Hを利用して、▲P▼(A・B)Nの結果におけるPを定めることにより実行される。
ここでP=▲P▼(A・B)Nである場合、▲P▼(P・H)N≡A・B mod Nに従うことにより、二つのP体の乗算において通常のモジュラー乗算を行う。
【0156】
モンゴメリモジュラー簡約(Montgomery modular reduction)は、n若しくはn+1文字長さであるオペランドでの一連の乗算、加算、減算を実行することにより、n若しくは2n文字長さであるオペランドでの一連の乗算、除算を回避する。
全体のプロセスは、Nより小さいかNと同じ結果となる。
与えられたA,B,奇数Nについては、A・B+Q・NがnのLS文字がゼロである数となるか、又は、P・2n=A・B+Q・NとなるようなQが常にある。
【0157】
これは、我々がnのLS文字がゼロである(可能な1ビットの桁溢れを有する)2n文字長さである表現を有することを意味する。
【0158】
ここで、基数r=2▲ l ▼で、I・rn≡1 mod Nとする(Iは全ての奇数Nで存在する)。
上式の両側にIを乗算することで、以下の合同が得られる。
式の左側からはP・I・rn≡P mod N(I・rn≡1 mod Nより)、式の右側からはA・B・I+Q・N・I≡A・B・I mod N(Q・N・I≡0 mod Nより)、
従って、P≡A・B・I mod N
これは、P体乗算が実行される毎に、寄生要素I=r-n mod Nが導入されることをも意味する。
▲P▼演算子は、P≡A・B・I mod N≡▲P▼(A・B)Nとなるように定義され、これを「P体におけるA×Bの乗算」又はモンゴメリ乗算と呼ぶ。
P体からの戻しは、P・Hで▲P▼を演算することによって計算でき、▲P▼(P・H)N≡A・B mod Nとする。
我々は、前出の合同式のPを置換することによってHの値を誘導することができる。
我々は、▲P▼(P・H)N≡(A・B・I)(H)(I) mod Nを見出した。
(A・B・I←P、H←H、I←であり、あらゆる乗算演算が寄生要素Iを導入することを参照)
【0159】
HがI2の逆数と合同である場合、合同式は有効であるので、H=I-2 mod N≡r2n mod N(Hは、Nの関数であり、Hパラメーターと呼ぶ。)
【0160】
従来のモンゴメリ法において、A・Bでの▲P▼演算子を定めるためには、予め計算された定数Jを用いて以下のプロセスを行う。
1)X=A・B
2)Y=(X・J) mod rn(nのLS文字のみが必要)
3)Z=X+Y・N
4)S=Z/rn(Jの必要条件は、Zをrnによって割り切れるようにすることである。)
5)P\S mod N(S≧Nの場合、NはSから減算される。)
最後に第5段階で、
P\▲P▼(A・B)N
[Nの減算の後、必要ならばP=▲P▼(A・B)N]
上記に続いて、Y=A・B・J mod rn(nのLS文字のみを使用)
Z=A・B+(A・B・J mod rn)・N
【0161】
Zをrnで割り切れるようにするため(ZのnのLS文字は好ましくはゼロである)、以下の合同式がある。
[A・B+(A・B・J mod rn)・N] mod rn≡0
【0162】
この合同式が存在するために、N・J mod rnは-1と合同であるか、又は、
J≡-N-1 mod rn
我々は、定数Jを見つけた。
【0163】
従って、JはNのみの関数である予め計算された定数である。
しかし、MMの結果を出力するマシンにおいて、LS文字列で出力される文字が別にゼロであった各々の場合で、文字毎にNに加えられる用意がなされているべきであり、それにより、Yが配線論理を利用して文字毎に検出されるので、Jを予め計算し、続いてY=A・B・J mod rnを計算する必要性はなくなる。
我々は、この方法が奇数のNsについてのみ機能できることを述べた。
【0164】
従って、明らかなように、上述したプロセスは、▲P▼(A・B)Nを得るために、与えられたA,B,N及び予め計算された定数で三つの乗算、一つの加算、多くても一つの減算を用いる。
この結果、同じプロセス及び予め計算された定数H(モジュールNの関数)を利用して、我々はA・B mod Nを見つけることができる。
AはBと等しくてもよいので、この基本演算器は、モジュラー演算において平方又は乗算する装置として使用できる。
【0165】
インタリーブされたモンゴメリモジュラー型乗算
上記では、全てn文字長さであるオペランド及び2n+1文字の保存空間を必要とした結果の乗算を含んだモジュラー型乗算の方法を説明している。
【0166】
P1に記載したモンゴメリのインタリーブされた簡約を利用して、より短いオペランド、レジスタ及びハードウェア乗算器で乗算演算を実行することが可能であり、比較的少ない論理ゲートでの電子装置のインプリメンテーション(implementation)を可能にする。
【0167】
まず、我々は、インタリーブの各々の反復で、J0定数を利用してNが加算される回数を計算する場合に、装置がどのように機能するかについて説明する。
後で我々は、Y0の配線誘導(hardwire derivation)を利用したインタリーブする方法を説明するが、これは各々の乗算のJ0+段階を排除し(後述の例の(2)参照)、二つの別々の直列/乗算器を、同様のシリコン資源を利用して、倍速以上の速度でA・B+C・N+Sを実行できる新たな単一の汎用乗算器に組み込むことを可能にする。
【0168】
k文字の乗数を利用して、n文字にmのセグメントを有する、即ちm・k=nとなるようにk文字長さのセグメントを定めることは便利である。
J0は、JのLSセグメントである。
従って、J0≡-N0 -1 mod rkである(Nとして存在するJ0は奇数である)。
【0169】
J及びJ0定数は、所定数の最下位ゼロを有するように、簡約していない出力を定める場合に、モジュラスを加える回数を伝える補正数(compensating)であることに留意すべきである。
次の出力の直列ビットを容易に決めることができるように、次の中間結果に常にモジュラス(常に奇数)を加算するので、我々は本発明に係るシリアルデバイスの更なる利点を後述する。
これは、この加算がなければCSAに存在するLS直列ビットである出力文字が「1」であった場合であり、それにより、先の中間結果にさえモジュラスを加算し、出力文字列に別のLSゼロを約束する。
どんなにモジュラスが結果に加算されようとも、剰余が一定であるので、合同が維持されることを思い出すべきである。
【0170】
モンゴメリのインタリーブされた簡約の従来の使用において、▲P▼(A・B)Nは、(1)〜(5)の段階で説明されるように、m回の反復で定められる。
まずS(0)=0とする(第一の反復の最初でのSの¥の値)。
i=1,2では、m:
1)X=S(i−1)+Ai−1・B(Ai−1はAのi−1番目の文字であり、S(i−1)は、i番目の反復の最初でのSの値である。)
2)Y0=X0・J0 mod rk(X0・J0の積のLSk文字)
(このプロセスは、kのLS文字のみ、例えば最下位64文字のみを使用し計算する。)
直列マシンにおいて、Y0は文字毎に予測されるから、好ましいインプリメンテーションにおいて、この段階は不要である。
3)Z=X+Y0・N
4)S(i)=Z/rk
(ZのkのLS文字は常にゼロであるので、Zは常にrで割り切れる。
ZのLSk文字は全てのゼロであるので、この除算はk文字の右側へのシフト(shift;桁送り)に相当し、または、回路に示されるように、ZのLSk文字は単に無視される。
5)S(i)=S(i) mod N(Nは、Nより大きなそれらのS(i)から減算されることになる)。
最後に、(必要な場合はNの減算の後)最後の反復で、C=S(m)=▲P▼(A・B)N
【0171】
F=A・B mod Nを誘導するために、P体計算▲P▼(C・H)Nが実行される。
【0172】
好ましい実施例において、全てのS(i)でS(i)が2Nより小さくなることを知ることが望ましい。
これは、最後の結果(S(m))が常に、多くとも一回のNの減算で、Nより少ない数量に減算され得ることをも意味する。
【0173】
我々は、以下のプロセスにおいて利用されるオペランドでそのことを観察する。
即ち、S(i-1)<rn+1
(一時レジスタは、B又はNレジスタよりも1ビット長くてもよい)、
B<N<rn、及び、Ai-1<rk
定義により、S(i)=Z/rk(可能な減算前のプロセスの終わりのSの値)
全てのZで、Z(i)<rn+k+1
Xmax=Smax+Ai・B<rn+1-1+(rk-1)(rn-1)
Qmax=Y0N<(rk-1)(rn-1)
従って、Zmax<rk+n+1-rk+1+1<rk+n+1-1
Zmaxはrkで割り切れるので、
S(m)<rn+1<-r1
Nmin>rn-rなので、S(m)maxは常に2・Nminよりも小さく、従って、一回の減算が最後の結果で必要なだけである。
S(m)max-Nmin=(rn+1-r1-1)-(rn-1)=rn-4<Nmin
【0174】
モンゴメリのインタリーブされたモジュラー型乗算の例
十六進数での以下の計算は、インタリーブされた方法の意味を明らかにする。
N=a59(モジュロ(modulo))、A=99b(乗数)、B=5c3(被乗数)、n=12、 r=2)(Nの文字長さ)、k=4(乗数の文字におけるサイズ、更にはセグメントのサイズ)、n=k・mなのでm=3。
7・9≡-1 mod 16及びH≡22 ・ 12 mod a59≡44bなのでJ0=7。
【0175】
期待される結果は、F≡A・B mod N≡99b・5c3 mod a59≡375811 mod a59≡22016である。
【0176】
最初にS(0)=0で、
段階1
X=S(0)+A0・B=0+b・5c3=3f61
Y0=X0・J0 mod rk=7(Y0は、SuperMAPにおいて予測される配線)
Z=X+Y0・N=3f61+7・a59=87d0
S(1)=Z/rk=87d
段階2
X=S(1)+A1・B=87d+9・5c3=3c58
Y0=X0・J0 mod rk=8・7 mod 24=8(予測される配線)
Z=X+Y0・N=3c58+52c8=8f20
S(2)=Z/rk=8f2
段階3
X=S(2)+A2・B=8f2+9・5c3=3ccd
Y0=d・7 mod 24=b(予測される配線)
Z=X+Y0・N=3ccd+b・a59=aea0
S(3)=Z/rk=aea
S(3)>Nなので、
S(m)=S(3)-N=aea-a59=91
従って、C=▲P▼(A・B)N=9116
P体からの戻しは、▲P▼(C・H)Nを計算することによって実行される。
再び最初にS(0)=0で、
段階1
X=S(0)+C0・H=0+1・44b=44b
Y0=d(スーパーマップにおいて予測される配線)
Z=X+Y0・N=44b+8685=8ad0
S(1)=Z/rk=8ad
段階2
X=S(1)+C1・H=8ad+9・44b=2f50
Y0=0(スーパーマップにおいて予測される配線)
Z=X+Y0・N=2f50+0=2f50
S(2)=Z/rk=2f50
段階3
X=S(2)+C2・H=2f5+0・44b=2f5
Y0=3(スーパーマップにおいて予測される配線)
Z=X+Y0・N=2f5+3・a59=2200
S(3)=Z/rk=22016
それは、99b・5c3 mod a59の期待値である。
【0177】
各々の段階で我々がkのLSを無視したとすれば、本質的にnのMS文字をrkによって乗算することとなる。
同様に、各々の段階で、乗数のi番目のセグメントはrikによって乗算される数であり、それにS(i)と同位(same rank)を与える。
【0178】
J0定数を知るための潜在的な値がある別の好ましい実施例において、Ai・B+S=1である場合、Y0=-N0 -1=J0である。
【0179】
べき算(Exponentiation)
『ディー・クヌース(D.Knuth)著、「コンピュータプログラミングの技法(The art of computer programming)」、第2巻、準数値算法(Seminumerical algorithms)、アディソン・ウェズリー(Addison-Wesley)、リーディング、マサチューセッツ州、1981年、p.407』(以下クヌースと称す)で、シーケンスの以下の導出は、平方及び乗算のシーケンスを説明しており、べき剰余(modular exponentiation)を実行する。
【0180】
この装置はP体において平方及び乗算することができるので、モンゴメリ定数を予め計算した後(H=22n)、我々はC=AE mod Nを計算する。
E(j)はべき指数Eの二進法におけるjビットを意味し、指数1のMSビットから始まり、指数qのLSビットで終わるとすると、奇数のべき指数で以下のように累算できる。
A* \ ▲P▼(A・H)N
A*は、A・2nに等しい。
B=A*
j=2〜q-1で(FOR j=2 TO q-1)
B \ ▲P▼(B・B)N
E(j)=1ならば、B \ ▲P▼(B・A*)Nである
(もし E(j)=1ならば B \ ▲P▼(B・A*)N
FORループの終わり(ENDFOR)
B \ ▲P▼(B・A)N E(0)=1
Bは、2nを掛けられる最後の一時的な値であり、Aは元々のAである。
C=B
もしC≧Nならば、C=C-N
最後の反復の後、値BはAE mod Nに対する\であり、Cは最終の値である。
【0181】
明らかにするために、以下の例を利用することとする。
E=1011 → E(1)=1、E(2)=0、E(3)=1、E(4)=1
q=4でA1011 mod Nを見つけるために、
A*=▲P▼(A・H)N=A・I-2I=A・I-1 mod N
B=A*
j=2〜qで(FOR j=2 to q)
B=▲P▼(B・B)Nより、A2(I-1)2・I=A2・I-1
E(2)=0 B=A2・I-1
j=3 B=▲P▼(B・B)N=A2(I-1)2・I=A4・I-1
E(3)=1 B=▲P▼(B・A*)N=(A4・I-1)(A・I-1)・I=A5・I-1
j=4 B=▲P▼(B・B)N=A10・I-2・I=A10・I-1
E(4)が奇数だったので、寄生要素I-1を取り除くために、最後の乗算はAによるものである。
B=▲P▼(B・A)N=A10・I-1・A・I=A11
C=B
【0182】
逆数プロセスによってHパラメータを計算する方法は、米国特許第5513133号明細書に記載されている。
【0183】
次に図3を参照するが、これは本発明がスマートカード及び他のセキュリティ装置に実装される方法を示すブロック略図である。
内部バス500は、CPU502、RAM504、不揮発性メモリ506、制御アクセスEEPROM(controlled access EEPROM)508、モジュラー演算コプロセッサ510を含む部品と連結する。
ここに示すように、コプロセッサ510は、データレジスタ512及び制御レジスタ514を経由して、内部バス500に接続される。
制御アクセスEEPROM508は、アドレス及びデータラッチ手段516、並びに、制御及びテストレジスタ518を経由して接続される。
例えば物理シーケンスランダム生成器(physical sequence random generator)520、セキュリティ論理(security logic)522、スマートカードインターフェース回路524、外部ポートインターフェース回路526のような多様な他の装置が夫々、バスに接続されてもよい。
【0184】
RSAデジタル署名を確認するような暗号プログラムが実行される場合に、べき剰余のようなモジュラー演算機能を必要とする。
暗号関数を呼び出す暗号プログラムは、好ましくはCPU502上で実行される。
【0185】
次に図4を参照するが、これはスマートカードにおいて利用するための本発明の実装の別のブロック略図である。
図3において示されるものと同じ部品は、同じ符号を与えられているが、本実施例の理解に必要なもの以外は、ここでは説明しない。
図4において、CPU502は外部アキュムレーター7350を備えて示される。
演算コプロセッサからのデータをアンロードすることによりSMAPから記憶装置への直接データ転送を可能にする一方で、データ使用禁止スイッチ7340が、データバス500からCPUアキュムレーターを分離する。
【0186】
図5は、J0生成器と共に、図2,6,7のコプロセッサにて図示されるようなコプロセッサ6075内でのデータレジスタバンク(data register bank)6205の好ましい実施例のブロック略図であり、J0生成器は概して▲l▼ビットの一次ゼロ(primary zero)強制関数をコンパイルする(compile)。
【0187】
コプロセッサ6075は、前出の図にあるように、CPUと共にデータバスに接続される。
レジスタバンク6205は、Bレジスタ6070、Aレジスタ6130、Sレジスタ6180、Nレジスタ6200からなる。
各々のレジスタの出力は、直列データスイッチ及び直列プロセス調節器(serial data switch and serial process conditioner)6020に接続し、次いで演算ユニット6206に接続され、そこでモジュラー演算を行う。
Nレジスタ6200と演算ユニット6206との間には、J0生成器552が接続される。
【0188】
本実施例において、J0生成器は、上記したモジュラー演算機能において利用するために、▲l▼ビットの一次ゼロ強制関数をコンパイルする。
【0189】
図6は、図5の演算ユニットの内部ブロック略図である。
このユニットは、更なるY0B0シリアルバッファ(serial buffer)が第一段階でY0を受け入れ、第二段階で次の平方演算のためにモジュラー簡約されたB0を受け入れ、そこでBがNより長いことが明らかになるという点において、好ましくは高速化平方演算(accelerated squaring operation)を支援する。
【0190】
次に図7Aを参照するが、これは図6の演算ユニットの主計算部のブロック図である。
丸数字で表した数字は図7B,Dのシーケンス図に関するものである。
【0191】
次に図7Bを参照するが、これは平方演算の第一の反復(first iteration)へ向かい、第一の反復をも含むプロセスを経時的に示した事象タイミングをポインタで示す図である。
【0192】
次に図7Cを参照するが、これは平方シーケンス(squaring sequence)の第一の反復における次のモンゴメリ平方(Next Montgomery Squaring)を排除する事象シーケンスを示す図である。
丸数字は図7A,B,Dを参照する。
【0193】
次に図7Dを参照するが、これは、平方演算の第一の反復の計算の出力のタイミングを示す事象タイミングをポインタで示す図である。
【0194】
次に図8Aを参照するが、これは概してJ0の選択を示す一組のルックアップテーブルであり、N0の右側の文字のモジュラス2▲ l ▼での負の逆数(multiplicative inverse;乗法逆元)である。
N0は常に、GF(2q)についてモニックである(monic)か、又はGF(p)について奇数であるので、J0は常に存在する。
【0195】
図8A及び8Bにおいて、我々はこのモジュラスの右側の文字をN0と呼ぶ。
我々は、N0jを、局所定義された(locally defined)N0文字のj番目のビットとする。
【0196】
図8Bは、4ビット若しくは2ビットのY0ゼロ強制関数文字のいずれかの設計回路図である。
強制関数への変数入力は、N0ビット(乗算の間一定である)、▲l▼、S0ビット、▲l▼乗数及び被乗数ビットの積の▲l▼の右側のビットAi0及びB0j、GF(2q)又はGF(p)においてどの関数が機能するかを決定する桁上げスイッチ▲S▼である。
A及びBビットは、▲○×▼乗算器及びS0に加算された▲○+▼に入力される。
▲S▼=0の場合、全ての桁上げができなくなる。
【0197】
本発明の内容を明らかにするために別の実施例の文脈において記載される本発明の多様な特徴が、単一の実施例との組合せにより提供され得ることは理解される。
逆に、説明の容易化のために単一の実施例の文脈において記載される本発明の多様な特徴が、別々に、若しくは適切なサブコンビネーションにおいても提供され得る。
【0198】
本発明が、本明細書に特に示され記載されたものに限定されないことは当業者ならば理解できるだろう。
むしろ、本発明の範囲は、本明細書に記載された多様な特徴の変更及び修正と同様に、その多様な特徴の組合せ及びサブコンビネーションをも含み、従来技術にない前述の記載を読めば、当業者ならば思いつくものである。
【0199】
特許請求の範囲において、符号や記号は上記で与えられた意味を有する。
【図面の簡単な説明】
【図1】 本発明の一実施例に係る装置のブロック図であり、四つの主要なレジスタが記載され、演算ユニットへのシリアルデータのフロー経路、及び図3のホストCPUへの入出力データの経路が示される。
【図2】 図1からのデータを演算するように機能する演算ユニットの実施例のブロック図である。
【図3】 典型的にはスマートカード内にある完全なシングルチップのモノリシック暗号コンピュータ(monolithic cryptocomputer))の好ましい実施例のブロック略図である。
【図4】 データ使用禁止スイッチ(data disable switch)が演算ユニットからのデータのアンロードを速めるように作動する完全なシングルチップのモノリシック暗号コンピュータの好ましい実施例のブロック略図である。
【図5】 J0を生成するように作動するデータレジスタバンク(data register bank)のブロック略図である。
【図6】 Y0検知(Y0 sense;Y0センス)が第一段階の出力を0にする演算装置である演算ユニットのブロック略図である。
【図7A】 図7B〜Dのタイミング図及びフロー図に係る丸数字を付したシーケンスアイコンを有する図6の主計算部のブロック図である。
【図7B】 平方演算の第一の反復(first iteration)へ向かい、第一の反復をも含むプロセスを経時的に示した事象タイミングをポインタで示す図である。
【図7C】 図7A,B,Dに係る平方シーケンス(squaring sequence)のアイコン化されたポインタの第一の反復における「次のモンゴメリ平方(Next Montgomery Squaring)」を排除する詳細な事象シーケンスを示す図である。
【図7D】 図7A〜Cに係る計算の出力のタイミングを示す図である。
【図8A】 GF(2q)及びGF(p)におけるY0ベクトルの生成について記載した図であって、▲l▼=2及び▲l▼=4の場合で、右側のN0の負の逆数を決定する一組のルックアップテーブル(look up table;参照表)である。
【図8B】 GF(2q)及びGF(p)におけるY0ベクトルの生成について記載した図であって、▲l▼=2及び▲l▼=4の場合の両数値フィールドにおけるY0関数を生成する信号を記載するブロック略図である。
Claims (22)
- 多項式ベースのGF(2q)及びGF(p)の両フィールドの演算において▲○×▼乗算及び平方を実行するマイクロエレクトロニクス装置であって、
直列に供給される基数2▲l▼の乗数Bと、k文字の被乗数セグメントAiと、k文字の▲○+▼アキュムレーターとを使用する平方及び簡約において、限定された合同への簡約がモジュラスN上で被乗数Aiに乗数Bを掛け合わせて実行され、その結果が多くとも2k+1文字長さであり、最初に発生し無視され保存されないkのゼロ文字を含み、k文字がモジュラスと同等以上のビットを有し、前記装置は、
各々が少なくともnビット長さのオペランドを保持するように動作し、夫々乗数値B及び2nより小さなモジュラスNを保存するように動作する第一主メモリレジスタ手段及び第二主メモリレジスタ手段と、
▲○+▼アダーアキュムレーターデバイスにおける値にモジュラス値が▲○+▼加算されるような場合に、前記▲○+▼アダーアキュムレーターデバイスから発生する全ての最初のk文字がゼロにされるように、予測するデジタル論理検知検出器と、
ただ一つの少なくともk文字長さの▲○+▼加算器と、k文字の被乗数を受け入れるように動作する▲○+▼加算装置と、順番に被乗数値を▲○+▼アキュムレーターデバイス内に入れ替え、順番に乗数レジスタから乗数値を受け入れるように動作する▲○×▼乗算装置と、kの最初に発生するゼロ文字を出力させるような乗数と同時に生成した予測値とを有し、各々の有効マシンサイクルで少なくとも一つの指定された被乗数が▲○+▼加算装置に▲○+▼加算される、少なくともk文字の入力被乗数のためのモジュラー乗算装置と、
全ゼロ文字列の値である第一被乗数、被乗数Aiである第二被乗数、モジュラスNの右側のk文字からなるモジュラスのN0セグメントである第三被乗数のうちの二つの被乗数からなる、順番に▲○+▼アキュムレーションデバイス内に入れ替えられる被乗数値と、
▲l▼ビットのk文字の直列入力されるゼロ強制変数の乗数値を予測する装置と、
乗算装置に順番に入力されるBオペランドである乗数値と、同時に、最初に発生するゼロを出力させるため予測されたk文字列であるゼロ強制変数からなる第二乗数値と、
▲○+▼アキュムレーションデバイスであって、被乗数が該アキュムレーションデバイスへ▲○+▼加算されると同時に値を出力するように動作する▲○+▼アキュムレーションデバイスと、
▲○+▼アキュムレーションデバイスからの最終のモジュラー▲○×▼乗算の結果を出力するように動作する出力転送機構とからなるマイクロエレクトロニクス装置。 - ▲○+▼アキュムレーションデバイスへの▲○+▼加算が、各々の新たな直列にロードされた上位の乗数の文字により始まる請求項1記載のマイクロエレクトロニクス装置。
- 乗数が、入力された乗数文字と対応する入力されたゼロ強制変数文字の両方がゼロの場合は、▲○+▼アキュムレーションデバイスへの▲○+▼加算はされず、
入力された乗数文字が1であり、対応するゼロ強制変数がゼロである場合は、Ai被乗数のみが▲○+▼加算され、
入力された乗数文字がゼロであり、対応するゼロ強制変数が1である場合は、モジュラスNのみが▲○+▼加算され、
入力された乗数文字と対応するゼロ強制変数文字の両方が1である場合は、被乗数Aiと共にモジュラスNが▲○+▼加算されるように動作する請求項1記載のマイクロエレクトロニクス装置。 - 被乗数値Ai,Nを二つの指定されたプリロードバッファにプリロードし、これらの値を第三被乗数プリロードバッファに▲○+▼加算するように動作して、各々の被乗数値を別々に▲○+▼加算する必要をなくす請求項1記載のマイクロエレクトロニクス装置。
- 乗数値が入力において直列単一文字であり、▲○+▼アキュムレーションデバイスの出力が直列単一文字出力であり、Y0検出装置が一回のクロックで一文字のみ予測するように動作する請求項1記載のマイクロエレクトロニクス装置。
- 全ての桁上げ入力がゼロ(▲S▼=0を意味する)まで実行不能とされ、概して、多項式ベースの乗算を実行するように動作する請求項1記載のマイクロエレクトロニクス装置。
- ▲S▼がGF(2q)において計算する回路方程式中の要素に影響するゼロに等しく、▲S▼は桁上げ回路が除かれた回路を示し、▲○+▼で表される全ての加算器及び減算器が排他的論理和に簡約されて、2を法とした加算/減算要素となる請求項1記載のマイクロエレクトロニクス装置。
- 多項式ベースのオペランドでの▲○×▼乗算が逆モードで実行され、右側のMS文字から左側のLS文字を乗算し、モンゴメリ寄生要素2-nなしでモジュラー簡約された▲○×▼乗算を実行する請求項1記載のマイクロエレクトロニクス装置。
- プリロードバッファが直列供給され、被乗数値が複数の記憶装置から即座にプリロードバッファにプリロードされる請求項1記載のマイクロエレクトロニクス装置。
- プロセスにおいて用いられる有限体に適するように、▲○+▼が加算を定義し、▲○×▼が乗算を定義し、
デジタル論理検知検出器が▲○+▼アキュムレーションデバイスにおいて▲○+▼加算にモジュラスを▲○+▼加算する必要性を検出するように動作する時に、最初に発生する出力文字がゼロであるように、▲l▼ビットの▲○+▼加算器回路を経由して、更なるnビットのレジスタSから発生する先の値が▲○+▼アキュムレーションデバイスの出力値に▲○+▼加算され、デジタル論理検知検出器が、次に順番に▲○+▼加算した文字A0・Bd mod 2▲l▼、▲S▼(CO0)、SO1、Sd、▲S▼(COZ)を利用して、▲l▼ビットのJ0値により▲○×▼乗算される有限フィールドであるように▲○+▼加算された文字を検出するように動作する請求項1記載のマイクロエレクトロニクス装置。 - ▲l▼=1で、ハードウェアを追加することなく、J0が暗黙的に1であり、J0▲○×▼乗算が暗黙的である請求項1記載のマイクロエレクトロニクス装置。
- 被乗数に乗数を掛けてモジュラスとなる出力ストリームを生成するように動作する、整数である被乗数及び乗数のインタリーブされた有限体▲○×▼モジュラー乗算を実行するマイクロエレクトロニクス装置であって、モジュラスオペランドレジスタにおける文字の数nがkよりも大きく、▲○×▼乗算プロセスが反復で実行され、各々のインタリーブされた反復で▲○×▼乗算装置に入力されるオペランドは、モジュラス、乗数、予め計算された部分的な結果、被乗数のk文字列セグメントからなり、セグメントはA0文字列セグメントからAm-1文字列セグメントまで処理され、各々の反復の結果は次の順番の一時的結果に▲○+▼加算され、反復結果の最初に発生する文字はゼロであって、前記装置は、
各々がオペランドを保存、出力でき、夫々乗算値、部分的な結果値、モジュラスを保存するように動作する乗数の第一主メモリレジスタ、一時的結果の第二主メモリレジスタ、モジュラスの第三主メモリレジスタと、
反復▲○×▼乗算プロセスの間、順番に複数の被乗数値の一つ又は二つを▲○+▼アキュムレーションデバイスに▲○+▼加算し、順番に第一の値である乗数レジスタからの入力と、各々の反復において最初の右側ゼロ文字を出力させる乗数である第二の値である予測値であるゼロ強制変数の入力と、モジュラスレジスタからの第三の値であるモジュラスの入力とを乗数として受け入れるように動作するモジュラー乗算装置と、
少なくとも、被乗数,乗数,モジュラスレジスタ資源からの値を順番に受け入れ、続いて被乗数ゼロ強制変数値をも受け入れるように動作する被乗数並列レジスタと、
乗数又は、被乗数となるような二進列(binary string)を生成するように動作する最初に発生するゼロ強制変数検出装置と、
第一にゼロ、第二に被乗数のk文字列セグメントであるAi、第三にモジュラスの最初に発生するk文字であるN0からなる、▲○+▼アキュムレーションデバイスに入れ替える被乗数値と、
次の反復で部分的な結果を生成するために、アキュムレーションデバイスから発する値に加算される先の反復の結果である一時的結果値Sと、
第一にゼロ、第二にオペランドAi、第三にゼロ強制変数値である、アキュムレーションデバイスに順番に入力される被乗数値と、
乗数オペランドの最初に発生する文字列セグメントである、最初に発生する文字列B0であり、プリロードされた被乗数バッファに生成すると同時に文字毎にロードされる予測されたゼロ強制変数文字列からなる第二の乗数値と並行して乗算する乗算装置に入力される乗数値と、
夫々、Bで表される乗数オペランドからの左側n−k文字の値と、Nで表されるモジュラスの左側n−k文字である、装置に入力される二つの乗数値と、
アキュムレーションデバイスに残存する結果値の左側セグメントを結果レジスタに転送するように動作する乗算フラッシュアウト装置とからなるマイクロエレクトロニクス装置。 - MS文字からLS文字まで乗算する逆モードにおいて多項式ベースのオペランドで乗算が実行され、モンゴメリ寄生要素2-nなしでモジュラー簡約を実行する請求項12記載のマイクロエレクトロニクス装置。
- 出力結果をモジュラスと比較するように動作する少なくとも一つのセンサからなり、その機構が、結果レジスタの出力に第二の減算器を動作させることにより、出力された結果値と限定された合同であるモジュラー簡約された値を出力するように動作し、より小さな結果に第二の記憶装置を割り当てる必要を排除する請求項12記載のマイクロエレクトロニクス装置。
- 最初の値の一つがプリロードバッファにロードされるのと並行して、二つの被乗数の加算である値が、少なくとも一つのk文字メモリ手段レジスタでプリロード文字バッファにロードされる請求項12記載のマイクロエレクトロニクス装置。
- 次の順番に用いられる被乗数が、即座にプリロードレジスタバッファ手段にプリロードされる請求項12記載のマイクロエレクトロニクス装置。
- 二つの被乗数の合計である値が、その一つの値がそのプリロードバッファにロードされるのと並行して少なくとも一つのk文字レジスタに加算される請求項12記載のマイクロエレクトロニクス装置。
- 装置のバッファ及びレジスタは外部メモリー資源からの値をロードされるように動作し、前記バッファ及びレジスタは計算の間に外部メモリー資源にアンロードされるように動作し、オペランドの最大サイズが利用できるメモリー手段に依存する請求項12記載のマイクロエレクトロニクス装置。
- メモリーレジスタ手段が、概して、直列単一文字入力/直列単一文字出力、並列少なくともk文字入力/並列少なくともk文字出力、直列単一文字入力/並列少なくともk文字出力、並列少なくともk文字入力/直列単一文字出力である請求項12記載のマイクロエレクトロニクス装置。
- 乗算型反復の最終段階の間、乗数入力が桁上げ保存累算メモリーの左側セグメントをフラッシュアウトするように動作するゼロ文字である請求項12記載のマイクロエレクトロニクス装置。
- 次の順番の被乗数が、即座にプリロードメモリーバッファにプリロードされる請求項12記載のマイクロエレクトロニクス装置。
- 被乗数値が、中央記憶装置から即座にプリロードバッファにプリロードされる請求項12記載のマイクロエレクトロニクス装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL136151 | 2000-05-15 | ||
IL13615100A IL136151A0 (en) | 2000-05-15 | 2000-05-15 | Method and apparatus for acceleration of cryptographic co-processing peripherals |
IL13967400A IL139674A (en) | 2000-11-14 | 2000-11-14 | Extending the range of computational fields of integers and width of serial input operands in modular arithmetic public key cryptographic co-processors designed for elliptic curve and rsa type computations |
IL139674 | 2000-11-14 | ||
PCT/IL2001/000425 WO2001089129A2 (en) | 2000-05-15 | 2001-05-14 | Extending the range of computational fields of integers |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004501396A JP2004501396A (ja) | 2004-01-15 |
JP2004501396A5 JP2004501396A5 (ja) | 2011-11-10 |
JP4955182B2 true JP4955182B2 (ja) | 2012-06-20 |
Family
ID=26323947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001585437A Expired - Fee Related JP4955182B2 (ja) | 2000-05-15 | 2001-05-14 | 整数の計算フィールド範囲の拡張 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7111166B2 (ja) |
EP (1) | EP1299797B1 (ja) |
JP (1) | JP4955182B2 (ja) |
KR (1) | KR100848412B1 (ja) |
CN (1) | CN1265280C (ja) |
AU (1) | AU5871201A (ja) |
DE (1) | DE60139401D1 (ja) |
WO (1) | WO2001089129A2 (ja) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5869415A (en) * | 1995-06-12 | 1999-02-09 | Sud-Chemie Ag | Process for activating layered silicates |
US7996670B1 (en) * | 1999-07-08 | 2011-08-09 | Broadcom Corporation | Classification engine in a cryptography acceleration chip |
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 |
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 |
IL143951A0 (en) * | 2001-06-21 | 2003-09-17 | Discretix Technologies Ltd | A method and apparatus for carrying out efficiently arithmetic computations in hardware |
US6917956B2 (en) * | 2001-08-14 | 2005-07-12 | Sun Microsystems, Inc. | Apparatus and method for efficient modular exponentiation |
US7027597B1 (en) * | 2001-09-18 | 2006-04-11 | Cisco Technologies, Inc. | Pre-computation and dual-pass modular arithmetic operation approach to implement encryption protocols efficiently in electronic integrated circuits |
US7027598B1 (en) * | 2001-09-19 | 2006-04-11 | Cisco Technology, Inc. | Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits |
US7233663B2 (en) * | 2001-10-29 | 2007-06-19 | Safenet, Inc. | Key generation performance improvement |
CA2369537C (en) * | 2001-12-31 | 2013-07-23 | Certicom Corp. | Method and apparatus for performing finite field calculations |
DE10223853B4 (de) * | 2002-05-28 | 2005-06-23 | Technische Universität Braunschweig Carolo-Wilhelmina | Verfahren und integrierte Schaltung zur Durchführung einer Multiplikation modulo M |
US7401109B2 (en) * | 2002-08-06 | 2008-07-15 | The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Multiplication of multi-precision numbers having a size of a power of two |
US7447310B2 (en) * | 2002-08-06 | 2008-11-04 | The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Lean multiplication of multi-precision numbers over GF(2m) |
US7627114B2 (en) * | 2002-10-02 | 2009-12-01 | International Business Machines Corporation | Efficient modular reduction and modular multiplication |
US20040123123A1 (en) * | 2002-12-18 | 2004-06-24 | Buer Mark L. | Methods and apparatus for accessing security association information in a cryptography accelerator |
US7568110B2 (en) * | 2002-12-18 | 2009-07-28 | Broadcom Corporation | Cryptography accelerator interface decoupling from cryptography processing cores |
US7191341B2 (en) * | 2002-12-18 | 2007-03-13 | Broadcom Corporation | Methods and apparatus for ordering data in a cryptography accelerator |
US20040123120A1 (en) * | 2002-12-18 | 2004-06-24 | Broadcom Corporation | Cryptography accelerator input interface data handling |
US7434043B2 (en) | 2002-12-18 | 2008-10-07 | Broadcom Corporation | Cryptography accelerator data routing unit |
FR2862454A1 (fr) * | 2003-11-18 | 2005-05-20 | Atmel Corp | Methode de reduction modulaire aleatoire et equipement associe |
US7853636B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a pattern detector circuit for convergent rounding |
US7853634B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a SIMD circuit |
US7840630B2 (en) | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Arithmetic logic unit circuit |
US7882165B2 (en) | 2003-12-29 | 2011-02-01 | Xilinx, Inc. | Digital signal processing element having an arithmetic logic unit |
US7860915B2 (en) | 2003-12-29 | 2010-12-28 | Xilinx, Inc. | Digital signal processing circuit having a pattern circuit for determining termination conditions |
US7844653B2 (en) | 2003-12-29 | 2010-11-30 | Xilinx, Inc. | Digital signal processing circuit having a pre-adder circuit |
US7840627B2 (en) * | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Digital signal processing circuit having input register blocks |
US7849119B2 (en) | 2003-12-29 | 2010-12-07 | Xilinx, Inc. | Digital signal processing circuit having a pattern detector circuit |
US7865542B2 (en) | 2003-12-29 | 2011-01-04 | Xilinx, Inc. | Digital signal processing block having a wide multiplexer |
US7853632B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Architectural floorplan for a digital signal processing circuit |
US7870182B2 (en) | 2003-12-29 | 2011-01-11 | Xilinx Inc. | Digital signal processing circuit having an adder circuit with carry-outs |
US7702105B1 (en) * | 2004-04-23 | 2010-04-20 | Oracle America, Inc. | Accelerating elliptic curve point multiplication through batched inversions |
US7801937B1 (en) * | 2004-09-01 | 2010-09-21 | Altera Corporation | Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication |
US20060136717A1 (en) | 2004-12-20 | 2006-06-22 | Mark Buer | System and method for authentication via a proximate device |
US8295484B2 (en) * | 2004-12-21 | 2012-10-23 | Broadcom Corporation | System and method for securing data from a remote input device |
FR2885711B1 (fr) * | 2005-05-12 | 2007-07-06 | Atmel Corp | Procede et materiel modulaire et aleatoire pour la reduction polynomiale |
WO2007045258A1 (en) * | 2005-10-18 | 2007-04-26 | Telecom Italia S.P.A. | A method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems |
US8024391B2 (en) * | 2006-11-06 | 2011-09-20 | Atmel Rousset S.A.S. | Modular multiplication method with precomputation using one known operand |
US7755766B1 (en) | 2007-03-27 | 2010-07-13 | Itt Manufacturing Enterprises, Inc. | Telescope interferometric maintenance evaluation tool |
CN100517214C (zh) * | 2007-05-30 | 2009-07-22 | 北京天碁科技有限公司 | 一种实现二进制多项式运算的硬件配置方法及硬件*** |
US8144864B2 (en) * | 2007-12-28 | 2012-03-27 | Intel Corporation | Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems |
US8543635B2 (en) | 2009-01-27 | 2013-09-24 | Xilinx, Inc. | Digital signal processing block with preadder stage |
US8479133B2 (en) | 2009-01-27 | 2013-07-02 | Xilinx, Inc. | Method of and circuit for implementing a filter in an integrated circuit |
KR101590322B1 (ko) * | 2009-05-15 | 2016-02-19 | 삼성전자주식회사 | 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법 |
CN103765493B (zh) * | 2011-09-06 | 2017-10-24 | 英特尔公司 | 数字平方计算机实现的方法和设备 |
US9355068B2 (en) | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
US10095516B2 (en) | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
CN103207770B (zh) * | 2013-04-16 | 2016-09-28 | 飞天诚信科技股份有限公司 | 一种在嵌入式***中实现大数预计算的方法 |
CN103699357B (zh) * | 2013-12-05 | 2016-11-23 | 西安交通大学 | 一种用于模乘和模平方的快速模约简算法电路 |
CN103888246A (zh) * | 2014-03-10 | 2014-06-25 | 深圳华视微电子有限公司 | 低功耗小面积的数据处理方法及其数据处理装置 |
KR101626743B1 (ko) * | 2014-03-26 | 2016-06-07 | 금오공과대학교 산학협력단 | 유한체상의 몽고메리 알고리즘을 이용한 곱셉기 및 곱셈 방법 |
US10924276B2 (en) * | 2018-05-17 | 2021-02-16 | Intel Corporation | System, apparatus and method for performing a plurality of cryptographic operations |
US11508263B2 (en) * | 2020-06-24 | 2022-11-22 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
US11468797B2 (en) | 2020-06-24 | 2022-10-11 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
CN112230883B (zh) * | 2020-10-14 | 2021-06-01 | 上海芯旺微电子技术有限公司 | 一种用于乘法器零标志位的产生电路、乘法器和检测方法 |
TR2021012485A2 (tr) * | 2021-08-06 | 2022-07-21 | Elektra Elektronik Sanayi Ve Ticaret Anonim Sirketi | Evi̇ri̇ci̇ ve güç çevi̇ri̇ci̇si̇ uygulamalarinda hizli ve yüksek doğruluklu bi̇r hesaplama yöntemi̇ ve söz konusu yönteme göre çalişan bi̇r ci̇haz |
WO2023141934A1 (en) | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Efficient masking of secure data in ladder-type cryptographic computations |
WO2023141935A1 (en) | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Techniques, devices, and instruction set architecture for balanced and secure ladder computations |
CN116830076A (zh) | 2022-01-28 | 2023-09-29 | 辉达公司 | 用于高效模除法和模求逆的技术、设备和指令集架构 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0080528A1 (en) | 1981-11-30 | 1983-06-08 | Omnet Associates | Computational method and apparatus for finite field arithmetic |
US4745568A (en) | 1986-12-16 | 1988-05-17 | Onyszchuk Ivan M | Computational method and apparatus for finite field multiplication |
US5144574A (en) | 1989-01-30 | 1992-09-01 | Nippon Telegraph And Telephone Corporation | Modular multiplication method and the system for processing data |
JPH02199532A (ja) * | 1989-01-30 | 1990-08-07 | Nippon Telegr & Teleph Corp <Ntt> | 剰余乗算の方法および回路 |
US5073870A (en) * | 1989-01-30 | 1991-12-17 | Nippon Telegraph And Telephone Corporation | Modular multiplication method and the system for processing data |
US5065429A (en) | 1989-04-03 | 1991-11-12 | Lang Gerald S | Method and apparatus for protecting material on storage media |
IL94449A (en) | 1990-05-20 | 1994-06-24 | Fortress U & T 2000 Ltd | Method and apparatus for exponentiation over gf(2") |
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 |
JP3406914B2 (ja) * | 1991-09-05 | 2003-05-19 | キヤノン株式会社 | 演算装置及びこれを備えた暗号化装置、復号装置 |
JP3302043B2 (ja) * | 1992-05-18 | 2002-07-15 | キヤノン株式会社 | 暗号通信方法及びそのシステム |
GB9121995D0 (en) * | 1991-10-16 | 1991-11-27 | Jonhig Ltd | Value transfer system |
IL101623A (en) | 1992-04-16 | 1997-06-10 | Fortress U & T 2000 Ltd | Digital signature device |
US5513133A (en) | 1992-11-30 | 1996-04-30 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
JPH0720778A (ja) * | 1993-07-02 | 1995-01-24 | Fujitsu Ltd | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
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 |
US5544246A (en) | 1993-09-17 | 1996-08-06 | At&T Corp. | Smartcard adapted for a plurality of service providers and for remote installation of same |
JP3614480B2 (ja) * | 1994-11-18 | 2005-01-26 | 株式会社日立製作所 | 電子チケット販売・払戻システム及びその販売・払戻方法 |
JPH0944576A (ja) * | 1995-08-02 | 1997-02-14 | Hitachi Ltd | 電子財布貸付システム |
US6553351B1 (en) * | 1996-05-24 | 2003-04-22 | Eduard Karel De Jong | System with and method of cryptographically protecting communications |
EP0818761A1 (en) | 1996-07-12 | 1998-01-14 | Koninklijke KPN N.V. | Integrated circuit card, secure application module, system comprising a secure application module and a terminal and a method for controlling service actions to be carried out by the secure application module on the integrated circuit card |
GB2321979B (en) * | 1997-01-30 | 2002-11-13 | Motorola Ltd | Modular multiplication circuit |
GB9707861D0 (en) * | 1997-04-18 | 1997-06-04 | Certicom Corp | Arithmetic processor |
DE69838390T2 (de) * | 1997-05-04 | 2008-05-29 | Sandisk Il Ltd | Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation |
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 |
US6366940B1 (en) * | 1998-03-02 | 2002-04-02 | Matsushita Electric Industrial Co., Ltd. | High-speed modular multiplication apparatus achieved in small circuit |
-
2001
- 2001-05-14 AU AU58712/01A patent/AU5871201A/en not_active Abandoned
- 2001-05-14 JP JP2001585437A patent/JP4955182B2/ja not_active Expired - Fee Related
- 2001-05-14 KR KR1020027015396A patent/KR100848412B1/ko not_active IP Right Cessation
- 2001-05-14 DE DE60139401T patent/DE60139401D1/de not_active Expired - Lifetime
- 2001-05-14 WO PCT/IL2001/000425 patent/WO2001089129A2/en active Search and Examination
- 2001-05-14 EP EP01932038A patent/EP1299797B1/en not_active Expired - Lifetime
- 2001-05-14 US US09/854,853 patent/US7111166B2/en not_active Expired - Lifetime
- 2001-05-14 CN CNB018095992A patent/CN1265280C/zh not_active Expired - Fee Related
-
2006
- 2006-08-01 US US11/497,496 patent/US7904719B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR100848412B1 (ko) | 2008-07-28 |
EP1299797B1 (en) | 2009-07-29 |
WO2001089129A2 (en) | 2001-11-22 |
EP1299797A2 (en) | 2003-04-09 |
AU5871201A (en) | 2001-11-26 |
JP2004501396A (ja) | 2004-01-15 |
WO2001089129A3 (en) | 2002-03-28 |
US20060269054A1 (en) | 2006-11-30 |
US7904719B2 (en) | 2011-03-08 |
US20020039418A1 (en) | 2002-04-04 |
EP1299797A4 (en) | 2008-04-02 |
CN1449519A (zh) | 2003-10-15 |
DE60139401D1 (de) | 2009-09-10 |
US7111166B2 (en) | 2006-09-19 |
KR20030093905A (ko) | 2003-12-11 |
CN1265280C (zh) | 2006-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
JP3636740B2 (ja) | モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法 | |
Blum et al. | Montgomery modular exponentiation on reconfigurable hardware | |
EP1293891B2 (en) | Arithmetic processor accomodating different finite field size | |
US6185596B1 (en) | Apparatus & method for modular multiplication & exponentiation based on Montgomery multiplication | |
US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
US6085210A (en) | High-speed modular exponentiator and multiplier | |
US6209016B1 (en) | Co-processor for performing modular multiplication | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
Großschädl | High-speed RSA hardware based on Barret’s modular reduction method | |
US7174015B1 (en) | Methods and apparatus for variable radix scalable modular multiplication | |
US7607165B2 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
Tenca et al. | A design framework for scalable and unified multipliers in GF (p) and GF (2m) | |
US7167885B2 (en) | Emod a fast modulus calculation for computer systems | |
KR100481586B1 (ko) | 모듈러 곱셈 장치 | |
Koppermann et al. | Fast FPGA implementations of Diffie-Hellman on the Kummer surface of a genus-2 curve | |
Chevallier-Mames et al. | Faster double-size modular multiplication from Euclidean multipliers | |
KR100297110B1 (ko) | 모듈러곱셈기 | |
Fischer et al. | Scalable rsa processor in reconfigurable hardware-A soc building block | |
de Dormale et al. | Efficient modular division implementation: ECC over GF (p) affine coordinates application | |
Drutarovský et al. | Implementation of Scalable Montgomery Multiplication coprocessor in Altera reconfigurable hardware | |
Großschädl | High-Speed RSA Hardware Based on | |
Großschädl | A new serial/parallel architecture for a low power modular multiplier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080421 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20080421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110426 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110726 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110802 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110825 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110901 |
|
A524 | Written submission of copy of amendment under section 19 (pct) |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20110922 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111101 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120130 |
|
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: 20120221 |
|
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: 20120315 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4955182 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150323 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |