JPH1021057A - データ処理装置及びマイクロコンピュータ - Google Patents

データ処理装置及びマイクロコンピュータ

Info

Publication number
JPH1021057A
JPH1021057A JP8169322A JP16932296A JPH1021057A JP H1021057 A JPH1021057 A JP H1021057A JP 8169322 A JP8169322 A JP 8169322A JP 16932296 A JP16932296 A JP 16932296A JP H1021057 A JPH1021057 A JP H1021057A
Authority
JP
Japan
Prior art keywords
mod
arithmetic
value
positive integer
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8169322A
Other languages
English (en)
Other versions
JP3615622B2 (ja
Inventor
Kunihiko Nakada
邦彦 中田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP16932296A priority Critical patent/JP3615622B2/ja
Priority to TW086107636A priority patent/TW378294B/zh
Priority to US08/883,235 priority patent/US5961578A/en
Priority to KR1019970027679A priority patent/KR980004018A/ko
Publication of JPH1021057A publication Critical patent/JPH1021057A/ja
Application granted granted Critical
Publication of JP3615622B2 publication Critical patent/JP3615622B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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)【要約】 【課題】 暗号化、復号化等に利用される上べき乗剰余
演算「 XY mod N」の処理 を高速化する。 【解決手段】 マイクロプロセッサ(5)を搭載するマ
イクロコンピュータ(MCU)において、剰余乗算 A =
A・B・R-1 mod N +kN、A = A2・R-1 mod N +kN、A= A・R-1
mod N +kN で与えられる演算を、積和演算器を内蔵し
たコプロセッサ(6)で実行し、さらに同一のコプロセ
ッサに前処理 R2 mod N を高速に実行するための乗算機
能を備え、これらのコプロセッサの演算機能を用いて、
マイクロプロセッサでべき乗剰余演算 XY mod N を高速
に実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、剰余演算機能を備
えたデータ処理装置に適用して有効なものに関し、特
に、剰余乗算演算やべき乗剰余演算を用いた符号化及び
復号化装置に適用して有効な技術に関するものである。
【0002】
【従来の技術】暗号技術の一つとして公開鍵暗号技術が
有る。例えば、図14に示されるように、送信者は、メ
ッセージMに対して「C=MemodN」による符号化で暗
号文Cを形成し、受信者は暗号文Cに対して、「M=C
dmodN」による復号化でメッセージMを得る。上記符号
化におけるパラメータe,Nは公開とされ、上記復号化
におけるdは非公開とされる。前記符号化及び復号化の
ための演算式は、べき乗剰余演算であり、代表的に「XY
mod N」(X, Y, N は正の整数)と記述する事ができ
る。「mod」は剰余演算を意味し、べき乗剰余演算「XY
mod N」は、XY をNで除算した余りを解とするものであ
る。
【0003】符号化/復号化装置において、べき乗剰余
演算「XY mod N」(X, Y, N は正の整数)を用いること
により、高度なセキュリティが得られることは、一般に
知られており、例えば、池野、小山”現代暗号理論”、
電子情報通信学会編 (昭和61年)にその記載があ
る。
【0004】ここで前記X, Y, N は、通常100ビット〜2
000ビット程度の非常に大きな数が使用されるため、「X
Y mod N」をいかにして高速に実行するかが、従来から
数学、工学の分野で課題とされていた。
【0005】その一つの解法として、次に示す〔アルゴ
リズム1〕が古典的に知られている。
【0006】 このアルゴリズムにおいてnはYのビット数に対応さ
れ、en en-1 ・・・e1はYの2進数表現である。このアル
ゴリズムは、概略的には、自乗の剰余乗算「A2 mod N」
(ステップ5)及び剰余乗算「A・B mod N」(ステップ
6)を組み合わせて実行され、en en-1 ・・・e1における
論理値1の個数をr(e)とすると、前記自乗の剰余乗算
「A2 mod N」にn−1回、前記剰余乗算「A・B mod N」
にr(e)−1回の演算が繰り返し行われることになる。
【0007】このように〔アルゴリズム1〕では、べき
乗剰余演算「XY mod N」 を剰余乗算「A・B mod N」など
に分解して実行するため、「A・B mod N」 の演算機能
を実現する演算装置を用いればよい。
【0008】しかしながら、A, B も非常に大きな数で
あり、たとえばデータ長を各々512ビットとすると、中
間結果AB が1024ビットの大きな数となる問題がある。
さらに、A・B をN で割った余りを最終結果とするため、
1024ビット÷512ビット という大きな値を扱う除算を実
行しなければならない。ここで乗算は乗数と被乗数を分
割することにより、マイクロプロセッサ等によって並列
高速処理が可能であるが、除算は並列高速処理が困難で
あり、剰余乗算「A・B mod N」 に分解して実行するとし
ても、やはりその除算処理が高速化を阻むという問題が
あった。
【0009】特に、上記剰余乗算「A・B mod N」におけ
る除算の問題を解決するため、Nによる除算を行なわず
に剰余乗算「A・B・R-1 mod N」を実行する以下の〔アル
ゴリズム2〕が知られている。ここで、R は2n(nは
例えばNのサイズ)であり、R>N を満たす正の整数で
ある。
【0010】このNによる除算を行なわずに剰余乗算
「A・B・R-1 mod N」を実行する〔アルゴリズム2〕に至
るまでの論証の詳細については、ここでは説明を詳細す
るが、例えば、Montgomery, P. L.: Modular Multiplic
ation without Trial Division, Mathematics of Compu
tation, Vol. 44, No. 170, pp. 519-521 (1985)、Duss
ё, S.R. and Kaliski, B. S. Jr.: A Cryptographic L
ibrary for the Motorola DSP56000, Advances in Cryp
tology -EUROCRYPTO '90, Lecture Notes in Computer
Science 473, pp. 230-244, Springer-Verlag (1991)に
記載がある。
【0011】〔アルゴリズム2〕 N' = -N-1 mod R ステップ1 M = A・B・N' mod R ステップ2 t = (A・B+M・N)/R ステップ3 if t≧N then return t-N else return t ステップ4
【0012】
【発明が解決しようとする課題】
第1の問題点 上記〔アルゴリズム2〕では、そのステップ1、ステッ
プ2でN', M をあらかじめ計算しておくという前処理が
必要になる。またM の値を一時的に保持する記憶装置も
新たに必要になる。
【0013】第2の問題点 さらに、上記〔アルゴリズム2〕において、そのステッ
プ4でtとNとの大小比較を行なわなければならず、そ
の比較のために、大きな値のtとNに対して実際にt−
N の減算処理を必要とするため、そのような減算処理
を繰り返し行うことによって全体の演算時間が増大して
しまう。
【0014】第3の問題点 また、上記〔アルゴリズム2〕のステップ3において
は、中間結果A・B がA, Bのデータ長の合計をデータ長と
する大きな数となるため、これらを一時的に保持する記
憶装置が新たに必要になる。さらに、〔アルゴリズム
2〕では〔アルゴリズム1〕で必要であったNによる除
算が不要になったとは言え、ステップ3ではA, B, M, N
の大きな数どうしの乗算が必要であり、これをいかにし
て効率良く実現するかという課題のあることが本発明者
によって見い出された。特にこれをハードウェアで実現
する場合、A, B, N の値を保持する記憶装置と、乗算を
実行する演算器との間でのデータのやりとりを頻繁に行
なわなければならず、記憶装置やデータパスの論理回路
規模を最小限に抑える必要のあることが本発明者によっ
て見い出された。
【0015】第4の問題点 さらに、〔アルゴリズム2〕で計算された剰余乗算「A・
B・R-1 mod N」を用いて、べき乗剰余演算 「XY mod N」
をいかに効率良く計算するかという課題がある。 一
例として、本発明者は〔アルゴリズム2〕を適用して
〔アルゴリズム1〕を変形することにより、以下の〔ア
ルゴリズム3〕を得た。
【0016】 この〔アルゴリズム3〕では、ステップ2で「R2 mod
N」の計算が前処理として必要になる。これを例えば汎
用マイクロプロセッサを用いてソフトウエアで計算した
場合、計算時間がかかり、全体として〔アルゴリズム
3〕の計算時間を増大させてしまうことが本発明者によ
って見い出された。この問題点は〔アルゴリズム1〕の
ステップ5,6でも同様に生じる。
【0017】第5の問題点 前記〔アルゴリズム3〕のステップ7で「A2・R-1 mod
N」を計算する際、剰余乗算「A・B・R-1 mod N」を用いて
計算するためには、BにAの値を転送するのに時間のか
かることが本発明者によって明らかにされた。また、前
記〔アルゴリズム3〕のステップ10では、Bの値を B
=1 にセットしなければならず、これによっても同様に
時間がかかる。
【0018】第6の問題点 さらに〔アルゴリズム3〕においてステップ4の「A =
A・B・R-1 mod N」、ステップ7の「A = A2・R-1 mod
N」、ステップ8の「A = A・B・R-1 mod N」では、演算結
果を入力値と同じ記憶装置Aに保存しなければならな
い。このとき、剰余乗算「A・B・R-1 mod N」は通常瞬時
には実行できず、多くのクロック数を費やして入力値A,
B, N を何度も参照しながら計算するため、途中結果お
よび最終結果を入力値A とは同じ記憶装置に保存でき
ず、一時記憶値(Temp)として別の記憶装置(例えばテ
ンポラリレジスタ)に保存する必要が生じる。そのた
め、実質的な演算式は「Temp ← A・B・R-1 mod N」とな
り、たとえばステップ8を実行するためには最後に「A
← Temp」を実行しなければならず、計算時間が増大し
てしまうという問題があった。この問題は〔アルゴリズ
ム1〕のステップ5、ステップ6でも同様に生じる。
【0019】本発明は上記事情に鑑みて成されたもので
あり、上記〔アルゴリズム1〕、〔アルゴリズム2〕、
〔アルゴリズム3〕で代表されるような、上記種々の問
題点を解決し、高速にべき乗剰余演算「 XY mod N 」を
実現することを目的とする。
【0020】特に、上記課題を専用のハードウェアおよ
び汎用のマイクロプロセッサを用いて解決し、高速なべ
き乗剰余演算「 XY mod N」 を実現することを目的と
する。
【0021】また本発明の別の目的は、上記の専用ハー
ドウェアの実現において、その論理回路規模を最小限に
することにある。
【0022】本発明のその他の目的は、上記専用ハード
ウェアをICカード用マイクロコンピュータと同一の半導
体チップに搭載し、べき乗剰余演算「 XY mod N」を適
用した符号化・復号化のためのマイクロコンピュータを
低コストで使い易く実現することにある。
【0023】この発明の前記ならびにそのほかの目的と
新規な特徴については、本明細書の記述および添付図面
から明らかになるであろう。
【0024】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を説明すれば、下記の通
りである。
【0025】すなわち、べき乗剰余演算に利用されるデ
ータ処理装置(6)は、nを演算値のビット数を表わす
正の整数、Nを 0<N<2n となるnビットの正の整数、A
inを0≦Ain<2n となるnビットの正の整数、Aoutを0≦
Aout<2n となるnビットの正の整数、kを0又は正の
整数とするとき、演算式がAout = f(Ain) mod N +kNで
与えられ、入力値 Ain と出力値 Aout の値の範囲を0
以上、2n 未満の整数とする剰余演算を行う演算手段
(32)と、この演算手段による上記剰余演算を制御す
る制御手段(31)とを1個の半導体基板に備えて構成
される。
【0026】一般式で与えられる前記Aout = f(Ain) mo
d N +kN の剰余演算は、 Aout = A in・B・R-1 mod N +kN
とAout = Ain・B mod N +kNの演算式で夫々与えられる
剰余演算とすることができ、このとき、Rは2n、R-1はR
・R-1 mod N = 1 を満たす 0<R-1 ≦N となるnビットの
正の整数、Bは0≦B<2n となるnビットの正の整数と表
現できる。
【0027】前記演算式Aout = Ain・B・R-1 mod N +kN
で与えられる剰余演算には、t = (Ai n・B+M・N)/Rで与え
られる演算処理と、これに続いてif t≧R then return
t-N else return tで与えられt−N又はtを前記Aout
とする演算処理とを含むことができる。図1に例示され
るように、tとRの比較においては、前記 t≧Rを、n
ビットのtのオーバーフローによって検出する。オーバ
ーフローの検出結果に応じてt−Nの演算を行えばよ
く、tとNを直接の比較対象とする場合に比べてt−N
の減算処理の頻度を少なくでき、剰余演算速度の高速化
に寄与する。
【0028】図11及び図12に例示されるように、直
列的に接続された積和演算器(33、34)を備え、部
分積の和として前記演算処理t = (Ain・B+M・N)/Rを実行
することができる。これにより、部分積の一次記憶用メ
モリ手段を要さず、演算手段の回路規模の縮小を実現す
る。
【0029】前記制御手段は前記直列的に接続された積
和演算器を用いて乗数と被乗数が多倍長とされる多倍長
乗算を選択的に実行することができる。これは、べき乗
剰余演算のための「R2mod N」の処理に必要な多倍長
乗算処理に適用できる。
【0030】前記演算手段は、図5に例示されるよう
に、前記演算式Aout = Ain・B・R-1 modN +kN におけるB
の値を、Ain又は1 に選択的に指定する手段(16、1
7)を備えることができる。これにより、「Ain・B・R-1
mod N + kN」、「Ain 2・R-1 modN + kN」又は「Ain・R-1
mod N + kN」を同じように演算することができ、値Bを
保有するためのレジスタに値Aを転送したり、値Bを保
有するためのレジスタに1を設定する処理を要さず、剰
余演算処理の高速化に寄与する。
【0031】マイクロコンピュータ(MCU)は、図3
に例示されるように前記データ処理装置(6)と、この
データ処理装置をコプロセッサとして利用するマイクロ
プロセッサ(5)とを1個の半導体基板に含み、前記マ
イクロプロセッサは、前記データ処理装置に前記演算A
out = Ain・B・R-1 mod N +kN に必要な入力値を設定して
当該演算処理を指示し、その演算結果を利用する。この
マイクロコンピュータによれば、剰余乗算 「A out= A
in・B・R-1 mod N +kN」、「Aout = Ain 2・R-1 modN +k
N」、「Aout = Ain・R-1 mod N +kN」 で与えられる演算
を、積和演算器を内蔵したコプロセッサで実行し、さら
にそのコプロセッサに前処理「 R2 mod N」 を高速に実
行するための乗算機能を備え、これらのコプロセッサの
演算機能を用いて、マイクロプロセッサでべき乗剰余演
算「 XY mod N」 を高速に実行することができる。
【0032】前記マイクロプロセッサにべき乗剰余演算
を実行させるための動作プログラムが格納されたROM
(8)をマイクロコンピュータのチップに搭載すること
ができる。このとき、前記演算Aout = Ain・B・R-1 mod N
+kN は前記べき乗剰余演算に含まれる演算とされる。
これにより、高度なセキュリティーの達成に寄与するマ
イクロコンピュータを実現できる。
【0033】前記べき乗剰余演算対象とされるデータを
電気的な書き換え可能に保持する不揮発性メモリ(1
0)を更にマイクロコンピュータチップに搭載すること
ができる。これにより、セキュリティーを保つべきデー
タを取り扱うICカード用マイクロコンピュータとして
の利用に最適化することができる。
【0034】演算結果Aoutを次の演算の入力値Ain
し、演算式 Aout = f(Ain) で与えられる演算を実行す
るデータ処理装置を、図7に例示されるように、Ain
Aoutの内容を各々記憶する記憶手段(23、24)と、
当該記憶手段に対するAin とAout の記憶場所の相互入
れ替えを指示するフラグ手段(27)と、前記演算式の
演算実行終了後に前記フラグ手段の値を反転させること
により、Ain とAoutの値の物理的な入れ替えに代え
て、Ain とAout の記憶場所を論理的に入れ換える
制御手段(28、31)とを含んで構成することができ
る。これにより、値Ai n とAout の記憶場所の入れ換え
を見かけ上瞬時に実行することができ、演算時間の短縮
に寄与する。
【0035】前記直列的に配置された積和演算器を利用
した処理は以下のデータ処理装置にも適用できる。すな
わち、nを演算値のビット数を表わす正の整数、Nを 0
<N<2n となるnビットの正の整数、Ainを0≦Ain<2n
となるnビットの正の整数、Aoutを0≦Aout<2n となる
nビットの正の整数とするとき、演算式がAout = f
(Ain) mod Nで与えられ、入力値 Ain と出力値 Aout
値の範囲を0以上、2n 未満の整数とする剰余演算を行
う演算手段と、この演算手段による上記剰余演算を制御
する制御手段とを1個の半導体基板に備えて成るデータ
処理装置である。前記Aout = f(Ain) mod N で与えられ
る剰余演算は、Aout = Ain・B・R-1 mod Nの演算式で与え
られる剰余演算を含み、Rは2n、R-1はR・R-1 mod N = 1
を満たす 0<R-1 ≦N となるnビットの正の整数、Bは
0≦B<2n となるnビットの正の整数であり、前記演算手
段は、演算式Aout = Ain・B・R-1 mod N、で与えられる剰
余演算を実行するための、直列的に接続された積和演算
器を備える。これに対する具体的な演算態様として、前
記演算式Aout = Ain・B・R-1 mod N で与えられる剰余演
算は、t = (Ain・B+M・N)/Rで与えられる演算処理と、こ
れに続いてif t≧R then return t-N else return tで
与えられt−N又はtを前記Aoutとする演算処理とを
含み、前記演算手段は、直列的に接続された前記積和演
算器により、部分積の和として前記演算処理t = (Ain・B
+M・N)/Rを実行する。これによっても同じく、部分積の
一次記憶用メモリ手段などを必要とせず、演算手段の回
路規模を縮小できる。
【0036】
【発明の実施の形態】
(1)第1の実施の形態 上記〔アルゴリズム2〕では、ステップ4でt とN との
大小比較を毎回行なわなければならず、特にt とN の値
が大きな値の時には実際にt−N の減算を必要とする
ため、全体の計算時間が増大するという上記第2の問題
点があった。第1の実施の形態においては、この問題点
を解決するため、〔アルゴリズム2〕のステップ4を、
tとNとの大小比較ではなく、tとRとの大小比較とす
るようにする。そのアルゴリズムを以下に示す。
【0037】〔アルゴリズム4〕 N' = -N-1 mod R ステップ1 M = A・B・N' mod R ステップ2 t = (A・B+M・N)/R ステップ3 if t≧R then return t-N else return t ステップ4 上記〔アルゴリズム4〕において、A,B,Nのビット
数はnビットであり、R=2n(第nビットまでの全ビ
ットが論理値0、第n+1番目のビットが論理値1とさ
れる2進数)とされる。このアルゴリズム4は、後述す
る演算式「Aout= Ain・B・R-1 mod N +kN」 を実現するも
のであり、その処理はべき乗剰余演算のための一つのサ
ブルーチンとして位置付けることができる。アルゴリズ
ム4において、t≧R ならば、t−NがAout とされ、
t<RならばtがAoutとされる。
【0038】上記〔アルゴリズム4〕のステップ4の大
小比較と減算は、ステップ3における「t =(A・B+M・N)/
R」の演算結果tが所定の値2n(=R)以上であるか否
かをtのオーバーフローによって検出し、オーバーフロ
ーを検出したとき、ステップ3のtをt−Nに補正する
という、「オーバフロー補正」として特徴付けることが
できる。この特徴を実現する回路の一例が、図1に示さ
れるオーバフロー補正回路である。図2 にはオーバフ
ロー補正回路の比較例として前記〔アルゴリズム2〕の
ステップ4を実現する回路のブロック図が示されてい
る。
【0039】先ず、図2では、t−Nの減算が減算器3
Aで実行され、その演算の結果、ボロー(Borrow)が発
生したか否かでtと減算結果t−Nのどちらかをセレク
タ4Aで選択して出力結果とする。従ってこの構成では
t−Nの減算の実行は必ず必要となる。
【0040】これに対して図1の構成では、tの値が所
定の数nで与えられるビット数を越えているかどうか
を、オーバフロービットOVが0か1かで判断する。こ
れが上記のtとRとの大小比較に相当する。すなわち、
上記の通りR=2nであるから前記オーバーフロービッ
トOVが1であればt≧Rとされ、オーバフロービット
OVが0であればt<Rとされる。
【0041】そこでOV=1でオーバフローが発生して
いる時だけ、減算器3でt−Nの減算を実行し、セレク
タ3で、その減算結果を選択して出力結果とする。OV
=0でオーバフローが発生していない時には、減算器3
による減算は行なわず、tをそのままセレクタ4で選択
して出力結果とする。オーバーフロービットOVは、演
算を制御する制御回路31にも供給されている。制御回
路31は、OV=1又はOV=0に応じて、例えば減算
器3で減算を行うか否かを制御する。減算を行う場合、
その減算の完了後にセレクタ4の出力を後段にラッチす
るように制御する。
【0042】従って図1の構成では図2の構成に比べて
減算を実行する頻度が低減でき、平均的な演算時間の短
縮を図ることができる。
【0043】ここで、前記〔アルゴリズム4〕で与えら
れる最終演算結果tはNよりも大きくなることがある。
即ち、R(=2n)>Nであるから、ステップ3の処理を
経て前記オーバーフロー補正で得られるtの値がRより
も小さく且つNよりも大きければ、そのtの値が、〔ア
ルゴリズム4〕で与えられる演算結果tとされる。前記
〔アルゴリズム2〕の場合には直接Nと比較するため、
最終的に得られる演算結果tは必ずNよりも小さくされ
る。そのため、〔アルゴリズム4〕全体の演算式を「A・
B・R-1 mod N + kN」で表わし、補正項kNによって前記
誤差を解消することが必要になる。ここでk は0又は正
の整数である。
【0044】前記剰余演算式「A・B・R-1 mod N + kN」
は、その値Aの入力値(Ain)と出力値(Aout)を区
別して記述すれば、演算式「Aout = Ain・B・R-1 mod N +
kN」 となる。これを、一般式化すれば、「Aout = f(A
in) mod N +kN 」と記述することができ、入力値 Ain
と出力値 Aout の値の範囲はNよりも大きな2n 未満とさ
れ、nは演算値のビット数を表わす正の整数、Nは 0<
N<2n となるnビットの正の整数、Ainは0≦Ain<2n
なるnビットの正の整数、Aoutは0≦Aout<2n となるn
ビットの正の整数、kは0又は正の整数とされる。前記
Rは2n、R-1はR・R-1mod N = 1 を満たす 0<R-1 ≦N と
なるnビットの正の整数、Bは0≦B<2n となるnビット
の正の整数である。
【0045】前記〔アルゴリズム4〕を使用した場合、
その補正項に伴ってべき乗剰余演算「XY mod N 」を実
行する〔アルゴリズム3〕を修正すると、以下に示す
〔アルゴリズム5〕を得る。
【0046】 〔アルゴリズム5〕 input X, Y=en en-1 ・・・e1, N, R ステップ1 B = R2 mod N ステップ2 A = X ステップ3 A = A・B・R-1 mod N + kN ステップ4 B = A ステップ5 for i = n-1 to 1 step -1 { ステップ6 A = A2・R-1 mod N + kN ステップ7 if ei=1 then A = A・B・R-1 mod N + kN ステップ8 } ステップ9 A = A・R-1 mod N + kN ステップ10 A = A mod N ステップ11 output A ステップ12 前記〔アルゴリズム3〕から〔アルゴリズム5〕への変
更点は、ステップ4,7,8,10のそれぞれの剰余乗
算の演算式を変更した他は、ステップ11 を追加しただ
けである。ステップ11は演算結果をNよりも小さくす
るために追加されている。前記〔アルゴリズム5〕の演
算は汎用マイクロプロセッサによって実行することも可
能である。本実施例においては、専用ハードウェアとし
てのコプロセッサを用いる。
【0047】図3には、べき乗剰余演算「XY mod N 」
を行うための〔アルゴリズム5〕を実行可能なマイクロ
コンピュータMCUの一例ブロック図が示されている。
【0048】図3において、5はマイクロプロセッサ、
6はコプロセッサ、7はクロック発生器、8はマイクロ
プロセッサ5が実行すべきプログラムや固定データが格
納されたROM(読み出し専用メモリ又はリードオンリ
メモリ)、9はマイクロプロセッサ5の作業領域を提供
するRAM(随時読み出し書き込み可能なメモリ又はラ
ンダムアクセスメモリ)、10は前記べき乗剰余演算
「XY mod N 」を適用して符号化された情報等の保持に
利用される電気的に書き換え可能なEEPROMやフラ
ッシュメモリなどの不揮発性メモリ(単にEEPROM
と称する)、11は入出力ポート(単にI/Oポートと
称する)である。マイクロプロセッサ5、コプロセッサ
6、RAM8、ROM9、EEPROM10及びI/O
ポート11は代表的に示されたバス12、13に共通接
続されている。バス12はアドレスバスとコントロール
バスを総称する。13はデータバスを意味する。クロッ
ク発生器7はクロック端子CLKから供給されるクロッ
ク信号に基づいて内部の動作基準クロック信号を生成し
てマイクロプロセッサ5及びコプロセッサ6に供給す
る。I/Oポート11はデータ入出力外部端子I/Oに
結合される。Vcc,VssはマイクロコンピュータM
CUの電源用外部端子、RESはマイクロコンピュータ
MCUのリセット用外部端子である。
【0049】マイクロコンピュータMCUは、特に制限
されないが、図3に示されている全ての機能ブロックが
単結晶シリコン基板のような一個の半導体基板に形成さ
れて成る。
【0050】前記コプロセッサ6は、上記〔アルゴリズ
ム5〕のステップ4、ステップ7、ステップ8、ステッ
プ10で示された「A = A・B・R-1 mod N + kN」等で記述
される「剰余乗算」を実行するための専用ハードウェア
として位置付けられ、演算回路32と制御回路31を含
んでいる。前記図1のオーバーフロー補正回路はコプロ
セッサ6に含まれる。剰余乗算の入力値A,B,R,N
及び出力値Aはコプロセッサ6の中のレジスタ又はRA
Mなどの記憶装置に保持される。あるいは、前記RAM
9に保持させるようにしてもよい。
【0051】マイクロプロセッサ5は、公知演算命令や
条件分岐命令等を実行できる汎用マイクロプロセッサで
あり、コプロセッサ6が実現する演算機能を使用しなが
ら、〔アルゴリズム5〕による、べき乗剰余演算「 XY
mod N」 を実現する。
【0052】図4には〔アルゴリズム5〕によってべき
乗剰余演算「 XY mod N」 を実行するときのマイクロプ
ロセッサ5とコプロセッサ6による処理のフローチャー
トが概略的に示されている。図4においてT1及びT5
は〔アルゴリズム5〕においてマクロプロセッサ5が負
担すべき演算処理とされ、C2は〔アルゴリズム5〕に
おいてコプロセッサ6が負担すべき演算処理とされる。
C2で行われる演算処理は、特に制限されないが、〔ア
ルゴリズム5〕のステップ4,7,8,10の処理とさ
れる。マイクロプロセッサ5は、コプロセッサ6に演算
を実行させるとき、それに必要な値(A,B,Nなど)
を例えばコプロセッサ6内部のレジスタ等に設定する
(T2)。その後マイクロプロセッサ5はコプロセッサ
6に対して演算開始をコマンドなどによって指示する
(T3)。コプロセッサ6はC1によって設定された入
力値を用い、コマンドなどによって指示された演算処理
を行う(C2)。その間、マイクロプロセッサ5はコプ
ロセッサ6による演算の終了を待ち、或いはその他の処
理を行うことができる(T4)。コプロセッサ6は、C
2による演算を終了すると、それをマイクロプロセッサ
に通知する(C3)。マイクロプロセッサ5はコプロセ
ッサ6によるC2の演算結果を用いてアルゴリズムの処
理を行う(T5)。更にコプロセッサ6に負担させるべ
き処理が残っている場合にはT6を経て上記処理が繰り
返される。
【0053】(2)第2の実施の形態 上記〔アルゴリズム5〕において、ステップ7で示され
た剰余乗算「A2・R-1 mod N + kN」は、ステップ8で示さ
れた剰余乗算「A・B・R-1 mod N + kN」においてB=A とす
ることにより実現できる。しかしながら、実際に、Aに
割り当てられたレジスタの値をBに割り当てられたレジ
スタへ転送していたのでは、演算の実行時間が増大して
しまうという問題を生じる。またステップ8をfor文の
ループの中で繰り返し実行する場合、同一のBの値を繰
り返し使用できるため、ステップ7でBの値をAの値で
書き換えない方がより効率的な演算の実行が可能とな
る。さらにステップ10で示された剰余乗算「A・R-1 mo
d N + kN」でも、同様にB=1とすることにより実現でき
るが、B に1 をセットするために演算の実行時間が増大
してしまうという問題が生じる。これらは前記第5の問
題点に対応される内容である。
【0054】この問題点を解決するため、剰余乗算「A・
B・R-1 mod N + kN」を実現する回路には、Bの値の代わ
りにAの値又は"1" を選択できるようにする構成を採
用するものである。
【0055】図5にはその課題を解決するための演算手
段のブロック図が示される。特に制限されないが、図5
に示されている演算手段は、図3のコプロセッサ6が実
現する一つの回路構成として位置付けることができ、単
結晶シリコン基板のような一個の半導体チップに形成さ
れたマイクロコンピュータMCUに含まれている。
【0056】図5において15は演算器、16はセレク
タ、17はコントロールレジスタ、18〜20は演算用
のレジスタである。セレクタ16はコントロールレジス
タ17の制御ビットCB0,CB1の値に従ってレジス
タ18,19又は固定値”1”を選択して演算器13に
与える。コントロールレジスタ17の2ビットCB0,
CB1はその論理値の組合せに応じて演算式を指定す
る。即ち、その設定値に応じて、剰余乗算「A・B・R-1 mo
d N + kN」におけるBの値として、レジスタ18の値
A, レジスタ19の値B、又は固定値”1” の何れか
をセレクタ16を介して演算器15に供給するようにな
っている。コントロールレジスタ17のビットCB0,
CB1に従ったセレクタの選択動作に従って、演算器1
5は、「A・B・R-1 mod N + kN」、「A2・R-1 mod N + k
N」又は「A・R-1 mod N + kN」を同じように演算するこ
とができる。したがって、値Bを保有するためのレジス
タに値Aを転送したり、値Bを保有するためのレジスタ
に1を設定する処理を要しない。コントロールレジスタ
15への値の設定は、例えば図3に示されるマイクロプ
ロセッサ5によりバス12,13を経由して行われる。
【0057】図6には図5の比較例としての演算手段の
ブロック図が示されている。図6の場合には、剰余乗算
「A2・R-1 mod N + kN」を実行する場合には、バスを経
由してA の値をB へ転送したり、Bの値を1に設定する
処理を行わなければならない。
【0058】(3)第3の実施の形態 上記〔アルゴリズム5〕において、ステップ8に代表さ
れる剰余乗算「A(Aout)= A(Ain)・B・R-1 mod N
+ kN」では、演算結果(Aout)を入力値A(Ain)と
同じ記憶装置もしくはレジスタに保存しなければならな
い。剰余乗算は通常瞬時には実行できず、多くのクロッ
ク数(演算ステップ数)を費やして入力値A,B,Nを
何度も参照しながら計算を行うため、計算の途中結果お
よび最終結果を入力値Aと同じ記憶装置に保存保存する
ことはできず、一次記憶値(Temp)用の別の一次記
憶装置に保存する必要が生じる。そのため、演算式「A
=A・B・R-1 mod N + kN」は、「Temp ← A・B・R-1 mod N +
kN」となり、ステップ8を実現するためには最後に「A
← Temp」を実行しなければならず、計算時間が増大し
てしまうという問題が本発明者によって見い出されてい
る。これは前記第6の問題点に対応される。この問題点
は〔アルゴリズム5〕のステップ4、7、10でも同様
に生じる。
【0059】図7には上記問題点の解決に着目した演算
手段のブロック図が示される。特に制限されないが、図
7に示されている演算手段は図3のコプロセッサ6が実
現する一つの回路構成として位置付けることができ、単
結晶シリコン基板のような一個の半導体チップに形成さ
れたマイクロコンピュータMCUに含まれる。
【0060】図7において、22は演算器、23と24
は前記値Aを格納するレジスタと一次記憶値Temp用
のテンポラリレジスタに交互に切換え利用されるレジス
タ、35は値Bを格納する為に利用されるレジスタ、2
6は値Nを格納するために利用されるレジスタである。
レジスタ23〜26と演算器22はコプロセッサ内部の
バス40に共通接続されている。
【0061】図7においてS1はレジスタ23の選択信
号、S2はレジスタ24の選択信号である。Rtmpは
一次記憶値Tempに対するアクセス信号、Raは値A
に対するアクセス信号である。アクセス信号Rtmp,
Raは、マイクロプロセッサがコプロセッサに与えたコ
マンドに応じて制御回路31が出力する演算制御信号の
一種とされる。
【0062】29、30はセレクタである。セレクタ2
9、30は、フラグ27の値に従ってアクセス信号Ra
又はRtmpを選択し、選択した信号をレジスタ選択信
号S1,S2として出力する。フラグ27が”1”のと
き、セレクタ29はアクセス信号Raをレジスタ選択信
号S1として選択し、セレクタ30はアクセス信号Rt
mpをレジスタ選択信号S2として選択する。フラグ2
7が”0”の時はセレクタ29,30による選択状態は
その逆にされる。
【0063】前記フラグ27の設定はフラグ反転制御ロ
ジック28によって行われる。このフラグ反転制御ロジ
ック28は、例えば、前記制御回路31に含まれ、演算
の手順を制御するシーケンサが剰余乗算「A・B・R-1 mod
N」の終了タイミングを示したとき、それに同期してフ
ラグ27の状態を反転制御する。
【0064】このように、前記レジスタ23と24は剰
余乗算「A・B・R-1 mod N」の度に交互に値A又は一次記
憶値Temp の格納用に割り当てられる。例えば、レジス
タ23が値Aの格納に使用されている時、レジスタ24
は一次記憶値Tempの格納に使用され、剰余乗算「A・B・R
-1 mod N」の実行終了時に、アクセス信号Ra,Rtm
pに対する選択信号S1,S2の対応が切り換えられる
ように制御される。このレジスタ機能の交換は、図示さ
れるように、1ビットのフラグ27を剰余乗算「A・B・R
-1 mod N」の実行終了時に反転させることにより制御さ
れる。これにより、値A, Temp の内容の入れ換えを見か
け上瞬時に実行することができ、演算時間の短縮に寄与
する。
【0065】図8は図7の演算手段に対する比較例を示
すものである。図8に示される演算手段において、剰余
乗算「A・B・R-1 mod N」の実行結果は、まず一時記憶値T
empのために固定的に割り当ているテンポラリレジスタ
に格納され、そのテンポラリレジスタの値Tempが、
値A専用のレジスタに転送されて、値Aのレジスタが最
終結果を保持する。そのようなデータ転送には少なから
ず時間を要する。
【0066】図9には図7のレジスタ23〜26をRA
M32で実現する場合のコプロセッサの例が示される。
【0067】特に制限されないが、図9に示されている
コプロセッサは、図3のマイクロコンピュータMCUの
コプロセッサ6に適用される一つの回路構成として位置
付けることができ、前記同様に、単結晶シリコン基板の
ような一個の半導体チップに形成されたマイクロコンピ
ュータMCUに含まれている。
【0068】図9において50はRAMであり、同図に
は記憶領域23M〜26Mが代表的に示されている。記
憶領域23M,24Mは交互に前記値Aを格納する領域
と演算の途中結果である一次記憶値Tempを格納する
領域に切換え利用される。記憶領域25Mは値Bを格納
する為に利用され、記憶領域26Mは値Nを格納するた
めに利用される。各記憶領域23M〜26Mは演算回路
内部のバス27を介して、代表的に示された演算器22
に接続されている。RAM50に対するアクセス制御は
バス52、53を介して行われる。アドレス信号として
Amsb〜A0の所定ビットのアドレス信号によってRAM
50のアドレシングが行われる。
【0069】コントロールレジスタ51にはマイクロプ
ロセッサ5から供給されたコマンドが設定され、制御回
路31がそれを解読して、演算器22などに対する制御
信号を生成する。
【0070】前記記憶領域23M〜26Mに対する選択
情報は、特に制限されないが、アドレス信号の最上位側
の2ビットAmsb,Amsb-1とされる。ここで、Amsb=
1のとき、フラグ27の論理値に応じてAmsb-1の論理
値を強制的に反転させるためにアンドゲート54及び排
他的論理和ゲート55が設けられ、そのゲート55の出
力A'msa-1がAmsa-1に代えてRAM50に供給され
る。Amsb=1,A'msb-1=0で記憶領域23M、Amsb
=1,A'msb-1=1で記憶領域24M、Amsb=0,A'
msb-1=0で記憶領域25M、Amsb=0,A'msb-1=1
で記憶領域26Mを選択する。コプロセッサの動作プロ
グラム上において、Amsb=1,Amsb-1=0は値Aの格
納領域を指し、Amsb=1,Amsb-1=1はtempの格納領
域を指す。
【0071】前記フラグ27の設定はフラグ反転制御ロ
ジック28によって行われる。このフラグ反転制御ロジ
ック28は、例えば、演算の手順を制御する制御回路3
1内部のシーケンサが剰余乗算「A・B・R-1 mod N」の終
了タイミングを示したとき、それに同期してフラグ27
の状態を反転制御する。
【0072】これにより、前記記憶領域23M,24M
はそれぞれ排他的に値Aの格納、又は一次記憶値Tem
pの格納に使用される。例えば、フラグ27が0のと
き、記憶領域23Mが値Aの格納に、記憶領域24Mが
Tempの格納に使用される。剰余乗算の実行終了時にフラ
グ27の値が1に反転されると、次の演算では、記憶領
域23Mが値tempの格納に、記憶領域24Mが値Aの格
納に使用される。これにより、レジスタに代えてRAM
50を用いる場合にも、値A, Temp の内容の入れ換えを
見かけ上瞬時に実行することができる。
【0073】(4)第4の実施の形態 上記〔アルゴリズム5〕において、ステップ8に代表さ
れる剰余乗算「A= A・B・R-1 mod N + kN」を実行するた
めのアルゴリズムは、前記〔アルゴリズム4〕で記述さ
れるが、このアルゴリズムにおいて次の点を考慮する必
要がある。
【0074】前記〔アルゴリズム5〕のステップ1、ス
テップ2でN', M を予め用意しなければならない。また
大きな値を採るM は演算時点まで保持されなければなら
ない。また、前記〔アルゴリズム5〕のステップ3にお
いては、中間結果ABは、値A,Bのデータ長の合計を
データ長とする大きな数となるため、これらを一時的に
保持するにはそれに応じた記憶装置が必要になる。これ
らは、前記第1の問題点に対応される。
【0075】また、前記〔アルゴリズム5〕のステップ
3ではA,B,M,Nの大きな数どうしの乗算が必要で
あり、これをいかにして効率良く実現するかという課題
があった。特にこれをハードウェアで実現する場合、
A,B,N の値を保持する記憶装置と、乗算を実行す
る演算器との間でデータのやりとりを頻繁に行なわなけ
ればならず、記憶装置やデータパスの論理回路規模を最
小限に抑えるための考慮が必要である。これは前記第3
の問題点に対応される。
【0076】ここでは、それらの問題点を解決するため
の手段として、先ず、前記A,B,M,Nの値の大きな
数どうしの乗算を効率良く実現するための原理について
説明する。
【0077】図10には値B, M のブロック分割の例が
示されている。図10においては、nビット長のB,M
を各々Lビット長のブロックに分割した状態が図示され
ている。これにより、B,Mは各々n/L 個のブロッ
クに分割される。例えばnは512ビット、Lは32ビ
ットのような値とされる。
【0078】このブロック分割を用いて、〔アルゴリズ
ム4〕のステップ3で記述された演算式「(A・B+M・N)/
R」に、部分積に分解する変形を施すと、以下のように
なる。下記に示された式の変形結果は専ら部分積の項の
形式が把握できる範囲で記載を省略してある。
【0079】 (A・B+M・N)/R = (A・(2n-L・Bn/L-1 +・・・+ 2L・B1 + B0)+(2n-L・Mn/L-1 + ・・・ + 2 L・ M1 + M0)・N)/R = (・・・((A・B0+M0・N)/2L + (A・B1+M1・N))/2L +・・・+ (A・Bn/L-1+Mn/L-1・N))/2L この変形式より明らかなように、演算「(A・Bi+Mi・N)/
2L」をn/L回 繰り返して実行すれば、「(A・B+M・N)/
R」を実現できることになる。
【0080】図11には前記部分積による演算「(A・Bi+
Mi・N)/2L」を実行する為の演算手段に着目したコプロセ
ッサの更に別の例が示されている。特に制限されない
が、図11に示されているコプロセッサは、図3のコプ
ロセッサ6に適用される一つの回路構成として位置付け
ることができ、前記同様に、単結晶シリコン基板のよう
な一個の半導体チップに形成されたマイクロコンピュー
タMCUに含まれる。
【0081】図11において、33は第1の積和演算
器、34は第2の積和演算器、35は一次記憶値Tem
pを保持するテンポラリレジスタ、36は値Aの格納に
利用れるレジスタ、37は値Bの格納に利用されるレジ
スタ、38は値Nの格納に利用されるレジスタである。
39はMi生成ロジック、40はMi生成ロジック39
で生成された値Miを保持するラッチ、41は「÷2L
を行うためのシフト回路である。
【0082】図11に示される回路は図9に示される態
様のブロック分割に基づいて演算「(A・Bi+Mi・N)/2L」を
実行する回路である。先ず、第1の積和演算器33は、
レジスタ35の値Temp、レジスタ36の値A、レジスタ
37の値Bi を入力として、積和演算「Temp + A・Bi」を
実行する。その演算結果は値Temp2 として次段の第2の
積和演算器34へ送られる。値Temp2 はn+Lビット長
の整数である。一方、Mi生成ロジック39は、Lビッ
ト長の数A0, Bi, N0 を入力としてLビットの整数Mi
生成し、この正数Miはレジスタ40に一時的に保持さ
れる。第2の積和演算器34は、前記Temp2, N, Mi
入力として、積和演算「Temp2 + Mi・N」を実行する。n
+L ビット長の演算結果の下位Lビットは全て0であ
り、これをシフタ41によって消去して(すなわち2L
で割って)、nビット長の結果が値Temp としてレジス
タ35に送られ保持される。
【0083】以上の動作をn/L回 繰り返し実行すれ
ば、演算「(A・B+M・N)/R」が実現できる。これによれ
ば、nビットの整数Mをあらかじめ計算して保持する必
要はなく、Lビット長のMiのみを積和演算器33の計算
中に求めてレジスタ40に保持すればよく、値Mの計算
時間の削除、および値Mを保持する記憶手段の規模を縮
小することができる。さらに、積和演算器33と積和演
算器34を直列的に接続して連続的に動作させることに
より、n+Lビット長の中間結果Temp2 を一時的に保持
する記憶手段を特別に設けることも必要なくなる。
【0084】図12には前記部分積による演算「(A・Bi+
Mi・N)/2L」を実行する為の演算部に着目したコプロセッ
サの更に別の例が示される。特に制限されないが、図1
2に示されているコプロセッサは、図3のコプロセッサ
6に適用される一つの回路構成として位置付けることが
でき、前記同様に、単結晶シリコン基板のような一個の
半導体チップに形成されているマイクロコンピュータM
CUに含まれる。
【0085】図12の例は、図11のコプロセッサに対
し、レジスタ35〜38を積和演算器33、34にバス
40で接続した点が相違される。したがって前記レジス
タ35〜38をRAM42で構成することができるよう
になる。これにより、半導体チップ上のレジスタ面積の
低減が可能となる。また、この構成においては、特にバ
ス40によるデータ転送量が多いため、バス幅が大きく
なって半導体チップの面積が大きくならないようにする
必要が生じるが、図11の例で示したように積和演算器
33と積和演算器34を直列的に接続することにより、
中間結果Temp2をバスを用いて転送することが不要にな
るため、バスによるデータ転送量の低減を図ることがで
きる。
【0086】(5)第5の実施の形態 図11又は図12のコプロセッサの例において、第1の
積和演算器33でTemp=0、第2の積和演算器34でMi・N
=0、さらにセレクタ41による「÷2L」の動作を行なわ
ないことにより、同図に示される演算手段を、「A・Bi
のような多倍長乗算(小さな数Biとその多倍長に相当
する大きな数Aとの乗算)を実行する回路として使用す
ることができる。これは、前記第4の問題点を解決する
ための一つの手段とされる。「A・Bi」のような多倍長乗
算演算は、例えば〔アルゴリズム5〕のステップ2の演
算「R2 mod N」をマイクロプロセッサを用いて実行する
ときに適用されることにより、その演算の高速化を図る
ことができる。
【0087】即ち、図13には「R2 mod N」の計算の
概念図が示されている。図13において、R=2n、n
=512とされ、Nは512ビット、R2は最上位ビッ
トだけが1で下位側1024ビット全てが0の値とされ
る。マイクロプロセッサで演算「R2 mod N」を行うと
き、大きな数のR2を同様に大きな数のNで直接に除算
するのは効率的でないから、被除数を最上位側から64
ビット単位のブロックとして把握し、また、除数を最上
位側から32ビット単位のブロックとして把握し、順次
上位側のブロック同士を対象に除算を行い、それによっ
て得られる値を商の概数として把握する。図13におい
て例えばQ(=Da÷Na)を商の概数として把握す
る。概略的には、R2の上位側に対して「Q・Na」を
減算し、その減算結果の上位側に対して「Q・Nb」を
減算する。「Q・Nb」の減算結果に対して同様の処理
を行い、更にその結果の対して同様の処理を繰り返すと
いう手法によって、「R2 mod N」の結果を得ることが
できる。実際にはその途上で、余剰ビットを消去するた
めの減算処理が介在される。このとき、図13の例に従
えば、前記演算「Q・Nb」の処理は、第1回目では3
2ビットと480ビットという大きな数の乗算処理とさ
れる。しかもそのような大きな数の乗算処理は何回も繰
り返される。このとき、図11や図12に示されるコプ
ロセッサによって演算可能な前記「A・Bi」のような多倍
長乗算演算を利用することにより、換言すれば、そのよ
うな多倍長乗算演算をコプロセッサに負担させれば、
〔アルゴリズム5〕におけるステップ2の演算「R2 mod
N」をマイクロプロセッサを用いて実行するとき、その
演算処理の高速化を図ることができる。
【0088】以上本発明者によって成された発明を具体
的に説明したが、本発明はそれに限定されるものではな
く、その要旨を逸脱しない範囲において種々変更可能で
あることは言うまでもない。図1、5、7、9、11、
12に基づいて説明した内容は、それぞれに対応される
課題の解決手段を理解し易くするために、コプロセッサ
の別々の回路構成であるかのように説明してきたが、そ
れらの構成は全てを又は選択的に複数種類の構成を一つ
のコプロセッサで実現できることは言うまでもない。
【0089】また、値A,B,Nのビット数は512ビ
ットに限定されず、それ以上のビット数を利用可能であ
ることは言うまでもない。また、べき乗剰余演算を実現
するためのハードウェア構成は上記の各種実施の形態に
限定されず適宜変更可能である。
【0090】また、上記説明した演算技術は、特に図示
はしないが、前記アルゴリズム2を採用しないところの
アルゴリズム1に従ったべき乗剰余演算を行うコプロセ
ッサやマイクロコンピュータ等のデータ処理装置にも適
用することができる。
【0091】さらに、上記説明では補正項kNを用いる
場合を一例としたが、前記直列的に配置された積和演算
器33、34を利用した処理は、前記アルゴリズム3に
基づいてべき乗剰余演算を行う以下のデータ処理装置に
も適用できる。すなわち、nを演算値のビット数を表わ
す正の整数、Nを 0<N<2n となるnビットの正の整
数、Ainを0≦Ain<2n となるnビットの正の整数、Aout
を0≦Aout<2n となるnビットの正の整数とするとき、
演算式がAout = f(Ain) mod Nで与えられ、入力値 Ain
と出力値 Aout の値の範囲をNよりも大きな2n 未満とす
る剰余演算を行う演算手段と、この演算手段による上記
剰余演算を制御する制御手段とを1個の半導体基板に備
えて成るデータ処理装置である。前記Aout = f(Ain) mo
d N で与えられる剰余演算は、Aout = Ain・B・R-1 mod N
の演算式で与えられる剰余演算を含み、Rは2n、R-1はR
・R-1 mod N = 1 を満たす 0<R-1 ≦N となるnビットの
正の整数、Bは0≦B<2n となるnビットの正の整数であ
り、前記演算手段は、演算式Aout = Ain・B・R-1 mod N、
で与えられる剰余演算を実行するための、直列的に接続
された積和演算器33、34を備える。これに対する具
体的な演算態様として、前記演算式Aout = Ain・B・R-1 m
od N で与えられる剰余演算は、t = (Ain・B+M・N)/Rで与
えられる演算処理と、これに続いてif t≧R then retur
n t-N else return tで与えられt−N又はtを前記A
outとする演算処理を含み、前記演算手段は、直列的に
接続された前記積和演算器33、34により、部分積の
和として、前記演算処理 t=(Ain・B+M・N)/Rを実行す
る。これによっても同じく、部分積の一次記憶用メモリ
手段などを必要とせず、演算手段の回路規模を縮小でき
る。
【0092】本発明はコプロセッサやマイクロコンピュ
ータの他に、ICカード、符号化・復号化装置若しくは
暗号化・復号化装置などに広く適用することができる。
【0093】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば、下
記の通りである。
【0094】すなわち、高速にべき乗剰余演算「 XY mo
d N 」を実現することができる。
【0095】また、べき乗剰余演算に為の上記の専用ハ
ードウェアの実現において、その論理回路規模を最小限
にすることができる。
【0096】更に、上記専用ハードウェアをICカード用
マイクロコンピュータと同一の半導体チップに搭載し、
べき乗剰余演算「 XY mod N」を適用した符号化・復号
化のためのマイクロコンピュータを低コストで使い易く
実現することができる。
【0097】そして、マイクロプロセッサを搭載するマ
イクロコンピュータにおいて、剰余乗算 A = A・B・R-1 m
od N +kN、A = A2・R-1 mod N +kN、A = A・R-1 mod N +k
N で与えられる演算を、積和演算器を内蔵したコプロセ
ッサで実行し、さらに同一のコプロセッサに前処理 R2
mod N を高速に実行するための乗算機能を備え、これら
のコプロセッサの演算機能を用いて、マイクロプロセッ
サでべき乗剰余演算 XY mod N を高速に実行することが
できる。
【図面の簡単な説明】
【図1】オーバフロー補正回路の一例を示すブロック図
である。
【図2】オーバフロー補正回路に対する比較例のブロッ
ク図である。
【図3】べき乗剰余演算「XY mod N」を行うためのア
ルゴリズム5を実行可能なマイクロコンピュータの一例
ブロック図である。
【図4】3図のマイクロコンピュータにおいてアルゴリ
ズム5に従ってべき乗剰余演算「XY mod N」を行うと
きのマイクロプロセッサとコプロセッサの概略的な処理
の流れを示すフローチャートである。
【図5】複数種類の剰余乗算「A・B・R-1 mod N + kN」、
「A2・R-1 mod N + kN」又は「A・R-1 mod N + kN」を選
択的に実行できるコプロセッサの演算手段を示すブロッ
ク図である。
【図6】図5の演算手段に対する比較例を示すブロック
図である。
【図7】A=A・B・R-1 mod N + kNなどの演算において入力
レジスタとテンポラリレジスタとのレジスタ機能交換を
実現する演算手段の一例を示すブロック図である。
【図8】図7の演算手段に対する比較例を示すブロック
図である。
【図9】図7のレジスタをRAMに置き換えてレジスタ
機能交換を実現する演算手段の一例を示すブロック図で
ある。
【図10】部分積のために値B,Mをブロック分割した
例を示す説明図である。
【図11】部分積により(A・Bi+Mi・N)/2Lを実
行するための演算手段を含むコプロセッサのブロック図
である。
【図12】部分積により(A・Bi+Mi・N)/2Lを実
行するための別の演算手段を含むコプロセッサのブロッ
ク図である。
【図13】R2 mod Nの計算の概念を示す説明図であ
る。
【図14】べき乗剰余演算を適用する符号化、復号化装
置の概略説明図である。
【符号の説明】
3 演算器 4 セレクタ MCU マイクロコンピュータ 5 マイクロプロセッサ 6 コプロセッサ 15 演算器 16 セレクタ 17 コントロールレジスタ CB,CB2 制御ビット 18〜20 レジスタ 22 演算器 23〜26 レジスタ 27 フラグ 28 フラグ反転制御ロジック 29,30 セレクタ Ra,Rtmp アクセス信号 S1,S2 レジスタ選択信号 31 制御回路 50 RAM 23M〜26M 記憶領域 51 コントロールレジスタ 33 第1の積和演算器 34 第2の積和演算器 35〜38 レジスタ 39 Mi生成ロジック 40 レジスタ 41 シフタ 42 RAM

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 nを演算値のビット数を表わす正の整
    数、Nを 0<N<2n となるnビットの正の整数、Ainを0
    ≦Ain<2n となるnビットの正の整数、Aoutを0≦Aout
    <2n となるnビットの正の整数、kを0又は正の整数
    とするとき、演算式がAout = f(Ain) mod N +kN で与え
    られ、入力値 Ain と出力値 Aout の値の範囲を0以
    上、2n 未満の整数とする剰余演算を行う演算手段と、
    この演算手段による上記剰余演算を制御する制御手段と
    を1個の半導体基板に備えて成るものであることを特徴
    とするデータ処理装置。
  2. 【請求項2】 前記Aout = f(Ain) mod N +kN で与えら
    れる剰余演算は、Aout = Ain・B・R-1 mod N +kN とAout
    = Ain・B mod N +kNの演算式で夫々与えられる剰余演算
    を含み、Rは2n、R-1はR・R-1 mod N = 1 を満たす 0<R
    -1 ≦N となるnビットの正の整数、Bは0≦B<2n とな
    るnビットの正の整数であることを特徴とする請求項1
    記載のデータ処理装置。
  3. 【請求項3】 前記演算式Aout = Ain・B・R-1 mod N +kN
    で与えられる剰余演算は、t = (Ain・B+M・N)/Rで与えら
    れる演算処理と、これに続いてif t≧R then return t-
    N else return tで与えられ、t−N又はtを前記Aout
    とする演算処理とを含み、前演算手段は、前記 t≧R
    を、nビットのtのオーバーフローによって検出するこ
    とを特徴とする請求項2記載のデータ処理装置。
  4. 【請求項4】 前記演算手段は、演算式Aout = Ain・B・R
    -1 mod N +kN で与えられる剰余演算を実行するため
    の、直列的に接続された積和演算器を備えて成るもので
    あることを特徴とする請求項2記載のデータ処理装置。
  5. 【請求項5】 前記演算式Aout = Ain・B・R-1 mod N +kN
    で与えられる剰余演算は、t = (Ain・B+M・N)/Rで与えら
    れる演算処理と、これに続いてif t≧R then return t-
    N else return tで与えられ、t−N又はtを前記Aout
    とする演算処理とを含み、前記演算手段は、直列的に接
    続された積和演算器を備え、部分積の和として前記演算
    処理t = (Ain・B+M・N)/Rを実行するものであることを特
    徴とする請求項2記載のデータ処理装置。
  6. 【請求項6】 前記制御手段は前記直列的に接続された
    積和演算器を用いて乗数と被乗数が多倍長とされる多倍
    長乗算を選択的に実行するものであることを特徴とする
    請求項5記載のデータ処理装置。
  7. 【請求項7】 前記演算手段は、前記演算式Aout = Ain
    ・B・R-1 mod N +kNにおけるBの値を、Ain又は1 に選択的
    に指定する手段を備えて成るものであることを特徴とす
    る請求項4乃至6の何れか1項記載のデータ処理装置。
  8. 【請求項8】 前記演算式Aout = Ain・B・R-1 mod N +kN
    で与えられる剰余演算は、t = (Ain・B+M・N)/Rで与えら
    れる演算処理と、これに続いてif t≧R then return t-
    N else return tで与えられt−N又はtを前記Aout
    する演算処理とを含み、前記演算手段は、前記 t≧R
    を、nビットのtのオーバーフローによって検出し、ま
    た、直列的に接続された積和演算器を備え部分積の和と
    して前記演算処理t = (Ain・B+M・N)/Rを実行し、また、
    前記演算式Aout = Ain・B・R-1 mod N +kN におけるBの値
    をAin又は1 に選択的に指定する手段を備えて成るもの
    であることを特徴とする請求項2記載のデータ処理装
    置。
  9. 【請求項9】 前記制御手段は前記直列的に接続された
    積和演算器を用いて乗数と被乗数が多倍長の多倍長乗算
    を選択的に実行するものであることを特徴とする請求項
    8記載のデータ処理装置。
  10. 【請求項10】 請求項9記載のデータ処理装置と、こ
    のデータ処理装置をコプロセッサとして利用するマイク
    ロプロセッサとを1個の半導体基板に含み、前記マイク
    ロプロセッサは、前記データ処理装置に前記演算Aout =
    Ain・B・R-1 mod N +kN に必要な入力値を設定して当該
    演算処理を指示し、その演算結果を利用するものである
    ことを特徴とするマイクロコンピュータ。
  11. 【請求項11】 前記マイクロプロセッサにべき乗剰余
    演算を実行させるための動作プログラムが格納されたR
    OMを有し、前記演算Aout = Ain・B・R-1 modN +kN は前
    記べき乗剰余演算に含まれる演算であることを特徴とす
    る請求項10記載のマイクロコンピュータ。
  12. 【請求項12】 前記べき乗剰余演算対象とされるデー
    タを電気的な書き換え可能に保持する不揮発性メモリを
    更に備えて成るものであることを特徴とする請求項11
    記載のマイクロコンピュータ。
  13. 【請求項13】 演算結果Aoutを次の演算の入力値A
    inとし、演算式 Aout= f(Ain) で与えられる演算を実行
    するデータ処理装置において、Ain とAoutの内容を各々
    記憶する記憶手段と、当該記憶手段に対するAin とAout
    の記憶場所の相互入れ替えを指示するフラグ手段と、
    前記演算式の演算実行終了後に前記フラグ手段の値を反
    転させることにより、Ain とAout の値の物理的な入れ
    替えに代えて、Ain とAout の記憶場所を論理的に入れ
    換える制御手段とを含んで成るものであることを特徴と
    するデータ処理装置。
  14. 【請求項14】 nを演算値のビット数を表わす正の整
    数、Nを 0<N<2nとなるnビットの正の整数、Ainを0≦
    Ain<2n となるnビットの正の整数、Aoutを0≦Aout<2
    n となるnビットの正の整数、kを0又は正の整数とす
    るとき、演算式がAout = f(Ain) mod N+kN で与えら
    れ、入力値 Ain と出力値 Aout の値の範囲をNよりも大
    きな2n 未満とする剰余演算を行う演算手段と、この演
    算手段による上記剰余演算を制御する制御手段とを1個
    の半導体基板に備えて成るデータ処理装置であって、前
    記Aout = f(Ain) mod N+kN で与えられる剰余演算は、
    Aout = Ain・B・R-1 mod N+kN の演算式で与えられる剰
    余演算を含み、Rは2n、R-1はR・R-1 mod N = 1 を満た
    す 0<R-1 ≦N となるnビットの正の整数、Bは0≦B<2
    n となるnビットの正の整数であり、前記演算手段は、
    演算式Aout = Ain・B・R-1 mod N+kN、で与えられる剰余
    演算を実行するための、直列的に接続された積和演算器
    を備えて成るものであることを特徴とするデータ処理装
    置。
  15. 【請求項15】 前記演算式Aout = Ain・B・R-1 mod N+k
    N で与えられる剰余演算は、t = (Ain・B+M・N)/Rで与え
    られる演算処理と、これに続いてif t≧R then return
    t-N else return tで与えられt−N又はtを前記Aout
    とする演算処理とを含み、前記演算手段は、直列的に接
    続された前記積和演算器により、部分積の和として前記
    演算処理t = (Ain・B+M・N)/Rを実行するものであること
    を特徴とする請求項14記載のデータ処理装置。
