JP2002521720A - モジューロ乗算のための回路および方法 - Google Patents

モジューロ乗算のための回路および方法

Info

Publication number
JP2002521720A
JP2002521720A JP2000561553A JP2000561553A JP2002521720A JP 2002521720 A JP2002521720 A JP 2002521720A JP 2000561553 A JP2000561553 A JP 2000561553A JP 2000561553 A JP2000561553 A JP 2000561553A JP 2002521720 A JP2002521720 A JP 2002521720A
Authority
JP
Japan
Prior art keywords
value
input
output
data
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.)
Pending
Application number
JP2000561553A
Other languages
English (en)
Inventor
ロバート・アイ・フォスター
ジョン・マイケル・バス
ロドニー・シー・テッシュ
ジェイムス・ダグラス・デュウォーキン
マイケル・ジェイ・トーラ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of JP2002521720A publication Critical patent/JP2002521720A/ja
Pending 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)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 コプロセッサ44は、データを暗号化し、暗号を解読するためにモジュラ指数等式を計算する数学的アルゴリズムを実行する。パイプライン化乗算器56はA/B RAM72に格納される16ビット・データ値を受信し、部分積を生成する。生成された部分積は加算器58内で、積RAM64内に格納される前回の部分積と合算される。モジューロ換算器60は、合計値の特定のデータ・ビット位置が論理1値を有するとき、バイナリ・データ値Nを合計値に整合し加算する。N RAM70は、モジューロ換算器60内で合計値に加算されたデータ値Nを格納する。コプロセッサ44は、フォスタ−モンゴメリ換算アルゴリズムを計算し、モンゴメリ換算アルゴリズムで必要とされたように↓の値を最初に計算する必要なしに、(A*B mod N)の値を換算する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】
本発明は、一般に乗算器に関し、さらに詳しくは、暗号化乗算器に関する。
【0002】
【従来の技術】
リベスト−シャミル−エイドルマン(RSA:Rivest-Shamir-Adleman)は、電子
装置間のデジタル・データ転送に関して高度な機密性を提供する、広く用いられ
ている暗号化アルゴリズムである。RSAアルゴリズムのモジュラ累乗法数学は、
ハードウェア乗算器に基づくモジュラ換算のためのモンゴメリ法を利用して効率
的に計算することができる。大きな整数のモジュラ累乗法は、モジュラ乗算を繰
り返すことで効率的に計算することができ、RSA演算全体の効率性は乗算器の速
度に直接的に関わる。ハードウェア乗算器アーキテクチャは、モンゴメリ・アル
ゴリズムの膨大な平衡演算に関するパイプライン化法を利用する。モンゴメリ・
アルゴリズムを計算するパイプライン化ハードウェア乗算器は、速度とシリコン
面積のバランスをとることができ、それにより高性能で費用効果の良い解決策が
得られる。また、パイプライン化整数モジュラ乗算器は、多くの用途で必要とさ
れる電力の軽減を可能にする。
【0003】 RSAアルゴリズムにより容易になる暗号システムは、高レベルの機密性を提供
するが、実現には費用がかかる。モジュラ累乗を伴うRSAアルゴリズムの数学は
簡単明瞭であるが効率的ハードウェアの実現は簡単ではない。より高速の暗号化
動作とより高い性能に対する需要が高まるにつれて、ハードウェア・モジュラ乗
算器アーキテクチャの改良が高度な機密性を確保するために必要とされる。
【0004】 従って、集積回路内に内蔵するための高性能,低コストで電力が低いモジュラ
累乗および乗算システムを有すると有利である。従来技術によるシステムよりも
少ないクロック・サイクルでモンゴメリ・アルゴリズムを演算することにより高
性能を達成する乗算システムが必要である。さらに、ビット数の増大したオペラ
ンドに適応することのできる乗算システムが必要である。
【0005】
【好適な実施例の説明】
図1は、データ通信網内で動作するように構築されるスマートカード10のブ
ロック図である。「コンタクト型」のスマートカード構造においては、スマート
カード10は、いくつかのコンタクト点13に接続されるインタフェース(I/F
)ブロック12を備える。コンタクト点13は、端末装置(図示せず)とスマー
トカード10との間の電気信号の転送を可能にする。スマートカード10は、ス
マートカード10内の機能ブロックにエネルギを供給するコンタクト点13のう
ちの1つを通じて、端末装置から動作電位を受信する。コンタクト点13をさら
に利用して、スマートカード10と端末装置との間の入力/出力(I/O)信号の
転送を行う。
【0006】 あるいは、スマートカード10は、端末装置との物理的接触を行わずに、動作
する「コンタクトレス」スマートカードとすることもできる。この場合、スマー
トカード10は、搬送周波数上での入力信号の受信と、被変調出力信号の送信の
両方を行う。たとえば、無線周波数(RF)エネルギがスマートカード10内のコ
イル(図示せず)に放射され、スマートカード10内の機能ブロックの動作を可
能にする動作電位をコイルが供給する。
【0007】 外部端末装置とデータを送受信するI/Fブロック12に加えて、スマートカー
ド10は、汎用非同期式受信機−送信機装置(UART: Universal Asynchronous R
eceiver-Transmitter device)14を備える。UART14は、マイクロプロセッサ
18と端末装置との間のインタフェースとなる。インタフェース・ブロック、す
なわちUART14は、UART14を通じてデータを動的に移動させるボーレート生成
器16から、可調整クロック信号を受信する。システム・バス15は、一般にマ
イクロプロセッサ18を、UART14,ランダム・アクセス・メモリ(RAM)20
,読取専用メモリ(ROM)22、メモリ・アクセス・コントローラ(MAC:Memory
Access controller)24および機密メモリ管理ユニット(SMMU: Secure Memor
y Management Unit)28などの他の機能ブロックに接続する。UART14から受
信されるデータはRAM20に格納され、RAM20の一部は不揮発性であってスマー
トカード10が動作電位を受信していないときに情報を保持する。不揮発性メモ
リの例としては、特に電気的消去可能(E2:Electrically Erasable)メモリま
たは強電性メモリなどがある。ROM22はスマートカード10のオペレーティン
グ・システムのためのデータと命令とを、マイクロプロセッサ18のプログラム
制御のためのシステム・バスを介して提供する。RAM20からのデータはMAC24
を通じてフォスタ−モンゴメリ・ハードウェア・アクセラレータ(FMHA)26に
転送され、そこで数学的演算が行われてデータを暗号化する。FMHA26はモジュ
ラ演算ユニット(MAU: Modular Arithmetic Unit)または暗号化アクセラレータ
・ブロックとも呼ばれる。暗号化されたデータはFMHA26からシステム・バス1
5を介してUART14と端末装置とに転送される。
【0008】 図1に示されるスマートカード10は、簡略化された形式にあることに注目さ
れたい。さらに、スマートカード10は「コンタクト」モードにおいても「コン
タクトレス」モードにおいても動作するプラスチック・クレジット・カード内部
に埋め込まれるコンピュータ・チップであることに注目されたい。とりわけシリ
アル通信インタフェース・ブロック,ウォッチドッグ・タイマ,インターバル・
タイマ,割込コントローラなどの別のブロックを機能ブロックとしてスマートカ
ード10に追加することもできる。
【0009】 動作中にスマートカード10は、スマートカード10と端末装置との間に送信
されるデータのための安全な通信リンクを開設する。マイクロプロセッサ18の
制御下で、SMMU28,MAC24およびFMHA26が協働し、暗号化キーおよび他の
情報を用いてRAM20に格納されるデータの一部を暗号化するためのモジュラ累
乗等式を計算する数学的アルゴリズムを実行する。例として、RAM20は個人の
健康記録,経済的記録および個人の認証識別子すなわち指紋や網膜アイプリント
などのデータを格納する。個人データはRAM20からシステム・バス15を介し
てMAC24に転送され、MAC24からデータ・ホスト・バス25を介してFMHA26
に転送される。FMHA26は、モジュラ乗算,加算,減算および累乗法を含む関数
を用いてデータ・ホスト・バス25上に受信されるデータを暗号化する。データ
暗号化の後で、暗号化された個人データはFMHA26からUART14およびI/Fブロ
ック12に転送される。暗号化された個人データはコンタクトレス・スマートカ
ードにおいてはRF信号を通じて、またコンタクト型スマートカードにおいては1
組のI/Oピンを通じて端末装置に放出される。
【0010】 図2は、インターネットを介してFMHAブロックを含む集積回路とやりとりされ
ているデータを示す図である。キーボード30が、中央処理装置(CPU)34へ
のデータ入力を行うためのインタフェースをユーザに提供する。モニタ32は、
ユーザがCPU34に格納されるデータを視覚的に表示することを可能にする。集
積回路36は、フォスタ−モンゴメリ・アルゴリズムを実行する暗号化回路構成
を備える。CPU34に格納されるデータは、データ・バスを介して集積回路36
に転送されて暗号化され、暗号データがインターネット38に転送される。また
、インターネット38を介して受信されるデータは集積回路36に転送され暗号
解読することができる。このように、図2は、インターネットなどの通信網にイ
ンタフェースする暗号化システムを示す。
【0011】 図3は、図1のFMHA26に含まれる機能ブロックを示すブロック図である。同
じ要素を示すために図面内では同じ参照番号が用いられることに留意されたい。
さらに、フォスタ−モンゴメリ・アルゴリズムはオペランドA,Bの積を形成す
ることに留意されたい。ただし、オペランドA,Bはいずれも1024ビット数
などの大きな整数である。FMHA26が用いるパイプライン化法により、オペラン
ドA,Bをディジットと呼ばれる複数の規則正しい16ビット数に分割すること
ができる。ディジットには16ビットのデータが含まれるが、これは本発明を制
約するものではない。さらに、オペランドAの数の集合内の各々の分割された数
を値Aと呼ぶ。同様に、オペランドBの数の集合内の各々の分割された数を値B
と呼ぶ。値Aの例は、A0,A1,...A63であり、値Bの例はB0,B1,...B63である
。ホスト・インタフェース(I/F)ブロック40が値Aと値BとをRAM20からデ
ータ・ホスト・バス25(図1)を介して受信する。値A,BはA/Bランダム・
アクセス・メモリ(RAM)72に格納される。また、I/Fブロック40は、ホスト
・プロセッサすなわちマイクロプロセッサ18(図1)から制御信号を受信し、
これらの信号はFMHA26内のデータ転送を制御する制御回路74によりホスト制
御信号に変換される。
【0012】 制御回路74は、データ・バス41と呼ばれるバスを介して、ホストI/Fブロ
ック40の出力に接続される端末を有する。制御回路74は、ホスト・プロセッ
サから制御信号を受信し、ホストI/Fブロック40とFMHA26内の他のブロック
との間の対話を制御する信号を生成する。
【0013】 ディジット・ネゲーション・ユニット(DNU: Digit Negation Unit)42は、
データ・バス41を介してホストI/Fブロック40の出力に接続される入力を有
する。値BがDNU42の入力においてデータ・バス41上でA/B RAM72から受信
され、コプロセッサ44の端末46に転送されるか、あるいはDNU42により1
の補数の負数に変換され端末46に転送される。また、コプロセッサ44は、デ
ータ・バス41に接続されA/B RAM72から値Aを受信する端末48を有する。
コプロセッサ44の端末50,52は、それぞれ部分積値と値Nとを受信するた
めに結合される。オペランドNは、すべての演算の係数であり、数学的計算が有
効な有限界を定義する。そのため可能な数の範囲は、係数により制限される。
【0014】 コプロセッサ44は、フォスタ−モンゴメリ・モジュラ換算アルゴリズムを計
算する。コプロセッサ44は、端末46に接続される第1入力と端末48に接続
される第2入力とを有する乗算器56を備える。加算器回路または加算器58は
、乗算器56の出力に接続される第1入力とコプロセッサ44の端末50に接続
される第2入力とを有する。モジューロ換算器60は、加算器58の出力に接続
される第1入力と、コプロセッサ44の端末52に接続される第2入力とを有す
る。ラッチ62は、モジューロ換算器60の出力に接続される入力とコプロセッ
サ44の端末54に接続される出力とを有する。ラッチ62は、コプロセッサ4
4のある実施例に関しては必要とされない場合もあり、端末46,48,50,
52などの入力に含まれる場合も含まれない場合もある。
【0015】 コプロセッサ44の出力端末は、積RAM64の入力に接続される。積RAM64は
、コプロセッサ44が生成する中間データ値の一時的な格納場所を提供する。例
として、積RAM64は、2つの別々のRAMすなわち偶数メモリと奇数メモリを有し
、これらにより1回のサイクル内で二重のアクセスを行うことができる。たとえ
ば、1サイクルの間に、偶数メモリは、コプロセッサ44が関与する次の計算中
に必要とされるデータを供給し、奇数メモリは、前回の計算でコプロセッサ44
が生成したデータを格納する。次のサイクルで、奇数メモリは、コプロセッサ4
4が関与する次の計算中に必要なデータを供給し、偶数メモリが前回の計算でコ
プロセッサ44が生成したデータを格納する。このようにして、偶数メモリと奇
数メモリが、各サイクル毎に交代して読取モードと書込モードになり、メモリが
同一サイクルの間に両方とも読取モードまたは書込モードになることはない。積
RAM64の偶数メモリと奇数メモリは両方とも、各々が16ビットのデータ(デ
ィジット)を格納する32の行に編成される。
【0016】 積RAM64の出力は、データ・スイッチ・ユニット(DSU:Data Switch Unit)
68の第1入力に接続される。DSU68の第2入力は、データ・バス41に接続
される。DSU68の出力は、コプロセッサ44の端末50に接続される。かくし
て、データ・バス41からのデータまたは積RAM64からのデータのいずれか一
方が部分積値としてDSU68内で選択され、コプロセッサ44の端末50に転送
される。また、積RAM64からのデータは、データ・バス41にも転送すること
ができる。
【0017】 N RAM70は、データ・バス41に接続され、コプロセッサ44が用いる数体
系のための係数値を受信する入力を有する。N RAM70は、たとえば、各々が1
6ビットのデータを格納する64の行に編成される。N RAM70の出力は、ディ
ジット比較ユニット(DCU:Digit Compare Unit)66の第1入力に接続される
。DCU66の第2入力は、データ・バス41に接続される。DCU66の出力は、コ
プロセッサ44の端末52に接続される。かくして、データ・バス41からのデ
ータまたはN RAM70からのデータのいずれか一方が、DCU66内で値Nとして選
択され、コプロセッサ44の端末52に転送される。また、データは、N RAM7
0からデータ・バス41を介してDCU66にも転送することができる。
【0018】 AセクションとBセクションとを有するA/B RAM72は、データ・バス41に
接続され、数学的演算のためのソース・オペランドを受信する。例として、A/B
RAM72は、Aセクション内に1024ビットを有する第1オペランドのディジ
ットのすべて、すなわち被分割オペランドAの値Aの64のディジットを格納す
る。同様に、A/B RAM72は、Bセクション内に1024ビットを有する第2オ
ペランドのディジットのすべて、すなわち被分割オペランドBの値Bの64のデ
ィジットを格納する。このようにして、A/B RAM72は、コプロセッサ44の端
末48に転送される値Aの64ディジットと、DNU42の入力に転送される値B
の64ディジットとを格納する。あるいは、A/B RAM72は、オペランドAを格
納するものとオペランドBを格納するものとの2つの別々のメモリとしてもよい
。さらに、本発明においては、A/B RAM72のBセクションは、暗号化動作が終
了した後のオペランドA,Bの乗算の最終的な積を格納する。積RAM64の出力
は、最終積が計算されると、DSU68内でデータ・バス41に転送される。ホス
トI/Fブロック40は、A/B RAM72のBセクションに格納される最終積すなわち
被暗号化データをデータ・ホスト・バス25に転送することができる。
【0019】 FMHA26は、暗号化および暗号解読のためのオペランドA,Bの乗算を実行す
る。オペランドA,Bは、数値データまたはアメリカ規格協会情報交換標準コー
ド(アスキー符号(ASCII:American Standard Code for Information Intercha
nge))または他の変換済みキャラクタ集合を利用する序数詞に変換される通常
のテキスト・ストリングとすることができる。FMHA26は、このデータをバイナ
リ整数全数として扱う。モジュラ乗算のためのモンゴメリ換算アルゴリズムは、
次の形式をとる: (A*R mod N)(B*R mod N)+↓*N ただし:Aは第1オペランドで整数; Bは第2オペランドで整数; Nは奇数値を有する整数; mod Nは、有限界の要素数を定義する(A*B*R)の剰余数; RはNの値より大きな値を有する2の整数べき数;および ↓は、(A*R mod N)(B*R mod N)+↓*Nが上位ビットを失わずにRで除算する
ことができる整数になるように計算される換算値である。
【0020】 FMHA26の概念を利用するある例においては、2つの1024ビット・オペラ
ンドをパイプライン化法およびコプロセッサ44内の複数のパスまたは回転を用
いて乗算する。このとき、2つの16ビット・バイナリ数が乗算器56により乗
算される。しかし、本発明は1024ビットのオペランドにも、2つの16ビッ
ト・バイナリ数を乗算するハードウェア乗算器にも制約されない。簡単にして説
明を行うために、フォスタ−モンゴメリ・モジュラ換算アルゴリズムを、2つの
小さな数を乗算する以下の例を用いて説明する。モンゴメリ法は、オペランドA
,BをRで予め乗算することによりモンゴメリ形式に変換して、ハードウェア。
モジュラ換算の問題を簡単にする。
【0021】 底2の数を用いて、項(A*R mod N)は、A10=9,R10=16およびN10=13
のとき0001の値を有する。さらに、項(B*R mod N)は、B10=11,R10
16およびN10=13のとき0111の値を有する。以下の例では、フォスタ−
モンゴメリ換算アルゴリズムを(A*R mod N)の乗算、すなわち(0001)と
(B*R mod N)すなわち(0111)に用いる。
【0022】 乗算器56は、2つのデータ値を乗算し、これらのデータ値の積が加算器58
に転送される。加算器58は、前回の部分積と乗算器56から生成される積との
合計値を生成する。フォスタ−モンゴメリ換算アルゴリズムにおいては、合計値
の特定のビット位置の論理値が、合計値が換算されるべきか否かを決定する。最
初は、特定のビット位置が最も右側のビット位置、すなわち第1合計値の最下位
データ・ビットにある。第2データ値のビット位置の値を第1データ値に乗算す
ると、すなわちビット掛け算の後で、特定のビット位置が左側に1ビット位置だ
け移動する。このため、ビット掛け算を生成するたびに、合計値内の特定のビッ
ト位置は左側に1ビット位置だけ移動される。すなわち最下位ビット位置から最
上位ビット位置に向かって移動する。
【0023】 フォスタ−モンゴメリ換算アルゴリズムにおいては、特定のビット位置のデー
タ・ビット値が論理1の値を有するとき、Nの値は、シフト演算により特定のビ
ット位置に整合され、その合計値に加算される。ビット掛け算毎に特定のビット
位置における論理値をチェックし、Nの値を適切に整合および加算することによ
り、コプロセッサ44の出力で生成される各部分積は、コプロセッサ44内の回
転毎に適切に換算される。一方で、Nの値は特定のビット位置のデータ・ビット
値が論理0値を有する場合は、合計値に加算されない。論理0値は、特定のビッ
ト位置の値がすでに換算されており、Nのある倍数が(の成分でないことを示す
【0024】 この例では、乗算器56は値(A*R mod N)すなわち(0001)と値(B*R m
od N)すなわち(0111)の積を生成する。値(0001)に(011)の
最下位ビットすなわち論理1値を乗算することにより、第1ビット掛け算が生成
される。ビット掛け算を生成する各乗算毎に、その結果が格納される部分積と合
算される。格納される部分積は最初は0であるので、第1合計値とビット掛け算
とは等しい値を有することに留意されたい。
【0025】 (1) 0001 ← 初期値(A*R mod N) (2)x0001 ← (B*R mod N)の最下位ビット (3) 0001 ← 第1ビット掛け算 フォスタ−モンゴメリ換算アルゴリズムを用いて、合計値の特定のビット位置
のデータの論理値により、Nの値を合計値に加算して、生成されている部分積を
換算すべきか否かが決まる。この例では、第1ビット掛け算(000)の最下
位ビットは、論理1値を有し、従って、N(4)の値が第1ビット掛け算(3)
に加算される。
【0026】 (3) 0001 ← 第1ビット掛け算の積 (4) +1101 ← Nの値 (5) 1110 ← 第1ビット換算後の結果 第2ビット掛け算は、(1)に(B*R mod N)の右から第2番目のビット(0
1)を乗算する。
【0027】 (1) 0001 ← 初期値 (6) x000 ← (B*R mod N)の右から2番目のビット (7) 0010 ← 第2ビット掛け算の積 第2ビット掛け算の積(7)は、格納された前回の結果(5)と合算されて、
第2合計値(8)を生成する。
【0028】 (7) 0010 ← 第2ビット掛け算の積 (5) 1110 ← 第1ビット換算後の結果 (8) 10000 ← 第2合計値 この場合も、フォスタ−モンゴメリ換算アルゴリズムにおいては、第2合計値
の特定のビット位置の論理値が、第2合計値を換算すべきか否かを決める。この
場合、特定のビット位置は、最下位データ・ビットの左側の位置(1000)
である。第2データ・ビットは論理0値を有し、従って、Nの値は第2合計値に
加算されない。言い換えると、第2合計値はすでに換算されており、シフトされ
るN値の加算を必要としない。
【0029】 第3ビット掛け算は、(1)に(B*R mod N)の右から3番目のビット(0
11)に位置する論理値を乗算する。
【0030】 (1) 0001 ← 初期値 (9) x001 ← (B*R mod N)の右から3番目のビット (10) 0100 ← 第3ビット掛け算の積 第3ビット掛け算の後で、第3ビット掛け算の積(10)が前回の結果(8)
に加算されて、第3合計値(11)が得られる。
【0031】 (10) 0100 ← 第3ビット掛け算の積 (8) +10000 ← 前回の結果 (11)010100 ← 第3合計値 第3ビット掛け算の積(10)を前回の結果(8)と加算した後は、第3合計
値の特定のビット位置の論理値が、合計値を換算すべきか否かを決める。この例
では、特定のビット位置は右から3番目のビット位置(01000)である。
第3合計値の特定のビット位置が論理1値を有するとき、Nの値は第3特定ビッ
ト位置に整合され、第3合計値に加算される。一方で、第3合計値の第3特定ビ
ット位置が論理0を有するときは、Nの値は第3合計値には加算されない。この
例では、第3合計値の右から3番目のビット位置(1000)が論理1値を有
し、Nの値は右から3番目のビット位置に整合されて第3合計値に加算される。
【0032】 (11) 010100 ← 第3合計値 (12)+1101 ← 正しく整合されるNの値 (13)1001000 ← 第3ビット換算の結果 第4ビット掛け算の生成は、(1)に(B*R mod N)の右から4番目のビット
111)に位置する論理値を乗算する。
【0033】 (1) 0001 ← 初期値 (14) x000 ← (B*R mod N)の右から4番目のビット (15) 0000 ← 第4ビット掛け算の積 第4ビット掛け算の後で、第4ビット掛け算の積(15)が前回の結果(13
)に加算されて、第4合計値(16)が得られる。
【0034】 (15) 0000 ← 第4ビット掛け算の積 (13)1001000 ← 前回の結果 (16)1001000 ← 第4合計値 第4合計値(16)の第4特定ビット位置が論理1または論理0値であるかチ
ェックされる。この例については、第4合計値(16)の第4特定ビット位置は
、右から4番目のビット位置(100000)である。この例では、右から4
番目のビット位置(100000)は論理1値を有し、従って、Nの値が右か
ら4番目のビット位置に整合され、第4合計値に加算される。
【0035】 (16)01001000 ← 第4合計値 (17)+1101 ← 正しく整合されるNの値 (18)10110000 ← 第4ビット換算の結果 (A*R mod N)と(B*R mod N)すなわち(0001)と(0111)の積は、
(A*B*R2 mod N)すなわち(10110000)の値を有する。(A*B*R2 mod N
)をRで除算すると、(A*B*R mod N)すなわち(1011)となる。Rの値は
底2の整数倍として選択されることに注目されたい。言い換えると、Rは21
2,23,...,2Iなどの値しか持たないことになる。ただしIは整数であ
る。この例については、Rは24の値を有するように選択される。通常、Rは2S の値を有するよう選択される。ただしSは係数Nのビット数である。このため、
Rで除算する演算は、I回だけ積を右にシフトさせるという簡単な動作で実行さ
れる。さらに、Rで除算した後の値(A*B*R mod N)はモンゴメリ形式、すなわ
ち(値*R)mod Nの形式にある。モンゴメリ形式の値(A*B*R mod N)は、コプ
ロセッサ44内の複数のパスを可能にする。コプロセッサ44が利用するパイプ
ライン化法は、A,B,R,Nの値が大きいときに(A*R mod N)と(B*R mod N
)とを掛け算するための効率的な方法となる。
【0036】 モンゴメリ換算アルゴリズムとは対照的に、フォスタ−モンゴメリ換算アルゴ
リズムにおける↓の値は、2つのオペランドの乗算前には計算されないが、前述
の例に示されるように、各ビット掛け算が前回の結果に合算された後で換算が行
われる。Nの値は奇数である、すなわちNの値は最下位ビットの位置において論
理1を有することに注目されたい。特定のビット位置の論理値が論理1値を有す
るときに合計値にNを加算することにより、値(A*B*R2 mod N)は、さらに下位
のビット位置にいくつかの0を有して生成される。言い換えると、フォスタ−モ
ンゴメリ換算アルゴリズムは、少なくとも最下位ビット位置の数Iに論理0値を
持たせる。
【0037】 データが(A*B*R mod N)の形式にあるコプロセッサ44を通じた演算の後で
は、データに関して望ましい最終的形式は(A*B mod N)である。例の(A*B*R m
od N)の値は(1011)である。値(A*B*R mod N)は、Rによる除算に備え
て換算される。(A*B*R mod N)の換算は、Nの最下位ビット位置を(A*B*R mod
N)の値の論理1を有する最も右側のビット位置に整合することである。例とし
て、値(A*B*R mod N)は、最も右側のビット位置に論理1値を有する(101
)。Nの値を正しく整合し、(A*B*R mod N)と合算した後で、第1ビット換
算後の合計値は11000の値を有する。
【0038】 (19) 1011 ← (A*B*R mod N)の値 (20) +1101 ← Nの値 (21) 11000 ← 第1ビット換算後の新しい合計値 新しい合計値の換算は、Nの最下位ビット位置を論理1値を有する新しい合計
値の最も右側のビット位置(1000)に整合する。第2ビット換算後の値は
(10000000)である。
【0039】 (21) 11000 ← 第1ビット換算後の値 (22) +1101 ← Nの値 (23) 10000000 ← 第2ビット換算後の値 最下位ビット位置のビット数Iが論理0値を有するとき、(A*B*R mod N)の
値は換算され、Rによる除算に備える。言い換えると、Rで除算する演算が換算
後の合計値をI回だけ右にシフトする動作に変わる。ただしIはこの例では4で
ある。
【0040】 (23) 10000000 ← 第2ビット換算後の値 (24) Rで除算またはI回右にシフトする。
【0041】 かくして、Rでの除算後、被暗号化データは(1000)の値を有し、フォス
タ−モンゴメリ換算アルゴリズムは(A*B*R mod N)x(A*B mod N)の乗算に用
いられる。この例の段階19〜24は、Rによる除算を行い、これで値(A*B*R
mod N)が(A*B mod N)に換算される。実際には、この最終的なRによる除算は
、(A*B*R mod N)に1を掛けて換算することにより行われる。
【0042】 動作中、A/B RAM72は、64の値すなわちA0,A1,...A63を有するオペランド
Aと、64個の値すなわちB0,B1,...B63を有するオペランドBとを伴って、ホス
トI/Fブロック40を通じてロードされる。1024ビット・オペランドAは6
4個のディジットA63〜A0が含まれる。ただし各ディジットは16ビットのデー
タを有する。かくして、A/B RAM64のAセクションには64行があり、102
4ビット・オペランドA全体を格納することができ、またA/B RAM64のBセク
ションには64行があり、1024ビット・オペランドB全体を格納することが
できる。さらに、N RAM70はホストI/Fブロック40を通じてロードされ、N63
〜N0の64ディジットに分割される1024ビットを有する。
【0043】 乗算器56は、一度に1つのディジットに関してデータ上で働く。従って、暗
号化または暗号解読のためのオペランドA,Bの乗算は、値A,B,Nの下位デ
ィジットをコプロセッサ44に転送することで始まる。コプロセッサ44の端末
48がディジットA0を、コプロセッサ44の端末46がディジットB0を、コプロ
セッサ44の端末52がディジットN0を受信する。値A0とB0の積が乗算器56に
より計算され、16の最下位データ・ビットが加算器58の入力となる。最上位
の16ビットは、乗算器56の搬送チェーンに一時的に格納される。
【0044】 加算器58は、乗算器56から受信した16のデータ・ビットを積RAM64に
格納される16データ・ビット(当初は0)に加算し、合計値を生成する。モジ
ューロ換算器60は、加算器58から16ビット合計値を、N RAM70からディ
ジットN0を受信する。フォスタ−モンゴメリ換算アルゴリズムにおいては、合計
値の特定のビット位置の論理値により合計値を換算すべきか否かが決まる。モジ
ューロ換算器60は、まず特定のビット位置から最下位ビット位置として始まり
、それに続いてビット掛け算する毎に特定のビット位置が左に1ビット位置ずつ
移動する。言い換えると、特定のビット位置が最下位ビットから始まり、ビット
掛け算毎に最上位ビット位置に向かって指数を付けられる。特定のビット位置の
N0の値を正しく整合し、N0を合計値に加えることにより、値A0とB0とを乗算した
第1部分積が換算され、0の値を有する。モジューロ換算器60が生成した部分
積は積RAM64に格納される。また、↓の16ビット値は、特定のビット位置に
見られる論理値に応じて決定され、モジューロ換算器60内に格納される。
【0045】 第2部分積を生成するには、新たなバイナリ値B1をA/B RAM72からコプロセ
ッサ44に転送して、値A0と乗算する。乗算器56は、値A0とB1との積を計算し
、16の最下位データ・ビットが加算器58の入力となる。加算器58は、乗算
器56から受信した16データ・ビットを積RAM64に格納される16データ・
ビット(当初は0)に加算し、合計値を生成する。モジューロ換算器60は、加
算器58から16ビット合計値を、N RAM70からディジットN1を受信する。モ
ジューロ換算器60は、第1部分積の生成により決定される↓の前回に導かれた
値とN1の値とを利用して、加算器58からの合計値を換算し、第2部分積を生成
する。第2部分積は、積RAM64に格納される。
【0046】 第1群内の部分積の生成を完了するには、A/B RAM72からの値B2〜B63が、順
次コプロセッサ44に転送され、値A0と乗算される。↓の同値を用いて、モジュ
ーロ換算器60は、N RAM70からN2〜N63の対応する値を用いて残りの部分積を
生成する。部分積は、積RAM64に格納される。
【0047】 A0にディジットB0〜B63を乗算して得られる64の部分積を完成させると、A2
にディジットB0〜B63を乗算して得られる第2群の64の部分積が生成される。A 1 ,B0の部分積を生成するにあたり、A1を含む残りの部分積を生成する際に用い
られる↓の値が決定されることに注目されたい。さらに、部分積の残りの群は、
A2にディジットB0〜B63を、A3にディジットB0〜B63...をA63にディジットB0
〜B63を乗算して生成される。B0に関わる部分積が生成されると↓の値が決まり
各群について設定される。ディジットB0がコプロセッサ44の端末46の値であ
るときに↓の値が決定および設定されること、また、出力54に生成される部分
積は0の値を有するよう換算されることに注目されたい。各群は、N0〜N63の対
応値も利用する。
【0048】 図4は、モジューロ換算器60の一部分のブロック図である。モジューロ換算
器60は、簡潔に説明するために、4x4アレイの加算器として簡略化された形
態で説明される。好適な実施例においては、モジューロ換算器60は、16行と
16列を有する加算器アレイを備える。加算器アレイの行数が列数に一致するこ
とが本発明を制限するものでないことに留意されたい。コプロセッサ44は、正
方形でないモジューロ換算器60の加算器アレイ内で動作することができる。
【0049】 モジューロ換算器60の加算器アレイはX列Y行を有する。ただしXとYは整
数である。列X0が第1列であり、加算器90,92,94,96を備える。X1
第2列であり、加算器100,102,104,106を備える。列X2が第3列
であり、加算器110,112,114,116を備える。列X3が第4列であり
、加算器120,122,124,126を備える。加算器90〜96,100
〜106,110〜116,120〜126の各々は、第1および第2データ入
力,搬送入力(CI:carry input),搬送出力(CO: carry output)および合計
出力(S)を有する。
【0050】 列X0の加算器90,92,94,96の第1入力は、それぞれ端末80,82
,84,86に接続される。2入力ANDゲート89,91,93,95は、互い
に接続され、またラッチ128のQ出力に接続される第1入力を有する。ANDゲ
ート89,91,93,95の出力は、それぞれ加算器90,92,94,96
の第2入力に接続される。また、加算器90の搬送出力(CO)は加算器92の搬
送入力(CI)に、加算器92の搬送出力は、加算器94の搬送入力に、加算器9
4の搬送出力は、加算器96の搬送入力に接続される。加算器96の搬送出力は
、ラッチ152のデータ入力に接続される。ラッチ152の出力は、加算器90
の搬送入力に接続される。
【0051】 列X1の加算器100,102,104,106の第1入力は、列X0の加算器9
0,92,94,96の個々の出力に接続される。2入力ANDゲート99,10
1,103,105は、互いに接続され、またラッチ132のQ出力に共通して
接続される第1入力を有する。ANDゲート99,101,103,105の出力
は、加算器100,102,104,106の第2入力にそれぞれ接続される。
また、加算器100の搬送出力は加算器102の搬送入力に、加算器102の搬
送出力は加算器104の搬送入力に、加算器104の搬送出力は加算器106の
搬送入力に接続される。加算器106の搬送出力は、ラッチ156のデータ入力
に接続される。ラッチ156の出力は、加算器100の搬送入力に接続される。
【0052】 列X2の加算器110,112,114,116の第1入力は、列X1の加算器1
00,102,104,106の個々の出力に接続される。2入力ANDゲート1
09,111,113,115は、互いに接続され、またラッチ136のQ出力
に共通して接続される第1入力を有する。ANDゲート109,111,113,
115の出力は、加算器110,112,114,116の第2入力にそれぞれ
接続される。また、加算器110の搬送出力は加算器112の搬送入力に、加算
器112の搬送出力は加算器114の搬送入力に、加算器114の搬送出力は、
加算器116の搬送入力に接続される。加算器116の搬送出力はラッチ160
のデータ入力に接続される。ラッチ160の出力は、加算器110の搬送入力に
接続される。
【0053】 列X3の加算器120,122,124,126の第1入力は、列X2の加算器1
10,112,114,116の個々の出力に接続される。2入力ANDゲート1
19,121,123,125は、互いに接続され、またラッチ140のQ出力
に共通して接続される第1入力を有する。ANDゲート119,121,123,
125の出力は、加算器120,122,124,126の第2入力にそれぞれ
接続される。また、加算器120の搬送出力は加算器122の搬送入力に、加算
器122の搬送出力は加算器124の搬送入力に、加算器124の搬送出力は加
算器126の搬送入力に接続される。加算器126の搬送出力は、ラッチ162
のデータ入力に接続される。ラッチ162の出力は、加算器120の搬送入力に
接続される。加算器120,122,124,126の出力Sは、個々の出力端
末164,166,168.170に接続される。
【0054】 さらに、ANDゲート89,101,113,125の第2入力は互いに接続さ
れ、また入力端末81に共通接続される。ANDゲート91,103,115の第
2入力は互いに接続され、さらにラッチ158の入力と入力端末83とに共通接
続される。ANDゲート93,105の第2入力は互いに接続され、さらにラッチ
154の入力と入力端末85とに共通接続される。ANDゲート95の第2入力は
、ラッチ150の入力と入力端末87とに共通接続される。ANDゲート99,1
11,123の第2入力は、互いに接続され、ラッチ150の出力に共通接続さ
れる。ANDゲート109,121の第2入力は互いに接続され、さらにラッチ1
54の出力に共通接続される。ANDゲート119の第2入力は、ラッチ158の
出力に接続される。
【0055】 ラッチ128,132,136,140は、それぞれセット入力(S),リセ
ット入力(R)および出力(Q)を有する。ラッチ128,132,136,1
40は、信号Tが高であり、出力Qの信号が入力Sの信号と同じ値を持つときに
イネーブルになる。出力Qの信号は、信号Tが高論理値から低論理値へと移行す
るとラッチされる。入力Rの信号は、出力Qの信号をリセットする。ラッチ12
8,132,136,140のリセット入力Rは、互いに、また端末79に共通
接続される。端末79は、リセット信号Rを受信するよう結合される。2入力AN
Dゲート130は、ラッチ128のセット入力に接続される出力を有する。ANDゲ
ート130の第1入力は加算器90の第1入力に接続される。2入力ANDゲート
134は、ラッチ132のセット入力に接続される出力を有する。ANDゲート1
34の第1入力は加算器102の第1入力に接続される。2入力ANDゲート13
8は、ラッチ136のセット入力に接続される出力を有する。ANDゲート138
の第1入力は加算器114の第1入力に接続される。2入力ANDゲート142は
、ラッチ140のセット入力に接続される出力を有する。ANDゲート142の第
1入力は加算器126の第1入力に接続される。ANDゲート130,134,1
38,142の第2入力は互いに接続され、また端末78に共通接続される。端
末78は、信号Tを受信するよう結合される。
【0056】 動作中は、モジューロ換算器60は、加算器58(図3)を介して乗算器56
から入力を受信し、換算された部分積を生成する。前述の例では、数字0001
と0111とが、フォスタ−モンゴメリ換算アルゴリズムを用いて乗算される。
前述の如く、特定のビット位置の論理値により、Nの値が合計値に整合され加算
されるか否かが決まる。特定のビット値の論理値が論理1値を有するとき、モジ
ューロ換算器60のアーキテクチャがNの値を合計値に整合し、さらにそれに加
算されるようシフトする。これにより、モジューロ換算器60のアーキテクチャ
によって、↓の値を決定して、ラッチ128,132,136,140に格納す
ることができる。言い換えると、↓の値はディジットA,Bの乗算前には決まら
ず、A,Bの特定のディジットの乗算中に決定される。
【0057】 ラッチ128,132,136,140は、信号Rによりリセットされて、Q
出力に論理0値を有する。値0111が乗算器56により生成されて、加算器5
8を介して端末80,82,84,86に転送される。ANDゲート130は、端
末80から合計値の最下位データ・ビットを受信し、論理1値の信号Tと共にラ
ッチ128をセットさせる。すなわち、Q出力の信号が論理1値を有する。信号
Tは、B0が乗算器46に供給されN0の値がモジューロ換算器60に供給される間
は、論理1値を有することに注目されたい。信号Tが論理1力論理0値に移行す
ると、ラッチ128,132,136,140内のデータの論理値がラッチされ
る。N0の値が端末81,83,85,87において供給され、前述の例ではN0
1101の値を有する。N0の最下位データ・ビットが端末81において供給され
る。
【0058】 ANDゲート89,91,93,95は、論理1値を有する、ラッチ128のQ
出力における信号によりイネーブルになる。このため、端末81,83,85,
87において受信されるN0の値がそれぞれ、加算器90,92,94,96の第
2入力に転送される。第1および第2入力において論理1を有する加算器90は
、論理0値を有する、出力Sにおける合計出力信号を与える。さらに、加算器9
0は、出力COにおいて搬送信号を生成する。加算器92は、端末83の論理0値
に応答して、第1入力において論理0値を受信する。論理1値が加算器92の第
2入力に受信され、論理1値が入力CIにおいて搬送信号に関して受信されると、
出力Sの合計信号は論理0値を有し、出力COの搬送信号は論理1値を有する。
【0059】 加算器94は、第1入力においてANDゲート93から論理1を、また第2入力
において端末84から論理1を受信する。加算器94の合計出力Sは論理1値を
有し、搬送出力信号は搬送出力COにおいて論理1値を有する。同様に、加算器9
6は、第1入力においてANDゲート95から論理1を、また第2入力において端
末86から論理1を受信する。加算器96の合計出力Sは論理0値を有し、搬送
出力COの搬送信号は論理1値を有する。かくして、加算器90〜96は、加算器
58を通じて乗算器56の合計値を受信することに応答して、0100の値を生
成した。さらに、特定のビット位置、すなわち最下位ビット位置が論理1値を有
し、値1は、フォスタ−モンゴメリ換算アルゴリズムにより、合計値に整合およ
び加算された。
【0060】 列X1における加算器により生成されるデータは、特定のデータ・ビット位置に
おいてデータに依存する値を有する。この場合の特定のデータ・ビット位置は、
加算器92の出力Sに対応する。ANDゲート134は加算器92の出力Sにおい
て合計信号から論理0値を受信することに注目されたい。ラッチ132はセット
されず、ラッチ132のQ出力は論理0値のままになる。ANDゲート99,10
1,103,105は、それぞれ、加算器100,102,104,106の第
2入力において論理0値を生成する。加算器100は、第1および第2入力の両
方において論理0値を有し、出力Sに論理0値を生成する。同様に、加算器10
2は、第1および第2入力の両方において論理0値を有し、出力Sに論理0値を
生成する。加算器104は、第1入力に論理0値を、第2入力に論理1値を有し
、出力Sに論理1値を生成する。加算器106は、第1および第2入力の両方に
おいて論理0値を有し、出力Sに論理0値を生成する。かくして、列X1内の加算
器は値0100を生成する。
【0061】 列X2における加算器により生成されるデータも、特定のデータ・ビット位置に
おいてデータに依存する値を有する。ANDゲート138は加算器104の出力S
において合計信号から論理1値を受信することに注目されたい。ラッチ136が
セットされ、ラッチ136のQ出力は論理1値を有する。ANDゲート109,1
11,113,115は、ラッチ136により生成される論理1値によりイネー
ブルになる。すなわち、加算器100,102,104,106の出力のデータ
が加算器110,112,114,116の第1入力にそれぞれ転送される。加
算器110は、第1および第2入力の両方において論理0値を有し、出力Sに論
理0値を生成する。同様に、加算器112は、第1および第2入力の両方におい
て論理0値を有し、出力Sに論理0値を生成する。加算器114は、第1および
第2入力の両方において論理1値を有し、出力Sに論理0値を、また出力COの搬
送出力信号について論理1値を生成する。加算器116は、第1および第2入力
の両方において論理0値を、搬送入力に論理1を有し、出力Sに論理1値を生成
する。かくして、列X2内の加算器は値1000を生成する。
【0062】 列X3における加算器により生成されるデータも、特定のデータ・ビット位置に
おいてデータに依存する値を有する。この場合の特定のデータ・ビットは、加算
器116の出力における論理値であることに注目されたい。ANDゲート142は
加算器116の出力Sにおいて合計信号から論理1値を受信する。ラッチ140
がセットされ、ラッチ140のQ出力は論理1値を有する。ANDゲート109,
111,113,115は、ラッチ140により生成される論理1値によりイネ
ーブルになる。すなわち、加算器110,112,114,116の出力のデー
タが加算器120,122,124,126の第1入力にそれぞれ転送される。
加算器120は、第1および第2入力の両方において論理0値を有し、出力Sに
論理0値を生成する。同様に、加算器122は、第1および第2入力の両方にお
いて論理0値を有し、出力Sに論理0値を生成する。加算器124も、第1およ
び第2入力の両方において論理0値を有し、出力Sに論理0値を生成する。加算
器126は、第1および第2入力の両方において論理1値を有し、搬送出力にお
いて搬送出力として論理1値を生成する。かくして、列X3内の加算器は値000
0を生成する。
【0063】 列X0,X1,X2,X3内の加算器がAのディジット,ディジットB0およびN0の値
に関する部分積値を換算した後は、↓の値が後の乗算で用いるために決定される
ことに注目されたい。詳しくは、各群の第1部分積が0の値を持つようにさせる
換算プロセスの間に、適切なラッチ128,132,136,140がセットさ
れ、↓に関する値を有する。第1部分積の0への換算後、信号Tは論理1から論
理0値に移行し、↓の値をラッチ128,132,136,140に格納する。
格納された↓の値とN1〜N63の対応する値とが、Aのディジットが乗算器56に
おいてディジットB1〜B63により乗算されるときに用いられる。
【0064】 例として、デジットA0,B0の積に関する16の最下位データ・ビットを、値N0 を用いてモジューロ換算器60により論理0の16ビットに換算する。モジュー
ロ換算器60は、第1部分積を0値に換算する↓値を決定し格納する。乗算器5
6が値A0,B1に関わる次の部分積を生成する際に用いられる最上位データ・ビッ
トを格納する。モジューロ換算器60は、↓の被格納値とN1の値とを用いて、第
2部分積を生成する。A0とB2〜B63に関する他の積が乗算器56により生成され
、↓の被格納値およびN2〜N63の値とを用いてモジューロ換算器60内で換算さ
れる。
【0065】 モジューロ換算器60は、第2群の第1部分積、すなわちA1とB0の積を0値に
換算させる↓の新しい値を決定し格納する。↓のこの新しい値は、A1にB0〜B63
を乗算した部分積の群を生成する際に利用される。これにより、ある群内のすべ
ての部分積の生成に続いて、↓の新しい値が次の群のためにモジューロ換算器6
0により決定される。各群に関して生成される第1部分積は、↓の新しい値によ
り0値を有するよう換算されることに注目されたい。
【0066】 図5は、図3のコプロセッサで用いられる乗算器56と組み合わせたモジュー
ロ換算器60の部分のブロック図である。乗算器構造または合併型フォスタ−モ
ンゴメリ(F-M)乗算器171は、簡単に説明するために4x4アレイの加算器
として、簡略化された形で説明される。合併型F-M乗算器171は、同数の行と
列を有する加算器アレイとして説明されるが、これは本発明を制約するものでは
ない。図3の乗算器56,加算器58およびモジューロ換算器60の主な機能が
共に、合併型F-M乗算器171により実行されることに注目されたい。
【0067】 図5に示される合併型F-M乗算器171の形態は、図4に示されるモジューロ
換算器60の形態と同様である。合併型F-M乗算器171もモジューロ換算器6
0も、列X0内に加算器90,92,94,96を、列X1内に加算器100,10
2,104,106を、列X2内に加算器110,112,114,116を、列
X3内に加算器120,122,124,126を有する。また、ラッチ152,
156,160,162は、次の部分積を生成する際に用いられる搬送出力信号
を格納する。列X0〜X3内の各加算器の入力に接続される出力を有するモジューロ
換算器60のANDゲートは、合併型F-M乗算器171においてはマルチプレクサに
よって置き換えられている。マルチプレクサは加算器の第1入力に接続される出
力を有して図示されるが、代替に、マルチプレクサの出力を加算器の第2入力に
接続することもできる。
【0068】 合併型F-M乗算器171のマルチプレクサ(mux)は、それぞれ4つの入力と、
1つの出力と、2つのセレクタ入力とを有する。詳しくは、mux172,174
,176,178は、それぞれ加算器90〜96に接続される出力を有する。mu
x182,184,186,188は、それぞれ加算器100〜106に接続さ
れる出力を有する。mux192,194,196,198は、それぞれ加算器1
10〜116に接続される出力を有する。mux202,204,206,208
は、それぞれ加算器120〜126に接続される出力を有する。さらに、mux1
72〜178の第1セレクタ入力は共に接続され、mux172〜178の第2セ
レクタ入力は共に接続されて、各muxの4つの入力における4つの信号のうちの
1つを加算器90〜96の対応する第1入力に転送する。同様に、mux182〜
188の第1セレクタ入力は共に接続され、mux182〜188の第2セレクタ
入力は共に接続されて、各muxの4つの入力における4つの信号のうちの1つを
加算器100〜106の対応する第1入力に転送する。mux192〜198の第
1セレクタ入力は共に接続され、mux192〜198の第2セレクタ入力は共に
接続されて、各muxの4つの入力における4つの信号のうちの1つを加算器11
0〜116の対応する第1入力に転送する。mux202〜208の第1セレクタ
入力は共に接続され、mux202〜208の第2セレクタ入力は共に接続されて
、各muxの4つの入力における4つの信号のうちの1つを加算器120〜126
の対応する第1入力に転送する。
【0069】 mux172〜178,182〜188,192〜198および202〜208
の4つの入力のうち第1入力が、論理0値を受信するよう結合される。mux17
2〜178の第2入力はディジットBの値を受信し、mux172〜178の第3
入力がNの値を受信する。例として、ディジットA0,B0,N0が合併型F-M乗算器
171に供給される。ディジットB0の最下位データ・ビット、すなわち信号B(
ビット0)がmux172の第2入力に供給される。同様に、ディジットN0の最下
位データ・ビット、すなわち信号N(ビット0)がmux172の第3入力に供給
される。mux172の第4入力は、ビットN0およびB0の最下位データ・ビットの
論理合計値、すなわち信号N+B(ビット0)を受信する。
【0070】 ディジットB0の次に下位のデータ・ビット、すなわち信号B(ビット1)がmu
x174の第2入力に供給される。同様に、ディジットN0の次に下位のデータ・
ビット、すなわち信号N(ビット1)がmux174の第3入力に供給される。mux
174の第4入力は、ビットN0およびB0の次に下位のデータ・ビットの論理合計
値、すなわち信号N+B(ビット)1を受信する。ディジットB0の次のデータ・ビ
ット、すなわち信号B(ビット2)がmux176の第2入力に供給される。同様
に、ディジットN0の次のデータ・ビット、すなわち信号N(ビット2)がmux1
76の第3入力に供給される。mux176の第4入力は、ビットN0およびB0の次
のデータ・ビットの論理合計値、すなわち信号N+B(ビット2)を受信する。同
様に、合併型F-M乗算器171が4ビットx4ビットの乗算を行うこの例では、
ディジットB0の最上位データ・ビット、すなわち信号B(ビット3)がmux17
8の第2入力に供給される。同様に、ディジットB0の最上位データすなわち信号
B(ビット3)がmux178の第3入力に供給される。mux178の第4入力は、
muxの第2および第3入力に供給される値の論理合計値、すなわちディジットN0
,B0の最上位データ・ビットの和を受信する。各muxの第4入力は、そのmuxの第
2および第3入力に供給される値の論理合計値を受信することに注目されたい。
【0071】 mux172〜178の第1セレクタ入力信号が、ラッチ212から受信される
。ラッチ212は、信号Tが論理1から論理0値に移行すると、論理回路210
からデータ信号をラッチする。論理回路210が生成するデータ信号は、信号A
(ビット0)とB(ビット0)の積をP(0)で排他的論理和演算したものであ
る。ただしP(0)は、以前の部分積値の最下位ビットである。mux172〜1
78は、第2セレクタ入力において信号A(ビット0)を受信する。
【0072】 mux182〜188の第1セレクタ入力信号が、ラッチ216から受信される
。ラッチ216は、信号Tが論理1から論理0値に移行すると、論理回路214
からデータ信号をラッチする。論理回路214が生成するデータ信号は、信号A
(ビット1)とB(ビット1)の積を加算器92の合計出力信号で排他的論理和
演算したものである。mux182〜188は、第2セレクタ入力において信号A
(ビット1)を受信する。
【0073】 mux192〜198の第1セレクタ入力信号が、ラッチ220から受信される
。ラッチ220は、信号Tが論理1から論理0値に移行すると、論理回路218
からデータ信号をラッチする。論理回路218が生成するデータ信号は、信号A
(ビット2)とB(ビット2)の積を加算器104の合計出力信号で排他的論理
和演算したものである。mux192〜198は、第2セレクタ入力において信号
A(ビット2)を受信する。
【0074】 mux202〜208の第1セレクタ入力信号が、ラッチ224から受信される
。ラッチ224は、信号Tが論理1から論理0値に移行すると、論理回路222
からデータ信号をラッチする。論理回路222が生成するデータ信号は、信号A
(ビット3)とB(ビット3)の積を加算器116の合計出力信号で排他的論理
和演算したものである。mux202〜208は、第2セレクタ入力において信号
A(ビット3)を受信する。
【0075】 第1および第2セレクタ入力が00の個別論理値を受信すると、mux172〜
178の第1入力の信号が対応するmuxの出力に転送される。第1および第2セ
レクタ入力が01の個別論理値を受信すると、mux172〜178の第2入力の
信号が対応するmuxの出力に転送される。第1および第2セレクタ入力が10の
個別論理値を受信すると、mux172〜178の第3入力の信号が対応するmuxの
出力に転送される。第1および第2セレクタ入力が11の個別論理値を受信する
と、mux172〜178の第4入力の信号が対応するmuxの出力に転送される。
【0076】 合併型F-M乗算器171のアーキテクチャにより、↓の値を決定し、ラッチ2
12,216,220,224内に格納することができることに注目されたい。
言い換えると、↓値はAとBの乗算前には計算されず、ディジットA0,B0の乗算
中に合併型F-M乗算器171のアーキテクチャにより↓の第1値が決定されてラ
ッチ212,216,220,224に格納されることになる。すなわち、A0
B0の積を計算するために用いられるのと同じ乗算サイクルが↓の値を決定するた
めに用いられる。↓の第1値は、他のディジットB1〜B63とA0の乗算中に用いら
れる。↓の第2値は、ラッチ212,216,220,224内にラッチされて
、ディジットB1〜B63とA1との乗算中に用いられる。このように、↓の新しい値
はAとB0の各ディジットの乗算中に決定される。
【0077】 図6は、フォスタ−モンゴメリ換算アルゴリズムで用いられる(R2 mod N)の
値を決定する方法の流れ図である。フォスタ−モンゴメリ換算アルゴリズムのオ
ペランドA,Bは、(A*R mod N)および(B*R mod N)の形を持ち、乗算され
て積(A*B*R2 mod N)が生成される。積(A*B*R2 mod N)は、値Rにより合併型
F-M乗算器171(図5)内で換算され、合併型F-M乗算器171により生成され
る出力が(A*B*R mod N)の値を有するようになる。値(R2 mod N)の生成は、
合併型F-M乗算器171の入力値として、データ・ホスト・バス(図3)を介し
て受信されるオペランドAの初期値を、(A*R mod N)の正しい形に変換し、オ
ペランドBの初期値を(B*R mod N)の正しい形に変換するために必要とされる
。これにより、オペランドA,Bの初期値がモンゴメリ形式に変換される。たと
えば、合併型F-M乗算器171においてオペランドAに値(R2 mod N)を乗算す
ると、換算された出力値を有し、(A*R mod N)となる。同様に、合併型F-M乗
算器171においてオペランドBに値(R2 mod N)を乗算すると、これも換算さ
れた出力値を有し、(B*R mod N)となる。
【0078】 図6は、値(R2 mod N)を生成する方法を示す流れ図230である。値(R2 m
od N)は、(R mod N)とRの成分とを有する。ただし、Rは216*Iまたは2
の整数乗である。Rは、Nを表すディジット数よりも1ディジット多い大きさを
有するものとして選択される。ブロック232は、値(R mod N)に関する初期
値Pを有する変数の生成を示す。Pの値は、Rの値をNの値から減ずることによ
り計算される。初期値Pの生成に続き、ブロック236では、Pの値がNの値と
比較される。P値がN値より大きい場合は、ブロック240で乗数A値が計算さ
れる。ただし乗数A値はN値がP値により乗算され、依然としてP値よりも小さ
い2の最大べき数である。ブロック242で、乗数Aの値がN値により乗算され
、その積(A*N)がP値から減じられて、新しいP値が得られる。ブロック23
6で、N値がP値よりも大きい場合は、Pがシフトされた回数がブロック244
に示される。P値がRの最下位ビット内で0の数だけシフトされると、計算は終
了して、ブロック238のP値は所望の値(R2 mod N)となる。あるいは、ブロ
ック244で、P値についてさらにシフトが必要な場合には、ブロック234に
示すようにPを整数回だけシフトさせる。この整数値は、システムのディジット
寸法として選択され、値「1」を有するPの最上位ビットを適切な回数だけ左に
シフトさせると、値Rが得られる。
【0079】 ブロック240に示されるAの計算は、2つの異なる方法で実行することがで
きる。第1の方法は、Aの値がN値をP値で乗算してなおかつPの値よりも小さ
い値を有するような2の最大べき数となるようにAを生成することである。第2
の方法は、Pの最上位ディジットをNの最上位ディジットで除算した結果の整数
よりも1小さくなるようにAを計算する。流れ図230においては、A値を求め
る第1方法を行うと、A値を計算する第2方法よりも、ブロック236,240
,242のループを数回多く実行することになる。しかし、第2方法に必要とさ
れる回路構成は、第1方法に必要とされる回路構成よりも複雑である。
【0080】 図7は、図6に説明される値(R2 mod N)の生成を示すブロック図である。ま
ず、mux240がRの値をmux240の第1入力から減算器244の入力に転送す
る。また、A値を最初は0として、乗算器242が減算器244の他方の入力に
A値を生成するようにする。減算器244は、mux246の第1入力に値(R-N)
またはPを与える(図6のブロック232参照)。mux246は、P値を、デー
タを16桁シフトさせる、すなわちデータを216倍するシフト回路248に転送
する(図6のブロック234参照)。比較器250が、シフトされたデータがN
値よりも大きな値を有するか否かを確認する(図6のブロック236参照)。例
として、比較器250は、PSHIFTED値とN値の差を与える減算器である。比較
器250は、PSHIFTED値とN値のビット幅の比較を行う排他的論理和ゲートを
備えることもできる。
【0081】 Pのシフトされた値、すなわちPSHIFTEDがN値よりも大きな値を持たない場
合は、PSHIFTED値をmux246の第2入力に転送し、新しいPSHIFTED値を生成
する。新しいPSHIFTED値は、シフト回路248によりさらに16桁シフトされ
たデータを有する。シフト回路248内でデータをシフトするたびに、比較器2
50内で新たなシフト値がN値と比較される。新たなPSHIFTED値がN値よりも
大きな値を有するときは、値(R2 mod N)が生成される。mux240は、新たな
SHIFTED値を減算器244の第1入力に転送する。乗算器242が生成したA
とNの積が、減算器244の第2入力に転送される。ただし、AはNの値で乗算
された結果が新しいPSHIFTED値よりも小さい値を有する積になる2の整数の最
大べき数である。(PSHIFTED−A*N)の差値が所望の値(R2 mod N)に関して減
算器244により生成される。
【0082】 値(R2 mod N)を決定する代替の方法には、(2)nなどの値を有するRの値を
選択する段階が含まれる。ただし、「n」は整数である。言い換えるとRは22
,24,28,...,2256などの値を有するよう選択される。バイナリ表現に
おいては、Rの値は最上位データ・ビットに関しては論理1を有し、それに0の
列が続く。Nのバイナリ値の最上位データ・ビット、すなわちNの最も左側の論
理1ビット位置が、Rの値の論理1に隣接する論理0の値に整合される。Nの整
合された値、NALIGNEDがRから減じられてR−NALIGNEDの差値が求められる。
N値の最も左側の論理1を差値内で論理1値を有する最上位データ・ビットに隣
接する論理0値に整合する段階が、値(R mod N)が得られるまで繰り返される
。言い換えると、N値より小さい値を有する差値は、値(R mod N)に等しい。
【0083】 値(R mod N)を左に1ビット位置シフトさせて、必要に応じて、N値を値(R
mod N)から減ずることにより、値(2R mod N)が得られる。値(2R mod N)は
、乗算器56(図3参照)のオペランドA,Bの両方に関して用いられる。新た
に求められる値(22R mod N)を乗算器56のオペランドA,Bの両方に関して
用いて、コプロセッサ44の出力に値(24R mod N)を生成する。コプロセッサ
44から新たに生成される値は、新しい値が(2)2nR mod N)を有するまで新し
い値の生成において、オペランドA,Bの両方に関する値として繰り返し利用さ
れる。ただし(2)2nは、Rの値に等しい。これにより、値(R2 mod N)が求めら
れる。
【0084】 以上、本発明は集積回路内に構築するための高性能で低価格および低電力を実
現する暗号化乗算システムを提供することが理解頂けよう。フォスタ−モンゴメ
リ・ハードウェア・アクセラレータは、フォスタ−モンゴメリ換算アルゴリズム
を計算し、従来技術によるシステムよりも少ないクロック・サイクル内で大きな
オペランドの乗算を実行することにより高性能を実現する。本方法および回路構
成は、ビット数を増大させたオペランドに適用可能である。
【図面の簡単な説明】
【図1】 フォスタ−モンゴメリ・ハードウェア・アクセラレータ(FMHA:
Foster-Montgomery Hardware Accelerator)ブロックを備えるスマートカードの
ブロック図である。
【図2】 FMHAブロックを備える集積回路からインターネット上に転送され
るデータを示す図である。
【図3】 図1のFMHAブロックに含まれる機能ブロックを示すブロック図で
ある。
【図4】 モジューロ換算器の部分のブロック図である。
【図5】 図1のFMHAで用いられる乗算器と組み合わせたモジューロ換算器
の部分のブロック図である。
【図6】 フォスタ−モンゴメリ換算アルゴリズムで用いられる値(R2 mod
N)を生成する方法を示す流れ図230である。
【図7】 図6に説明される値(R2 mod N)の生成を示すブロック図で
ある。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GE,GH,GM,HR ,HU,ID,IL,IN,IS,JP,KE,KG, KP,KR,KZ,LC,LK,LR,LS,LT,L U,LV,MD,MG,MK,MN,MW,MX,NO ,NZ,PL,PT,RO,RU,SD,SE,SG, SI,SK,SL,TJ,TM,TR,TT,UA,U G,UZ,VN,YU,ZW (72)発明者 ロドニー・シー・テッシュ アメリカ合衆国 アリゾナ州 85020 フ ェニックス ノース・13ス・ストリート 7026 (72)発明者 ジェイムス・ダグラス・デュウォーキン アメリカ合衆国 アリゾナ州 85226 チ ャンドラー ウェスト・シャノン・ストリ ート6802 (72)発明者 マイケル・ジェイ・トーラ アメリカ合衆国 アリゾナ州 85226 チ ャンドラー ウェスト・デル・リオ・スト リート5301 Fターム(参考) 5B022 AA05 BA04 CA03 CA04 FA01 5B056 AA01 FF01 FF02 FF05 FF16 5J104 AA22 NA18

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 モジューロ乗算を行うデータ処理システム(26)であって
    : バイナリ・データ値A,Bを受信する入力(48,46)を有する乗算器(5
    6); 前記乗算器の出力に結合される第1入力と、部分積を受信するために結合され
    る第2入力(50)と、合計値を供給する出力とを有する加算器(58);およ
    び 前記加算器(58)の前記出力に結合される第1入力と、バイナリ・データ値
    Nを受信するために結合される第2入力(52)と、(A*B/R mod N)の形式を
    有するデータ値を供給する出力とを有するモジューロ換算器(60)であって、
    前記合計値の所定のビット位置が第1論理状態を有するときに、前記バイナリ・
    データ値Nを整合し、前記バイナリ・データ値Nを前記合計値に加算することに
    より、換算値↓の最下位データ・ビットが生成されるモジューロ換算器(60)
    ; によって構成されることを特徴とするデータ処理システム。
  2. 【請求項2】 前記換算値↓の全ビットが決定されると、前記データ値がゼ
    ロ値に換算されることを特徴とする請求項1記載のデータ処理システム。
  3. 【請求項3】 スマートカード(10)であって: 前記スマートカードの出力(13)にデータを転送するデータ・バス(15)
    ;および 前記データ・バスに結合され、第1ディジット(A*R mod N)と第2ディジッ
    ト(B*R mod N)とを乗算し、積(A*B*R mod N)を生成して、この積が乗算中に
    Rの値により除算されることにより換算されるモジューロNであるコプロセッサ
    (26) であって、AとBは整数値であり、Nはモジューロ計数で奇数の整数値であり、
    Rは整数値であり、前記モジューロ乗算は、(↓*N)に基づいて行われ、↓は
    第1および第2ディジットを乗算する際に決定されるコプロセッサ(26); によって構成されることを特徴とするスマートカード。
  4. 【請求項4】 前記コプロセッサ(26)が: 前記データ・バスに結合されて前記データを受信する乗算器(56)であって
    、前記データが前記乗算器の第1入力(46)において受信される第1オペラン
    ドと、前記乗算器の第2入力(48)において受信される第2オペランドとを備
    え、前記第1および第2オペランドから積を生成する乗算器(56); 前記乗算器に結合されて前記積を受信する第1入力と、前回の部分積を受信す
    るために結合される第2入力(50)と、前記積と前記前回の部分積との和を提
    供する出力とを有する加算器回路(58);および 前記加算器回路の前記出力に結合される第1入力と、前記バイナリ値Nを受信
    するために結合される第2入力(52)と、偶数値を有する被換算積を供給する
    出力とを有するモジューロ換算器(60); によって構成されることを特徴とする請求項3記載のスマートカード。
  5. 【請求項5】 インターネットにインタフェースする暗号化システム(10
    )であって: データを転送するデータ・バス(15)を有する中央処理装置(18);およ
    び 前記データ・バスに結合されて第1ディジット(A*R mod N)と第2ディジッ
    ト(B*R mod N)とを乗算し、前記第1および第2ディジットの乗算中にRの値
    で除算することにより換算されるモジューロNである積(A*B*R mod N)を生成
    する暗号化アクセラレータ・ブロック(26)であって、AとBとは整数値であ
    り、Nはモジューロ計数で奇数の整数値であり、Rは整数値であり、モジューロ
    乗算が値(↓*N)に基づいて行われ、さらに↓は前記第1および第2ディジッ
    トを乗算する際に決定される暗号化アクセラレータ・ブロック(26); によって構成されることを特徴とする暗号化システム(10)。
  6. 【請求項6】 前記暗号化アクセラレータ・ブロック(26)が: 前記データ・バスに結合されて前記データを受信する乗算器(56)であって
    、前記データが前記乗算器の第1入力(46)において受信される第1値と、前
    記乗算器の第2入力(48)において受信される第2値とを備え、前記第1およ
    び第2値から積を生成する乗算器(56); 前記乗算器の出力に結合される第1入力と、前回の部分積を受信するために結
    合される第2入力(50)と、前記積と前記前回の部分積との和を提供する出力
    とを有する加算器回路(58);および 前記加算器回路の前記出力に結合される第1入力と、前記整数値Nを受信する
    ために結合される第2入力(52)と、被換算積を供給する出力とを有するモジ
    ューロ換算器(60); によって構成されることを特徴とする請求項5記載の暗号化システム(10)
  7. 【請求項7】 前記モジューロ換算器(60)の前記出力に結合される入力
    と、前記加算器回路の前記第2入力に結合される出力とを有するメモリ(64)
    をさらに備えることを特徴とする請求項6記載の暗号化システム(10)。
  8. 【請求項8】 前記データ・バスに結合されて前記第1値を受信する入力と
    、前記乗算器の前記第1入力(46)に結合されて前記第1値の2の負の補数を
    供給する出力とを有するディジット・ネゲーション・ユニット(42)をさらに
    備えることを特徴とする請求項6記載の暗号化システム(10)。
  9. 【請求項9】 数学的演算が実行されるフォスタ−モンゴメリ・ハードウェ
    ア・アクセラレータ(FMHA)(44)のためのアーキテクチャであって: オペランドA,Bをそれぞれ受信するために結合される第1および第2入力(
    48,46)と、部分積を供給する出力とを有する乗算器(56); 前記乗算器の前記出力に結合される第1入力と、前回の被換算部分積を受信す
    るために結合される第2入力(50)と、合計値を供給する出力とを有する加算
    器(58);および 前記加算器の前記出力に結合される第1入力と、係数を受信するために結合さ
    れる第2入力(52)と、被換算部分積を供給する出力とを有するモジューロ換
    算器(60); によって構成されることを特徴とするアーキテクチャ。
  10. 【請求項10】 データを転送するデータ・バス(41); 前記データ・バスに結合され、前記オペランドA,Bを格納する第1メモリ(
    72); 前記データ・バス(41)に結合される第1入力と、前記被換算部分積を受信
    するために結合される第2入力とを有し、前記被換算部分積を格納して、前記前
    回の被換算部分積を提供する第2メモリ(64);および 前記データ・バス(41)に結合される入力と、前記モジューロ換算器の前記
    第2入力に結合される出力とを有し、前記係数を格納する第3メモリ(70); によってさらに構成されることを特徴とする請求項9記載のアーキテクチャ。
