JPH11305996A - 乗算を用いる計算装置のデ―タ処理高速化方法および装置 - Google Patents

乗算を用いる計算装置のデ―タ処理高速化方法および装置

Info

Publication number
JPH11305996A
JPH11305996A JP11020245A JP2024599A JPH11305996A JP H11305996 A JPH11305996 A JP H11305996A JP 11020245 A JP11020245 A JP 11020245A JP 2024599 A JP2024599 A JP 2024599A JP H11305996 A JPH11305996 A JP H11305996A
Authority
JP
Japan
Prior art keywords
data
multiplication
memory
multiplier
bits
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
JP11020245A
Other languages
English (en)
Inventor
Matthew Scott Mcgregor
スコット マクレガー マシュー
Thuan P Le
ピー. エルイー スーザン
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.)
Rainbow Technologies Inc
Original Assignee
Rainbow Technologies 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 Rainbow Technologies Inc filed Critical Rainbow Technologies Inc
Publication of JPH11305996A publication Critical patent/JPH11305996A/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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47BTABLES; DESKS; OFFICE FURNITURE; CABINETS; DRAWERS; GENERAL DETAILS OF FURNITURE
    • A47B21/00Tables or desks for office equipment, e.g. typewriters, keyboards
    • A47B21/03Tables or desks for office equipment, e.g. typewriters, keyboards with substantially horizontally extensible or adjustable parts other than drawers, e.g. leaves
    • A47B21/0371Platforms for supporting wrists
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47CCHAIRS; SOFAS; BEDS
    • A47C16/00Stand-alone rests or supports for feet, legs, arms, back or head
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B43WRITING OR DRAWING IMPLEMENTS; BUREAU ACCESSORIES
    • B43LARTICLES FOR WRITING OR DRAWING UPON; WRITING OR DRAWING AIDS; ACCESSORIES FOR WRITING OR DRAWING
    • B43L15/00Supports for attachment to hands or arms for facilitating writing or drawing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation

Abstract