JP16932296A 1996-06-28 1996-06-28 マイクロコンピュータ Expired - Fee Related JP3615622B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP16932296A JP3615622B2 (ja) 1996-06-28 1996-06-28 マイクロコンピュータ
TW086107636A TW378294B (en) 1996-06-28 1997-06-03 Data processing unit and microprosessor
US08/883,235 US5961578A (en) 1996-06-28 1997-06-26 Data processor and microcomputer
KR1019970027679A KR980004018A (ko) 1996-06-28 1997-06-26 데이타 처리장치 및 마이크로컴퓨터

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP16932296A JP3615622B2 (ja) 1996-06-28 1996-06-28 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JPH1021057A true JPH1021057A (ja) 1998-01-23
JP3615622B2 JP3615622B2 (ja) 2005-02-02

Family

ID=15884405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16932296A Expired - Fee Related JP3615622B2 (ja) 1996-06-28 1996-06-28 マイクロコンピュータ

Country Status (4)

Country Link
US (1) US5961578A (ja)
JP (1) JP3615622B2 (ja)
KR (1) KR980004018A (ja)
TW (1) TW378294B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2791155A1 (fr) * 1999-03-17 2000-09-22 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
JP2004514960A (ja) * 2000-05-12 2004-05-20 ジ アテナ グループ インコーポレーティッド 剰余演算を用いて計算を行う方法および装置
JP2006276786A (ja) * 2005-03-30 2006-10-12 Fujitsu Ltd 計算方法、計算装置及びコンピュータプログラム
JP2010139544A (ja) * 2008-12-09 2010-06-24 Renesas Electronics Corp 剰余演算装置、及び剰余演算方法
US8009827B2 (en) 2006-02-22 2011-08-30 Hitachi, Ltd. Encryption processing method and encryption processing device

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5380007A (en) * 1994-01-21 1995-01-10 Travis; Christopher P. Video lottery gaming device
TW536672B (en) * 2000-01-12 2003-06-11 Hitachi Ltd IC card and microcomputer
TW480436B (en) * 2000-12-21 2002-03-21 Goldkey Technology Corp Modular multiplier and ciphering/deciphering machine using the modular multiplier
US7171510B2 (en) * 2000-12-28 2007-01-30 Intel Corporation On-chip observability buffer to observer bus traffic
JP2002229445A (ja) * 2001-01-30 2002-08-14 Mitsubishi Electric Corp べき乗剰余演算器
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
JP2002358010A (ja) * 2001-05-31 2002-12-13 Mitsubishi Electric Corp べき乗剰余演算器
US6973470B2 (en) * 2001-06-13 2005-12-06 Corrent Corporation Circuit and method for performing multiple modulo mathematic operations
JP4360792B2 (ja) * 2002-09-30 2009-11-11 株式会社ルネサステクノロジ べき乗剰余演算器
DE10355642A1 (de) * 2003-11-28 2005-06-23 Giesecke & Devrient Gmbh Erweiterte Montgomery-Multiplikation und Montgomery-Multiplikation mit vergrößerter Operandenlänge
DE102005030286A1 (de) * 2005-06-29 2007-01-04 Giesecke & Devrient Gmbh Verwendung eines Koprozessors zur modularen Inversion
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
US20110145311A1 (en) * 2009-12-16 2011-06-16 Electronics And Telecommunications Research Institute Method and apparatus for modulo n operation
DE102011100390A1 (de) 2011-05-04 2012-11-08 Giesecke & Devrient Gmbh Beschleunigte kryptographische Berechnung, insbesondere ECC-Berechnung, in Prozessor mit Montgomery-Koprozessor

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69226110T2 (de) * 1991-03-22 1999-02-18 Philips Electronics Nv Recheneinheit zum Multiplizieren langer ganzer Zahlen Modul M und R.S.A-Wandler mit einer derartigen Multiplikationsanordnung
US5724279A (en) * 1995-08-25 1998-03-03 Microsoft Corporation Computer-implemented method and computer for performing modular reduction

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2791155A1 (fr) * 1999-03-17 2000-09-22 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
JP2004514960A (ja) * 2000-05-12 2004-05-20 ジ アテナ グループ インコーポレーティッド 剰余演算を用いて計算を行う方法および装置
US8180821B2 (en) 2000-05-12 2012-05-15 The Athena Group, Inc. Method and apparatus for performing computations using residue arithmetic
US8965943B2 (en) 2000-05-12 2015-02-24 The Athena Group, Inc. Method and apparatus for performing computations using residue arithmetic
JP2006276786A (ja) * 2005-03-30 2006-10-12 Fujitsu Ltd 計算方法、計算装置及びコンピュータプログラム
US8009827B2 (en) 2006-02-22 2011-08-30 Hitachi, Ltd. Encryption processing method and encryption processing device
JP2010139544A (ja) * 2008-12-09 2010-06-24 Renesas Electronics Corp 剰余演算装置、及び剰余演算方法

