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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/723—Modular exponentiation
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
意されたモード信号を供給するのみで、各種演算を実行
する。 【解決手段】 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
ク、交通、金融、医療、流通等の分野において使用され
る情報の暗号化技術及び復号化技術に関するものであ
り、特にこれらの情報の暗号化及び復号化を実現するた
めのべき乗剰余演算回路及びそのシステム及びべき乗剰
余演算のための演算方法に関するものである。
ワーク上のセキュリティーの確保(データの盗用や破壊
を防止する)が重要視されるようになってきている。そ
のために、情報の暗号化技術及び復号化技術が、情報通
信分野にとどまらず、交通、金融、医療、流通等の身近
な分野で使用されつつある。従って、この種の暗号化技
術及び復号化技術は、高度なセキュリティーが単純な原
理によって実現できることが要求される。まず、この種
の技術の理解を容易にするため、情報の暗号化・復号化
についての概略を説明する。
ズム”が質的に優れている。非対象暗号アルゴリズムと
は、暗号化鍵と復号化鍵が異なっており、そのいずれか
一方から他方が”容易に計算できない”暗号アルゴリズ
ムをいう。
のに、べき乗剰余演算を用いるタイプのRSA暗号、エ
ルガマル暗号、ラビン暗号、ウイリアムス暗号等があ
る。そして、暗号アルゴリズムを応用する上では、”デ
ィジタル署名”のシステムがあり、現在その標準化の動
きがある。その対象となっている代表的なものは、RS
A署名法、エルガマル署名法、シュノア署名法、DSA
(Digital Sigunature Algorithm)署名法等であり、こ
れらは全て長いビット長のべき乗剰余演算を使用するタ
イプのものである。従って、これらのディジタル署名の
システムを実現する上では、長いビット長のべき乗剰余
演算を短時間で終了することのできる演算器の開発が必
要不可欠である。
号、ラビン暗号、ウイリアムス暗号等は、次式(1)の
べき乗剰余演算の形式が基本として使用される。式
(1)は、XYをNで割った時の余りを求めることを意
味する。また、式(1)において、Xは暗号化(復号
化)の対象となる平文、Y及びNは暗号化(復号化)の
ための鍵(キー)である。
及び復号化が容易に実行され、かつX、Y、Nのオペラ
ンドビット長を長くすることで、各鍵の解読を困難にす
ることができる。
と、べき乗剰余演算に長時間を要することになる。そこ
で、オペランドビット長が長いべき乗剰余演算をいかに
短時間に終了させるかがポイントとなる。
演算を使用した実際の暗号化・復号化、その使われ方を
以下に説明する。
文、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は秘密鍵である。
ゴリズム上のべき乗剰余演算の数値の条件を定義してお
り、式(4)は、nは互いに素な大きな素数pとqとの
積であることを示している。今、pとqはともに奇数な
ので、当然nは奇数でなければならない。次に式(5)
は、式(4)で示したp及びqの1だけ小さい値同士の
最小公倍数でeとdとの積e・dを割ったときの余りが
1になることを示している。
き、平文Mは式(2)を用いて暗号化され、また暗号化
された平文M(暗号文C)は式(3)を用いて復号化さ
れる。
Cに暗号化して送信し、受信者Bは暗号文Cを平文Mに
復号化する。」という伝達(ディジタル署名あり)を行
った場合の、発信者A及び受信者Bが行う処理方法を図
2を用いて説明する。
変形し、署名文CAを作成する。(署名) CA≡MAdAmodnA・・・(6) ・Bの公開鍵eBを使って、暗号化署名文cAを作成す
る。(暗号化) cA≡CAeBmodnB・・・(7) ・cAをBへ送信する。
て変形する。(復号化) cAdBmodnB≡(CAeBmodnB)dBmodnB・・・(8) ここで、CAeB=Xとおくと、式(8)は、 (CAeBmodnB)dBmodnB=(XmodnB)dBmodnB・・(9 ) と変形できる。
おく、すなわち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としたので、元に戻すと、 =(CAeB)dBmodnB・・・(14) が得られる。
足するので、ある整数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) が成立する。
Aを作成する。(署名認証) 上記した復号化処理と同様にして計算すると、 が導き出される。
(5)のような条件下で決定し、式(1)のようなべき
乗剰余演算の形式を基本として使用することにより、平
文を暗号化しまた暗号化された平文を復号化することが
できる。
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が復号化されたことが確認され
た。
演算方法を説明する。
数eの2進数展開をe=ek-1・・・e1e0として、以
下のフロー1に示す反復平方積法を使用して実行され
る。
と、図3のようになる。
次に、Aレジスタに格納された値を乗算してA×Aを求
め、このA×AをNで除算して余りを求め、この値をレ
ジスタaに格納する。次に、レジスタaに格納された値
をレジスタAに格納する。このとき、もし指数eが1な
らば、レジスタAに格納された値と平文Mを乗算した後
Nで除算して余りを求め、この値をレジスタaに格納す
る。そして、このレジスタaの内容を再度レジスタAに
格納する。もし、指数eが0ならば、以上の計算は行わ
ずに、レジスタAに格納された値には何も施さない。こ
の演算をeの最上位ビットから最下位ビットまで繰り返
し行い、最終的にレジスタAに格納された値が、求めた
いべき乗剰余演算の解になる。
(17)に示すように乗算と除算(mod算)である。
乗算は、初期値を1とするAの値に対してA×Aあるい
はA×Mを行う部分であり、除算は、各々の乗算で得ら
れた値に対してmodNを行う部分である。この”乗算
と除算”(A×AmodN、A×MmodN)を一対の
演算として、”e”のビット値に従って繰り返す。つま
り、”e”の最上位ビットから最下位ビットまでの各ビ
ットの内容によって”乗算と除算”を行うのである。
本となる剰余演算(mod算)を繰り返し行うことで解
を得ることができることを示したが、この繰り返し回数
自体は、たかだか数百〜数千回であるので、ソフト的な
処理でも充分に対応できる。しかしながら、この剰余演
算自体すなわち除算を実行するためには、大規模な演算
回路と複雑な処理手順が必要とされるため改善が望まれ
ていた。
は、正の整数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のモード
信号に対応した前記タイミング制御信号を前記演算部に
出力するタイミング制御回路とを設けたものである。
余演算(mod算)を実行する手順が非常に複雑である
ため、演算回路が大規模化してしまうことを前述した。
そこで、Montgomery(モンゴメリー)は、剰余演算(m
od算)を先のような一般的な方法で行わずに、”乗
算”と簡単なビット列処理を行うことによって、剰余演
算の解を得る仕組みを提案している。本発明は、基本的
にこのモンゴメリーが提案している仕組みを利用して演
算を行うものであるので、以下にモンゴメリーが提案し
ている手法について簡単に説明するが、各演算におい
て、演算時間を短縮するための工夫は、本願特有のもの
であることを述べておく。
少しだけ大きい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)の解である。
乗算と、Rを用いた除算で構成されている。R=2nと
いう定義なので、Rを用いた除算は、被除算値の2n以
上の値が商、2n未満の値が余りを示す。従って、式
(19)におけるmod算においては、基本的に2n未
満の値を見るだけでよく、式(20)における除算にお
いては、基本的に2n以上の値を見るだけでよい。つま
り、実質的に除算(剰余演算)を行うことなく乗算と加
算のみで剰余演算の解を求めることができる。
係を式(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で割り切れるこ
とを意味する。
算”との和であるから、 (X+m・N)modN≡XmodN+m・NmodN ≡XmodN よって、式(20)より、 t・RmodN≡XmodN この両辺をR’倍すると、 t・R・R’modN≡tmodN≡X・R’modN となる。
が、modNあるいはmodRを計算した後の乗算値で
あるならば、(Xが、modNあるいはmodRを計算
した後の乗算値であることは後に説明する。) X<N・N<R・N<R・R mはmodRを実行した結果であるから、m<Rであ
る。よって、m・N<R・Nとなる。
N+R・N=2R・Nである。従って、 t=(X+m・N)/R<2N t<2N が成立する。
両辺からNを引くと、 t−N<N となり、この式からt−Nは、modNを施した値とな
ることがわかる。
/Rの計算と、tの計算終了について補足する。
例えば、R=2576とすると、X+m・Nの576ビッ
ト未満の値は全て0である。従って、式(20)のtの
計算は次の2通りに分けられる。
になる。
ので、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 の計算で解が得られる。
m=0となる。m=0ならば式(20)の計算は、t=
X/Rで良いことになる。ここで、tは必ず整数値が得
られるので、 t=(X値のR以上の値) の計算で解が得られる。
値のR未満の値が0か否かで判別できる。このことは、
tの計算においてX値の全ビット長分を計算する必要が
なく、計算量の縮小と計算時間の短縮が図れることを意
味する。
関数の演算結果tは0<t<2Nの範囲内の値となり、
N<tの時再度t−Nの計算を行わなければならないこ
とをフロー2で示した。しかし、べき乗剰余演算の途中
で行われたREDC(X)関数の演算結果tについて
は、N<tの関係にあってもt<Rの範囲であれば、そ
のまま後の演算に進んでも構わない。なぜなら、後のm
od算でここで取り残されたN値を除去するからであ
る。
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算を行う。
ていることを意味する。また、M1をべき乗剰余演算の
A・MmodNにて計算しても同様である。モンゴメリ
手法下でも同様のことが言える。
説明する。
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”の演算を継続して
行なうことができる。
表せる。このことは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の計算を行なった場合と同じ結
果となる。
=199の時のM’(X)=X・R’modNの計算。
N’=1の関係からR’=7、N’=9。従って、M’
(X)=44123×7mod199=13=0DH と
なる筈である。ここでREDC(X)関数を使用して上
記解を得る。
0H,N=199=C7H,N’=9Hより、 (REDC(X)関数) m=(XmodR)・N’modR=5BH×9Hmod
R=333HmodR=33H t=(X+m・N)/R=(AC5BH+33H×C
7H)/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
7H)/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
7H)/R=BC00H/R=BC H 上式1、2の計算結果は、アンダーラインように同値と
なる。
要である。つまり、Nの最上位ビットをbit(n-1)とする
とき、得られたtのbit(n)が1の時t−Nを行い、0の
時は後の演算に進むようにすれば良い。
剰余演算の場合は、R=2576にする。そのとき、式
(20)の計算結果が576ビット長を越えた場合(5
76ビットの桁あふれが生じた場合)が、t≧Rを示
す。また、その場合のt−Nの計算は、 t−N=(t値の下位576ビットの値)+(Nのイン
バース値)+1 で求める。暗号アルゴリズムの世界でのNの値は奇数で
あるから、Nのインバース値+1は、Nのインバースを
求めてその最下位ビットを1にする操作で得られる。
算を実行するためのREDC関数は、モンゴメリー演算
の解を得ているにすぎない。すなわち、式(18)に示
すように、計算を容易にするためR’という特有の数値
を使用している。そもそも求めたいのは、R’を含まな
い乗算modN形式を使用した式の解であるので、フロ
ー2で示すモンゴメリ演算の解を、何がしかの操作で
R’を含まない数値に戻す必要がある。
して、モンゴメリ演算特有の上記R’という値を相殺し
た。
て、Xが(X・R)であるとき、 M’(X・R)=(X・R)R’modN=XmodN Xが(X・RmodN)であるとき、 M’(X・RmodN)=(X・RmodN)R’mo
dN=XmodN となる。
形のものにモンゴメリ演算を適用すると、モンゴメリ演
算特有のR’が除去されて、?modNの形になる。
復平方積法を使用した、べき乗剰余演算に応用すれば、
フロー3で示すように、べき乗剰余演算の解が得られ
る。正確には、フロー3で示す式(24)(25)(2
6)のmodN算の各々において、フロー2を実行する
ことにより、各式(24)(25)(26)における解
が容易に得られ、結果としてフロー3を使用した、べき
乗剰余演算の解が容易に得られる。
において、レジスタAに格納する初期値を1とせず、後
のモンゴメリ演算を考慮してRmodN(1・Rmod
N)を格納している点、上記式(25)において、前記
式(17)のMの代わりにM・RmodNの値を用いて
いる点及び上記式(26)を新たに行う点である。レジ
スタAにあらかじめRmodNを格納しておくことによ
り、式(24)(25)(26)におけるR’が除去さ
れるのである。そして、フロー3の反復平方積法をフロ
ーチャートで表現すると、図1のようになる。
あらかじめ必要とされるRmodN、M・RmodN、
N’を求めておかなければならない。
いられるべき乗剰余演算においては、”N”の最上位ビ
ットbn-1と最下位ビットb0は1である。従って、その
ときのRは、2nに選ばれる。よって、RmodN=R
−Nとなる。このR−Nは、Nのインバースを求めて、
その最下位ビットを1にすることで容易に求められる。
R・R’−N・N’=1、0<R’、N’<Rの関係よ
り、 R’<N’、N’−R<R−N なる関係を導くことができる。
満足するように、N値に対応するN’値を決定する。す
なわち、N’値は運用者から与えられるものである。
2modNの値を求めておくと、モンゴメリ演算を使用
した以下の計算 M・(R2modN)・R’modN≡M・R2・R’modN ≡M・RmodN により、M・RmodNを求めることができる。
N)modN=A とすると、このAを初期値として以下のフロー4を実行
するとR2modNの解を求めることができる。
である。
た後、この乗算結果をフロー2におけるXとして、フロ
ー2を実行することにより、求めたいM・RmodNが
得られる。
N及びN’を使用した乗算と、Rを用いた除算で構成さ
れている。従って、この解は、実質的に除算(剰余演
算)を行うことなく乗算と加算のみで求めることができ
る。
かじめ必要とされるRmodN、M・RmodN、N’
の値が用意できた。
値としてレジスタA(レジスタは、例えばメモリであっ
ても良い。以下同様である。)に格納する。そして、あ
らかじめ求めたM・RmodNをレジスタBに格納す
る。M・RmodNをレジスタBに格納する理由は、後
の処理で使用する式(25)中のM・RmodNを確保
しておくためである。
ンゴメリ演算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に格納する。
タAに格納する。
し、ビットが1ならば式(25)を実行する。すなわち
モンゴメリ演算A・B・R’modNを実行する。式
(25)は、前述したようにフロー2を実行することに
より得られる。今、レジスタAに格納された値とレジス
タBに格納された値との積が式(19)におけるXとし
て計算され、mが求められる。次に、求められたmを用
いて、式(20)を実行する。今、レジスタAに格納さ
れた値とレジスタBに格納された値との積が式(20)
におけるXとして計算され、tが求められる。そしてこ
の演算結果をレジスタaに格納する。そして、レジスタ
aに格納された演算結果をレジスタAに格納する。
の演算を行わずに次のステップに進む。
の演算(式(24)(25)の実行)を行ったかどうか
判定し、行っていないのであれば式(24)を実行する
ステップに戻り、行ったのであれば次に式(26)を実
行する。式(26)は、前述したようにフロー2を実行
することにより得られる。今、レジスタAに格納された
値が式(19)におけるXとして計算され、mが求めら
れる。次に、求められたmを用いて、式(20)を実行
する。今、レジスタAに格納された値が式(20)にお
けるXとして計算され、tが求められる。そして、以上
の一連の動作が終了する。
めると以下のようになる。
返し。) ↓ 3、A・AmodN、A・MmodNの計算は、除算が複雑なためモン
ゴメリ手法に置き換える。(モンゴメリ手法:M’
(X)=X・R’modN) ↓ 4、M’(X)=X・R’modNは、REDC(X)
関数をしようして実現できる。(REDC関数:mod
Nの演算をmodRの形に変換するもの。これにより除
算の複雑性を回避できる。) 次に、本発明を実際に実現するためのハードウエアにつ
いて、図面を使用して以下に説明する。
ロック図を図4に示す。
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の出力を演算部に転送する。
されている。この演算部419は、乗算とREDC
(X)関数を実行する。
ドウエアの詳細について、図面を使用して以下に説明す
る。
に示したモンゴメリ演算手法における、 A2・R’modN・・・(24)、A・B・R’modN・・・(25) (Bは、式(25)における”M・RmodN”が位置
する部分に相当する。)の2種の演算を、指数”e”の
ビット値の内容に従って、規定の手順で繰り返し最後
に、 A・1・R’modN・・・(26) の演算を行えば良いことは、図1及びフロー3で述べた
とおりである。
演算器(以下、コプロセサと称す。)を用意すれば、そ
のコプロセッサを用いて(演算の繰り返し手順等は、ソ
フトウエアあるいはハードウエアのいずれの制御方法で
実現しても良い。)、べき乗剰余演算の解を得ることが
できる。
わち3つの演算モードを有するコプロセッサに関するも
のである。
演算コプロセッサを示す図である。
太い矢印は、データが転送されるバスを示す。
セッサ全体の演算タイミング及び演算器内の各種回路に
対して、上記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を有する。
i−reg、被乗算値格納レジスタYi−reg、被加
算値格納レジスタAi−regは、各演算値メモリから
読み出された、高速乗加算器Mul/Addの入力ビッ
ト長分に対応した値を一時格納する機能を有する。
の際の入力値として、レジスタXi−regの出力値
と、レジスタYi−regの出力値を入力し、加算動作
の際の入力値として、レジスタAi−regの出力値を
入力する、特定ビット長の乗加算器である。そして、そ
の出力は、次段の高速加算器Addの加算入力値とな
る。
/Addの出力値と、レジスタRHの出力値との加算動
作を行う、特定ビット長の加算器である。そして、この
高速加算器Addの出力のうち、上位桁はレジスタRH
もしくは各演算値メモリに向けて出力され、下位桁は各
演算値メモリに向けて出力される。
明する。
現の方法〕Aの値を演算値メモリA’mem、Wlme
mの双方に格納し、モンゴメリ法化におけるN’の値を
演算値メモリN’memに格納し、Nの値を演算値メモ
リNmemに格納する。N及びN’の値は、暗号化/復
号化のための鍵であるので、データの送信者/受信者に
対して暗号システム運用者により決定されている。Rの
値は、Nの値から自ずと決定される。Aの値は、前述し
たように、RmodNを実行することで決定される。
/Cに対して、モード1信号を供給することにより、以
下のように上記A2・R’modN・・・(24)が実
行される。
Mul/Addの入力ビット長分に対応した値が、レジ
スタXi−regに取り込まれる。同様に、演算値メモ
リWlmemから高速乗加算器Mul/Addの入力ビ
ット長分に対応した値が、レジスタYi−regに取り
込まれる。
に、演算値のビット長(例えば16ビット)が高速乗加
算器Mul/Addの乗算入力処理ビット長(例えば4
ビット)を越えているとき、演算値のビット長に対応し
た演算の回数分(4×4=16回)だけ単位乗加算を繰
り返すことになる。
詳細に表現すると図7のようになる。
アドレス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に格納されることを意味す
る。
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に格納され
る。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納され
る。
は、演算値メモリ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に格納
される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
乗加算に習って、図7のごとく実行される。そして、A
×Aすなわち、演算値メモリA’memにに格納された
値と演算値メモリWlmemに格納された値とを乗算し
たときの値が、Whmem−Wlmem(”−”は、引
き算を示すものではない。)の形で格納される。
H×F5H=6572Hを例にとると、計算結果657
2Hについて、上位桁65Hを演算値メモリWhmem
に、下位桁72Hを演算値メモリWlmemにそれぞれ
格納する。
リ手法を用いた剰余演算を実行する。モンゴメリ手法に
おいて、オペランド長nビットのべき乗剰余演算を実行
するとき、R=2nとすることは前述した通りである。
そして、この関係でのnビット長のR’、N’の値は存
在する。そして、A×Aの値は、Whmem−Wlme
mの形で格納されているので、mの計算は以下のように
なる。
すので、R以下の値を見ればよいので、 =(Wlmem)・(N’mem)modR となる。
em)をRで割った余りを示すので、(Wlmem)・
(N’mem)を実行した結果の下位nビットの値がm
となる。
m)の計算を、上述のA×Aの計算に習って実行し、そ
の結果をA’mem−Mmemの形で、演算値メモリ
A’memと演算値メモリMmemの双方に格納したと
きの、演算値メモリMmemに格納された値がmであ
る。
m)の計算を先のA×Aに習って実行し、その結果を
A’mem−Mmemの形で、演算値メモリA’mem
と演算値メモリMmemの双方に格納する。続いて、 Mmem×1+Wlmem・・・(27) (下位桁の足し算) A’mem×1+Whmem・・・(28) (上位桁の足し算) の計算を実行する。このときの式(28)が求めるtで
ある。
(27)の計算結果0となるので、メモリに格納する必
要はない。なお、式(27)の計算では、桁あふれが発
生する場合が考えられるが、そのときには、式(28)
の計算の際に、図5に示した高速乗加算器Mul/Ad
dの+1端子に、1を供給する。これらの計算は、本コ
プロセッサを用いれば容易に実行することができるのは
明かである。
A’memとMmemの双方に格納する。また、桁あふ
れが発生した場合は、キャリーフラグCFに1を書き込
む。
t>Nの関係にあることは明かであるから、t−Nの計
算を行う必要がある。これは、 〔(反転Nmem+1)×1〕+Wlmem・・・(29) の計算を行って求める。反転Nmemは、Nmemに格
納された値のインバースを意味する。
ているNの値は、暗号アルごリズムの世界では奇数であ
るから、式(29)の(反転Nmem+1)は”Nme
mの1の補数をとり、最下位ビットを1とする”ことで
求められる。この動作は、図5に示すレジスタXi−r
egのInv端子に1を供給する(レジスタXi−re
gに格納された値の1の補数をとる。)ことで実現され
る。
実現の方法〕Aの値を演算値メモリWlmemに、Bの
値を演算値メモリSmemに格納し、モンゴメリ法化に
おけるN’の値を演算値メモリN’memに格納し、N
の値を演算値メモリNmemに格納する。
/Cに対して、モード2信号を供給することにより、以
下のように上記A・B・R’modN・・・(25)が
実行される。
ul/Addの入力ビット長分に対応した値が、レジス
タXi−regに取り込まれる。同様に、演算値メモリ
Wlmemから高速乗加算器Mul/Addの入力ビッ
ト長分に対応した値が、レジスタYi−regに取り込
まれる。
gへの値の取り込み元が演算値メモリSmemに変わる
だけで、前述のA×Aの計算と同様である。
リ手法を用いた剰余演算を実行する。
り、計算結果は、演算値メモリA’memとWlmem
の双方に格納される。
と式(25)を繰り返し計算することになる。しかし、
以上説明した各計算の実現方法を用いれば、式(24)
(25)の計算結果は、ともに演算値メモリA’mem
とWlmemの双方に格納されるため、各々の式の計算
の開始時に、演算値の初期設定等を行う必要がないの
で、繰り返し計算をスムーズに行うことができる。
の方法〕Aの値を演算値メモリWlmemに格納し、モ
ンゴメリ法化におけるN’の値を演算値メモリN’me
mに格納し、Nの値を演算値メモリNmemに格納す
る。
/Cに対して、モード3信号を供給することにより、以
下のように上記A・R’modN・・・(26)が実行
される。
る必要がない。従って、モンゴメリ手法を用いた剰余演
算のみを実行する。
Aの場合とほぼ同様であり、計算結果は、A’mem−
Wlmemの形で、演算値メモリA’memとWlme
mの双方に格納したときの演算値メモリWlmemの値
がmの値となる。
値はない(0と考えてよい)ので、式(24)の実現方
法で説明したようなR以上の値(Whmem)の加算は
行う必要がない。また(X+m・N)は、必ずRの倍数
になるのであるから、式(30)の第2辺に示されるX
の値を加算する必要もなく、代わりに”〔(Wlme
m)×(Nmem)の結果のR以上の値〕+1”で解が
得られる。これは、暗号アルゴリズムの世界で剰余演算
を使用するとき、本計算におけるAの値が0になること
がないからである。
m)×(Nmem)の計算を実行して、その結果をA’
mem−Wlmemの形で、演算値メモリA’memと
Wlmemに格納すればよい。その結果の得られたA’
mem上の値が求める解となる。(本演算の実行でべき
乗剰余演算のすべての演算は終了するため、ここでは演
算値メモリWlmemへの格納を省略してもよい。)な
お、このとき計算の最終結果を演算値メモリA’mem
の最下位桁に格納するタイミングで、図5に示した+1
端子に1を供給して、式(30)の1を足す動作を実行
する。
規定ビット長の乗加算器(乗算器と加算器を別個に設け
てもよい)を演算部の中心として構成し、その周辺に設
けられた回路に、タイミング/コントロール信号発生回
路からの制御信号を供給することにより、モンゴメリ手
法を用いた多ビット長の剰余演算あるいはべき乗剰余演
算を実現できる。また、この方式によれば、演算部の中
心が限られた(規定の)ビット長の演算器で構成できる
ため回路規模が小さくてすみ、LSI化に適している。
コプロセッサを示す図である。
(図5)に、演算値が0であることを検出して、次の演
算のシーケンスを制御する回路を追加したものである。
御回路ZeroCである。この制御回路ZeroCは、
演算値が0であることを検出して、次演算のシーケンス
を制御する回路であり、高速加算器Addの出力信号が
与えられる入力端子と出力端子とを有している。この出
力端子からは、タイミング/コントロール回路T/Cで
発生するタイミング/コントロール信号及びコプロセッ
サ内の各種回路を動作させる信号に所定の制御を施す信
号が出力する。
5)の実現方法で述べた、REDC関数の計算におい
て、前の乗算の結果得られたXの値は次の2つの場合分
けができる。
られた値(Wlmem)が0。
られた値(Wlmem)が0でない。
が、上記(a)(b)のように、X値(A×AやA×B
の結果の値)のR未満の値が0か否かを検出して、その
結果に応じて、続く演算のシーケンスを次の通りに実行
させる。
=0となるのは明かであるから、このときはmの計算を
行う必要はない。
まtの値となっていることを示す。従って、この場合の
ハードウエア処理は、演算値メモリWhmemに格納さ
れた値をそのまま演算値メモリA’memとWlmem
の双方に格納し、次の繰り返し演算に備える。すなわ
ち、X値(前計算で得られた値)のR未満の値が0の場
合は、m、tの演算の必要がない。このことは、tの計
算において、Xの全ビット長分を計算する必要がないこ
とを意味する。
第1の実施形態の通り実行し、計算結果をA’mem−
Wlmemの形で演算値メモリA’memとWlmem
の双方に格納し、演算値メモリWlmemに格納された
値をmの値とする。そして、引き続きtの計算を実行す
る。
算を実行して、その結果をA’mem−Wlmemの形
で演算値メモリA’memとWlmemの双方に格納
し、続いて (A’mem)×1+(Whmem)+1・・・(33) の計算を実行すれば解が得られる。なぜなら、X+m・
Nの値は、必ずRの倍数になるから、R未満の値をわざ
わざ計算対象にする必要がないからである。なお、式
(33)では、最下位桁の計算タイミングで、図5に示
した+1端子に1を供給して式(33)の1を足す動作
を実行する。
メモリA’memとWlmemの双方に格納するととも
に、桁あふれが発生した場合は、キャリーフラグCFに
1を書き込む。その後の処理は、第1の実施の形態と同
様である。
演算値が0であることを検出して、次演算のシーケンス
を制御する制御回路(乗加算器のビット長に相当する回
路規模で済むので、小規模な回路である。)を付加する
ことにより、第1の実施の形態で説明したコプロセッサ
の演算値メモリMmemの削除と、演算量の削減が達成
できる。従って、ハードウエアの削減と演算時間の短縮
化を図ることができる。
コプロセッサを示す図である。
(図5)もしくは第2の実施形態の構成(図8)に、オ
ペランドビット長を選択してタイミング/コントロール
信号を変化させるビット長選択制御回路を付加したもの
である。
9におけるLenContである。このビット長選択制
御回路LenContは、入力信号Sel−lenに従
って、タイミング/コントロール回路T/Cで発生する
演算タイミング信号とコプロセッサ内の各種回路に供給
するコントロール信号を制御するように動作する。
オペランドビット長の変化に伴い、R値及びその値によ
り決まるR’値、N’値のビット長と、規定ビット長乗
加算の繰り返し手順(回数)とが変化するようになる。
6ビット長の時、オペランドビット長512ビットのA
×Aの乗算を実行する場合、高速乗加算器Mul/Ad
dによる乗加算の繰り返し回数は次のようになる。
うになる。
また、前に述べたようにオペランドビット長によりR値
は一義的に決まるので、R’値、N’値のビット長もそ
れに応じて変化する。
これらの変化要因を制御する、すなわち、選択されたビ
ット長に対応して、タイミング/コントロール回路T/
Cで発生させる演算タイミング信号やコントロール信号
が出力するよう制御する。
ontは、PLAや論理回路等の比較的小規模な回路構
成で実現できる。
ッサでは、ビット長選択制御回路LenContを付加
することによって、さまざまなオペランドビット長の剰
余演算あるいはべき乗剰余演算を実行することが可能と
なる。
本は、規定ビット長の乗加算である。この基本乗加算を
繰り返して剰余演算あるいはべき乗剰余演算を実現する
方法は、以上の実施例で示した通りである。
算モードのみを行うコプロセッサであったため、演算の
基本が乗加算であるにも関わらず、その用途が剰余演算
に限られている。
ット長乗加算のモードを追加して、本コプロセッサの汎
用性を向上させる。
余演算コプロセッサを示す図である。
算のモードを追加したものであり、このモードを実行す
るためにタイミング/コントロール回路T/Cにモード
信号4を供給するようにしたものである。
以下に説明する。
emに、値Bを演算値メモリSmemに、値Cを演算値
メモリWhmemに格納する。そして、タイミング/コ
ントロール回路T/Cにモード信号4を供給して、演算
の種類を、乗加算を実行するモードにする。
詳細に表現すると図11のようになる。
ドレス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に格納されることを意味す
る。
egが、演算値メモリWlmemのアドレスWl0に格
納された値(被乗算値)を取り込むとともに、レジスタ
Xi−regが演算値メモリSmemのアドレスS0に
格納された値(乗算値)を取り込み、レジスタAi−r
egが演算値メモリWhmemのアドレスWh0に格納
された値(加算値)を取り込む。次に、高速乗加算器M
ul/Addはこの乗算値と被乗算値を乗算し、かつこ
の乗算結果に加算値を加算し高速加算器Addに向けて
出力する。この単位乗加算1では、高速加算器Addの
Through端子に”highレベル”を供給して、
レジスタRHの内容を加算しないようにする。
の下位桁は、本乗加算の最終演算結果の最下位桁である
ので、この単位乗加算1の演算結果の下位桁は本乗算の
最終演算結果として演算値メモリWlmemの最下位ア
ドレスWl0に格納される。(図11において、アンダ
ーラインが付与されたアドレスには、最終演算結果が格
納されていることを意味する。)この単位乗加算1の演
算結果の上位桁は、次の単位乗加算のためにレジスタR
Hに格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、演算値メモリ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に格納され
る。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
は、すでに格納された値(被乗算値)を維持し、レジス
タ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に格納される。
乗加算に習って、図11のごとく実行される。そして、
最終演算結果は、Whmem−Wlmem(”−”は、
引き算を示すものではない。)の形で格納される。
9=40147812を、上述のハードウエアで実行し
た場合の単位乗加算を示す。動作の説明については、図
11と同様であるので省略する。以上のように、第4の
実施形態によれば、さまざまな演算の基本となる多ビッ
ト長の乗加算のモードを実現できるので、コプロセッサ
の汎用性を大幅に向上させることができる。
速乗加算器Mul/Addと高速加算器Addの入力ビ
ット長で決まる単位乗加算毎に、メモリへのアクセスを
行う必要があるため、演算時間の短縮化においては改善
の余地がある。なぜなら、メモリを含んだ回路全体の動
作速度は、メモリアクセスタイムが回路全体の動作速度
を制限してしまうからである。
演算回数に対するメモリのアクセス回数を減らして、最
終的な演算時間の短縮を図る。
余演算コプロセッサを示す図である。
成に対して、被乗算値格納レジスタYi−regを複数
個に増やして、その出力を選択する回路を設けたもので
ある。さらに、高速加算器Addの上位桁あるいは下位
桁の出力値を格納するレジスタも被乗算値格納レジスタ
の個数に対応する個数設け、各レジスタの出力値を適当
に選択する選択回路を設けたものである。
[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に与える選
択回路である。
のうち上位桁R−highを一時格納するレジスタであ
り、その出力は後続の選択回路SelA、SelB、E
nSelに接続されている。そして高速加算器Add出
力のうち下位桁R−lowは、選択回路SelB及びイ
ネーブルバッファEnに接続されている。
SelAに接続されている。そして選択回路SelA
は、レジスタAi−regとレジスタRAの内容のうち
いずれかを選択して高速加算器Addに加算入力すべく
加算加算器Addに接続されている。
タRAの内容のうちいずれかを選択してレジスタRBに
向けてその結果を出力すべくレジスタRBに接続されて
いる。
を一時格納するレジスタであり、出力はレジスタRC及
びEnselに接続されている。
時格納するレジスタであり、出力はレジスタRD及びE
nselに接続されている。
時格納するレジスタであり、出力は選択回路Ensel
及び高速乗加算器Mul/Addに接続されている。
B、RC、RDの内容のうちいずれか1つを選択して演
算値メモリに向けて出力する選択回路である。
と同様な働きをするので説明を省略する。
RB、RC、RD、Wl0) のようなハードウエアイメージを使用して、図14を用
いて説明する。
スは、演算の最終結果が格納されていることを意味す
る。
行われる。
と、選択回路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に格納
される。
と、選択回路Yi−selで選択されたレジスタYi−
reg[2]の値と、レジスタRDの値と選択回路Se
lAで選択されたレジスタRAの値との間で演算が行わ
れる。そして、この演算の終了間際には、演算結果の上
位桁であるR−highは、レジスタRAに、演算結果
の下位桁であるR−lowは、選択回路SelBで選択
されたレジスタRBに格納される。同時に、レジスタR
Cの値はレジスタRDに、レジスタRBの値はレジスタ
RCに格納される。
と、選択回路Yi−selで選択されたレジスタYi−
reg[3]の値と、レジスタRDの値と選択回路Se
lAで選択されたレジスタRAの値との間で演算が行わ
れる。そして、この演算の終了間際には、演算結果の上
位桁であるR−highは、レジスタRAに、演算結果
の下位桁であるR−lowは、選択回路SelBで選択
されたレジスタRBに格納される。同時に、レジスタR
Cの値はレジスタRDに、レジスタRBの値はレジスタ
RCに格納される。
理では、演算値メモリへのアクセスは、ステップ1で1
度行っているだけである。従って、残りのステップ2か
らステップ4までの期間に、各演算値メモリのアドレス
の変更、プリチャージ等を行ってメモリアクセスの時間
をかせぐことができる。また、ステップ2からステップ
4までの期間内に行う動作は、ほとんど同じであるた
め、演算処理が複雑になることはない。
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に示す。
8591×4673+2069=40147812のタ
イム1からタイム4までの演算過程を示す。
演算の最終結果であることを意味する。
ム4のステップ4で得られたレジスタRA、RB、R
C、RDに格納された値であり、下位の桁はステップ1
で得られた演算値メモリWlmemの値であることが理
解できる。
加算器等の演算処理部のサイズを変える必要はなく、全
体的に小規模な回路で演算時間の短い剰余演算コプロセ
ッサを実現できる。
ロック図であり、先に説明したコプロセッサと外部装置
との間に、演算値メモリインターフェイス回路と演算コ
ントロール回路を設けたものである。
IF)MemIFは、MCUとコプロセッサ内の演算値
メモリとの間でデータの授受を行うための演算値メモリ
インタフェイス回路である。
ッサ外部から演算データを格納し、演算の終了時に演算
結果の値をコプロセッサ外部に送出する。同時に、演算
実行中はコプロセッサ外部とは関係なくダイナミックに
演算ユニットとのアクセスを繰り返す。つまり、演算値
メモリは2種類の通信プロトコルを有する。演算値メモ
リインタフェイスMemIFでは、それを実現すべく回
路を構成する。
sとメモリ制御信号Memconは、演算値メモリイン
タフェイスMemIFに入力され、演算値メモリインタ
フェイスMemIF内で、コプロセッサ内の各演算値メ
モリ別のアドレス信号Comemadとメモリコントロ
ール信号Comconを作成してコプロセッサに供給す
る。MDbusは、MCUのデータバスであり、CoD
busはコプロセッサの外部インタフェイス用データバ
スである。
単一のメモリ空間上に配置されている場合は、演算値メ
モリインタフェイスMemIFに入力されるadrs信
号とMemcon信号とMDbusは一種類でよいが、
複数のメモリ空間上に配置されている場合は複数種類の
入力となる。また、一般的にはMDbusとCoDbu
sは直結されることが多いが、例えばコプロセッサ内部
で処理される演算値メモリのデータ長とMCUのデータ
長が異なる場合などは、演算値メモリインタフェイスM
emIFを介してデータ変換を行うこともできる。
値メモリが演算実行のためにダイナミックに動作してい
るので、MCUからのアクセスを禁止するように制御さ
れている。このようにして、コプロセッサ内演算値メモ
リと外部装置との第1の通信プロトコルを実現する。
フェイスMemIFにはコプロセッサ内のタイミング/
コントロール回路T/Cから出力される演算実行時メモ
リコントロール信号Exemcが入力され、それを受け
取った演算値メモリインタフェイスMemIFは、演算
値メモリが演算ユニットとの間でデータの授受を行える
ように処理されたComemad信号とComcon信
号をコプロセッサに向けて出力する。このようにして、
コプロセッサ内の演算実行中の演算値メモリと演算ユニ
ットとの第2の通信プロトコルを実現する。
opConは、MCUから出力されるコプロセッサ制御
信号Exconを受け取って、コプロセッサ内部へ演算
制御信号Sevex(以上の実施の形態で言えば、演算
モード信号、ビット長選択信号等)を供給する演算コン
トロール回路である。ここで、コプロセッサへの演算の
開始を促すのは、演算モード信号やコプロセッサ原振ク
ロックCOPCLKを供給することで実現できる。
めには、コプロセッサ内のタイミング/コントロール回
路T/Cで発生される演算終了のタイミング信号Coe
ndをCopConで受取り、ラッチ回路などで処理し
た演算終了モニター信号EndmoniをMCUに向け
て出力する。
nは、MCUのペリフェラル回路としてローカルメモリ
エリア等に割り付けてMCUの命令で直接アクセスでき
るように構成でき、比較的に簡単な回路で実現できる。
の原振クロックを、COPCLK信号はコプロセッサの
原振クロックを示している。
比較的に小規模な回路で外部装置(例えば、MCU等)
とコプロセッサとのインタフェイスが実現できるので、
外部インタフェイス付きの剰余演算コプロセッサ、ある
いは剰余演算コプロセッサ内臓のMCUを構成でき、し
かもLSI化が可能となる。
は、演算終了をコプロセッサ外部で確認する手段は、演
算終了モニター信号Endmoniを見るしかない。し
かしこの方法では、コプロセッサで処理される多ビット
長の剰余演算量は多いため、例えば外部装置がMCUの
場合はMCU側で常にEndmoni信号を監視する時
間が比較的長くなり、MCUの動作パフォーマンスが低
下する。
に、専用の演算終了時の割り込み制御回路を設けたもの
である。
すブロック図である。
込み制御回路であり、あらかじめMCUから出力される
割り込み設定信号Intsetにより、割り込みの準備
がなされている。コプロセッサより演算終了のタイミン
グ信号Coendが入力されると、CopConで設定
された演算モードの種類別に、割り込みに必要な割り込
み処理リクエスト信号、アクノリッジ信号、ベクター制
御信号等をIntsigとして、MCUとの間でやりと
りし、最後に割り込みの準備を解除して割り込み処理を
終了する。
定しても良いが、本コプロセッサは複数の演算モードを
有しているため、各演算モード毎の割り込みを行った方
が外部装置によるべき乗剰余演算への展開の仕方が容易
になるので、割り込み要因を複数に設定したほうが良
い。
opConと同様にMCUのペリフェラル回路としてロ
ーカルメモリエリア等に割り付けてMCUの命令で直接
アクセスできるように構成でき、比較的に簡単な回路で
実現できる。
ば、比較的に小規模な回路で、演算終了割り込み機能を
持った、外部インタフェイス付きの剰余演算コプロセッ
サ、あるいは剰余演算コプロセッサ内臓のMCUを構成
でき、しかもLSI化が可能となる。
剰余演算は、演算開始から終了までダイナミックに実行
されるため、外部装置と接続した際のシステム全体の演
算実行中の消費電流を抑えるために、演算実行時の外部
装置の動作を一時停止(以下、スリーぷと呼ぶ。)状態
にすると都合がよい。
外部装置スリープ制御回路とクロック制御回路を設けた
ものである。
り、第7の実施形態に、外部装置スリープ制御回路とク
ロック制御回路を付加したものである。
プ制御回路であり、MCUからのスリープ設定信号Sl
psetを受けてスリープ信号Slpを発生させ、その
信号をクロック制御回路CLKConに送る。
たシステムクロックCLK信号をもとに、MCUに対し
てMCU原振クロックMCUCLKを供給しているが、
いったんSlp信号を受け取るとMCUへのMCUCL
Kの供給をやめるように働く。
号CoendがSlpConに入力されてSlp信号の
CLKConへの供給がなくなり、CLKConからM
CUに対してMCUCLKの供給を再開する。
装置のある端子への信号入力等でスリープ解除すること
が多く、この場合もそれを併用するようにSlpCon
を構成しても良い。
opConと同様にMCUのペリフェラル回路として、
ローカルメモリエリア等に割り付けてMCUの命令で直
接アクセスできるように構成でき、比較的に簡単な回路
で実現できる。
比較的に小規模な回路で、外部装置スリープ機能を持っ
た、外部インターフェイス付きの剰余演算コプロセッ
サ、あるいは剰余演算コプロセッサ内蔵のMCUを構成
でき、システム全体の低消費電力化が実現して、しかも
LSI化が可能となる。
は、大規模で複雑な剰余演算を行う暗号アルゴリズム等
の、処理時間の高速性を問われる場合に使用することが
できる。従って、システムに供給される入力原振クロッ
クの周波数がいかなる場合であっても、演算時間は短い
ことが要求される。
て演算速度の向上機能を付加する。
り、第8の実施の形態のクロック制御回路をモディファ
イして逓倍速クロック制御回路を構成した場合の図であ
る。なお、第6、第7の実施の形態に逓倍速クロック制
御回路を別個に付加した場合でも構わない。
ック制御回路を内蔵したクロック制御回路であり、MC
Uから逓倍速設定用の信号としてCkwsetが入力さ
れると逓倍速機能が働く。
ロックCLKに対して動作し、作成した逓倍速クロック
がMCUの原振クロックMCUCLK、あるいはコプロ
セッサの原振クロックCOPCLK、あるいはその両方
に出力させるように回路を構成しておく。そうすること
で、ユーザーにとっては、消費電流との兼ね合いから、
システムの上でバリエーションに富んだ選択ができるよ
うになる。
解除信号としてのCkwset信号を入力することによ
って、実現する。
ールCopConと同様にMCUのペリフェラル回路と
してローカルメモリエリア等に割り付けてMCUの命令
で直接アクセスできるように構成でき、比較的に簡単な
回路で実現できる。
ば、比較的に小規模な回路で、システムの逓倍速機能を
持った、外部インタフェイス付きの剰余演算コプロセッ
サ、あるいは剰余演算コプロセッサ内臓のMCUを構成
でき、システム全体の演算処理速度が向上して、しかも
LSI化が可能となる。
加算器Mul/Addは、乗算器と加算器に分離した構
成としても良い。
加算器Mul/Add、高速加算器Addは、一体化さ
れたものであっても良い。
加算器Mul/Add、高速加算器Addは、市販のI
Cで構成しても良い。
セッサは、第1から第5の実施の形態で示したコプロセ
ッサをもとにした記述をしているが、そのコプロセッサ
と同等の機能を持つ他のコプロセッサで構成しても良
い。
ト長乗算アルゴリズムは、一般的なもので説明している
が、説明の中で使用しているハードウエア構成で使用で
きる他の乗算アルゴリズム(例えば、BOOTH等)を
タイミング/コントロール回路で作り出して実現しても
良い。
0”検出回路ZeroCの使用例を演算値メモリの削減
を主な目的として記述しているが、ZeroCは例えば
単位乗算の乗算値あるいは被乗算値の内容が0であった
場合に、演算動作をオミットし演算結果の途中値を無条
件に0として次の演算に進むようにシーケンスを制御し
て、演算時間を短縮する目的にも使用できる。
スタの個数を増やす記述をしているが、被乗算値格納レ
ジスタのビット長を大きくしてサイズを増やす場合も可
能である。
表的なものによれば、べき乗剰余演算の解を求めるに際
し、予め用意されたモード信号を供給するのみで、各種
演算を実行することができる。
る。
である。
ドウエアイメージである。
ードウエアイメージである。
算例である。
ードウエアイメージである。
ードウエアイメージである。
ードウエアイメージである。
算例である。
m、Wlmem、Whmem・・・演算値メモリ Mul/Add・・・高速乗加算器 Add・・・高速加算器 Xi−reg・・・乗算値格納レジスタ Yi−reg・・・被乗算値格納レジスタ Ai−reg・・・被加算値格納レジスタ RH・・・高速加算器Addが出力する値の上位の桁を
格納するレジスタ
Claims (12)
- 【請求項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】 前記第1ないし第3の演算の結果の前記
R未満の値が0であることを検出する検出回路を設けた
ことを特徴とする請求項1記載のべき乗剰余演算回路。 - 【請求項3】 前記AもしくはBのビット長に応じて、
前記タイミング制御回路を制御する演算ビット長選択回
路を設けたことを特徴とする請求項1記載のべき乗剰余
演算回路。 - 【請求項4】 前記演算部は、第4のモード信号に対応
したタイミング制御信号に応答して、A・B+Cなる第
4の演算を実行し、前記タイミング制御回路は、前記第
4のモード信号を受信し、前記第4のモード信号に対応
した前記タイミング制御信号を出力することを特徴とす
る請求項1記載のべき乗剰余演算回路。 - 【請求項5】 前記演算における乗算値を格納する乗算
値格納部と、 前記演算における被乗算値を格納する複数個の被乗算値
格納部と、 複数の前記被乗算値格納部のいずれかの出力を選択して
前記演算部に出力する選択回路と、 前記複数個の被乗算値格納部に各々対応して設けられ、
前記演算部の出力のうちの上位桁もしくは下位桁のいず
れか一方を格納する複数個の演算結果格納部とを設けた
ことを特徴とする請求項1記載のべき乗剰余演算回路。 - 【請求項6】 請求項1記載のべき乗剰余演算回路と外
部装置との間に設けられ、前記外部装置の命令に応じて
前記演算部の動作を制御する演算コントロール回路を設
けたことを特徴とするべき乗剰余演算システム。 - 【請求項7】 前記第1、第2もしくは第3の演算のい
ずれかが終了したことを検出して、前記外部装置に割り
込み要求信号を出力する割り込み制御回路を設けたこと
を特徴とする請求項6記載のべき乗剰余演算システム。 - 【請求項8】 前記第1、第2もしくは第3の演算のい
ずれかが実行中であることを検出して、スリープ信号を
出力するスリープ制御回路と、 前記スリープ信号を受信している間、クロック信号を前
記外部装置に供給するクロック制御回路とを設けたこと
を特徴とする請求項6記載のべき乗剰余演算システム。 - 【請求項9】 第1のクロック信号を受信して、該第1
のクロック信号を逓倍した第2のクロック信号を前記外
部装置もしくは前記演算部に供給する逓倍速クロック制
御回路を設けたことを特徴とする請求項6記載のべき乗
剰余演算システム。 - 【請求項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】 前記第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】 前記第5の演算ステップはさらに、R
≦tの関係を検出した時はt−N実行することを特徴と
する請求項10記載の演算方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11005796A JP3525209B2 (ja) | 1996-04-05 | 1996-04-05 | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
DE69716331T DE69716331T2 (de) | 1996-04-05 | 1997-04-02 | Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik |
EP97105465A EP0801345B1 (en) | 1996-04-05 | 1997-04-02 | Circuit for modulo multiplication and exponentiation arithmetic |
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)
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 (41)
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 |
ATE418099T1 (de) * | 1998-06-03 | 2009-01-15 | Cryptography Res Inc | Gesicherte moduläre potenzierung mit leckminimierung für chipkarten und andere kryptosysteme |
JP2002519722A (ja) | 1998-06-03 | 2002-07-02 | クリプターグラフィー リサーチ インコーポレイテッド | スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス |
WO2000002342A2 (en) | 1998-07-02 | 2000-01-13 | Cryptography Research, Inc. | Leak-resistant cryptographic indexed key update |
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 |
WO2001086860A1 (en) * | 2000-05-09 | 2001-11-15 | 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 |
DE602004028849D1 (de) * | 2003-10-14 | 2010-10-07 | 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 | 富士通株式会社 | 復号処理装置、復号処理プログラム、復号処理方法 |
US8626811B2 (en) * | 2010-04-30 | 2014-01-07 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
CN103119621B (zh) | 2010-04-30 | 2016-12-07 | 当今技术(Ip)有限公司 | 内容管理装置 |
JP5573964B2 (ja) * | 2010-12-27 | 2014-08-20 | 富士通株式会社 | 暗号処理装置および方法 |
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 |
CN111857822B (zh) * | 2016-08-05 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种运算装置及其操作方法 |
FR3076925B1 (fr) | 2018-01-16 | 2020-01-24 | Proton World International N.V. | Fonction cryptographique |
CN111712816B (zh) * | 2018-03-28 | 2024-05-03 | 密码研究公司 | 使用密码蒙蔽以用于高效地使用蒙哥马利乘法 |
WO2023141933A1 (en) | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Techniques, devices, and instruction set architecture for efficient modular division and inversion |
WO2023141935A1 (en) | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Techniques, devices, and instruction set architecture for balanced and secure ladder computations |
WO2023141934A1 (en) * | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Efficient masking of secure data in ladder-type cryptographic computations |
Family Cites Families (9)
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 |
US5321752A (en) * | 1991-09-05 | 1994-06-14 | Canon Kabushiki Kaisha | Method of and apparatus for encryption and decryption of communication data |
IL101623A (en) * | 1992-04-16 | 1997-06-10 | Fortress U & T 2000 Ltd | Digital signature device |
DE69320715T2 (de) * | 1992-06-29 | 1999-01-21 | Thomson Multimedia Sa | Verfahren zur Ausführung einer Geheimübertragung mit öffentlichem Schlüssel |
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 |
-
1996
- 1996-04-05 JP JP11005796A patent/JP3525209B2/ja not_active Expired - Fee Related
-
1997
- 1997-04-02 EP EP97105465A patent/EP0801345B1/en not_active Expired - Lifetime
- 1997-04-02 DE DE69716331T patent/DE69716331T2/de not_active Expired - Fee Related
- 1997-04-04 US US08/833,002 patent/US5982900A/en not_active Expired - Fee Related
- 1997-04-07 CN CNB971102899A patent/CN1148643C/zh not_active Expired - Fee Related
Cited By (9)
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 |
---|---|
EP0801345B1 (en) | 2002-10-16 |
JP3525209B2 (ja) | 2004-05-10 |
CN1148643C (zh) | 2004-05-05 |
CN1172390A (zh) | 1998-02-04 |
DE69716331D1 (de) | 2002-11-21 |
EP0801345A1 (en) | 1997-10-15 |
DE69716331T2 (de) | 2003-06-18 |
US5982900A (en) | 1999-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3525209B2 (ja) | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 | |
US6085210A (en) | High-speed modular exponentiator and multiplier | |
JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
EP1293891B2 (en) | Arithmetic processor accomodating different finite field size | |
JP3636740B2 (ja) | モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法 | |
US6434585B2 (en) | Computationally efficient modular multiplication method and apparatus | |
US6671709B2 (en) | Multiplier cell and method of computing | |
Öztürk et al. | Low-power elliptic curve cryptography using scaled modular arithmetic | |
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 | |
Gutub et al. | Efficient scalable VLSI architecture for Montgomery inversion in GF (p) | |
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) | べき乗剰余演算方法及びそのプログラム | |
JP3912972B2 (ja) | データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 | |
JP3137599B2 (ja) | BのC乗のnを法とした剰余を計算する回路 |
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 |