(57)【要約】 【課題】 【解決手段】 乗算装置は、KNビットバスを介して第
二の入力ポートで乗算器に結合されたプリロードレジス
タを用いて、1クロックパルスで被乗数「a」の値を乗
算器にロードする。被乗数「b」(KNビット長)を、
一度にNビットずつ、乗算器の第一の入力ポートに結合
されたNビットバスを介してメモリ出力ポートから乗算
器に供給する。乗算器は、被乗数「b」のNビットに被
乗数「a」のKNビットを乗じ、その積を一度にNビッ
トずつ乗算器出力で与え、メモリ入力ポートを介してメ
モリに供給することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、乗算処理を用いる
計算装置のデータ処理を高速化する方法および装置に関
する。特に、暗号システムの鍵計算において欠かせない
乗算演算を効率的に実行する方法および装置に関する。
【0002】
【従来の技術】暗号システムは、通常、セキュリティの
低い通信チャネルを介して通信されるメッセージに対す
る不正なアクセスを制限するために使用される。一般
に、暗号システムは、羅列した数字などの独特の鍵を使
用することにより暗号化アルゴリズムを制御し、メッセ
ージをセキュリティの低い通信チャネルを介して受け手
に送信する前にメッセージを暗号化する。受け手が暗号
化されたメッセージを復号するためには同じ鍵が必要と
なる。したがって、暗号システムのセキュリティを維持
するために、前もって鍵が送り手から受け手に対して安
全なチャネルを介して配送されていることが不可欠であ
る。しかし、安全な通信チャネルの構築の困難性、また
そのコストが、安全な鍵配送の妨げになっている。さら
に、この事前に鍵配送を行う必要性があることがほとん
どの商用通信において利用の妨げとなっている。
【0003】安全なチャネルを介して鍵配送する困難性
および不便性に鑑み、システムのセキュリティを損なう
ことなく安全性の低いチャネルを介して鍵配送すること
ができる、いわゆる公開鍵暗号システムが提案されてい
る。公開鍵暗号システムは、一対の鍵を利用する。一方
は、公に配送される、すなわち、公開鍵であり、他方
は、受け手によって秘密にされる、すなわち、秘密鍵で
ある。秘密鍵は、公開鍵に数学的に関連しているが、公
開鍵だけから秘密鍵を計算することは実際には不可能な
ものである。このように、メッセージを暗号化するため
に公開鍵が使用され、メッセージを復号するために秘密
鍵が使用される。
【0004】このような暗号システムは、y=bemodn
形式の指数剰余演算を必要とすることが多い。ここで、
底b、指数e、および除数nは、非常に大きい数とし、
たとえば1,024二進デジット、つまり1,024ビットの長さ
を有する。たとえば、指数eが公開鍵として配送され、
底bおよび除数nが前もって受け手に知られている場
合、指数剰余演算を計算することによって秘密鍵yを得
ることができる。底bおよび除数nを知らずに指数eか
ら秘密鍵yを素因数分解するには、膨大な計算および時
間が必要であるので、復号メッセージへの不正なアクセ
スは事実上不可能である。
【0005】
【発明が解決しようとする課題】しかしながら、このよ
うな暗号システムの欠点は、正当な受け手が高速コンピ
ュータを使用した場合でさえ、指数剰余演算がやっかい
な数学的タスクであることであり、相当の処理能力を消
費し、時間を必要とすることである。個人的、商用的、
および公的な目的で秘密データを送信するために利用さ
れる公衆コンピュータネットワークの普及に伴い、多く
のコンピュータユーザーがデータへの不正アクセスを制
限するために暗号システムを必要とすることが予想され
る。しかしセキュリティが増したにもかかわらず、指数
剰余演算の困難性により、コンピュータリソースをかな
り消耗し、データスループットが低下するため、商用暗
号システムの広い範囲での利用の大きな障害となってい
る。
【0006】上記問題に鑑み、本発明は、指数剰余演算
に必要な処理を効率的に実行し、乗算処理を用いる計算
装置のデータ処理を高速化する方法および装置を提供す
る。この方法および装置は、モントゴメリーアルゴリズ
ムを用いた暗号復号装置における処理の高速化を実現す
ることに特に適する。
【0007】
【課題を解決するための手段】上記目的を達成するため
に、本発明の乗算処理を用いる計算装置のデータ処理高
速化方法は、KNビットで表すことができる第1の数と
KNビットで表すことができる第2の数の乗算を実行
し、乗算処理を用いる計算装置のデータ処理を高速化す
る方法であって、1クロックパルスで前記第2の数のK
Nビット分のデータをプリロードレジスタから乗算器の
第2の入力ポートに与える第2の数のKNビットデータ
ロード処理ステップと、1クロックパルスでメモリから
前記第1の数のKNビットデータのうちNビット分のデ
ータを取り出して乗算器の第1の入力ポートに与える第
1の数のNビットデータロード処理ステップと、前記第
2の数のKNビットデータと前記第1の数のNビットデ
ータとを乗じる乗算処理ステップを備え、前記第1の数
のNビットデータロード処理ステップと前記乗算処理ス
テップとをK回繰り返し、前記第1の数のKNビットデ
ータすべてがメモリから読み出されて乗算処理されるま
で繰り返して、前記第1の数と前記第2の数の乗算結果
を生成し、前記計算装置に出力することを特徴とする。
【0008】上記構成により、乗算処理を高速化するこ
とができ、計算装置のデータ処理を高速化することがで
きる。
【0009】次に、前記乗算処理を用いる計算装置のデ
ータ処理高速化方法は、前記計算装置が採用しているア
ルゴリズムから予測される次のKNビットの第2の数を
検知する処理ステップと、前記第1の数のNビットデー
タロード処理ステップの後、1クロックパルスで前記次
の第2の数の予測値データのうちNビット分のデータを
前記メモリから取り出して前記プリロードレジスタに与
える予測値プリロード処理ステップを備え、前記予測値
プリロード処理ステップをK回繰り返し、前記第2の数
の予測値のKNビットデータすべてがメモリから読み出
されてプリロードレジスタにプリロードされるまで繰り
返すことが好ましい。
【0010】上記構成により、適用するアルゴリズムか
ら予測できる次の乗算処理に用いる数をプリロードして
乗算をすることができ、乗算処理を高速化することがで
き、計算装置のデータ処理を高速化することができる。
【0011】次に、前記計算装置のデータ処理高速化方
法は、1クロックパルスで前記第1の数と前記第2の数
の乗算結果のうちNビット分のデータを取り出して乗算
器出力ポートに与える出力処理ステップを備え、前記出
力処理ステップをK回繰り返し、前記乗算結果のKNビ
ットデータすべてが前記乗算器から出力されるまで繰り
返す請求項1に記載の乗算を用いることが好ましい。
【0012】上記構成により、1クロックパルスで前記
第1の数と前記第2の数の乗算結果のうちNビット分の
データを取り出して乗算器出力ポートに与えることがで
き、データ処理を高速化することができる。
【0013】次に、前記乗算を用いる計算装置のデータ
処理高速化方法は、1クロックパルスで前記第1の数と
前記第2の数の乗算結果のうちNビット分のデータ出力
を前記メモリに与えるメモリ書き込み処理ステップを備
え、前記メモリ書き込み処理ステップをK回繰り返し、
前記乗算結果のKNビットデータすべてが前記メモリに
与えられるまで繰り返すことが好ましい。
【0014】上記構成により、1クロックパルスで前記
第1の数と前記第2の数の乗算結果のうちNビット分の
データ出力を前記メモリに書き込むことができ、データ
処理を高速化することができる。
【0015】次に、前記乗算処理を用いる計算装置のデ
ータ処理高速化方法は、前記計算装置が採用しているア
ルゴリズムから予測される次のKNビットの第2の数を
検知する処理ステップと、1クロックパルスで前記第1
の数と前記第2の数の乗算結果のうちNビット分のデー
タ出力を前記メモリに与えるメモリ書き込み処理ステッ
プと、前記第1の数のNビットデータロード処理ステッ
プの後、前記次の第2の数の予測値データのうちNビッ
ト分のデータを前記メモリから取り出して前記プリロー
ドレジスタに与える予測値プリロード処理ステップを備
え、前記メモリ書き込み処理ステップと予測値プリロー
ド処理ステップをK回繰り返すことが好ましい。
【0016】上記構成により、適用するアルゴリズムか
ら予測できる次の乗算処理に用いる数のプリロード、1
クロックパルスで前記第1の数と前記第2の数の乗算結
果のうちNビット分のデータ出力の前記メモリへの書き
込み、Nビット分のデータの予測値プリロードができ、
乗算処理を高速化することができ、計算装置のデータ処
理を高速化することができる。
【0017】次に、前記乗算処理を用いる計算装置のデ
ータ処理高速化方法は、前記メモリの出力ポート、前記
乗算器の出力ポート、および前記プリロードレジスタに
結合されたマルチプレクサを介して、前記メモリ出力の
ポートおよび前記乗算器の出力ポートから選択的に前記
第2の数を前記プリロードレジスタに与えることが好ま
しい。
【0018】上記構成により、マルチプレクサを介し
て、前記メモリ出力のポートおよび前記乗算器の出力ポ
ートから選択的に前記第2の数を前記プリロードレジス
タに与えることができ、柔軟な処理が可能となる。
【0019】次に、1クロックパルスで前記第2の数の
KNビットデータのうちNビット分のデータを前記メモ
リから取り出して前記プリロードレジスタに与えるプリ
ロード処理ステップを備え、前記プリロード処理ステッ
プをK回繰り返し、前記第2の数のKNビットデータす
べてがメモリから読み出されてプリロードレジスタにプ
リロードされるまで繰り返すことが好ましい。
【0020】上記構成により、前記乗算処理を用いる計
算装置のデータ処理高速化方法は、1クロックパルスで
前記第2の数のKNビットデータのうちNビット分のデ
ータを前記メモリから取り出して前記プリロードレジス
タに与える処理を繰り返すことができ、計算装置のデー
タ処理を高速化することができる。
【0021】また、上記課題を解決するため、本発明の
乗算処理を用いる計算装置のデータ処理を高速化する装
置は、KNビットで表すことができる第1の数とKNビ
ットで表すことができる第2の数の乗算を実行し、乗算
処理を用いる計算装置のデータ処理を高速化する装置で
あって、前記第1の数を受け取る第1の入力ポートと第
2の数を受け取る第2の入力ポートと、前記第1の数と
第2の数を乗算して結果を出力する出力ポートを備えた
乗算器と、第1の数のKNビットデータと第2の数のK
Nビットデータを含み、第1のNビットデータチャネル
を介して前記乗算器出力ポートからデータを受け取るメ
モリ入力ポートと、第2のNビットデータチャネルを介
して前記乗算器の第1の入力ポートにデータを与えるメ
モリ出力ポートとを備えたメモリと、入力ポートと出力
ポートを備え、KNビットデータチャネルの出力ポート
を介して前記乗算器の第2の入力ポートに与える前記第
2の数を記憶するプリロードレジスタと、1クロックパ
ルスで前記第2の数のKNビット分のデータを前記プリ
ロードレジスタから前記乗算器の第2の入力ポートに与
える第2の数のKNビットデータロード機能と、1クロ
ックパルスで前記メモリから前記第1の数のKNビット
データのうちNビット分のデータを取り出して前記乗算
器の第1の入力ポートに与える第1の数のNビットデー
タロード機能と、前記第2の数のKNビットデータと前
記第1の数のNビットデータとを前記乗算器において乗
じる乗算処理機能を備え、前記第1の数のNビットデー
タロード処理と前記乗算処理とをK回繰り返し、前記第
1の数のKNビットデータすべてがメモリから読み出さ
れて乗算処理されるまで繰り返して、前記第1の数と前
記第2の数の乗算結果を生成し、前記暗号符号復号化装
置に出力することを特徴とする。
【0022】上記構成により、乗算処理を用いる計算装
置のデータ処理高速化装置は、暗号符号復号化装置の乗
算処理を高速化することができ、計算装置のデータ処理
を高速化することができる。
【0023】次に、前記乗算処理を用いる計算装置のデ
ータ処理高速化装置は、前記乗算器出力ポートからの出
力が、前記プリロードレジスタの入力ポートに伝達的に
結合されていることが好ましい。
【0024】上記構成により、乗算器の出力をプリロー
ドレジスタに入力することができ、乗算結果をプリロー
ドレジスタを介して利用することができ、計算装置のデ
ータ処理を高速化することができる。
【0025】次に、前記乗算処理を用いる計算装置のデ
ータ処理高速化装置は、前記メモリの出力ポートからの
出力が、前記プリロードレジスタの入力ポートに伝達的
に結合されていることが好ましい。
【0026】上記構成により、メモリの出力をプリロー
ドレジスタに入力することができ、メモリ出力値をプリ
ロードレジスタを介して利用することができ、計算装置
のデータ処理を高速化することができる。
【0027】次に、前記プリロードレジスタ、前記乗算
器出力ポート、および前記メモリ出力ポート間の伝達的
結合を選択的に制御するマルチプレクサを介して、前記
乗算器出力ポートからの出力と、前記メモリ出力ポート
からの出力が、前記プリロードレジスタに伝達的に結合
されていることが好ましい。
【0028】上記構成により、マルチプレクサを介し
て、前記メモリ出力のポートおよび前記乗算器の出力ポ
ートから選択的に前記第2の数を前記プリロードレジス
タに与えることができ、柔軟な処理が可能となる。
【0029】次に、上記課題を解決するため、本発明の
乗算装置は、KNビットで表すことができる第1の数と
KNビットで表すことができる第2の数を乗算する乗算
装置であって、Nビット幅チャネルの第1の入力ポート
と、KNビット幅の第2の入力ポートと、出力ポートを
備え、1クロックパルスで前記第2の数のKNビットデ
ータを前記乗算器の第2入力ポートを介して入力する第
2の数の入力手段と、1クロックパルスで前記第1の数
のKNビットデータのうちNビットデータを前記乗算器
の第1の入力ポートを介して入力する第1の数の入力手
段と、前記第2の数のKNビットデータと前記第1の数
のNビットデータを乗ずる乗算処理手段と、前記乗算処
理手段をK回繰り返し、前記第1の数の全KNビットデ
ータが前記第2の数の全KNビットデータと乗算処理を
行ない、乗算結果出力を生成することを特徴とする。
【0030】上記構成により、所定ビット幅の入力ポー
トを備えた乗算装置とし、KNビットデータとNビット
データの乗算処理の繰り返しにより乗算処理を高速化す
ることができる。
【0031】次に、前記乗算装置は、前記出力の全KN
ビットを前記乗算器の出力ポートに与えるまで、前記出
力のNビットを1クロックパルスで前記乗算器の出力ポ
ートに繰り返し与える出力手段を備えることが好まし
い。
【0032】Nビットを1クロックパルスで前記乗算器
の出力ポートに繰り返し与えることができ、乗算処理を
高速化することができる。
【0033】次に、前記乗算装置は、メモリ出力ポー
ト、前記乗算器出力ポート、および前記プリロードレジ
スタに結合されたマルチプレクサを介して、前記メモリ
出力ポートおよび前記乗算器出力ポートから選択的に前
記第2の数を前記プリロードレジスタに与えることが好
ましい。
【0034】上記構成により、マルチプレクサを介し
て、前記メモリ出力のポートおよび前記乗算器の出力ポ
ートから選択的に前記第2の数を前記プリロードレジス
タに与えることができ、柔軟な処理が可能となる。
【0035】次に、前記乗算装置は、前記出力の全KN
ビットを前記プリロードレジスタおよび前記メモリに与
えるまで、1クロックパルスで前記出力のNビットを前
記プリロードレジスタおよび前記メモリに繰り返し与え
る手段をさらに備えることが好ましい。
【0036】上記構成により、前記乗算装置は、1クロ
ックパルスで前記第2の数のKNビットデータのうちN
ビット分のデータを前記メモリから取り出して前記プリ
ロードレジスタに与えることができ、乗算処理を高速化
することができる。
【0037】次に、前記乗算装置は、前記第2の数の全
KNビットを前記プリロードレジスタに与えるまで、1
クロックパルスで前記第2の数のNビットデータを前記
メモリから前記プリロードレジスタに繰り返し与える手
段を備えることが好ましい。
【0038】上記構成により、前記乗算装置は、1クロ
ックパルスで前記第2の数のKNビットデータのうちN
ビット分のデータを前記メモリから取り出して前記プリ
ロードレジスタに与える処理を繰り返すことができ、乗
算処理を高速化することができる。
【0039】次に、前記乗算装置は、次のKNビットの
第2の数を予測する手段と、前記第2の数の予測値デー
タを保持するプリロードレジスタと、前記第1の数の入
力手段実行後、1クロックパルスで前記第2の数の予測
値データのうちNビット分のデータを前記メモリから取
り出して前記プリロードレジスタに与える予測値プリロ
ード入力手段を備え、前記予測値プリロード入力手段を
K回繰り返し、前記第2の数の予測値のKNビットデー
タすべてがメモリから読み出されて前記プリロードレジ
スタにプリロードされるまで繰り返すことが好ましい。
【0040】上記構成により、前記乗算装置は、適用す
るアルゴリズムから予測できる次の乗算処理に用いる数
をプリロードして乗算をすることができ、乗算処理を高
速化することができる。
【0041】また、上記目的を達成するために、本発明
の乗算装置は、第1の数を受け取る第1の入力ポート
と、第2の入力数を受け取る第2入力ポートと、Kクロ
ックサイクルにわたって計算された前記第1の数と前記
第2の数の積の出力を与える乗算器出力ポートとを備え
た乗算器と、前記乗算器出力ポートに結合された入力ポ
ートと、前記乗算器の第1の入力ポートに結合された出
力ポートとを備えた前記第1の数および第2の数を記憶
するメモリと、Kクロックサイクルにわたって前記第2
の数を受け取って記憶し、1サイクルで前記第2の数を
前記乗算器の第2の入力ポートに出力するプリロードレ
ジスタとを備えたことを特徴とする。
【0042】上記構成により、上記された乗算器、メモ
リ、プリロードレジスタをもって乗算装置を提供でき、
KNビットデータとNビットデータの乗算処理の繰り返
しにより乗算処理を高速化することができる。
【0043】次に、前記乗算装置は、前記プリロードレ
ジスタ、前記乗算器出力ポート、および前記メモリ出力
ポート間の伝達的結合を選択的に制御するマルチプレク
サを介して、前記プリロードレジスタが前記乗算器出力
ポートおよび前記メモリ出力ポートに伝達的に結合され
ていることが好ましい。
【0044】上記構成により、前記乗算装置は、マルチ
プレクサを介して、前記メモリ出力のポートおよび前記
乗算器の出力ポートから選択的に前記第2の数を前記プ
リロードレジスタに与えることができ、柔軟な処理が可
能となる。
【0045】なお、次の好ましい実施の形態の詳細な説
明を考慮することにより、当業者は計算的に効率的な乗
算器がより完全に理解でき、さらにその付随する利点お
よび目的が理解されるであろう。
【0046】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照しながら説明する。
【0047】本発明は、乗算処理を用いる計算装置のデ
ータ処理を高速化する方法および装置であって、特に、
任意の除数の大きさを扱うモントゴメリーアルゴリズム
を用いた暗号復号処理を実行する計算装置のデータ処理
を高速化し、2つの入力に対して乗算演算処理を高速に
実行して計算装置に提供する。計算装置のシステム性能
およびデータスループットに対する影響を最小にしつ
つ、十分なレベルの通信セキュリティ構築を確保せしめ
るものである。以下の説明では、複数の図面にわたり、
同一または類似の番号は同一または類似の要素を表わし
ている。
【0048】図1には、典型的な暗号システム装置10
に対して本発明に係る乗算処理機能を含む指数剰余演算
装置20を適用した例のブロック図が示されている。暗
号システム装置10は、中央処理ユニット(CPU)1
2、ランダムアクセスメモリ(RAM)14、読み出し
専用メモリ(ROM)16、および指数剰余演算装置2
0を含んでいる。暗号システム装置10の各要素は、デ
ータおよびコントロールメッセージが送信される双方向
データバスおよびコントロールバス18によって共に結
合されている。CPU12は、暗号システム10の処理
を制御しており、従来のマイクロプロセッサまたはデジ
タルシグナルプロセッサによって提供してもよい。RA
M14は、CPU12の制御処理のための一時データ記
憶を行い、ROM16は、ソフトウェアの不揮発記憶を
行うもので、CPU12によりシーケンシャルに処理さ
れる暗号システム10の全体的処理に関する制御命令セ
ットが記憶される。指数剰余演算装置20は、特定用向
け集積回路(ASIC)またはフィールドプログラマブ
ルゲートアレイ(FPGA)などの特殊機能デバイスを
含み、CPU12における指数剰余演算に関する処理の
実行のために利用される。上記構成の代わりに、暗号シ
ステム装置10の各要素と指数剰余演算装置20が埋め
込みコアプロセスとして提供されるASICまたはFP
GA内に含まれていてもよい。
【0049】従来技術において周知であるように、暗号
システムは、安全性の低い通信チャネルとデータユーザ
との間のインタフェースを提供する。暗号システムは、
通信チャネルを介して暗号システムと通信するリモート
送信機(図示せず)などの外部ソースから暗号データを
受信する。暗号データは、暗号システムによって復号さ
れ、復号データがデータユーザに提供される。逆にデー
タユーザは、平文データを暗号化して通信チャネルを介
して送信するため暗号システムに入力する。暗号システ
ムは、コントロールデータ、公開鍵情報などの様々な平
文メッセージも送受信する。暗号システムにおける通信
のすべてがデータバスおよびコントロールバス18を介
して行なわれている。
【0050】指数剰余演算装置20を図2により詳細に
示す。指数剰余演算装置20は、インタフェース回路2
2、一対の並列処理ユニット24a、24b、およびR
AM25を含み、これらはすべてデータバスおよびコン
トロールバス27を介して内部でつながっている。イン
タフェース回路22は、指数剰余演算装置20と前記暗
号システム装置10のデータバスおよびコントロールバ
ス18との間の通信を制御する。処理ユニット24a、
24bは、それぞれの制御ユニット26a、26bおよ
び乗算器ユニット28a、28bを含み、これらは、以
下さらに説明するように指数剰余演算プロセスを実行す
る内部回路要素をさらに含む。指数剰余演算処理を実行
している間、RAM25は、制御ユニット26a、26
bおよび乗算器ユニット28a、28bによって生成さ
れたデータ値の一時記憶を行う。
【0051】図3に、指数剰余演算装置20によって実
行される機能のシステムレベルのフローダイアグラムを
示す。ステップ101において示されているように、指
数剰余演算装置20は、入力データnに対して、モント
ゴメリー形式であるy=bemod(n)形式の指数剰余演算
を計算して出力する。ここで、nは除数である。除数
n、底bおよび指数eは2進数表現で各々kビットの長
さとする。本発明の好ましい実施の形態においては、k
は1,024ビットである。従来の方法を用いると、そのよ
うな指数剰余演算を解くには、実行しなければならない
乗算計算および剰余計算の回数が多く、それらのデータ
長が大きいため、膨大な計算が必要であろう。本発明に
おいては、問題の大きさを小さくし、実行する乗算の回
数を減らすことによって、指数剰余演算を高効率な方法
により実行する。
【0052】指数剰余演算を効率的に求める方法につい
て以下、検討する。
【0053】指数剰余演算を解くための第一のステップ
として、下記(数1)のように元の指数剰余演算を各コ
ンポーネントに分ける。
【0054】
【数1】
【0055】ここで、pおよびqは大きい素数であり、
n=p*qである。セキュリティのために、pおよびq
はほぼ同じ大きさであるべきである。従来技術として周
知であるように、項q-1mod(p)は、中国人剰余定理か
ら導出される逆数と呼ばれる特殊値である。q-1mod
(p)はqmodpの逆数である。この逆数は、br e(p)mod
pと同じオーダの指数剰余演算を表わすので、ステップ
108において前もって逆数を予め計算し、RAM25
に記憶しておいてもよい。値e(p)およびe(q)は、それ
ぞれemod(p-1)およびemod(q-1)に等しいk/2ビッ
ト値である。br e(p)modpおよびbr e(q)modqにおける
値低減された低減底項brは、それぞれpおよびqに関
してbの剰余算を行うことによって提供される。したが
って、低減底項brもk/2ビット長を有する。
【0056】図3に示されているように、指数剰余演算
を分けることにより、二つの並列パスによる処理が可能
となり、これらは、図2のそれぞれの処理ユニット24
a、24bによって別々に処理される。ステップ10
4、105において、以下さらに説明する技術を用いて
指数剰余演算br e(p)modpおよびbr e(q)modqを別々に
計算する。ステップ102、103において、前もって
両者の指数剰余演算の各底項brを予め計算し、RAM
25に記憶しておいてもよい。
【0057】pおよびqの長さが各々k/2ビットであ
るので、それぞれの問題の大きさが元の形よりかなり小
さく低減されている。さらに、二つの低減化された(k
/2ビットの)指数剰余演算の計算は、一つの処理ユニ
ット内で、対応する元の(kビットの)指数剰余演算の
計算より、必要とするコンピュータ処理時間がかなり短
くなる。この処理時間の減少は、以下に説明するような
効率的なアルゴリズムで指数剰余演算を実行する際に必
要となる乗算回数が、2s2+sに比例することから達
成され得る。ここで、sは、kを乗算オペランドのビッ
トサイズで割った値に等しい。sワードの問題を二つの
分割したs/2ワードの問題として処理すると、1累乗
あたりの乗算処理の回数が(s2/2)+(s/2)に比例
して減少する。たとえば、kが1,024ビットであ
り、乗算オペランドが128ビットであれば、sは8に
なる。したがって、sワードの問題は、136に比例す
る回数の乗算処理を必要とし、一方、二つに分割したs
/2ワードの問題は、それぞれ36に比例する回数の乗
算処理を必要とするであろう。したがって、乗算処理の
回数は、3.778倍減少する。
【0058】ステップ104、105の計算に続き、ス
テップ106において、br e(p)modpから項br e(q)mod
qを引き、その結果にpを加える。ステップ107にお
いて、得られた和にステップ108において予め計算さ
れていた逆数q-1modpを乗じる。このステップは、以
下さらに説明するように剰余演算処理のために最適化し
た乗算器28a、28bのうちの一つによって実行して
もよい。ステップ109において、pに関して得られた
積を剰余算し、ステップ110において、さらにその積
にqを乗じて、kビット値を生成する。最後に、ステッ
プ111において、ステップ105において予め計算さ
れていたbr e(q)modqに最終乗算積を加える。元の項b
eの大きさのかなりの減少に鑑み、ステップ109にお
いて実行する剰余算が、元の指数剰余演算よりかなり容
易であることが理解されるべきである。この指数剰余演
算の最終的な解は、データバスおよびコントロールバス
18に提供され、CPU12によってさらに使用され
る。
【0059】ここで図4および図5a〜図5cを参照す
ると、図3のステップ104、105のbr e(p)modpお
よびbr e(q)modqの指数剰余演算がより詳細に示されて
いる。図4には、累乗を実行するのに必要な乗算回数を
減らすのに使用される指数ビットスキャン法と呼ばれる
ルーチンを説明するフローチャートが示されている。一
般に、指数ビットスキャンルーチンは、指数関数br
e(p)およびbr e(q)をbrの累乗項の積に分解する。この
ルーチンは、ファームウェアにおいてコーディングして
もよく、ソフトウェアプログラムの形式で前記それぞれ
の処理ユニット24a、24bによってシーケンシャル
に実行されてもよい。代わりに、このルーチンを、指数
ビットスキャンルーチンの様々な機能を実行するように
最適化した専用論理回路としてハードワイヤードで構成
してもよい。簡便にするために、以下、指数関数br
e(p)に関する指数ビットスキャンルーチン処理のみにつ
いて説明するが、指数関数br e(q)に関しても同様の処
理を実行しなければならないことが理解されるべきであ
る。
【0060】ステップ200において指数ビットスキャ
ンルーチンを呼び出し、ステップ201においてランニ
ングトータル値を1に初期設定する。ステップ202に
おいて、ビットスキャンされる指数e(p)をレジスタ3
2にロードする。図5a〜図5cには、レジスタ32に
ロードされているkビットの指数e(例えば、ek-1-e
0)が示されている。レジスタ32は、RAM25内で
所定のメモリ空間を含んでいてもよい。まず、指数eの
所定数のビットに対してアクセスするためのウィンドウ
枠34を規定する。ここでは、例として3ビットのウィ
ンドウサイズを使用するが、異なったサイズのものを状
況に応じて使用することもできる。ステップ203およ
び204で規定されるループによって示されているよう
に、3ビットウィンドウの最上位ビット(MSB)に1
が現われるまでウィンドウ枠34をレジスタ32の左側
からシフトする。ステップ203において、1があるか
どうかMSBをチェックし、1を検出しなければ、ステ
ップ204において、ウィンドウ枠34を1ビット右側
にシフトする。図5bには、1ビット右側にシフトされ
たウィンドウ枠34が示されている。このように1を検
出するまでステップ203および204を繰り返す。
【0061】ステップ205において、MSBで1を検
出すると、ウィンドウ枠34の3ビットの二進数値を読
み出す。MSBが1であるので、この数は必然的に4、
5、6または7(すなわち、それぞれ二進数100、1
01、110または111である)となる。ステップ2
06において、低減底b rをウィンドウ34から読み
出した二進数値で累乗した値で、予め計算して用意され
ている値(すなわち、それぞれbr 4、br 5、br 6または
r 7)をメモリからフェッチする。ステップ207にお
いて、この予め計算して用意した値をランニングトータ
ル値に乗じる。このためルーチンを通る最初のパスにお
いて、ランニングトータル値をデフォルトとして1に設
定する必要がある。
【0062】その後、ステップ209においてループが
開始し、指数e(p)の最下位ビット(LSB)がウィン
ドウ枠34に入っているかどうか確かめるためにレジス
タ32をチェックする。ウィンドウ枠34のMSBを読
み出すステップ203とは対照的に、ステップ209で
は、指数e(p)全体のLSBに関してチェックする。L
SBがウィンドウ枠34にまだ入っていなければ、ルー
プはステップ212に続き、ウィンドウ枠34を連続的
に右側にシフトし、ステップ213において、前記各シ
フトごとにランニングトータル値を二乗剰余演算をす
る。ループは、前の3ビットがウィンドウ枠34からな
くなるまで3回繰り返し、すなわち、ウィンドウ枠の3
シフトを行う。3シフトを行うと、ルーチンはステップ
216においてMSBが1であるかどうか判断する。M
SBが1であれば、ルーチンはステップ205に戻り、
ウィンドウ枠34の値をもう一度読み出す。MSBが0
であれば、ステップ217において、指数e(p)のLS
Bがウィンドウ34に入っているかどうか確かめるため
にレジスタ32を再びチェックする。LSBがウィンド
ウ枠34になければ、ステップ212および213を含
むループを再び繰り返し、ウィンドウを再び1ビット右
側にシフトし、シフトによってランニングトータル値を
二乗剰余演算する。
【0063】ステップ217において、LSBがウィン
ドウ枠34に入っていれば、指数e(p)の端に達してお
り、指数ビットスキャンルーチンがほぼ完了しているこ
とを示す。ステップ222において、ウィンドウ枠34
の最後の2ビットを読み出し、ステップ223におい
て、ウィンドウ枠34から読み出された値の回数、ラン
ニングトータル値に低減底brを乗じる。たとえば、下
位2ビットが1、2または3(すなわち、それぞれ二進
数01、10または11)であれば、それぞれ1回、2
回または3回、前回ランニングトータル値に低減底br
を乗じる。下位2ビットの値が0であれば、ランニング
トータル値は変わらない(すなわち、1を乗じる)。次
に、ステップ224において、指数ビットスキャンルー
チンが終了する。
【0064】前記ステップ209における処理の説明に
戻る。ループが開始する前に、指数e(p)のLSBがウ
ィンドウ枠34に入っているかどうか確かめるためにレ
ジスタ32をチェックする。LSBがウィンドウ枠34
に入っていれば、一連のステップを実行し、カウンタ値
をチェックする。カウンタ値は、前記ループを通ったパ
スの回数を示している。カウンタ値が3であれば、ウィ
ンドウ枠34内のビットがすべて既にスキャンされてい
ることを示し、ステップ224において指数ビットスキ
ャンルーチンが終了する。カウント値が2であれば、ウ
ィンドウ枠34内の最後のビット以外が既にスキャンさ
れており、ステップ221において、最後のビット値を
読み出す。カウンタ値が1であれば、ウィンドウ34の
最初のビットだけが既にスキャンされており、ステップ
222において、(前記したように)下2ビットの値を
読み出す。説明を繰り返すが、ステップ223におい
て、ウィンドウで読み出された値の回数、ランニングト
ータル値に低減底brを乗じる。次に、ステップ224
において指数ビットスキャンルーチンが終了する。
【0065】図8には、10ビット指数eで累乗した底
bの指数剰余演算に関する指数ビットスキャン技術の一
例が示されている。ここでは、e=1011010011である。
連続シフトにより、項b1011010011を、((((((((b5)2)
2)2)*b5)2)2)2)2*b3に換算する。項b5が予め計算
して用意されており、メモリからフェッチされているの
で、その項を計算しなくてよいため、処理時間が節約さ
れる。さらに、剰余算の分配則により、上記項のnにつ
いての剰余算処理についてさらに処理時間の節約ができ
る。膨大な回数の乗算、それに続く等量に膨大な剰余算
ではなく、9回の乗算および剰余算のみが必要となり、
計算処理の中間値がより小さいものなので剰余算の方が
その処理の大きさがより小さいものとなる。
【0066】指数e(p)のMSBより指数ビットスキャ
ンが開始するので、各シフトによって二乗剰余算のステ
ップが必要となる。ここで、ウィンドウ枠34内の値は
実際には4、5、6または7ではなく、2kにかかる
4、5、6または7という要素であり、kはウィンドウ
のLSBビットの指数ビット位置である。指数e(p)の
値が底brの累乗として解釈されるので、2kは、k回二
乗することを示唆している。指数e(p)のすべての1を
確実に考慮に入れ、必要とされる予め計算して用意する
値の合計数を減らすために、ウィンドウ内のMSBが1
であれば、予め計算された値を乗じて処理する。
【0067】指数ビットスキャンルーチンにより、br e
(p)modpおよびbr e(q)modqのそれぞれの計算にお
いて実行しなければならない乗算の回数が減っている
が、依然として実行しなければならない乗算が多数あ
る。ここで指数剰余演算装置20は、従来技術において
モントゴメリー乗算と呼ばれる剰余演算項の効率的な乗
算アルゴリズムを利用する。モントゴメリーアルゴリズ
ムは、下記(数2)のように規定されている。
【0068】
【数2】
【0069】ここで、kは除数nのビット数であり、n
は2kと互いに素であり、n>a、n>bである。繰り
返し乗算に対するアルゴリズムを使用するために、モン
トゴメリー乗算を実行する前に、aおよびbの値をモン
トゴメリー形式にしなければならない。ここで、 X*2kmodn=XMont である。
【0070】モントゴメリー乗算される二つの値がモン
トゴメリー形式であれば、結果もモントゴメリー形式で
ある。
【0071】図6には、指数剰余演算装置20によって
実行されるモントゴメリー乗算処理を説明するフローチ
ャートが示されている。図4により前記説明した指数ビ
ットスキャンルーチンのように、モントゴメリー乗算処
理は、ファームウェアにおいてコーディングしてもよ
く、以下さらに説明する処理の特定用途のために用意し
た乗算器28a、28bをアクセスする制御ユニット2
6a、26bによって、それぞれの処理ユニット24
a、24b内でシーケンシャルに実行されてもよい。ま
た代わりに、モントゴメリー乗算ルーチンを、ルーチン
の様々な機能を実行するように最適化された専用論理回
路としてハードワイヤードで構成してもよい。
【0072】図6に示されているように、モントゴメリ
ー乗算ルーチンは、一つの主ループと二つの副ループを
含む。主ループにおいて、被乗数biのワードに被乗数
jの各ワードを乗じる。ここで、jは被乗数ajのワー
ド数であり、iは被乗数biのワード数である。ステッ
プ301において、モントゴメリー乗算ルーチンを呼び
出す。ステップ302において、二つの被乗数ajおよ
びbiを二乗フラグとともにそれぞれのレジスタにロー
ドする。二つの被乗数ajおよびbiが等しければ、二乗
フラグを1に設定し、ステップ400において二乗スピ
ードアップサブルーチンを呼び出すことができる。二乗
スピードアップサブルーチンは、以下より詳細に説明す
る。二つの被乗数ajおよびbiが等しくなければ、二乗
フラグを0に設定する。
【0073】最初の主ループを開始する前に、ステップ
305において、iを1に設定し、被乗数biの最初の
ワードをアクセスする。ステップ306において、二乗
スピードアップサブルーチンを呼び出すべきかどうか判
断するために二乗フラグをチェックする。呼び出さない
場合は、ステップ307においてjを1に設定する。ス
テップ308において、第一の副ループ内で、二つのワ
ードajおよびbiを乗算する。前の桁上げおよび前のc
jにその積を加える。このルーチンを通る最初のパスに
おいて、桁上げおよびcjの初期値が0とする必要があ
る。その結果のうち、下位側のワードをcjとして記憶
し、その結果の上位側のワードを次の桁上げとして使用
する。ステップ309においてajの最後のワードを検
出するまで、ステップ310においてjを増分すること
によって第一の副ループを繰り返し、ステップ309に
おいてajの最後のワードを検出すると、第一の副ルー
プを終了する。第二の副ループを開始する前に、ステッ
プ311において、cjに乗じるとcjの最下位ワードを
全て「0」とする特別換算値を計算し、jを2に設定す
る。その後、ステップ312において、特別換算値に除
数njを乗じ、前の桁上げおよびcjに加える。その結果
のうち下位側のワードをcj-1として記憶し、その結果
の上位側のワードを次のけた上げとして使用する。ステ
ップ313においてcjの最後のワードを検出するま
で、ステップ314においてjを増分することによって
第二の副ループを繰り返し、ステップ313においてc
jの最後のワードを検出すると、第二の副ループを終了
する。第二の副ループが終了すると、ステップ316に
おいてiを増分し、biの最後のワードが主ループを通
過するまで主ループを繰り返す。次に、ステップ317
において、nに関するc jの最終結果の剰余値が得られ
る。ステップ318において、モントゴメリー乗算ルー
チンが終了する。図9には、両方の被乗数が4ワード長
であるajとbiのモントゴメリー乗算の一例が示されて
いる。この例において、前の値すべての組み合わせを示
すために記号Σを使用している。
【0074】図6のモントゴメリー乗算ルーチンは、乗
算の部分積のいくつかが等しいことを認識して二乗計算
のために応用すると、スピードアップをすることができ
る。特に、被乗数ajが被乗数biに等しい場合、すなわ
ち、二乗処理の場合、通常、乗算の様々な成分の部分積
が繰り返されるであろう。たとえば、a2とb3の部分積
は、a3とb2の部分積に等しい。図9に示されているよ
うに、これらの部分積の両方が第三回目の主ループ反復
時に発生する。したがって、最初にその部分積に出会っ
た時、第二回目の発生を考慮してその部分積に2を乗じ
ることができ、第二の部分積の乗算を完全にスキップす
ることができる。2の乗算は、二進数での一回の左シフ
トを構成するので、全数計算による乗算処理よりかなり
速い。前記指数ビットスキャンルーチンの処理により、
指数剰余演算装置20によって多数の二乗処理が実行さ
れ、二乗処理の速度の増加が、特定の指数剰余演算の全
体的な処理時間にかなり影響を及ぼすことが理解される
べきである。
【0075】図7には、ステップ401で呼び出される
二乗スピードアップサブルーチンを説明するフローチャ
ートが示されている。最初、ステップ402においてj
をiに等しく設定する。これは、図6の主ループの最初
の反復においては1である。しかし、その後の主ループ
の反復においては、jがiの最後の値で始まるので、す
でに出て来た部分積の処理をスキップできることは明ら
かである。ステップ403において、iとjを比較す
る。iがjに等しければ、ステップ405において係数
を1に設定する。iとjが等しくなければ、ステップ4
04において係数を2に設定する。その後、ステップ4
06において、ajおよびbiならびに係数を乗算し、前
の桁上げおよびcjにその積を加える。図6のステップ
308のように、その結果のうち下位側のワードをcj
として記憶し、その結果の上位側のワードを次の桁上げ
として使用する。乗算ステップ406の完了後、ステッ
プ408においてjを増分し、bjの最後のワードがル
ープを通過するまでループを繰り返す。bjの最後のワ
ードがループを通過するとステップ409において二乗
スピードアップサブルーチンが終了する。図6のステッ
プ410において、第一の副ループのすぐ後でモントゴ
メリー乗算ルーチンが再開する。二乗フラグを設定する
と、モントゴメリー乗算ルーチンの主ループの反復ごと
に第一の副ループの代わりに二乗スピードアップサブル
ーチンが動作する。
【0076】モントゴメリー乗算ルーチンをより効率的
に実行するために、専用処理を行うように乗算器28
a、28bを調整する。特に、乗算器28a、28b
は、(二乗スピードアップルーチンによって使用され
る)2を乗じるための特定機能と、a*b+c関数を実
行するための特定機能と、より上位側nビットを桁上げ
レジスタに残しながら2nビットの結果に関してmod2n
関数を実行するための特定機能とを含む。
【0077】図10は、本発明を実施することができる
システムアーキテクチャのブロック図である。本実施形
態において、このシステムは、ASIC500で実現さ
れる。ASIC500は、本発明を実現するのに必要な
処理を実行するプロセッサ502を備えたCPU12を
含む。一実施形態において、プロセッサ502は、IB
TMコーポレーション(IBMTM Corporation)から市場
において入手可能なRISC(縮小命令セットコンピュ
ータ)POWERPCTM401コアプロセッサからな
る。プロセッサ502は、インタフェース504および
ウォッチインタフェース506を提供し、外部FLAS
Hメモリ/SRAMメモリとのインタフェースモジュー
ル520および32ビット外部メモリインタフェース5
22を介して命令を得る。インタフェース504および
ウォッチインタフェース506は、誤り検出およびデバ
ッグ機能を備えている。性能を向上させるために、プロ
セッサ502は、データキャッシュ508および命令キ
ャッシュ510を備えており、ASICモジュールバス
524とのデータ入出力インタフェースを持っている。
ASIC500インタフェースロジック22は、4ビッ
ト外部インタフェース518を備えた汎用I/Oモジュ
ール516と、外部メモリインタフェースモジュール5
20および外部メモリインタフェース522と、PCI
インタフェースモジュール512およびPCIインタフ
ェース514とを含む。PCIインタフェース514
は、通常33MHzで動作する32ビットデータチャネ
ルを提供する。PCIインタフェースモジュール512
は、効率的なデータ転送のためのビルトインした先入れ
先出し(FIFO)入出力バッファを含めて、PCIイ
ンタフェースI/Oおよびコマンドプロトコルに従って
必要な処理を行う。ASIC500における他のモジュ
ール間のデータ転送は、ASICモジュールバス524
により行われる。
【0078】ASIC500は、任意に、鍵生成および
パディングのための高速専用乱数発生器526を含む。
また、本件に記載する原理に従って、ASIC500
は、指数剰余演算装置20を含む。指数剰余演算装置2
0は、一対の並列処理ユニット24a、24bを含んで
いる。
【0079】図11は、処理ユニット24a、24b、
関連RAM25のより詳細な図である。処理ユニット2
4a、24bは、乗算器602、プリロードレジスタ6
04およびマルチプレクサ606を含む。制御ユニット
26a、26bは、乗算器602、プリロードレジスタ
604、メモリ25、およびマルチプレクサ606に結
合されており、クロック608により与えられるクロッ
ク信号に従って、これらそれぞれのデバイスの処理を制
御する。
【0080】できるだけ速く、好ましくは、33MHz
クロック速度において5ms未満で、指数剰余演算など
の1,024ビットのRSA計算を実行できることが望まし
い。上記に説明したようにビット数低減処理により1,02
4ビットのRSA計算を512ビットの計算に低減する
ことができるが、5ms間隔以内に2回の512ビット
の計算を実行するという問題が依然としてある。
【0081】通常、乗算器602は、乗算すべき入力デ
ータを入出力する64ビットバスを含む。しかし、その
ような設計では、64ビットバスによりデータを入出力
するのに必要となるクロック数が、33MHzクロック
で5msの計算速度を維持するには大きすぎる。本発明
は、乗算器602がプリロードレジスタに結合された5
12ビット乗算器入力ポートを持ち、効率的な計算プロ
トコルを適用する制御ユニット24とを含む独特のアー
キテクチャで、この高速化機能を提供し、512×51
2ビットの乗算を効率的に実行する。さらに、モントゴ
メリー乗算を実行するのに必要な計算が予測可能である
ので、制御ユニット26a、26bは、クロックサイク
ルを最小にする計算プロトコルを適用し、新たな数をプ
リロードレジスタに入力する。
【0082】上記構成によれば、乗算器602は、Nビ
ット容量の第1の入力ポート610と、K*N(以下K
N)ビット容量の第2の入力ポート612とを含む。こ
こで、NおよびKは1より大きい整数である。例示され
た実施形態では、第1の入力ポートが64ビット並列入
力ポートであり、第2の入力ポートが512ビット並列
入力ポートである状態とし、N=64およびK=8のシ
ステムを示している。乗算器の第1の入力ポート610
の容量が乗算器の第2の入力ポート612の容量より小
さくなるように選択することにより、乗算器602のス
ループットに実質的な影響を及ぼさずにシステム規模増
大を抑制することができる。これは、乗算を実行してい
る間、4クロックごとに第一の入力ポート610の数
(被乗数「b」)の64ビットデータを処理するだけて
良いからである。
【0083】連続の乗算処理においてポート612の被
乗数「a」の値を制御するために、マルチプレクサ60
6および制御ユニット26a、26bによる選択制御
下、(乗算器出力ポート614を介して乗算器602か
ら、または、メモリ出力ポート616を介してメモリ2
5から、プリロードレジスタ604へ入力データ(被乗
数「a」を表わす入力データ)を与えることができる。
ここで、モントゴメリーアルゴリズムは、次の計算の
「a」の望ましい値が、先行する乗算の「a」の値とし
ばしば同じであるという性質があることが知られてい
る。(たとえば、図9を参照)。そのような場合、プリ
ロードレジスタ604は、「a」の新たな値が必要では
なく、制御ユニット26a、26bは、プリロードレジ
スタの前の「a」の値を維持し、必要な時にその値を乗
算器602に与える。また、すぐに必要な結果がメモリ
25に対して入出力できるように、乗算器出力ポート6
14からプリロードレジスタ604までのデータパスが
設けられており、必要な場合のみ被乗数「a」のデータ
のトラフィックが発生することとなりメモリバストラフ
ィックが低減する。
【0084】第1の数(「b」)がメモリ25に記憶さ
れており、第2の数(「a」)がプリロードレジスタ6
04にロードされていると仮定すると、a*bの乗算
は、以下のように行われる。第1のクロックサイクルに
おいて、第2の数(「a」)の全512ビット値を、プ
リロードレジスタ604から乗算器602に入力する。
次に、第1の数(「b」)の最初の64ビット分のデー
タを乗算器602にロードする。次に、次の3クロック
サイクルにわたって、64ビットの第1の数(「b」)
に512ビットの第2の数(「a」)を乗じる処理を実
行する。次に、第1の数(「b」)の次の64ビット分
のデータを乗算器602にロードし、「b」のその部分
に512ビットの第2の数(「a」)を乗じる。被乗数
「b」の全ビットに被乗数「a」の全ビットを乗じる処
理が終了するまで、このプロセスを繰り返す。「b」の
全ビットをロードし、「b」の全ビットに「a」の全ビ
ットを乗じるには、8×4=32クロックサイクルが必
要である。その後、乗算器602の内部処理に必要な4
クロックサイクル後、さらに次の8クロックサイクルの
期間、第1の数(「b」)と第2の数(「a」)の積の
最下位512ビットのデータを64ビットずつ出力す
る。その積の最上位512ビットは、乗算器602に残
り、さらなる桁上げ処理に用いられる。したがって、
「a」と「b」の積を決定するのに、合計45クロック
サイクルが必要である。
【0085】プリロードレジスタ604から乗算器60
2までのデータチャネル622は、512ビットである
が、メモリ25を含む他の入出力ポートのバス容量はす
べて、64ビットだけである。したがって、プリロード
値(新たな「a」の値)が必要である場合、メモリ25
からの値を64ビットデータチャネルからプリロードレ
ジスタ604にロードするのに、通常、付加的な8クロ
ックサイクルが必要である。これは、新たな「a」の値
を必要とする乗算の場合、処理を完了するのに必要なク
ロックサイクルの数が45+8=53であることを意味
する。この問題を回避するために、本発明の制御ユニッ
ト26a、26bは、新たな「a」の値が必要となると
予測される場合、異なったコマンドプロトコルを呼び出
して使用する。このプロトコルは、64ビットの「b」
値を各々、乗算器602に供給した後、3クロックの
間、64ビット入力バスを利用し、次の「a」の予測値
を先にプリロードレジスタ604にプリフェッチしてお
くことにより処理に必要な全体のクロックサイクル数低
減を図る。つまり、乗算器602への「b」値の入力に
続くクロック期間中、次の乗算に必要な予測値をメモリ
25からフェッチし、プリロードレジスタ604に先に
送っておく。ここで、「a」の予測値は、「b」値のみ
を変化させながら、同じ「a」値を用いる可能性が高い
というモントゴメリー乗算ルーチンの性質による。
【0086】図12は、上記論理を示すタイミング図で
ある。タイミングチャート702は、クロック608か
らの信号を表す。タイミングチャート704は、「b」
の値をメモリ25から乗算器602に供給する場合のク
ロックサイクルを示す。メモリ25の出力ポート616
と乗算器の第一の入力ポート610とを接続しているバ
スが64ビットバスであるので、512ビットの数
「b」の値を64ビット分ずつ乗算器602に供給す
る。したがって、タイミングチャート704に示した位
置708は、512ビットの数「b」の最初の64ビッ
トを乗算器の第一の入力ポート610を介して乗算器6
02に転送する場合を示す。「b」値の最初の64ビッ
トを乗算器602に転送したクロックパルス後のクロッ
クパルスにおいて、次の乗算の「a」の予測値の64ビ
ットデータをプリロードレジスタ604にプリロードさ
せるためにメモリ25からプリフェッチして転送する。
これは、タイミングチャート706上のパルス710に
示されている。上記は、「b」の情報をロードしたサイ
クル後、必要数のサイクルを発生するパルス710によ
って実現することもできる。このプロセスは、「b」を
表わす全ビットを乗算器602にロードし、新たな
「a」値を表わす全ビットをプリロードレジスタ604
にプリロードするまで繰り返す。
【0087】図13および図14は、本発明の一実施形
態の乗算処理を示すフローチャートである。最初に、ブ
ロック802に示されているように、「a」のKNビッ
トをプリロードレジスタ604から乗算器602の第2
の入力ポート612へ与える。これは1クロックパルス
で行われる。次に、1クロックパルスで「b」のNビッ
トを乗算器602の第一の入力ポート610に与える。
これは、ブロック804に示されている。
【0088】モントゴメリーアルゴリズムにおいて、オ
ペランド「a」は、連続的計算によく用いられ、過去の
値から予測することもできる。この性質のため、連続計
算における「a」の値を予測することができる。次の計
算における「a」の新たな値が予測されると、1クロッ
クで、予測された「a」の値のNビットをメモリ25か
らプリロードレジスタ604に与える。これは、「b」
のNビットを乗算器に与えるパルスに続くクロックパル
スで行うことができ、ブロック806および814に示
されている。図12に関して上述したように、この時、
メモリ25から予測された「a」の値を与えることによ
り、新たな「a」の値に関するデータフローエラーの可
能性が最小になる。「a」の新たな値が予想されなけれ
ば、ロジックは、ブロック806からブロック808に
進み、「a」のKNビットに「b」のNビットを乗じる
乗算処理を実行する。
【0089】このプロセスは、ブロック810に示され
ているように、「b」の全KNビットに「a」の全KN
ビットを乗じると完了し、ブロック812示されている
出力数を生じる。次に、図14のブロック814に示さ
れているように、1クロックパルスで、出力数のNビッ
トを乗算器出力ポートに与える。次の乗算に乗算器60
2からの現在の出力値が必要であれば、出力数のNビッ
トをプリロードレジスタ604に与える。これは、ブロ
ック816および818に示されている。現在の出力値
が必要でなければ、ロジックがブロック820に進み、
出力数のNビットをメモリ25に与える。ブロック82
2に示されているように、ブロック814から822に
おいて行われた処理は、出力数の全KNビットをメモリ
25に与えるまで繰り返す。
【0090】上記技術を用いると、乗算器602は、乗
算に加えて、「a」および「b」の多くの処理を効率的
に行うことができる。これらの処理は、下記の表1に示
されている。
【0091】
【表1】
【0092】以上、乗算処理を用いる計算装置のデータ
処理を高速化する乗算装置および方法を説明した。この
装置は、KNビット幅バスを介して乗算器に結合された
プリロードレジスタを用いて、1クロックパルスで被乗
数「a」の値をプリロードレジスタから乗算器にロード
する。被乗数「b」(KNビット長)を、一度にNビッ
トずつ、Nビット幅バスを介してメモリから乗算器に供
給する。乗算器は、被乗数「b」の全KNビットに被乗
数「a」のKNビットを乗じるまで、「b」のNビット
データに「a」のKNビットデータを乗じる。
【0093】この方法では、1クロックパルスで被乗数
「a」のKNビットをプリロードレジスタから乗算器に
与える。次に、1クロックパルスで被乗数「b」のNビ
ットを乗算器に与える。次に、被乗数「b」のKNビッ
トをNビット幅バスによりNビットずつ第1の乗算器入
力ポートに与え、被乗数数「a」のKNビットに対して
被乗数「b」をNビットずつを繰り返し乗じる。被乗数
「b」のKNビット分のデータすべてを被乗数「a」に
対して乗算する処理が完了すると、KNビットの被乗数
「a」とKNビットの被乗数「b」との乗算結果出力が
得られる。次に、出力データを一度にNビットずつメモ
リに伝送する。
【0094】なお、上記説明において、一例としてK=
8、N=64ビットとしたが、これらの数値に限られな
いことは言うまでもない。
【0095】モントゴメリーアルゴリズムの性質に従っ
て、本発明の一実施形態では、現在の被乗数「a」およ
び「b」の乗算処理を実行している間、被乗数「a」の
予測値をプリロードレジスタにロードする。この技術に
より、これらのパラメータをロードして乗算するために
必要なクロックサイクルをさらに低減させることができ
る。
【0096】また、本発明の範囲および思想内で計算的
に効率的な乗算器の様々な変形、適応、代替的な実施の
形態が構成されてもよいことが理解されるべきである。
たとえば、本発明は、専用プロセッサで実現される暗号
システムに非常に適しているが、非暗号システムにおい
ても有用であり、また、汎用プロセッサで実現してもよ
い。そのような場合、本発明を実現する命令のコンピュ
ータ実行可能なプログラムを一つ以上、フロッピーディ
スクなどのコンピュータ読み取り可能なプログラム記憶
装置または他の記憶媒体に取り入れてもよい。
【0097】
【発明の効果】本発明の乗算処理を用いる計算装置のデ
ータ処理を高速化する方法によれば、KNビットの被乗
数「a」とKNビットの被乗数「b」との乗算処理を効
率的かつ高速に実行して当該暗号システムに与えること
ができ、当該暗号システム装置の暗号復号処理を高速化
することができる。
【0098】本発明の乗算処理を用いる計算装置のデー
タ処理を高速化する装置によれば、KNビットの被乗数
「a」とKNビットの被乗数「b」との乗算処理を効率
的かつ高速に実行して当該暗号システムに与えることが
でき、当該暗号システム装置の暗号復号処理を高速化す
ることができる。
【図面の簡単な説明】
【図1】 暗号システム内の指数剰余演算装置の典型的
な適用例のブロック図である。
【図2】 指数剰余演算装置のブロック図である。
【図3】 指数剰余演算装置によって実行される機能の
システムレベルのフローダイアグラムである。
【図4】 指数剰余演算装置によって実行される指数ビ
ットスキャン処理を示すフローチャートである。
【図5】 図4の指数ビットスキャン処理の様々な段階
の指数レジスタのブロック図である。
【図6】 指数剰余演算装置によって実行される乗算処
理を示すフローチャートである。
【図7】 図6の乗算処理と関連して実行される二乗処
理を示すフローチャートである。
【図8】 図4のフローチャートに従う典型的な指数ビ
ットスキャン処理を示すチャートである。
【図9】 図6および図7のフローチャートに従う典型
的な乗算および二乗処理を示すチャートである。
【図10】 本発明を実施するのに用いることができる
システムアーキテクチャを示すブロック図である。
【図11】 乗算器および関連モジュールの一実施形態
を示すブロック図である。
【図12】 予測被乗数のプリロードを示すタイミング
図である。
【図13】 乗算処理を示すフローチャートである。
【図14】 乗算処理を示すフローチャートである。
【符号の説明】 10 暗号システム 12 CPU 14,25 RAM 16 ROM 20 指数剰余演算装置 22 インタフェース回路 24 乗算処理部 25 メモリ 26 制御ユニット 28 乗算器 32 レジスタ 34 ウィンドウ 500 ASIC 602 乗算器 604 プリロードレジスタ 606 マルチプレクサ

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】 KNビットで表すことができる第1の数
    とKNビットで表すことができる第2の数の乗算を実行
    し、乗算処理を用いる計算装置のデータ処理を高速化す
    る方法であって、 1クロックパルスで前記第2の数のKNビット分のデー
    タをプリロードレジスタから乗算器の第2の入力ポート
    に与える第2の数のKNビットデータロード処理ステッ
    プと、 1クロックパルスでメモリから前記第1の数のKNビッ
    トデータのうちNビット分のデータを取り出して乗算器
    の第1の入力ポートに与える第1の数のNビットデータ
    ロード処理ステップと、 前記第2の数のKNビットデータと前記第1の数のNビ
    ットデータとを乗じる乗算処理ステップを備え、 前記第1の数のNビットデータロード処理ステップと前
    記乗算処理ステップとをK回繰り返し、前記第1の数の
    KNビットデータすべてがメモリから読み出されて乗算
    処理されるまで繰り返して、前記第1の数と前記第2の
    数の乗算結果を生成し、前記計算装置に出力することを
    特徴とする乗算を用いる計算装置のデータ処理高速化方
    法。
  2. 【請求項2】 前記計算装置が採用しているアルゴリズ
    ムから予測される次のKNビットの第2の数を検知する
    処理ステップと、 前記第1の数のNビットデータロード処理ステップの
    後、1クロックパルスで前記次の第2の数の予測値デー
    タのうちNビット分のデータを前記メモリから取り出し
    て前記プリロードレジスタに与える予測値プリロード処
    理ステップを備え、 前記予測値プリロード処理ステップをK回繰り返し、前
    記第2の数の予測値のKNビットデータすべてがメモリ
    から読み出されてプリロードレジスタにプリロードされ
    るまで繰り返す請求項1に記載の乗算を用いる計算装置
    のデータ処理高速化方法。
  3. 【請求項3】 1クロックパルスで前記第1の数と前記
    第2の数の乗算結果のうちNビット分のデータを取り出
    して乗算器出力ポートに与える出力処理ステップを備
    え、 前記出力処理ステップをK回繰り返し、前記乗算結果の
    KNビットデータすべてが前記乗算器から出力されるま
    で繰り返す請求項1に記載の乗算を用いる計算装置のデ
    ータ処理高速化方法。
  4. 【請求項4】 1クロックパルスで前記第1の数と前記
    第2の数の乗算結果のうちNビット分のデータ出力を前
    記メモリに与えるメモリ書き込み処理ステップを備え、 前記メモリ書き込み処理ステップをK回繰り返し、前記
    乗算結果のKNビットデータすべてが前記メモリに与え
    られるまで繰り返す請求項1に記載の乗算を用いる計算
    装置のデータ処理高速化方法。
  5. 【請求項5】 前記計算装置が採用しているアルゴリズ
    ムから予測される次のKNビットの第2の数を検知する
    処理ステップと、 1クロックパルスで前記第1の数と前記第2の数の乗算
    結果のうちNビット分のデータ出力を前記メモリに与え
    るメモリ書き込み処理ステップと、前記第1の数のNビ
    ットデータロード処理ステップの後、前記次の第2の数
    の予測値データのうちNビット分のデータを前記メモリ
    から取り出して前記プリロードレジスタに与える予測値
    プリロード処理ステップを備え、 前記メモリ書き込み処理ステップと予測値プリロード処
    理ステップをK回繰り返す請求項1に記載の乗算処理を
    用いる計算装置のデータ処理高速化方法。
  6. 【請求項6】 前記メモリの出力ポート、前記乗算器の
    出力ポート、および前記プリロードレジスタに結合され
    たマルチプレクサを介して、前記メモリ出力のポートお
    よび前記乗算器の出力ポートから選択的に前記第2の数
    を前記プリロードレジスタに与える請求項4に記載の乗
    算処理を用いる計算装置のデータ処理高速化方法。
  7. 【請求項7】 1クロックパルスで前記第2の数のKN
    ビットデータのうちNビット分のデータを前記メモリか
    ら取り出して前記プリロードレジスタに与えるプリロー
    ド処理ステップを備え、 前記プリロード処理ステップをK回繰り返し、前記第2
    の数のKNビットデータすべてがメモリから読み出され
    てプリロードレジスタにプリロードされるまで繰り返す
    請求項1に記載の乗算処理を用いる計算装置のデータ処
    理高速化方法。
  8. 【請求項8】 KNビットで表すことができる第1の数
    とKNビットで表すことができる第2の数の乗算を実行
    し、乗算処理を用いる計算装置のデータ処理を高速化す
    る装置であって、 前記第1の数を受け取る第1の入力ポートと第2の数を
    受け取る第2の入力ポートと、前記第1の数と第2の数
    を乗算して結果を出力する出力ポートを備えた乗算器
    と、 第1の数のKNビットデータと第2の数のKNビットデ
    ータを含み、第1のNビットデータチャネルを介して前
    記乗算器出力ポートからデータを受け取るメモリ入力ポ
    ートと、第2のNビットデータチャネルを介して前記乗
    算器の第1の入力ポートにデータを与えるメモリ出力ポ
    ートとを備えたメモリと、 入力ポートと出力ポートを備え、KNビットデータチャ
    ネルの出力ポートを介して前記乗算器の第2の入力ポー
    トに与える前記第2の数を記憶するプリロードレジスタ
    と、 1クロックパルスで前記第2の数のKNビット分のデー
    タを前記プリロードレジスタから前記乗算器の第2の入
    力ポートに与える第2の数のKNビットデータロード機
    能と、 1クロックパルスで前記メモリから前記第1の数のKN
    ビットデータのうちNビット分のデータを取り出して前
    記乗算器の第1の入力ポートに与える第1の数のNビッ
    トデータロード機能と、 前記第2の数のKNビットデータと前記第1の数のNビ
    ットデータとを前記乗算器において乗じる乗算処理機能
    を備え、 前記第1の数のNビットデータロード処理と前記乗算処
    理とをK回繰り返し、前記第1の数のKNビットデータ
    すべてがメモリから読み出されて乗算処理されるまで繰
    り返して、前記第1の数と前記第2の数の乗算結果を生
    成し、前記暗号符号復号化装置に出力することを特徴と
    する乗算処理を用いる計算装置のデータ処理高速化装
    置。
  9. 【請求項9】 前記乗算器出力ポートからの出力が、前
    記プリロードレジスタの入力ポートに伝達的に結合され
    ている請求項8に記載の乗算処理を用いる計算装置のデ
    ータ処理高速化装置。
  10. 【請求項10】 前記メモリの出力ポートからの出力
    が、前記プリロードレジスタの入力ポートに伝達的に結
    合されている請求項8に記載の乗算処理を用いる計算装
    置のデータ処理高速化装置。
  11. 【請求項11】 前記プリロードレジスタ、前記乗算器
    出力ポート、および前記メモリ出力ポート間の伝達的結
    合を選択的に制御するマルチプレクサを介して、前記乗
    算器出力ポートからの出力と、前記メモリ出力ポートか
    らの出力が、前記プリロードレジスタに伝達的に結合さ
    れている請求項8に記載の乗算処理を用いる計算装置の
    データ処理高速化装置。
  12. 【請求項12】 KNビットで表すことができる第1の
    数とKNビットで表すことができる第2の数を乗算する
    乗算装置であって、Nビット幅チャネルの第1の入力ポ
    ートと、KNビット幅の第2の入力ポートと、出力ポー
    トを備え、 1クロックパルスで前記第2の数のKNビットデータを
    前記乗算器の第2入力ポートを介して入力する第2の数
    の入力手段と、 1クロックパルスで前記第1の数のKNビットデータの
    うちNビットデータを前記乗算器の第1の入力ポートを
    介して入力する第1の数の入力手段と、 前記第2の数のKNビットデータと前記第1の数のNビ
    ットデータを乗ずる乗算処理手段と、 前記乗算処理手段をK回繰り返し、前記第1の数の全K
    Nビットデータが前記第2の数の全KNビットデータと
    乗算処理を行ない、乗算結果出力を生成することを特徴
    とする乗算装置。
  13. 【請求項13】 前記出力の全KNビットを前記乗算器
    の出力ポートに与えるまで、前記出力のNビットを1ク
    ロックパルスで前記乗算器の出力ポートに繰り返し与え
    る出力手段を備えた請求項12に記載の乗算装置。
  14. 【請求項14】 メモリ出力ポート、前記乗算器出力ポ
    ート、および前記プリロードレジスタに結合されたマル
    チプレクサを介して、前記メモリ出力ポートおよび前記
    乗算器出力ポートから選択的に前記第2の数を前記プリ
    ロードレジスタに与える請求項13に記載の乗算装置。
  15. 【請求項15】 前記出力の全KNビットを前記プリロ
    ードレジスタおよび前記メモリに与えるまで、1クロッ
    クパルスで前記出力のNビットを前記プリロードレジス
    タおよび前記メモリに繰り返し与える手段をさらに備え
    た請求項12に記載の乗算装置。
  16. 【請求項16】 前記第2の数の全KNビットを前記プ
    リロードレジスタに与えるまで、1クロックパルスで前
    記第2の数のNビットデータを前記メモリから前記プリ
    ロードレジスタに繰り返し与える手段を備えた請求項1
    2に記載の乗算装置。
  17. 【請求項17】 次のKNビットの第2の数を予測する
    手段と、前記第2の数の予測値データを保持するプリロ
    ードレジスタと、 前記第1の数の入力手段実行後、1クロックパルスで前
    記第2の数の予測値データのうちNビット分のデータを
    前記メモリから取り出して前記プリロードレジスタに与
    える予測値プリロード入力手段を備え、 前記予測値プリロード入力手段をK回繰り返し、前記第
    2の数の予測値のKNビットデータすべてがメモリから
    読み出されて前記プリロードレジスタにプリロードされ
    るまで繰り返す請求項12に記載の乗算装置。
  18. 【請求項18】 第1の数を受け取る第1の入力ポート
    と、第2の入力数を受け取る第2入力ポートと、Kクロ
    ックサイクルにわたって計算された前記第1の数と前記
    第2の数の積の出力を与える乗算器出力ポートとを備え
    た乗算器と、 前記乗算器出力ポートに結合された入力ポートと、前記
    乗算器の第1の入力ポートに結合された出力ポートとを
    備えた前記第1の数および第2の数を記憶するメモリ
    と、 Kクロックサイクルにわたって前記第2の数を受け取っ
    て記憶し、1サイクルで前記第2の数を前記乗算器の第
    2の入力ポートに出力するプリロードレジスタとを備え
    たことを特徴とする乗算装置。
  19. 【請求項19】 前記プリロードレジスタ、前記乗算器
    出力ポート、および前記メモリ出力ポート間の伝達的結
    合を選択的に制御するマルチプレクサを介して、前記プ
    リロードレジスタが前記乗算器出力ポートおよび前記メ
    モリ出力ポートに伝達的に結合されている請求項18に
    記載の乗算装置。
JP11020245A 1998-03-30 1999-01-28 乗算を用いる計算装置のデ―タ処理高速化方法および装置 Pending JPH11305996A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5037998A 1998-03-30 1998-03-30
US09/050379 1998-03-30

Publications (1)

Publication Number Publication Date
JPH11305996A true JPH11305996A (ja) 1999-11-05

Family

ID=21964917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11020245A Pending JPH11305996A (ja) 1998-03-30 1999-01-28 乗算を用いる計算装置のデ―タ処理高速化方法および装置

Country Status (5)

Country Link
US (2) US6434585B2 (ja)
EP (1) EP0947914B1 (ja)
JP (1) JPH11305996A (ja)
CA (1) CA2251178A1 (ja)
DE (1) DE69828150T2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2352309B (en) * 1999-07-21 2004-02-11 Advanced Risc Mach Ltd A system and method for performing modular multiplication
DE10021920C1 (de) * 2000-05-05 2001-07-26 Infineon Technologies Ag Datenverarbeitungsverfahren und -Einrichtung zur Modulo-Berechnung eines Rests bei der Division
US6691143B2 (en) * 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
FR2815734B1 (fr) * 2000-10-19 2006-07-28 Oberthur Card Systems Sas Unite de calcul pour l'execution d'un protocole cryptographique
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
JP3709553B2 (ja) 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法
JP3532860B2 (ja) 2001-01-22 2004-05-31 株式会社東芝 剰余系表現を利用した演算装置及び方法及びプログラム
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
DE10142155C1 (de) * 2001-08-29 2002-05-23 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
US20030086564A1 (en) * 2001-09-05 2003-05-08 Kuhlman Douglas A. Method and apparatus for cipher encryption and decryption using an s-box
US6748412B2 (en) 2001-09-26 2004-06-08 Intel Corporation Square-and-multiply exponent processor
US20030065696A1 (en) * 2001-09-28 2003-04-03 Ruehle Michael D. Method and apparatus for performing modular exponentiation
US7136484B1 (en) * 2001-10-01 2006-11-14 Silicon Image, Inc. Cryptosystems using commuting pairs in a monoid
DE10151129B4 (de) * 2001-10-17 2004-07-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
JP2003131569A (ja) * 2001-10-24 2003-05-09 Matsushita Electric Ind Co Ltd 二乗剰余演算回路、二乗剰余演算方法及びプログラム
US7194089B2 (en) * 2001-10-24 2007-03-20 International Business Machines Corporation Method for reducing a value modulo a shared secret
US7233663B2 (en) * 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
GB2383435A (en) * 2001-12-18 2003-06-25 Automatic Parallel Designs Ltd Logic circuit for performing modular multiplication and exponentiation
KR100436814B1 (ko) * 2001-12-20 2004-06-23 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치
US7508936B2 (en) * 2002-05-01 2009-03-24 Sun Microsystems, Inc. Hardware accelerator for elliptic curve cryptography
US20040010530A1 (en) * 2002-07-10 2004-01-15 Freking William L. Systolic high radix modular multiplier
US7260595B2 (en) 2002-12-23 2007-08-21 Arithmatica Limited Logic circuit and method for carry and sum generation and method of designing such a logic circuit
US8194855B2 (en) * 2003-06-30 2012-06-05 Oracle America, Inc. Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US7650374B1 (en) 2004-03-02 2010-01-19 Sun Microsystems, Inc. Hybrid multi-precision multiplication
US7519644B2 (en) * 2004-05-27 2009-04-14 King Fahd University Of Petroleum And Minerals Finite field serial-serial multiplication/reduction structure and method
US7953814B1 (en) 2005-02-28 2011-05-31 Mcafee, Inc. Stopping and remediating outbound messaging abuse
US9015472B1 (en) 2005-03-10 2015-04-21 Mcafee, Inc. Marking electronic messages to indicate human origination
US9160755B2 (en) 2004-12-21 2015-10-13 Mcafee, Inc. Trusted communication network
US20070150530A1 (en) * 2005-12-13 2007-06-28 Intel Corporation Resisting cache timing based attacks
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
US8670557B2 (en) * 2007-09-10 2014-03-11 Spansion Llc Cryptographic system with modular randomization of exponentiation
US20090234866A1 (en) * 2008-03-17 2009-09-17 Paul Caprioli Floating Point Unit and Cryptographic Unit Having a Shared Multiplier Tree
US10354229B2 (en) 2008-08-04 2019-07-16 Mcafee, Llc Method and system for centralized contact management
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
RU2019121710A (ru) * 2016-12-12 2021-01-12 Конинклейке Филипс Н.В. Электронное вычислительное устройство, выполненное с возможностью вычисления произведения целых чисел
CN109710308B (zh) * 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统
US11961420B2 (en) 2019-01-07 2024-04-16 Cryptography Research, Inc. Efficient squaring with loop equalization in arithmetic logic units
DE102020102453A1 (de) 2020-01-31 2021-08-05 Infineon Technologies Ag Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121431A (en) 1990-07-02 1992-06-09 Northern Telecom Limited Processor method of multiplying large numbers
US5420815A (en) 1991-10-29 1995-05-30 Advanced Micro Devices, Inc. Digital multiplication and accumulation system
US5274707A (en) 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
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 剰余計算装置、テーブル作成装置および乗算剰余計算装置
US5794028A (en) 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure

Also Published As

Publication number Publication date
US6434585B2 (en) 2002-08-13
EP0947914A1 (en) 1999-10-06
DE69828150T2 (de) 2005-12-15
US20010010077A1 (en) 2001-07-26
DE69828150D1 (de) 2005-01-20
US20020103843A1 (en) 2002-08-01
CA2251178A1 (en) 1999-09-30
EP0947914B1 (en) 2004-12-15

Similar Documents

Publication Publication Date Title
JPH11305996A (ja) 乗算を用いる計算装置のデ―タ処理高速化方法および装置
US6282290B1 (en) High speed modular exponentiator
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
US8504602B2 (en) Modular multiplication processing apparatus
JPH11305995A (ja) 計算装置のデ―タ処理高速化方法および装置。
EP1421472B1 (en) A method and apparatus for carrying out efficiently arithmetic computations in hardware
US20090319804A1 (en) Scalable and Extensible Architecture for Asymmetrical Cryptographic Acceleration
US5121429A (en) Digital signal processing
US8781112B2 (en) Signed montgomery arithmetic
JP4180024B2 (ja) 乗算剰余演算器及び情報処理装置
Royo et al. Design and implementation of a coprocessor for cryptography applications
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
US6662201B1 (en) Modular arithmetic apparatus and method having high-speed base conversion function
Rahman et al. Efficient hardware implementation of RSA cryptography
JP3591857B2 (ja) 擬似乱数生成方法及び装置、通信方法及び装置
JP5179933B2 (ja) データ処理装置
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems
Pinckney et al. Public key cryptography
JP3137599B2 (ja) BのC乗のnを法とした剰余を計算する回路
KR100399048B1 (ko) 타원곡선 암호화 장치
Großschädl A new serial/parallel architecture for a low power modular multiplier
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置
Mohammadian et al. FPGA implementation of 1024-bit modular processor for RSA cryptosystem
JP2003316262A (ja) 乗算剰余演算方法及び演算装置