Also Published As

Publication number Publication date
JP3615622B2 (ja) 2005-02-02
KR980004018A (ko) 1998-03-30
TW378294B (en) 2000-01-01
US5961578A (en) 1999-10-05

Similar Documents

Publication Publication Date Title
EP1293891B1 (en) Arithmetic processor accomodating different finite field size
JP3615622B2 (ja) マイクロコンピュータ
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
US20050198093A1 (en) Montgomery modular multiplier
US6009450A (en) Finite field inverse circuit
JP2010044398A (ja) 多倍長演算装置
IL97413A (en) Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
US6917956B2 (en) Apparatus and method for efficient modular exponentiation
JP2000353077A (ja) 多倍長演算装置
US6424987B1 (en) Method for the implementation of a specific modular multiplication operation relating to the montgomery method
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
US7590235B2 (en) Reduction calculations in elliptic curve cryptography
JP2000207387A (ja) 演算装置及び暗号処理装置
JP2006508464A (ja) ルックアップテーブルを備える乗算器
US7471789B2 (en) Encryption circuit achieving higher operation speed
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
JP3099255B2 (ja) 剰余乗算器
KR100399048B1 (ko) 타원곡선 암호화 장치
JPH05224889A (ja) 乗算装置
SINGH et al. A Novel Scalable Montgomery Modular Multiplication Architecture with Low-Latency and Low-Memory Bandwidth Requirement
JPH03176735A (ja) 乗算剰余演算器
JPH06215019A (ja) 演算装置及び並列演算装置システム
JPH06282414A (ja) 積和演算回路

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040427

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041101

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20071112

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081112

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081112

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091112

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees