JPH09274560A - べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 - Google Patents

べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法

Info

Publication number
JPH09274560A
JPH09274560A JP8110057A JP11005796A JPH09274560A JP H09274560 A JPH09274560 A JP H09274560A JP 8110057 A JP8110057 A JP 8110057A JP 11005796 A JP11005796 A JP 11005796A JP H09274560 A JPH09274560 A JP H09274560A
Authority
JP
Japan
Prior art keywords
value
multiplication
arithmetic
register
calculation
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
JP8110057A
Other languages
English (en)
Other versions
JP3525209B2 (ja
Inventor
Hidenori Ebihara
秀徳 海老原
Kiyoto Kawasaki
清人 川▲崎▼
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.)
KAWASAKI DENKI GOUSHI
Oki Electric Industry Co Ltd
Oki Micro Design Miyazaki Co Ltd
Original Assignee
KAWASAKI DENKI GOUSHI
Oki Electric Industry Co Ltd
Oki Micro Design Miyazaki Co 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 KAWASAKI DENKI GOUSHI, Oki Electric Industry Co Ltd, Oki Micro Design Miyazaki Co Ltd filed Critical KAWASAKI DENKI GOUSHI
Priority to JP11005796A priority Critical patent/JP3525209B2/ja
Priority to EP97105465A priority patent/EP0801345B1/en
Priority to DE69716331T priority patent/DE69716331T2/de
Priority to US08/833,002 priority patent/US5982900A/en
Priority to CNB971102899A priority patent/CN1148643C/zh
Publication of JPH09274560A publication Critical patent/JPH09274560A/ja
Application granted granted Critical
Publication of JP3525209B2 publication Critical patent/JP3525209B2/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
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 べき乗剰余演算の解を求めるに際し、予め用
意されたモード信号を供給するのみで、各種演算を実行
する。 【解決手段】 MemodNの乗剰余演算回路におい
て、Nと素であり、かつNよりも大きい整数Rを用い、
第1のモード信号に対応したタイミング制御信号に応答
して、A・A・R’modN(R’はmodN法下での
Rのインバース)なる第1の演算を実行し、整数Rを用
い、第2のモード信号に対応したタイミング制御信号に
応答して、A・B・R’modNなる第2の演算を実行
し、整数Rを用い、第3のモード信号に対応したタイミ
ング制御信号に応答して、A・1・R’modNなる第
3の演算を実行する演算部と、第1ないし第3のモード
信号に対応したタイミング制御信号を演算部に出力する
タイミング制御回路T/Cとを設ける。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、情報通信ネットワー
ク、交通、金融、医療、流通等の分野において使用され
る情報の暗号化技術及び復号化技術に関するものであ
り、特にこれらの情報の暗号化及び復号化を実現するた
めのべき乗剰余演算回路及びそのシステム及びべき乗剰
余演算のための演算方法に関するものである。
【0002】
【従来の技術】情報通信技術の発展に伴い、情報ネット
ワーク上のセキュリティーの確保(データの盗用や破壊
を防止する)が重要視されるようになってきている。そ
のために、情報の暗号化技術及び復号化技術が、情報通
信分野にとどまらず、交通、金融、医療、流通等の身近
な分野で使用されつつある。従って、この種の暗号化技
術及び復号化技術は、高度なセキュリティーが単純な原
理によって実現できることが要求される。まず、この種
の技術の理解を容易にするため、情報の暗号化・復号化
についての概略を説明する。
【0003】暗号の世界においては、”非対象アルゴリ
ズム”が質的に優れている。非対象暗号アルゴリズムと
は、暗号化鍵と復号化鍵が異なっており、そのいずれか
一方から他方が”容易に計算できない”暗号アルゴリズ
ムをいう。
【0004】この非対象暗号アルゴリズムの代表的なも
のに、べき乗剰余演算を用いるタイプのRSA暗号、エ
ルガマル暗号、ラビン暗号、ウイリアムス暗号等があ
る。そして、暗号アルゴリズムを応用する上では、”デ
ィジタル署名”のシステムがあり、現在その標準化の動
きがある。その対象となっている代表的なものは、RS
A署名法、エルガマル署名法、シュノア署名法、DSA
(Digital Sigunature Algorithm)署名法等であり、こ
れらは全て長いビット長のべき乗剰余演算を使用するタ
イプのものである。従って、これらのディジタル署名の
システムを実現する上では、長いビット長のべき乗剰余
演算を短時間で終了することのできる演算器の開発が必
要不可欠である。
【0005】上で説明したRSA暗号、エルガマル暗
号、ラビン暗号、ウイリアムス暗号等は、次式(1)の
べき乗剰余演算の形式が基本として使用される。式
(1)は、XYをNで割った時の余りを求めることを意
味する。また、式(1)において、Xは暗号化(復号
化)の対象となる平文、Y及びNは暗号化(復号化)の
ための鍵(キー)である。
【0006】XYmodN・・・(1) このべき乗剰余演算を用いることにより、情報の暗号化
及び復号化が容易に実行され、かつX、Y、Nのオペラ
ンドビット長を長くすることで、各鍵の解読を困難にす
ることができる。
【0007】しかし、オペランドビット長を長くする
と、べき乗剰余演算に長時間を要することになる。そこ
で、オペランドビット長が長いべき乗剰余演算をいかに
短時間に終了させるかがポイントとなる。
【0008】さて、RSA暗号を例にとり、べき乗剰余
演算を使用した実際の暗号化・復号化、その使われ方を
以下に説明する。
【0009】(1)RSA暗号の暗号化・復号化の概略 暗号化には、 C=Memodn・・・(2) なる式を使用する。
【0010】復号化には、 M=Cdmodn・・・(3) なる式を使用する。ここでMは、暗号化の対象となる平
文、Cは暗号化された平文すなわち暗号文である。そし
て、式(2)におけるe、nは暗号化鍵、式(3)にお
けるd、nは復号化鍵であり、 n=p・q・・・(4) 1≡e・dmod{LCM(p−1,q−1)}・・・(5) (≡は、左辺と右辺が相似であること、LCMは、最小
公倍数を意味する。またpとqとは互いに素な整数であ
る。)なる条件があらかじめ与えられている。なお、
e、nは公開鍵、d、p、qは秘密鍵である。
【0011】以上の式(4)(5)は、ともに暗号アル
ゴリズム上のべき乗剰余演算の数値の条件を定義してお
り、式(4)は、nは互いに素な大きな素数pとqとの
積であることを示している。今、pとqはともに奇数な
ので、当然nは奇数でなければならない。次に式(5)
は、式(4)で示したp及びqの1だけ小さい値同士の
最小公倍数でeとdとの積e・dを割ったときの余りが
1になることを示している。
【0012】以上の式(4)(5)のような条件に基づ
き、平文Mは式(2)を用いて暗号化され、また暗号化
された平文M(暗号文C)は式(3)を用いて復号化さ
れる。
【0013】(2)暗号化・復号化の事例 次に具体的な事例として、「発信者Aは平文Mを暗号文
Cに暗号化して送信し、受信者Bは暗号文Cを平文Mに
復号化する。」という伝達(ディジタル署名あり)を行
った場合の、発信者A及び受信者Bが行う処理方法を図
2を用いて説明する。
【0014】送信者Aが行う処理 ・自分が作成した平文MAを自分の秘密鍵dAを使って
変形し、署名文CAを作成する。(署名) CA≡MAdAmodnA・・・(6) ・Bの公開鍵eBを使って、暗号化署名文cAを作成す
る。(暗号化) cA≡CAeBmodnB・・・(7) ・cAをBへ送信する。
【0015】受信者Bが行う処理 ・受信した暗号化署名文cAを自分の秘密鍵dBを使っ
て変形する。(復号化) cAdBmodnB≡(CAeBmodnB)dBmodnB・・・(8) ここで、CAeB=Xとおくと、式(8)は、 (CAeBmodnB)dBmodnB=(XmodnB)dBmodnB・・(9 ) と変形できる。
【0016】ここで、式(9)中のXmodnB=Yと
おく、すなわちXをnBで割ったときの余りがYであり
そのときの商がkとすると、 X=k・nB+Y Y=X−k・nB・・・(10) と変形できる。よって、式(10)を式(9)の右辺に
代入すると、 (XmodnB)dBmodnB=YdBmodnB =(X−k・nB)dBmodnB・・・(11 ) となる。式(11)の(X−k・nB)dBを展開する
と、定数ai(i=1、2、・・・)を用いて、 (X−k・nB)dB=(XdB−a1・XdB-1・nB+a2・XdB-2・nB2− ・・・・−ai・nBdB)・・・(12) と表すことができる。この式(12)を式(11)に代
入すると、 (XmodnB)dBmodnB=YdBmodnB =(X−k・nB)dBmodnB =(XdB−a1・XdB-1・nB+a2・XdB-2・ nB2−・・・−ai・nBdB)modnB =XdBmodnB−a1・XdB-1・nBmodnB +a2・XdB-2・nB2modnB−・・・・ −ai・nBdBmodnB この式中の第2項以降は、全てnBで割り切れるので、削除できる。よって、 =XdBmodnB・・・(13) となる。先にCAeB=Xとしたので、元に戻すと、 =(CAeBdBmodnB・・・(14) が得られる。
【0017】ここまでの過程をまとめると、 cAdBmodnB≡(CAeBmodnB)dBmodnB =(CAeBdBmodnB となる。
【0018】さて、上記のeB、dBは、式(5)を満
足するので、ある整数hを用いて eB・dB=h(pB−1)+1 と表せる。ここで、素数pと、pと互いに素な任意の整
数Xに対して Xp-1modp=1 が成立するというフェルマの小定理を用いると、 CAeB・dBmodpB=CAh(p-1)+1modpB =CA・CAh(p-1)modpB =CAmodpB・・・(15) となる。CAがpBの倍数でも上式を満足するので、全
てのCAについてCAeB ・dB−CAは、pBで割り切れ
る。同様にCAeB・dB−CAはqBでも割り切れる。p
BとqBは、異なる素数なので、CAeB・dB−CAはn
B=pB・qBでも割り切れる。よって、 cAdBmodnB≡CAeB・dBmodnB≡CAmod
nB(=CA) が成立する。
【0019】・送信者の公開鍵eAを使用して、平文M
Aを作成する。(署名認証) 上記した復号化処理と同様にして計算すると、 が導き出される。
【0020】以上のように、e、d、nの値を式(4)
(5)のような条件下で決定し、式(1)のようなべき
乗剰余演算の形式を基本として使用することにより、平
文を暗号化しまた暗号化された平文を復号化することが
できる。
【0021】例えば、n=15、e=3、p=5、q=
3、d=11とし、 (n=p・q=5・3=15、 e・dmod(p−1)・(q−1)=3・11mod4・2 =33mod8 =1) 平文M=13とすると、 暗号化:C=Memodn=133mod15=2197
mod15=7 復号化:M=Cdmodn=711mod15=1977
326743mod15=13 となり、平文M=13が復号化されたことが確認され
た。
【0022】(3)べき乗剰余演算の演算方法 次に、暗号化・復号化で使用される、べき乗剰余演算の
演算方法を説明する。
【0023】A=MemodNのべき乗剰余演算は、整
数eの2進数展開をe=ek-1・・・e10として、以
下のフロー1に示す反復平方積法を使用して実行され
る。
【0024】 そして、この反復平方積法をフローチャートで表現する
と、図3のようになる。
【0025】まず、初期値1をAレジスタに格納する。
次に、Aレジスタに格納された値を乗算してA×Aを求
め、このA×AをNで除算して余りを求め、この値をレ
ジスタaに格納する。次に、レジスタaに格納された値
をレジスタAに格納する。このとき、もし指数eが1な
らば、レジスタAに格納された値と平文Mを乗算した後
Nで除算して余りを求め、この値をレジスタaに格納す
る。そして、このレジスタaの内容を再度レジスタAに
格納する。もし、指数eが0ならば、以上の計算は行わ
ずに、レジスタAに格納された値には何も施さない。こ
の演算をeの最上位ビットから最下位ビットまで繰り返
し行い、最終的にレジスタAに格納された値が、求めた
いべき乗剰余演算の解になる。
【0026】以上のように、演算の基本は、式(16)
(17)に示すように乗算と除算(mod算)である。
乗算は、初期値を1とするAの値に対してA×Aあるい
はA×Mを行う部分であり、除算は、各々の乗算で得ら
れた値に対してmodNを行う部分である。この”乗算
と除算”(A×AmodN、A×MmodN)を一対の
演算として、”e”のビット値に従って繰り返す。つま
り、”e”の最上位ビットから最下位ビットまでの各ビ
ットの内容によって”乗算と除算”を行うのである。
【0027】
【発明が解決しようとする課題】べき乗剰余演算は、基
本となる剰余演算(mod算)を繰り返し行うことで解
を得ることができることを示したが、この繰り返し回数
自体は、たかだか数百〜数千回であるので、ソフト的な
処理でも充分に対応できる。しかしながら、この剰余演
算自体すなわち除算を実行するためには、大規模な演算
回路と複雑な処理手順が必要とされるため改善が望まれ
ていた。
【0028】
【課題を解決するための手段】本発明の代表的なもの
は、正の整数M、e、Nに関するMemodNなるべき
乗剰余演算を行うべき乗剰余演算回路において、Nと素
であり、かつNよりも大きい整数Rを用い、第1のモー
ド信号に対応したタイミング制御信号に応答して、A・
A・R’modN(R’はmodN法下でのRのインバ
ースである。)なる第1の演算を実行し、前記整数Rを
用い、第2のモード信号に対応したタイミング制御信号
に応答して、A・B・R’modNなる第2の演算を実
行し、前記整数Rを用い、第3のモード信号に対応した
タイミング制御信号に応答して、A・1・R’modN
なる第3の演算を実行する演算部と、前記第1ないし第
3のモード信号を受信し、前記第1ないし第3のモード
信号に対応した前記タイミング制御信号を前記演算部に
出力するタイミング制御回路とを設けたものである。
【0029】
【発明の実施の形態】べき乗除余演算は、基本となる剰
余演算(mod算)を実行する手順が非常に複雑である
ため、演算回路が大規模化してしまうことを前述した。
そこで、Montgomery(モンゴメリー)は、剰余演算(m
od算)を先のような一般的な方法で行わずに、”乗
算”と簡単なビット列処理を行うことによって、剰余演
算の解を得る仕組みを提案している。本発明は、基本的
にこのモンゴメリーが提案している仕組みを利用して演
算を行うものであるので、以下にモンゴメリーが提案し
ている手法について簡単に説明するが、各演算におい
て、演算時間を短縮するための工夫は、本願特有のもの
であることを述べておく。
【0030】剰余演算において、RをモジュラスNより
少しだけ大きい2の指数と定義し、”乗算modN”
〔(ある値×ある値〕÷(値N)の余りを求めるという
意味。〕の法下でのRのインバース値をR’と定義し、
(R・R’modN=1が成立する。)さらに、R・
R’−N・N’=1、0<N’<Rなる関係を満足する
N’(N’は、”乗算modN”の法下でのNのインバ
ース値である。)を定義する。この時に、例えば、M
(X)=XmodN形式の剰余演算を行う場合に、 M’(X)=X・R’modN・・・(18) の形に置き換えて、次のフロー2に示すREDC(X)
関数の計算方法を実行すれば、剰余演算(mod算)の
解を先の一般的方法(乗算と除算とを単に実行するも
の)によらずに得ることができるというものである。た
だし、フロー2は剰余演算の解を求めるフローであり、
べき乗剰余演算の解を求めるフローではない。なお、上
記関数で得られたtかt−Nが式(18)の解である。
【0031】 以上の関数を見ると、演算要素がN及びN’を使用した
乗算と、Rを用いた除算で構成されている。R=2n
いう定義なので、Rを用いた除算は、被除算値の2n
上の値が商、2n未満の値が余りを示す。従って、式
(19)におけるmod算においては、基本的に2n
満の値を見るだけでよく、式(20)における除算にお
いては、基本的に2n以上の値を見るだけでよい。つま
り、実質的に除算(剰余演算)を行うことなく乗算と加
算のみで剰余演算の解を求めることができる。
【0032】次に参考のために、m、R、Nとの間の関
係を式(19)(20)を使用して説明する。式(1
9)において、 m・N=((XmodR)・N’modR)・N ≡X・N・N’modR ≡X・(R・R’−1)modR ≡X・R・R’modR−XmodR ≡−XmodR X+m・N≡X+(−XmodR) ≡0modR となる。この式は、X+m・NをRで割ったときの余り
が0、言い替えると、X+m・Nは、Rで割り切れるこ
とを意味する。
【0033】ここで、X+m・Nは、”X”と”Nの乗
算”との和であるから、 (X+m・N)modN≡XmodN+m・NmodN ≡XmodN よって、式(20)より、 t・RmodN≡XmodN この両辺をR’倍すると、 t・R・R’modN≡tmodN≡X・R’modN となる。
【0034】ところで、上記式X・R’modN中のX
が、modNあるいはmodRを計算した後の乗算値で
あるならば、(Xが、modNあるいはmodRを計算
した後の乗算値であることは後に説明する。) X<N・N<R・N<R・R mはmodRを実行した結果であるから、m<Rであ
る。よって、m・N<R・Nとなる。
【0035】X<R・Nであるから、X+m・N<R・
N+R・N=2R・Nである。従って、 t=(X+m・N)/R<2N t<2N が成立する。
【0036】そして、もしtがNより大きい値の場合、
両辺からNを引くと、 t−N<N となり、この式からt−Nは、modNを施した値とな
ることがわかる。
【0037】さらに、式(20)のt=(X+m・N)
/Rの計算と、tの計算終了について補足する。
【0038】X+m・Nは、必ずRの倍数であるから、
例えば、R=2576とすると、X+m・Nの576ビッ
ト未満の値は全て0である。従って、式(20)のtの
計算は次の2通りに分けられる。
【0039】・XがRの倍数でない場合 X+m・NとRのビット列イメージを示すと以下のよう
になる。
【0040】R=1000・・・0000 X= ????????・・・???? m・N= ????????・・・???? X+m・N=??????000・・・0000 式(20)の計算において、tは必ず整数値が得られる
ので、X+m・NはRの倍数になる。従って、X+m・
Nは、上記ビット列イメージのようになる。そして、ア
ンダーラインを付与した部分がtの解となる。その理由
は、X+m・NはRの倍数であるから、X及びm・Nの
R値未満の加算結果は必ず0になるはずで、しかもそれ
らの?で示す値は元々オール0ではないので、加算の課
程でR値以上の桁への桁上げが生じているはずである。
よって、この場合、X及びm・N値のR値未満の値を無
視して、 t=(X値のR以上の値)+(m・N値のR値以上の
値)+1 の計算で解が得られる。
【0041】・XがRの倍数である場合 XとRのビット列イメージを示すと以下のようになる。
【0042】R=1000・・・0000 X= ?????000・・・0000 このとき、式(19)中のXmodRは0となるので、
m=0となる。m=0ならば式(20)の計算は、t=
X/Rで良いことになる。ここで、tは必ず整数値が得
られるので、 t=(X値のR以上の値) の計算で解が得られる。
【0043】X値がRの倍数であるか否かの判別は、X
値のR未満の値が0か否かで判別できる。このことは、
tの計算においてX値の全ビット長分を計算する必要が
なく、計算量の縮小と計算時間の短縮が図れることを意
味する。
【0044】tの計算終了に関しては、REDC(X)
関数の演算結果tは0<t<2Nの範囲内の値となり、
N<tの時再度t−Nの計算を行わなければならないこ
とをフロー2で示した。しかし、べき乗剰余演算の途中
で行われたREDC(X)関数の演算結果tについて
は、N<tの関係にあってもt<Rの範囲であれば、そ
のまま後の演算に進んでも構わない。なぜなら、後のm
od算でここで取り残されたN値を除去するからであ
る。
【0045】いま、べき乗剰余演算の途中の演算結果を
MmodN=Sとすると、 M=k1・N+S=(k1−1)・N+N+S となる関係が成立しているから、今回のmod算でN+
Sを取り残したと考えると次のmod算、例えばべき乗
剰余演算のA2modN(図3参照)にて M1=A・A=(N+S)・(N+S) =N2+2・N・S+S2 という処理を施して、再度mod算を行う。
【0046】 M1modN=(N2+2・N・S+S2)modN ≡S2modN となり、これは前のmod算で取り残したN値を除去し
ていることを意味する。また、M1をべき乗剰余演算の
A・MmodNにて計算しても同様である。モンゴメリ
手法下でも同様のことが言える。
【0047】簡単のために低ビット長の実際の数値例で
説明する。
【0048】N=13(1101),R=(1000
0),前回のREDC(X)関数で得られた値t=15
(1111)とすると、これらは、N≦t<R<2Nの
関係にある。この時のtのbit4は”0”であるが、
tの値自体未だmod算の純粋な解は得られていない。
しかし、tはNのビット長を越えていないので、次のべ
き乗剰余演算のA・A・R’modNあるいはA・M・
R’modNのべき乗剰余演算の上でAに代入する値と
しては妥当である。つまり、次に行なわれる乗算A・
A、A・Mの結果の値が規定のビット長(上記の数値例
では4ビット×2=8ビット)を越えないので、ビット
長が規定された”乗算R’modN”の演算を継続して
行なうことができる。
【0049】ところで、t=15=13+2=N+2と
表せる。このことはmodNの計算の上では前回のRE
DC(X)関数で得たtの値は”Nを取り残した値”で
あると言える。このtの値のまま、Aに代入してA・A
・R’modNの計算を行なうと、 A・A・R’modN=(N+2)・(N+2)・R’modN =(N2+4N+4)・R’modN ≡N2・R’modN+4N・R’modN+4・R’modN ≡4・R’modN となる。これは仮に前回のREDC(X)関数で得たt
の値がt=N+2ではなくmodN算の純粋な解t=2
でA・A・R’modNの計算を行なった場合と同じ結
果となる。
【0050】(実際例)X=44123,R=28 ,N
=199の時のM’(X)=X・R’modNの計算。
【0051】R・R’modN=1、R・R’−N・
N’=1の関係からR’=7、N’=9。従って、M’
(X)=44123×7mod199=13=0DH
なる筈である。ここでREDC(X)関数を使用して上
記解を得る。
【0052】X=44123=AC5BH,R=10
H,N=199=C7H,N’=9Hより、 (REDC(X)関数) m=(XmodR)・N’modR=5BH×9Hmod
R=333HmodR=33H t=(X+m・N)/R=(AC5BH+33H×C
H)/R=D400H/R=D4H 純粋な解は、t−N=D4H−C7H=0DHであるがこ
のままt・t・R’modNを実行してみる(次式1) 1、t=D4H→t・t=D4H×D4H=AF90Hの場
合 m=(XmodR)・N’modR=90H×9Hmod
R=510HmodR=10H t=(X+m・N)/R=(AF90H+10H×C
H)/R=BC00H/R=BC H 2、t=0DH→t・t=0DH×0DH=00A9Hの場
合 m=(XmodR)・N’modR=A9H×9Hmod
R=5F1HmodR=F1H t=(X+m・N)/R=(00A9H+F1H×C
H)/R=BC00H/R=BC H 上式1、2の計算結果は、アンダーラインように同値と
なる。
【0053】このことは、演算時間短縮を図る上では重
要である。つまり、Nの最上位ビットをbit(n-1)とする
とき、得られたtのbit(n)が1の時t−Nを行い、0の
時は後の演算に進むようにすれば良い。
【0054】一般に576ビット長オペランドのべき乗
剰余演算の場合は、R=2576にする。そのとき、式
(20)の計算結果が576ビット長を越えた場合(5
76ビットの桁あふれが生じた場合)が、t≧Rを示
す。また、その場合のt−Nの計算は、 t−N=(t値の下位576ビットの値)+(Nのイン
バース値)+1 で求める。暗号アルゴリズムの世界でのNの値は奇数で
あるから、Nのインバース値+1は、Nのインバースを
求めてその最下位ビットを1にする操作で得られる。
【0055】さて、フロー2で示した、モンゴメリー演
算を実行するためのREDC関数は、モンゴメリー演算
の解を得ているにすぎない。すなわち、式(18)に示
すように、計算を容易にするためR’という特有の数値
を使用している。そもそも求めたいのは、R’を含まな
い乗算modN形式を使用した式の解であるので、フロ
ー2で示すモンゴメリ演算の解を、何がしかの操作で
R’を含まない数値に戻す必要がある。
【0056】そこで、本願では、次のような性質を利用
して、モンゴメリ演算特有の上記R’という値を相殺し
た。
【0057】今、M’(X)=X・R’modNにおい
て、Xが(X・R)であるとき、 M’(X・R)=(X・R)R’modN=XmodN Xが(X・RmodN)であるとき、 M’(X・RmodN)=(X・RmodN)R’mo
dN=XmodN となる。
【0058】つまり、?・Rあるいは?・RmodNの
形のものにモンゴメリ演算を適用すると、モンゴメリ演
算特有のR’が除去されて、?modNの形になる。
【0059】そして、この性質をフロー1で示した、反
復平方積法を使用した、べき乗剰余演算に応用すれば、
フロー3で示すように、べき乗剰余演算の解が得られ
る。正確には、フロー3で示す式(24)(25)(2
6)のmodN算の各々において、フロー2を実行する
ことにより、各式(24)(25)(26)における解
が容易に得られ、結果としてフロー3を使用した、べき
乗剰余演算の解が容易に得られる。
【0060】 〔フロー3〕 begin A=1・RmodN=RmodN ・・・(23) for i=k-1 down to 0 do begin A=A2・R'modN ・・・(24) if ei=1 then A=A・(M・RmodN)・R'modN ・・・(25) end A=A・R'modN ・・・(26) end フロー1とフロー3との大きな違いは、上記式(23)
において、レジスタAに格納する初期値を1とせず、後
のモンゴメリ演算を考慮してRmodN(1・Rmod
N)を格納している点、上記式(25)において、前記
式(17)のMの代わりにM・RmodNの値を用いて
いる点及び上記式(26)を新たに行う点である。レジ
スタAにあらかじめRmodNを格納しておくことによ
り、式(24)(25)(26)におけるR’が除去さ
れるのである。そして、フロー3の反復平方積法をフロ
ーチャートで表現すると、図1のようになる。
【0061】演算の実行に先だって、この図1において
あらかじめ必要とされるRmodN、M・RmodN、
N’を求めておかなければならない。
【0062】〔RmodNについて〕RSA暗号等に用
いられるべき乗剰余演算においては、”N”の最上位ビ
ットbn-1と最下位ビットb0は1である。従って、その
ときのRは、2nに選ばれる。よって、RmodN=R
−Nとなる。このR−Nは、Nのインバースを求めて、
その最下位ビットを1にすることで容易に求められる。
【0063】〔N’について〕R・R’modN=1、
R・R’−N・N’=1、0<R’、N’<Rの関係よ
り、 R’<N’、N’−R<R−N なる関係を導くことができる。
【0064】暗号システムの運用者は、これらの関係を
満足するように、N値に対応するN’値を決定する。す
なわち、N’値は運用者から与えられるものである。
【0065】〔M・RmodNについて〕あらかじめR
2modNの値を求めておくと、モンゴメリ演算を使用
した以下の計算 M・(R2modN)・R’modN≡M・R2・R’modN ≡M・RmodN により、M・RmodNを求めることができる。
【0066】例えば、今、R=2512とすると、 2513modN=2・2512modN≡2・(Rmod
N)modN=A とすると、このAを初期値として以下のフロー4を実行
するとR2modNの解を求めることができる。
【0067】 このフロー4中の計算課程は、以下の通りである。
【0068】 i=1 A=2513modN M(A,A)=2513・2513・2-512modN≡2514modN i=2 A=2514modN M(A,A)=2514・2514・2-512modN≡2516modN i=3 A=2516modN M(A,A)=2516・2516・2-512modN≡2520modN i=4 A=2520modN M(A,A)=2520・2520・2-512modN≡2528modN i=5 A=2528modN M(A,A)=2528・2528・2-512modN≡2544modN i=6 A=2544modN M(A,A)=2544・2544・2-512modN≡2576modN i=7 A=2576modN M(A,A)=2576・2576・2-512modN≡2640modN i=8 A=2640modN M(A,A)=2640・2640・2-512modN≡2768modN i=9 A=2768modN M(A,A)=2768・2768・2-512modN≡21024modN そして、最後の結果(i=9)が求めたいR2modNの解
である。
【0069】ここで求めたR2modNとMとを乗算し
た後、この乗算結果をフロー2におけるXとして、フロ
ー2を実行することにより、求めたいM・RmodNが
得られる。
【0070】前述した通り、フロー2における演算は、
N及びN’を使用した乗算と、Rを用いた除算で構成さ
れている。従って、この解は、実質的に除算(剰余演
算)を行うことなく乗算と加算のみで求めることができ
る。
【0071】以上、図1のフローチャートにおいてあら
かじめ必要とされるRmodN、M・RmodN、N’
の値が用意できた。
【0072】次に、図1のフローチャートを実行する。
【0073】まず、あらかじめ求めたRmodNを初期
値としてレジスタA(レジスタは、例えばメモリであっ
ても良い。以下同様である。)に格納する。そして、あ
らかじめ求めたM・RmodNをレジスタBに格納す
る。M・RmodNをレジスタBに格納する理由は、後
の処理で使用する式(25)中のM・RmodNを確保
しておくためである。
【0074】次に、式(24)を実行する。すなわちモ
ンゴメリ演算A2・R’modNを実行する。式(2
4)は、前述したようにフロー2を実行することにより
得られる。今、レジスタAに格納された値を2乗した値
が式(19)におけるXとして計算され、mが求められ
る。前述のようにこの演算は、乗算とRを用いた剰余演
算によって実行される。R=2n という定義なので、R
を用いた剰余演算は、被除算値の2n以下の値を見るだ
けでよい。次に、求められたmを用いて、式(20)を
実行する。今、レジスタAに格納された値を2乗した値
が式(20)におけるXとして計算され、tが求められ
る。前述のようにこの演算は、乗加算とRを用いた除算
によって実行される。R=2nという定義なので、Rを
用いた除算は、被除算値の2n以上の値を見るだけでよ
い。そしてこの演算結果をレジスタAに格納する。
【0075】次に、レジスタaに格納された値をレジス
タAに格納する。
【0076】ここで、指数eのビットの判別を行う。も
し、ビットが1ならば式(25)を実行する。すなわち
モンゴメリ演算A・B・R’modNを実行する。式
(25)は、前述したようにフロー2を実行することに
より得られる。今、レジスタAに格納された値とレジス
タBに格納された値との積が式(19)におけるXとし
て計算され、mが求められる。次に、求められたmを用
いて、式(20)を実行する。今、レジスタAに格納さ
れた値とレジスタBに格納された値との積が式(20)
におけるXとして計算され、tが求められる。そしてこ
の演算結果をレジスタaに格納する。そして、レジスタ
aに格納された演算結果をレジスタAに格納する。
【0077】もし指数eのビットが0ならば式(25)
の演算を行わずに次のステップに進む。
【0078】次に、指数eの全てのビットに対して以上
の演算(式(24)(25)の実行)を行ったかどうか
判定し、行っていないのであれば式(24)を実行する
ステップに戻り、行ったのであれば次に式(26)を実
行する。式(26)は、前述したようにフロー2を実行
することにより得られる。今、レジスタAに格納された
値が式(19)におけるXとして計算され、mが求めら
れる。次に、求められたmを用いて、式(20)を実行
する。今、レジスタAに格納された値が式(20)にお
けるXとして計算され、tが求められる。そして、以上
の一連の動作が終了する。
【0079】以上のべき乗剰余演算の解法の概略をまと
めると以下のようになる。
【0080】 1、べき乗剰余演算(MemodN) ↓ 2、反復平方積法を用いる。(A・AmodN、A・MmodNの繰り
返し。) ↓ 3、A・AmodN、A・MmodNの計算は、除算が複雑なためモン
ゴメリ手法に置き換える。(モンゴメリ手法:M’
(X)=X・R’modN) ↓ 4、M’(X)=X・R’modNは、REDC(X)
関数をしようして実現できる。(REDC関数:mod
Nの演算をmodRの形に変換するもの。これにより除
算の複雑性を回避できる。) 次に、本発明を実際に実現するためのハードウエアにつ
いて、図面を使用して以下に説明する。
【0081】まず、実際のハードウエアの概略を示すブ
ロック図を図4に示す。
【0082】図4において、401、403、405、
407、409、411、413、415は、メモリも
しくはレジスタである。そして、401、403、40
5、407、409、411、413には、各々ブロッ
ク図中に記載された値が格納されている。また、レジス
タ405は、図1中で説明したレジスタAに相当するも
のであり、レジスタ415は、レジスタaに相当するも
のである。セレクタ417は、指数eが格納された1ビ
ット左シフトレジスタ409からの指示に基づき、レジ
スタ407もしくはレジスタ405の出力のいずれかを
演算部419中の乗算部に転送する。詳しくは、セレク
タ417は、図1中の”eシフトキャリ”を実行する部
分、すなわち指数部eが1の場合はM・RmodNを演
算部に転送し、指数部eが0の場合は転送しない。ま
た、図1中のフローの初期段階において、A2を求める
ときには、レジスタ405の出力を演算部に転送する。
【0083】演算部419は、乗算部と除算部とで構成
されている。この演算部419は、乗算とREDC
(X)関数を実行する。
【0084】次に、本発明を実際に実現するためのハー
ドウエアの詳細について、図面を使用して以下に説明す
る。
【0085】(第1の実施の形態) (構成)べき乗剰余演算MemodNの計算方法は、先
に示したモンゴメリ演算手法における、 A2・R’modN・・・(24)、A・B・R’modN・・・(25) (Bは、式(25)における”M・RmodN”が位置
する部分に相当する。)の2種の演算を、指数”e”の
ビット値の内容に従って、規定の手順で繰り返し最後
に、 A・1・R’modN・・・(26) の演算を行えば良いことは、図1及びフロー3で述べた
とおりである。
【0086】従って、上記3種類の剰余演算を実行する
演算器(以下、コプロセサと称す。)を用意すれば、そ
のコプロセッサを用いて(演算の繰り返し手順等は、ソ
フトウエアあるいはハードウエアのいずれの制御方法で
実現しても良い。)、べき乗剰余演算の解を得ることが
できる。
【0087】本発明は、上記の3種類の剰余演算、すな
わち3つの演算モードを有するコプロセッサに関するも
のである。
【0088】図5は、本発明の第1の実施の形態の剰余
演算コプロセッサを示す図である。
【0089】なお、図面中において、各ブロックを結ぶ
太い矢印は、データが転送されるバスを示す。
【0090】本発明の剰余演算コプロセッサは、コプロ
セッサ全体の演算タイミング及び演算器内の各種回路に
対して、上記3種類の演算の種類に対応したコントロー
ル信号を供給するタイミング/コントロール回路T/C
と、モンゴメリ法化における各演算値を格納する、複数
の演算値メモリSmem、N’mem、Nmem、Mm
em、A’mem、Wlmem、Whmemを有する。
また、本発明の剰余演算コプロセッサは、乗加算を行う
高速乗加算器Mul/Add、加算を行う高速加算器A
dd、乗算値を格納する乗算値格納レジスタXi−re
g、被乗算値を格納する被乗算値格納レジスタYi−r
eg、被加算値を格納する被加算値格納レジスタAi−
reg、高速加算器Addが出力する値の上位の桁を格
納するレジスタRHを有する。
【0091】高速加算器Add、乗算値格納レジスタX
i−reg、被乗算値格納レジスタYi−reg、被加
算値格納レジスタAi−regは、各演算値メモリから
読み出された、高速乗加算器Mul/Addの入力ビッ
ト長分に対応した値を一時格納する機能を有する。
【0092】高速乗加算器Mul/Addは、乗算動作
の際の入力値として、レジスタXi−regの出力値
と、レジスタYi−regの出力値を入力し、加算動作
の際の入力値として、レジスタAi−regの出力値を
入力する、特定ビット長の乗加算器である。そして、そ
の出力は、次段の高速加算器Addの加算入力値とな
る。
【0093】高速加算器Addは、高速乗加算器Mul
/Addの出力値と、レジスタRHの出力値との加算動
作を行う、特定ビット長の加算器である。そして、この
高速加算器Addの出力のうち、上位桁はレジスタRH
もしくは各演算値メモリに向けて出力され、下位桁は各
演算値メモリに向けて出力される。
【0094】(動作)次に、図5に示す回路の動作を説
明する。
【0095】〔A2・R’modN・・・(24)の実
現の方法〕Aの値を演算値メモリA’mem、Wlme
mの双方に格納し、モンゴメリ法化におけるN’の値を
演算値メモリN’memに格納し、Nの値を演算値メモ
リNmemに格納する。N及びN’の値は、暗号化/復
号化のための鍵であるので、データの送信者/受信者に
対して暗号システム運用者により決定されている。Rの
値は、Nの値から自ずと決定される。Aの値は、前述し
たように、RmodNを実行することで決定される。
【0096】そして、タイミング/コントロール回路T
/Cに対して、モード1信号を供給することにより、以
下のように上記A2・R’modN・・・(24)が実
行される。
【0097】まず、A×Aの計算が行われる。
【0098】演算値メモリA’memから高速乗加算器
Mul/Addの入力ビット長分に対応した値が、レジ
スタXi−regに取り込まれる。同様に、演算値メモ
リWlmemから高速乗加算器Mul/Addの入力ビ
ット長分に対応した値が、レジスタYi−regに取り
込まれる。
【0099】図6に示すように、乗算動作を行う場合
に、演算値のビット長(例えば16ビット)が高速乗加
算器Mul/Addの乗算入力処理ビット長(例えば4
ビット)を越えているとき、演算値のビット長に対応し
た演算の回数分(4×4=16回)だけ単位乗加算を繰
り返すことになる。
【0100】上述の動作をハードウエアイメージでより
詳細に表現すると図7のようになる。
【0101】この演算は、演算値メモリA’memの各
アドレスA’3、A’2、A’1、A’0に格納された
値と演算値メモリWlmemの各アドレスWl3、Wl
2、Wl1、Wl0に格納された値とを乗算したときの
値が、演算値メモリWhem及び演算値メモリWlme
mの各アドレスWh3、Wh2、Wh1、Wh0、Wl
3、Wl2、Wl1、Wl0に格納されることを意味す
る。
【0102】(単位乗加算1)まず、レジスタYi−r
egが、演算値メモリWlmemのアドレスWl0に格
納された値(被乗算値)を取り込むとともに、レジスタ
Xi−regが演算値メモリA’memのアドレスA’
0に格納された値(乗算値)を取り込む。次に、高速乗
加算器Mul/Addはこの乗算値と被乗算値を乗算
し、高速加算器Addに向けて出力する。この単位乗加
算1では、桁合わせ動作を行う必要がないため、レジス
タAi−regから高速乗加算器Mul/Addへ与え
る加算値の値を0とする。(レジスタAi−regの値
を0とするか、レジスタAi−regに格納された値が
高速乗加算器Mul/Addへ与えられないようにす
る。)さらに、高速加算器AddのThrough端子
に”highレベル”を供給して、レジスタRHの内容
を加算しないようにする。そして、演算値メモリA’m
emの値と演算値メモリWlmemの値との乗算におい
て、単位乗加算1の演算結果の下位桁は、本乗算の最終
演算結果の最下位桁であるので、この単位乗加算1の演
算結果の下位桁は本乗算の最終演算結果として演算値メ
モリWlmemの最下位アドレスWl0に格納される。
(図7において、アンダーラインが付与されたアドレス
には、最終演算結果が格納されていることを意味す
る。)この単位乗加算1の演算結果の上位桁は、次の単
位乗加算の桁合わせのためにレジスタRHに格納され
る。
【0103】(単位乗加算2)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリA’memのアドレス
A’1に格納された値(乗算値)を取り込む。次に、高
速乗加算器Mul/Addはこの乗算値と被乗算値を乗
算し、高速加算器Addに向けて出力する。この単位乗
加算2では、レジスタAi−regから高速乗加算器M
ul/Addへ与える加算値の値を0とする。(レジス
タAi−regの値を0とするか、レジスタAi−re
gに格納された値が高速乗加算器Mul/Addへ与え
られないようにする。)が、高速加算器AddのThr
ough端子に”lowレベル”を供給して、レジスタ
RHの内容(単位乗加算1の演算結果の上位桁)を高速
乗加算器Mul/Addの出力に加算する。この単位乗
加算2の演算結果の下位桁は、演算値メモリWhmem
の最下位アドレスWh0に格納される。この単位乗加算
2の演算結果の上位桁は、次の単位乗加算の桁合わせの
ためにレジスタRHに格納される。
【0104】(単位乗加算3)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリA’memのアドレス
A’2に格納された値(乗算値)を取り込む。次に、高
速乗加算器Mul/Addはこの乗算値と被乗算値を乗
算し、高速加算器Addに向けて出力する。この単位乗
加算3では、レジスタAi−regから高速乗加算器M
ul/Addへ与える加算値の値を0とする。(レジス
タAi−regの値を0とするか、レジスタAi−re
gに格納された値が高速乗加算器Mul/Addへ与え
られないようにする。)が、高速加算器AddのThr
ough端子に”lowレベル”を供給して、レジスタ
RHの内容(単位乗加算1の演算結果の上位桁)を高速
乗加算器Mul/Addの出力に加算する。この単位乗
加算3の演算結果の下位桁は、演算値メモリWhmem
のアドレスWh1に格納される。この単位乗加算3の演
算結果の上位桁は、次の単位乗加算の桁合わせのために
レジスタRHに格納される。
【0105】(単位乗加算4)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリA’memのアドレス
A’3に格納された値(乗算値)を取り込む。次に、高
速乗加算器Mul/Addはこの乗算値と被乗算値を乗
算し、高速加算器Addに向けて出力する。この単位乗
加算4では、レジスタAi−regから高速乗加算器M
ul/Addへ与える加算値の値を0とする。(レジス
タAi−regの値を0とするか、レジスタAi−re
gに格納された値が高速乗加算器Mul/Addへ与え
られないようにする。)が、高速加算器AddのThr
ough端子に”lowレベル”を供給して、レジスタ
RHの内容(単位乗加算1の演算結果の上位桁)を高速
乗加算器Mul/Addの出力に加算する。この単位乗
加算4の演算結果の下位桁は、演算値メモリWhmem
のアドレスWh2に格納される。この単位乗加算4の演
算結果の上位桁は、次の単位乗加算の桁合わせのために
演算値メモリWhmemのアドレスWh3に格納され
る。
【0106】(単位乗加算5)レジスタYi−reg
は、演算値メモリWlmemのアドレスWl1に格納さ
れた値(被乗算値)を取り込み、レジスタXi−reg
は、演算値メモリA’memのアドレスA’0に格納さ
れた値(乗算値)を取り込み、レジスタAi−reg
は、演算値メモリWhmemのアドレスWh0に格納さ
れた値(加算値)を取り込む。次に、高速乗加算器Mu
l/Addはこの乗算値と被乗算値を乗算し、その乗算
結果に加算値を加算し、高速加算器Addに向けて出力
する。この単位乗加算5では、高速加算器AddのTh
rough端子に”highレベル”を供給して、レジ
スタRHの内容(単位乗加算4の演算結果の上位桁)を
加算しないようにする。この単位乗加算5の演算結果の
下位桁は、演算値メモリWlmemのアドレスWl1に
格納される。この単位乗加算5の演算結果の上位桁は、
次の単位乗加算の桁合わせのためにレジスタRHに格納
される。
【0107】(単位乗加算6)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリA’memのアドレス
A’1に格納された値(乗算値)を取り込み、レジスタ
Ai−regは、演算値メモリWhmemのアドレスW
h1に格納された値(加算値)を取り込む。次に、高速
乗加算器Mul/Addはこの乗算値と被乗算値を乗算
し、その乗算結果に加算値を加算し、高速加算器Add
に向けて出力する。この単位乗加算6では、高速加算器
AddのThrough端子に”lowレベル”を供給
して、レジスタRHの内容(単位乗加算5の演算結果の
上位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算6の演算結果の下位桁は、演算値メ
モリWhmemのアドレスWh0に格納される。この単
位乗加算6の演算結果の上位桁は、次の単位乗加算の桁
合わせのためにレジスタRHに格納される。
【0108】(単位乗加算7)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリA’memのアドレス
A’2に格納された値(乗算値)を取り込み、レジスタ
Ai−regは、演算値メモリWhmemのアドレスW
h2に格納された値(加算値)を取り込む。次に、高速
乗加算器Mul/Addはこの乗算値と被乗算値を乗算
し、その乗算結果に加算値を加算し、高速加算器Add
に向けて出力する。この単位乗加算7では、高速加算器
AddのThrough端子に”lowレベル”を供給
して、レジスタRHの内容(単位乗加算6の演算結果の
上位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算7の演算結果の下位桁は、演算値メ
モリWhmemのアドレスWh1に格納される。この単
位乗加算7の演算結果の上位桁は、次の単位乗加算の桁
合わせのためにレジスタRHに格納される。
【0109】(単位乗加算8)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリA’memのアドレス
A’3に格納された値(乗算値)を取り込み、レジスタ
Ai−regは、演算値メモリWhmemのアドレスW
h3に格納された値(加算値)を取り込む。次に、高速
乗加算器Mul/Addはこの乗算値と被乗算値を乗算
し、その乗算結果に加算値を加算し、高速加算器Add
に向けて出力する。この単位乗加算8では、高速加算器
AddのThrough端子に”lowレベル”を供給
して、レジスタRHの内容(単位乗加算7の演算結果の
上位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算8の演算結果の下位桁は、演算値メ
モリWhmemのアドレスWh2に格納される。この単
位乗加算8の演算結果の上位桁は、演算値メモリWhm
emのアドレスWh3に格納される。
【0110】単位乗加算9から16までは、前述の単位
乗加算に習って、図7のごとく実行される。そして、A
×Aすなわち、演算値メモリA’memにに格納された
値と演算値メモリWlmemに格納された値とを乗算し
たときの値が、Whmem−Wlmem(”−”は、引
き算を示すものではない。)の形で格納される。
【0111】例えば、8ビット×8ビットの計算、64
H×F5H=6572Hを例にとると、計算結果657
2Hについて、上位桁65Hを演算値メモリWhmem
に、下位桁72Hを演算値メモリWlmemにそれぞれ
格納する。
【0112】次に、REDC関数を使用して、モンゴメ
リ手法を用いた剰余演算を実行する。モンゴメリ手法に
おいて、オペランド長nビットのべき乗剰余演算を実行
するとき、R=2nとすることは前述した通りである。
そして、この関係でのnビット長のR’、N’の値は存
在する。そして、A×Aの値は、Whmem−Wlme
mの形で格納されているので、mの計算は以下のように
なる。
【0113】 m=(XmodR)・N’modR =(Whmem−Wlmem)modR・N’modR ここで、(XmodR)は、XをRで割った余りをしめ
すので、R以下の値を見ればよいので、 =(Wlmem)・(N’mem)modR となる。
【0114】そして、上式は(Wlmem)・(N’m
em)をRで割った余りを示すので、(Wlmem)・
(N’mem)を実行した結果の下位nビットの値がm
となる。
【0115】すなわち、(Wlmem)・(N’me
m)の計算を、上述のA×Aの計算に習って実行し、そ
の結果をA’mem−Mmemの形で、演算値メモリ
A’memと演算値メモリMmemの双方に格納したと
きの、演算値メモリMmemに格納された値がmであ
る。
【0116】また、tの計算は以下のようになる。
【0117】 t=(X+m・N)/R =〔(Whmem−Wlmem)+(Mmem)・(Nmem)〕/R 上式の解を得るためには、まず(Mmem)×(Nme
m)の計算を先のA×Aに習って実行し、その結果を
A’mem−Mmemの形で、演算値メモリA’mem
と演算値メモリMmemの双方に格納する。続いて、 Mmem×1+Wlmem・・・(27) (下位桁の足し算) A’mem×1+Whmem・・・(28) (上位桁の足し算) の計算を実行する。このときの式(28)が求めるtで
ある。
【0118】また、R以下の値は必ず0であるから、式
(27)の計算結果0となるので、メモリに格納する必
要はない。なお、式(27)の計算では、桁あふれが発
生する場合が考えられるが、そのときには、式(28)
の計算の際に、図5に示した高速乗加算器Mul/Ad
dの+1端子に、1を供給する。これらの計算は、本コ
プロセッサを用いれば容易に実行することができるのは
明かである。
【0119】式(28)で得られた値は、演算値メモリ
A’memとMmemの双方に格納する。また、桁あふ
れが発生した場合は、キャリーフラグCFに1を書き込
む。
【0120】ところで、キャリーフラグが1の場合は、
t>Nの関係にあることは明かであるから、t−Nの計
算を行う必要がある。これは、 〔(反転Nmem+1)×1〕+Wlmem・・・(29) の計算を行って求める。反転Nmemは、Nmemに格
納された値のインバースを意味する。
【0121】ここで、演算値メモリNmemに格納され
ているNの値は、暗号アルごリズムの世界では奇数であ
るから、式(29)の(反転Nmem+1)は”Nme
mの1の補数をとり、最下位ビットを1とする”ことで
求められる。この動作は、図5に示すレジスタXi−r
egのInv端子に1を供給する(レジスタXi−re
gに格納された値の1の補数をとる。)ことで実現され
る。
【0122】〔A・B・R’modN・・・(25)の
実現の方法〕Aの値を演算値メモリWlmemに、Bの
値を演算値メモリSmemに格納し、モンゴメリ法化に
おけるN’の値を演算値メモリN’memに格納し、N
の値を演算値メモリNmemに格納する。
【0123】そして、タイミング/コントロール回路T
/Cに対して、モード2信号を供給することにより、以
下のように上記A・B・R’modN・・・(25)が
実行される。
【0124】まず、A×Bの計算を行う。
【0125】演算値メモリSmemから高速乗加算器M
ul/Addの入力ビット長分に対応した値が、レジス
タXi−regに取り込まれる。同様に、演算値メモリ
Wlmemから高速乗加算器Mul/Addの入力ビッ
ト長分に対応した値が、レジスタYi−regに取り込
まれる。
【0126】このA×Bの計算は、レジスタXi−re
gへの値の取り込み元が演算値メモリSmemに変わる
だけで、前述のA×Aの計算と同様である。
【0127】次に、REDC関数を使用して、モンゴメ
リ手法を用いた剰余演算を実行する。
【0128】計算の方法は、A×Aの場合と同様であ
り、計算結果は、演算値メモリA’memとWlmem
の双方に格納される。
【0129】べき乗剰余演算を行う場合は、式(24)
と式(25)を繰り返し計算することになる。しかし、
以上説明した各計算の実現方法を用いれば、式(24)
(25)の計算結果は、ともに演算値メモリA’mem
とWlmemの双方に格納されるため、各々の式の計算
の開始時に、演算値の初期設定等を行う必要がないの
で、繰り返し計算をスムーズに行うことができる。
【0130】〔A・R’modN・・・(26)の実現
の方法〕Aの値を演算値メモリWlmemに格納し、モ
ンゴメリ法化におけるN’の値を演算値メモリN’me
mに格納し、Nの値を演算値メモリNmemに格納す
る。
【0131】そして、タイミング/コントロール回路T
/Cに対して、モード3信号を供給することにより、以
下のように上記A・R’modN・・・(26)が実行
される。
【0132】今回の式では、A×?という乗算を実行す
る必要がない。従って、モンゴメリ手法を用いた剰余演
算のみを実行する。
【0133】剰余演算におけるmの計算の方法は、A×
Aの場合とほぼ同様であり、計算結果は、A’mem−
Wlmemの形で、演算値メモリA’memとWlme
mの双方に格納したときの演算値メモリWlmemの値
がmの値となる。
【0134】また、tの計算は以下のようになる。
【0135】 t=(X+m・N)/R =〔(Wlmem)×(Nmem)の結果のR以上の値〕+1・・(30 ) 式(26)の計算では、上記のXはAであり、R以上の
値はない(0と考えてよい)ので、式(24)の実現方
法で説明したようなR以上の値(Whmem)の加算は
行う必要がない。また(X+m・N)は、必ずRの倍数
になるのであるから、式(30)の第2辺に示されるX
の値を加算する必要もなく、代わりに”〔(Wlme
m)×(Nmem)の結果のR以上の値〕+1”で解が
得られる。これは、暗号アルゴリズムの世界で剰余演算
を使用するとき、本計算におけるAの値が0になること
がないからである。
【0136】従って、式(30)では、まず(Wlme
m)×(Nmem)の計算を実行して、その結果をA’
mem−Wlmemの形で、演算値メモリA’memと
Wlmemに格納すればよい。その結果の得られたA’
mem上の値が求める解となる。(本演算の実行でべき
乗剰余演算のすべての演算は終了するため、ここでは演
算値メモリWlmemへの格納を省略してもよい。)な
お、このとき計算の最終結果を演算値メモリA’mem
の最下位桁に格納するタイミングで、図5に示した+1
端子に1を供給して、式(30)の1を足す動作を実行
する。
【0137】以上のように、第1の実施形態によれば、
規定ビット長の乗加算器(乗算器と加算器を別個に設け
てもよい)を演算部の中心として構成し、その周辺に設
けられた回路に、タイミング/コントロール信号発生回
路からの制御信号を供給することにより、モンゴメリ手
法を用いた多ビット長の剰余演算あるいはべき乗剰余演
算を実現できる。また、この方式によれば、演算部の中
心が限られた(規定の)ビット長の演算器で構成できる
ため回路規模が小さくてすみ、LSI化に適している。
【0138】(第2の実施形態) (構成)図8は、本発明の第2の実施の形態の剰余演算
コプロセッサを示す図である。
【0139】第2の実施形態は、第1の実施形態の構成
(図5)に、演算値が0であることを検出して、次の演
算のシーケンスを制御する回路を追加したものである。
【0140】具体的にこの制御回路は、図8における制
御回路ZeroCである。この制御回路ZeroCは、
演算値が0であることを検出して、次演算のシーケンス
を制御する回路であり、高速加算器Addの出力信号が
与えられる入力端子と出力端子とを有している。この出
力端子からは、タイミング/コントロール回路T/Cで
発生するタイミング/コントロール信号及びコプロセッ
サ内の各種回路を動作させる信号に所定の制御を施す信
号が出力する。
【0141】(動作)第1の実施形態の式(24)(2
5)の実現方法で述べた、REDC関数の計算におい
て、前の乗算の結果得られたXの値は次の2つの場合分
けができる。
【0142】(a)Rの倍数である場合・・前計算で得
られた値(Wlmem)が0。
【0143】(b)Rの倍数でない場合・・前計算で得
られた値(Wlmem)が0でない。
【0144】本実施の形態では、制御回路ZeroC
が、上記(a)(b)のように、X値(A×AやA×B
の結果の値)のR未満の値が0か否かを検出して、その
結果に応じて、続く演算のシーケンスを次の通りに実行
させる。
【0145】(a)の場合は、XmodR=0なのでm
=0となるのは明かであるから、このときはmの計算を
行う必要はない。
【0146】そしてtの計算は次のようになる。
【0147】 t=(X+m・N)/R=X/R=Whmem・・・(31) これは、A×A及びA×Bの計算結果の上位桁がそのま
まtの値となっていることを示す。従って、この場合の
ハードウエア処理は、演算値メモリWhmemに格納さ
れた値をそのまま演算値メモリA’memとWlmem
の双方に格納し、次の繰り返し演算に備える。すなわ
ち、X値(前計算で得られた値)のR未満の値が0の場
合は、m、tの演算の必要がない。このことは、tの計
算において、Xの全ビット長分を計算する必要がないこ
とを意味する。
【0148】(b)の場合は、mを求めるための計算を
第1の実施形態の通り実行し、計算結果をA’mem−
Wlmemの形で演算値メモリA’memとWlmem
の双方に格納し、演算値メモリWlmemに格納された
値をmの値とする。そして、引き続きtの計算を実行す
る。
【0149】そして、tの計算は次のようになる。
【0150】 t=(X+m・N)/R =Whmem+〔(Wlmem)×(Nmem)の結果のR以上の値〕+1 ・・・(32) 式(32)は、まず(Wlmem)×(Nmem)の計
算を実行して、その結果をA’mem−Wlmemの形
で演算値メモリA’memとWlmemの双方に格納
し、続いて (A’mem)×1+(Whmem)+1・・・(33) の計算を実行すれば解が得られる。なぜなら、X+m・
Nの値は、必ずRの倍数になるから、R未満の値をわざ
わざ計算対象にする必要がないからである。なお、式
(33)では、最下位桁の計算タイミングで、図5に示
した+1端子に1を供給して式(33)の1を足す動作
を実行する。
【0151】式(33)で得られた計算結果は、演算値
メモリA’memとWlmemの双方に格納するととも
に、桁あふれが発生した場合は、キャリーフラグCFに
1を書き込む。その後の処理は、第1の実施の形態と同
様である。
【0152】以上のように、第2の実施形態によれば、
演算値が0であることを検出して、次演算のシーケンス
を制御する制御回路(乗加算器のビット長に相当する回
路規模で済むので、小規模な回路である。)を付加する
ことにより、第1の実施の形態で説明したコプロセッサ
の演算値メモリMmemの削除と、演算量の削減が達成
できる。従って、ハードウエアの削減と演算時間の短縮
化を図ることができる。
【0153】(第3の実施形態) (構成)図9は、本発明の第3の実施の形態の剰余演算
コプロセッサを示す図である。
【0154】第3の実施形態は、第1の実施形態の構成
(図5)もしくは第2の実施形態の構成(図8)に、オ
ペランドビット長を選択してタイミング/コントロール
信号を変化させるビット長選択制御回路を付加したもの
である。
【0155】具体的にこのビット長選択制御回路は、図
9におけるLenContである。このビット長選択制
御回路LenContは、入力信号Sel−lenに従
って、タイミング/コントロール回路T/Cで発生する
演算タイミング信号とコプロセッサ内の各種回路に供給
するコントロール信号を制御するように動作する。
【0156】(動作)さて、本コプロセッサの動作は、
オペランドビット長の変化に伴い、R値及びその値によ
り決まるR’値、N’値のビット長と、規定ビット長乗
加算の繰り返し手順(回数)とが変化するようになる。
【0157】例えば、高速乗加算器Mul/Addが1
6ビット長の時、オペランドビット長512ビットのA
×Aの乗算を実行する場合、高速乗加算器Mul/Ad
dによる乗加算の繰り返し回数は次のようになる。
【0158】 (512/16)×(512/16)=1024 回 一方、オペランドビット長768ビットの場合は次のよ
うになる。
【0159】 (768/16)×(768/16)=2304 回 そして、これらの計算のシーケンスもそれぞれ異なる。
また、前に述べたようにオペランドビット長によりR値
は一義的に決まるので、R’値、N’値のビット長もそ
れに応じて変化する。
【0160】ビット長選択制御回路LenContは、
これらの変化要因を制御する、すなわち、選択されたビ
ット長に対応して、タイミング/コントロール回路T/
Cで発生させる演算タイミング信号やコントロール信号
が出力するよう制御する。
【0161】一般的に、ビット長選択制御回路LenC
ontは、PLAや論理回路等の比較的小規模な回路構
成で実現できる。
【0162】以上のように、第3の実施形態のコプロセ
ッサでは、ビット長選択制御回路LenContを付加
することによって、さまざまなオペランドビット長の剰
余演算あるいはべき乗剰余演算を実行することが可能と
なる。
【0163】(第4の実施形態) (構成)以上の実施例で示したコプロセッサの演算の基
本は、規定ビット長の乗加算である。この基本乗加算を
繰り返して剰余演算あるいはべき乗剰余演算を実現する
方法は、以上の実施例で示した通りである。
【0164】しかしながら、以上の実施例では、剰余演
算モードのみを行うコプロセッサであったため、演算の
基本が乗加算であるにも関わらず、その用途が剰余演算
に限られている。
【0165】そこで、さまざまな演算の基本となる多ビ
ット長乗加算のモードを追加して、本コプロセッサの汎
用性を向上させる。
【0166】図10は、本発明の第4の実施の形態の剰
余演算コプロセッサを示す図である。
【0167】第4の実施の形態は、先の実施形態に乗加
算のモードを追加したものであり、このモードを実行す
るためにタイミング/コントロール回路T/Cにモード
信号4を供給するようにしたものである。
【0168】(動作)以下に示す乗加算を実行する例を
以下に説明する。
【0169】A・B+C・・・(34) まず、式(34)において、値Aを演算値メモリWlm
emに、値Bを演算値メモリSmemに、値Cを演算値
メモリWhmemに格納する。そして、タイミング/コ
ントロール回路T/Cにモード信号4を供給して、演算
の種類を、乗加算を実行するモードにする。
【0170】上述の動作をハードウエアイメージでより
詳細に表現すると図11のようになる。
【0171】この演算は、演算値メモリSmemの各ア
ドレスS3、S2、S1、S0に格納された値と演算値
メモリWlmemの各アドレスWl3、Wl2、Wl
1、Wl0に格納された値とを乗算し、この結果と、演
算値メモリWhmemの各アドレスWh3、Wh2、W
h1、Wh0に格納された値とを足し合わせたときの値
が、演算値メモリWhem及び演算値メモリWlmem
の各アドレスWh3、Wh2、Wh1、Wh0、Wl
3、Wl2、Wl1、Wl0に格納されることを意味す
る。
【0172】(単位乗加算1)まず、レジスタYi−r
egが、演算値メモリWlmemのアドレスWl0に格
納された値(被乗算値)を取り込むとともに、レジスタ
Xi−regが演算値メモリSmemのアドレスS0に
格納された値(乗算値)を取り込み、レジスタAi−r
egが演算値メモリWhmemのアドレスWh0に格納
された値(加算値)を取り込む。次に、高速乗加算器M
ul/Addはこの乗算値と被乗算値を乗算し、かつこ
の乗算結果に加算値を加算し高速加算器Addに向けて
出力する。この単位乗加算1では、高速加算器Addの
Through端子に”highレベル”を供給して、
レジスタRHの内容を加算しないようにする。
【0173】そして、この単位乗加算における演算結果
の下位桁は、本乗加算の最終演算結果の最下位桁である
ので、この単位乗加算1の演算結果の下位桁は本乗算の
最終演算結果として演算値メモリWlmemの最下位ア
ドレスWl0に格納される。(図11において、アンダ
ーラインが付与されたアドレスには、最終演算結果が格
納されていることを意味する。)この単位乗加算1の演
算結果の上位桁は、次の単位乗加算のためにレジスタR
Hに格納される。
【0174】(単位乗加算2)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリSmemのアドレスS
1に格納された値(乗算値)を取り込み、レジスタAi
−regが演算値メモリWhmemのアドレスWh1に
格納された値(加算値)を取り込む。次に、高速乗加算
器Mul/Addはこの乗算値と被乗算値を乗算し、か
つこの乗算結果に加算値を加算し、高速加算器Addに
向けて出力する。この単位乗加算2では、高速加算器A
ddのThrough端子に”lowレベル”を供給し
て、レジスタRHの内容(単位乗加算1の演算結果の上
位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算2の演算結果の下位桁は、演算値メ
モリWhmemの最下位アドレスWh0に格納される。
この単位乗加算2の演算結果の上位桁は、次の単位乗加
算の桁合わせのためにレジスタRHに格納される。
【0175】(単位乗加算3)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリSmemのアドレスS
2に格納された値(乗算値)を取り込み、レジスタAi
−regが演算値メモリWhmemのアドレスWh2に
格納された値(加算値)を取り込む。次に、高速乗加算
器Mul/Addはこの乗算値と被乗算値を乗算し、か
つこの乗算結果に加算値を加算し、高速加算器Addに
向けて出力する。この単位乗加算3では、高速加算器A
ddのThrough端子に”lowレベル”を供給し
て、レジスタRHの内容(単位乗加算2の演算結果の上
位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算3の演算結果の下位桁は、演算値メ
モリWhmemの最下位アドレスWh1に格納される。
この単位乗加算3の演算結果の上位桁は、次の単位乗加
算の桁合わせのためにレジスタRHに格納される。
【0176】(単位乗加算4)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリSmemのアドレスS
3に格納された値(乗算値)を取り込み、レジスタAi
−regが演算値メモリWhmemのアドレスWh3に
格納された値(加算値)を取り込む。次に、高速乗加算
器Mul/Addはこの乗算値と被乗算値を乗算し、か
つこの乗算結果に加算値を加算し、高速加算器Addに
向けて出力する。この単位乗加算4では、高速加算器A
ddのThrough端子に”lowレベル”を供給し
て、レジスタRHの内容(単位乗加算3の演算結果の上
位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算4の演算結果の下位桁は、演算値メ
モリWhmemの最下位アドレスWh2に格納される。
この単位乗加算4の演算結果の上位桁は、次の単位乗加
算の桁合わせのために演算値メモリWhmemのアドレ
スWh3に格納される。
【0177】(単位乗加算5)レジスタYi−reg
は、演算値メモリWlmemのアドレスWl1に格納さ
れた値(被乗算値)を取り込み、レジスタXi−reg
は、演算値メモリSmemのアドレスS0に格納された
値(乗算値)を取り込み、レジスタAi−regは、演
算値メモリWhmemのアドレスWh0に格納された値
(加算値)を取り込む。次に、高速乗加算器Mul/A
ddはこの乗算値と被乗算値を乗算し、その乗算結果に
加算値を加算し、高速加算器Addに向けて出力する。
この単位乗加算5では、高速加算器AddのThrou
gh端子に”highレベル”を供給して、レジスタR
Hの内容(単位乗加算4の演算結果の上位桁)を加算し
ないようにする。この単位乗加算5の演算結果の下位桁
は、演算値メモリWlmemのアドレスWl1に格納さ
れる。この単位乗加算5の演算結果の上位桁は、次の単
位乗加算の桁合わせのためにレジスタRHに格納され
る。
【0178】(単位乗加算6)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリSmemのアドレスS
1に格納された値(乗算値)を取り込み、レジスタAi
−regは、演算値メモリWhmemのアドレスWh1
に格納された値(加算値)を取り込む。次に、高速乗加
算器Mul/Addはこの乗算値と被乗算値を乗算し、
その乗算結果に加算値を加算し、高速加算器Addに向
けて出力する。この単位乗加算6では、高速加算器Ad
dのThrough端子に”lowレベル”を供給し
て、レジスタRHの内容(単位乗加算5の演算結果の上
位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算6の演算結果の下位桁は、演算値メ
モリWhmemのアドレスWh0に格納される。この単
位乗加算6の演算結果の上位桁は、次の単位乗加算の桁
合わせのためにレジスタRHに格納される。
【0179】(単位乗加算7)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリSmemのアドレスS
2に格納された値(乗算値)を取り込み、レジスタAi
−regは、演算値メモリWhmemのアドレスWh2
に格納された値(加算値)を取り込む。次に、高速乗加
算器Mul/Addはこの乗算値と被乗算値を乗算し、
その乗算結果に加算値を加算し、高速加算器Addに向
けて出力する。この単位乗加算7では、高速加算器Ad
dのThrough端子に”lowレベル”を供給し
て、レジスタRHの内容(単位乗加算6の演算結果の上
位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算7の演算結果の下位桁は、演算値メ
モリWhmemのアドレスWh1に格納される。この単
位乗加算7の演算結果の上位桁は、次の単位乗加算の桁
合わせのためにレジスタRHに格納される。
【0180】(単位乗加算8)レジスタYi−reg
は、すでに格納された値(被乗算値)を維持し、レジス
タXi−regは、演算値メモリSmemのアドレスS
3に格納された値(乗算値)を取り込み、レジスタAi
−regは、演算値メモリWhmemのアドレスWh3
に格納された値(加算値)を取り込む。次に、高速乗加
算器Mul/Addはこの乗算値と被乗算値を乗算し、
その乗算結果に加算値を加算し、高速加算器Addに向
けて出力する。この単位乗加算8では、高速加算器Ad
dのThrough端子に”lowレベル”を供給し
て、レジスタRHの内容(単位乗加算7の演算結果の上
位桁)を高速乗加算器Mul/Addの出力に加算す
る。この単位乗加算8の演算結果の下位桁は、演算値メ
モリWhmemのアドレスWh2に格納される。この単
位乗加算8の演算結果の上位桁は、演算値メモリWhm
emのアドレスWh3に格納される。
【0181】単位乗加算9から16までは、前述の単位
乗加算に習って、図11のごとく実行される。そして、
最終演算結果は、Whmem−Wlmem(”−”は、
引き算を示すものではない。)の形で格納される。
【0182】図12には、8591×4673+206
9=40147812を、上述のハードウエアで実行し
た場合の単位乗加算を示す。動作の説明については、図
11と同様であるので省略する。以上のように、第4の
実施形態によれば、さまざまな演算の基本となる多ビッ
ト長の乗加算のモードを実現できるので、コプロセッサ
の汎用性を大幅に向上させることができる。
【0183】(第5の実施形態) (構成)以上の実施の形態で示したコプロセッサは、高
速乗加算器Mul/Addと高速加算器Addの入力ビ
ット長で決まる単位乗加算毎に、メモリへのアクセスを
行う必要があるため、演算時間の短縮化においては改善
の余地がある。なぜなら、メモリを含んだ回路全体の動
作速度は、メモリアクセスタイムが回路全体の動作速度
を制限してしまうからである。
【0184】そこで、本実施の形態では、単位乗加算の
演算回数に対するメモリのアクセス回数を減らして、最
終的な演算時間の短縮を図る。
【0185】図13は、本発明の第5の実施の形態の剰
余演算コプロセッサを示す図である。
【0186】第5の実施の形態は、先の実施の形態の構
成に対して、被乗算値格納レジスタYi−regを複数
個に増やして、その出力を選択する回路を設けたもので
ある。さらに、高速加算器Addの上位桁あるいは下位
桁の出力値を格納するレジスタも被乗算値格納レジスタ
の個数に対応する個数設け、各レジスタの出力値を適当
に選択する選択回路を設けたものである。
【0187】具体的には、レジスタYi−reg
[0]、レジスタYi−reg[1]、レジスタYi−
reg[2]、レジスタYi−reg[3]が、高速乗
加算器Mul/Addの入力ビット長に対応した長さを
持つ被乗算値レジスタであり、各々の出力は、被乗算値
選択回路Yi−selに接続されている。選択回路Yi
−selは、レジスタYi−reg[0]、レジスタY
i−reg[1]、レジスタYi−reg[2]、レジ
スタYi−reg[3]の値のうちのいずれか1つを選
択して、後続の高速乗加算器Mul/Addに与える選
択回路である。
【0188】レジスタRAは、高速加算器Addの出力
のうち上位桁R−highを一時格納するレジスタであ
り、その出力は後続の選択回路SelA、SelB、E
nSelに接続されている。そして高速加算器Add出
力のうち下位桁R−lowは、選択回路SelB及びイ
ネーブルバッファEnに接続されている。
【0189】レジスタAi−regの出力は、選択回路
SelAに接続されている。そして選択回路SelA
は、レジスタAi−regとレジスタRAの内容のうち
いずれかを選択して高速加算器Addに加算入力すべく
加算加算器Addに接続されている。
【0190】選択回路SelBは、R−lowとレジス
タRAの内容のうちいずれかを選択してレジスタRBに
向けてその結果を出力すべくレジスタRBに接続されて
いる。
【0191】レジスタRBは、選択回路SelBの出力
を一時格納するレジスタであり、出力はレジスタRC及
びEnselに接続されている。
【0192】レジスタRCは、レジスタRBの出力を一
時格納するレジスタであり、出力はレジスタRD及びE
nselに接続されている。
【0193】レジスタRDは、レジスタRCの出力を一
時格納するレジスタであり、出力は選択回路Ensel
及び高速乗加算器Mul/Addに接続されている。
【0194】選択回路Enselは、レジスタRA、R
B、RC、RDの内容のうちいずれか1つを選択して演
算値メモリに向けて出力する選択回路である。
【0195】その他の回路については、先の実施の形態
と同様な働きをするので説明を省略する。
【0196】(動作)次に、演算の基本となる (A3A2A1A0)×S0+C0 の計算方法について、 (Wl3、Wl2、Wl1、Wl0)×S0=(RA、
RB、RC、RD、Wl0) のようなハードウエアイメージを使用して、図14を用
いて説明する。
【0197】なお、アンダーラインが付与されたアドレ
スは、演算の最終結果が格納されていることを意味す
る。
【0198】(初期設定)まず図示のごとく初期設定が
行われる。
【0199】(ステップ1)レジスタXi−regの値
と、選択回路Yi−selで選択されたレジスタYi−
reg[0]の値と、レジスタRDの値と選択回路Se
lAで選択されたレジスタAi−regの値との間で演
算が行われる。そして、この演算の終了間際には、演算
結果の上位桁であるR−highは、レジスタRAに、
演算結果の下位桁であるR−lowは、演算値メモリW
lmemに格納される。同時に、レジスタRCの値はレ
ジスタRDに、レジスタRBの値はレジスタRCに、レ
ジスタRAの値は選択回路SelBで選択されたレジス
タRBに格納される。 (ステップ2)レジスタXi−regの値と、選択回路
Yi−selで選択されたレジスタYi−reg[1]
の値と、レジスタRDの値と選択回路SelAで選択さ
れたレジスタRAの値との間で演算が行われる。そし
て、この演算の終了間際には、演算結果の上位桁である
R−highは、レジスタRAに、演算結果の下位桁で
あるR−lowは、選択回路SelBで選択されたレジ
スタRBに格納される。同時に、レジスタRCの値はレ
ジスタRDに、レジスタRBの値はレジスタRCに格納
される。
【0200】(ステップ3)レジスタXi−regの値
と、選択回路Yi−selで選択されたレジスタYi−
reg[2]の値と、レジスタRDの値と選択回路Se
lAで選択されたレジスタRAの値との間で演算が行わ
れる。そして、この演算の終了間際には、演算結果の上
位桁であるR−highは、レジスタRAに、演算結果
の下位桁であるR−lowは、選択回路SelBで選択
されたレジスタRBに格納される。同時に、レジスタR
Cの値はレジスタRDに、レジスタRBの値はレジスタ
RCに格納される。
【0201】(ステップ4)レジスタXi−regの値
と、選択回路Yi−selで選択されたレジスタYi−
reg[3]の値と、レジスタRDの値と選択回路Se
lAで選択されたレジスタRAの値との間で演算が行わ
れる。そして、この演算の終了間際には、演算結果の上
位桁であるR−highは、レジスタRAに、演算結果
の下位桁であるR−lowは、選択回路SelBで選択
されたレジスタRBに格納される。同時に、レジスタR
Cの値はレジスタRDに、レジスタRBの値はレジスタ
RCに格納される。
【0202】以上のステップ1からステップ4までの処
理では、演算値メモリへのアクセスは、ステップ1で1
度行っているだけである。従って、残りのステップ2か
らステップ4までの期間に、各演算値メモリのアドレス
の変更、プリチャージ等を行ってメモリアクセスの時間
をかせぐことができる。また、ステップ2からステップ
4までの期間内に行う動作は、ほとんど同じであるた
め、演算処理が複雑になることはない。
【0203】次に、他の演算の例として、 (A3、A2、A1、A0)×(B3、B2、B1、B
0)+(C3、C2、C1、C0) の計算方法について、 (Wl3、Wl2、Wl1、Wl0)×(S3、S2、
S1、S0)+(Wh3、Wh2、Wh1、Wh0)=
(RA、RB、RC、RD、Wl3、Wl2、Wl1、
Wl0) のようなハードウエアイメージを使用して、図15、図
16に示す。
【0204】さらに、実際の計算の例として、図17に
8591×4673+2069=40147812のタ
イム1からタイム4までの演算過程を示す。
【0205】なお、アンダーラインが付与された値は、
演算の最終結果であることを意味する。
【0206】この図から、最終結果の上位の桁は、タイ
ム4のステップ4で得られたレジスタRA、RB、R
C、RDに格納された値であり、下位の桁はステップ1
で得られた演算値メモリWlmemの値であることが理
解できる。
【0207】以上のように第5の実施形態によれば、乗
加算器等の演算処理部のサイズを変える必要はなく、全
体的に小規模な回路で演算時間の短い剰余演算コプロセ
ッサを実現できる。
【0208】(第6の実施形態) (構成)図18は、本発明の第6の実施の形態を示すブ
ロック図であり、先に説明したコプロセッサと外部装置
との間に、演算値メモリインターフェイス回路と演算コ
ントロール回路を設けたものである。
【0209】(演算値メモリインタフェイス回路Mem
IF)MemIFは、MCUとコプロセッサ内の演算値
メモリとの間でデータの授受を行うための演算値メモリ
インタフェイス回路である。
【0210】演算値メモリは、演算に先だってコプロセ
ッサ外部から演算データを格納し、演算の終了時に演算
結果の値をコプロセッサ外部に送出する。同時に、演算
実行中はコプロセッサ外部とは関係なくダイナミックに
演算ユニットとのアクセスを繰り返す。つまり、演算値
メモリは2種類の通信プロトコルを有する。演算値メモ
リインタフェイスMemIFでは、それを実現すべく回
路を構成する。
【0211】MCUから出力されるアドレス信号adr
sとメモリ制御信号Memconは、演算値メモリイン
タフェイスMemIFに入力され、演算値メモリインタ
フェイスMemIF内で、コプロセッサ内の各演算値メ
モリ別のアドレス信号Comemadとメモリコントロ
ール信号Comconを作成してコプロセッサに供給す
る。MDbusは、MCUのデータバスであり、CoD
busはコプロセッサの外部インタフェイス用データバ
スである。
【0212】ここで、各演算値メモリがMCU内のある
単一のメモリ空間上に配置されている場合は、演算値メ
モリインタフェイスMemIFに入力されるadrs信
号とMemcon信号とMDbusは一種類でよいが、
複数のメモリ空間上に配置されている場合は複数種類の
入力となる。また、一般的にはMDbusとCoDbu
sは直結されることが多いが、例えばコプロセッサ内部
で処理される演算値メモリのデータ長とMCUのデータ
長が異なる場合などは、演算値メモリインタフェイスM
emIFを介してデータ変換を行うこともできる。
【0213】なお、コプロセッサが演算実行中は、演算
値メモリが演算実行のためにダイナミックに動作してい
るので、MCUからのアクセスを禁止するように制御さ
れている。このようにして、コプロセッサ内演算値メモ
リと外部装置との第1の通信プロトコルを実現する。
【0214】次に、演算実行の際、演算値メモリインタ
フェイスMemIFにはコプロセッサ内のタイミング/
コントロール回路T/Cから出力される演算実行時メモ
リコントロール信号Exemcが入力され、それを受け
取った演算値メモリインタフェイスMemIFは、演算
値メモリが演算ユニットとの間でデータの授受を行える
ように処理されたComemad信号とComcon信
号をコプロセッサに向けて出力する。このようにして、
コプロセッサ内の演算実行中の演算値メモリと演算ユニ
ットとの第2の通信プロトコルを実現する。
【0215】(演算コントロール回路CopCon)C
opConは、MCUから出力されるコプロセッサ制御
信号Exconを受け取って、コプロセッサ内部へ演算
制御信号Sevex(以上の実施の形態で言えば、演算
モード信号、ビット長選択信号等)を供給する演算コン
トロール回路である。ここで、コプロセッサへの演算の
開始を促すのは、演算モード信号やコプロセッサ原振ク
ロックCOPCLKを供給することで実現できる。
【0216】また、演算の終了をMCU側で確認するた
めには、コプロセッサ内のタイミング/コントロール回
路T/Cで発生される演算終了のタイミング信号Coe
ndをCopConで受取り、ラッチ回路などで処理し
た演算終了モニター信号EndmoniをMCUに向け
て出力する。
【0217】一般に、演算コントロール回路CopCo
nは、MCUのペリフェラル回路としてローカルメモリ
エリア等に割り付けてMCUの命令で直接アクセスでき
るように構成でき、比較的に簡単な回路で実現できる。
【0218】なお、図中のMCUCLK信号は、MCU
の原振クロックを、COPCLK信号はコプロセッサの
原振クロックを示している。
【0219】以上のように第6の実施の形態によれば、
比較的に小規模な回路で外部装置(例えば、MCU等)
とコプロセッサとのインタフェイスが実現できるので、
外部インタフェイス付きの剰余演算コプロセッサ、ある
いは剰余演算コプロセッサ内臓のMCUを構成でき、し
かもLSI化が可能となる。
【0220】(第7の実施形態)第6の実施の形態で
は、演算終了をコプロセッサ外部で確認する手段は、演
算終了モニター信号Endmoniを見るしかない。し
かしこの方法では、コプロセッサで処理される多ビット
長の剰余演算量は多いため、例えば外部装置がMCUの
場合はMCU側で常にEndmoni信号を監視する時
間が比較的長くなり、MCUの動作パフォーマンスが低
下する。
【0221】本実施の形態はこの問題を解決するため
に、専用の演算終了時の割り込み制御回路を設けたもの
である。
【0222】図19は、本発明の第7の実施の形態を示
すブロック図である。
【0223】図19中で、IntConは演算終了割り
込み制御回路であり、あらかじめMCUから出力される
割り込み設定信号Intsetにより、割り込みの準備
がなされている。コプロセッサより演算終了のタイミン
グ信号Coendが入力されると、CopConで設定
された演算モードの種類別に、割り込みに必要な割り込
み処理リクエスト信号、アクノリッジ信号、ベクター制
御信号等をIntsigとして、MCUとの間でやりと
りし、最後に割り込みの準備を解除して割り込み処理を
終了する。
【0224】なお、演算終了の割り込み要因は1つに固
定しても良いが、本コプロセッサは複数の演算モードを
有しているため、各演算モード毎の割り込みを行った方
が外部装置によるべき乗剰余演算への展開の仕方が容易
になるので、割り込み要因を複数に設定したほうが良
い。
【0225】Intconは、演算コントロール回路C
opConと同様にMCUのペリフェラル回路としてロ
ーカルメモリエリア等に割り付けてMCUの命令で直接
アクセスできるように構成でき、比較的に簡単な回路で
実現できる。
【0226】以上のように、第7の実施の形態によれ
ば、比較的に小規模な回路で、演算終了割り込み機能を
持った、外部インタフェイス付きの剰余演算コプロセッ
サ、あるいは剰余演算コプロセッサ内臓のMCUを構成
でき、しかもLSI化が可能となる。
【0227】(第8の実施形態)本コプロセッサ内での
剰余演算は、演算開始から終了までダイナミックに実行
されるため、外部装置と接続した際のシステム全体の演
算実行中の消費電流を抑えるために、演算実行時の外部
装置の動作を一時停止(以下、スリーぷと呼ぶ。)状態
にすると都合がよい。
【0228】本提案は、それを実現するために、専用の
外部装置スリープ制御回路とクロック制御回路を設けた
ものである。
【0229】図20は、第8の実施形態を示す図であ
り、第7の実施形態に、外部装置スリープ制御回路とク
ロック制御回路を付加したものである。
【0230】図20中で、SlpConはMCUスリー
プ制御回路であり、MCUからのスリープ設定信号Sl
psetを受けてスリープ信号Slpを発生させ、その
信号をクロック制御回路CLKConに送る。
【0231】CLKConは、通常は外部より入力され
たシステムクロックCLK信号をもとに、MCUに対し
てMCU原振クロックMCUCLKを供給しているが、
いったんSlp信号を受け取るとMCUへのMCUCL
Kの供給をやめるように働く。
【0232】演算終了時には、演算終了のタイミング信
号CoendがSlpConに入力されてSlp信号の
CLKConへの供給がなくなり、CLKConからM
CUに対してMCUCLKの供給を再開する。
【0233】なお、このスリープ機能は一般的には外部
装置のある端子への信号入力等でスリープ解除すること
が多く、この場合もそれを併用するようにSlpCon
を構成しても良い。
【0234】SlpConは、演算コントロール回路C
opConと同様にMCUのペリフェラル回路として、
ローカルメモリエリア等に割り付けてMCUの命令で直
接アクセスできるように構成でき、比較的に簡単な回路
で実現できる。
【0235】以上のように、第8の実施形態によれば、
比較的に小規模な回路で、外部装置スリープ機能を持っ
た、外部インターフェイス付きの剰余演算コプロセッ
サ、あるいは剰余演算コプロセッサ内蔵のMCUを構成
でき、システム全体の低消費電力化が実現して、しかも
LSI化が可能となる。
【0236】(第9の実施形態)本コプロセッサの用途
は、大規模で複雑な剰余演算を行う暗号アルゴリズム等
の、処理時間の高速性を問われる場合に使用することが
できる。従って、システムに供給される入力原振クロッ
クの周波数がいかなる場合であっても、演算時間は短い
ことが要求される。
【0237】そこで、逓倍速クロック制御回路を内蔵し
て演算速度の向上機能を付加する。
【0238】図21は、第9の実施の形態を示す図であ
り、第8の実施の形態のクロック制御回路をモディファ
イして逓倍速クロック制御回路を構成した場合の図であ
る。なお、第6、第7の実施の形態に逓倍速クロック制
御回路を別個に付加した場合でも構わない。
【0239】図21中、CLKCon2は、逓倍速クロ
ック制御回路を内蔵したクロック制御回路であり、MC
Uから逓倍速設定用の信号としてCkwsetが入力さ
れると逓倍速機能が働く。
【0240】逓倍速機能は、外部から供給される原振ク
ロックCLKに対して動作し、作成した逓倍速クロック
がMCUの原振クロックMCUCLK、あるいはコプロ
セッサの原振クロックCOPCLK、あるいはその両方
に出力させるように回路を構成しておく。そうすること
で、ユーザーにとっては、消費電流との兼ね合いから、
システムの上でバリエーションに富んだ選択ができるよ
うになる。
【0241】逓倍速機能の解除も、設定の場合と同様に
解除信号としてのCkwset信号を入力することによ
って、実現する。
【0242】逓倍速クロック制御回路は、演算コントロ
ールCopConと同様にMCUのペリフェラル回路と
してローカルメモリエリア等に割り付けてMCUの命令
で直接アクセスできるように構成でき、比較的に簡単な
回路で実現できる。
【0243】以上のように、第9の実施の形態によれ
ば、比較的に小規模な回路で、システムの逓倍速機能を
持った、外部インタフェイス付きの剰余演算コプロセッ
サ、あるいは剰余演算コプロセッサ内臓のMCUを構成
でき、システム全体の演算処理速度が向上して、しかも
LSI化が可能となる。
【0244】第1から第5の実施の形態で示した高速乗
加算器Mul/Addは、乗算器と加算器に分離した構
成としても良い。
【0245】第1から第5の実施の形態で示した高速乗
加算器Mul/Add、高速加算器Addは、一体化さ
れたものであっても良い。
【0246】第1から第5の実施の形態で示した高速乗
加算器Mul/Add、高速加算器Addは、市販のI
Cで構成しても良い。
【0247】第6から第9の実施の形態で示したコプロ
セッサは、第1から第5の実施の形態で示したコプロセ
ッサをもとにした記述をしているが、そのコプロセッサ
と同等の機能を持つ他のコプロセッサで構成しても良
い。
【0248】第1から第5の実施の形態で示した多ビッ
ト長乗算アルゴリズムは、一般的なもので説明している
が、説明の中で使用しているハードウエア構成で使用で
きる他の乗算アルゴリズム(例えば、BOOTH等)を
タイミング/コントロール回路で作り出して実現しても
良い。
【0249】第2から第5の実施の形態の説明では、”
0”検出回路ZeroCの使用例を演算値メモリの削減
を主な目的として記述しているが、ZeroCは例えば
単位乗算の乗算値あるいは被乗算値の内容が0であった
場合に、演算動作をオミットし演算結果の途中値を無条
件に0として次の演算に進むようにシーケンスを制御し
て、演算時間を短縮する目的にも使用できる。
【0250】第5の実施の形態では、被乗算値格納レジ
スタの個数を増やす記述をしているが、被乗算値格納レ
ジスタのビット長を大きくしてサイズを増やす場合も可
能である。
【0251】
【発明の効果】以上詳細に説明したように、本発明の代
表的なものによれば、べき乗剰余演算の解を求めるに際
し、予め用意されたモード信号を供給するのみで、各種
演算を実行することができる。
【図面の簡単な説明】
【図1】本発明におけるフローチャートを示す図であ
る。
【図2】暗号文の処理の具体例を説明する図である。
【図3】べき乗剰余演算の概略フローである。
【図4】本発明のハードウエアの概略を示すブロック図
である。
【図5】本発明の第1の実施の形態を示す図である。
【図6】単位乗加算を説明する図である。
【図7】本発明の第1の実施形態の動作を説明するハー
ドウエアイメージである。
【図8】本発明の第2の実施の形態を示す図である。
【図9】本発明の第3の実施の形態を示す図である。
【図10】本発明の第4の実施の形態を示す図である。
【図11】本発明の第4の実施形態の動作を説明するハ
ードウエアイメージである。
【図12】本発明の第4の実施形態の動作を説明する演
算例である。
【図13】本発明の第5の実施の形態を示す図である。
【図14】本発明の第5の実施形態の動作を説明するハ
ードウエアイメージである。
【図15】本発明の第5の実施形態の動作を説明するハ
ードウエアイメージである。
【図16】本発明の第5の実施形態の動作を説明するハ
ードウエアイメージである。
【図17】本発明の第5の実施形態の動作を説明する演
算例である。
【図18】本発明の第6の実施の形態を示す図である。
【図19】本発明の第7の実施の形態を示す図である。
【図20】本発明の第8の実施の形態を示す図である。
【図21】本発明の第9の実施の形態を示す図である。
【符号の説明】
T/C・・・タイミング/コントロール回路 Smem、N’mem、Nmem、Mmem、A’me
m、Wlmem、Whmem・・・演算値メモリ Mul/Add・・・高速乗加算器 Add・・・高速加算器 Xi−reg・・・乗算値格納レジスタ Yi−reg・・・被乗算値格納レジスタ Ai−reg・・・被加算値格納レジスタ RH・・・高速加算器Addが出力する値の上位の桁を
格納するレジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川▲崎▼ 清人 宮崎県児湯郡高鍋町大字南高鍋569番地3 合資会社川▲崎▼電機内

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 正の整数M、e、Nに関するMemod
    Nなるべき乗剰余演算を行うべき乗剰余演算回路におい
    て、 Nと素であり、かつNよりも大きい整数Rを用い、第1
    のモード信号に対応したタイミング制御信号に応答し
    て、A・A・R’modN(R’は、modN法下での
    Rのインバースである。)なる第1の演算を実行し、前
    記整数Rを用い、第2のモード信号に対応したタイミン
    グ制御信号に応答して、A・B・R’modNなる第2
    の演算を実行し、前記整数Rを用い、第3のモード信号
    に対応したタイミング制御信号に応答して、A・1・
    R’modNなる第3の演算を実行する演算部と、 前記第1ないし第3のモード信号を受信し、前記第1な
    いし第3のモード信号に対応した前記タイミング制御信
    号を前記演算部に出力するタイミング制御回路とを有す
    ることを特徴とするべき乗剰余演算回路。
  2. 【請求項2】 前記第1ないし第3の演算の結果の前記
    R未満の値が0であることを検出する検出回路を設けた
    ことを特徴とする請求項1記載のべき乗剰余演算回路。
  3. 【請求項3】 前記AもしくはBのビット長に応じて、
    前記タイミング制御回路を制御する演算ビット長選択回
    路を設けたことを特徴とする請求項1記載のべき乗剰余
    演算回路。
  4. 【請求項4】 前記演算部は、第4のモード信号に対応
    したタイミング制御信号に応答して、A・B+Cなる第
    4の演算を実行し、前記タイミング制御回路は、前記第
    4のモード信号を受信し、前記第4のモード信号に対応
    した前記タイミング制御信号を出力することを特徴とす
    る請求項1記載のべき乗剰余演算回路。
  5. 【請求項5】 前記演算における乗算値を格納する乗算
    値格納部と、 前記演算における被乗算値を格納する複数個の被乗算値
    格納部と、 複数の前記被乗算値格納部のいずれかの出力を選択して
    前記演算部に出力する選択回路と、 前記複数個の被乗算値格納部に各々対応して設けられ、
    前記演算部の出力のうちの上位桁もしくは下位桁のいず
    れか一方を格納する複数個の演算結果格納部とを設けた
    ことを特徴とする請求項1記載のべき乗剰余演算回路。
  6. 【請求項6】 請求項1記載のべき乗剰余演算回路と外
    部装置との間に設けられ、前記外部装置の命令に応じて
    前記演算部の動作を制御する演算コントロール回路を設
    けたことを特徴とするべき乗剰余演算システム。
  7. 【請求項7】 前記第1、第2もしくは第3の演算のい
    ずれかが終了したことを検出して、前記外部装置に割り
    込み要求信号を出力する割り込み制御回路を設けたこと
    を特徴とする請求項6記載のべき乗剰余演算システム。
  8. 【請求項8】 前記第1、第2もしくは第3の演算のい
    ずれかが実行中であることを検出して、スリープ信号を
    出力するスリープ制御回路と、 前記スリープ信号を受信している間、クロック信号を前
    記外部装置に供給するクロック制御回路とを設けたこと
    を特徴とする請求項6記載のべき乗剰余演算システム。
  9. 【請求項9】 第1のクロック信号を受信して、該第1
    のクロック信号を逓倍した第2のクロック信号を前記外
    部装置もしくは前記演算部に供給する逓倍速クロック制
    御回路を設けたことを特徴とする請求項6記載のべき乗
    剰余演算システム。
  10. 【請求項10】 正の整数M、e、Nに関するMemo
    dNなるべき乗剰余演算を、Nと素であり、かつNより
    も大きい整数Rを用いて実行するべき乗剰余演算の演算
    方法であって、乗算値を格納する乗算値格納部及び被乗
    算値を格納する被乗算値格納部とを有し、前記乗算値格
    納部に格納された乗算値と、前記被乗算値格納部に格納
    された被乗算値とを乗算した結果に対してR’modN
    (R’は、modN法下でのRのインバースである。)
    を実行する演算回路を使用して、前記べき乗剰余演算の
    ための演算方法において、 前記乗算値格納部及び前記被乗算値格納部にRmodN
    を与えることにより第1の演算結果を得る第1の演算ス
    テップと、 前記乗算値格納部に前記第1の演算結果を与え、前記被
    乗算値格納部にR2modNとMとを乗算した演算結果
    を与えることにより第2の演算結果を得る第2の演算ス
    テップと、 前記乗算値格納部に前記第1の演算結果もしくは前記第
    2の演算結果を与え、前記被乗算値格納部に1を与える
    ことにより第3の演算結果を得る第3の演算ステップと
    を有し、 前記第1ないし第3の各演算ステップにおける演算は、
    前記第1ないし第3の各演算結果をXとして、 m=(XmodR)・N’modRなる第4の演算
    (N’は、modN法下でのNのインバースである。)
    を実行する第4の演算ステップと、その後、 t=(X+m・N)/Rなる第5の演算を実行する第5
    の演算ステップとを含むことを特徴とするべき乗剰余演
    算のための演算方法。
  11. 【請求項11】 前記第4の演算は、XのR未満の値と
    N’とを乗算し、この乗算結果のR未満の値をmとする
    ステップからなり、 前記第5の演算は、XのR未満の値が全て0であること
    を検出した時には、このXのR以上の値をtとし、Xの
    R未満の値が少なくとも1を含むことを検出した時に
    は、(XのR以上の値+m・NのR以上の値)+1をt
    とするステップからなることを特徴とする請求項10記
    載の演算方法。
  12. 【請求項12】 前記第5の演算ステップはさらに、R
    ≦tの関係を検出した時はt−N実行することを特徴と
    する請求項10記載の演算方法。
JP11005796A 1996-04-05 1996-04-05 べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 Expired - Fee Related JP3525209B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP11005796A JP3525209B2 (ja) 1996-04-05 1996-04-05 べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
EP97105465A EP0801345B1 (en) 1996-04-05 1997-04-02 Circuit for modulo multiplication and exponentiation arithmetic
DE69716331T DE69716331T2 (de) 1996-04-05 1997-04-02 Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik
US08/833,002 US5982900A (en) 1996-04-05 1997-04-04 Circuit and system for modulo exponentiation arithmetic and arithmetic method of performing modulo exponentiation arithmetic
CNB971102899A CN1148643C (zh) 1996-04-05 1997-04-07 模幂运算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11005796A JP3525209B2 (ja) 1996-04-05 1996-04-05 べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法

Publications (2)

Publication Number Publication Date
JPH09274560A true JPH09274560A (ja) 1997-10-21
JP3525209B2 JP3525209B2 (ja) 2004-05-10

Family

ID=14526000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11005796A Expired - Fee Related JP3525209B2 (ja) 1996-04-05 1996-04-05 べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法

Country Status (5)

Country Link
US (1) US5982900A (ja)
EP (1) EP0801345B1 (ja)
JP (1) JP3525209B2 (ja)
CN (1) CN1148643C (ja)
DE (1) DE69716331T2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080110B2 (en) 2000-12-19 2006-07-18 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements
US7480691B2 (en) 2003-02-24 2009-01-20 Fujitsu Limited Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
JP2010044398A (ja) * 1999-04-07 2010-02-25 Panasonic Corp 多倍長演算装置
JP2010164721A (ja) * 2009-01-15 2010-07-29 Sharp Corp モンゴメリ乗算のための演算回路及び暗号回路
US7870395B2 (en) 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US7890559B2 (en) 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
CN114840175A (zh) * 2022-06-30 2022-08-02 中科声龙科技发展(北京)有限公司 一种实现取余运算的装置、方法及运算芯片

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105005A (en) * 1997-09-15 2000-08-15 Merrill Lynch & Co., Inc. System for enhanced financial trading support
US6557020B1 (en) * 1997-12-10 2003-04-29 Seiko Epson Corporation Information processing system, enciphering/deciphering system, system LSI, and electronic apparatus
US7587044B2 (en) 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
DE69930334T2 (de) 1998-01-28 2006-11-09 Hitachi, Ltd. IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung
EP2031792B1 (en) * 1998-06-03 2013-01-09 Cryptography Research Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
IL139935A (en) 1998-06-03 2005-06-19 Cryptography Res Inc Des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
ATE360866T1 (de) 1998-07-02 2007-05-15 Cryptography Res Inc Leckresistente aktualisierung eines indexierten kryptographischen schlüssels
FR2799851B1 (fr) * 1999-10-14 2002-01-25 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
US6879689B2 (en) * 2000-05-09 2005-04-12 Verizon Laboratories Inc. Stream-cipher method and apparatus
US7031943B1 (en) 2000-05-10 2006-04-18 Cisco Technology, Inc. Digital license agreement
CA2330166A1 (en) * 2000-12-29 2002-06-29 Nortel Networks Limited Data encryption using stateless confusion generators
DE10107376A1 (de) * 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
JP3950638B2 (ja) 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
DE10111987A1 (de) * 2001-03-13 2002-09-26 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
US20020184208A1 (en) * 2001-04-24 2002-12-05 Saul Kato System and method for dynamically generating content on a portable computing device
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US7027597B1 (en) 2001-09-18 2006-04-11 Cisco Technologies, Inc. Pre-computation and dual-pass modular arithmetic operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7027598B1 (en) 2001-09-19 2006-04-11 Cisco Technology, Inc. Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7191333B1 (en) 2001-10-25 2007-03-13 Cisco Technology, Inc. Method and apparatus for calculating a multiplicative inverse of an element of a prime field
US7451326B2 (en) * 2002-08-26 2008-11-11 Mosaid Technologies, Inc. Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies
US7386705B2 (en) 2002-08-27 2008-06-10 Mosaid Technologies Inc. Method for allocating processor resources and system for encrypting data
US7647277B1 (en) 2002-10-25 2010-01-12 Time Warner Inc. Regulating access to content using a multitiered rule base
US20040250121A1 (en) * 2003-05-06 2004-12-09 Keith Millar Assessing security of information technology
ATE479142T1 (de) * 2003-10-14 2010-09-15 Panasonic Corp Datenumsetzer
JP4662802B2 (ja) 2005-03-30 2011-03-30 富士通株式会社 計算方法、計算装置及びコンピュータプログラム
CN100435091C (zh) * 2006-03-01 2008-11-19 成都卫士通信息产业股份有限公司 大数模幂系统的硬件高基实现方法
US7849125B2 (en) 2006-07-07 2010-12-07 Via Telecom Co., Ltd Efficient computation of the modulo operation based on divisor (2n-1)
US8005210B2 (en) * 2007-06-30 2011-08-23 Intel Corporation Modulus scaling for elliptic-curve cryptography
JP5407352B2 (ja) * 2009-01-19 2014-02-05 富士通株式会社 復号処理装置、復号処理プログラム、復号処理方法
EP2564364A1 (en) 2010-04-30 2013-03-06 Now Technologies (IP) Limited Content management apparatus
US8626811B2 (en) * 2010-04-30 2014-01-07 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
WO2012090289A1 (ja) * 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置および方法
FR2972064B1 (fr) * 2011-02-25 2013-03-15 Inside Secure Procede de cryptographie comprenant une operation d'exponentiation
EP2523385B1 (en) * 2011-05-05 2017-07-12 Proton World International N.V. Method and circuit for cryptographic operation
DE102012005427A1 (de) * 2012-03-16 2013-09-19 Giesecke & Devrient Gmbh Verfahren und System zur gesicherten Kommunikation zwischen einen RFID-Tag und einem Lesegerät
CN107688466B (zh) * 2016-08-05 2020-11-03 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
FR3076925B1 (fr) 2018-01-16 2020-01-24 Proton World International N.V. Fonction cryptographique
WO2019191040A1 (en) * 2018-03-28 2019-10-03 Cryptography Research, Inc. Using cryptographic blinding for efficient use of montgomery multiplication
WO2023141934A1 (en) * 2022-01-28 2023-08-03 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations
WO2023141933A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for efficient modular division and inversion

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101431A (en) * 1990-12-14 1992-03-31 Bell Communications Research, Inc. Systolic array for modular multiplication
IL97413A (en) * 1991-03-04 1995-06-29 Fortress U & T 2000 Ltd Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
ATE183315T1 (de) * 1991-09-05 1999-08-15 Canon Kk Verfahren und gerät zum verschlüsseln und entschlüsseln von kommunikationsdaten
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
EP0577000B1 (en) * 1992-06-29 1998-09-02 THOMSON multimedia Method for performing public-key cryptography
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
DE69434422T2 (de) * 1993-11-30 2006-04-20 Canon K.K. Verfahren und Anordnung zur Verschlüsselung/Entschlüsselung auf der Basis des Montgomery-Verfahrens unter Verwendung von effizienter modularer Multiplikation
FR2726667B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
US5724279A (en) * 1995-08-25 1998-03-03 Microsoft Corporation Computer-implemented method and computer for performing modular reduction

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044398A (ja) * 1999-04-07 2010-02-25 Panasonic Corp 多倍長演算装置
US7080110B2 (en) 2000-12-19 2006-07-18 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements
US7480691B2 (en) 2003-02-24 2009-01-20 Fujitsu Limited Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
US7870395B2 (en) 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
US7890559B2 (en) 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
JP2010164721A (ja) * 2009-01-15 2010-07-29 Sharp Corp モンゴメリ乗算のための演算回路及び暗号回路
CN114840175A (zh) * 2022-06-30 2022-08-02 中科声龙科技发展(北京)有限公司 一种实现取余运算的装置、方法及运算芯片
CN114840175B (zh) * 2022-06-30 2022-09-13 中科声龙科技发展(北京)有限公司 一种实现取余运算的装置、方法及运算芯片

Also Published As

Publication number Publication date
JP3525209B2 (ja) 2004-05-10
DE69716331T2 (de) 2003-06-18
DE69716331D1 (de) 2002-11-21
EP0801345A1 (en) 1997-10-15
CN1172390A (zh) 1998-02-04
US5982900A (en) 1999-11-09
CN1148643C (zh) 2004-05-05
EP0801345B1 (en) 2002-10-16

Similar Documents

Publication Publication Date Title
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
JP4955182B2 (ja) 整数の計算フィールド範囲の拡張
EP1293891B2 (en) Arithmetic processor accomodating different finite field size
US6085210A (en) High-speed modular exponentiator and multiplier
JP3636740B2 (ja) モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法
US6434585B2 (en) Computationally efficient modular multiplication method and apparatus
US6671709B2 (en) Multiplier cell and method of computing
JP4201980B2 (ja) マルチプレシジョン整数演算用の装置
US7206410B2 (en) Circuit for the inner or scalar product computation in Galois fields
US8078661B2 (en) Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
EP1217512B1 (en) Arithmetic circuit and arithmetic method
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
US20030037087A1 (en) Apparatus and method for efficient modular exponentiation
KR20040060445A (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
JPH08101779A (ja) 有限領域におけるモジュラ計算用の電子回路
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
JP2000353077A (ja) 多倍長演算装置
EP1818810B1 (en) Circuit and method for multiplying long integer values
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
JP2000207387A (ja) 演算装置及び暗号処理装置
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
KR20000009759A (ko) 모듈러 곱셈기
JP3912972B2 (ja) データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
JP3137599B2 (ja) BのC乗のnを法とした剰余を計算する回路
Großschädl A new serial/parallel architecture for a low power modular multiplier

Legal Events

Date Code Title Description
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: 20040113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040129

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: 20090227

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090227

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100227

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100227

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100227

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110227

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120227

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120227

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130227

Year of fee payment: 9

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees