JP3992883B2 - 演算装置及び演算方法 - Google Patents

演算装置及び演算方法 Download PDF

Info

Publication number
JP3992883B2
JP3992883B2 JP18108199A JP18108199A JP3992883B2 JP 3992883 B2 JP3992883 B2 JP 3992883B2 JP 18108199 A JP18108199 A JP 18108199A JP 18108199 A JP18108199 A JP 18108199A JP 3992883 B2 JP3992883 B2 JP 3992883B2
Authority
JP
Japan
Prior art keywords
storage area
variable storage
integer
value stored
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP18108199A
Other languages
English (en)
Other versions
JP2001013871A (ja
Inventor
俊夫 長谷川
純子 中嶋
充 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP18108199A priority Critical patent/JP3992883B2/ja
Publication of JP2001013871A publication Critical patent/JP2001013871A/ja
Application granted granted Critical
Publication of JP3992883B2 publication Critical patent/JP3992883B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、整数の除算と積算を行なう演算の演算装置、その演算装置を用いたユークリッドの互除演算を行う互除演算装置、その互除演算装置を用いた暗号復号装置、及び演算方法に係り、変数格納領域の削減を図る演算装置、互除演算装置、暗号復号装置、演算方法に関する。
【0002】
【従来の技術】
ユークリッド互除アルゴリズムを拡張した拡張ユークリッド互除アルゴリズムは、整数a0 ,b0 の最大公約数dと同時にさらにa0a +b0a =dなる整数xa ,ya を出力するものである。拡張ユークリッド互除アルゴリズムの演算の概要を説明する。
図4に、従来の拡張ユークリッド互除アルゴリズムを単純に実行する演算方法のフローを示す。この方法は、例えば、Menezes、Oorschot、Vanstone著「Handbook of Applied Cryptography」CRC Pressに開示されている。
【0003】
入力値は、2つの非負な整数a0 ,b0 (但し、a0 ≧b0 )である。
出力値d=gcd(a0 ,b0 )と、a0a +b0a =dを満たすxa ,ya である。
計算の手順は以下の通りである。
(1)もし、b0 =0のときは、d←a0 ,xa ←1,ya ←0で、終了する。
(2)変数に初期値を設定する。x2 ←1,x1 ←0,y2 ←0,y1 ←1
(3)b0 >0のときは、次の計算を続ける。
ステップ1.中間演算を行なう。
q←f(a/b),
r←a−q・b,
x←x2 −q・x1
y←y2 −q・y1
但し、f(α)は、αを越えない最大の整数のことである。以下、同様である。
ステップ2.変数をシフトする。
a←b,b←r,x2 ←x1 ,x1 ←x,y2 ←y1 ,y1 ←y
(4)最後に次の値を演算結果とする。
d←a,x←x2 ,y←y2
【0004】
特に、中間演算の処理について着目すると、qの値を計算し、その値を一時記憶させた上で、そのqの値を参照しながら、r,x,yを計算する方法が考えられる。図5と図6を用いてその方法について説明する。
図5に、xを求める計算のフローを示す。また、図6に、xを求める計算に用いるレジスタを示す。601は、変数x2 を格納するレジスタ(変数格納領域の例)X2であり、この領域は、ブロックX2(1)からブロックX2(s)に分割されている。602は、変数x1 を格納するレジスタX1であり、ブロックX1(1)からブロックX2(t)に分割されている。603は、変数aを格納するレジスタAであり、ブロックA(1)からブロックA(u)に分割されている。604は、変数bを格納するレジスタBであり、ブロックB(1)からブロックB(v)に分割されている。605は、変数qを格納するレジスタQであり、ブロックQ(1)からブロックQ(w)に分割されている。606は、変数q・x1 を格納するレジスタQX1であり、607は、変数xを格納するレジスタXである。
【0005】
ステップ501では、変数aをレジスタA603から読み取り、変数bをレジスタB604から読み取り、f(a/b)の値、つまりa/bを越えない最大の整数qを求める。そして、そのqの値を、レジスタQ605に格納する。
ステップ502では、レジスタQ605の値qと、レジスタX1から読み取った変数x1 を積算し、結果であるq・x1 をレジスタQX1:606に格納する。
ステップ503では、変数x2 をレジスタX2から読み取り、その変数x2 からレジスタQX1の値q・x1 を引き、変数xを求める。変数xは、レジスタX607に格納される。
【0006】
図7に、ステップ501とステップ502の処理フローの詳細を示す。
ステップ701では、整数aを整数bで除した商の部分商qi を求める。ステップ702では、求めた部分商qi をレジスタQ605の定められた位置に格納する。この位置は、除算の位取りに適する様に定められる。ステップ703では、更に部分商を求める必要があるか否か判断する。必要がある場合には、ステップ701からの処理を繰り返す。
以上のループが終了した時点で、レジスタQ605には整数qが生成されている。ステップ704は、ステップ502に相当する。
【0007】
以上の様に、従来の方法では、整数qの値を格納できるレジスタが必要である。この拡張ユークリッド互除アルゴリズムの演算を暗号復号装置に用いる例を考えると、例えば、1ブロックが8ビット、レジスタAのブロック数uが128程度、レジスタBのブロック数vが64程度になることが想定できる。この場合、レジスタQのブロック数wは64程度となる。つまり、512ビット程度の記憶領域を確保しなければならない。
【0008】
【発明が解決しようとする課題】
従来の拡張ユークリッド互除アルゴリズムの演算装置及び演算方法では、中間演算変数が多く、大きなメモリサイズを必要とするという問題点があった。
【0009】
この発明は上記のような問題点を解決するためになされたもので、小さな中間演算変数で演算し、必要なメモリサイズを減少させることを目的とする。特に、拡張ユークリッド互除アルゴリズムが暗号・情報セキュリティなどの分野で暗号復号化装置および演算方式がよく用いられるが、この場合扱う整数の大きさが、数百ビット長から数千ビット長という多倍長整数演算であるため、中間演算変数の記憶領域が削減され、大きなメリットとなる。
【0010】
【課題を解決するための手段】
この発明に係る演算装置は、整数aを整数bで除した商を越えない最大の整数qを求め、更に上記整数qと整数zを積算し、積qzを求める演算に用いられる演算装置であって、以下の要素を有することを特徴とする。
(1)複数のブロックからなるQZ格納領域、
(2)上記整数aと上記整数bを入力し、入力した整数aを入力した整数bで除した商の部分商qi を順次求める部分商qi 演算部、
(3)部分商qi 演算部で順次求めた部分商qi を、順次更新して格納する部分商QI 格納領域、
(4)上記整数zを入力し、上記部分商QI 格納領域に順次格納した部分商qi と、入力した整数zとを順次積算し部分積qi zを求める部分積qi z積算部、
(5)部分積qi z積算部で順次積算し求めた上記部分積qi zを、上記ブロックに順次格納し、上記QZ格納領域に上記積qzを生成するqz生成部。
【0011】
この発明に係る演算装置は、部分商QI 格納領域のサイズがワードサイズであることを特徴とする。
【0012】
この発明に係るユークリッド互除アルゴリズムの演算装置は、整数a0 、整数b0 を入力し、整数a0 と整数b0 との最大公約数である整数dと、a0a +b0a =dとなる整数xa と整数ya とを求めるユークリッド互除アルゴリズムの演算装置であって、以下の要素を備えることを特徴とする。
(1)9個の変数格納領域A,B,R,X2,X1,X,Y2,Y1,Y、
(2)変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する入力値格納部、
(3)変数格納領域X1に0を格納し、変数格納領域X2に1を格納し、変数格納領域Y1に1を格納し、変数格納領域Y2に0を格納する初期値格納部、
(4)変数格納領域Bに格納している値が0である場合に、演算結果の出力を指示するb=0判定部、
(5)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Bに格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Aに格納している値から引いた値を、変数格納領域Rに格納するr=a−qb中間演算部、
(6)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域X1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域X2に格納している値から引いた値を、変数格納領域Xに格納するx=x2 −qx1 中間演算部、
(7)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Y1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Y2に格納している値から引いた値を、変数格納領域Yに格納するy=y2 −qy1 中間演算部、
(8)変数格納領域Bに格納している値を変数格納領域Aに格納し、変数格納領域Rに格納している値を変数格納領域Bに格納し、変数格納領域X1に格納している値を変数格納領域X2に格納し、変数格納領域Xに格納している値を変数格納領域X1に格納し、変数格納領域Y1に格納している値を変数格納領域Y2に格納し、変数格納領域Yに格納している値を変数格納領域Y1に格納する変数シフト部、
(9)変数格納領域Bに格納している値が0以下の場合に、演算結果の出力を指示するb>0判定部、
(10)変数格納領域Aに格納されている値を整数dとし、変数格納領域X2に格納されている値を整数xa とし、変数格納領域Y2に格納されている値を整数ya として演算結果を出力する演算結果出力部。
【0013】
この発明に係るユークリッド互除アルゴリズムの演算装置は、整数a0 、整数b0 を入力し、整数a0 と整数b0 との最大公約数である整数dと、a0a +b0a =dとなる整数xa とを求めるユークリッド互除アルゴリズムの演算装置であって、以下の要素を備えることを特徴とする。
(1)6個の変数格納領域A,B,R,X2,X1,X、
(2)変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する入力値格納部、
(3)変数格納領域X1に0を格納し、変数格納領域X2に1を格納する初期値格納部、
(4)変数格納領域Bに格納している値が0である場合に、演算結果の出力を指示するb=0判定部、
(5)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Bに格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Aに格納している値から引いた値を、変数格納領域Rに格納するr=a−qb中間演算部、
(6)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域X1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域X2に格納している値から引いた値を、変数格納領域Xに格納するx=x2 −qx1 中間演算部、
(7)変数格納領域Bに格納している値を変数格納領域Aに格納し、変数格納領域Rに格納している値を変数格納領域Bに格納し、変数格納領域X1に格納している値を変数格納領域X2に格納し、変数格納領域Xに格納している値を変数格納領域X1に格納する変数シフト部、
(8)変数格納領域Bに格納している値が0以下の場合に、演算結果の出力を指示するb>0判定部、
(9)変数格納領域Aに格納されている値を整数dとし、変数格納領域X2に格納されている値を整数xa として演算結果を出力する演算結果出力部。
【0014】
この発明に係るユークリッド互除アルゴリズムの演算装置は、整数a0 、整数b0 を入力し、整数a0 と整数b0 との最大公約数である整数dと、a0a +b0a =dとなる整数ya とを求めるユークリッド互除アルゴリズムの演算装置であって、以下の要素を有することを特徴とする。
(1)6個の変数格納領域A,B,R,Y2,Y1,Y、
(2)変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する入力値格納部、
(3)変数格納領域Y1に1を格納し、変数格納領域Y2に0を格納する初期値格納部、
(4)変数格納領域Bに格納している値が0である場合に、演算結果の出力を指示するb=0判定部、
(5)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Bに格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Aに格納している値から引いた値を、変数格納領域Rに格納するr=a−qb中間演算部、
(6)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Y1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Y2に格納している値から引いた値を、変数格納領域Yに格納するy=y2 −qy1 中間演算部、
(7)変数格納領域Bに格納している値を変数格納領域Aに格納し、変数格納領域Rに格納している値を変数格納領域Bに格納し、変数格納領域Y1に格納している値を変数格納領域Y2に格納し、変数格納領域Yに格納している値を変数格納領域Y1に格納する変数シフト部、
(8)変数格納領域Bに格納している値が0以下の場合に、演算結果の出力を指示するb>0判定部、
(9)変数格納領域Aに格納されている値を整数dとし、変数格納領域Y2に格納されている値を整数ya として演算結果を出力する演算結果出力部。
【0015】
この発明に係る暗号復号演算装置は、ユークリッド互除アルゴリズムの演算装置を用いることを特徴とする。
【0016】
この発明に係る演算方法は、整数aを整数bで除した商を越えない最大の整数qを求め、更に上記整数qと整数zを積算し、積qzを求める演算に用いられる演算方法であって、以下の要素を有することを特徴とする。
(1)上記整数aを入力するステップ、
(2)上記整数bを入力するステップ、
(3)上記整数zを入力するステップ、
(4)入力した整数aを入力した整数bで除した商の部分商qi を順次求めるステップ、
(5)順次求めた部分商qi を順次同一領域に記憶するステップ、
(6)入力した整数zと、順次同一領域に記憶した部分商qi を、順次積算して部分積qi zを求める求めるステップ、
(7)順次積算して求めた部分積qi zから積qzを生成するステップ。
【0017】
【発明の実施の形態】
実施の形態1.
以下本発明を図面に示す実施例に基づいて説明する。
本実施の形態では、整数a0 、整数b0 を入力し、整数a0 と整数b0 との最大公約数である整数dと、a0a +b0a =dとなる整数xa と整数ya とを求めるユークリッド互除アルゴリズムの演算装置及び演算方法について説明する。
本演算装置は、変数格納領域Q1、A、B、R、X2、X1、X、Y2、Y1、Y、QI B、QI X1、QI Y1と、入力値格納部と、初期値格納部と、b=0判定部と、r=a−qb中間演算部と、x=x2 −qx1 中間演算部と、y=y2 −qy1 中間演算部と、変数シフト部と、b>0判定部と、演算結果出力部とからなる。
【0018】
変数格納領域は、演算に用いる変数を記憶する領域である。QI 、A、B、R、X2、X1、X、Y2、Y1、Y、QI B、QI X1、QI Y1は、それぞれ変数qi 、a、b、r、x2 、x1 、x、y2 、y1 、y、qi b、qi1 、qi1 を格納する領域である。この領域は、複数のブロックによって構成されるレジスタである。特に、qi は、従来技術と異なり、1ブロック分のレジスタで足りることが本発明の特徴である。図1に、レジスタの例を示す。例えば、1ブロックは、8bit、16bit、24bit、32bit、36bit、48bit、64bit、128bit、256bitなどで構成される。
入力値格納部と初期値格納部は、変数に、演算開始前に必要な入力値及び初期値を格納する。b=0判定部とb>0判定部は、演算の演算の終了を判断する。中間演算部は、中間の演算を行なう。r=a−qb中間演算部とx=x2 −qx1 中間演算部とy=y2 −qy1 中間演算部からなる。変数シフト部は、アルゴリズムに従って変数の入れ替えを行なう。中間演算部と変数シフト部の処理は、終了の条件を満たすまで繰り返し実行されるように構成されている。演算結果出力部は、演算結果を出力する。
【0019】
次に、動作について説明する。
図2は、実施の形態1に係るユークリッド互除アルゴリズムの演算方法の処理フロー図である。
【0020】
まず、入力値格納部は、変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する(図示せず。)。
【0021】
b=0判定部は、変数格納領域Bに格納している値bが0であるか否か判断し、b=0の場合は、出力処理へ移る。この場合はd←a0 が出力される(S101)。b≠0の場合は、ステップ102へ移る。
【0022】
初期値格納部は、格納する変数格納領域X1に0を格納し、変数格納領域X2に1を格納し、変数格納領域Y1に1を格納し、変数格納領域Y2に0を格納する(ステップ102)。
【0023】
b>0判定部は、変数格納領域Bに格納している値bが0より大きい場合にステップ104以下の処理を継続する。値bが0以下の場合は、出力処理へ移る(ステップ103)。
【0024】
中間演算部は、r=a−qbの演算と、x=x2 −qx1 の演算と、y=y2 −qy1 の演算とを行なう。求める演算の式と結果は、従来技術と同様であるが、演算の装置及び方法が、従来技術と異なる。整数aを整数bで除した商qの部分商qi を求める動作と、同時に積qbと、qx1 と、qy1 を求めるように動作することを特徴とする(ステップ104)。
【0025】
図3にx=x2 −qx1 の中間演算の処理フローを示す。
ステップ301では、整数aを整数bで除した商の部分商qi を求める。ステップ302では、求めた部分商qi をレジスタQI 105に格納する。部分商qi は、1ブロックで表わされる値である。ステップ303では、レジスタQI 105の値qi と、レジスタX1:102から読み取った変数x1 を積算する。ステップ304では、積qi1 をレジスタQX1:106の定められた位置に格納する。この位置は、除算及び積算の位取りに適する様に定められる。ステップ305では、更に部分商を求める必要があるか否か判断する。必要がある場合には、ステップ301からの処理を繰り返す。以上のループが終了した時点で、レジスタQX1:106には整数qx1 が生成されている。
S306では、レジスタX2:101に格納されている値x2 から、レジスタQX1:106に格納されている値qx1 を引いて、xの値を求める。求めたxは、レジスタX107に格納される。
【0026】
r=a−qbの中間演算とy=y2 −qy1 の中間演算も、x=x2 −qx1 の中間演算と同様のフローで行われる。このとき、値qは、共通に用いらる値であるので、ステップ301、ステップ302、ステップ305については共通にすることが可能であり、x1 の代りにbとy1 を対応させ、x2 の代りにaとy2 を対応させ、それぞれの変数に適したレジスタスを用い、テップ303、ステップ304、ステップ306相当のステップを設けることに、同時に中間演算を行なうことができる。
【0027】
変数シフト部は、a←b,b←r,x2 ←x1 ,x1 ←x,y2 ←y1 ,y1 ←yの為の処理を行なう。変数格納領域Bに格納している値bを変数格納領域Aに格納し、変数格納領域Rに格納している値rを変数格納領域Bに格納し、変数格納領域X1に格納している値x1 を変数格納領域X2に格納し、変数格納領域Xに格納している値xを変数格納領域X1に格納し、変数格納領域Y1に格納している値y1 を変数格納領域Y2に格納し、変数格納領域Yに格納している値yを変数格納領域Y1に、それぞれ格納する(ステップ105)。
【0028】
ステップ101でb=0判定部から、あるいはステップ103でb>0判定部から出力処理を指示された場合には、演算結果出力部は、演算結果の出力を行なう(ステップ106)。
d←a,x←x2 ,y←y2 として演算結果を出力するために、変数格納領域Aに格納されている値を整数dとし、変数格納領域X2に格納されている値を整数xa とし、変数格納領域Y2に格納されている値を整数ya として演算結果を出力する。
【0029】
以上のように、中間演算部では、変数格納領域のデータをもとに、q=f(a/b)をa,bの各々上位数ビットずつからqの上位数ビット(部分商)を求めて、その値を積算に用いる。従来の演算処理方式では、qを部分商から最終値までを求めてからa,b,qを入力としてr←a−q・bの計算を、x2 ,q,x1 を入力としてx←x2 −q・x1 の計算を、y2 ,q,y1 を入力としてy←y2 −q・y1 の計算を行っていたため、q全体を格納する領域が必要であった。しかし本発明では、qの部分商を求めると同時に、q・b,q・x1 ,q・y1 を部分的に演算するので、qの部分商を格納する領域のみで足り、中間演算に用いる変数格納領域を削減することができる。
【0030】
実施の形態2.
本実施の形態では、整数a0 、整数b0 を入力し、整数a0 と整数b0 との最大公約数である整数dと、a0a +b0a =dとなる整数xa を求めるユークリッド互除アルゴリズムの演算装置及び演算方法について説明する。実施の形態2は、実施の形態1の構成と動作を一部省略することによって実施可能である。
【0031】
つまり、実施の形態1をベースとし、変数ya に関連する構成及び動作を省くようにする。
本演算装置は、変数格納領域Q1、A、B、R、X2、X1、X、QI B、QI X1と、入力値格納部と、初期値格納部と、b=0判定部と、r=a−qb中間演算部と、x=x2 −qx1 中間演算部と、変数シフト部と、b>0判定部と、演算結果出力部とからなる。
【0032】
また、動作に関しては、初期値格納部の変数格納領域Y1、Y2への格納が省かれ、変数シフト部の変数格納領域Y1、Y2への格納が省かれ、演算結果出力部のya の出力が省かれる。
【0033】
実施の形態3.
本実施の形態では、整数a0 、整数b0 を入力し、整数a0 と整数b0 との最大公約数である整数dと、a0a +b0a =dとなる整数ya を求めるユークリッド互除アルゴリズムの演算装置及び演算方法について説明する。実施の形態3は、実施の形態1の構成と動作を一部省略することによって実施可能である。
【0034】
つまり、実施の形態1をベースとし、変数xa に関連する構成及び動作を省くようにする。
本演算装置は、変数格納領域Q1、A、B、R、Y2、Y1、Y、QI B、QI y1と、入力値格納部と、初期値格納部と、b=0判定部と、r=a−qb中間演算部と、y=y2 −qy1 中間演算部と、変数シフト部と、b>0判定部と、演算結果出力部とからなる。
【0035】
また、動作に関しては、初期値格納部の変数格納領域X1、X2への格納が省かれ、変数シフト部の変数格納領域X1、X2への格納が省かれ、演算結果出力部のxa の出力が省かれる。
【0036】
実施の形態4.
実施の形態1ないし3に係るユークリッド互除アルゴリズムの演算装置及び演算方法は、暗号復号の装置及び方法に用いることができる。
【0037】
暗号復号装置の記憶領域を削減することができる。特に、ICカード等の小型形態デバイスを用いる暗号復号装置の場合には、その効果は大きい。
【0038】
【発明の効果】
本発明においては、整数aを整数bで除した商を越えない最大の整数qを求め、更に上記整数qと整数zを積算し、積qzを求める演算に用いられる演算装置及び演算方法における内部変数となる商の格納領域に関し、従来、商全体のサイズを要するところを部分商のサイズにまで削減した。
【0039】
本発明においては、ユークリッド互除アルゴリズムの演算装置及び演算方法の中間演算に関し、上述の演算装置及び演算方法を用いため、中間演算に必要な記憶領域を大幅に削減できる。
【0040】
本発明においては、ユークリッド互除アルゴリズムの演算装置及び演算方法を暗号復号の装置及び方法に用いので、暗号復号装置の記憶領域を削減することができる。例えば、従来技術で例示した512bit程度の記憶領域が、本発明を実施することにより8bitまで削減される。モバイル端末等を用いたさまざまな用途で、機器の小型化及び情報の機密保持の要請が高まっており、本発明によって記憶領域を削減することは、このような要請に応え得る点で特に意義のある効果である。
【図面の簡単な説明】
【図1】 実施の形態1に係るxを求める計算に用いるレジスタの例を示す図である。
【図2】 実施の形態1に係る拡張ユークリッド互除アルゴリズムの演算方法の処理フロー図である。
【図3】 実施の形態1に係るx=x2 −qx1 の中間演算の処理フロー図である。
【図4】 従来技術の拡張ユークリッド互除アルゴリズムを実行する演算方法のフロー図である。
【図5】 従来技術のxを求める計算のフロー図である。
【図6】 従来技術のxを求める計算に用いるレジスタを示す図である。
【図7】 従来技術のステップ501とステップ502の処理フローの詳細図である。
【符号の説明】
101〜107 変数格納領域、601〜607 変数格納領域。

Claims (7)

  1. 整数aを整数bで除した商を越えない最大の整数qを求め、更に上記整数qと整数zを積算し、積qzを求める演算に用いられる演算装置であって、以下の要素を有する演算装置
    (1)複数のブロックからなるQZ格納領域、
    (2)上記整数aと上記整数bを入力し、入力した整数aを入力した整数bで除して得られる商の各位の値を部分商qi として上位の位から順次求める部分商qi 演算部、
    (3)部分商qi 演算部で順次求めた部分商qi を、順次更新して格納する部分商QI 格納領域、
    (4)上記整数zを入力し、上記部分商QI 格納領域に順次格納した部分商qi と、入力した整数zとを順次積算し部分積qizを求める部分積qi z積算部、
    (5)部分積qiz積算部で順次積算し求めた上記部分積qi zを、上記部分積q i zの位取りに応じた上記QZ格納領域のブロックに順次格納し、上記QZ格納領域に上記積qzを生成するqz生成部。
  2. 部分商QI 格納領域のサイズがワードサイズであることを特徴とする請求項1記載の演算装置。
  3. 整数a0 、整数b0 を入力し、整数a0 と整数b0との最大公約数である整数dと、a0a +b0a =dとなる整数xaと整数ya とを求めるユークリッド互除アルゴリズムの演算装置であって、以下の要素を備えることを特徴とするユークリッド互除アルゴリズムの演算装置
    (1)9個の変数格納領域A,B,R,X2,X1,X,Y2,Y1,Y、
    (2)変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する入力値格納部、
    (3)変数格納領域X1に0を格納し、変数格納領域X2に1を格納し、変数格納領域Y1に1を格納し、変数格納領域Y2に0を格納する初期値格納部、
    (4)変数格納領域Bに格納している値が0である場合に、演算結果の出力を指示するb=0判定部、
    (5)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Bに格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Aに格納している値から引いた値を、変数格納領域Rに格納するr=a−qb中間演算部、
    (6)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域X1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域X2に格納している値から引いた値を、変数格納領域Xに格納するx=x2−qx1 中間演算部、
    (7)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Y1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Y2に格納している値から引いた値を、変数格納領域Yに格納するy=y2−qy1 中間演算部、
    (8)変数格納領域Bに格納している値を変数格納領域Aに格納し、変数格納領域Rに格納している値を変数格納領域Bに格納し、変数格納領域X1に格納している値を変数格納領域X2に格納し、変数格納領域Xに格納している値を変数格納領域X1に格納し、変数格納領域Y1に格納している値を変数格納領域Y2に格納し、変数格納領域Yに格納している値を変数格納領域Y1に格納する変数シフト部、
    (9)変数格納領域Bに格納している値が0以下の場合に、演算結果の出力を指示するb>0判定部、
    (10)変数格納領域Aに格納されている値を整数dとし、変数格納領域X2に格納されている値を整数xa とし、変数格納領域Y2に格納されている値を整数yaとして演算結果を出力する演算結果出力部。
  4. 整数a0 、整数b0 を入力し、整数a0 と整数b0との最大公約数である整数dと、a0a +b0a =dとなる整数xaとを求めるユークリッド互除アルゴリズムの演算装置であって、以下の要素を備えることを特徴とするユークリッド互除アルゴリズムの演算装置
    (1)6個の変数格納領域A,B,R,X2,X1,X、
    (2)変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する入力値格納部、
    (3)変数格納領域X1に0を格納し、変数格納領域X2に1を格納する初期値格納部、
    (4)変数格納領域Bに格納している値が0である場合に、演算結果の出力を指示するb=0判定部、
    (5)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Bに格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Aに格納している値から引いた値を、変数格納領域Rに格納するr=a−qb中間演算部、
    (6)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域X1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域X2に格納している値から引いた値を、変数格納領域Xに格納するx=x2−qx1 中間演算部、
    (7)変数格納領域Bに格納している値を変数格納領域Aに格納し、変数格納領域Rに格納している値を変数格納領域Bに格納し、変数格納領域X1に格納している値を変数格納領域X2に格納し、変数格納領域Xに格納している値を変数格納領域X1に格納する変数シフト部、
    (8)変数格納領域Bに格納している値が0以下の場合に、演算結果の出力を指示するb>0判定部、
    (9)変数格納領域Aに格納されている値を整数dとし、変数格納領域X2に格納されている値を整数xa として演算結果を出力する演算結果出力部。
  5. 整数a0 、整数b0 を入力し、整数a0 と整数b0との最大公約数である整数dと、a0a +b0a =dとなる整数yaとを求めるユークリッド互除アルゴリズムの演算装置であって、以下の要素を有するユークリッド互除アルゴリズムの演算装置
    (1)6個の変数格納領域A,B,R,Y2,Y1,Y、
    (2)変数格納領域Aに整数a0 を格納し、変数格納領域Bに整数b0 を格納する入力値格納部、
    (3)変数格納領域Y1に1を格納し、変数格納領域Y2に0を格納する初期値格納部、
    (4)変数格納領域Bに格納している値が0である場合に、演算結果の出力を指示するb=0判定部、
    (5)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Bに格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Aに格納している値から引いた値を、変数格納領域Rに格納するr=a−qb中間演算部、
    (6)変数格納領域Aに格納している値を整数aとし、変数格納領域Bに格納している値を整数bとし、変数格納領域Y1に格納している値を整数zとして請求項1記載の演算装置を用いて求めた値を、変数格納領域Y2に格納している値から引いた値を、変数格納領域Yに格納するy=y2−qy1 中間演算部、
    (7)変数格納領域Bに格納している値を変数格納領域Aに格納し、変数格納領域Rに格納している値を変数格納領域Bに格納し、変数格納領域Y1に格納している値を変数格納領域Y2に格納し、変数格納領域Yに格納している値を変数格納領域Y1に格納する変数シフト部、
    (8)変数格納領域Bに格納している値が0以下の場合に、演算結果の出力を指示するb>0判定部、
    (9)変数格納領域Aに格納されている値を整数dとし、変数格納領域Y2に格納されている値を整数ya として演算結果を出力する演算結果出力部。
  6. 請求項3、4、又は5記載のユークリッド互除アルゴリズムの演算装置を用いることを特徴とする暗号復号演算装置。
  7. 整数aを整数bで除した商を越えない最大の整数qを求め、更に上記整数qと整数zを積算し、積qzを求める演算に用いられる演算方法であって、以下の要素を有する演算方法
    (1)入力値格納部が、上記整数aを変数格納領域に格納するステップ、
    (2)入力値格納部が、上記整数bを変数格納領域に格納するステップ
    (3)部分商q i 演算部が、上記格納した整数aと整数bとを入力し整数aを整数bで除して得られる商の各位の値を部分商qi として上位の位から順次求めるステップ、
    (4)部分商q i 演算部が、上記順次求めた部分商qi順次更新して部分商Q I 格納領域に格納するステップ、
    (5)部分積q i z積算部が、上記整数zを取得し、上記部分商Q I 格納領域に順次格納された部分商qi と、入力した整数zとを順次積算して部分積qi zを求めるステップ、
    (6)qz生成部が、上記順次積算して求められ部分積qiを、複数のブロックからなるQZ格納領域のうち上記部分積q i zの位取りに応じたブロックに順次格納し、上記QZ格納領域に上記積qzを生成するステップ。
JP18108199A 1999-06-28 1999-06-28 演算装置及び演算方法 Expired - Lifetime JP3992883B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18108199A JP3992883B2 (ja) 1999-06-28 1999-06-28 演算装置及び演算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18108199A JP3992883B2 (ja) 1999-06-28 1999-06-28 演算装置及び演算方法

Publications (2)

Publication Number Publication Date
JP2001013871A JP2001013871A (ja) 2001-01-19
JP3992883B2 true JP3992883B2 (ja) 2007-10-17

Family

ID=16094489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18108199A Expired - Lifetime JP3992883B2 (ja) 1999-06-28 1999-06-28 演算装置及び演算方法

Country Status (1)

Country Link
JP (1) JP3992883B2 (ja)

Also Published As

Publication number Publication date
JP2001013871A (ja) 2001-01-19

Similar Documents

Publication Publication Date Title
US5742530A (en) Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
US7831651B2 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
US7904498B2 (en) Modular multiplication processing apparatus
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
US7486789B2 (en) Device and method for calculation on elliptic curve
EP0984357B1 (en) Apparatus and method for elliptic-curve multiplication and recording medium having recorded thereon a program for implementing the method
US6567832B1 (en) Device, method, and storage medium for exponentiation and elliptic curve exponentiation
US20020126838A1 (en) Modular exponentiation calculation apparatus and modular exponentiation calculation method
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
US7480691B2 (en) Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
US7050579B1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
US6609141B1 (en) Method of performing modular inversion
US10057064B2 (en) Computational method, computational device and computer software product for montgomery domain
KR100416291B1 (ko) 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
JP3992883B2 (ja) 演算装置及び演算方法
EP3226120B1 (en) Non-modular multiplier, method for non-modular multiplication and computational device
JP4543143B2 (ja) 楕円曲線暗号装置、楕円曲線暗号演算方法
Bos et al. Efficient Modular Multiplication
Knezevic et al. Modular reduction without precomputational phase
JP3390966B2 (ja) 平方数を法とした剰余演算装置及びそのプログラム記録媒体
JP3136709B2 (ja) べき積演算装置
JP2007520728A (ja) 改良された逆計算
US20040081317A1 (en) Encryption circuit achieving higher operation speed
JP2000155526A (ja) 楕円積和演算計算方法、楕円積和演算計算装置及び楕円積和演算計算プログラムを記録した記録媒体
JPS61281334A (ja) 素数判定器

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040514

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041015

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070627

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070725

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3992883

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100803

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110803

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110803

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120803

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120803

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130803

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term