JP2000561553A 1998-07-22 1999-01-13 モジューロ乗算のための回路および方法 Pending JP2002521720A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/120,835 1998-07-22
US09/120,835 US6182104B1 (en) 1998-07-22 1998-07-22 Circuit and method of modulo multiplication
PCT/US1999/000826 WO2000005645A1 (en) 1998-07-22 1999-01-13 Circuit and method of modulo multiplication

Publications (1)

Publication Number Publication Date
JP2002521720A true JP2002521720A (ja) 2002-07-16

Family

ID=22392822

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000561553A Pending JP2002521720A (ja) 1998-07-22 1999-01-13 モジューロ乗算のための回路および方法

Country Status (5)

Country Link
US (1) US6182104B1 (ja)
JP (1) JP2002521720A (ja)
CN (1) CN1248102C (ja)
AU (1) AU2228199A (ja)
WO (1) WO2000005645A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324592B1 (en) * 1997-02-25 2001-11-27 Keystone Aerospace Apparatus and method for a mobile computer architecture and input/output management system
JP2001505325A (ja) * 1997-09-16 2001-04-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
FR2796736B1 (fr) * 1999-07-20 2001-11-30 St Microelectronics Sa Procede pour effectuer une multiplication avec accumulation dans un corps de galois
WO2001029652A2 (en) * 1999-10-20 2001-04-26 Accelerated Encryption Processing Limited A cryptographic accelerator
FR2800952B1 (fr) * 1999-11-09 2001-12-07 Bull Sa Architecture d'un circuit de chiffrement mettant en oeuvre differents types d'algorithmes de chiffrement simultanement sans perte de performance
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
US7062657B2 (en) * 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization
US20020061107A1 (en) * 2000-09-25 2002-05-23 Tham Terry K. Methods and apparatus for implementing a cryptography engine
US6914983B2 (en) * 2000-12-19 2005-07-05 International Business Machines Corporation Method for checking modular multiplication
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
JP3904432B2 (ja) 2001-11-16 2007-04-11 株式会社ルネサステクノロジ 情報処理装置
KR100560770B1 (ko) * 2003-09-15 2006-03-13 삼성전자주식회사 실시간 프로토콜 전환 기능을 갖는 비접촉 집적회로 카드및 그것을 포함한 카드 시스템
US20050141095A1 (en) * 2003-12-29 2005-06-30 Youngtack Shim Reflecting sheet
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
DE102006025569A1 (de) * 2005-10-28 2007-05-03 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025713B9 (de) * 2005-10-28 2013-10-17 Infineon Technologies Ag Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025673B9 (de) 2005-10-28 2010-12-16 Infineon Technologies Ag Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE102006025677B4 (de) * 2005-10-28 2020-03-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US7805479B2 (en) * 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
US7849125B2 (en) 2006-07-07 2010-12-07 Via Telecom Co., Ltd Efficient computation of the modulo operation based on divisor (2n-1)
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
US8417756B2 (en) 2007-11-29 2013-04-09 Samsung Electronics Co., Ltd. Method and apparatus for efficient modulo multiplication
US8392489B2 (en) * 2008-02-15 2013-03-05 International Business Machines Corporation ASCII to binary floating point conversion of decimal real numbers on a vector processor
US20100088526A1 (en) * 2008-10-02 2010-04-08 Mcm Portfolio Llc System and Method for Modular Exponentiation
EP2276194B1 (en) * 2009-07-17 2014-11-26 Certicom Corp. System and method for reducing the computation and storage requirements for a Montgomery-style reduction
CN102520907A (zh) * 2011-12-13 2012-06-27 杭州晟元芯片技术有限公司 一种软硬件结合加速器及其实现方法
CN109271137B (zh) * 2018-09-11 2020-06-02 网御安全技术(深圳)有限公司 一种基于公钥加密算法的模乘装置及协处理器
TWI784406B (zh) * 2020-06-04 2022-11-21 熵碼科技股份有限公司 採用迭代計算的模數運算電路
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
CN112989269B (zh) * 2021-03-26 2023-07-25 上海西井科技股份有限公司 加速器及加速器片内计算模块
CN116540977B (zh) * 2023-07-05 2023-09-12 北京瑞莱智慧科技有限公司 模乘法器电路、fpga电路和asic模块

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658094A (en) * 1985-03-28 1987-04-14 Itt Corporation Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer
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 剰余計算装置、テーブル作成装置および乗算剰余計算装置
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
JP3277089B2 (ja) * 1995-02-14 2002-04-22 株式会社東芝 乗算器及び積和演算装置
US5784305A (en) * 1995-05-01 1998-07-21 Nec Corporation Multiply-adder unit
JP3504050B2 (ja) * 1996-01-26 2004-03-08 株式会社東芝 べき乗剰余演算方法及び装置

