JP3615622B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP3615622B2
JP3615622B2 JP16932296A JP16932296A JP3615622B2 JP 3615622 B2 JP3615622 B2 JP 3615622B2 JP 16932296 A JP16932296 A JP 16932296A JP 16932296 A JP16932296 A JP 16932296A JP 3615622 B2 JP3615622 B2 JP 3615622B2
Authority
JP
Japan
Prior art keywords
mod
ain
calculation
aout
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP16932296A
Other languages
English (en)
Other versions
JPH1021057A (ja
Inventor
邦彦 中田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
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 Renesas Technology Corp filed Critical Renesas Technology Corp
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

Images

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)

Description

【0001】
【発明の属する技術分野】
本発明は、剰余演算機能を備えたデータ処理装置に適用して有効なものに関し、特に、剰余乗算演算やべき乗剰余演算を用いた符号化及び復号化装置に適用して有効な技術に関するものである。
【0002】
【従来の技術】
暗号技術の一つとして公開鍵暗号技術が有る。例えば、図14に示されるように、送信者は、メッセージMに対して「C=MmodN」による符号化で暗号文Cを形成し、受信者は暗号文Cに対して、「M=CmodN」による復号化でメッセージMを得る。上記符号化におけるパラメータe,Nは公開とされ、上記復号化におけるdは非公開とされる。前記符号化及び復号化のための演算式は、べき乗剰余演算であり、代表的に「X mod N」(X, Y, N は正の整数)と記述する事ができる。「mod」は剰余演算を意味し、べき乗剰余演算「X mod N」は、X をNで除算した余りを解とするものである。
【0003】
符号化/復号化装置において、べき乗剰余演算「X mod N」(X, Y, N は正の整数)を用いることにより、高度なセキュリティが得られることは、一般に知られており、例えば、池野、小山”現代暗号理論”、電子情報通信学会編 (昭和61年)にその記載がある。
【0004】
ここで前記X, Y, N は、通常100ビット〜2000ビット程度の非常に大きな数が使用されるため、「X mod N」をいかにして高速に実行するかが、従来から数学、工学の分野で課題とされていた。
【0005】
その一つの解法として、次に示す〔アルゴリズム1〕が古典的に知られている。
【0006】
Figure 0003615622
このアルゴリズムにおいてnはYのビット数に対応され、en−1 ・・・eはYの2進数表現である。このアルゴリズムは、概略的には、自乗の剰余乗算「A mod N」(ステップ5)及び剰余乗算「A・B mod N」(ステップ6)を組み合わせて実行され、en−1 ・・・eにおける論理値1の個数をr(e)とすると、前記自乗の剰余乗算「A mod N」にn−1回、前記剰余乗算「A・B mod N」にr(e)−1回の演算が繰り返し行われることになる。
【0007】
このように〔アルゴリズム1〕では、べき乗剰余演算「X 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 は2(nは例えばNのサイズ)であり、R>N を満たす正の整数である。
【0010】
このNによる除算を行なわずに剰余乗算「A・B・R−1 mod N」を実行する〔アルゴリズム2〕に至るまでの論証の詳細については、ここでは説明を詳細するが、例えば、Montgomery, P. L.: Modular Multiplication without Trial Division, Mathematics of Computation, Vol. 44, No. 170, pp. 519−521 (1985)、Dussё, S.R. and Kaliski, B. S. Jr.: A Cryptographic Library for the Motorola DSP56000, Advances in Cryptology −EUROCRYPTO ’90, Lecture Notes in Computer Science 473, pp. 230−244, Springer−Verlag (1991)に記載がある。
【0011】
Figure 0003615622
【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」を用いて、べき乗剰余演算 「X mod N」 をいかに効率良く計算するかという課題がある。 一例として、本発明者は〔アルゴリズム2〕を適用して〔アルゴリズム1〕を変形することにより、以下の〔アルゴリズム3〕を得た。
【0016】
Figure 0003615622
この〔アルゴリズム3〕では、ステップ2で「R mod N」の計算が前処理として必要になる。これを例えば汎用マイクロプロセッサを用いてソフトウエアで計算した場合、計算時間がかかり、全体として〔アルゴリズム3〕の計算時間を増大させてしまうことが本発明者によって見い出された。この問題点は〔アルゴリズム1〕のステップ5,6でも同様に生じる。
【0017】
第5の問題点
前記〔アルゴリズム3〕のステップ7で「A・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 = A・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〕で代表されるような、上記種々の問題点を解決し、高速にべき乗剰余演算「 X mod N 」を実現することを目的とする。
【0020】
特に、上記課題を専用のハードウェアおよび汎用のマイクロプロセッサを用いて解決し、高速なべき乗剰余演算「 X mod N」 を実現することを目的とする。
【0021】
また本発明の別の目的は、上記の専用ハードウェアの実現において、その論理回路規模を最小限にすることにある。
【0022】
本発明のその他の目的は、上記専用ハードウェアをICカード用マイクロコンピュータと同一の半導体チップに搭載し、べき乗剰余演算「 X mod N」を適用した符号化・復号化のためのマイクロコンピュータを低コストで使い易く実現することにある。
【0023】
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【0024】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記の通りである。
【0025】
すなわち、べき乗剰余演算に利用されるデータ処理装置(6)は、nを演算値のビット数を表わす正の整数、Nを 0<N<2 となるnビットの正の整数、Ainを0≦Ain<2 となるnビットの正の整数、Aoutを0≦Aout<2 となるnビットの正の整数、kを0又は正の整数とするとき、演算式がAout = f(Ain) mod N +kN で与えられ、入力値 Ain と出力値 Aout の値の範囲を0以上、2 未満の整数とする剰余演算を行う演算手段(32)と、この演算手段による上記剰余演算を制御する制御手段(31)とを1個の半導体基板に備えて構成される。
【0026】
一般式で与えられる前記Aout = f(Ain) mod N +kN の剰余演算は、 Aout = Ain・B・R−1 mod N +kN とAout = Ain・B mod N +kNの演算式で夫々与えられる剰余演算とすることができ、このとき、Rは2、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 = (Ain・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】
前記制御手段は前記直列的に接続された積和演算器を用いて乗数と被乗数が多倍長とされる多倍長乗算を選択的に実行することができる。これは、べき乗剰余演算のための「Rmod N」の処理に必要な多倍長乗算処理に適用できる。
【0030】
前記演算手段は、図5に例示されるように、前記演算式Aout = Ain・B・R−1 mod N +kN におけるBの値を、Ain又は1 に選択的に指定する手段(16、17)を備えることができる。これにより、「Ain・B・R−1 mod N + kN」、「Ain ・R−1 mod N + kN」又は「Ain・R−1 mod N + kN」を同じように演算することができ、値Bを保有するためのレジスタに値Aを転送したり、値Bを保有するためのレジスタに1を設定する処理を要さず、剰余演算処理の高速化に寄与する。
【0031】
マイクロコンピュータ(MCU)は、図3に例示されるように前記データ処理装置(6)と、このデータ処理装置をコプロセッサとして利用するマイクロプロセッサ(5)とを1個の半導体基板に含み、前記マイクロプロセッサは、前記データ処理装置に前記演算Aout = Ain・B・R−1 mod N +kN に必要な入力値を設定して当該演算処理を指示し、その演算結果を利用する。このマイクロコンピュータによれば、剰余乗算 「A out= Ain・B・R−1 mod N +kN」、「Aout = Ain ・R−1 mod N +kN」、「Aout = Ain・R−1 mod N +kN」 で与えられる演算を、積和演算器を内蔵したコプロセッサで実行し、さらにそのコプロセッサに前処理「 R mod N」 を高速に実行するための乗算機能を備え、これらのコプロセッサの演算機能を用いて、マイクロプロセッサでべき乗剰余演算「 X mod N」 を高速に実行することができる。
【0032】
前記マイクロプロセッサにべき乗剰余演算を実行させるための動作プログラムが格納されたROM(8)をマイクロコンピュータのチップに搭載することができる。このとき、前記演算Aout = Ain・B・R−1 mod N +kN は前記べき乗剰余演算に含まれる演算とされる。これにより、高度なセキュリティーの達成に寄与するマイクロコンピュータを実現できる。
【0033】
前記べき乗剰余演算対象とされるデータを電気的な書き換え可能に保持する不揮発性メモリ(10)を更にマイクロコンピュータチップに搭載することができる。これにより、セキュリティーを保つべきデータを取り扱うICカード用マイクロコンピュータとしての利用に最適化することができる。
【0034】
演算結果Aoutを次の演算の入力値Ainとし、演算式 Aout = f(Ain) で与えられる演算を実行するデータ処理装置を、図7に例示されるように、Ain とAout の内容を各々記憶する記憶手段(23、24)と、当該記憶手段に対するAin とAout の記憶場所の相互入れ替えを指示するフラグ手段(27)と、前記演算式の演算実行終了後に前記フラグ手段の値を反転させることにより、Ain とAout の値の物理的な入れ替えに代えて、Ain とAout の記憶場所を論理的に入れ換える制御手段(28、31)とを含んで構成することができる。これにより、値Ain とAout の記憶場所の入れ換えを見かけ上瞬時に実行することができ、演算時間の短縮に寄与する。
【0035】
前記直列的に配置された積和演算器を利用した処理は以下のデータ処理装置にも適用できる。すなわち、nを演算値のビット数を表わす正の整数、Nを 0<N<2 となるnビットの正の整数、Ainを0≦Ain<2 となるnビットの正の整数、Aoutを0≦Aout<2 となるnビットの正の整数とするとき、演算式がAout = f(Ain) mod Nで与えられ、入力値 Ain と出力値 Aout の値の範囲を0以上、2 未満の整数とする剰余演算を行う演算手段と、この演算手段による上記剰余演算を制御する制御手段とを1個の半導体基板に備えて成るデータ処理装置である。前記Aout = f(Ain) mod N で与えられる剰余演算は、Aout = Ain・B・R−1 mod Nの演算式で与えられる剰余演算を含み、Rは2、R−1はR・R−1 mod N = 1 を満たす 0<R−1 ≦N となるnビットの正の整数、Bは0≦B<2 となる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】
Figure 0003615622
上記〔アルゴリズム4〕において、A,B,Nのビット数はnビットであり、R=2(第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が所定の値2(=R)以上であるか否かをtのオーバーフローによって検出し、オーバーフローを検出したとき、ステップ3のtをt−Nに補正するという、「オーバフロー補正」として特徴付けることができる。この特徴を実現する回路の一例が、図1に示されるオーバフロー補正回路である。図2 にはオーバフロー補正回路の比較例として前記〔アルゴリズム2〕のステップ4を実現する回路のブロック図が示されている。
【0039】
先ず、図2では、t−Nの減算が減算器3Aで実行され、その演算の結果、ボロー(Borrow)が発生したか否かでtと減算結果t−Nのどちらかをセレクタ4Aで選択して出力結果とする。従ってこの構成ではt−Nの減算の実行は必ず必要となる。
【0040】
これに対して図1の構成では、tの値が所定の数nで与えられるビット数を越えているかどうかを、オーバフロービットOVが0か1かで判断する。これが上記のtとRとの大小比較に相当する。すなわち、上記の通りR=2であるから前記オーバーフロービット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(=2)>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(Ain) mod N +kN 」と記述することができ、入力値 Ain と出力値 Aout の値の範囲はNよりも大きな2 未満とされ、nは演算値のビット数を表わす正の整数、Nは 0<N<2 となるnビットの正の整数、Ainは0≦Ain<2 となるnビットの正の整数、Aoutは0≦Aout<2 となるnビットの正の整数、kは0又は正の整数とされる。前記Rは2、R−1はR・R−1 mod N = 1 を満たす 0<R−1 ≦N となるnビットの正の整数、Bは0≦B<2 となるnビットの正の整数である。
【0045】
前記〔アルゴリズム4〕を使用した場合、その補正項に伴ってべき乗剰余演算「X mod N 」を実行する〔アルゴリズム3〕を修正すると、以下に示す〔アルゴリズム5〕を得る。
【0046】
Figure 0003615622
前記〔アルゴリズム3〕から〔アルゴリズム5〕への変更点は、ステップ4,7,8,10のそれぞれの剰余乗算の演算式を変更した他は、ステップ11 を追加しただけである。ステップ11は演算結果をNよりも小さくするために追加されている。前記〔アルゴリズム5〕の演算は汎用マイクロプロセッサによって実行することも可能である。本実施例においては、専用ハードウェアとしてのコプロセッサを用いる。
【0047】
図3には、べき乗剰余演算「X mod N 」を行うための〔アルゴリズム5〕を実行可能なマイクロコンピュータMCUの一例ブロック図が示されている。
【0048】
図3において、5はマイクロプロセッサ、6はコプロセッサ、7はクロック発生器、8はマイクロプロセッサ5が実行すべきプログラムや固定データが格納されたROM(読み出し専用メモリ又はリードオンリメモリ)、9はマイクロプロセッサ5の作業領域を提供するRAM(随時読み出し書き込み可能なメモリ又はランダムアクセスメモリ)、10は前記べき乗剰余演算「X 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はマイクロコンピュータMCUの電源用外部端子、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の中のレジスタ又はRAMなどの記憶装置に保持される。あるいは、前記RAM9に保持させるようにしてもよい。
【0051】
マイクロプロセッサ5は、公知演算命令や条件分岐命令等を実行できる汎用マイクロプロセッサであり、コプロセッサ6が実現する演算機能を使用しながら、〔アルゴリズム5〕による、べき乗剰余演算「 X mod N」 を実現する。
【0052】
図4には〔アルゴリズム5〕によってべき乗剰余演算「 X 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は、C2による演算を終了すると、それをマイクロプロセッサに通知する(C3)。マイクロプロセッサ5はコプロセッサ6によるC2の演算結果を用いてアルゴリズムの処理を行う(T5)。更にコプロセッサ6に負担させるべき処理が残っている場合にはT6を経て上記処理が繰り返される。
【0053】
(2)第2の実施の形態
上記〔アルゴリズム5〕において、ステップ7で示された剰余乗算「A・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 mod 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 mod N + kN」におけるBの値として、レジスタ18の値A, レジスタ19の値B、又は固定値”1” の何れかをセレクタ16を介して演算器15に供給するようになっている。コントロールレジスタ17のビットCB0,CB1に従ったセレクタの選択動作に従って、演算器15は、「A・B・R−1 mod N + kN」、「A・R−1 mod N + kN」又は「A・R−1 mod N + kN」を同じように演算することができる。したがって、値Bを保有するためのレジスタに値Aを転送したり、値Bを保有するためのレジスタに1を設定する処理を要しない。コントロールレジスタ15への値の設定は、例えば図3に示されるマイクロプロセッサ5によりバス12,13を経由して行われる。
【0057】
図6には図5の比較例としての演算手段のブロック図が示されている。図6の場合には、剰余乗算「A・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を格納する為に利用されるレジスタ、26は値Nを格納するために利用されるレジスタである。レジスタ23〜26と演算器22はコプロセッサ内部のバス40に共通接続されている。
【0061】
図7においてS1はレジスタ23の選択信号、S2はレジスタ24の選択信号である。Rtmpは一次記憶値Tempに対するアクセス信号、Raは値Aに対するアクセス信号である。アクセス信号Rtmp,Raは、マイクロプロセッサがコプロセッサに与えたコマンドに応じて制御回路31が出力する演算制御信号の一種とされる。
【0062】
29、30はセレクタである。セレクタ29、30は、フラグ27の値に従ってアクセス信号Ra又はRtmpを選択し、選択した信号をレジスタ選択信号S1,S2として出力する。フラグ27が”1”のとき、セレクタ29はアクセス信号Raをレジスタ選択信号S1として選択し、セレクタ30はアクセス信号Rtmpをレジスタ選択信号S2として選択する。フラグ27が”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,Rtmpに対する選択信号S1,S2の対応が切り換えられるように制御される。このレジスタ機能の交換は、図示されるように、1ビットのフラグ27を剰余乗算「A・B・R−1 mod N」の実行終了時に反転させることにより制御される。これにより、値A, Temp の内容の入れ換えを見かけ上瞬時に実行することができ、演算時間の短縮に寄与する。
【0065】
図8は図7の演算手段に対する比較例を示すものである。図8に示される演算手段において、剰余乗算「A・B・R−1 mod N」の実行結果は、まず一時記憶値Temp のために固定的に割り当ているテンポラリレジスタに格納され、そのテンポラリレジスタの値Tempが、値A専用のレジスタに転送されて、値Aのレジスタが最終結果を保持する。そのようなデータ転送には少なからず時間を要する。
【0066】
図9には図7のレジスタ23〜26をRAM32で実現する場合のコプロセッサの例が示される。
【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の所定ビットのアドレス信号によってRAM50のアドレシングが行われる。
【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は、例えば、演算の手順を制御する制御回路31内部のシーケンサが剰余乗算「A・B・R−1 mod N」の終了タイミングを示したとき、それに同期してフラグ27の状態を反転制御する。
【0072】
これにより、前記記憶領域23M,24Mはそれぞれ排他的に値Aの格納、又は一次記憶値Tempの格納に使用される。例えば、フラグ27が0のとき、記憶領域23Mが値Aの格納に、記憶領域24MがTempの格納に使用される。剰余乗算の実行終了時にフラグ27の値が1に反転されると、次の演算では、記憶領域23Mが値tempの格納に、記憶領域24Mが値Aの格納に使用される。これにより、レジスタに代えてRAM50を用いる場合にも、値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】
Figure 0003615622
この変形式より明らかなように、演算「(A・B+M・N)/2」をn/L回 繰り返して実行すれば、「(A・B+M・N)/R」を実現できることになる。
【0080】
図11には前記部分積による演算「(A・B+M・N)/2」を実行する為の演算手段に着目したコプロセッサの更に別の例が示されている。特に制限されないが、図11に示されているコプロセッサは、図3のコプロセッサ6に適用される一つの回路構成として位置付けることができ、前記同様に、単結晶シリコン基板のような一個の半導体チップに形成されたマイクロコンピュータMCUに含まれる。
【0081】
図11において、33は第1の積和演算器、34は第2の積和演算器、35は一次記憶値Tempを保持するテンポラリレジスタ、36は値Aの格納に利用れるレジスタ、37は値Bの格納に利用されるレジスタ、38は値Nの格納に利用されるレジスタである。39はMi生成ロジック、40はMi生成ロジック39で生成された値Mを保持するラッチ、41は「÷2」を行うためのシフト回路である。
【0082】
図11に示される回路は図9に示される態様のブロック分割に基づいて演算「(A・B+M・N)/2」を実行する回路である。先ず、第1の積和演算器33は、レジスタ35の値Temp、レジスタ36の値A、レジスタ37の値B を入力として、積和演算「Temp + A・B」を実行する。その演算結果は値Temp2 として次段の第2の積和演算器34へ送られる。値Temp2 はn+Lビット長の整数である。一方、Mi生成ロジック39は、Lビット長の数A, B, N を入力としてLビットの整数Mを生成し、この正数Mはレジスタ40に一時的に保持される。第2の積和演算器34は、前記Temp2, N, M を入力として、積和演算「Temp2 + M・N」を実行する。n+L ビット長の演算結果の下位Lビットは全て0であり、これをシフタ41によって消去して(すなわち2で割って)、nビット長の結果が値Temp としてレジスタ35に送られ保持される。
【0083】
以上の動作をn/L回 繰り返し実行すれば、演算「(A・B+M・N)/R」が実現できる。これによれば、nビットの整数Mをあらかじめ計算して保持する必要はなく、Lビット長のMのみを積和演算器33の計算中に求めてレジスタ40に保持すればよく、値Mの計算時間の削除、および値Mを保持する記憶手段の規模を縮小することができる。さらに、積和演算器33と積和演算器34を直列的に接続して連続的に動作させることにより、n+Lビット長の中間結果Temp2 を一時的に保持する記憶手段を特別に設けることも必要なくなる。
【0084】
図12には前記部分積による演算「(A・B+M・N)/2」を実行する為の演算部に着目したコプロセッサの更に別の例が示される。特に制限されないが、図12に示されているコプロセッサは、図3のコプロセッサ6に適用される一つの回路構成として位置付けることができ、前記同様に、単結晶シリコン基板のような一個の半導体チップに形成されているマイクロコンピュータMCUに含まれる。
【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でM・N=0、さらにセレクタ41による「÷2」の動作を行なわないことにより、同図に示される演算手段を、「A・B」のような多倍長乗算(小さな数Bとその多倍長に相当する大きな数Aとの乗算)を実行する回路として使用することができる。これは、前記第4の問題点を解決するための一つの手段とされる。「A・B」のような多倍長乗算演算は、例えば〔アルゴリズム5〕のステップ2の演算「R mod N」をマイクロプロセッサを用いて実行するときに適用されることにより、その演算の高速化を図ることができる。
【0087】
即ち、図13には「R mod N」の計算の概念図が示されている。図13において、R=2、n=512とされ、Nは512ビット、Rは最上位ビットだけが1で下位側1024ビット全てが0の値とされる。マイクロプロセッサで演算「R mod N」を行うとき、大きな数のRを同様に大きな数のNで直接に除算するのは効率的でないから、被除数を最上位側から64ビット単位のブロックとして把握し、また、除数を最上位側から32ビット単位のブロックとして把握し、順次上位側のブロック同士を対象に除算を行い、それによって得られる値を商の概数として把握する。図13において例えばQ(=Da÷Na)を商の概数として把握する。概略的には、Rの上位側に対して「Q・Na」を減算し、その減算結果の上位側に対して「Q・Nb」を減算する。「Q・Nb」の減算結果に対して同様の処理を行い、更にその結果の対して同様の処理を繰り返すという手法によって、「R mod N」の結果を得ることができる。実際にはその途上で、余剰ビットを消去するための減算処理が介在される。このとき、図13の例に従えば、前記演算「Q・Nb」の処理は、第1回目では32ビットと480ビットという大きな数の乗算処理とされる。しかもそのような大きな数の乗算処理は何回も繰り返される。このとき、図11や図12に示されるコプロセッサによって演算可能な前記「A・B」のような多倍長乗算演算を利用することにより、換言すれば、そのような多倍長乗算演算をコプロセッサに負担させれば、〔アルゴリズム5〕におけるステップ2の演算「R 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<2 となるnビットの正の整数、Ainを0≦Ain<2 となるnビットの正の整数、Aoutを0≦Aout<2 となるnビットの正の整数とするとき、演算式がAout = f(Ain) mod Nで与えられ、入力値 Ain と出力値 Aout の値の範囲をNよりも大きな2 未満とする剰余演算を行う演算手段と、この演算手段による上記剰余演算を制御する制御手段とを1個の半導体基板に備えて成るデータ処理装置である。前記Aout = f(Ain) mod N で与えられる剰余演算は、Aout = Ain・B・R−1 mod Nの演算式で与えられる剰余演算を含み、Rは2、R−1はR・R−1 mod N = 1 を満たす 0<R−1 ≦N となるnビットの正の整数、Bは0≦B<2 となるnビットの正の整数であり、前記演算手段は、演算式Aout = Ain・B・R−1 mod N、で与えられる剰余演算を実行するための、直列的に接続された積和演算器33、34を備える。これに対する具体的な演算態様として、前記演算式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とする演算処理を含み、前記演算手段は、直列的に接続された前記積和演算器33、34により、部分積の和として、前記演算処理 t=(Ain・B+M・N)/Rを実行する。これによっても同じく、部分積の一次記憶用メモリ手段などを必要とせず、演算手段の回路規模を縮小できる。
【0092】
本発明はコプロセッサやマイクロコンピュータの他に、ICカード、符号化・復号化装置若しくは暗号化・復号化装置などに広く適用することができる。
【0093】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
【0094】
すなわち、高速にべき乗剰余演算「 X mod N 」を実現することができる。
【0095】
また、べき乗剰余演算に為の上記の専用ハードウェアの実現において、その論理回路規模を最小限にすることができる。
【0096】
更に、上記専用ハードウェアをICカード用マイクロコンピュータと同一の半導体チップに搭載し、べき乗剰余演算「 X mod N」を適用した符号化・復号化のためのマイクロコンピュータを低コストで使い易く実現することができる。
【0097】
そして、マイクロプロセッサを搭載するマイクロコンピュータにおいて、剰余乗算 A = A・B・R−1 mod N +kN、A = A・R−1 mod N +kN、A = A・R−1 mod N +kN で与えられる演算を、積和演算器を内蔵したコプロセッサで実行し、さらに同一のコプロセッサに前処理 R mod N を高速に実行するための乗算機能を備え、これらのコプロセッサの演算機能を用いて、マイクロプロセッサでべき乗剰余演算 X mod N を高速に実行することができる。
【図面の簡単な説明】
【図1】オーバフロー補正回路の一例を示すブロック図である。
【図2】オーバフロー補正回路に対する比較例のブロック図である。
【図3】べき乗剰余演算「X mod N」を行うためのアルゴリズム5を実行可能なマイクロコンピュータの一例ブロック図である。
【図4】3図のマイクロコンピュータにおいてアルゴリズム5に従ってべき乗剰余演算「X mod N」を行うときのマイクロプロセッサとコプロセッサの概略的な処理の流れを示すフローチャートである。
【図5】複数種類の剰余乗算「A・B・R−1 mod N + kN」、「A・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・B+M・N)/2を実行するための演算手段を含むコプロセッサのブロック図である。
【図12】部分積により(A・B+M・N)/2を実行するための別の演算手段を含むコプロセッサのブロック図である。
【図13】R 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 (11)

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

Families Citing this family (19)

* 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
FR2791155B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
TW536672B (en) * 2000-01-12 2003-06-11 Hitachi Ltd IC card and microcomputer
US7523151B1 (en) * 2000-05-12 2009-04-21 The Athena Group, Inc. Method and apparatus for performing computations using residue arithmetic
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
JP4662802B2 (ja) * 2005-03-30 2011-03-30 富士通株式会社 計算方法、計算装置及びコンピュータプログラム
DE102005030286A1 (de) * 2005-06-29 2007-01-04 Giesecke & Devrient Gmbh Verwendung eines Koprozessors zur modularen Inversion
JP4986206B2 (ja) 2006-02-22 2012-07-25 株式会社日立製作所 暗号処理方法及び暗号処理装置
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
JP2010139544A (ja) * 2008-12-09 2010-06-24 Renesas Electronics Corp 剰余演算装置、及び剰余演算方法
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
EP0504996B1 (en) * 1991-03-22 1998-07-08 Koninklijke Philips Electronics N.V. Arithmetic unit for multiplying long integers modulo M and R.S.A. converter provided with such multiplication device
US5724279A (en) * 1995-08-25 1998-03-03 Microsoft Corporation Computer-implemented method and computer for performing modular reduction

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3615622B2 (ja) マイクロコンピュータ
US7424504B2 (en) Arithmetic processor for accomodating different field sizes
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
US7805478B2 (en) Montgomery modular multiplier
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US6182104B1 (en) Circuit and method of modulo multiplication
US6085210A (en) High-speed modular exponentiator and multiplier
JP2722413B2 (ja) モンゴメリ法によるモジュラ乗算の実施方法
US6009450A (en) Finite field inverse circuit
JP5006368B2 (ja) 多倍長演算装置
JP2001524698A (ja) マルチプレシジョン整数演算用の装置
US6917956B2 (en) Apparatus and method for efficient modular exponentiation
US7111032B2 (en) Residue computing device
JP2000207387A (ja) 演算装置及び暗号処理装置
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
JP3904421B2 (ja) 剰余乗算演算装置
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
US7471789B2 (en) Encryption circuit achieving higher operation speed
Großschädl A new serial/parallel architecture for a low power modular multiplier
JPH03176735A (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