JPH1195661A - 指数剰余演算装置および指数剰余演算処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

指数剰余演算装置および指数剰余演算処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体

Info

Publication number
JPH1195661A
JPH1195661A JP10079477A JP7947798A JPH1195661A JP H1195661 A JPH1195661 A JP H1195661A JP 10079477 A JP10079477 A JP 10079477A JP 7947798 A JP7947798 A JP 7947798A JP H1195661 A JPH1195661 A JP H1195661A
Authority
JP
Japan
Prior art keywords
value
remainder
computer
exponent
exponential
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
JP10079477A
Other languages
English (en)
Inventor
Aran Paueru Guregorii
グレゴリー.アラン.パウエル
Uiriamu Uiruson Maaku
マーク.ウィリアム.ウィルソン
Kuuotsuku Toruongu Kebin
ケビン.クウォック.トルオング
Peetaa Karen Kurisutofuaa
クリストファー.ペーター.カレン
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 JPH1195661A publication Critical patent/JPH1195661A/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/723Modular exponentiation
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7276Additional details of aspects covered by group G06F7/723
    • G06F2207/7285Additional details of aspects covered by group G06F7/723 using the window method, i.e. left-to-right k-ary exponentiation
    • G06F2207/729Sliding-window exponentiation

Abstract

(57)【要約】 指数剰余演算装置および指数剰余演算処理をコンピュー
タに実行させるためのプログラムを記録したコンピュー
タ読み取り可能な記録媒体 【課題】 形式bemodnの指数剰余演算を高速に演算
し、システム性能およびデータスループットへの影響を
最小にし、公開鍵暗号システムに応用して十分なレベル
の通信セキュリティを提供する。 【解決手段】 指数剰余演算装置は、形式bemodnの指
数剰余演算の演算を導出するように適合されている。指
数剰余演算装置は、中国人剰余定理に従って与えられた
指数剰余演算を、もとの除数nの約半分の素数である除
数pおよびqをそれぞれ有する第一および第二の部分に
分ける(104,105)。指数剰余演算の各部分は、
予め計算された累乗値を有するそれぞれの複数の小さい
指数剰余演算に分解される。次に、それぞれの複数の小
さい指数剰余演算を共に乗算処理して(102,10
3)、それぞれの中間値を演算する。次に、その中間値
を再合成処理して(106〜111)、指数剰余演算結
果を得る。

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】
【課題を解決するための手段】上記課題を達成するた
め、本発明にかかる指数剰余演算装置は、第一の信号を
受信し、第一の信号に基づいた形式bemodnの指数剰余
演算処理によって第二の信号を導出するように適応した
指数剰余演算装置を備えた処理ユニットを含む。積がn
に等しい2つの素数をpとqとし、与えられた前記指数
剰余演算処理を、前記指数剰余演算処理のもとの除数n
よりそれぞれ低減された小さい低減除数pおよびqと、
前記指数剰余演算処理のもとの底bより低減された小さ
い低減底b rとをそれぞれ含む少なくとも第一と第二の
指数剰余演算部分に分割する分割手段を備え、結果を記
憶領域の一部に一時記憶する。具体的には、中国人剰余
定理に従って指数剰余演算処理を部分に分割する。指数
剰余演算処理の第一の部分は、成分be(p)modpを含
み、指数剰余演算処理の第二の部分は成分be(q)modq
を含む。ここで指数剰余演算部分の指数e(p)およびe
(q)は、元の指数eとそれぞれemod(p−1)およびemod
(q−1)の関係にある。前記分割したそれぞれの指数剰余
演算部分を予め記憶領域の一部に計算用意した累乗値を
含む形にそれぞれ複数の小さい指数剰余演算に分解する
ための分解手段を備え、結果を記憶領域の一部に一時記
憶する。前記分解したそれぞれの複数の小さい指数剰余
演算部分を共に乗算処理してそれぞれの第一レベルの中
間値を演算するための乗算手段であって、二乗処理のた
めに適応化された乗算手段を備え、結果を記憶領域の一
部に一時記憶する。前記第一レベル中間値を合成して最
終の指数剰余演算結果を得るための合成手段とを備え、
結果を出力する。
【0008】かかる構成により、指数剰余演算を演算の
容易な各部に分解して計算し、合成して最終解を得るこ
とができ、装置性能およびデータスループットへの影響
を最小にすることができる。
【0009】次に、前記第一の指数剰余演算部分が成分
r e(p)modpを含み、前記第二の指数剰余演算部分が成
分br e(q)modqを含むことが好ましい。かかる構成によ
り、形式bemodnの指数剰余演算のパラメータとなる値
が低減され、演算の大きさを小さくすることができる。
【0010】次に、pおよびqがほぼ等しい大きさであ
ることが好ましい。かかる構成により、nから素数p、
qを求める困難性を維持することができ、セキュリティ
を維持することができる。
【0011】次に、前記成分br e(p)modpの前記低減底
rがbmodpから予め計算されていることが好ましい。
また、前記成分br e(q)modqの前記低減底値brがbmod
qから予め計算されていることが好ましい。
【0012】かかる構成により、演算処理速度を向上す
ることができる。次に、前記合成手段がさらに、前記そ
れぞれの第一レベル中間値の差をとり、前記低減除数の
うちの一つを加えて中間合計値を演算する手段と、前記
中間合計値に予め計算された逆数値を乗じて第二レベル
の中間値である合計値を演算するための乗算手段と、前
記加えた低減除数に関して第二レベルの中間値である前
記合計値の剰余値を演算するための手段と、前記第二レ
ベルの中間値である前記合計値の剰余値に前記低減除数
のうちの他方を乗算する除数値乗算手段と、前記第二レ
ベルの中間値である前記除数値乗算の値に前記第一およ
び第二の指数剰余演算部分のうちの一つを加算する手段
を備えることが好ましい。上記各手段で得られる中間値
を記憶領域の一部に一時記憶し、続く手段において読み
込んで利用する。また、前記予め計算された逆数値がq
-1modpであり、記憶領域の一部に記憶されていること
が好ましい。
【0013】かかる構成により、最終解を合成する演算
を効率良く行うことができる。次に、前記分解手段がさ
らに、指数ビットスキャンプロセスを実行するための手
段を備えることが好ましい。さらに、前記分解手段は、
少なくとも一つのレジスタと、前記指数剰余演算部分の
うちの一つの指数eを前記レジスタにロードするための
手段とを含み、前記レジスタがさらに、前記レジスタの
サイズより小さいサイズのシフト可能なウィンドウを備
えることが好ましい。さらに、前記分解手段は、前記ウ
ィンドウによって読み出された指数eの小部分に相当す
る数で累乗したbを含む予め計算用意した値から値を選
択する手段を備えることが好ましい。さらに、前記分解
手段は、前記指数eに関する前記ウィンドウの連続ビッ
トシフトに対応する回数分、前記予め計算用意した値を
二乗剰余する手段を備えることが好ましい。
【0014】かかる構成により、レジスタ容量より充分
小さいサイズのシフト可能ウィンドウを有するレジスタ
に対して指数をロードして実行する指数ビットスキャン
法を使用することによって指数e(p)およびe(q)を分解
することができ、前記ウィンドウによって読み出した指
数eを分解して得られた数で累乗した底bの累乗値を予
め計算して用意した値から選択することで演算速度を向
上することができる。さらに指数eに関するウィンドウ
の連続的ビットシフトに対応する回数分、その選択計算
値を二乗することで演算速度を向上することができる。
【0015】次に、前記乗算手段がさらに、モントゴメ
リー乗算プロセスを実行する手段を備えることが好まし
い。前記乗算手段が、前記それぞれの複数の小さい指数
剰余演算の特定の乗算がさらに二乗演算処理を含んでい
るかどうか判断するための手段を備えることが好まし
い。前記乗算が二乗演算処理を含んでいる場合、前記乗
算手段が、前記特定の乗算の部分積の合計数を選択的に
減らす手段を備えることが好ましい。
【0016】かかる構成により、二乗処理のスピードア
ップルーチンを有するモントゴメリー(Montgomery)乗算
プロセスを利用することができ、乗算処理速度を向上さ
せることができる。
【0017】さらに、前記乗算手段が、二乗剰余処理を
実行するように最適化されている乗算器を備えることが
好ましい。かかる構成により、二乗剰余処理をより高速
に処理することができる。
【0018】また、上記処理を備えた指数剰余演算処理
をコンピュータに実行させるためのプログラムで記述
し、そのプログラムを記録したコンピュータ読み取り可
能な記録媒体とする。
【0019】かかる構成により、コンピュータ上で指数
剰余演算処理を実行することができる。実行にあたり、
コンピュータシステム性能およびデータスループットへ
の影響を最小にすることができる。
【0020】次の好ましい実施の形態の詳細な説明を考
慮することにより、当業者は指数剰余演算装置がより完
全に理解でき、さらにその付随する利点および目的が理
解されるであろう。端的に内容を表わした添付図面を参
照すべきである。
【0021】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照しながら説明する。本発明は、コンピュー
タシステム性能およびデータスループットに対する影響
を最小にしつつ、十分なレベルの通信セキュリティを提
供する指数剰余演算装置および指数剰余演算処理の要求
を満たすものである。以下の説明では、複数の図面にわ
たり、同一または類似の番号は同一または類似の要素を
表わしている。
【0022】図1を参照すると、典型的な暗号システム
10内の指数剰余演算装置20の適用例のブロック図が
示されている。典型的な暗号システム10は、中央処理
ユニット(CPU)12、ランダムアクセスメモリ(R
AM)14、読み出し専用メモリ(ROM)16、およ
び指数剰余演算装置20を含む。暗号システム10の各
要素は、データおよびコントロールメッセージが送信さ
れる双方向データバスおよびコントロールバス18によ
って共に結合されている。CPU12は、暗号システム
10の処理を制御しており、従来のマイクロプロセッサ
またはデジタルシグナルプロセッサによって提供しても
よい。RAM14は、CPU12の制御処理のための一
時データ記憶を行い、ROM16は、ソフトウェアの不
揮発記憶を行うもので、CPU12によりシーケンシャ
ルに処理される暗号システム10の全体的処理に関する
制御命令セットが記憶される。指数剰余演算装置20
は、特定用向け集積回路(ASIC)またはフィールド
プログラマブルゲートアレイ(FPGA)などの特殊機
能デバイスを含み、CPU12によって指数剰余演算処
理を実行するために利用される。上記構成の代わりに、
暗号システム10の要素すべてが、指数剰余演算装置2
0が埋め込みコアプロセスとして提供されるASICま
たはFPGA内に含まれていてもよい。
【0023】従来技術において周知であるように、暗号
システムは、安全性の低い通信チャネルとデータユーザ
との間のインタフェースを提供する。暗号システムは、
通信チャネルを介して暗号システムと通信するリモート
送信機(図示せず)などの外部ソースから暗号データを
受信する。暗号データは、暗号システムによって復号さ
れ、復号データがデータユーザに提供される。逆にデー
タユーザは、平文データを暗号化して通信チャネルを介
して送信するため暗号システムに入力する。暗号システ
ムは、コントロールデータ、公開鍵情報などの様々な平
文メッセージも送受信する。暗号システムにおける通信
のすべてがデータバスおよびコントロールバス18を介
して発生していることは明らかである。
【0024】指数剰余演算装置20を図2により詳細に
示す。指数剰余演算装置20は、インタフェース回路2
2、一対の並列処理ユニット24a、24b、およびR
AM25を含み、これらはすべてデータバスおよびコン
トロールバス27を介して内部でつながっている。イン
タフェース回路22は、指数剰余演算装置20と前記暗
号システム10のデータバスおよびコントロールバス1
8との間の通信を制御する。処理ユニット24a、24
bは、それぞれの制御ユニット26a、26bおよび乗
算器ユニット28a、28bを含み、これらは、以下さ
らに説明するように指数剰余演算プロセスを実行する内
部回路要素をさらに含む。指数剰余演算処理を実行して
いる間、RAM25は、制御ユニット26a、26bお
よび乗算器ユニット28a、28bによって生成された
データ値の一時記憶を行う。
【0025】ここで前記図2に関連して図3を参照する
と、指数剰余演算装置20によって実行される機能のシ
ステムレベルのフローダイアグラムが示されている。ス
テップ101において示されているように、指数剰余演
算装置20は、y=bemodn形式の指数剰余演算を計算
する。ここで、除数n、底bおよび指数eは各々kビッ
トの長さである。本発明の好ましい実施の形態において
は、kは1,024ビットである。従来の方法を用いると、
そのような指数剰余演算を解くには、実行しなければな
らない乗算計算および剰余計算の回数が多く、それらの
データ長が大きいため、膨大な計算が必要であろう。本
発明においては、問題の大きさを小さくし、実行する乗
算の回数を減らすことによって、指数剰余演算を高効率
な方法により実行する。
【0026】指数剰余演算を解くための第一のステップ
として、下記(数1)のように元の指数剰余演算を各コ
ンポーネントに分ける。
【0027】
【数1】
【0028】ここで、pおよびqは大きい素数であり、
n=p*qである。セキュリティのために、pおよびq
はほぼ同じ大きさであるべきである。従来技術として周
知であるように、項q-1modpは、中国人剰余定理から
導出される逆数と呼ばれる特殊値である。q-1modpは
qmodpの逆数である。この逆数は、br e(p)modpと同
じオーダの指数剰余演算を表わすので、ステップ108
において前もって逆数を予め計算し、RAM25に記憶
しておいてもよい。値e(p)およびe(q)は、それぞれe
mod(p-1)およびemod(q-1)に等しいk/2ビット値であ
る。br e(p)modpおよびbr e(q)modqにおける値低減さ
れた低減底項brは、それぞれpおよびqに関してbの
剰余算を行うことによって提供される。したがって、低
減底項brもk/2ビット長を有する。
【0029】図3に示されているように、指数剰余演算
を分けることにより、二つの並列パスによる処理が可能
となり、これらは、図2のそれぞれの処理ユニット24
a、24bによって別々に処理される。ステップ10
4、105において、以下さらに説明する技術を用いて
指数剰余演算br e(p)modpおよびbr e(q)modqを別々に
計算する。ステップ102、103において、前もって
両者の指数剰余演算の各底項brを予め計算し、RAM
25に記憶しておいてもよい。
【0030】pおよびqの長さが各々k/2ビットであ
るので、それぞれの問題の大きさが元の形よりかなり小
さくなる。さらに、二つの小さい指数剰余演算の計算
は、一つの処理ユニット内で、対応する元の指数剰余演
算の計算より、必要とするコンピュータ処理時間がかな
り短くなる。この処理時間の減少は、(以下に説明する
ような)効率的なアルゴリズムで指数剰余演算を実行す
る際に必要となる乗算回数が、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倍減少する。
【0031】ステップ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によってさらに使用され
る。
【0032】ここで図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)に関しても同様の処
理を実行しなければならないことが理解されるべきであ
る。
【0033】ステップ200において指数ビットスキャ
ンルーチンを呼び出し、ステップ201においてランニ
ングトータル値を1に初期設定する。ステップ202に
おいて、ビットスキャンされる指数e(p)をレジスタに
ロードする。図5a〜図5cには、レジスタ32にロー
ドされているkビットの指数e(ek-1-e0)が示され
ている。レジスタ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を繰り返す。
【0034】ステップ205において、MSBで1を検
出すると、ウィンドウ34の3ビットの二進数値を読み
出す。MSBが1であるので、この数は必然的に4、
5、6または7(すなわち、それぞれ二進数100、1
01、110または111である)となる。ステップ2
06において、低減底brをウィンドウ34から読み出
した二進数値で累乗した値で、予め計算して用意されて
いる値(すなわち、それぞれbr 4、br 5、br 6またはb
r 7)をメモリからフェッチする。ステップ207におい
て、この予め計算して用意した値をランニングトータル
値に乗じる。このためルーチンを通る最初のパスにおい
て、ランニングトータル値をデフォルトとして1に設定
する必要がある。
【0035】その後、ステップ209においてループが
開始し、指数e(p)の最下位ビット(LSB)がウィン
ドウ34に入っているかどうか確かめるためにレジスタ
32をチェックする。ウィンドウ34のMSBを読み出
すステップ203とは対照的に、ステップ209では、
指数e(p)全体のLSBに関してチェックする。LSB
がウィンドウ34にまだ入っていなければ、ループはス
テップ212に続き、ウィンドウ34を連続的に右側に
シフトし、ステップ213において、前記各シフトごと
にランニングトータル値を二乗剰余演算をする。ループ
は、前の3ビットがウィンドウ34からなくなるまで3
回繰り返し、すなわち、ウィンドウの3シフトを行う。
3シフトを行うと、ルーチンはステップ216において
MSBが1であるかどうか判断する。MSBが1であれ
ば、ルーチンはステップ205に戻り、ウィンドウ34
の値をもう一度読み出す。MSBが0であれば、ステッ
プ217において、指数e(p)のLSBがウィンドウ3
4に入っているかどうか確かめるためにレジスタ32を
再びチェックする。LSBがウィンドウ34になけれ
ば、ステップ212および213を含むループを再び繰
り返し、ウィンドウを再び1ビット右側にシフトし、シ
フトによってランニングトータル値を二乗剰余演算す
る。
【0036】ステップ217において、LSBがウィン
ドウ34に入っていれば、指数e(p)の端に達してお
り、指数ビットスキャンルーチンがほぼ完了しているこ
とを示す。ステップ222において、ウィンドウ34の
最後の2ビットを読み出し、ステップ223において、
ウィンドウで読み出された値の回数、ランニングトータ
ル値に低減底brを乗じる。たとえば、下位2ビットが
1、2または3(すなわち、それぞれ二進数01、10
または11)であれば、それぞれ1回、2回または3
回、前回ランニングトータル値に低減底brを乗じる。
下位2ビットの値が0であれば、ランニングトータル値
は変わらない(すなわち、1を乗じる)。次に、ステッ
プ224において、指数ビットスキャンルーチンが終了
する。
【0037】前記ステップ209における処理の説明に
戻る。ループが開始する前に、指数e(p)のLSBがウ
ィンドウ34に入っているかどうか確かめるためにレジ
スタ32をチェックする。LSBがウィンドウ34に入
っていれば、一連のステップを実行し、カウンタ値をチ
ェックする。カウンタ値は、前記ループを通ったパスの
回数を示している。カウンタ値が3であれば、ウィンド
ウ34内のビットがすべて既にスキャンされていること
を示し、ステップ224において指数ビットスキャンル
ーチンが終了する。カウント値が2であれば、ウィンド
ウ34内の最後のビット以外が既にスキャンされてお
り、ステップ221において、最後のビット値を読み出
す。カウンタ値が1であれば、ウィンドウ34の最初の
ビットだけが既にスキャンされており、ステップ222
において、(前記したように)下2ビットの値を読み出
す。説明を繰り返すが、ステップ223において、ウィ
ンドウで読み出された値の回数、ランニングトータル値
に低減底brを乗じる。次に、ステップ224において
指数ビットスキャンルーチンが終了する。
【0038】図8には、10ビット指数eで累乗した底
bの指数剰余演算に関する指数ビットスキャン技術の一
例が示されている。ここで、e=1011010011である。連
続シフトにより、項b1011010011を、((((((((b5)2)2)
2)*b5)2)2)2)2*b3に換算する。項b5が予め計算し
て用意されており、メモリからフェッチされているの
で、その項を計算しなくてよいため、処理時間が節約さ
れる。さらに、剰余算の分配則により、上記項のnにつ
いての剰余算処理についてさらに処理時間の節約ができ
る。膨大な回数の乗算、それに続く等量に膨大な剰余算
ではなく、9回の乗算および剰余算のみが必要となり、
計算処理の中間値がより小さいものなので剰余算の方が
その処理の大きさがより小さいものとなる。
【0039】指数e(p)のMSBより指数ビットスキャ
ンが開始するので、各シフトによって二乗剰余算のステ
ップが必要であることが理解されるべきである。ここ
で、ウィンドウ値は実際には4、5、6または7ではな
く、2kにかかる4、5、6または7という要素であ
り、kはウィンドウのLSBビットの指数ビット位置で
ある。指数e(p)の値が底brの累乗として解釈されるの
で、2kは、k回二乗することを示唆している。指数e
(p)のすべての1を確実に考慮に入れ、必要とされる予
め計算して用意する値の合計数を減らすために、ウィン
ドウ内のMSBが1であれば、予め計算された値を乗じ
て処理する。
【0040】指数ビットスキャンルーチンにより、br
e(p)modpおよびbr e(q)modqのそれぞれの計算におい
て実行しなければならない乗算の回数が減っているが、
依然として実行しなければならない乗算が多数ある。こ
こで指数剰余演算装置20は、従来技術においてモント
ゴメリー乗算と呼ばれる剰余演算項の効率的な乗算アル
ゴリズムを利用する。モントゴメリーアルゴリズムは、
下記(数2)のように規定されている。
【0041】
【数2】
【0042】ここで、kは除数nのビット数であり、n
は2kと互いに素であり、n>a、n>bである。繰り
返し乗算に対するアルゴリズムを使用するために、モン
トゴメリー乗算を実行する前に、aおよびbの値をモン
トゴメリー形式にしなければならない。ここで、 X*2kmodn=XMont である。
【0043】モントゴメリー乗算される二つの値がモン
トゴメリー形式であれば、結果もモントゴメリー形式で
ある。図6には、指数剰余演算装置20によって実行さ
れるモントゴメリー乗算処理を説明するフローチャート
が示されている。図4により前記説明した指数ビットス
キャンルーチンのように、モントゴメリー乗算処理は、
ファームウェアにおいてコーディングしてもよく、以下
さらに説明する処理の特定用途のために用意した乗算器
28a、28bをアクセスする制御ユニット26a、2
6bによって、それぞれの処理ユニット24a、24b
内でシーケンシャルに実行されてもよい。また代わり
に、モントゴメリー乗算ルーチンを、ルーチンの様々な
機能を実行するように最適化された専用論理回路として
ハードワイヤードで構成してもよい。図6に示されてい
るように、モントゴメリー乗算ルーチンは、一つの主ル
ープと二つの副ループを含む。主ループにおいて、被乗
数biのワードに被乗数ajの各ワードを乗じる。ここ
で、jは被乗数ajのワード数であり、iは被乗数bi
ワード数である。ステップ301において、モントゴメ
リー乗算ルーチンを呼び出す。ステップ302におい
て、二つの被乗数ajおよびbiを二乗フラグとともにそ
れぞれのレジスタにロードする。二つの被乗数ajおよ
びbiが等しければ、二乗フラグを1に設定し、ステッ
プ400において二乗スピードアップサブルーチンを呼
び出すことができる。二乗スピードアップサブルーチン
は、以下より詳細に説明する。二つの被乗数ajおよび
iが等しくなければ、二乗フラグを0に設定する。
【0044】最初の主ループを開始する前に、ステップ
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に関するcjの最終結果の剰余値が得られ
る。ステップ318において、モントゴメリー乗算ルー
チンが終了する。図9には、両方の被乗数が4ワード長
であるajとbiのモントゴメリー乗算の一例が示されて
いる。この例において、前の値すべての組み合わせを示
すために記号Σを使用している。
【0045】図6のモントゴメリー乗算ルーチンは、乗
算の部分積のいくつかが等しいことを認識して二乗計算
のために応用すると、スピードアップをすることができ
る。特に、被乗数ajが被乗数biに等しい場合、すなわ
ち、二乗処理の場合、通常、乗算の様々な成分の部分積
が繰り返されるであろう。たとえば、a2とb3の部分積
は、a3とb2の部分積に等しい。図9に示されているよ
うに、これらの部分積の両方が第三回目の主ループ反復
時に発生する。したがって、最初にその部分積に出会っ
た時、第二回目の発生を考慮してその部分積に2を乗じ
ることができ、第二の部分積の乗算を完全にスキップす
ることができる。2の乗算は、二進数での一回の左シフ
トを構成するので、全数計算による乗算処理よりかなり
速い。前記指数ビットスキャンルーチンの処理により、
指数剰余演算装置20によって多数の二乗処理が実行さ
れ、二乗処理の速度の増加が、特定の指数剰余演算の全
体的な処理時間にかなり影響を及ぼすことが理解される
べきである。
【0046】図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において、第一の副ループのすぐ後でモントゴ
メリー乗算ルーチンが再開する。二乗フラグを設定する
と、モントゴメリー乗算ルーチンの主ループの反復ごと
に第一の副ループの代わりに二乗スピードアップサブル
ーチンが動作する。
【0047】モントゴメリー乗算ルーチンをより効率的
に実行するために、専用処理を行うように乗算器28
a、28bを調整する。特に、乗算器28a、28b
は、(二乗スピードアップルーチンによって使用され
る)2を乗じるための特定機能と、a*b+c関数を実
行するための特定機能と、より上位側nビットを桁上げ
レジスタに残しながら2nビットの結果に関してmod2
n関数を実行するための特定機能とを含む。そのような
乗算器装置のために適応化された機能の実現は、従来技
術において周知であると考えられる。
【0048】指数剰余演算装置の好ましい実施の形態を
説明したが、本システムにおいていくつかの利点が達成
されていることが当業者には明らかであろう。また、本
実施形態で説明した指数剰余演算装置による処理を、一
般のコンピュータ、つまり制御ユニット(CPU)、算
術論理演算ユニット(ALU)、ROM、RAMの記憶
装置、入出力装置を備えたコンピュータの処理ステップ
の形でプログラムとして記述することおよびコンピュー
タに当該処理を実行させることは当業者にとり明らかで
あり、かかるプログラムを記録したコンピュータ読み取
り可能な記録媒体を提供することができる。
【0049】また、上記記録媒体としては、RAM,R
OM,CD−ROM,フレキシブルディスク(FD)、
ハードディスクなどコンピュータが扱う記憶媒体であれ
ば良いことは言うまでもなく、また、ネットワーク上に
配された記憶媒体であっても良い。
【0050】また、本発明の範囲および思想内で様々な
変形、適応、代替的な実施の形態が構成されてもよいこ
とが理解されるべきである。
【0051】
【発明の効果】本発明にかかる指数剰余演算装置によれ
ば、形式bemodnの指数剰余演算を高速に演算すること
ができ、コンピュータシステム性能およびデータスルー
プットへの影響を最小にしながら、公開鍵暗号システム
を利用することができ、十分なレベルの通信セキュリテ
ィを提供することができる。
【図面の簡単な説明】
【図1】 暗号システム内の指数剰余演算装置の典型的
な適用例のブロック図である。
【図2】 指数剰余演算装置のブロック図である。
【図3】 指数剰余演算装置によって実行される機能の
システムレベルのフローダイアグラムである。
【図4】 指数剰余演算装置によって実行される指数ビ
ットスキャン処理を示すフローチャートである。
【図5】 図4の指数ビットスキャン処理の様々な段階
の指数レジスタのブロック図である。
【図6】 指数剰余演算装置によって実行される乗算処
理を示すフローチャートである。
【図7】 図6の乗算処理と関連して実行される二乗処
理を示すフローチャートである。
【図8】 図4のフローチャートに従う典型的な指数ビ
ットスキャン処理を示すチャートである。
【図9】 図6および図7のフローチャートに従う典型
的な乗算および二乗処理を示すチャートである。
【符号の説明】
10 暗号システム 12 CPU 14,25 RAM 16 ROM 20 指数剰余演算装置 22 インタフェース回路 24 乗算処理部 26 制御ユニット 28 乗算器 32 レジスタ 34 ウィンドウ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マーク.ウィリアム.ウィルソン アメリカ合衆国、21043 メリーランド州、 エリコットシティ、ウェストチェスターア ベニュー 2642 (72)発明者 ケビン.クウォック.トルオング アメリカ合衆国、91770 カリフォルニア 州、ローズメッド、デルタアベニュー 3817 (72)発明者 クリストファー.ペーター.カレン アメリカ合衆国、90403 カリフォルニア 州、サンタモニカ、20ス ストリート 947 E

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】 第一の信号を受信し、前記第一の信号に
    基づいて形式bemodnの指数剰余演算処理によって第二
    の信号を導出するように適応化した処理ユニットを備え
    た指数剰余演算装置であって、 積がnに等しい2つの素数をpとqとし、前記指数剰余
    演算処理を、前記指数剰余演算処理のもとの除数nより
    それぞれ低減された小さい低減除数pおよびqと、前記
    指数剰余演算処理のもとの底bより低減された小さい低
    減底brとをそれぞれ含む少なくとも第一と第二の指数
    剰余演算部分に分割する分割手段と、 前記それぞれの指数剰余演算部分を予め計算用意した累
    乗値を用いてそれぞれ複数の小さい指数剰余演算部分に
    分解するための分解手段と、 前記それぞれの複数の小さい指数剰余演算部分を共に乗
    算処理してそれぞれの第一レベルの中間値を演算するた
    めの乗算手段であって、二乗処理のために適応化された
    乗算手段と、 前記第一レベル中間値を合成して最終の指数剰余演算結
    果を得るための合成手段とを備えた指数剰余演算装置。
  2. 【請求項2】 前記第一の指数剰余演算部分が成分br
    e(p)modpを含み、前記第二の指数剰余演算部分が成分
    r e(q)modqを含む請求項1に記載の指数剰余演算装
    置。
  3. 【請求項3】 pおよびqがほぼ等しい大きさである請
    求項2に記載の指数剰余演算装置。
  4. 【請求項4】 前記成分br e(p)modpの前記低減底br
    がbmodpから予め計算されている請求項2に記載の指
    数剰余演算装置。
  5. 【請求項5】 前記成分br e(q)modqの前記低減底値b
    rがbmodqから予め計算されている請求項2に記載の指
    数剰余演算装置。
  6. 【請求項6】 前記合成手段がさらに、 前記それぞれの第一レベル中間値の差をとり、前記低減
    除数のうちの一つを加えて、中間合計値を演算する手段
    と、 前記中間合計値に予め計算された逆数値を乗じて、第二
    レベルの中間値である合計値を演算するための乗算手段
    と、 前記加えた低減除数に関して、第二レベルの中間値であ
    る前記合計値の剰余値を演算するための手段と、 前記第二レベルの中間値である前記合計値の剰余値に前
    記低減除数のうちの他方を乗算する除数値乗算手段と、 前記第二レベルの中間値である前記除数値乗算の値に前
    記第一および第二の指数剰余演算部分のうちの一つを加
    算する手段を備えた請求項1に記載の指数剰余演算装
    置。
  7. 【請求項7】 前記予め計算された逆数値がq-1modp
    である請求項1に記載の指数剰余演算装置。
  8. 【請求項8】 前記分解手段がさらに、指数ビットスキ
    ャンプロセスを実行するための手段を備えた請求項1に
    記載の指数剰余演算装置。
  9. 【請求項9】 前記分解手段がさらに、少なくとも一つ
    のレジスタと、前記指数剰余演算部分のうちの一つの指
    数eを前記レジスタにロードするための手段とを含み、
    前記レジスタがさらに、前記レジスタのサイズより小さ
    いサイズのシフト可能なウィンドウを備えた請求項1に
    記載の指数剰余演算装置。
  10. 【請求項10】 前記分解手段がさらに、前記ウィンド
    ウによって読み出された指数eの小部分に相当する数で
    累乗したbを含む予め計算用意した値から値を選択する
    手段を備えた請求項9に記載の指数剰余演算装置。
  11. 【請求項11】 前記分解手段がさらに、前記指数eに
    関する前記ウィンドウの連続ビットシフトに対応する回
    数分、前記予め計算用意した値を二乗剰余する手段を備
    えた請求項10に記載の指数剰余演算装置。
  12. 【請求項12】 前記乗算手段がさらに、モントゴメリ
    ー乗算プロセスを実行する手段を備えた請求項1に記載
    の指数剰余演算装置。
  13. 【請求項13】 前記乗算手段がさらに、前記それぞれ
    の複数の小さい指数剰余演算の特定の乗算がさらに二乗
    演算処理を含んでいるかどうか判断するための手段を備
    えた請求項1に記載の指数剰余演算装置。
  14. 【請求項14】 前記乗算が二乗演算処理を含んでいる
    場合、前記乗算手段がさらに、前記特定の乗算の部分積
    の合計数を選択的に減らす手段を備えた請求項13に記
    載の指数剰余演算装置。
  15. 【請求項15】 前記乗算手段がさらに、二乗剰余処理
    を実行するように最適化されている乗算器を備えた請求
    項1に記載の指数剰余演算装置。
  16. 【請求項16】 第一の通信信号を受信し、前記第一の
    通信信号に基づいてb emodn形式の指数剰余演算処理を
    用いて第二の信号を出力するようにコンピュータシステ
    ムをbemodn形式の指数剰余演算処理に適応化させる処
    理であって、 積がnに等しい2つの素数をpとqとし、与えられた指
    数剰余演算形式の通信信号部分を、前記指数剰余演算の
    もとの除数nおよび底bよりも低減された除数pとqな
    らびに低減された底brをそれぞれ含む少なくとも第一
    および第二の指数剰余演算部分のデータに分割する処理
    と、 前記それぞれ分割した指数剰余演算部分のデータを、予
    め記憶領域の一部に用意した累乗値を含むそれぞれの複
    数の小さい指数剰余演算部分に分解する処理と、 前記それぞれの複数の小さい指数剰余演算部分のうち、
    あらかじめ記憶領域の一部に用意した累乗値部分の値を
    利用して乗算処理を実行し、それぞれの第一レベルの中
    間値を演算する乗算処理であって、前記乗算処理がさら
    に、前記それぞれの複数の小さい指数剰余演算部分の二
    乗のための乗算処理数を選択的に減らす処理と、 前記それぞれの中間値の差をとり、前記低減除数のうち
    の一つを加えて中間合計値を演算する処理と、 前記中間合計値に予め計算され、記憶領域の一部に保持
    されている逆数値を乗じて、第二レベルの中間値である
    合計値を演算する処理と、 前記加えた低減除数に関して、第二レベルの中間値であ
    る前記合計値の剰余値を計算する処理と、 前記第二レベルの中間値である前記合計値の剰余値に前
    記低減除数のうちの他方を乗じる除数値乗算処理と、 前記第二レベルの中間値である前記除数値乗算の値に前
    記第一および第二の指数剰余演算部分のうちの一つを加
    算する処理を備えた処理を、コンピュータに実行させる
    ためのプログラムを記録したコンピュータ読み取り可能
    な記録媒体。
  17. 【請求項17】 前記第一の指数剰余演算部分のデータ
    が成分br e(p)modpを含み、前記第二の指数剰余演算部
    分のデータが成分br e(q)modqを含む請求項16に記載
    の処理をコンピュータに実行させるためのプログラムを
    記録したコンピュータ読み取り可能な記録媒体。
  18. 【請求項18】 pおよびqがほぼ等しい大きさである
    請求項16に記載の処理をコンピュータに実行させるた
    めのプログラムを記録したコンピュータ読み取り可能な
    記録媒体。
  19. 【請求項19】 前記成分br e(p)modpの前記低減底b
    rがbmodpから予め計算されている請求項17に記載の
    処理をコンピュータに実行させるためのプログラムを記
    録したコンピュータ読み取り可能な記録媒体。
  20. 【請求項20】 前記成分br e(q)modqの前記低減値b
    rがbmodqから予め計算されている請求項17に記載の
    処理をコンピュータに実行させるためのプログラムを記
    録したコンピュータ読み取り可能な記録媒体。
  21. 【請求項21】 前記予め計算された逆数値がq-1mod
    pである請求項16に記載の処理をコンピュータに実行
    させるためのプログラムを記録したコンピュータ読み取
    り可能な記録媒体。
  22. 【請求項22】 前記分解処理がさらに、指数ビットス
    キャンプロセスを備えた請求項16に記載の処理をコン
    ピュータに実行させるためのプログラムを記録したコン
    ピュータ読み取り可能な記録媒体。
  23. 【請求項23】 前記分解処理がさらに、前記指数剰余
    演算の部分のうちの一つの指数eをレジスタにロードし
    て処理するプロセスを備え、前記レジスタが前記レジス
    タのサイズより小さいサイズのシフト可能なウィンドウ
    を備えた請求項16に記載の処理をコンピュータに実行
    させるためのプログラムを記録したコンピュータ読み取
    り可能な記録媒体。
  24. 【請求項24】 前記分解処理がさらに、前記ウィンド
    ウによって読み出された指数eの小部分に相当する数で
    累乗したbを含む予め計算用意した値から値を選択する
    プロセスを備えた請求項23に記載の処理をコンピュー
    タに実行させるためのプログラムを記録したコンピュー
    タ読み取り可能な記録媒体。
  25. 【請求項25】 前記分解処理がさらに、前記指数eに
    関する前記ウィンドウの連続ビットシフトに対応する回
    数分、前記予め計算用意した値を二乗剰余するプロセス
    を備えた請求項24に記載の処理をコンピュータに実行
    させるためのプログラムを記録したコンピュータ読み取
    り可能な記録媒体。
  26. 【請求項26】 前記乗算ステップがさらに、モントゴ
    メリー乗算プロセスを実行するプロセスを備えた請求項
    16に記載の処理をコンピュータに実行させるためのプ
    ログラムを記録したコンピュータ読み取り可能な記録媒
    体。
  27. 【請求項27】 前記乗算処理が、前記それぞれの複数
    の小さい指数剰余演算の特定の乗算処理がさらに二乗演
    算処理を含んでいるかどうか判断するプロセスを備えた
    請求項16に記載の処理をコンピュータに実行させるた
    めのプログラムを記録したコンピュータ読み取り可能な
    記録媒体。
  28. 【請求項28】 前記乗算処理が二乗演算処理を含んで
    いる場合、前記乗算処理がさらに、特定の乗算の部分積
    の合計数を選択的に減らすプロセスを備えた請求項27
    に記載の処理をコンピュータに実行させるためのプログ
    ラムを記録したコンピュータ読み取り可能な記録媒体。