Also Published As

Publication number Publication date
CN1310816A (zh) 2001-08-29
CN1248102C (zh) 2006-03-29
WO2000005645A1 (en) 2000-02-03
AU2228199A (en) 2000-02-14
US6182104B1 (en) 2001-01-30

Similar Documents

Publication Publication Date Title
JP2002521720A (ja) モジューロ乗算のための回路および方法
US6356636B1 (en) Circuit and method for fast modular multiplication
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US6671709B2 (en) Multiplier cell and method of computing
US7424504B2 (en) Arithmetic processor for accomodating different field sizes
US20050198093A1 (en) Montgomery modular multiplier
US5745398A (en) Method for the implementation of modular multiplication according to the Montgomery method
JP4554239B2 (ja) モンゴメリー類型のモジュラー乗算装置及び方法
US7206410B2 (en) Circuit for the inner or scalar product computation in Galois fields
KR20030093905A (ko) 정수연산필드의 범위를 확장하는 장치
KR100436814B1 (ko) 아이씨카드용 알에스에이 암호 연산 장치
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
US6341299B1 (en) Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed
US6424987B1 (en) Method for the implementation of a specific modular multiplication operation relating to the montgomery method
JP2001034167A (ja) 演算装置及び暗号処理装置
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
EP1818810B1 (en) Circuit and method for multiplying long integer values
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
JP2000207387A (ja) 演算装置及び暗号処理装置
US5999953A (en) Method for the production of a parameter Jo associated with the implementation of a modular operation according to the Montgomery method
JP3904421B2 (ja) 剰余乗算演算装置
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
Ozturk Low Power Elliptic Curve Cryptography
KR100399048B1 (ko) 타원곡선 암호화 장치

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041217

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20050411

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090601

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090828

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100201