JP10079477A 1997-03-28 1998-03-26 指数剰余演算装置および指数剰余演算処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 Pending JPH1195661A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/828368 1997-03-28
US08/828,368 US6282290B1 (en) 1997-03-28 1997-03-28 High speed modular exponentiator

Publications (1)

Publication Number Publication Date
JPH1195661A true JPH1195661A (ja) 1999-04-09

Family

ID=25251609

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10079477A Pending JPH1195661A (ja) 1997-03-28 1998-03-26 指数剰余演算装置および指数剰余演算処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体

Country Status (4)

Country Link
US (1) US6282290B1 (ja)
EP (1) EP0872795A1 (ja)
JP (1) JPH1195661A (ja)
CA (1) CA2232253A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022534364A (ja) * 2019-05-14 2022-07-29 グーグル エルエルシー プライベートグループにおけるべき乗演算のアウトソーシング

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567832B1 (en) * 1999-03-15 2003-05-20 Matsushita Electric Industrial Co., Ltd. Device, method, and storage medium for exponentiation and elliptic curve exponentiation
US7126716B1 (en) 1999-08-20 2006-10-24 Zih Corp. Printer for printing labels, tags or the like
US7046800B1 (en) * 2000-03-31 2006-05-16 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable methods and apparatus for Montgomery multiplication
DE10061697A1 (de) * 2000-12-12 2002-06-27 Infineon Technologies Ag Verfahren und Vorrichtung zum Ermitteln eines Schlüsselpaars und zum Erzeugen von RSA-Schlüsseln
US6963645B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Method for implementing the chinese remainder theorem
TW480436B (en) * 2000-12-21 2002-03-21 Goldkey Technology Corp Modular multiplier and ciphering/deciphering machine using the modular multiplier
WO2002073395A2 (en) * 2001-03-09 2002-09-19 The Athena Group, Inc. A method and apparatus for multiplication and/or modular reduction processing
US7233970B2 (en) * 2001-05-02 2007-06-19 Cipher Corporation Limited Computational method, system, and apparatus
DE10143728B4 (de) 2001-09-06 2004-09-02 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation
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
EP1454260B1 (de) 2001-10-17 2005-06-01 Infineon Technologies AG Verfahren und vorrichtung zum absichern einer exponentiations-berechnung mittels dem chinesischen restsatz (crt)
AU2002340566A1 (en) * 2001-10-17 2003-04-28 Infineon Technologies Ag Method and device for guaranteeing a calculation in a cryptographic algorithm
DE10162584A1 (de) * 2001-10-17 2003-05-08 Infineon Technologies Ag Verfahren und Vorrichtung zum Absichern einer Exponentiations-Berechnung mittels dem chinesischen Restsatz (CRT)
US7233663B2 (en) * 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
US6959297B2 (en) 2002-04-25 2005-10-25 Winnow Technology, Llc System and process for searching within a data stream using a pointer matrix and a trap matrix
GB0221837D0 (en) * 2002-09-20 2002-10-30 Koninkl Philips Electronics Nv Improved quisquater reduction
DE10253285B4 (de) * 2002-11-15 2018-11-15 Giesecke+Devrient Mobile Security Gmbh Verschleierung eines geheimen Wertes
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
US7953814B1 (en) 2005-02-28 2011-05-31 Mcafee, Inc. Stopping and remediating outbound messaging abuse
US9160755B2 (en) 2004-12-21 2015-10-13 Mcafee, Inc. Trusted communication network
US9015472B1 (en) 2005-03-10 2015-04-21 Mcafee, Inc. Marking electronic messages to indicate human origination
US20060140399A1 (en) * 2004-12-28 2006-06-29 Young David W Pre-calculation mechanism for signature decryption
US20060251248A1 (en) * 2005-05-03 2006-11-09 Jesse Lipson Public key cryptographic methods and systems with preprocessing
KR101194837B1 (ko) * 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
US7486673B2 (en) 2005-08-29 2009-02-03 Connect Technologies Corporation Method and system for reassembling packets prior to searching
US20070157030A1 (en) * 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
US7760875B2 (en) * 2006-06-29 2010-07-20 Intel Corporation Accelerating Diffie-Hellman key-exchange protocol with zero-biased exponent windowing
US7826612B2 (en) * 2006-06-29 2010-11-02 Intel Corporation System, method and apparatus for an incremental modular process including modular multiplication and modular eduction
US7912886B2 (en) * 2006-12-14 2011-03-22 Intel Corporation Configurable exponent FIFO
US7822207B2 (en) * 2006-12-22 2010-10-26 Atmel Rousset S.A.S. Key protection mechanism
US7936871B2 (en) * 2007-06-28 2011-05-03 Samsung Electronics Co., Ltd. Altering the size of windows in public key cryptographic computations
US10354229B2 (en) 2008-08-04 2019-07-16 Mcafee, Llc Method and system for centralized contact management
EP2334006B1 (en) * 2009-12-10 2016-03-23 Nxp B.V. Side-channel resistant modular exponentiation
KR101610917B1 (ko) * 2010-03-08 2016-04-11 삼성전자주식회사 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템
US11249726B2 (en) 2019-09-10 2022-02-15 Intel Corporation Integrated circuits with modular multiplication circuitry
CN115276960B (zh) * 2022-08-02 2024-03-15 山东大学 一种sm2蒙哥马利域上的快速模逆芯片实现装置及方法
CN116436709B (zh) * 2023-06-14 2023-08-29 浪潮电子信息产业股份有限公司 一种数据的加解密方法、装置、设备和介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200770A (en) 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
US5400403A (en) 1993-08-16 1995-03-21 Rsa Data Security, Inc. Abuse-resistant object distribution system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022534364A (ja) * 2019-05-14 2022-07-29 グーグル エルエルシー プライベートグループにおけるべき乗演算のアウトソーシング

Also Published As

Publication number Publication date
CA2232253A1 (en) 1998-09-28
EP0872795A1 (en) 1998-10-21
US6282290B1 (en) 2001-08-28

Similar Documents

Publication Publication Date Title
JPH1195661A (ja) 指数剰余演算装置および指数剰余演算処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6240436B1 (en) High speed montgomery value calculation
US6434585B2 (en) Computationally efficient modular multiplication method and apparatus
US8504602B2 (en) Modular multiplication processing apparatus
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
JP4554239B2 (ja) モンゴメリー類型のモジュラー乗算装置及び方法
US7831650B2 (en) Method for modular multiplication
US20060008080A1 (en) Modular-multiplication computing unit and information processing unit
US6721771B1 (en) Method for efficient modular polynomial division in finite fields f(2{circumflex over ( )}m)
JP2002207429A (ja) 効率的な冪乗法および装置
US20020126838A1 (en) Modular exponentiation calculation apparatus and modular exponentiation calculation method
Crowe et al. A scalable dual mode arithmetic unit for public key cryptosystems
JP2001505325A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
US20020041683A1 (en) Method for selecting optimal number of prime factors of a modulus for use in a cryptographic system
JP4616169B2 (ja) モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
US7657029B2 (en) Systems and methods for generating random addition chains
US8290151B2 (en) Device and method for determining an inverse of a value related to a modulus
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems
Lee et al. A faster modular multiplication based on key size partitioning for RSA public-key cryptosystem
JP2000214777A (ja) 巾乗剰余演算を行う演算装置
CN113467752A (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
Hinek et al. Another look at some fast modular arithmetic methods
US20030200246A1 (en) Modular multiplication method and calculating device